JDBC receiver adapter to call MS SQLServer stored procedure
Harold,
Could you please post/email ou IR details to call Stored procedure and the SP itself.
It will greately help me in my next senario.
Thanks
Venu
[email protected]
Hi,
Go thru this blog to get the feel of this-
/people/siva.maranani/blog/2005/05/21/jdbc-stored-procedures
http://help.sap.com/saphelp_nw2004s/helpdata/en/22/b4d13b633f7748b4d34f3191529946/content.htm
Regards,
Moorthy
Similar Messages
-
JDBC receiver adapter to call MS SQLServer stored procedure with parameters
We are trying to use the JDBC receiver adapter to call a stored procedure in MS SQLServer with parameters. According to the help documentation for the JDBC receiver adapter for action=EXECUTE, "The elements within the stored procedure are interpreted as parameters" and "The parameter names must be identical to those of the stored procedure definition". The parameters within a MS SQLServer stored procedure are required to begin with the '@' symbol. The element names within a XML document i.e. used to call the stored procedure can not contain a special character such as '@' in the first position. For all of the tests we have done where the parameter name in the XML document omits the '@' character, the parameters are not being received by the stored procedure. Is there a way around this problem?
Thank you,
HaroldHello Harold - I am facing the EXACTLY SAME problem.Pls let me know how did you fix this problem ?
This is the message I am passing on to the DB SP:
<?xml version="1.0" encoding="UTF-8"?>
<MRIRequestInbound>
<StatementName>
<prc_FC_InsertStagingJournalEntries action="EXECUTE"/>
<JournalData isInput="true" type="STRING">
<NewDataSet><Table ITEM = "" ENTITYID = "" PERIOD = "" ACCTNUM = "" DEPARTMENT = "" JOBCODE = "" AMT = "" REF = "" DESCRPN = "" ENTRDATE = "" BASIS = " " BALFOR = "N" REQUESTNUM = "" ACCTNAME = "" TYPE = "" DESCRPTN = "" GDEP_DESCRPN = "" GJOB_DESCRPTN = "" JOBTYPE = "" /></NewDataSet>
</JournalData>
</StatementName>
</MRIRequestInbound>
Out of which,
<NewDataSet> tag contains the value of the parameter in the SP. So, my value to the SP's parameter is :
<NewDataSet><Table ITEM = "" ENTITYID = "" PERIOD = "" ACCTNUM = "" DEPARTMENT = "" JOBCODE = "" AMT = "" REF = "" DESCRPN = "" ENTRDATE = "" BASIS = " " BALFOR = "N" REQUESTNUM = "" ACCTNAME = "" TYPE = "" DESCRPTN = "" GDEP_DESCRPN = "" GJOB_DESCRPTN = "" JOBTYPE = "" /></NewDataSet>
Any clue ?
Cheers,
Amrish. -
JDBC Receiver Adapter - Call Stored Procedure
Hi,
I am using a JDBC receiver adapter to call a stored procedure in oracle.
My target structure looks like:-
<STATEMENT>
<storedProcedureName action="EXECUTE">
<table>realStoredProcedureName</table>
<serialDate hasQuot="NO" isInputType="true" type="date">TO_DATE('07-15-2008 08:00:11','MM-DD-YYYY HH24:MI:SS')</serialDate>
<serialNo isInputType="true" type="NUMERIC">123456</serialNo>
</storedProcedureName>
</STATEMENT>
The storedprocedure takes two input values and has one output value.
The first parameter of the stored procedure is serialDate and the second input parameter is serialNo.
I am getting an exception:-
<SAP:AdditionalText>com.sap.engine.interfaces.messaging.api.exception.MessagingException: Error processing request in sax parser: Error when executing statement for table/stored proc. 'storedProcedureName' (structure 'STATEMENT'): java.lang.NumberFormatException: For input string: "TO_DATE('07"</SAP:AdditionalText>
Any ideas how to fix this issue.
Thanks.
KrishnanHi Krishnan,
<STATEMENT>
<storedProcedureName action="EXECUTE">
<table>realStoredProcedureName</table>
<serialDate hasQuot="NO" isInputType="true" type="date">TO_DATE('07-15-2008 08:00:11','MM-DD-YYYY HH24:MI:SS')</serialDate>
<serialNo isInputType="true" type="NUMERIC">123456</serialNo>
</storedProcedureName>
</STATEMENT>
The storedprocedure takes two input values and has one output value.
The first parameter of the stored procedure is serialDate and the second input parameter is serialNo.
I am getting an exception:-
<SAP:AdditionalText>com.sap.engine.interfaces.messaging.api.exception.MessagingException: Error processing request in sax parser: Error when executing statement for table/stored proc. 'storedProcedureName' (structure 'STATEMENT'): java.lang.NumberFormatException: For input string: "TO_DATE('07"</SAP:AdditionalText>
In the XML structure you cannot use TO_DATE function . Please pass the DATE in the correct format which the Stored procedure can accept . Get the out put what you expected from TO_DATE function and use that value in the structure.
Regards,
Kishore -
Error when call sql server stored procedure
hello everybody,
I'm working with MII 14 and I want call a SqlServer stored procedure provided from my customer.
I configured a FixedQuery like this:
[dbo].[spElencoEntrateUscite_AV] @delta = 0, @daquando='130101', @CompanyID='000002', @Elenco = @MyCursor OUTPUT
but when i test the query i have back the error:
com.microsoft.sqlserver.jdbc.SQLServerException: Must declare the scalar variable "@MyCursor".
I tried also to set the query like this:
[dbo].[spElencoEntrateUscite_AV]
and pass Parameters:
0
130101
000002
OUTPUT
but i have this error:
com.microsoft.sqlserver.jdbc.SQLServerException: Procedure or function 'spElencoEntrateUscite_AV' expects parameter '@Elenco', which was not supplied.
Any suggestion?
thanks in advance
Alexhello Kuldeep!
yes i solved.
I used fixed query in MII and declared the cursor:
example:
DECLARE @MyCursor CURSOR
EXEC [dbo].[spElencoEntrateUscite_AV] @delta = 0,@daquando='[Param.1]', @CompanyID='[Param.2]', @Elenco = @MyCursor OUTPUT
I hope this may help u
Alessandro -
MS SQL Server Stored Procedure - JDBC Receiver Adapter
Hi,
I am calling a stored procedure in MS SQL Server using the JDBC Receiver Adapter. The stored procedure takes 1 input parameter which is a VARCHAR field. The stored procedure's input parameter and the input parameter are identical. My target structure looks like:-
<STATEMENT>
<storedProcedureName action="EXECUTE">
<TABLE>SP_REPROCESS</TABLE>
<input1 isInput="true" type="VARCHAR">1</input1>
</storedProcedureName>
</STATEMENT>
I am getting the following error:-
Message processing failed. Cause: com.sap.engine.interfaces.messaging.api.exception.MessagingException: Error processing request in sax parser: Error when executing statement for table/stored proc. 'SP_REPROCESS' (structure 'STATEMENT'): com.microsoft.sqlserver.jdbc.SQLServerException: String or binary data would be truncated.
Any suggestions.
Thanks.
Krishnan
Edited by: Krishnan on Jul 17, 2008 7:07 AM
Edited by: Krishnan on Jul 17, 2008 7:07 AM
Edited by: Krishnan on Jul 17, 2008 7:48 AMhi,
can anyone help me to fix this issue.
In MONI, i am able to see the output xml as :-
<?xml version="1.0" encoding="UTF-8"?>
<ns0:REPROCESS_DATA_MT xmlns:ns0="http://abc.com/db/integration">
<STATEMENT>
<storedProcedureName action="EXECUTE">
<TABLE>SP_REPROCESS</TABLE>
<input1 isInput="true" type="VARCHAR">1</input1>
</storedProcedureName>
</STATEMENT>
</ns0:REPROCESS_DATA_MT>
in the communication channel monitoring --> in the JDBC receiver channel, I am getting the following error:-
Message processing failed. Cause: com.sap.engine.interfaces.messaging.api.exception.MessagingException: Error processing request in sax parser: Error when executing statement for table/stored proc. 'SP_REPROCESS' (structure 'STATEMENT'): com.microsoft.sqlserver.jdbc.SQLServerException: String or binary data would be truncated.
thanks.
krishnan -
Transaction Handling - JDBC Receiver Adapter - Multiple SP Calls
Hello,
I have the following scenario:
I send an XML-SQL structure with multiple statment elements (each of them calling a different stored procedure). A stored procedure raises an error back to the JDBC Receiver Adapter in case of error.
Is it possible to have transaction handling in the JDBC Receiver to ensure:
- Commit only after ALL stored procedures where succesful (no error risen during calls)
- Rollback of ALL already called stored procedures in case an error has been risen
How can I implement these requirements in the JDBC Receiver Adapter?One more comment, I have found the following info for JDBC Drivers:
<i> "JDBC driver's default is to autocommit, meaning that the result of every SQL statement is permanent as soon as it is executed. This is why the course hasn't had to be concerned with transactions so far, and is perfectly acceptable in many cases."</i>
So I think that each SP-Call is automatically commited in case autocommit on JDBC Driver Level is set to "true". Does anyone know where I can change these settings? Directly on JDBC Receiver Adapter or do I have to go to Visual Admin for those changes? -
How to modify oracle stored procedure for JDBC Receiver Adapter?
Hi all.
This is Urgent.
Scenario is
SELECT a TABLE with procedure and update column with it,
then send data to SAP System with RFC Adapter.
When I executed a sync bpm, scenario was finished internal error.
Pls, let me know how to correct procedure using JDBC Receiver Adapter?
Regrds all.
Procedure Code -
SET SERVEROUTPUT ON
CREATE OR REPLACE PROCEDURE zwtn2
IS
v_seller_company wtnivhd.seller_company%TYPE;
v_invoice_no wtnivhd.invoice_no%TYPE;
v_report_date wtnivhd.report_date%TYPE;
v_customs_date wtnivhd.customs_date%TYPE;
v_ap_post_date wtnivhd.ap_post_date%TYPE;
v_gr_date wtnivhd.gr_date%TYPE;
CURSOR l_cursor IS
SELECT seller_company,
invoice_no,
report_date,
customs_date,
ap_post_date,
gr_date
FROM wtnivhd
WHERE wtn_send_flag = 'N'
AND rownum < 31
FOR UPDATE;
BEGIN
OPEN l_cursor;
LOOP
FETCH l_cursor
INTO v_seller_company,
v_invoice_no,
v_report_date,
v_customs_date,
v_ap_post_date,
v_gr_date;
EXIT WHEN l_cursor%NOTFOUND;
UPDATE wtnivhd
SET wtn_send_flag = 'Y'
WHERE CURRENT OF l_cursor;
END LOOP;
CLOSE l_cursor;
END zwtn2;Hi Alex,
plz have a look to Runtime Workbench / Adapter Monitoring to find an error message.
Regards,
Udo -
JDBC receiver adapter for AS400-query time out due to Escape Symbol
Hello,
I am uisng JDBC receiver adapter for AS 400, When I execute query, the query needs to have arguments in the open and close single ticks (' 12345' )
My XML pay load looks like this, which is RFC sender. Look at dcudcstmr in <i><b>(' 838912')</b></i>. When receiver gets this message the ' (single quotes are disappeared.
<?xml version="1.0" encoding="UTF-8" ?>
- <ns1:MT_Cma_Customer_Select_Request xmlns:ns1="http://freemanco.com/xi/Get_Customer">
- <Statement>
- <LawsonCustomer action="SQL_QUERY">
<access>select f1.DACMCMPNY from sap.sapcustvew f1, sap.sapcustvew f2 where f2.dcudcstmr in <i><b>(' 838912')</b></i> and (f1.dcudcstmr=f2.dcudcstmr or f2.komaster=f1.dcudcstmr)</access>
</LawsonCustomer>
</Statement>
</ns1:MT_Cma_Customer_Select_Request>
On the Receiver JDBC adapter I have tried with different combinations of Escape Symbol for Aposrophe as follows
<b> \
'</b>
As you know this is related to epcape character, I get following error all the time. Looks like the query is not able to execute in the specified time. My question is how do I get single quote as part of query.
<b>select f1.DACMCMPNY from sap.sapcustvew f1, sap.sapcustvew f2 where f2.dcudcstmr in ( 100001) and (f1.dcudcstmr=f2.dcudcstmr or f2.komaster=f1.dcudcstmr) 2007-09-20 15:56:42 Error Unable to execute statement for table or stored procedure. 'LawsonCustomer' (Structure 'Statement') due to java.sql.SQLException:
[SQL0666] Estimated query processing time 13766 exceeds limit 8000. 2007-09-20 15:56:42 Error MP: exception caught with cause com.sap.aii.af.ra.ms.api.RecoverableException: Error processing request in sax parser: Error when executing statement for table/stored proc. 'LawsonCustomer' (structure 'Statement'): java.sql.SQLException:
[SQL0666] Estimated query processing time 13766 exceeds limit 8000. 2007-09-20 15:56:42 Error Exception caught by adapter framework: Error processing request in sax parser: Error when executing statement for table/stored proc. 'LawsonCustomer' (structure 'Statement'): java.sql.SQLException:
[SQL0666] Estimated query processing time 13766 exceeds limit 8000. 2007-09-20 15:56:42 Error Delivery of the message to the application using connection JDBC_http://sap.com/xi/XI/System failed, due to: com.sap.aii.af.ra.ms.api.RecoverableException: Error processing request in sax parser: Error when executing statement for table/stored proc. 'LawsonCustomer' (structure 'Statement'): java.sql.SQLException:
[SQL0666] Estimated query processing time 13766 exceeds limit 8000.. Setting message to status failed. 2007-09-20 15:56:42 Error The message status set to FAIL. 2007-09-20 15:56:42 Error Returning synchronous error message to calling application: com.sap.aii.af.ra.ms.api.RecoverableException: Error processing request in sax parser: Error when executing statement for table/stored proc. 'LawsonCustomer' (structure 'Statement'): java.sql.SQLException:
[SQL0666] Estimated query processing time 13766 exceeds limit 8000</b>
Any feedback or helpfull tips appreciated.
Thank you,
BalajiRaj,
Thank you for the reponse. I am using UDF on sender to generate sql statement as you see in sender XML message. After the message reaching receiver, gets executed but no response from AS400 becasue of missing single quotes in the sql query executed.
Sender XML sends
<access>select f1.DACMCMPNY from sap.sapcustvew f1, sap.sapcustvew f2 where f2.dcudcstmr in <u><b>(' 838912')</b></u> and (f1.dcudcstmr=f2.dcudcstmr or f2.komaster=f1.dcudcstmr)</access>
Receiver executes as
select f1.DACMCMPNY from sap.sapcustvew f1, sap.sapcustvew f2 where f2.dcudcstmr in ( <b><u>838912</u></b>) and (f1.dcudcstmr=f2.dcudcstmr or f2.komaster=f1.dcudcstmr)
As you see the single quotes are missing. Like I said in previous posting I tried with following Escape Symbol for Aposrophe.
Let me know if you need more information.
Thank you,
Balaji -
JDBC Receiver Adapter:Incorrect syntax near the keyword 'FROM'
Hi All,
I'm trying to get data from an SQL 2005 server using synchronous JDBC receiver adapter. I'm using PI 7.0. My outgoing message is as follows:
<?xml version="1.0" encoding="UTF-8" ?>
- <ns0:MT_IZIN_YUKU_REQ xmlns:ns0="http://holding.com/brd/">
- <STATEMENT>
- <ECZ_IZIN_YUKU action="SELECT">
<table>ECZ_IZIN_YUKU</table>
<access />
- <key>
<iy_yil compareOperation="GT">1900</iy_yil>
</key>
</ECZ_IZIN_YUKU>
</STATEMENT>
</ns0:MT_IZIN_YUKU_REQ>
I've found the following log in the trace file:
#1.5#0014C23BCFC900630000003D000013B000042740B0A858B1#1169058702046#/Applications/ExchangeInfrastructure/AdapterFramework/Services/ADAPTER/ADMIN/JDBC#sap.com/com.sap.aii.af.app#com.sap.aii.adapter.jdbc.XI2JDBC.onInternalMessageBinary(Message)#J2EE_GUEST#0####fa10f5f0a65811db84410014c23bcfc9#XI XI2JDBC[CC_JDBC_RECI_BRD_TO_BHT/HUMANIST/]_2574##0#0#Error#1#com.sap.aii.adapter.jdbc.XI2JDBC#Plain###Error processing request, rollback: Error processing request in sax parser: Error when executing statement for table/stored proc. 'ECZ_IZIN_YUKU' (structure 'STATEMENT'): com.microsoft.sqlserver.jdbc.SQLServerException: Incorrect syntax near the keyword 'FROM'.#
Thanks a lot..Hi,
Make sure the XML structure for your SQL statement is correct. Include the all the fields in the structure of XML.
<?xml version="1.0" encoding="UTF-8"?>
<ns0:MT_IZIN_YUKU_REQ xmlns:ns0="http://holding.com/brd/">
<STATEMENT>
<TECZ_IZIN_YUKU ACTION="SELECT">
<TABLE>ECZ_IZIN_YUKU</TABLE>
<ACCESS>
<EMPNO></EMPNO>
<NAME></NAME>
</ACCESS>
<KEY>
<iy_yil compareOperation="GT">1900</iy_yil>
</KEY>
</TABLENAME>
</STATEMENT>
</ns0:MT_IZIN_YUKU_REQ>
Best Regards -
Store procedure in JDBC Receiver adapter
Hi,
I am calling stored procedure using jdbc reeciver adapter . showing below error. In oracle database it is under functions not in the procedure. functions and stored procedure are same? is it should be create under procedure?
error message:
Message processing failed. Cause: com.sap.engine.interfaces.messaging.api.exception.MessagingException: Error processing request in sax parser: Error when executing statement for table/stored proc. 'GET_ALL_SALESREPINFO' (structure 'statement'): java.sql.SQLException: ORA-06550: line 1, column 7: PLS-00221: 'GET_ALL_SALESREPINFO' is not a procedure or is undefined ORA-06550: line 1, column 7: PL/SQL: Statement ignored
Sql query:
<?xml version="1.0" encoding="UTF-8"?>
<ns1:TerritoriesAndSalesRepsRequest xmlns:ns1="http://allergan.com/TerritoriesAndSalesRepsServiceList/1.0">
<statement><GET_ALL_SALESREPINFO action="EXECUTE">
<P_REP_LOGIN isInput="1" type="VARCHAR">sdfsfd</P_REP_LOGIN>
</GET_ALL_SALESREPINFO>
</statement></ns1:TerritoriesAndSalesRepsRequest>
oracle function
DECLARE
RETURN_VALUE BEACONDM_ETL.ACCT_TABLE_TYPE;
P_ZIP_CODE VARCHAR2(2000) := '-';
BEGIN
RETURN_VALUE := BEACONDM_ETL.GET_ACCT_INFO(P_ZIP_CODE);
--DBMS_OUTPUT.PUT('RETURN_VALUE: ');
--DBMS_OUTPUT.PUT_LINE(RETURN_VALUE);
DBMS_OUTPUT.PUT('P_ZIP_CODE: ');
DBMS_OUTPUT.PUT_LINE(P_ZIP_CODE);
END;
GO
DECLARE
RETURN_VALUE BEACONDM_ETL.SALESREP_TABLE_TYPE;
P_REP_LOGIN VARCHAR2(2000) := '-';
BEGIN
RETURN_VALUE := BEACONDM_ETL.GET_ALL_SALESREPINFO(P_REP_LOGIN);
--DBMS_OUTPUT.PUT('RETURN_VALUE: ');
--DBMS_OUTPUT.PUT_LINE(RETURN_VALUE);
DBMS_OUTPUT.PUT('P_REP_LOGIN: ');
DBMS_OUTPUT.PUT_LINE(P_REP_LOGIN);
END;
GO
Please send me if you have any blogs for calling stored procedure using jdbc receiver adapter.Hi Madhu,
>>>I am calling stored procedure using jdbc reeciver adapter . showing below error. In oracle database it is under functions not in the procedure. functions and stored procedure are same? is it should be create under procedure?
Of course there is difference between Oracle functions & Stored procedures:
Re: Populating DropdownByKey by accessing backend
As far as i know and have configured and used Stored procedures with the JDBC adapter, it can be used with Oracle stored procedures (leave it to the experts to comment on the Oracle functions part). So if you change it to stored procedure then it should work fine.
You may then define your Message structure as follows:
http://help.sap.com/saphelp_nw73/helpdata/en/44/7b72b2fde93673e10000000a114a6b/content.htm
And you may also like to refer the following blog on stored procedures:
PI JDBC Stored Procedure test scenario
Hope this helps. Regards, Gaurav -
Error while updating database using jdbc receiver adapter
Hi All,
I am trying to update a single record using jdbc receiver adapter.
This is my the message that is getting created..
<?xml version="1.0" encoding="UTF-8" ?>
- <ns0:Data xmlns:ns0="urn:Test">
- <STATEMENT>
- <TABLENAME ACTION="UPDATE_INSERT">
<TABLE>ORDERS</TABLE>
- <ACCESS>
<OrderID>99999</OrderID>
<CustomerID>VICTE</CustomerID>
<EmployeeID>3</EmployeeID>
<ShipAddress>VICTE</ShipAddress>
</ACCESS>
- <KEY>
<OrderID compareOperation="EQ">99999</OrderID>
<ShipAddress compareOperation="EQ">VICTE</ShipAddress>
</KEY>
</TABLENAME>
</STATEMENT>
</ns0:Data>
But in Adapter Monitoring i am getting the following error..
<i>Error while parsing or executing XML-SQL document: Error processing request in sax parser: Error when executing statement for table/stored proc. 'ORDERS' (structure 'STATEMENT'): java.sql.SQLException: [Microsoft][ODBC SQL Server Driver][SQL Server]Line 1: Incorrect syntax near 'VICTE'.</i>
Regards,
RahulRahul,
> In this case i believe the interface has to be synch.
> So what will the response message type be like..
Not necessary. UPDATE can be asynch as well.
Can you turn the trace on like pointed by Michal and then you can see the Query in the Audit Log of the adapter montioring. Try to execute the same query from your DB Client like TOAD and see what is the Syntax error you are getiing.!
The problem looks like some field has some dataype / column name mismatch.
Regards
Bhavesh -
JDBC Receiver Adapter -- Synch Select. ERROR
Hello,
We have implemented the scenario described by Bhavesh Kantilal in blog 3928:
JDBC Receiver Adapter -- Synchronous Select Step by Step
/people/bhavesh.kantilal/blog/2006/07/03/jdbc-receiver-adapter--synchronous-select-150-step-by-step
but modified to our requirements.
An Idoc is coming in, mapped to a sync receiver jdbc as described to collect data from a jdbc table.
Result when connecting the oracle database with the jdbc receiver adapter:
Error processing request in sax parser: Error when executing statement for table/stored proc. 'T_ST_MAINDRIVER' (structure 'STATEMENT'): java.sql.SQLException: ORA-00942: table or view does not exist
Oh, like to complete the information by the payload from the jdbc rec. connect:
<?xml version="1.0" encoding="UTF-8" ?>
- <ns0:MT_JDBC_LOOPUP_ID xmlns:ns0="http://www.xxx.org/excel">
- <STATEMENT>
- <TABLENAME ACTION="SELECT">
<TABLE>T_ST_MAINDRIVER</TABLE>
<ACCESS />
- <KEY>
<MAINDRIVER compareOperation="=">Optomechanical</MAINDRIVER>
</KEY>
</TABLENAME>
</STATEMENT>
</ns0:MT_JDBC_LOOPUP_ID>
The table exists on the database. So, what is our mistake? Do you have any ideas?
Best regards
Dirk
Message was edited by:
Dirk Meinhard
Message was edited by:
Dirk MeinhardHi Anil,
I am back on my JDBC problem and I am one step further!
Thank you for this hint. Looks like this is the solution.
So I like to add my next question !
My new error is resulting from my query command.
I have set "=" to find a specific entry as compare operation.
Error when executing statement for table/stored proc. 'IRIS.T_ST_MAINDRIVER' (structure 'STATEMENT'): java.sql.SQLException: FATAL ERROR document format in structure 'TABLENAME': unexpected value '=' for attribute 'compare' found
Looks like this is not ok .
This is my xml of this query:
<ns0:MT_JDBC_LOOPUP_ID xmlns:ns0="http://www.xxx.org/excel">
<STATEMENT>
<TABLENAME ACTION="SELECT">
<TABLE>IRIS.T_ST_MAINDRIVER</TABLE>
<ACCESS/>
<KEY>
<MAINDRIVER compareOperation="=">Optomechanical</MAINDRIVER>
</KEY>
</TABLENAME>
</STATEMENT>
</ns0:MT_JDBC_LOOPUP_ID>
Can you, or anybody else, give the helping idea?
regards
Dirk -
Hi
I am trying insert rows in Oracle database using JDBC receiver adapter setup in PI 7.1. However this receiver adapter is throwing following exception.
Delivering the message to the application using connection JDBC_http://sap.com/xi/XI/System failed, due to: com.sap.engine.interfaces.messaging.api.exception.MessagingException: Error processing request in sax parser: Error when executing statement for table/stored proc. 'PRADEEP_OTC_ORDERS' (structure 'statement'): java.sql.SQLException: ORA-00904: "BATCH_ID": invalid identifier .
<?xml version="1.0" encoding="UTF-8" ?>
<ns0:mt_sql_writer xmlns:ns0="http://rdbms_poc">
<statement>
<dbtablename action="INSERT">
<table>PRADEEP_OTC_ORDERS</table>
<access>
<order_id>19126</order_id>
<version>1</version>
<batch_id>132</batch_id>
</access>
</dbtablename>
</statement>
</ns0:mt_sql_writer>
PRADEEP_OTC_ORDERS table has just 3 columns as specified the access segment. However I stil get this ORA-00904 error message.
Any idea on what could be wrong.?
Thanks
-PradeepHi All,
Thanks a lot for responding...
I verified the table structure, table just contains those 3 coulms all varchar type.
I modified the column name as well, But was still getting ORA-00904. Then I went directly to the the database and executed below insert statement,
insert into PRADEEP_OTC_ORDERS (mps_order_id, mps_version,mps_batch_id) Values(1,2,3)
I got exact SQL Error: ORA-00904: "MPS_BATCH_ID": invalid identifier.
So ISAP JDBC adapter is not enclosing the string values in quotes.
SAP documentation says it puts quotes for values and treats everything as string(text).
Anybody has any idea, why JDBC receiver adapter not enclosing the values in quotes?
Thanks
-Pradeep -
Hi All,
I am executing SP by using JDBC Receiver Adapter.
My strcture is follows
<STATEMENT2>
<SP_CREATE_T_BATCH action="EXECUTE">
<spName type="VARCHAR">SP_CREATE_T_BATCH</spName>
<IN_Control_Recipe hasQuot="No" type="Integer">100000000001723850</IN_Control_Recipe>
</SP_CREATE_T_BATCH>
</STATEMENT2>
The below error I am getting
Message processing failed. Cause: com.sap.engine.interfaces.messaging.api.exception.MessagingException: Error processing request in sax parser: Error when executing statement for table/stored proc. 'SP_CREATE_T_BATCH' (structure 'STATEMENT2'): java.lang.NumberFormatException: For input string: "100000000001723850"
Any help on thisHi Ram,
Since you mentioned that your SP has one input parameter and one output parameter, the structure of the XML message at the JDBC receiver side should be:
<STATEMENT2>
<SP_CREATE_T_BATCH action="EXECUTE">
<IN_Control_Recipe isInput="true" hasQuot="No" type="BIGINT">100000000001723850</IN_Control_Recipe>
<Output_Parameter isOutput="true" type="SQLDataType"></Output_Parameter>
</SP_CREATE_T_BATCH>
</STATEMENT2>
Here, i have assumed the following:
SP_CREATE_T_BATCH - The name of the Stored Procedure to be executed
IN_Control_Recipe - Input parameter of the SP and its SQLDataType is BIGINT as suggested by Stefan.
Output_Parameter - Output parameter of the SP. You may enter the SQL data type as per the output of your Stored Procedure.
The following SQL data types are supported:
INTEGER, BIT, TINYINT, SMALLINT, BIGINT, FLOAT, REAL, DOUBLE, NUMERIC, DECIMAL, CHAR, VARCHAR, STRING, LONGVARCHAR, DATE, TIME, TIMESTAMP, BINARY, VARBINARY, LONGVARBINARY, BLOB (input and output),CLOB (input and output), CURSOR (output; only in conjunction with the Oracle JDBC driver).
Hope this will surely solve your problem.
Regards, Gaurav. -
A wierd error of JDBC Receiver adapter
Dear Expert,
I got stuck by the JDBC receiver adapter with PI 7.11, the log is
'JDBC Message processing failed, due to Error processing request in sax parser: Error when executing statement for table/stored proc. 'null' (structure 'SYSTEM'): java.lang.IndexOutOfBoundsException: Index: 1, Size: 1'
explanation :
(1)SYSTEM is the first element in my XML sent to PI and I guarantee it has value, and there is no mapping with this field in the target table.
(2)I tested mapping and comminucation channel -> successfully
(3)db is oracle and the key field is mapped with value
Looking forward to your insight. Thanks very very much
RayDear Expert :
Thanks for your reply, but I still could not figure out what had happened, it is so desperate.......
Message processing failed. Cause: com.sap.engine.interfaces.messaging.api.exception.MessagingException: Error processing request in sax parser: Error when executing statement for table/stored proc. 'null' (structure 'BOOK'): java.lang.IndexOutOfBoundsException: Index: 1, Size: 1
The Oracle DB table has many fields and I mapped the key and other fields which could not be null.
I tried to create a very simple example to test like this , but still it pops up the error like before,
you can see the error message just replaces the text 'SYSTEM' to 'BOOK'.
'null' (structure 'SYSTEM'): (yesterday) -> 'null' (structure 'BOOK'): (today). What could I do????
Thanks so much for your help
<?xml version="1.0" encoding="UTF-8" ?>
<MT_RM_TEST>
<BOOK>17-1627-15</BOOK>
<NAME>Ray</NAME>
</MT_RM_TEST>
-> the XML above is my simple test XML sent (book and name are mapped to the key field and other fields which could not be nulll)
Maybe you are looking for
-
Why they ask me get a compressor from App Store to export video from final cut since I use mavericks
How can I export video from final cut can't do again since I have got maverick
-
I am trying to make multiple vector files (Adobe Illustrator) into a PDF contact sheet. In doing this through the Output function of Bridge, the vector files are rasterized into a fuzzy, low resolution versions. I'm able to change the quality of the
-
How do i create an executable jar?
I have built a GUI, and want to make it executable. I have tried compiling it to a jar, but when i double click this nothing happens. I even added Main-Class to the manifest file but still no luck. any help would be appreciated, or a link to a good t
-
Attaching photos from iPhoto 7.1.2 to Entourage/Office 08
In iPhoto I have chosen Entourage as my email application for mailing pictures. After I installed Office 08 I encountered a problem: When choosing not to have titles and comments, the chosen pictures do not attach to the new email, and iPhoto locks/d
-
How do you setup group contact list on the I Phone
Looking for easy steps to establish groups among my contact list on my I Phone.