手机访问 | 设为首页 | 加入收藏 | 网站地图

当前位置:电脑中国 > 数据库 > MSSQL >

Pl/SQL+程序块结构+标量变量+into+%type+%rowtype+复合类型的变

2017-04-26 16:30|来源:未知 |作者:dnzg |点击:

程序块结构
declare:定义变量,常量,游标
exception:引领程序块异常处理部分
begin/end:标准程序块可执行部分

案例
set serveroutput on 设置在控制台输出
这里写图片描述

<img alt="这里写图片描述" data-cke-saved-src="http://www.2cto.com/uploadfile/Collfiles/20170426/2017042609110655.png" src="http://www.2cto.com/uploadfile/Collfiles/20170426/2017042609110655.png" title="" http:="" zz.2cto.com="" seo="" "="" target="_blank">seo8L3N0cm9uZz48YnIgLz4NCrHkwb+2qNLluea3tqO6PGJyIC8+DQoxLrHkwb/D+9LU19bEuL+qzbc8YnIgLz4NCjIub3JhY2xlserKtrf7srvH+LfWtPPQodC0PGJyIC8+DQozLrHkwb/D+7Oktsiyu8Tcs6y5/TMwuPbX1rf7PGJyIC8+DQo0LrHqyra3+7K7xNy6rLz1usUmcmRxdW87LSZsZHF1bzu6zb/VuPE8YnIgLz4NCjUusrvE3MrHc3Fsudi8/NfWPC9wPg0KPHA+s6PBv7ao0uWjujxiciAvPg0KyfnD97Ojwb/Q6NKqudi8/NfWY29uc3RhbnQ8YnIgLz4NCrao0uWzo8G/sdjQ67iz1rWjuzxiciAvPg0KyOejujxiciAvPg0KUEkgY29uc3RhbnQgbnVtYmVyKDkpIDo9My4xNDwvcD4NCjxwPrTtzvO1xNC0t6g8YnIgLz4NCjxpbWcgYWx0PQ=="这里写图片描述" src="/uploadfile/Collfiles/20170426/2017042609110656.png" title="\" />
正确的写法
这里写图片描述

注意:
:=是赋值操作符
关键字default 可以替换:=

标量变量:存储单独一个值
数据类型:字符,数字,日期,布尔等
数字类型:number,pls_integer,binary_integer
pls_integer,binary_integer,boolean 类型 不能再创建表的时候使用
pls_integer:有符号整数,范围-2^31-2^31

into:将查询的结果保存在变量中

这里写图片描述
解释:
select count(*) into out from student;
将查询的结果 赋值给变量out

%type
用户事先不知道检索列的数据类型,可以使用%type定义变量

这里写图片描述
sno student.sno%type ;
解释:定义变量sno 类型与表student.sno相同

%rowtype:一次存储一行数据

这里写图片描述

这里写图片描述
结合上面2个图,可以将%rowtype定义的变量s看做是java中的一个对象,保存类student的数据,第二图错误的原因就是2个对象数据存入一个对象中,所以爆值过多。

复合类型的变量存储多个值,类似于数组
记录类型:
存储多个标量值,结构与行相似。类似于%rowtype,可以将它看做是定义一个java类
语法
type 记录变量名 is record(
fileName1 dateType [not null] [:=值],
fileName2 dateType [not null] [:=值],
fileName3 dateType [not null] [:=值],
….
);
这里写图片描述

记录表类型:类似一个数组
允许用户在代码中使用表,方便存储多行数据
语法
type tableName is table of dateType[not null] index by binary_integer;
tableName:记录表类型名
table :记录表类型关键字
dateType:记入表存储数据的类型
binary_integer:计入表类型的长度

举例:
这里写图片描述

记录表类型存储方式
类似于数组
这里写图片描述

记录表类型的几种方法:
count:返回记录表的纪录的数量
delete:删除记录表的纪录
first:返回记录表最小索引值
last:返回记录表最大索引值
next:返回记录表下一个索引值,使用该方法前,需要传递一个索引值

这里写图片描述

(责任编辑:dnzg)