insert into t1 values ( 90 , 'SERVICE' , ' BEIJING ' )
Returning rowid , name into row_id,info;
SQL> variable x number ;
SQL> exec :x := 8600 ;
SQL> select * from ldcom where comcode= :x ;
variable x number ;
declare
v_date date ;
begin
for i in 1 .. 10 loop
:x := i;
select sysdate +:x into v_date from dual;
dbms_output.put_line(v_date);
end loop ;
end ;
/
declare
v_x t1.num% type ;
begin
execute immediate 'update t1 set num=8888 where id=:a returning num into :b'
using 2 returning into v_x;
dbms_output.put_line(v_x);
end ;
注意returning的返回值在动态SQL中的操作格式
for i in reverse 10 .. 100 loop
cursor c2(dept_no number default 10 ) is----注意定义dept_no的方法
select name ,agentcode from laagent where rownum <= dept_no;
open c3(dept_no => 20 ); ---- 可以重新定义 dept_no
fetch c2 into dept_name,dept_loc; ---- 字符类型、个数相等
fetch c3 into deptrec; ----deptrec 为 rowtype
exit when c3% notfound ;
CLOSE c3;
⑤游标属性
% FOUND -- 布尔型属性,当最近一次读记录时成功返回 , 则值为 TRUE ;
% NOTFOUND -- 布尔型属性,与 %FOUND 相反;
% ISOPEN -- 布尔型属性,当游标已打开时返回 TRUE ;
% ROWCOUNT -- 数字型属性,返回已从游标中读取的记录数。
FOR c1_rec IN c1 LOOP
FOR c1_rec IN ( SELECT dname, loc FROM dept) LOOP
SQL% FOUND -- 布尔型属性,当最近一次读记录时成功返回 , 则值为 TRUE ;
SQL% NOTFOUND -- 布尔型属性,与 %FOUND 相反;
SQL% ISOPEN -- 布尔型属性,当游标已打开时返回 TRUE ;
SQL% ROWCOUNT -- 数字型属性,返回已从游标中读取的记录数。
IF SQL % NOTFOUND THEN ...
CURSOR emp_cursor is select empno,sal
from emp where deptno=v_deptno for update of sal nowait ;
for emp_record in emp_cursor loop
if emp_record.sal < 1500 then
update emp set sal= 1500 where current of emp_cursor;
end if ;
end loop ;
但需注意:只能针对for update的表进行修改。