17,377
社区成员
发帖
与我相关
我的任务
分享
create table dept
(deptno number,
dname varchar2(20),
loc varchar2(20)
);
create or replace procedure dept_procedure(a in varchar2,v_a out dept%rowtype)
is
--声明游标
cursor c_de(a in varchar2)
is select * from dept where dname=a;
begin
--打开游标,对其中找到的记录进行遍历
open c_de(a);
loop
fetch c_de into v_a;
exit when c_de%notfound;
end loop;
close c_de;
dbms_output.put_line('deptno:'||v_a.deptno);
dbms_output.put_line('dname:'||v_a.dname);
dbms_output.put_line('loc:'||v_a.loc);
end;
SQL> edi
已写入 file afiedt.buf
1 create or replace procedure dept_procedure(a in varchar2,v_a out dept%rowtype)
2 is
3 cursor c_de(a in varchar2) is select * from dept where dname=a;
4 begin
5 open c_de(a);
6 loop
7 fetch c_de into v_a;
8 exit when c_de%notfound;
9 dbms_output.put_line('deptno:'||v_a.deptno);
10 dbms_output.put_line('dname:'||v_a.dname);
11 dbms_output.put_line('loc:'||v_a.loc);
12 end loop;
13 close c_de;
14* end;
SQL> /
过程已创建。
SQL> declare
2 c dept%rowtype;
3 v varchar2(10):='kk';
4 begin
5 dept_procedure(v,c);
6 dbms_output.put_line('deptno:'||c.deptno);
7 dbms_output.put_line('dname:'||c.dname);
8 dbms_output.put_line('loc:'||c.loc);
9 end;
10 /
deptno:10
dname:kk
loc:NEW YORK
deptno:10
dname:kk
loc:NEW YORK
PL/SQL 过程已成功完成。
ORA-06550: 第 2 行, 第 31 列:
PLS-00363: 表达式 ' NULL' 不能用作赋值目标
ORA-06550: 第 2 行, 第 7 列:
PL/SQL: Statement ignored
declare
v_row dept%rowtype;
begin
dept_procedure(a, v_row);
end;