Oracle 以下过程使用调用invoicetest.wj_get_invoicedatatest(1,:InvoicesCur)时出错;调用invoicetest.wj_get_invoice_cbodataidtest('X');
我在使用“呼叫男孩”程序后出错Oracle 以下过程使用调用invoicetest.wj_get_invoicedatatest(1,:InvoicesCur)时出错;调用invoicetest.wj_get_invoice_cbodataidtest('X');,oracle,Oracle,我在使用“呼叫男孩”程序后出错 CREATE OR REPLACE PACKAGE invoicetest IS TYPE InvoiceCBOIDCurs IS REF CURSOR; TYPE InvoicesCur IS REF CURSOR; PROCEDURE wj_get_invoice_cbodataidstest ( InvoiceCBOIDs out InvoiceCBOIDCurs
CREATE OR REPLACE PACKAGE invoicetest
IS
TYPE InvoiceCBOIDCurs IS REF CURSOR;
TYPE InvoicesCur IS REF CURSOR;
PROCEDURE wj_get_invoice_cbodataidstest
(
InvoiceCBOIDs out InvoiceCBOIDCurs
);
PROCEDURE wj_get_invoicedatatest
(
Invoice out InvoicesCur,
CBOID IN INTEGER
);
END invoicetest;
/
CREATE OR REPLACE PACKAGE BODY invoicetest IS
PROCEDURE wj_get_invoice_cbodataidstest
(
InvoiceCBOIDs out InvoiceCBOIDCurs
)
IS
BEGIN
OPEN InvoiceCBOIDs FOR
Select 1 from dual;
END wj_get_invoice_cbodataidstest;
PROCEDURE wj_get_invoicedatatest
(
Invoice out InvoicesCur,
CBOID IN INTEGER
)as
begin
OPEN Invoice FOR
select cboid from dual;
end wj_get_invoicedatatest;
END invoicetest;
/
调用后出错:
wj_get_invoicedatatest1,:InvoicesCur;呼叫
发票测试。wj_获取_发票_CBODataidTest'X'
你的程序还可以,但是你用错误的方式调用它们;在一种情况下,您使用的参数顺序错误,而在另一种情况下,您传递的是varchar,而过程需要游标参数。 这是调用您的过程的正确方法:
SQL> declare
2 vCurCBO invoicetest.InvoiceCBOIDCurs;
3 vCur invoicetest.InvoicesCur;
4 begin
5 invoicetest.wj_get_invoicedatatest(vCur, 1);
6 --
7 invoicetest.wj_get_invoice_cbodataidstest(vCurCBO);
8 --
9 /* what you need to do with your cursors */
10 end;
11 /
PL/SQL procedure successfully completed.
SQL>
为避免混淆,可以显式使用参数名称传递参数:
...
invoicetest.wj_get_invoicedatatest(
Invoice =>vCur,
CBOID => 1
);
--
invoicetest.wj_get_invoice_cbodataidstest(
InvoiceCBOIDs => vCurCBO
);
...
如果您需要使用电话:
SQL> VARIABLE vCurCBO REFCURSOR;
SQL> VARIABLE vCur REFCURSOR;
SQL> CALL invoicetest.wj_get_invoice_cbodataidstest(
2 InvoiceCBOIDs => :vCurCBO
3 );
Call completed.
SQL> CALL invoicetest.wj_get_invoicedatatest(
2 Invoice =>:vCur,
3 CBOID => 1
4 );
Call completed.
SQL>
什么错误?你怎么称呼这些程序?请在命令:call invoicetest.wj_get_invoicedatatest1,:InvoicesCur error report:SQL error:ORA-01008:并非所有变量都绑定到01008中的第43行处发布包含过程调用和错误的代码。00000-未绑定所有变量*原因:*操作:我已将所有权限授予用户您正在使用错误的参数顺序调用过程;此外,OUT参数是一个游标,您需要如何处理它?您可以更好地定义一个带有一些变量的块来调用您的过程,我也尝试了函数-function my_proc_testCBOID IN NUMBER返回sys_refcursor作为InvoicesCur sys_refcursor;开始wj_get_invoicedatatestCBOID,InvoicesCur;退货发票;结束/从DUAL中选择my_proc_test3;我想使用call package.ProcedureGuments格式我想在TIBCO BW Invoke adapter Palette中输出此过程谢谢Aleksej。