前往小程序,Get更优阅读体验!
立即前往
首页
学习
活动
专区
工具
TVP
发布
社区首页 >专栏 >PL/SQL学习笔记-变量作用域及数据类型深入

PL/SQL学习笔记-变量作用域及数据类型深入

作者头像
liulun
发布2022-05-09 11:03:32
1850
发布2022-05-09 11:03:32
举报
文章被收录于专栏:liulun

一:变量作用域

代码语言:javascript
复制
DECLARE
current_block VARCHAR2(10) := 'Outer';
outer_block VARCHAR2(10) := 'Outer';
BEGIN
dbms_output.put_line('[current_block]['||current_block||']');
  DECLARE
  current_block VARCHAR2(10) := 'Inner';
  BEGIN
  dbms_output.put_line('[current_block]['||current_block||']');
  dbms_output.put_line('[outer_block]['||outer_block||']');
  END;
dbms_output.put_line('[current_block]['||current_block||']');
END;

以上为引用一本书的代码(Oracle Database 11g PL/SQL程序设计) 输出为

代码语言:javascript
复制
[current_block][Outer]
[current_block][Inner]
[outer_block][Outer]
[current_block][Outer]

这是两个嵌套的程序块 我们在子程序块中重定义了父程序块的变量 这个变量在子程序块执行完之后又恢复了父程序块中定义的值 二:%type    取一个已知变量的数据类型

代码语言:javascript
复制
declare mytitle labor.xland.title%type;
begin
select title into mytitle from labor.xland where state = 0;
dbms_output.put_line(mytitle);
end;

上面例子中取了表title列的数据类型(varchar2) 然后检索了一行一列数据,把这个数据赋值给我们定义的变量mytitle 当然你也可以定义多个变量 如: select title,id into mytitle,myid from labor.xland where state = 0; 三:%rowtype   取一个已知行的数据类型,这应该是一个对象类型

代码语言:javascript
复制
declare 
  myrow labor.xland%rowtype;
begin
select * into myrow from labor.xland where state = 0;
dbms_output.put_line(myrow.title);
dbms_output.put_line(to_char(myrow.state));
end;

上例中我们取了某个表的rowtype,并定义了变量myrow 接着把这个表的一行数据赋值给了这个变量 输出的时候只要以点来获取这一行的某个列即可 四:record   这应该也是一个对象

代码语言:javascript
复制
declare
  type myrecordtype is record
  (
       mytitle labor.xland.title%type,
       mystate labor.xland.state%type
  );
  myrecord myrecordtype;
begin
select title, state into myrecord from labor.xland;
dbms_output.put_line(myrecord.mytitle);
dbms_output.put_line(to_char(myrecord.mystate));
end;

如上代码 我们先定义了一种数据类型(type) 这种类型包含两个属性,分别是mytitle和mystate 然后我们定义了一个变量myrecord 这个变量的类型就是我们刚才定义的数据类型 接着我们把两个数据赋值给类这个变量的两个属性 这里的赋值顺序是按属性定义的先后顺序给属性赋值的 然后输出 至此,数据类型仍未讲完 还有table(表),array(数组),exception(异常),cursor(游标)等类型等没讲 异常和游标将在后面的文章提到

本文参与 腾讯云自媒体同步曝光计划,分享自作者个人站点/博客。
原始发表:2009-07-25,如有侵权请联系 cloudcommunity@tencent.com 删除

本文分享自 作者个人站点/博客 前往查看

如有侵权,请联系 cloudcommunity@tencent.com 删除。

本文参与 腾讯云自媒体同步曝光计划  ,欢迎热爱写作的你一起参与!

评论
登录后参与评论
0 条评论
热度
最新
推荐阅读
领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档