如下create or replace procedure xn_pro(v_ename out varchar2)
is
begin
  select ename into v_ename from emp;
end;
错误:
ORA-06550: 第 2 行, 第 7 列: 
PLS-00306: 调用 'XN_PRO' 时参数个数或类型错误
ORA-06550: 第 2 行, 第 7 列: 
PL/SQL: Statement ignored怎么修改 很久不写过程 怎么老写不对……

解决方案 »

  1.   

    declare  v varchar2(100);begin   xn_pro(v);  dbms_output.put_line(v);end;
      

  2.   

    过程语法上没问题.
    但是取数据的时候会出现错误 ,因为select语句取了多条数据到一个变量里,装不下.
      

  3.   

    SQL> create or replace procedure xn_pro(v_ename out varchar2)
      2  is
      3  begin
      4    select ename into v_ename from emp ;
      5  end;
      6  /
     
    Procedure created
     
    SQL> var o_name varchar2
    SQL> exec xn_pro(:o_name);
     
    begin xn_pro(:o_name); end;
     
    ORA-01422: exact fetch returns more than requested number of rows
    ORA-06512: at "SCOTT.XN_PRO", line 4
    ORA-06512: at line 2
    o_name
    ---------
     
    SQL> 
    SQL> create or replace procedure xn_pro(v_ename out varchar2)
      2  is
      3  begin
      4    select ename into v_ename from emp where rownum=1;
      5  end;
      6  /
     
    Procedure created
     
    SQL> exec xn_pro(:o_name);
     
    PL/SQL procedure successfully completed
    o_name
    ---------
    SMITH
     
    SQL> 
      

  4.   

    --错误是你取出的记录不是一条 你的这样赋值的方式是单一的 加个 max 或者rownum=1 在或者加个 in参数
    create or replace procedure xn_pro(v_ename out varchar2)
    is
    begin
      select ename into v_ename from emp where rownum=1;
    end;--or
    create or replace procedure xn_pro(no emp.empno%type,v_ename out varchar2)
    is
    begin
      select ename into v_ename from emp where empno=no;
    end;