How to use Native SQL String
Hi all,
How do i use Native SQL String in the Reciver JDBC Adapter.
Do i need to change the message format could u suggest me some blogs on the same.
Also please can anyone let me knw if i can use this for stored procedure.
hi aditya,
there shud be no format as such. for sql xml format there are specific structure. but for native sql there shudnt be any specific structure.
as pointed in sap documentaion:
Instead of an XML document format, a text is expected that represents any valid SQL statement.
When inserting a line into a table the corresponding document looks as follows:
INSERT INTO tableName (column-name1, column-name2, column-name3) VALUES(column-value1, column-value2, column-value3)
so jus make sure that u give a valid sql statement becoz if will be passed as it is to the database and try ur scenario.
regards,
latika.
Similar Messages
-
How to use Native SQL statement in JDBC receiver interface
Dear All,
Can any one please help us in using Native SQL statement in a JDBC receiver channel. The reason why I need to use Native SQL statement instead of standard XML structure is that I need to execute a dynamic SQL query in third party database system lke:-
Select Field1 Field2 from TABLE Where Field3 like "%Name'
I expect the the response in the form of XML file which I can pick up using synchornous interface as mentioned on help.sap.com:-
http://help.sap.com/saphelp_nw04/helpdata/en/64/ce4e886334ec4ea7c2712e11cc567c/frameset.htm
http://help.sap.com/saphelp_nw04/helpdata/en/64/ce4e886334ec4ea7c2712e11cc567c/frameset.htm
The value for %Name can change dynamically according to the transaction and hence cannot be inluded as a KEY element in standard XLM structure,
Hence I need to know:-
1. What message mapping I should use in case if I have to use Native SQL statement.
2.What operation mapping I should use in case if I have to use Native SQL statement.
If guess correclty I may have to use Java mapping to do the above activities. Hence I want to know
3 .How do to go about it to do the Java mapping.
Thanks
Ameet>
Ameet Deshpande wrote:
> Dear All,
>
> Can any one please help us in using Native SQL statement in a JDBC receiver channel. The reason why I need to use Native SQL statement instead of standard XML structure is that I need to execute a dynamic SQL query in third party database system lke:-
>
> "
> Select Field1 Field2 from TABLE Where Field3 like "%Name'
> "
> I expect the the response in the form of XML file which I can pick up using synchornous interface as mentioned on help.sap.com:-
>
> http://help.sap.com/saphelp_nw04/helpdata/en/64/ce4e886334ec4ea7c2712e11cc567c/frameset.htm
> http://help.sap.com/saphelp_nw04/helpdata/en/64/ce4e886334ec4ea7c2712e11cc567c/frameset.htm
>
> The value for %Name can change dynamically according to the transaction and hence cannot be inluded as a KEY element in standard XLM structure,
>
> Hence I need to know:-
>
> 1. What message mapping I should use in case if I have to use Native SQL statement.
> 2.What operation mapping I should use in case if I have to use Native SQL statement.
> If guess correclty I may have to use Java mapping to do the above activities. Hence I want to know
> 3 .How do to go about it to do the Java mapping.
>
> Thanks
> Ameet
You can use a stored procedure, and call it from jdbc receiver adapter.
I also solve this issue, with a DBLookup in message mapping. You can refer to my blog, and this usefull 3d:
http://simonlesflex.wordpress.com/2010/12/07/pi-oracle-dblookup/
/people/alessandro.guarneri/blog/2006/03/27/sap-xi-lookup-api-the-killer
/people/siva.maranani/blog/2005/08/23/lookup146s-in-xi-made-simpler -
How to use Native SQL in Toplink
I am using toplink in my project, can you please some one help me how to create native sql using toplink.
I have seen EntityManager interface having method createNativeQuery, but how to create instance of EntityManagerimport javax.persistence.EntityManager;within class, place
protected EntityManager entityManager;of course make it public, private, whatever you need.
Then, in your method
entityManager.createNativeQuery(....);R. Grimes -
Native SQL string in Receiver JDBC
Hi All,
I have a requirement where in i have to make us of message protocol : Native SQL String .
SDN explanation is as follow :
When inserting a line into a table the corresponding document looks as follows:*
"INSERT INTO tableName (column-name1, column-name2, column-name3) VALUES(u2018column-value1u2019, u2018column-value2u2019, u2018column-value3u2019) "
I tried to pass the data as shown below :
<?xml version="1.0" encoding="UTF-8"?>
<ns0:MT_SrcProxy xmlns:ns0="http://infosys.com/pi/projects/pepsi/n1">
<Record>
<input> "INSERT INTO Emp (EmpNO,FirstName,LastName,DOJ,BaseLocation)VALUES('103','abc','xyz','NULL','Blore')" </input>
</Record>
</ns0:MT_SrcProxy>
I am getting the following error in communication channel :
Message processing failed. Cause: com.sap.engine.interfaces.messaging.api.exception.MessagingException: Error 'com.microsoft.sqlserver.jdbc.SQLServerException: Incorrect syntax near '<'.' executing service raw2sql with SQL statement '<?xml version="1.0" encoding="UTF-8"?> <ns0:MT_SrcProxy xmlns:ns0="http://infosys.com/pi/projects/pepsi/n1"> <Record> <input>"INSERT INTO Emp (EmpNO,FirstName,LastName,DOJ,BaseLocation)VALUES('103','abc','xyz','NULL','Blore')"</input> </Record> </ns0:MT_SrcProxy>'
Can anyone please help me in this regardHi Vinay,
I have not tried on this but looks like the output that needs to be passed must be a Non XML and not an XML output.
Please refer this thread to get more clear idea on this.
Re: How to use Native SQL String.
Thanks
Amit -
How to get oracle 9i blob column into an itab in sap using Native SQL
Hi ,
We are using SAP ECC 5.0 and we need to coonect to an oracle database ver 9i rel2.
We need to get the data stored in a blob(pdf/jpeg) into an itab and later
use it for futher processing.
I am familiar with using native SQL and I wrote a stored procedure in the non sap oracle database to send the blob info into an internal table in sap.
But the information is in hex format and the long raw of SAP does not handle this very well.
Plz see my code below.
data: itab_insp_drawing like zpicture_cluster(which is of type lraw - 7902 )
occurs 100 with header line.
EXEC SQL.
EXECUTE PROCEDURE
proc_get_insp_drawings (
IN :itab-aq_id,
IN :itab-section_id,
IN :t_in_position,
out :itab_insp_drawing-picture,
OUT :t_blob_length,
out :t_out_position,
OUT :t_status )
ENDEXEC.
append itab_insp_drawing.
while t_out_position < t_blob_length.
EXEC SQL.
EXECUTE PROCEDURE
proc_get_insp_drawings (
IN :itab-aq_id,
IN :itab-section_id,
IN :t_in_position,
out :itab_insp_drawing-picture,
OUT :t_blob_length,
out :t_out_position,
OUT :t_status )
ENDEXEC.
append itab_insp_drawing.
endwhile.
Any ideas of how to handle blobs from non sap oracle table. I need this blob into an itab in sap.
Help appreciated.
Thanks
MalaPlease refer the example in this link which deals with Oracle date format.
You can finnd a command DECODE which is used for date formats. If you have a look at whole theory then you will get an idea.
Link:[Bulk insert SQL command to transfer data from SAP to Oracle|http://sap.ittoolbox.com/groups/technical-functional/sap-dev/bulk-insert-sql-command-to-transfer-data-from-sap-to-oracle-cl_sql_connection-3780804] -
How I can create dynamically-formed requests or use native SQL in EJB?
Hi all.
I'm working around modify an example from NetWeaver Developer Studio (CarRental). I want to get ordered data from table and allow users to specify the ordering field, not in the code. EJB QL doesn't support dynamically-formed queries like "select object(b) from QuickBooking b where b.status like ?1 order by b.<b>?2</b>" so i can't passing field name as parameter into query. Creating a sorting method for every field is not good solution because I need a dynamically-formed requests.
I think using native SQL will help but I don't know how I can use SQL in EJB.
Thanks,
Levimport javax.persistence.EntityManager;within class, place
protected EntityManager entityManager;of course make it public, private, whatever you need.
Then, in your method
entityManager.createNativeQuery(....);R. Grimes -
JDBC Receiver - Message Protocol = Native SQL String
Hi Friends
Has any one worked on JDBC Receiver with Message Protocol as <b>Native SQL String</b>?
If so, can you please send me a detailed scenario of it...like
the datatypes, message types, mappping.
Because if I use the Native SQL String, then I think I have to pass a simple SQL string to the receiver..
So how can I do that?
Regards,
Raju...Hi Raju,
This can be done using the following format,
<root>
<stmt>
<Customers action="SQL_DML">
<access> UPDATE Customers SET Name=$NAME$ WHERE Number='$NUMBER$
</access>
<key>
<NAME>ABC</NAME>
<NUMBER>000</NUMBER>
</key>
</Customers>
</stmt>
</root>
Just pass map the value to the correspondung fields in the KEY FIELD and it will work like you want, dynamically.
Regards,
bhavesh -
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. -
Program using Native SQL ... Need suggestion.. Look into code
Hi Friends ,
I need your Inputs to solve the new requirement , which need to be solve using Native SQL,
For this i need to connet to data base 'SIP'.
The table used for this are SAPI.TRANSACTION
fields in SAPI.TRANSACTION
- SYSTEMCODE
- BATCH_ID
and more
the above two fields are selection parameters based on which i need to get data :
please rectify the code and also help me in this
TRY.
EXEC SQL.
CONNECT TO :'SIP'
ENDEXEC.
IF sy-subrc NE 0.
Error Message
ENDIF.
EXEC SQL.
OPEN dbcur FOR
SELECT SYSTEM CODE BATCH_ID
FROM SAPI.TRANSACTION
can i use where condition here , i tried to put the selection parameters here
and tried to put the internal table , but the programs gets terminated,
How should i get the fields from table SAPI.TRANSACTION
IF sy-subrc <> 0.
RAISE EXCEPTION TYPE cx_sy_native_sql_error.
ENDIF.
ENDEXEC.
DO.
EXEC SQL.
FETCH NEXT dbcur INTO :BATCH_ID
Here i want to get batch id and delete data from other table SAPI.BATCH
ENDEXEC.
IF sy-subrc <> 0.
EXIT.
ELSE.
ENDIF.
ENDDO.
EXEC SQL.
CLOSE dbcur
ENDEXEC.
EXEC SQL.
DISCONNECT :'SIP'
ENDEXEC.
ENDTRY.Hi Anirban, I tried that and it still gives the same error:
- "itab_mytable" cannot be a table, a reference, a string, or contain any of these objects. any of these objects"
itab_mytable has been declare as an internal table.
Basically, from the code in the link you gave me, I have made the following changes:
REPORT demo_native_sql.
TYPES: BEGIN OF st,
connid TYPE spfli-connid,
cityfrom TYPE spfli-cityfrom,
cityto TYPE spfli-cityto,
END OF st.
DATA: itab_mytable TYPE TABLE OF st.
<...>
EXEC SQL.
SELECT connid, cityfrom, cityto
INTO :itab_mytable
FROM spfli
ENDEXEC.
But this doesn't work. If the internal table is replaced with a one-lined work area, then the select statement works. -
Who to use Native SQL statements in ABAP
hi all,
who to use native sql staements in abap bypassing Application server.
with regards,
suresh babu aluri.Hi
Native SQL statements define an area in an ABAP program in which one or more Native SQL statements are to be carried out. The area between EXEC and ENDEXEC is not completely checked by the syntax check. The statements entered there are passed to the Native SQL interface and processed there as follows:
Almost all SQL statements that are valid for the addressed database system can be included between EXEC and ENDEXEC, in particular the DDL statements. These SQL statements are passed from the Native SQL interface to the database system largely unchanged. The syntax rules are specified by the database system, in particular the case sensitivity rules for database objects. If the syntax allows a separator character between individual statements, you can include several Native SQL statements between EXEC and ENDEXEC. Generally, the semicolon ( is used as the separator character.
You can also include SAP-specific Native SQL language elements between EXEC and ENDEXEC. These statements are not passed directly from the Native SQL interface to the database, but are converted appropriately.
All Native SQL statements bypass SAP buffering.
The ENDEXEC statement sets sy-dbcnt to the number of table rows processed in the last Native SQL statement. After implicit cursor processing with PERFORMING, sy-dbcnt contains the total number of lines read.
Programs with Native SQL statements are generally dependent on the database system used, so that they cannot be executed in all ABAP systems. This is especially true for the examples in this section, which was written for Informix database systems.
Example
Inserting two rows in the database table SCARR. If neither of these rows exists, sy-subrc is set to 0 by ENDEXEC and sy-dbcnt to 1. Otherwise, an exception is raised and handled.
DATA: exc_ref TYPE REF TO cx_sy_native_sql_error,
error_text TYPE string.
TRY.
EXEC SQL.
INSERT INTO scarr
(MANDT, CARRID, CARRNAME, CURRCODE, URL)
VALUES ('000', 'FF', 'Funny Flyers', 'EUR',
'http://www.ff.com');
INSERT INTO scarr
(MANDT, CARRID, CARRNAME, CURRCODE, URL)
VALUES ('000', 'EF', 'Easy Flyers', 'EUR',
'http://www.ef.com');
ENDEXEC.
CATCH cx_sy_native_sql_error INTO exc_ref.
error_text = exc_ref->get_text( ).
MESSAGE error_text TYPE 'I'.
ENDTRY.
Reward points if useful
Regards
Anji -
Insertion / Update of field of type "TIME" using Native SQL
Hi ABAP gurus,
We are trying to perform inserts and updates within an ORACLE table where a TIME field exists without suscess. We are trying to code it using Native SQL.
EXEC SQL.
INSERT INTO table (field1[name], field2[age], field3[birthday], field4[hour])
VALUES (:name, :age, TO_DATE(:date_birth), ¿:hour?)
ENDEXEC.
EXEC SQL.
UPDATE table SET field3[birthday] = TO_DATE(:date_birth), field4[hour] = ¿:hour?
WHERE field1[name] = :name AND field2[age] = :age
ENDEXEC.
Which is the right coding sentence in order to achieve our goal?
Many thanks in advance. Best regards,
Imanol>
Imanol Beguiristain wrote:
> Hi all,
>
> I am sorry for being unclear.
>
> I do want to code both INSERT and UPDATE. That is clear.
>
> The problem we are having is that we don't know how to code (using Native SQL) such instructions using in the SQL sentence a field of TIME type.
>
> Any helps?
>
> Thanks in advance.
>
> Imanol
I've not heard of an Oracle TIME datatype; we used to use the timestamp which is stored as part of the date or we set up a separate column to hold the time defined as CHAR. Still, it is possible that they have created such a thing since I last did SQL. In which case, there would have to be a function like TO_DATE which you would use to convert your time to its time format.
If you mean TIMESTAMP you can use something like the following to do the data conversion.
TO_TIMESTAMP(LOCALTIMESTAMP, 'DD-MON-RR HH.MI.SSXFF') -
Performance issue using Native SQL
Hi
I am getting the data from Oracle database using Native SQL in ABAP. I am facing performance problem when i am using Native SQL to get data from Oracle database.Its been very slow and getting timed out.
This is the code i am using for this.
EXEC SQL PERFORMING BUILD_TAB.
Get the territory id
SELECT TERR_ID
FROM DWPROD.VW_ARDETAIL_PRD1@DWP
INTO :IT_TERR-TERR_ID
:DG_TERR_ID
WHERE COMPANY = :dt_output-bukrs
AND PAY_ADDR_ID = :dt_output-kunnr
AND DOC_NO = :dt_output-belnr
AND DOC_ITEM_NO = :dt_output-buzei
ENDEXEC.
IF sy-dbcnt >= 1.
READ TABLE it_terr INDEX 1.
dg_terr_id = it_terr-terr_id.
EXEC SQL.
Get the Saled rep id, name
SELECT MR_USER_ID,
MR_NAME
FROM DWPROD.VW_TERR@DWP
INTO :dt_output-srep_id,
:dt_output-srep_name
WHERE TERR_ID = :DG_TERR_ID
ENDEXEC.
*Get sales manager id and sales manager name
EXEC SQL.
SELECT SALES_GRP_ID
FROM DWPROD.VW_TERRRPT@DWP
INTO :DG_SGRPID
WHERE TERR_ID = :DG_TERR_ID
ENDEXEC.
IF sy-dbcnt >= 1.
EXEC SQL.
SELECT MGR_USER_ID,
MGR_NAME
FROM DWPROD.VW_SGRP@DWP
INTO :dt_output-sman_id,
:dt_output-sman_name
WHERE SALES_GRP_ID = :DG_SGRPID
ENDEXEC.
ENDIF.
ENDIF.
Can any one suggest a solution to improve the performance.
Thnaks
VianneyHi John!
Looks like you need just one entry out of the tables, but you select 'into table'.
Try to add a 'up to 1 rows' restriction, then Oracle will be much faster with the execution.
To get an idea, who this parameter looks like in native SQL for Oracle, write a simple test program with an open SQL statement (including this parameter / select single) and run a SQL-trace (ST05). Here you can see in 'explain' how native translation looks like, can also maintain some small tests with 'enter SQL statement'.
Regards,
Christian -
What is native sql when i use native sql
what is native sql & when i use native sql plz give with me example
I imagine you mean Native Dynamic SQL, NDS. An example would be:
EXECUTE IMMEDIATE 'select count(*) from ' || v_tablename INTO v_count;
i.e. you construct the SQL "dynamically" as a string and then execute it.
You would use it in situations where you could not know the precise query when building the code - e.g. as above, if you don't know which table to count the rows from until run time. -
Can anybody please send me a small program on How to Use Dynamic SQL.
How to execute and run give details.
Thanks
nullYou can certainly use the INTO (and USING) clauses of EXECUTE IMMEDIATE to pass in and return data, i.e.
EXECUTE IMMEDIATE sqlStmt
USING variable1, variable2
INTO output1, output2The more complex the statement, however, the more appropriate DBMS_SQL is. DBMS_SQL also has the potential to allow you to use bind variables rather than reparsing the statement many times.
Justin
Distributed Database Consulting, Inc.
http://www.ddbcinc.com/askDDBC -
How to use multiple VCI strings for lap 1300 and 1200 (option 60) in one pool?
Hi All,
Hope to you a very happy new year,
I have two differnt LAP 1300 and 1200 in my network and I need to add theme to the WLC,
I successed to add one of theme by the option 60 in the DHCP pool at the Core SW,
So my quetion is below:
How to use multiple VCI strings for lap 1300 and 1200 (option 60) in one pool?
Thanks in Advanced,
Ahmed,To add to Scott's post. Option 60 would be useful if you needed to put certain types of AP on specific controllers. Otherwise, no real need to use it for the most part.
Though, I do recall an issue a few years ago that some windows machines had issues getting DHCP if option 43 is being returned.
Now, on an IOS switch, you can only configure one option 60 per DHCP scope
HTH,
Steve
Please remember to rate useful posts, and mark questions as answered
Maybe you are looking for
-
Problem with Texts in infoObject
Hi guys, I have a infoObject with texts in two languages. If I sign into the system in EN language all texts are shown in EN. The same situation is with german language. Everything works fine. Now I have a new requirements where the users want to se
-
This really ***** i neeeeeed helpppp!
-
DearAll, My client manufacture Tower. In the sales order the FG is tower with qty 1. But while delivering client deliver the component of the tower (such as angle, channels etc) as soon as they are available. It continue as multiple delivery. Finally
-
All characters on screen shown as a capitol A in a box.
My Macbook Pro is displaying all characters on screen as a capitol A in a box. It is also crashing the display picture when i click on things. Any help much appreciated,thanks.
-
Looking for html reader for s40
Hello all i have nokia 5610 and im looking for off line html viewer so i could read html files i converted from pdf is there somekind of free viewer? that have zoomin function thanks