create or replace procedure SP_name(name in VARCHAR2,money out number) is
begin
  select sal into money from emp where ename=name; --Oracle自带的表,输入员工名字,求出工资
end SP_name;这个存储过程有两个参数,不知道如何执行
提示什么未申明标识符

解决方案 »

  1.   

    create or replace procedure SP_name(name in VARCHAR2,money out number) is
    begin
      select sal into money from emp where ename=name; --Oracle自带的表,输入员工名字,求出工资
    end SP_name;
    /var v_money number;
    exec sp_name('SCOTT',:v_money);
    print v_money;
      

  2.   

    scott@SZTYORA> create or replace procedure SP_name(name in VARCHAR2,money out number) is
      2  begin
      3    select sal into money from emp where ename=name; --Oracle自带的表,输入员工名字,求出工资
      4  end SP_name;
      5  /过程已创建。已用时间:  00: 00: 00.14
    scott@SZTYORA>
    scott@SZTYORA> var v_money number;
    scott@SZTYORA> exec sp_name('SCOTT',:v_money);PL/SQL 过程已成功完成。已用时间:  00: 00: 00.01
    scott@SZTYORA> print v_money;   V_MONEY
    ----------
          3000scott@SZTYORA>
      

  3.   

    请问我用sql*plus能成功执行以上语句但是用pl/sql developer就不能执行,提示无效SQL语句啊
      

  4.   

     v_money 前面不用 var的吧
      

  5.   

    scott@SZTYORA> var v_money number;
    scott@SZTYORA> exec sp_name('SCOTT',:v_money);
    是在命令行执行的点击 pl/sql中->文件->new->Command Window,在这里执行
      

  6.   

    -- 呵呵,还以为你是用的SQL*Plus工具呢......
    -- (一看我执行的语句,就应该知道我是用的SQL*Plus工具啊,这也不懂?悲哀)
    -- 你如果是用的PL/SQL Developer工具的话,可以用如下语句块:
    DECLARE
      v_money emp.sal%Type;
    BEGIN
      sp_name('SCOTT',v_money);
      DBMS_OUTPUT.PUT_LINE(v_money);
    END;
    /
      

  7.   


    -- 两人上工具是不一样的,SQL*Plus比PL/SQL Developer工具要强大!
      

  8.   

    var v_money number;
    exec sp_name('SCOTT',:v_money);请问执行存储过程的时候前面要加个冒号 不加冒号就错误