JDBC receiver: Values with quotes

Dear all,
I created an insert statement for JDBC receiver.
I used logSQLStatement in advanced adapter mode to see the SQL statement
He does it like
insert into xyz(col1,col2) values(abc,def)
but I need it like
insert into xyz(col1,col2) values('abc','def')
I tried the attribute hasQuot="YES" for the fields and also
the column line delimiter, but it doesn't seem to work.
What do I have to do to set the values in quotes?
Thanks
Chris

You can write an Oracle StoredProcedure with your custom "insert" statement, and call it from the JDBC receiver channel passing field value.
Take a look here for other informations:
http://help.sap.com/saphelp_nw70/helpdata/en/2e/96fd3f2d14e869e10000000a155106/content.htm
http://download.oracle.com/javase/tutorial/jdbc/basics/sql.html

Similar Messages

  • JDBC Receiver Adapter with Native SQL String

    Hi experts
    I need to use a JDBC Receiver Adapter with Message Protocol of Native SQL String, but I don´t understand how to create my data type for XML Document Format. I studied the following example from the SAP Library,
    INSERT INTO tableName (column-name1, column-name2, column-name3) VALUES(u2018column-value1u2019, u2018column-value2u2019, u2018column-value3u2019)
    i´ll be very thankful of your recommendations.

    Another simple way is..
    Create receiver data structure like this....
    <StatementName>
    <anyName action=u201DSQL_DMLu201D>
    <access>INSERT INTO tableName (column-name1, column-name2, column-name3) VALUES('$column-value1$', '$column-value2$', '$column-value3$')
    </access>
    <key>
      <column-value1>value1</column-value1>
      <column-value2>value2<column-value2>
       <column-value3>value3<column-value3>
    </key>
    </anyName > 
    </StatementName>
    Rest are all same.

  • Cannot slice values with quotes sign

    Hi all,
    for some unknown reason, I cannot slice values with quotes sign on a slicer.
    It does not work on any of the computers in my workplace!
    Why is that? How can I fix this?
    I work with Excel2010
    Thanks,
    Marina

    Hi Marina
    Check data format in PowerPivot model. Should be text. If it not helps please give examples how the model and slicer looks like.
    G.

  • JDBC Receiver Adapter with Null Value

    HI,
    I have configured ID for JDBC Receiver. In my communication channel, I already check Integration of Empty String Values = Null Value. However, when I check the result from audit log, it still shows that SAP XI sends the null value to database. In my understanding, it should not send the field which has null value (It shouldn't be included in sql statement).
    I check this with other scenario. With the same check at Integration of Empty String Values = Null Value, it doesn't send null value to database. It happens only with my first scenario.
    Have anyone ever been through this before? Any suggestion please?
    Thanks,
    Pavin

    Hi,
    1. The occurrence is 0...1
    2. This is the first result with null value (Please see field Error)
    UPDATE EXPCRM_T_CustomerProfile SET RequestID=455, RecordNo=1, SAPCustomerCode=0001000344, Error=NULL, Status=2, UpdateDateTime=12/03/2008 13:45:03 WHERE (RequestID=455 AND RecordNo=1)
    Then, I change the option from Null Value to Empty string. This is the result.
    UPDATE EXPCRM_T_CustomerProfile SET RequestID=455, RecordNo=1, SAPCustomerCode=0001000344, Error=', Status=2, UpdateDateTime=12/03/2008 13:46:12 WHERE (RequestID=455 AND RecordNo=1)
    Field Error Change from NULL to '
    The expected result from me is that field Error should not exist at all. Please help.
    Thanks,
    Pavin

  • PI 7.0 - jdbc receiver issue with MS SQL Server

    Hello Experts,
    I have a jdbc receiver scenario on PI 7.0 for just one table on MS SQL Server and I'm using the update_insert action.
    When the entry does not exist it is created normally and returns insert_count=1 and update_count=0.
    When the entry already exists, it's generated the statements for insert and for update (the 2 statements are visible on RWB) and returns insert_count=0 and update_count=0.
    Any error occurs and in the RWB the log shows the request was processed with success.
    I've already enabled the log for sql statements on the channel, but the statements are correct.
    I've reviewed also the <key> tag on the mapping and it's ok.
    Any suggestion to try fix this issue?
    Thank you very much.

    Can you please check in the database the format of the specified fields in the update statement. Sometime we can have situations that the insert works but the subsequent update fails. An example:
    Suppose key field1 value being passed from XI is  '1234' in characters but in db it is stored as '00001234'.
    Regards,
    Indranil

  • Insert value with quotes into the table

    Hi,
    How can I insert a value along with quotes into a table column of type varchar.
    Meaning..I want to insert the value 'TEST' including the single quotes.
    Regards,
    Murali Mohan

    It only a matter of using the correct number of quotes. to insert 'TEST' you use 3 quotes on each end
    example: '''TEST'''
    Hi,
    How can I insert a value along with quotes into a table column of type varchar.
    Meaning..I want to insert the value 'TEST' including the single quotes.
    Regards,
    Murali Mohan

  • JDBC Receiver Adapter with many deadlocks

    Hi Gurus !
    Hi have many interfaces from Idocs to JDBC inserts to a MS SQL Server 2005. I'm using PI 7.0 SP 18.
    I'm having a problem when I send many idocs (with many segments) because some messages stay in waiting, or, to be delivered status at the endpoint in message monitoring. The real message is:
    Unable to execute statement for table or stored procedure. 'EQUI' (Structure 'JDBCStatement_EQUI') due to com.microsoft.sqlserver.jdbc.SQLServerException: Transaction (Process ID 63) was deadlocked on lock resources with another process and has been chosen as the deadlock victim. Rerun the transaction.
    It makes 6 retries, and after the sixth failure it stays in status NDLV. Every time that tries to resend the message it makes the same error (deadlock), I guess because there are many messages that are trying to do the same in same moment.
    In the receiver CCs I put the value 50 in the Maximum Concurrency field.
    Does anyone know which parameters can I improve this situation? The server hasn't any tunning.
    Thanks in advance,
    Juan

    Based on my experience, these are the things that could be used to improve JDBC performance
    1. You may increase the thread count for JDBC related queues. This has to be done in accordance with SAP Note 1084161.
    2. There is parameter in JDBC communication channel called Maximum Concurrency. It signifies that one communication channel can make how many connections to database. This is 1 by default and could be increased to some values like 3-4.
    3. In the Visual Admin/ NWA, there is a parameter called as queueParallelism.maxReceivers which defines the number of parallel worker threads for one receiver channel instance. This should be done following SAP Note 1136790. This can be done along with the first point.
    Regards,
    Prateek

  • JDBC receiver adapter with multiple stored procs error

    Hi all,
      I am doing a scenario IDOC-XI-JDBC. The destination system in MS SQL server 2000. I am passing variant config information to update the destination tables by triggering the same stored procedure multiple times with different parameters.
      Everything is correct, but JDBC adapter is giving me the following error
    Unable to execute statement for table or stored procedure. 'mk_EditAllowedLowerSpineImprintingOptions_proc' (Structure 'CallProc') due to java.lang.IllegalArgumentException
    My payload looks like this. This is just a partial payload, the blocks of CallProc continue till the CallsRemaining number reaches zero(0).
      <?xml version="1.0" encoding="UTF-8" ?>
    - <ns0:MT_UPDATEPERSONAVARIANTS xmlns:ns0="urn:sd:sales:sapvarianttablestopersona">
    - <CallProc>
    - <Update_Persona_Variants action="EXECUTE">
      <table>mk_EditAllowedLowerSpineImprintingOptions_proc</table>
      <AlbumType type="CHAR">7SPEC</AlbumType>
      <UpperSpineImprintingOption type="CHAR">UST</UpperSpineImprintingOption>
      <LowerSpineImprintingOption type="CHAR">NOL</LowerSpineImprintingOption>
      <EffectiveDate type="DATE">20040503</EffectiveDate>
      <CallsRemaining type="INTEGER">27</CallsRemaining>
      </Update_Persona_Variants>
      </CallProc>
    - <CallProc>
    - <Update_Persona_Variants action="EXECUTE">
      <table>mk_EditAllowedLowerSpineImprintingOptions_proc</table>
      <AlbumType type="CHAR">7SENT</AlbumType>
      <UpperSpineImprintingOption type="CHAR">UST</UpperSpineImprintingOption>
      <LowerSpineImprintingOption type="CHAR">LSP</LowerSpineImprintingOption>
      <EffectiveDate type="DATE">20040503</EffectiveDate>
      <CallsRemaining type="INTEGER">26</CallsRemaining>
      </Update_Persona_Variants>
      </CallProc>
    - <CallProc>
    - <Update_Persona_Variants action="EXECUTE">
      <table>mk_EditAllowedLowerSpineImprintingOptions_proc</table>
      <AlbumType type="CHAR">7SPEC</AlbumType>
      <UpperSpineImprintingOption type="CHAR">UST</UpperSpineImprintingOption>
      <LowerSpineImprintingOption type="CHAR">LSP</LowerSpineImprintingOption>
      <EffectiveDate type="DATE">20040503</EffectiveDate>
      <CallsRemaining type="INTEGER">25</CallsRemaining>
      </Update_Persona_Variants>
      </CallProc>
    ......CallProc blocks continue till CallRemaining reaches zero.
    I also tried making CallProc element appear just once in XML and repeating <Update_Persona_Variants> blocks like below
    <?xml version="1.0" encoding="UTF-8" ?>
    - <ns0:MT_UPDATEPERSONAVARIANTS xmlns:ns0="urn:sd:sales:sapvarianttablestopersona">
    - <CallProc>
    - <Update_Persona_Variants action="EXECUTE">
    </Update_Persona_Variants>
    <Update_Persona_Variants action="EXECUTE">
    </Update_Persona_Variants>
    </CallProc>
    </ns0:MT_UPDATEPERSONAVARIANTS >
    but still i get the same error.
    Can anyone guide me what is wrong.

    Well,
      The problem was with the way date was passed to the stored procedure, i just needed to format the date to yyyy-mm-dd and the error was solved. The error given by the JDBC adapter was not correct. I tried using logSQLStatement additional parameter, but for stored procedures it does not give out the actual SQL statement being fired. I was able to find the error in log files found on WAS server in transaction AL11.
       So i suggest to everyone having issues with JDBC adapter, please do not trust the error given in runtime workbench, always crosscheck in the logs in AL11 at the following location in your XI box
    DIR_INSTANCE\J2EE\CLUSTER\SERVER0\log. Here find date and time when you triggered your scenario and search for your table name or stored proc name, the java dump will give you a good information.
      I am giving points to everyone anyways.
    Thanks
    Pulin

  • JDBC Receiver Adapter Error with SAPClassNotFoundException

    HI Friends,
    I have configured the JDBC Receiver Adapter with parameters as
    Driver: oracle.jdbc.driver.OracleDriver
    Connection: jdbc:oracle:thin:@10.15.96.29:1525:RMOSDB
    XI 700, Oracle DB 10.2
    I have installed JDBC driver for Oracle as guide “How Install and Configure External Drivers for the JDBC & JMS Adapters.pdf”. I can see file ojdbc14.jar at D:\usr\sap\<SID>\DVEBMGSNN\j2ee\cluster\server0\bin\ext\com.sap.aii.af.jmsproviderlib.
    But I’m still getting an error SAPClassNotFoundException as following:
    #XI AF com.sap.aii.adapter.jdbc.XI2JDBC@1497c21##0#0#Error#1#com.sap.aii.adapter.jdbc.XI2JDBC#Plain###Accessing database connection 'jdbc:oracle:thin:@10.15.96.29:1525:RMOSDB' failed: com.sap.aii.adapter.jdbc.sql.DriverManagerException: Cannot establish connection to URL 'jdbc:oracle:thin:@10.15.96.29:1525:RMOSDB': SAPClassNotFoundException: oracle.jdbc.driver.Oracledriver#
    #XI AF com.sap.aii.adapter.jdbc.XI2JDBC@1497c21##0#0#Error#1#com.sap.aii.adapter.jdbc.XI2JDBC#Plain###JDBC_ERR_207#
    #Error#1#com.sap.aii.adapter.jdbc.XI2JDBC#Plain###Accessing database connection 'jdbc:oracle:thin:@10.15.96.29:1525:RMOSDB' failed: com.sap.aii.adapter.jdbc.sql.DriverManagerException: Cannot establish connection to URL 'jdbc:oracle:thin:@10.15.96.29:1525:RMOSDB': SAPClassNotFoundException: oracle.jdbc.driver.Oracledriver#
    I tried to install JDBC driver again but it was not solve this problem.
    Please suggest!
    Regards,
    Cuong

    HI Cuong,
    It seems something wrong with the installation of JDBC driver or in the config parameters for Adapter.
    Not sure if driver is case sensitive.
    But from the log it shows "oracle.jdbc.driver.Oracledriver".
    Try putting "oracle.jdbc.driver.OracleDriver".
    regards,
    Pinkle

  • 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
    Ray

    Dear 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)

  • JDBC Receiver - Multiple rows Update

    I have an interface the incoming message contain multiple columns and it has to be updated using a JDBC Receiver Adapter with its key values.
    Can we send multiple rows in a single JDBC Update Statement.
    Please advise.

    Sebin,
    No ,it's not possible to have multiple rows in single update statement. Rather you can duplicate the segment at Statement level and do the update.
    Please refer http://help.sap.com/saphelp_nw70/helpdata/en/2e/96fd3f2d14e869e10000000a155106/content.htm
    raj.

  • 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,
    Harold

    Hello 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.

  • Issue with processing time of JDBC receiver adapter

    Hi all,
    We are using PI 7.1 EHP1.
    We have an issue with JDBC receiver adapter taking too much time to process messages.
    We are using XML SQL format message protocol with INSERT_UPDATE as the document format.
    Each message can contain multiple records, i.e. 1 single message can result in many updates/inserts.
    Currently, time taken to process in 6-12 secs which is quite high considering the messages are not very large in size.
    We sent the statements to Oracle DBA to see if anything about the queries being used is causing issues. Awaiting inputs.
    In the mean time, wanted to check if there is anything that can be done from PI side that will help us improving the processing time.
    Thanks in Advance,
    Sailaja.

    Hi,
           i think the main cause is  query taking long time to execute in DataBase.
          -> increase the read time and response time in the JDBC receiver adapter.
      In the advanced mode table section of sender channel and receiver channel configurations, we can set driver properties for each DB connection. Any such property would have to contain prefix 'driver:'(with out quotes).
    For Oracle Database JDBC thin driver 10.2.0.3 version, the property oracle.jdbc.ReadTimeout helps to set read timeout while reading from the socket. Also for setting login time out in Oracle, we use oracle.net.CONNECT_TIMEOUT. To set these two properties use as follows: driver:oracle.jdbc.ReadTimeout 1000 driver:oracle.net.CONNECT_TIMEOUT 1000 The TimeOut Driver properties like ReadTimeout and CONNECT_TIMEOUT are in milliseconds.
    Refer note 1078420 for more details
    please go through this blog i hope it will help you.
        http://www.sdn.sap.com/irj/scn/index?rid=/library/uuid/c059d583-a551-2c10-e095-eb5d95e03747
    regards,
      ganesh
    Edited by: ganesh.nijampudi on Oct 25, 2011 12:00 PM

  • How to handle fieldnames ending with # in JDBC receiver?

    Hello Experts,
      I am developing a scenario JDBC to IDOC. I have 2 tables for  header & line item. I have to retrieve a header record first using sender JDBC & then for that header need to fetch the corresponding lineitems from second table.
        We cannot have data types defined in XI with fieldnames containing # or any other special charecter. Both DB tables contain fieldnames ending with #.
      For Sender JDBC, I managed it in SQL query using :
        Select abc, xyz# as xyz .... from tbname
    But for receiver JDBC we need to define a data type with the typical format ( Doccument format required for JDBC receiver).
    Please let me know how to handle this for JDBC receiver.
    Thanks in Advance & hope for a quick replies.
    Abhijeet.

    Hi Abhijeet,
    If you can write a query with join( you can call join query using JDBC adapter), i think this would be a fastest way and good approch rather than having 2 JDBC call.
    Another approch would be writing SP( stored procedure and then you can have your complete logic here). You can call SP using JDBC adapter.
    Eventhough query would be complex...it will be one time job.:)...I am not sure about data type for handling field names with special characters.
    Let me know if you need more details.
    Nilesh

  • Issue with JDBC receiver

    Hello All,
    We have SAP ECC (proxy sender) -> XPI 7.0 -> Oracle (jdbc receiver).
    We are querying data in some oracle tables. This is the error we see in communiation channel monitoring for JDBC receiver adapter:
    Message processing failed. Cause: com.sap.aii.af.ra.ms.api.RecoverableException: Error when attempting to get processing resources: com.sap.aii.af.service.util.concurrent.ResourcePoolException: Unable to create new pooled resource: DriverManagerException: Cannot establish connection to URL 'jdbc:oracle:thin:@xxxxx.abc.def.com:1521:rdwT1': SQLException: ORA-28000: the account is locked
    But, we were told that login credentials (user/password) are working fine and account (user name give in the communication channel) is not locked.
    So, is there anything i need to check?
    In XI's SXMB_MONI, we see the following error:
    <SAP:Category>XIAdapterFramework</SAP:Category>
      <SAP:Code area="MESSAGE">GENERAL</SAP:Code>
      <SAP:P1 />
      <SAP:P2 />
      <SAP:P3 />
      <SAP:P4 />
      <SAP:AdditionalText>com.sap.aii.af.ra.ms.api.DeliveryException: Exception in method process.</SAP:AdditionalText>
    Another question is, why is the error in communication channel monitoring not getting propogated to SXMB_MONI?
    Anything obvious missing here?
    Thanks,
    Chandra

    Message processing failed. Cause: com.sap.aii.af.ra.ms.api.RecoverableException: Error when attempting to get processing resources: com.sap.aii.af.service.util.concurrent.ResourcePoolException: Unable to create new pooled resource: DriverManagerException: Cannot establish connection to URL 'jdbc:oracle:thin:@xxxxx.abc.def.com:1521:rdwT1': SQLException: ORA-28000: the account is locked
    Please check the following..
    a) Test the above db connection string using TOAD or sQLplus and see how that works. The exception clearly shows account is locked. If you repeatedly use invalid credentials for three times using the jdbc channel there is a possibility that account gets locked.
    b) Also check the port, hostname and database name are right and valid one.  Also check with BASIS team whether one more time account is locked or not.
    Since you configured the receiver channel as JDBC and you will see this error log only at Java Stack.. that is in the communication channel monitoring.  This you wont see it in the Integration engine.
    Hope that helps.

Maybe you are looking for