当然出错,你的参数cPhoneCode 就定义为
cPhoneCode IN OUT varchar2不过我看你是想返回结果集吧,那应该这样做
CREATE OR REPLACE PROCEDURE PM_InfoPhoneProc 
          (cPhoneCode varchar2)
CURSOR curPhoneCode is
  SELECT PhoneCode
  FROM YW_Info ;
AS
BEGIN
open curPhoneCode for
  SELECT PhoneCode
  FROM YW_Info 
  WHERE PhoneCode Like '%'+cPhoneCode+'%';
END;

解决方案 »

  1.   

    oracle中字符串连接是用+号嘛?
      

  2.   

    WHERE PhoneCode Like '%'||cPhoneCode||'%';
    察看错误信息用show error
      

  3.   

    我修改了一些:
    SQL> CREATE OR REPLACE PROCEDURE PM_InfoPhoneProc 
      2            (cPhoneCode varchar2)
      3  AS
      4  BEGIN
      5    DECLARE CURSOR curPhoneCode is
      6    SELECT PhoneCode
      7    FROM YW_Info;
      8    BEGIN
      9      OPEN curPhoneCode; 
     10      SELECT PhoneCode
     11      INTO cPhoneCode
     12      FROM YW_Info 
     13      WHERE PhoneCode Like '%'||cPhoneCode||'%';
     14    END; 
     15  END;
     16  /
    提示错误:
    10/5     PL/SQL: SQL Statement ignored
    11/7     PLS-00403: 表达式 'CPHONECODE' 不能作为 SELECT/FETCH 语句的 INTO   目标然后我去掉INTO cPhoneCode,提示错误:
    10/5     PLS-00428: 在此 SELECT 语句中缺少 INTO 子句
    10/5     PL/SQL: SQL Statement ignored请问是怎么回事??
      

  4.   

    CREATE OR REPLACE PROCEDURE PM_InfoPhoneProc (cPhoneCode varchar2)
      AS
     t_code yw_info.phonecode%type;
    BEGIN
           SELECT PhoneCode
           INTO t_code
           FROM YW_Info 
           WHERE PhoneCode Like '%'||cPhoneCode||'%';
    END PM_InfoPhoneProc; 
    /
    这样应该没问题.
    你要达到什么目的?
      

  5.   

    没用过delphi,不知道具体方法,肯定能调用,但不知道这样的一个过程怎么完成你要达到的功能
      

  6.   

    你的目的是不是将去出来的Phonecode再赋回到cPhoneCode变量上?你的问题出在参数上面,你的入口参数cPhoneCode没有加in out这是缺省得是in
    也就是说,这只是个入口参数,在过程里面是不能对它赋值的,改称这样就行了  (cPhoneCode in out varchar2)