Author |
Message
|
CAONIMA |
Posted: Mon Feb 02, 2015 7:57 pm Post subject: Call stored procedure |
|
|
Acolyte
Joined: 03 Dec 2014 Posts: 65
|
The procedure in Oracle DB:
TYPE detrec_tbl_t is table of crm_int_detail%ROWTYPE index by pls_integer;
PROCEDURE sugar_etrac_interface(
p_master_io IN OUT crm_int_master%ROWTYPE,
p_det_io IN OUT detrec_tbl_t,
p_response_o IN OUT crm_int_response%ROWTYPE
);
datatype:
1) p_master_io : PL/SQL RECORD
2) p_det_io: etrac.crm.detrec_tel
3)p_response_o PL/SQL RECORD
IIB ESQL Code:
DECLARE p_master_io ROW;
DECLARE p_det_io ROW;
DECLARE p_response_o ROW ;
SET P_master_io = Environment.Variable.master;
SET p_det_io.ROW[1].NUMBER = '1';
SET p_det_io.ROW[2].NUMBER = '2';
SET p_det_io.ROW[1].PROBLEM = 'Y';
SET p_det_io.ROW[1].PROBLEM = 'N';
CALL etrac(p_master_io,p_det_io.ROW[],p_response_o)
CREATE PROCEDURE etrac( )
LANGUAGE DATABASE
DYNAMIC RESULT SETS 3
EXTERNAL NAME "etrac.crm_processing.sugar_etrac_interface";
----------------------------------------------------------------------------------
We use the fist two parameters as input, the last one p_response_o as putput?
My Question is how can I define the datatype PL/SQL RECORD?
For the second parameter: detrec_tbl_t , it is a table, how can I define it and call it in ESQL ?
The detrec_tbl_t has many rows (at least two), like a list. Can I just call it from IIB to decalre it as row? |
|
Back to top |
|
 |
nelson |
Posted: Tue Feb 03, 2015 6:18 am Post subject: |
|
|
 Partisan
Joined: 02 Oct 2012 Posts: 313
|
|
Back to top |
|
 |
CAONIMA |
Posted: Tue Feb 03, 2015 6:25 am Post subject: |
|
|
Acolyte
Joined: 03 Dec 2014 Posts: 65
|
Thank you for you reply.
I have already read all the documents about stored procedure, but I still cannot get the result, it always return
"The procedure '&1' with '&2' parameters could not be match with a corresponding Database stored porocedure."
So I wonder what is the datatype in stored procedure, how should I define it in IIB using ESQL?
Thank you very much. |
|
Back to top |
|
 |
Vitor |
Posted: Tue Feb 03, 2015 6:38 am Post subject: |
|
|
 Grand High Poobah
Joined: 11 Nov 2005 Posts: 26093 Location: Texas, USA
|
nelson wrote: |
And yes, you declare it as a row. |
It says here:
Quote: |
All external procedures have the following restrictions:
A stored procedure cannot be overloaded on the database side. A stored procedure is considered overloaded if there is more than one procedure of the same name in the same database schema. If the broker detects that a procedure has been overloaded, it raises an exception.
Parameters cannot be of the ESQL REFERENCE, ROW, LIST, or INTERVAL data types.
User-defined types cannot be used as parameters or as return values.
|
_________________ Honesty is the best policy.
Insanity is the best defence. |
|
Back to top |
|
 |
CAONIMA |
Posted: Tue Feb 03, 2015 6:41 am Post subject: |
|
|
Acolyte
Joined: 03 Dec 2014 Posts: 65
|
Thank you for your reply.
So in my case, how should I write my code to define the datatype in SP? |
|
Back to top |
|
 |
mqjeff |
Posted: Tue Feb 03, 2015 6:43 am Post subject: |
|
|
Grand Master
Joined: 25 Jun 2008 Posts: 17447
|
CAONIMA wrote: |
Thank you for your reply.
So in my case, how should I write my code to define the datatype in SP? |
You need to write a stored procedure that matches the restrictions given.
Then you can write an ESQL call to that stored procedure.
If you aren't already talking to your DBA, then you should be. |
|
Back to top |
|
 |
CAONIMA |
Posted: Tue Feb 03, 2015 6:46 am Post subject: |
|
|
Acolyte
Joined: 03 Dec 2014 Posts: 65
|
Many thanks for your reply.
Here is the SP code in Oracle:
-----------------------------------------------------------------------
DECLARE
P_MASTER_IO PL/SQL RECORD;
P_DET_IO ETRAC.CRM_PROCESSING.DETREC_TBL_T;
P_RESPONSE_O PL/SQL RECORD;
BEGIN
P_MASTER_IO := NULL;
-- Modify the code to initialize the variable
-- P_DET_IO := NULL;
P_RESPONSE_O := NULL;
CRM_PROCESSING.SUGAR_ETRAC_INTERFACE(
P_MASTER_IO => P_MASTER_IO,
P_DET_IO => P_DET_IO,
P_RESPONSE_O => P_RESPONSE_O
);
DBMS_OUTPUT.PUT_LINE('P_MASTER_IO = ' || P_MASTER_IO);
-- Modify the code to output the variable
-- DBMS_OUTPUT.PUT_LINE('P_DET_IO = ' || P_DET_IO);
DBMS_OUTPUT.PUT_LINE('P_RESPONSE_O = ' || P_RESPONSE_O);
END;
-------------------------------------------------------------------------
I don't know what is PL/SQL RECORD means?
and how should I define a table in ESQL, because the P_DET_IO is a table. |
|
Back to top |
|
 |
Vitor |
Posted: Tue Feb 03, 2015 6:53 am Post subject: |
|
|
 Grand High Poobah
Joined: 11 Nov 2005 Posts: 26093 Location: Texas, USA
|
CAONIMA wrote: |
I don't know what is PL/SQL RECORD means?
and how should I define a table in ESQL, because the P_DET_IO is a table. |
mqjeff wrote: |
You need to write a stored procedure that matches the restrictions given.
Then you can write an ESQL call to that stored procedure.
If you aren't already talking to your DBA, then you should be. |
_________________ Honesty is the best policy.
Insanity is the best defence. |
|
Back to top |
|
 |
nelson |
Posted: Tue Feb 03, 2015 6:57 am Post subject: |
|
|
 Partisan
Joined: 02 Oct 2012 Posts: 313
|
CAONIMA wrote: |
I don't know what is PL/SQL RECORD means?
and how should I define a table in ESQL, because the P_DET_IO is a table. |
Ok, well in Oracle we have used SYS_REFCURSOR when we need to retrieve multiple rows, honestly, not sure if the behavior of PL/SQL RECORD is the same.
You should try calling the SP in this way:
Code: |
DECLARE dbData1 ROW;
DECLARE dbData2 ROW;
DECLARE dbData3 ROW;
CALL etrac(dbData1.row[],dbData2.row[],dbData3.row[]); |
@Vitor... I mean. You first declare the row and then call the SP with that row as a parameter  |
|
Back to top |
|
 |
nelson |
Posted: Tue Feb 03, 2015 7:01 am Post subject: |
|
|
 Partisan
Joined: 02 Oct 2012 Posts: 313
|
well..... ... Haven´t tried sending a table to a SP. Havent noticed there were input parameters... So, I finally understand what Vitor said...
@Vitor. There is no way to achieve this? |
|
Back to top |
|
 |
CAONIMA |
Posted: Tue Feb 03, 2015 7:10 am Post subject: |
|
|
Acolyte
Joined: 03 Dec 2014 Posts: 65
|
Many thanks for your patient.
It doesn't work. And the same issue.
Here is all my ESQL code
-------------------------------------------------------------------------------------
DECLARE p_master_io ROW;
DECLARE p_det_io ROW;
DECLARE p_response_o ROW ;
DECLARE pattern CHARACTER 'dd-MM-yy';
DECLARE PCNT INT CARDINALITY(InputRoot.JSON.Data.*[]);
DECLARE INC INT 1;
WHILE INC<= PCNT DO
--Fields on Master Table
DECLARE p_SUGAR_REF_NUMBER_i CHAR InputRoot.JSON.Data.*[<].SUGAR_REF_NUMBER;
DECLARE p_PROBLEM_NUMBER_i CHAR InputRoot.JSON.Data.*[<].PROBLEM_NUMBER;
DECLARE p_SB_TYPE_i CHAR InputRoot.JSON.Data.*[<].SB_TYPE;
DECLARE p_PROBLEM_STATUS_i CHAR InputRoot.JSON.Data.*[<].PROBLEM_STATUS;
DECLARE p_INVOICE_NUMBER_i DECIMAL CAST(InputRoot.JSON.Data.*[<].INVOICE_NUMBER AS DECIMAL);
DECLARE p_INVOICE_DATE_i TIMESTAMP CAST(InputRoot.JSON.Data.*[<].INVOICE_DATE AS TIMESTAMP FORMAT pattern);
DECLARE p_CUSTOMER_PO_NUMBER_i CHAR InputRoot.JSON.Data.*[<].CUSTOMER_PO_NUMBER;
DECLARE p_CUSTOMER_SHIP_TO_i CHAR InputRoot.JSON.Data.*[<].CUSTOMER_SHIP_TO;
DECLARE p_CUSTOMER_BILL_TO_i CHAR InputRoot.JSON.Data.*[<].CUSTOMER_BILL_TO;
DECLARE p_CUSTOMER_REBILL_i CHAR InputRoot.JSON.Data.*[<].CUSTOMER_REBILL;
DECLARE p_SCAC_i CHAR InputRoot.JSON.Data.*[<].SCAC;
DECLARE p_CARRIER_NAME_i CHAR InputRoot.JSON.Data.*[<].CARRIER_NAME;
DECLARE p_STORE_POS_NUMBER_i CHAR InputRoot.JSON.Data.*[<].STORE_POS_NUMBER;
DECLARE p_FIELD_CREDIT_FLAG_i CHAR InputRoot.JSON.Data.*[<].FIELD_CREDIT_FLAG;
DECLARE p_BLANKET_TYPE_i CHAR InputRoot.JSON.Data.*[<].BLANKET_TYPE;
DECLARE p_CREDIT_TYPE_i CHAR InputRoot.JSON.Data.*[<].CREDIT_TYPE;
DECLARE p_RETURN_FLAG_i CHAR InputRoot.JSON.Data.*[<].RETURN_FLAG;
DECLARE p_CREDIT_FLAG_i CHAR InputRoot.JSON.Data.*[<].CREDIT_FLAG;
DECLARE p_SW_INVOICE_NUMBER_i CHAR InputRoot.JSON.Data.*[<].SW_INVOICE_NUMBER;
DECLARE p_ORIGINAL_SHIPPING_LOCATION_i CHAR InputRoot.JSON.Data.*[<].ORIGINAL_SHIPPING_LOCATION;
DECLARE p_PROFORMA_CREDIT_REQUESTED_i CHAR InputRoot.JSON.Data.*[<].PROFORMA_CREDIT_REQUESTED;
DECLARE p_PROFORMA_CREDIT_ALLOWED_i CHAR InputRoot.JSON.Data.*[<].PROFORMA_CREDIT_ALLOWED;
DECLARE p_ENTRY_USER_i CHAR InputRoot.JSON.Data.*[<].ENTRY_USER;
DECLARE p_ENTRY_DATETIME_i TIMESTAMP CAST(InputRoot.JSON.Data.*[<].ENTRY_DATETIME AS TIMESTAMP FORMAT pattern);
DECLARE p_RGA_NUMBER_i CHAR InputRoot.JSON.Data.*[<].RGA_NUMBER;
DECLARE p_PROBLEM_CODE_i CHAR InputRoot.JSON.Data.*[<].PROBLEM_CODE;
DECLARE p_PROBLEM_AREA_CODE_i CHAR InputRoot.JSON.Data.*[<].PROBLEM_AREA_CODE;
DECLARE p_PROBLEM_CLASS_CODE_i CHAR InputRoot.JSON.Data.*[<].PROBLEM_CLASS_CODE;
DECLARE p_CLASS_COUNT_i DECIMAL CAST(InputRoot.JSON.Data.*[<].CLASS_COUNT AS DECIMAL);
DECLARE p_CUSTOMER_PAYS_FREIGHT_FLAG_i CHAR InputRoot.JSON.Data.*[<].CUSTOMER_PAYS_FREIGHT_FLAG;
DECLARE p_CUSTOMER_PAYS_RESTOCK_FLAG_i CHAR InputRoot.JSON.Data.*[<].CUSTOMER_PAYS_RESTOCK_FLAG;
DECLARE p_CUST_PAYS_HANDLING_FLAG_i CHAR InputRoot.JSON.Data.*[<].CUSTOMER_PAYS_HANDLING_FLAG;
DECLARE p_BOL_NUMBER_i CHAR InputRoot.JSON.Data.*[<].BOL_NUMBER;
DECLARE p_PRO_NUMBER_i CHAR InputRoot.JSON.Data.*[<].PRO_NUMBER;
DECLARE p_COMMENTS1_i CHAR InputRoot.JSON.Data.*[<].COMMENTS1;
DECLARE p_COMMENTS2_i CHAR InputRoot.JSON.Data.*[<].COMMENTS2;
DECLARE p_RETURN_DSC_i CHAR InputRoot.JSON.Data.*[<].RETURN_DSC;
DECLARE p_RETURN_SCAC_i CHAR InputRoot.JSON.Data.*[<].RETURN_SCAC;
DECLARE p_RETURN_CARRIER_i CHAR InputRoot.JSON.Data.*[<].RETURN_CARRIER;
DECLARE p_REFER_NUMBER_i CHAR InputRoot.JSON.Data.*[<].REFER_NUMBER;
DECLARE p_GL_ACCT_i CHAR InputRoot.JSON.Data.*[<].GL_ACCT;
DECLARE p_PROMOTION_CODE_i CHAR InputRoot.JSON.Data.*[<].PROMOTION_CODE;
DECLARE p_FREIGHT_TERMS_i CHAR InputRoot.JSON.Data.*[<].FREIGHT_TERMS;
DECLARE p_PROB_SOURCE_USERID_i CHAR InputRoot.JSON.Data.*[<].PROB_SOURCE_USERID;
DECLARE p_AUTHORIZATION_TEXT_i CHAR InputRoot.JSON.Data.*[<].AUTHORIZATION_TEXT;
DECLARE p_SHIPPING_AMOUNT_i DECIMAL CAST(InputRoot.JSON.Data.*[<].SHIPPING_AMOUNT AS DECIMAL);
DECLARE p_FIELD_CREDIT_MEMO_FLAG_i CHAR InputRoot.JSON.Data.*[<].FIELD_CREDIT_MEMO_FLAG;
DECLARE p_REFERENCE_NAME_i CHAR InputRoot.JSON.Data.*[<].REFERENCE_NAME;
DECLARE p_REFERENCE_NUMBER_i CHAR InputRoot.JSON.Data.*[<].REFERENCE_NUMBER;
DECLARE p_ADD_CHG_DEL_i CHAR InputRoot.JSON.Data.*[<].ADD_CHG_DEL;
DECLARE p_TIME_STAMP_i TIMESTAMP CAST(InputRoot.JSON.Data.*[<].TIME_STAMP AS TIMESTAMP FORMAT pattern);
DECLARE p_POST_TRIGGER_i CHAR InputRoot.JSON.Data.*[<].POST_TRIGGER;
DECLARE p_PROCESSED_FLAG_i CHAR InputRoot.JSON.Data.*[<].PROCESSED_FLAG;
DECLARE p_PROBLEM_PREFIX_i CHAR InputRoot.JSON.Data.*[<].PROBLEM_PREFIX;
DECLARE p_CONTACT_NAME_i CHAR InputRoot.JSON.Data.*[<].CONTACT_NAME;
DECLARE p_PHONE_NUMBER_i CHAR InputRoot.JSON.Data.*[<].PHONE_NUMBER;
DECLARE p_FAX_NUMBER_i CHAR InputRoot.JSON.Data.*[<].FAX_NUMBER;
DECLARE p_EMAIL_ADDRESS_i CHAR InputRoot.JSON.Data.*[<].EMAIL_ADDRESS;
DECLARE p_SW_EMAIL_ADDRESS_i CHAR InputRoot.JSON.Data.*[<].SW_EMAIL_ADDRESS;
--Master Table
SET Environment.Variable.Master[INC].p_SUGAR_REF_NUMBER_i= p_SUGAR_REF_NUMBER_i;
SET Environment.Variable.Master[INC].p_PROBLEM_NUMBER_i= p_PROBLEM_NUMBER_i;
SET Environment.Variable.Master[INC].p_SB_TYPE_i= p_SB_TYPE_i;
SET Environment.Variable.Master[INC].p_PROBLEM_STATUS_i= p_PROBLEM_STATUS_i;
SET Environment.Variable.Master[INC].p_INVOICE_NUMBER_i = p_INVOICE_NUMBER_i;
SET Environment.Variable.Master[INC].p_INVOICE_DATE_i = p_INVOICE_DATE_i;
SET Environment.Variable.Master[INC].p_CUSTOMER_PO_NUMBER_i = p_CUSTOMER_PO_NUMBER_i;
SET Environment.Variable.Master[INC].p_CUSTOMER_SHIP_TO_i = p_CUSTOMER_SHIP_TO_i;
SET Environment.Variable.Master[INC].p_CUSTOMER_BILL_TO_i = p_CUSTOMER_BILL_TO_i;
SET Environment.Variable.Master[INC].p_CUSTOMER_REBILL_i = p_CUSTOMER_REBILL_i;
SET Environment.Variable.Master[INC].p_SCAC_i = p_SCAC_i;
SET Environment.Variable.Master[INC].p_CARRIER_NAME_i = p_CARRIER_NAME_i;
SET Environment.Variable.Master[INC].p_STORE_POS_NUMBER_i= p_STORE_POS_NUMBER_i;
SET Environment.Variable.Master[INC].p_FIELD_CREDIT_FLAG_i= p_FIELD_CREDIT_FLAG_i;
SET Environment.Variable.Master[INC].p_BLANKET_TYPE_i= p_BLANKET_TYPE_i;
SET Environment.Variable.Master[INC].p_CREDIT_TYPE_i= p_CREDIT_TYPE_i;
SET Environment.Variable.Master[INC].p_RETURN_FLAG_i= p_RETURN_FLAG_i;
SET Environment.Variable.Master[INC].p_CREDIT_FLAG_i= p_CREDIT_FLAG_i;
SET Environment.Variable.Master[INC].p_SW_INVOICE_NUMBER_i= p_SW_INVOICE_NUMBER_i;
SET Environment.Variable.Master[INC].p_ORIGINAL_SHIPPING_LOCATION_i = p_ORIGINAL_SHIPPING_LOCATION_i;
SET Environment.Variable.Master[INC].p_PROFORMA_CREDIT_REQUESTED_i= p_PROFORMA_CREDIT_REQUESTED_i;
SET Environment.Variable.Master[INC].p_PROFORMA_CREDIT_ALLOWED_i= p_PROFORMA_CREDIT_ALLOWED_i;
SET Environment.Variable.Master[INC].p_ENTRY_USER_i= p_ENTRY_USER_i;
SET Environment.Variable.Master[INC].p_ENTRY_DATETIME_i=p_ENTRY_DATETIME_i;
SET Environment.Variable.Master[INC].p_RGA_NUMBER_i= p_RGA_NUMBER_i;
SET Environment.Variable.Master[INC].p_PROBLEM_CODE_i= p_PROBLEM_CODE_i;
SET Environment.Variable.Master[INC].p_PROBLEM_AREA_CODE_i = p_PROBLEM_AREA_CODE_i;
SET Environment.Variable.Master[INC].p_PROBLEM_CLASS_CODE_i= p_PROBLEM_CLASS_CODE_i;
SET Environment.Variable.Master[INC].p_CLASS_COUNT_i= p_CLASS_COUNT_i;
SET Environment.Variable.Master[INC].p_CUSTOMER_PAYS_FREIGHT_FLAG_i = p_CUSTOMER_PAYS_FREIGHT_FLAG_i;
SET Environment.Variable.Master[INC].p_CUSTOMER_PAYS_RESTOCK_FLAG_i = p_CUSTOMER_PAYS_RESTOCK_FLAG_i;
SET Environment.Variable.Master[INC].p_CUST_PAYS_HANDLING_FLAG_i= p_CUST_PAYS_HANDLING_FLAG_i;
SET Environment.Variable.Master[INC].p_BOL_NUMBER_i= p_BOL_NUMBER_i;
SET Environment.Variable.Master[INC].p_PRO_NUMBER_i= p_PRO_NUMBER_i;
SET Environment.Variable.Master[INC].p_COMMENTS1_i= p_COMMENTS1_i;
SET Environment.Variable.Master[INC].p_COMMENTS2_i= p_COMMENTS2_i;
SET Environment.Variable.Master[INC].p_RETURN_DSC_i= p_RETURN_DSC_i;
SET Environment.Variable.Master[INC].p_RETURN_SCAC_i= p_RETURN_SCAC_i;
SET Environment.Variable.Master[INC].p_RETURN_CARRIER_i= p_RETURN_CARRIER_i;
SET Environment.Variable.Master[INC].p_REFER_NUMBER_i= p_REFER_NUMBER_i;
SET Environment.Variable.Master[INC].p_GL_ACCT_i= p_GL_ACCT_i;
SET Environment.Variable.Master[INC].p_PROMOTION_CODE_i= p_PROMOTION_CODE_i;
SET Environment.Variable.Master[INC].p_FREIGHT_TERMS_i = p_FREIGHT_TERMS_i;
SET Environment.Variable.Master[INC].p_PROB_SOURCE_USERID_i= p_PROB_SOURCE_USERID_i;
SET Environment.Variable.Master[INC].p_AUTHORIZATION_TEXT_i= p_AUTHORIZATION_TEXT_i;
SET Environment.Variable.Master[INC].p_SHIPPING_AMOUNT_i = p_SHIPPING_AMOUNT_i;
SET Environment.Variable.Master[INC].p_FIELD_CREDIT_MEMO_FLAG_i= p_FIELD_CREDIT_MEMO_FLAG_i;
SET Environment.Variable.Master[INC].p_REFERENCE_NAME_i = p_REFERENCE_NAME_i;
SET Environment.Variable.Master[INC].p_REFERENCE_NUMBER_i = p_REFERENCE_NUMBER_i;
SET Environment.Variable.Master[INC].p_ADD_CHG_DEL_i= p_ADD_CHG_DEL_i;
SET Environment.Variable.Master[INC].p_TIME_STAMP_i = p_TIME_STAMP_i;
SET Environment.Variable.Master[INC].p_POST_TRIGGER_i= p_POST_TRIGGER_i;
SET Environment.Variable.Master[INC].p_PROCESSED_FLAG_i= p_PROCESSED_FLAG_i;
SET Environment.Variable.Master[INC].p_PROBLEM_PREFIX_i= p_PROBLEM_PREFIX_i;
SET Environment.Variable.Master[INC].p_CONTACT_NAME_i= p_CONTACT_NAME_i;
SET Environment.Variable.Master[INC].p_PHONE_NUMBER_i= p_PHONE_NUMBER_i;
SET Environment.Variable.Master[INC].p_FAX_NUMBER_i= p_FAX_NUMBER_i;
SET Environment.Variable.Master[INC].p_EMAIL_ADDRESS_i= p_EMAIL_ADDRESS_i;
SET Environment.Variable.Master[INC].p_SW_EMAIL_ADDRESS_i= p_SW_EMAIL_ADDRESS_i;
set p_master_io.Row[INC] = Environment.Variable.Master[INC];
set INC = INC+1;
END WHILE;
--Fields on Child Table
SET PCNT =CARDINALITY(InputRoot.JSON.Data.*[<].*[<].*[]);
SET INC = 1;
WHILE INC<=PCNT DO
DECLARE p_SUGAR_REF_NUMBER_I CHAR InputRoot.JSON.Data.CRM_INT_MASTER.CRM_INT_DETAIL.Item[INC].SUGAR_REF_NUMBER;
DECLARE p_PROBLEM_NUMBER_I CHAR InputRoot.JSON.Data.CRM_INT_MASTER.CRM_INT_DETAIL.Item[INC].PROBLEM_NUMBER;
DECLARE p_LINE_NUMBER_I CHAR InputRoot.JSON.Data.CRM_INT_MASTER.CRM_INT_DETAIL.Item[INC].LINE_NUMBER;
DECLARE p_LINE_SEQUENCE_I CHAR InputRoot.JSON.Data.CRM_INT_MASTER.CRM_INT_DETAIL.Item[INC].LINE_SEQUENCE;
DECLARE p_LINE_STATUS_I CHAR InputRoot.JSON.Data.CRM_INT_MASTER.CRM_INT_DETAIL.Item[INC].LINE_STATUS;
DECLARE p_INVOICE_NUMBER_I DECIMAL CAST(InputRoot.JSON.Data.CRM_INT_MASTER.CRM_INT_DETAIL.Item[INC].INVOICE_NUMBER AS DECIMAL);
DECLARE p_INVOICE_ROW_POS_I DECIMAL CAST(InputRoot.JSON.Data.CRM_INT_MASTER.CRM_INT_DETAIL.Item[INC].INVOICE_ROW_POS AS DECIMAL);
DECLARE p_INVOICE_ROW_SUB_POS_I DECIMAL CAST(InputRoot.JSON.Data.CRM_INT_MASTER.CRM_INT_DETAIL.Item[INC].INVOICE_ROW_SUB_POS AS DECIMAL);
DECLARE p_INVOICE_ROW_SEQUENCE_I DECIMAL CAST(InputRoot.JSON.Data.CRM_INT_MASTER.CRM_INT_DETAIL.Item[INC].INVOICE_ROW_SEQUENCE AS DECIMAL);
DECLARE p_PROD_ORD_BY_CUSTOMER_I CHAR InputRoot.JSON.Data.CRM_INT_MASTER.CRM_INT_DETAIL.Item[INC].PROD_ORD_BY_CUSTOMER;
DECLARE p_QTY_ORD_BY_CUSTOMER_I DECIMAL CAST(InputRoot.JSON.Data.CRM_INT_MASTER.CRM_INT_DETAIL.Item[INC].QTY_ORD_BY_CUSTOMER AS DECIMAL);
DECLARE p_UOM_ORD_BY_CUSTOMER_I CHAR InputRoot.JSON.Data.CRM_INT_MASTER.CRM_INT_DETAIL.Item[INC].UOM_ORD_BY_CUSTOMER;
DECLARE p_PRICE_ORD_BY_CUSTOMER_I DECIMAL CAST(InputRoot.JSON.Data.CRM_INT_MASTER.CRM_INT_DETAIL.Item[INC].PRICE_ORD_BY_CUSTOMER AS DECIMAL);
DECLARE p_MANUAL_PRICE_ORD_BY_CUST_I CHAR InputRoot.JSON.Data.CRM_INT_MASTER.CRM_INT_DETAIL.Item[INC].MANUAL_PRICE_ORD_BY_CUSTOMER;
DECLARE p_PROD_RCV_BY_CUSTOMER_I CHAR InputRoot.JSON.Data.CRM_INT_MASTER.CRM_INT_DETAIL.Item[INC].PROD_RCV_BY_CUSTOMER;
DECLARE p_QTY_RCV_BY_CUSTOMER_I DECIMAL CAST(InputRoot.JSON.Data.CRM_INT_MASTER.CRM_INT_DETAIL.Item[INC].QTY_RCV_BY_CUSTOMER AS DECIMAL);
DECLARE p_UOM_RCV_BY_CUSTOMER_I CHAR InputRoot.JSON.Data.CRM_INT_MASTER.CRM_INT_DETAIL.Item[INC].UOM_RCV_BY_CUSTOMER;
DECLARE p_PRICE_RCV_BY_CUSTOMER_I DECIMAL CAST(InputRoot.JSON.Data.CRM_INT_MASTER.CRM_INT_DETAIL.Item[INC].PRICE_RCV_BY_CUSTOMER AS DECIMAL);
DECLARE p_MANUAL_PRICE_RCV_BY_CUST_I CHAR InputRoot.JSON.Data.CRM_INT_MASTER.CRM_INT_DETAIL.Item[INC].MANUAL_PRICE_RCV_BY_CUSTOMER;
DECLARE p_PROD_RET_BY_CUSTOMER_I CHAR InputRoot.JSON.Data.CRM_INT_MASTER.CRM_INT_DETAIL.Item[INC].PROD_RET_BY_CUSTOMER;
DECLARE p_QTY_RET_BY_CUSTOMER_I CHAR InputRoot.JSON.Data.CRM_INT_MASTER.CRM_INT_DETAIL.Item[INC].QTY_RET_BY_CUSTOMER;
DECLARE p_UOM_RET_BY_CUSTOMER_I CHAR InputRoot.JSON.Data.CRM_INT_MASTER.CRM_INT_DETAIL.Item[INC].UOM_RET_BY_CUSTOMER;
DECLARE p_PRICE_RET_BY_CUSTOMER_I CHAR InputRoot.JSON.Data.CRM_INT_MASTER.CRM_INT_DETAIL.Item[INC].PRICE_RET_BY_CUSTOMER;
DECLARE p_MANUAL_PRICE_RET_BY_CUST_I CHAR InputRoot.JSON.Data.CRM_INT_MASTER.CRM_INT_DETAIL.Item[INC].MANUAL_PRICE_RET_BY_CUSTOMER;
DECLARE p_PRINT_FLAG_I CHAR InputRoot.JSON.Data.CRM_INT_MASTER.CRM_INT_DETAIL.Item[INC].PRINT_FLAG;
DECLARE p_PASS_THRU_FLAG_I CHAR InputRoot.JSON.Data.CRM_INT_MASTER.CRM_INT_DETAIL.Item[INC].PASS_THRU_FLAG;
DECLARE p_LINE_TYPE_I CHAR InputRoot.JSON.Data.CRM_INT_MASTER.CRM_INT_DETAIL.Item[INC].LINE_TYPE;
DECLARE p_LOOSE_UNITS_FLAG_I CHAR InputRoot.JSON.Data.CRM_INT_MASTER.CRM_INT_DETAIL.Item[INC].LOOSE_UNITS_FLAG;
DECLARE p_TIME_STAMP_I TIMESTAMP CAST(InputRoot.JSON.Data.CRM_INT_MASTER.CRM_INT_DETAIL.Item[INC].TIME_STAMP AS TIMESTAMP FORMAT pattern);
DECLARE p_PROCESSED_FLAG_I CHAR InputRoot.JSON.Data.CRM_INT_MASTER.CRM_INT_DETAIL.Item[INC].PROCESSED_FLAG;
SET Environment.Variable.Detail.Item[INC].p_SUGAR_REF_NUMBER_I= p_SUGAR_REF_NUMBER_I;
SET Environment.Variable.Detail.Item[INC].p_PROBLEM_NUMBER_I= p_PROBLEM_NUMBER_I;
SET Environment.Variable.Detail.Item[INC].p_p_LINE_NUMBER_I= p_LINE_NUMBER_I;
SET Environment.Variable.Detail.Item[INC].p_LINE_SEQUENCE_I= p_LINE_SEQUENCE_I;
SET Environment.Variable.Detail.Item[INC].p_LINE_STATUS_I= p_LINE_STATUS_I;
SET Environment.Variable.Detail.Item[INC].p_INVOICE_NUMBER_I= p_INVOICE_NUMBER_I;
SET Environment.Variable.Detail.Item[INC].p_INVOICE_ROW_POS_I= p_INVOICE_ROW_POS_I;
SET Environment.Variable.Detail.Item[INC].p_INVOICE_ROW_SUB_POS_I= p_INVOICE_ROW_SUB_POS_I;
SET Environment.Variable.Detail.Item[INC].p_INVOICE_ROW_SEQUENCE_I= p_INVOICE_ROW_SEQUENCE_I;
SET Environment.Variable.Detail.Item[INC].p_PROD_ORD_BY_CUSTOMER_I=p_PROD_ORD_BY_CUSTOMER_I;
SET Environment.Variable.Detail.Item[INC].p_QTY_ORD_BY_CUSTOMER_I= p_QTY_ORD_BY_CUSTOMER_I;
SET Environment.Variable.Detail.Item[INC].p_UOM_ORD_BY_CUSTOMER_I= p_UOM_ORD_BY_CUSTOMER_I;
SET Environment.Variable.Detail.Item[INC].p_PRICE_ORD_BY_CUSTOMER_I= p_PRICE_ORD_BY_CUSTOMER_I;
SET Environment.Variable.Detail.Item[INC].p_MANUAL_PRICE_ORD_BY_CUST_I=p_MANUAL_PRICE_ORD_BY_CUST_I;
SET Environment.Variable.Detail.Item[INC].p_PROD_RCV_BY_CUSTOMER_I= p_PROD_RCV_BY_CUSTOMER_I;
SET Environment.Variable.Detail.Item[INC].p_QTY_RCV_BY_CUSTOMER_I= p_QTY_RCV_BY_CUSTOMER_I;
SET Environment.Variable.Detail.Item[INC].p_UOM_RCV_BY_CUSTOMER_I= p_UOM_RCV_BY_CUSTOMER_I;
SET Environment.Variable.Detail.Item[INC].p_PRICE_RCV_BY_CUSTOMER_I= p_PRICE_RCV_BY_CUSTOMER_I;
SET Environment.Variable.Detail.Item[INC].p_MANUAL_PRICE_RCV_BY_CUST_I= p_MANUAL_PRICE_RCV_BY_CUST_I;
SET Environment.Variable.Detail.Item[INC].p_PROD_RET_BY_CUSTOMER_I= p_PROD_RET_BY_CUSTOMER_I;
SET Environment.Variable.Detail.Item[INC].p_QTY_RET_BY_CUSTOMER_I=p_QTY_RET_BY_CUSTOMER_I;
SET Environment.Variable.Detail.Item[INC].p_UOM_RET_BY_CUSTOMER_I= p_UOM_RET_BY_CUSTOMER_I;
SET Environment.Variable.Detail.Item[INC].p_PRICE_RET_BY_CUSTOMER_I= p_PRICE_RET_BY_CUSTOMER_I;
SET Environment.Variable.Detail.Item[INC].p_MANUAL_PRICE_RET_BY_CUST_I= p_MANUAL_PRICE_RET_BY_CUST_I;
SET Environment.Variable.Detail.Item[INC].p_PRINT_FLAG_I= p_PRINT_FLAG_I;
SET Environment.Variable.Detail.Item[INC].p_PASS_THRU_FLAG_I= p_PASS_THRU_FLAG_I;
SET Environment.Variable.Detail.Item[INC].p_LINE_TYPE_I= p_LINE_TYPE_I;
SET Environment.Variable.Detail.Item[INC].p_LOOSE_UNITS_FLAG_I= p_LOOSE_UNITS_FLAG_I;
SET Environment.Variable.Detail.Item[INC].p_TIME_STAMP_I= p_TIME_STAMP_I;
SET Environment.Variable.Detail.Item[INC].p_PROCESSED_FLAG_I= p_PROCESSED_FLAG_I;
set p_det_io.Row[INC] = Environment.Variable.Detail.Item[INC];
SET INC = INC +1;
END WHILE;
Call sugar_etrac_interface (p_master_io.Row[], p_det_io.Row[], p_response_o.Row[]);
RETURN TRUE;
END;
CREATE PROCEDURE sugar_etrac_interface()
LANGUAGE DATABASE
DYNAMIC RESULT SETS 3
EXTERNAL NAME "etrac.crm_processing.sugar_etrac_interface";
CREATE PROCEDURE CopyMessageHeaders() BEGIN
DECLARE I INTEGER 1;
DECLARE J INTEGER;
SET J = CARDINALITY(InputRoot.*[]);
WHILE I < J DO
SET OutputRoot.*[I] = InputRoot.*[I];
SET I = I + 1;
END WHILE;
END;
CREATE PROCEDURE CopyEntireMessage() BEGIN
SET OutputRoot = InputRoot;
END;
END MODULE; |
|
Back to top |
|
 |
mqjeff |
Posted: Tue Feb 03, 2015 7:15 am Post subject: |
|
|
Grand Master
Joined: 25 Jun 2008 Posts: 17447
|
It doesn't work because you can't do that.
You have to change the stored procedure. |
|
Back to top |
|
 |
Vitor |
Posted: Tue Feb 03, 2015 7:17 am Post subject: |
|
|
 Grand High Poobah
Joined: 11 Nov 2005 Posts: 26093 Location: Texas, USA
|
nelson wrote: |
@Vitor. There is no way to achieve this? |
Unless someone knows different, with @mqjeff on this one. _________________ Honesty is the best policy.
Insanity is the best defence. |
|
Back to top |
|
 |
CAONIMA |
Posted: Tue Feb 03, 2015 8:18 am Post subject: |
|
|
Acolyte
Joined: 03 Dec 2014 Posts: 65
|
They probably cannot change the stored procedure.
Do you know how to define the %ROWTYPE in ESQL? |
|
Back to top |
|
 |
Vitor |
Posted: Tue Feb 03, 2015 8:22 am Post subject: |
|
|
 Grand High Poobah
Joined: 11 Nov 2005 Posts: 26093 Location: Texas, USA
|
CAONIMA wrote: |
Do you know how to define the %ROWTYPE in ESQL? |
If you tried reading the comments on this thread, you'd notice 2 things:
- %ROWTYPE is a ROW in ESQL
- ESQL does not allow a ROW type to be a parameter.
It's for this reason you've been advised (multiple times) to do it a different way. It will not work this way because that's not allowed. Or as my most worthy associate put it:
mqjeff wrote: |
It doesn't work because you can't do that. |
_________________ Honesty is the best policy.
Insanity is the best defence. |
|
Back to top |
|
 |
|