CREATE OR REPLACE PROCEDURE HELLO_PRO(STR  VARCHAR2) AS
 BEGIN
 DBMS_OUTPUT.PUT_LINE(STR);
 END;

解决方案 »

  1.   

    create or replace procedure hello_pro(STR in VARCHAR)
    is
       v_STR varchar2(10);
    begin
       v_STR:=STR;
      DBMS_OUTPUT.PUT_LINE(v_STR);
    END;
    SQL> set serveroutput on
    SQL> exec hello_pro('he');hePL/SQL procedure successfully completed
      

  2.   

    或者:CREATE OR REPLACE PROCEDURE HELLO_PRO(STR  VARCHAR2) AS
     BEGIN
     DBMS_OUTPUT.PUT_LINE(STR);
     END;SQL> set serveroutput on
    SQL> exec hello_pro('he');hePL/SQL procedure successfully completed
      

  3.   

    多谢楼上及时的帮忙!
    不过我还是没有明白,这个错误出现符号 "("在需要下列之一时:  := . ) , @ % default    character 符号 ":=" 被替换为 "(" 后继续。是什么意思?
    因为还碰到了类似的问题!高手进一步指点吧!
    比如我还做了几个例子!就用oralce自带的hr的例子
    connect hr/password
    --定义一个包头
    CREATE OR REPLACE PACKAGE cv_types AS
    TYPE EmpInfoTyp is REF CURSOR RETURN EMPLOYEES%ROWTYPE;
    END cv_types;
    --这个没有问题!
    --然后在定义一个过程,引用到刚刚包头中的一个typeCREATE OR REPLACE PROCEDURE EmpInfo_rpt
    (emp_cv IN OUT cv_types.EmpInfoTyp)AS
    DEGIN
    OPEN emp_cv FOR SELECT EMPLOYEE_ID,SALARY FROM EMP_DETAILS_VIEW
    WHERE JOB_ID='SA_MAN';这个过程中,还是有那个错误!
    pl-00103 :出现符号 "EMP_CV"在需要下列之一时:  := . ( @ % ; not null    range default character
      

  4.   

    emp_cv IN OUT cv_types.EmpInfoTyp可以再declare的时候定义数据类型emp_cv cv_types.EmpInfoTyp;
      

  5.   


    emp_cv cv_types.EmpInfoTyp%type;
      

  6.   

    问题解决了!
    是这个游标定义!
    TYPE EmpInfoTyp is REF CURSOR RETURN EMPLOYEES%ROWTYPE;
    和下面
    游标的赋值不一致导致! 
    此外,还有一个拼写的错误!DEGIN--》begin!