写了个存储过程 他的输出参数 会返回多个值然后 下面的调用程序会提示返回的值过多 那请问下该怎么写了!
declare
v_ename varchar2(10);
begin
aaa(800,v_ename);
end;

解决方案 »

  1.   

    应该是你的aaa(800,v_ename);
    返回多行了吧。
    不知道你的aaa的内容。
      

  2.   

    你全写错了,这个是无法执行的。
    varchar2---错误
    aaa---错误给你一个例子:DECLARE @v_ename VARCHAR(10);BEGIN
    SET NOCOUNT ON;
    ........

            return 0;---返回值END
      

  3.   

    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;
      

  4.   

    调用里写错了
    declare
    ename emp.ename%rowtype;
    begin
    --这里会提示查出来的结果过多!
    ssdfaas(800,ename.);
    end;
      

  5.   

    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 过程已成功完成。