test.sql
     prompt================================
     prompt please enter a character &a &b;
     prompt================================
     execute test(a,b);
     /
PROCEDURE test
    CREATE OR REPLACE PROCEDURE test(a VARCHAR2,
                                 b VARCHAR2)
    AS
      begin
          dbms_output.put_line(a);
          dbms_output.put_line(b);
      end ;通过sqlplus 输入参数传到存储过程里调用
但有错误能解决吗?

解决方案 »

  1.   

    prompt================================
    prompt please enter a character a b;
    prompt================================
    execute test(&a,&b);--因为你定义的2个输入参数是VARCHAR2类型的,所以当命令行提示输入
    参数时,你应该给输入的值加上单引号。
    /
    PROCEDURE test
    CREATE OR REPLACE PROCEDURE test(a VARCHAR2,
    b VARCHAR2)
    AS
    begin
    dbms_output.put_line(a);
    dbms_output.put_line(b);
    end ;
      

  2.   

    还是有错的SQL> @D:\test.sql
    ================================
    输入 a 的值:  '1'
    输入 b 的值:  '2'
    please enter a character '1' '2'
    ================================
    execute TEST(a,b);
            *
    第 5 行出现错误:
    ORA-06550: line 5, column 9:
    PLS-00103: Encountered the symbol "TEST" when expecting one of the following:
    := . ( @ % ; immediate
    The symbol ":=" was substituted for "TEST" to continue.
      

  3.   

    输入值的时候不能带引号!
    SQL> set serveroutput on;
    SQL> exec test('&a','&b');
    输入 a 的值:  1
    输入 b 的值:  2
    1
    2PL/SQL 过程已成功完成。SQL>