- 1、原创力文档(book118)网站文档一经付费(服务费),不意味着购买了该文档的版权,仅供个人/单位学习、研究之用,不得用于商业用途,未经授权,严禁复制、发行、汇编、翻译或者网络传播等,侵权必究。。
- 2、本站所有内容均由合作方或网友上传,本站不对文档的完整性、权威性及其观点立场正确性做任何保证或承诺!文档内容仅供研究参考,付费前请自行鉴别。如您付费,意味着您自己接受本站规则且自行承担风险,本站不退款、不进行额外附加服务;查看《如何避免下载的几个坑》。如果您已付费下载过本站文档,您可以点击 这里二次下载。
- 3、如文档侵犯商业秘密、侵犯著作权、侵犯人身权等,请点击“版权申诉”(推荐),也可以打举报电话:400-050-0827(电话支持时间:9:00-18:30)。
- 4、该文档为VIP文档,如果想要下载,成为VIP会员后,下载免费。
- 5、成为VIP后,下载本文档将扣除1次下载权益。下载后,不支持退款、换文档。如有疑问请联系我们。
- 6、成为VIP后,您将拥有八大权益,权益包括:VIP文档下载权益、阅读免打扰、文档格式转换、高级专利检索、专属身份标志、高级客服、多端互通、版权登记。
- 7、VIP文档为合作方或网友上传,每下载1次, 网站将根据用户上传文档的质量评分、类型等,对文档贡献者给予高额补贴、流量扶持。如果你也想贡献VIP文档。上传文档
查看更多
游标的使用以及ROWTYPE等
游标的使用以及ROWTYPE等
显式游标:
显式游标的几个属性:
%found:测试fetch语句是否有值(数据),有值就返回true,否则为false;
%notfound:判断游标是否没有数据或有效,没有就true,有等于false.
%rowcount:返回游标的数据行数|返回当前位置为止游标读取的记录行数;
%isopen:是测试游标是否打开。如果没有打开游标就使用fetch语句就提示错误;
游标与存储过程和函数相似,可以将对参数传递给游标并在查询中使用,
cursor cursor_name(parameter_name in date_type...) is
select_statement
定义的参数语法如下:
parameter_name[in]data_type[(:|default)value]
注意。与存储过程不同的时,游标只能接受传递的值,而不能返回值。
参数是定义数据类型,没有大小。
使用for进行游标循环时,可以不显式地打开和关闭游标----for循环会自动执行这些操作。
while进行游标循环时,要注意给fetch的放置;
在使用for循环时,它的变量相当于一个记录型变量,里面存储着此游标所存放的变量!
变量:
1)使用%type
在pl/sql中可以将变量和常量声明为内建或用户定义的数据类型,以引用一个列名,同时继承他的数据类型和大小(用于获取列的类型,如果在声明变量的时候使用%type,变量会自动将变量类型设置为列的类型)
如: 有表prdtest
declare
v_moth prdtest.month%type; ----保存prdtype表中moth列
v_prd_type prdtest.prd_type%type;-----保存prdtype表中prd_type列
v_sal prdtest.sal%type; ----保存prdtype表中sal列
v_salers prdtest.salers%type; ----保存prdtype表中salers列
或
v_velin number(5):=10;
v_hweilei v_velin%type:=15;
v_weile v_velin%type;
1. 使用%TYPE
在许多情况下,PL/SQL变量可以用来存储在数据库表中的数据。在这种情况下,变量应该拥有与表列相同的类型。例如,students表的first_name列的类型为VARCHAR2(20),我们可以按照下述方式声明一个变量:
DECLARE
v_FirstName VARCHAR2(20);
但是如果first_name列的定义改变了会发生什么(比如说表改变了,first_name现在的类型变为VARCHAR2(25))?那就会导致所有使用这个列的PL/SQL代码都必须进行修改。如果你有很多的PL/SQL代码,这种处理可能是十分耗时和容易出错的。
这时,你可以使用”%TYPE”属性而不是将变量类型硬性编码。
例如:
DECLARE
v_FirstName students.first_name%TYPE;
通过使用%TYPE,v_FirstName变量将同students表的first_name列的类型相同(可以理解为将两者邦定起来)。
每次匿名块或命名块运行该语句块以及编译存储对象(过程、函数、包、对象类和触发器)时,就会确定该类型。
使用%TYPE是非常好的编程风格,因为它使得PL/SQL更加灵活,更加适应于对数据库定义的更新。
2. 使用%ROWTYPE
2.1 PL/SQL记录
PL/SQL记录类型类似于C语言中的结构,是一种复合类型,是用户自定义的。
记录提供了一种处理独立的但又作为一个整体单元相关的变量的机制。请看:
DECLARE
v_StudentID NUMBER(5);
v_FirstName VARCHAR2(20);
v_LastName VARCHAR2(20);
这3个变量在逻辑上是相互关联的,因为他们指向students表中不同的字段。如果为这些变量声明一个记录类型,那么他们之间的关系就十分明显,可作为一个单元进行处理。
DECLARE
/*Define a record type to hold common student informationi*/
TYPE t_StudentRecord IS RECORD(
原创力文档


文档评论(0)