初学PL/SQL的一些基本知识
1,一个完整的PL/SQL 语句由三个部分组成。
declare
声明部分,定义变量,数据类型,异常,局部子程序等。
begin
执行部分,实现块的功能。
Exception
异常处理部分,处理程序执行过程中产生的异常。
end;
执行部分是必需的,而声明部分和异常部分是可选的。
可以在一个块的执行部分或异常处理部分嵌套其它的PL/SQL块
所有的PL/SQL 块都是以"end;"结束的。
2,定义一个包含声明部分,执行部分和异常处理部分的PL/SQL块
declare
v_bookName varchar2(50);
begin
select bookname into v_bookName from Book where BookId=1;
DBMS_output.put_line(v_bookName);
Exception
when no_Data_Found then
DBMS_output.put_line('there is not such a bookname');
end;
注意:若要在SQL*PLus环境中看到DBMS_OutPut.Put_Line方法的输出结果,必需将环境变量Serveroutput设置为on
SQL>set serveroutput on
3, %TYPE与%ROWTYPE
如果要定义一个类型与某个变量的数据类型或数据表中某个列的数据类型一致(不知道该变量或列的数据类型)的变量,
可以利用%Type实现。
如果要定义一个与数据库中某个表结构一致的记录类型的变量,可以利用%rowtype实现。
例如:
declare
v_book book.bookname%Type;
&
相关文档:
说明:创建一个影碟租赁管理系统,这里主要抽象了四张表:
tb_user(用户信息),tb_movie_type(影片类型),tb_movie(影片信息),tb_retal(租赁记录)
use master--系统表,所有创建的数据库均在此被记录
go
--检测是否已经存在RetaDB这个数据库,有的话,不能重名,可以进行删除
if exists (select * from sysdatabas ......
use RetalDB--表示在数据库RetalDB中进行的操作
go
if exists (select * from sysobjects where name='tb_user')
drop table tb_user
go
--创建客户表tb_user
create table tb_user
(
user_id int primary key,--指定为主键时,此列默认为非空,指定过多个限制条件时不用“'”隔开
us ......
这里使用的数据库和数据表分别来自Sql语句学习笔记(1)——创建数据库和Sql语句学习笔记(2)——创建数据表
use RetalDB
go
--插入数据到表tb_movie_type
insert tb_movie_type values(0,'普通片','Regular')
insert tb_movie_type values(1,'新片','NewRelease')
insert tb_movie_type values ......
新建表:
create table [表名]
(
[自动编号字段] int IDENTITY (1,1) PRIMARY KEY ,
[字段1] nVarChar(50) default '默认值' null ,
[字段2] ntext null ,
[字段3] datetime,
[字段4] money null ,
[字段5] int default 0,
[字段6] Decimal (12,4) default 0,
[字段7] image null ,
)
删除表:
Drop table [表 ......
今天写一个商品的修改功能时遇到的问题
商品中重量 weight 的数据库(SQL Server2005)类型定义为 float
在mappings 中转换为c#类型的一句为
<result property="Goods_Weight" column="Goods_Weight" type="float" dbType="float"/>
按理说这个 float 是一样的,转换完全不会出现问题,
实际程序运行时,系统报错
......