zl程序教程

您现在的位置是:首页 >  数据库

当前栏目

【PL/SQL 学习】隐式游标学习

SQL学习 游标 PL 隐式
2023-09-14 08:57:16 时间
--oracle 会为每一个非显示游标的sql dml 语句都创建一个隐式游标,隐式游标也称为sql 游标。与显示游标不同,不能对一个隐式游标执行open,close和fetch语句。oracle 隐式的打开sql游标,处理sql游标,然后再关闭该游标。
declare
  vid t.object_id%type;
  vowner t.owner%type;
 begin
   select object_id ,owner into vid,vowner from t where rownum
   if sql%isopen then
     dbms_output.put_line(it is not possiable);
     else
       dbms_output.put_line(vid is  ||vid||  vowner is ||vowner);
       dbms_output.put_line(%isopen 的属性为false);
   end if;
 end;
输出为:
vid is  1  vowner is SYS
%isopen 的属性为false
--和显示游标一样,隐式游标也有四大属性%FOUND,%ISOPEN,%NOTFOUND,%ROWCOUNT.由于隐式游标没有名次,oracle提供了一种方法在属性前面加 关键字 SQL,这样我们就可以使用这些属性了。
例子如下:
declare
  vid t.object_id%type;
  vowner t.owner%type;
  rowsnum integer;
 begin
   select object_id ,owner into vid,vowner from t where rownum
   rowsnum := sql%rowcount;
     dbms_output.put_line(vid is  ||vid||  vowner is ||vowner);
     dbms_output.put_line(rowsnum is ||rowsnum);
     if sql%found then
        dbms_output.put_line(sql%found is true;);
     else
        dbms_output.put_line(sql%found is false;);
     end if;
     if sql%notfound then
         dbms_output.put_line(sql%notfound is true;);
     else
         dbms_output.put_line(sql%notfound is false;);
     end if;
end;  
输出为:
vid is  1  vowner is SYS
rowsnum is 1
sql%found is true;
sql%notfound is false;
数据库小技能:PL/SQL中书写定义sql 触发器由数据库管理系统负责调用和执行,通过触发触发器所监听的事物来实现触发器的调用。 表级别的触发器(对于整个数据库表做监听) 行级别的触发器(对于表中的每一行做监听)
数据库小技能:PL/SQL(Procedure Language/SQL,过程化SQL语言)预备知识 过程化SQL语言(Procedural Language/SQL)是Oracle数据库对SQL语句的扩展:在普通SQL语句的使用上增加了编程语言的特点,把数据操作和查询语句组织在PL/SQL代码的过程性单元中,通过逻辑判断、循环等操作实现复杂的功能或者计算的程序语言。