praveenb
praveenb

Reputation: 10659

How to run this stored procedure

I have to check this procedure

im giving following values as parameters

34220, 2815,'7/20/2011', 32760, 100, 'PMNT_CHECK', 1, null, "", false, null, null

DECLARE
  P_APP_ID NUMBER;
  P_USER_ID NUMBER;
  P_DATE DATE;
  P_INV_IDS WB_PROD.WB_PCK_TYPES.T_IDS;
  P_AMNTS WB_PROD.WB_PCK_TYPES.T_NUMBERS;
  P_PMNT_METHOD VARCHAR2(15);
  P_BANK_AC_FROM NUMBER;
  P_CHECK_NUMBERS WB_PROD.WB_PCK_TYPES.T_NUMBERS;
  P_MEMO VARCHAR2(1000);
  P_PAY_MULTIPLE NUMBER;
  P_CRD_IDS WB_PROD.WB_PCK_TYPES.T_IDS;
  P_CRD_AMOUNTS WB_PROD.WB_PCK_TYPES.T_PRICES;
  O_PY_ID NUMBER;
BEGIN
  P_APP_ID := 34220;
  P_USER_ID := 2815;
  P_DATE := '7/20/2011';
  -- Modify the code to initialize the variable
  P_INV_IDS := 32760;
  -- Modify the code to initialize the variable
  P_AMNTS := 100;
  P_PMNT_METHOD := 'PMNT_CHECK';
  P_BANK_AC_FROM := 1;
  -- Modify the code to initialize the variable
 --P_CHECK_NUMBERS := NULL;
  P_MEMO := '';
  P_PAY_MULTIPLE := false;
  -- Modify the code to initialize the variable
  -- P_CRD_IDS := NULL;
  -- Modify the code to initialize the variable
  -- P_CRD_AMOUNTS := NULL;

  WB_PCK_BILL_PAYMENTS.PAY_BILLS(
    P_APP_ID => P_APP_ID,
    P_USER_ID => P_USER_ID,
    P_DATE => P_DATE,
    P_INV_IDS => P_INV_IDS,
    P_AMNTS => P_AMNTS,
    P_PMNT_METHOD => P_PMNT_METHOD,
    P_BANK_AC_FROM => P_BANK_AC_FROM,
    P_CHECK_NUMBERS => P_CHECK_NUMBERS,
    P_MEMO => P_MEMO,
    P_PAY_MULTIPLE => P_PAY_MULTIPLE,
    P_CRD_IDS => P_CRD_IDS,
    P_CRD_AMOUNTS => P_CRD_AMOUNTS,
    O_PY_ID => O_PY_ID
  );
  DBMS_OUTPUT.PUT_LINE('O_PY_ID = ' || O_PY_ID);
END;

Im getting error at this line

 P_INV_IDS := 32760;

i checked type of

P_INV_IDS WB_PROD.WB_PCK_TYPES.T_IDS;

which is in Declare statement, which is like this

type t_ids is table of t_id
   index by binary_integer;

I donot understand how to give parameter to this type. Please let me know how to give this parameter.

Thank you

Upvotes: 0

Views: 604

Answers (2)

DCookie
DCookie

Reputation: 43523

How is the TYPE t_id defined? That will dictate how you initialize this array. If it were a number, then you will want to initialize your value this way:

P_INV_IDS(1) := 32760;

If, however, t_id is defined as, say a RECORD:

TYPE t_id IS RECORD (
  ID INTEGER;
  DESCRIPTION VARCHAR2(32);
);

Then you might want to initialize thusly:

P_INV_IDS(1).id := 32760;
P_INV_IDS(1).description := 'Description for 32760';

Upvotes: 2

user747858
user747858

Reputation:

P_INV_IDS is an associative array as per your type declaration.

you can not assign this way

P_INV_IDS := 32760;

you need to specify the index in P_INV_IDS to which you are assigning value

something like

P_INV_IDS(0) := 32760;
P_INV_IDS(1) := 32761;

http://www.java2s.com/Tutorial/Oracle/0520__Collections/AssignvaluetoPLSQLtable.htm

Upvotes: 3

Related Questions