哪里出错了,拜托?
规格:
CREATE OR REPLACE PACKAGE CTI_MATRIX.AMD AS
TYPE REF_CURSOR IS REF CURSOR;
PROCEDURE AMD_NEEDMSG (v_CRN IN VARCHAR2, return_recordset OUT REF_CURSOR);
END AMD;
体:
CREATE OR REPLACE PACKAGE BODY CTI_MATRIX.AMD AS
PROCEDURE AMD_NEEDMSG (v_CRN IN VARCHAR2, return_recordset OUT REF_CURSOR)
IS
BEGIN
--
END AMD_NEEDMSG;
END AMD;
来自TOAD的阻止阻止:
DECLARE
RETURN_RECORDSET AMD.REF_CURSOR;
BEGIN
RETURN_RECORDSET := NULL;
CTI_MATRIX.AMD.AMD_NEEDMSG ( '123456789', RETURN_RECORDSET );
END;
错误:PLS-00382表达式的行类型错误
答案 0 :(得分:0)
为:
DECLARE
RETURN_RECORDSET AMD.REF_CURSOR;
BEGIN
RETURN_RECORDSET := NULL;
CTI_MATRIX.AMD.AMD_NEEDMSG ( '123456789', RETURN_RECORDSET );
END;
是正确的语法,但我看到你在包调用(CTI_MATRIX)上为所有者添加前缀,但不在RETURN_RECORDSET AMD.REF_CURSOR;
的声明上。如果您将其称为另一个也拥有包AMD
副本的用户,那么您将收到此错误消息。
也无需将NULL
分配给第4行的记录集。
答案 1 :(得分:0)
在该过程中,第二个参数的类型为“REF_CURSOR”,而在测试pl / sql块中,它是“AMD.REF_CURSOR”。检查两种类型是否相同,我猜他们不是。或者更改测试pl / sql块,以便您像这样定义变量:
RETURN_RECORDSET CTI_MATRIX.AMD.REF_CURSOR;