--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 <2;
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 <2;
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;
declare
vid t.object_id%type;
vowner t.owner%type;
begin
select object_id ,owner into vid,vowner from t where rownum <2;
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 <2;
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;
来自 “ ITPUB博客 ” ,链接:http://blog.itpub.net/22664653/viewspace-687917/,如需转载,请注明出处,否则将追究法律责任。
转载于:http://blog.itpub.net/22664653/viewspace-687917/