Warning: file_get_contents(/data/phpspider/zhask/data//catemap/5/url/2.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Oracle 以下过程使用调用invoicetest.wj_get_invoicedatatest(1,:InvoicesCur)时出错;调用invoicetest.wj_get_invoice_cbodataidtest('X');_Oracle - Fatal编程技术网

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。