SQL存储过程编译错误:调用中错误的数字或参数类型
||
我已经创建了这个存储过程。但是我得到这个错误
ORA-06550:第14行第3列:PLS-00306:
错误的参数数量或类型
调用\'CHALLENGEUPDATE \'
传递的值是CUSTID
:= \'400800500 \'; POLICYNAME:=
\'政策\';挑战:=
\'CHALLENGEID1 \';定位:=
\'PINPOS \';
代码是:
create or replace
procedure ChallengeUpdate
(
CustID IN SEC_CHALLENGE.CUSTOMERID%TYPE,
PolicyName IN SEC_CHALLENGE.POLICY_NAME%TYPE,
ChallengeId IN SEC_CHALLENGE.CHALLENGE_ID%TYPE,
PinPositions IN SEC_CHALLENGE.PINPOSITIONS%TYPE,
o_result OUT INTEGER,
o_code OUT INTEGER,
o_c OUT INTEGER
)
as
c integer;
begin
select count(*) into c from SEC_CHALLENGE xyz where xyz.CUSTOMERID=CustID and
xyz.POLICY_NAME=PolicyName;
if c = 0 then
INSERT INTO SEC_CHALLENGE(CUSTOMERID,CHALLENGE_ID,PINPOSITIONS,POLICY_NAME)
VALUES (CustID,ChallengeId, PinPositions, PolicyName);
else
UPDATE RBSSEC_CHALLENGE
SET CHALLENGE_ID=ChallengeId, PINPOSITIONS=PinPositions
WHERE CUSTOMERID=CustID and POLICY_NAME = PolicyName;
end if;
commit;
o_result:=0;
o_c:=c;
exception when others then
o_result:=-1;
o_c:=c;
rollback;
o_code :=SQLCODE;
end ChallengeUpdate;
SEC_CHALLENGE表是这个
CREATE TABLE \"MUJEEB\".\"RBSSEC_CHALLENGE\"
(
\"CUSTOMERID\" VARCHAR2(9 BYTE) NOT NULL ENABLE,
\"CHALLENGE_ID\" VARCHAR2(50 BYTE),
\"PINPOSITIONS\" VARCHAR2(20 BYTE) NOT NULL ENABLE,
\"POLICY_NAME\" VARCHAR2(50 BYTE) NOT NULL ENABLE,
CONSTRAINT \"RBSSEC_CHALLENGE1_PK\" PRIMARY KEY (\"CHALLENGE_ID\")
)
这是我的运行方式:
DECLARE CUSTID VARCHAR2(9);
POLICYNAME VARCHAR2(50);
CHALLENGEID VARCHAR2(50);
PINPOSITIONS VARCHAR2(20);
O_RESULT NUMBER;
O_CODE NUMBER;
BEGIN CUSTID :=\'400800500\' ;
POLICYNAME := \'POLICY\';
CHALLENGEID := \'CHALLENGEID1\';
PINPOSITIONS := \'PINPOS\';
CHALLENGEUPDATE( CUSTID => CUSTID, POLICYNAME => POLICYNAME, CHALLENGEID => CHALLENGEID, PINPOSITIONS => PINPOSITIONS, O_RESULT => O_RESULT, O_CODE => O_CODE );
DBMS_OUTPUT.PUT_LINE(\'O_RESULT = \' || O_RESULT);
DBMS_OUTPUT.PUT_LINE(\'O_CODE = \' || O_CODE);
END;
没有找到相关结果
已邀请:
3 个回复
济畦刨
告耸
慷祈霖黑
您对
的调用恰好错过了
的输出变量。您可以尝试以下方法: