你全写错了,这个是无法执行的。 varchar2---错误 aaa---错误给你一个例子:DECLARE @v_ename VARCHAR(10);BEGIN SET NOCOUNT ON; ........
return 0;---返回值END
create or replace procedure ssdfaas (v_sal in number,v_ename out varchar2) is begin --查询工资超过v_sal的姓名 select ename into v_ename from emp where sal>v_sal; exception when no_data_found then raise_application_error(-20000,'not found'); end;--调用该存储过程 declare ename emp; begin --这里会提示查出来的结果过多! ssdfaas(800,ename.); end;
调用里写错了 declare ename emp.ename%rowtype; begin --这里会提示查出来的结果过多! ssdfaas(800,ename.); end;
SQL> edi 已写入 file afiedt.buf 1 create or replace procedure p1(sal number,tname out varchar2) 2 as 3 cursor sname is select empname from emp where salary>sal; 4 begin 5 for sname_rec in sname loop 6 tname:=sname_rec.empname; 7 dbms_output.put_line(tname); 8 end loop; 9 exception 10 when no_data_found then 11 raise_application_error(-20000,'no found'); 12* end; SQL> /过程已创建。SQL> declare 2 n number:=1500; 3 name varchar2(1000); 4 begin 5 p1(n,name); 6 end; 7 / wkc168 wkc ycm ycm2PL/SQL 过程已成功完成。
返回多行了吧。
不知道你的aaa的内容。
varchar2---错误
aaa---错误给你一个例子:DECLARE @v_ename VARCHAR(10);BEGIN
SET NOCOUNT ON;
........
return 0;---返回值END
(v_sal in number,v_ename out varchar2)
is
begin
--查询工资超过v_sal的姓名
select ename into v_ename from emp where sal>v_sal;
exception
when no_data_found then
raise_application_error(-20000,'not found');
end;--调用该存储过程
declare
ename emp;
begin
--这里会提示查出来的结果过多!
ssdfaas(800,ename.);
end;
declare
ename emp.ename%rowtype;
begin
--这里会提示查出来的结果过多!
ssdfaas(800,ename.);
end;
已写入 file afiedt.buf 1 create or replace procedure p1(sal number,tname out varchar2)
2 as
3 cursor sname is select empname from emp where salary>sal;
4 begin
5 for sname_rec in sname loop
6 tname:=sname_rec.empname;
7 dbms_output.put_line(tname);
8 end loop;
9 exception
10 when no_data_found then
11 raise_application_error(-20000,'no found');
12* end;
SQL> /过程已创建。SQL> declare
2 n number:=1500;
3 name varchar2(1000);
4 begin
5 p1(n,name);
6 end;
7 /
wkc168
wkc
ycm
ycm2PL/SQL 过程已成功完成。