当然出错,你的参数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;
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;
察看错误信息用show error
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请问是怎么回事??
AS
t_code yw_info.phonecode%type;
BEGIN
SELECT PhoneCode
INTO t_code
FROM YW_Info
WHERE PhoneCode Like '%'||cPhoneCode||'%';
END PM_InfoPhoneProc;
/
这样应该没问题.
你要达到什么目的?
也就是说,这只是个入口参数,在过程里面是不能对它赋值的,改称这样就行了 (cPhoneCode in out varchar2)