declare cursor mycur(para type,……) is select …… 没有逗号
declare cursor mycur is select dname from dept where deptno=dno; dno number; name varchar2(15); begin dno:=10; open mycur; loop fetch mycur into name; exit when mycur%notfound;end loop; close mycur; end;
declare cursor mycur(dno number) is select dname from dept where deptno=dno; name varchar2(15); begin ............ end;
这是一个带参数的游标啊,你没有给他提供参数,当然错误了,像yxxx(小孬) ( ) 那样或者baojianjun(包子) ( ) 那样都可以传递参数过去。 如:cursor mycur(dno deptno%type) is select dname from dept where deptno=dno; name varchar2(15); begin open mycur; fetch mycur into name; end; 这样就可以了。
对了,忘记关闭游标了。 fetch mycur into name; close mycur; end;
再改: ---------- begin open mycur(20); -- 这里要传参数啊 fetch mycur into name; close mycur; end;
SQL*PLUS>DECLARE 2 cursor mycur(dno VARCHAR2) is select NAME from test where NAME=dno; 3 v_name varchar2(15); 4 begin 5 open mycur(10); 6 fetch mycur into v_name; 7 end; 8 /PL/SQL 过程已成功完成。已用时间: 00: 00: 00.00 SQL*PLUS>
is
select ……
没有逗号
cursor mycur is
select dname from dept
where deptno=dno;
dno number;
name varchar2(15);
begin
dno:=10;
open mycur;
loop
fetch mycur into name;
exit when mycur%notfound;end loop;
close mycur;
end;
cursor mycur(dno number) is
select dname from dept
where deptno=dno;
name varchar2(15);
begin
............
end;
如:cursor mycur(dno deptno%type) is select dname from dept where deptno=dno;
name varchar2(15);
begin
open mycur;
fetch mycur into name;
end;
这样就可以了。
fetch mycur into name;
close mycur;
end;
----------
begin
open mycur(20); -- 这里要传参数啊
fetch mycur into name;
close mycur;
end;
2 cursor mycur(dno VARCHAR2) is select NAME from test where NAME=dno;
3 v_name varchar2(15);
4 begin
5 open mycur(10);
6 fetch mycur into v_name;
7 end;
8 /PL/SQL 过程已成功完成。已用时间: 00: 00: 00.00
SQL*PLUS>