sql>create or replace procedure testpro(vename varchar2,vdname out varchar2,vjob out varchar2) is
   begin      
       select dname into vdname from dept where deptno=(select deptno from emp where ename=vename);
       select job into vjob from emp where ename=vename;
  end;这样直接复制执行,没有反应,应该怎么写,才能创建这个存储过程?之前一直在plsql工具中编译创建的,到命令提示符下面就不知道怎么搞了,求高手帮忙啊。

解决方案 »

  1.   

    SQL> create or replace procedure testpro(vename varchar2,vdname out varchar2,vjob out varchar2) is
      2    begin
      3    select dname into vdname from dept where deptno=(select deptno from emp where ename=vename);
      4    select job into vjob from emp where ename=vename;
      5    end;
      6  /
     
    Procedure created
     
    SQL> var dname varchar2;
    SQL> var job varchar2;
    SQL> exec('SMITH',dname,job);
     
    exec('SMITH',dname,job)
     
    ORA-00900: 无效 SQL 语句
     
    SQL> exec testpro('SMITH',:dname,:job);
     
    PL/SQL procedure successfully completed
    dname
    ---------
    RESEARCH
    job
    ---------
    CLERK
     
    SQL> 
      

  2.   


    SQL> create or replace procedure proc
      2  is
      3  begin
      4   dbms_output.put_line('Procedure');
      5  end;
      6  /Procedure created.
      

  3.   

    create or replace procedure testpro(vename varchar2,vdname out varchar2,vjob out varchar2) is
      begin   
      select dname into vdname from dept where deptno=(select deptno from emp where ename=vename);
      select job into vjob from emp where ename=vename;
      end;
    /  加个执行/  回车
     就看你的赋值唯一不  也就是取出的记录是只有一条
    create or replace procedure testpro(vename varchar2,vdname out varchar2,vjob out varchar2) 
    is
      begin   
      select a.dname,b.job into vdname,vjob from dept a,emp b where a.deptno=b.deptno and b.ename=vename;   end;