ERROR IN ORACLE STORED PROCEDURE in JDBC RECIEVER
Hi all
i have an FILE2JDBC2FILE sync scenario.have configured this w/o BPM.i need to call an stored procedure which will return me the output in the outpur parameters.input out put parametrs of the stored procedure are.
p_api_version IN NUMBER
,p_init_msg_list IN NUMBER DEFAULT EBS_ECOM_UTILS_PUB.G_TRUE
,p_ebs_place_in_t IN p_ebs_place_in_t(sql TABLE TYPE )
,p_ebs_std_call_o IN ebs_std_call_oty(sql TABLE TYPE )
,x_return_status OUT VARCHAR2
,x_msg_count OUT NUMBER
,x_msg_data OUT ebs_message_tty
,x_row_count OUT NUMBER
,x_ebs_place_out_t OUT ebs_place_out_toty(sql TABLE TYPE );
where
p_ebs_place_in_t is of type p_ebs_place_in_t which has 2 fields MDM_SYSTEM_REF,EMAIL_ADDR and START_DATE
p_ebs_std_call_o is of table type ebs_std_call_oty which has 2 fields WORK_GRP_ID and DEBUG_MODE
In XI i am passing the arguments in the following fashion to ORACLE (JDBC reciever adapter)
<p_api_version isInput="true" type="integer">1</p_api_version>
<p_init_msg_list isInput="true" type="integer">1</p_init_msg_list>
<p_ebs_place_in_t isInput="true" type="CHAR">
<MDM_SYSTEM_REF isInput="true" type="CHAR">MDM-237</MDM_SYSTEM_REF>( this is a field in p_ebs_place_in_t )
<EMAIL_ADDR isInput="true" type="CHAR"></EMAIL_ADDR>>(this is a field in p_ebs_place_in_t )
<START_DATE isInput="true" type="date"/>06-OCT-2009 00:00:00</START_DATE>>(this is a field in p_ebs_place_in_t )
</p_ebs_place_in_t>
<p_ebs_std_call_o isInput="true" type="CHAR">
<WORK_GRP_ID isInput="true" type="integer">95714</WORK_GRP_ID>
<DEBUG_MODE isInput="true" type="integer">5</DEBUG_MODE>
</p_ebs_std_call_o>
<x_return_status isOutput="true" type="CHAR"></x_return_status>
<x_msg_count isOutput="true" type="integer"></x_msg_count>
<x_msg_data isOutput="true" type="CHAR"></x_msg_data>
<x_row_count isOutput="true" type="integer"></x_row_count>
<x_ebs_place_out_t isOutput="true" type="CHAR">
</x_ebs_place_out_t>
i am gettng the below error when i am trying to post th message from RWB
Error when executing statement for table/stored proc. 'APPS.EBS_CUSTOMER_SERVICE_PUB.MAINTAIN_PLACE' (structure 'StatementName1'): java.sql.SQLException: ORA-06550: line 1, column 7: PLS-00306: wrong number or types of arguments in call to 'MAINTAIN_PLACE' ORA-06550: line 1, column 7: PL/SQL: Statement ignored .
please suggest..
Edited by: Rohan Patil on Jun 13, 2010 12:55 AM
HI Praveen,
thanks for your reply.
my stored procedure has input and output parameters both.
and in XI i have created the data type for both isInput(passedwith all the required values) and isOutput(passed the null values)
is this correct..?or should i take only isInput parameters in the data type?
do i need to take the isOutput also in the datatype?my stored procedure will return the output in the output parametrs.
can i take only 1 or 2 output paraetrs as there are 4 to 5 output parameters for my sotred procedure.?
and how will my response data type to send the output of the stored procedure to the FILE sustem.should it be also in the statement form?
and also would like to know..some of my isInput parameters to the stored procedure has the table type structure as the input parameters.now my question is i should i declare them in my data type?
can you please elaborate.
Similar Messages
-
Error Calling Oracle Stored Procedure From Within Report
Hi,
I have a report that calls an oracle stored procedure which returns a ref cursor. The report is working ok in our development environment when called from our development website through .NET.
When the report is moved and accessed from our UAT website we get the following error :-
Failed to open a rowset. Details: ADO Error Code: 0x Source: Microsoft OLE DB Provider for Oracle Description: One or more errors occurred during processing of command. Failed to open a rowset. Details: ADO Error Code: 0x Source: Microsoft OLE DB Provider for Oracle Description: ORA-06550: line 1, column 7: PLS-00306: wrong number or types of arguments in call to 'RHS_GET_CAND_SECTION_REFS' ORA-06550: line 1, column 7: PL/SQL: Statement ignored Native Error: Failed to open a rowset. Error in File C:\WINDOWS\TEMP\temp_d663a952-bef6-4bf7-bf1a-5e288afdb612 {9B6DFB38-A436-4940-9D80-B4C23DFFFF19}.rpt: Failed to open a rowset.
If we open the report manually we are prompted to enter database connection info. If we enter the UAT connection details the report runs ok. If we save the report and try to open it from UAT website through .NET it now opens ok.
If we then move that same report back to the development environment and open from our development website it fails with the same error above.
Both connections are using Microsoft OLE DB drivers and the Oracle databases are the same version (10.2.0.1.0).
Is the connection information being stored in actual report and somehow being used when the report is opened through .NET?
Any help appreciated
Regards
PaulHi,
Please let me know if the issue occurs with the crystal reports designer, if you are facing issues with the .NET application then a need to create a post [here|SAP Crystal Reports, version for Visual Studio;.
Regards,
Hitesh -
Passing XMLType Data into oracle stored procedure using JDBC
Hi Friends,
I have requirement where my oracle stored procedure accepts XML file as an input. This XML File is generated in runtime using java, I need to pass that xml file using JDBC to oracle stored procedure. Please let me know the fesibile solution for this problem.
Following are the environment details
JDK Version: 1.6
Oracle: 10g
Server: Tomcat 6.x
Thanks in Advanceuser4898687 wrote:
I have requirement where my oracle stored procedure accepts XML file as an input. This XML File is generated in runtime using java, I need to pass that xml file using JDBC to oracle stored procedure. Please let me know the fesibile solution for this problem.As stated - no.
A 'file' is a file system entity. There is no way to pass a 'file' anywhere. Not PL/SQL. Not java.
Now you can pass a file path (a string) in java and to PL/SQL.
Or you can pass xml data (a string) in java and to PL/SQL. For PL/SQL you could use eithe a varchar2, if the xml is rather small, or a blob/clob. -
Can't execute Oracle Stored Procedure using JDBC
Hi all,
I'm fairly new to JDBC and Oracle, so pardon my ignorance/lack of knowledge in this subject matter. I am trying to call a stored procedure named get_countries that has no parameters using JDBC. I do this by executing the following lines of code:
CallableStatement cs = con.prepareCall("{call get_countries}");
ResultSet rs = cs.executeQuery();But I get the following exception thrown:
Exception in thread "main" java.sql.SQLException: ORA-06550: line 1, column 7:
PLS-00306: wrong number or types of arguments in call to 'GET_COUNTRIES'
ORA-06550: line 1, column 7:
PL/SQL: Statement ignored
at oracle.jdbc.driver.DatabaseError.throwSqlException(_DatabaseError.java:112_)
at oracle.jdbc.driver.T4CTTIoer.processError(_T4CTTIoer.java:331_)
at oracle.jdbc.driver.T4CTTIoer.processError(_T4CTTIoer.java:288_)
at oracle.jdbc.driver.T4C8Oall.receive(_T4C8Oall.java:745_)
at oracle.jdbc.driver.T4CCallableStatement.doOall8(_T4CCallableStatement.java:218_)
at oracle.jdbc.driver.T4CCallableStatement.executeForRows(_T4CCallableStatement.java:969_)
at oracle.jdbc.driver.OracleStatement.doExecuteWithTimeout(_OracleStatement.java:1190_)
at oracle.jdbc.driver.OraclePreparedStatement.executeInternal(_OraclePreparedStatement.java:3370_)
at oracle.jdbc.driver.OraclePreparedStatement.executeQuery(_OraclePreparedStatement.java:3415_)
at JDBCTest.main(_JDBCTest.java:44_)
This makes no sense to me because there are no parameters that I need to pass. So I'm guessing this is something that I don't know about JDBC or about Oracle. I've searched Google for the past hour and a half and still haven't found anything that explains what might be the problem. I've also been following this guide ([http://java.sun.com/docs/books/tutorial/jdbc/basics/sql.html]) and I'm doing it exactly the same way, but for some reason it works for them.
Anyone know what I'm doing wrong?
Thanks for your help in advance. I really appreciate it!I went to a few forums and asked the same question. The boys down at Oracle Community Forums shed some light on this subject and, with their help, I was able to figure it out. Here is the thread for those who want to read: [My Thread @ Oracle Community Forums|http://forums.oracle.com/forums/thread.jspa?messageID=2721348?].
THE SOLUTION
cs = con.prepareCall("{ call get_countries(?) }");
cs.registerOutParameter(1, OracleTypes.CURSOR);
cs.execute();
ResultSet rs = ((OracleCallableStatement) cs).getCursor(1); -
Unknown Database Connector Error using Oracle stored procedures
We are using an Oracle database for the first time with our Crystal Reports, and I am attempting to modify a report to use a new stored procedure. When I attempt to add either the new procedure, or to add a new copy of the existing procedure, I get an error message:
Unknown Database Connector Error
If I remove the existing procedure first (leaving no database objects at all), and then attempt to add back exactly the same stored procedure that I just removed, I get a different error message:
Database Connector Error: '42000:[Oracle][ODBC]Syntax error or access violation'
Neither of these errors is particularly helpful. The stored procedure in question works as is. I can run it in SQL Developer, and it also executes within the existing report if I run it. Unfortunately, it needs to be modified and given a new name, so I need to be able to add the new stored procedure to the report.
The operating system is Windows XP Professional version 2002 SP3. The Oracle version is 11g (11.2.0.2.0). Crystal reports version is Crystal Reports 2008 (12.3.0.601). The stored procedure returns a refcursor. The ODBC connection is created using the "Oracle in OraClient11g_home1" driver. When I test the connection, it tells me it was successful.
If it matters, the report is a Saba report.
Can anyone shed any light on what the problem is and how to fix it. If the solution is to upgrade the Windows version, that is under the control of our tech support and there is no information available as to when it will happen.Yes - I had used the Set Datasource Location to point to the correct ODBC connection. I get the same results with an existing report as I do with a new blank report.
I have no idea where the service market place is. Honestly, I find the entire SAP site confusing. I found one reference to the PAM guide, but when I clicked on it, it insisted on a userid/password, and apparently the userid/password I have for this discussion group doesn't pass. I did find, eventually, a document called "Crystal Reports 2008 Service Pack 3 for Windows - Supported Platforms". When I read it, it tells me that it's compatible with Oracle 11g, generic ODBC, and Windows XP SP3, which is what we are using. I'm hoping that this document has equivalent information to the PAM guide. -
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 -
Oracle Stored Procedure not working
Hi Guy's,
I want to connect directly from Visual Composer to Oracle Database 10.2.x.x using Oracle Stored Procedure and JDBC System to demonstrate how easy you can show data vith VC. So I have created a simple Oracle Stored Procedure, a JDBC System with a valid alias, User mapping (Portal User --> Oracle User).
When I invoke the stored procedure I receive the following error: "Portal request Failed (Could not execute stored procedure)". The Stored Procedure is working fine in Oracle iSQL*Plus.
Any idea's?
Thanks,
RidouanHi,
did you use the portal JDBC as it is described here:
<a href="https://wiki.sdn.sap.com/wiki/display/VC/Cannotseetables">https://wiki.sdn.sap.com/wiki/display/VC/Cannotseetables</a>
Best Regards,
Marcel -
Call stored procedure in JDBC passing Array parameters
Hi all,
Im trying to call an Oracle Stored Procedure with JDBC. The problem is
that my parameter is an Array (PL/SQL Type is "Table Of").
How can i call this procedure by passing right Java parameters to
the Callable statement ??
In the Documentation, all samples don't work ! it's possible to
call a procedure that return Array Type but when we need to pass an Array as
a parameter we have a DataType exception.
Any idea ?
thanx in advance
Sam.Hi Sam,
I don't have an answer to your question, just some suggestions as to
where else you may find help.
Do you know about the "Ask Tom" website:
http://asktom.oracle.com
Also, you may find something in the comp.databases.oracle.* newsgroups:
http://groups.google.com
I found this article there -- but it's not exactly what you're looking
for:
http://groups.google.com/groups?q=array+group:comp.databases.oracle.server+author:Thomas+author:Kyte&hl=iw&as_qdr=w&selm=a9sg06027kf%40drn.newsguy.com&rnum=1
Good Luck,
Avi. -
JDBC Sender adapter - Oracle - Stored Procedure - Error
Hello,
Need few clarifications on JDBC sender adapter and stored procedures when connecting to Oracle DB.
My scenario is, Oracle to SAPBW. So in sender JDBC adapter, we have used a SP having multiple SQL statements it, esp. one of the SELECT statment having Joins on a table and View.
My questions are,
1) Is it possible to have more SQL statements in SP for Sender JDBC?
2) Is the SP of Oracle DB returns resultset or cursor?
I have tried in searching the forum perticularly for connecting to Oracle as Sender and below like said that there is a limitation of XI JDBC when connecting to Oracle.
Executing an Oracle Stored Procedure from Sender JDBC adapter
So please clarify the doubts and help me.
With regards,
JilanHi Jilan,
Unlike what was mentioned in the link given by you that oracle returns cursor and not resultset is not completely true. It may be difficult but certainly not impossible.
Refer : http://www.enterprisedt.com/publications/oracle/result_set.html
regards
joel -
Executing an Oracle Stored Procedure from Sender JDBC adapter
I could really use some help from someone who had done this before.
I've read the help about using the JDBC sender adapter, but it's not helping enough.
I found this line: "Specify an SQL EXECUTE statement to execute a stored procedure, which contains exactly one SELECT statement.
The expression must correspond to the SQL variant supported by the relevant JDBC driver. It can also contain table JOINs."
That's definately what we want to do, but we can't figure out the syntax.
The procedure in oracle looks like this:
CREATE OR REPLACE PROCEDURE test_ref_cursor
( cur_generic IN OUT result_sets.cur_generic)
as
BEGIN
Open cur_generic for
select
proposal_number,
to_char(sequence_number),
column_name,
column_value,
update_timestamp,
update_user
from
coeus.sap_test;
END test_ref_cursor;
And we have tried every kind of statement we can think of, but the file adapter always gives us an "invalid sql statement" error.
Does anyone know what syntax we need to put in the "Query SQL Statement" in the JDBC sender adapter in order to call this procedure? Or is there something wrong with the procedure that is causing the error?
<i>I will absolutely return and give points, but PLEASE read my whole post before answering and do not just link me to or quote the help for configuring a sender JDBC adapter or blogs that are about the JDBC adapter in general but do not deal with the issues I am having. Thank you.</i>Hi Vanda,
Unfortunately, the sender JDBC adapter does not support Oracle's store procedure/function. Unlike stored procedures from other database vendors, Oracle returns a cursor, not a resultset. The sender JDBC adapter must send a resultset to XI.
There are 2 possible ways you can accomplish this:
1. Use BPM and call the Oracle stored procedure using a receiver adapter via a asynch-synch bridge.
2. Develop a user-module for the adapter, which can be used with a sender adapter.
Thanks
Prasad -
JDBC Sender - Oracle Stored procedures
hi all
i am working on JDBC sender - File receiver
I am fetching data from Oracle database
if i write select query directly in sender adapter the scenario is working properly but when try to write stored procedure in oracle and use execute statement in JDBC, adapter is throwing error.
As in oracle to fetch multiple rows i have to use cursors .
i read lot of articles in forum but still not clear on following issues :can any one solve them?
1 . To get multiple rows can i write SP without cursors?
2 . If SP is using cursor do my XI accept it or it only accepts resultset? in that case how to write sp.
thanks & regards
sheetalSheetal,
Adding to Jai Shankar's reply, Like pointed out, Oracle Stored Procedures return Cursors and XI sender JDBC adapter expects resultsets and so it is not possible to call Oracle SP's from Sender JDBC adapters.
But, I have also come across a few recent threads where there have been discussions that this is possible from SP 16 onwards. I have not been able to check and confirm on this, but, maybe you can check your SP level and see if you are below SP 16 . If yes, definetly not possible. If SP 16, or above, a Quick OSS to SAP should surely give the answer if it is possible or not!
Do let us know your findings.
Regards
Bhavesh -
JDBC Receiver to ORACLE Stored Procedure
Hi Experts
I browed the forum and could not find a strait answer to my problem. Hence I am posting this thread.
I have a sync call using JDBC Receiver to ORACLE stored procedure.
The definition of the procedure is as follows:
CREATE OR REPLACE procedure TW.XI_TEST
(p_edi_extract_id varchar2, p_res out edi_extract%rowtype) is
t edi_extract%rowtype;
begin
select *
into p_res
from edi_extract e
where e.edi_extract_id = to_number(p_edi_extract_id);
exception
when no_data_found then
p_res := t;
end XI_TEST;
The request XML is as follows:
<?xml version="1.0" encoding="UTF-8" ?>
<ns0:MT_EDIExtractSelectionRequest xmlns:ns0="urn:zim.com:tests">
<STATEMENT>
<PROC_NAME ACTION="EXECUTE">
<TABLE>TW.XI_TEST</TABLE>
<EDI_EXTRACT_ID isInput="true" type="STRING">4223142</EDI_EXTRACT_ID>
</PROC_NAME>
</STATEMENT>
</ns0:MT_EDIExtractSelectionRequest>
The error I am getting is as follows:
com.sap.engine.interfaces.messaging.api.exception.MessagingException:
Error processing request in sax parser:
Error when executing statement for table/stored proc. 'TW.XI_TEST' (structure 'STATEMENT'):
java.sql.SQLException: ORA-06550: line 1, column 7: PLS-00306:
wrong number or types of arguments in call to 'XI_TEST' ORA-06550: line 1, column 7:
PL/SQL: Statement ignored
Any help would be appreciated.
Regards
Effi.>
Rajesh wrote:
> > Hi Rajesh
> >
> > The structure of my data type for the request query is as follows:
> >
> >
DT_EDIExtractSelectionRequest (Complex Type)
> > STATEMENT (Element)
> > PROC_NAME (Element)
> > ACTION (Attribute) _mapped to_: EXECUTE
> > TABLE (Element) _mapped to_: TW.XI_TEST
> > EDI_EXTRACT_ID (Element) _mapped to_: 123456
> > isInput (Attribute) _mapped to_: true
> > type (Attribute) _mapped to_: STRING
> > EDI_EXTRACT (Element)
> > isOutput (Attribute) _mapped to_: true
> > type (Attribute) _mapped to_: CURSOR
> >
> >
>
>
> Change the DT type to like below
>
> STATEMENT (Element)
> ACTION (Attribute) _mapped to_: EXECUTE
> TABLE (Element) _mapped to_: TW.XI_TEST
> EDI_EXTRACT_ID (Element) _mapped to_: 123456
> isInput (Attribute) _mapped to_: true
> type (Attribute) _mapped to_: STRING
> EDI_ETRACT (Element)
> isOutput (Attribute) _mapped to_: true
> type (Attribute) _mapped to_: CURSOR
>
> and try ...actually i dont remeber the exact strucuture..but i tolo faced the same pain of this
>
> HTH
> Rajesh
Hi Rajesh
Changing the DT per your suggestion result in the following error:
<SAP:AdditionalText>com.sap.engine.interfaces.messaging.api.exception.MessagingException: Error processing request in sax parser:
No 'action' attribute found in XML document
(attribute "action" missing or wrong XML structure)</SAP:AdditionalText>
Omitting the PROC_NAME element from the DT is not correct.
Also, I would also like to clarify that the variables of the DT I am using are:
EDI_EXTRACT_ID is defined as string
EDI_EXTRACT is defined as string
Because the variable p_res is mapped to nothing in the request payload it does not show.
I read in one of the posts that this is correct and the variable is used due to the fact the isOutput attribute is true.
Regards,
Effi.
Edited by: Effi Olivkovitch on Dec 6, 2009 9:11 AM
Edited by: Effi Olivkovitch on Dec 6, 2009 9:18 AM -
Invoking Oracle stored procedures from within a JDBC channel for PI 7.1
Hi ,
Can anybody tell me that is it possible to invoke Oracle stored Procedure from within a JDBC sender channel for PI 7.1.
Its working in XI3.0 and XI 7.0 for Oracle DBMS versions >= 10.2.x. But I am not sure,whether it will work for PI 7.1 also.
Thanks & Regards,
SaruHI,
refer below link,there is no much difference in PI7.1 ,executing stored procedure is same .
http://help.sap.com/saphelp_nwpi71/helpdata/EN/44/7b72b2fde93673e10000000a114a6b/content.htm
Regards,
Raj -
Error calling Java in Oracle Stored Procedure
I can call a java function inside my Oracle Stored Procedure, but if I reference a class that uses JNI, I get problems. I don't know what forum to post this under. This seems the closest match.
Here is my error:
java.lang.NoClassDefFoundError
at AcmeComp.ec.Motor.<init>(Motor.java:35)
at BBOra.runBB(BBOra:13)
Here is my java class, BBOra.java:
import AcmeComp.ec.*;
class BBOra {
static String strCnt;
BBOra() {}
public static void runBB() {
try {
//Motor class is in AcmeComp.ec package
Motor eng = new Motor();
} catch(Exception e) {
System.out.println("Error: " + e);
public static void runNonBB() {
System.out.println("runNonBB works ok.");
From DOS prompt, I loaded ac222ec.jar (has the AcmeComp.ec package) and BBOra.java files into Oracle:
loadjava -u system/manager -resolve -verbose ac222ec.jar.java
loadjava -u system/manager -resolve -verbose BBOra.java
From SQL Plus, I created 2 stored sprocedures:
CREATE OR REPLACE PROCEDURE runBB
AS LANGUAGE JAVA
NAME 'BBOra.runBB()';
CREATE OR REPLACE PROCEDURE runNonBB
AS LANGUAGE JAVA
NAME 'BBOra.runNonBB()';
From SQL Plus, I gave myself permissions to load libraries, so I can load ac222ecjni.dll, which has all the Native (C++) code I use:
BEGIN
DBMS_JAVA.GRANT_PERMISSION('SYSTEM',
'java.lang.RuntimePermission',
'loadLibrary.*');
END;
From SQL Plus, I set up my output:
set SERVEROUTPUT ON;
CALL dbms_java.set_output(3000);
From SQL Plus, I called my Stored Procedures:
CALL runNonBB();
CALL runBB();
runNonBB() works great, but runBB() gives me the error I listed above. The Motor class that BBOra calls, itself calls a class NMotor, which has a call:
static {
System.loadLibrary("ac222ecjni");
Unfortunately, I don't know the inner workings of the native code. Does "at AcmeComp.ec.Motor.<init>(Motor.java:35)"? mean JServer was able to see the class "Motor", but not instatiate it? Or did it error trying to create the class "NMotor"?
Here's a snippet of Motor:
package AcmeComp.ec;
public class Motor implements IMotor {
public Motor() {
motor = new NMotor();
some functions
private NMotor motor;
Here's a snippet of NMotor:
package AcmeComp.ec;
class NMotor {
NMotor() {
sunjdk = true;
some native method declarations
private boolean sunjdk;
static {
//ac222ecjni.dll has all the Native (C++) code
System.loadLibrary("ac222ecjni");
PLEASE HELP ME FIGURE THIS OUT. IT IS KILLING ME. I can even look into the USER_OBJECTS view in Oracle and see that ALL of the classes from the ac222ec.jar are present and accounted for.Man, I guess I figured it out myself. Ten Duke dollars to myself. But, for the sake of anyone who may want to know the answer, here it is:
JServer (or Oracle9i JVM in Oracle 9i) does not support JNI. Here is their (weak) reasoning, taken from "Oracle9i Java Developer's Guide" as found in http://www.csis.gvsu.edu/GeneralInfo/Oracle/java.920/a96656/invokeap.htm#1007948
"Oracle does not support the use of JNI in Oracle9i Java applications. If you use JNI, your application is not 100% pure Java, and the native methods require porting between platforms. Native methods have the potential for crashing the server, violating security, and corrupting data."
Sounds like a fancy way to say they have a limitation--their JVM isn't up to par all the way. If JNI is a feature in Java, why should Oracle decide for me if I should use it? Don't Java methods also have the potential for crashing the server, violating security, and corrupting data? I think they should just provide the functionality you would expect from a VM and let the user decide which functionality to use. In my case, I HAVE to use JNI, so I'd have to use RMI so that a different VM can do the JNI part.
Sounds pretty lame of Oracle, but oh well. -
Errors in calling Oracle stored procedure using java CallableStatement
Hello,
I have an oracle stored procedure below, it has been tested in PL/SQL without errors. During testing, in_c_file_type="F"; out_n_seqno_freeformat=120139596 and out_n_seqno_commaseprated is null (empty in value column).
When I run the program in Eclipse (windows xp), error messages is below: (It stopped at line 'cstme.execute();' )
Message:ORA-06550: line 1, column 26: PLS-00103: Encountered the symbol "" when expecting one of the following: . ( ) , * @ % & | = - + < / > at in is mod remainder not range rem => .. <an exponent (**)> <> or != or ~= >= <= <> and or like LIKE2_ LIKE4_ LIKEC_ as between from using || indicator multiset member SUBMULTISET_ The symbol ", was inserted before "" to continue. Error code:6550 SQL statement:65000 {code} Does anyone know what cause the error? It seems like something is missing in the stored procedure. But the stored procedure passes the test in the PL/SQL. The oracla driver I used is Oracle thin driver. Oracle version is 10.2.g Thanks in advance. northcloud {code} create or replace procedure SP_GET_SEQNO_2( in_c_file_type in char, out_n_seqno_freeformat out integer, out_n_seqno_commaseprated out integer) is n_seqno_commaseprated integer; n_seqno_freeformat integer; begin if in_c_file_type ='F' THEN SELECT message_counter.nextval INTO n_seqno_freeformat FROM dual; insert into temp_stroperations (record_id,OUTPUT_STR,INPROCESS_STR) values (n_seqno_freeformat,empty_clob(),empty_clob()); elsif in_c_file_type ='C' THEN SELECT message_counter.nextval INTO n_seqno_commaseprated FROM dual; insert into temp_stroperations (record_id,OUTPUT_STR,INPROCESS_STR) values (n_seqno_commaseprated,empty_clob(),empty_clob()); else SELECT message_counter.nextval INTO n_seqno_freeformat FROM dual; insert into temp_stroperations (record_id,OUTPUT_STR,INPROCESS_STR) values (n_seqno_freeformat,empty_clob(),empty_clob()); SELECT message_counter.nextval INTO n_seqno_commaseprated FROM dual; insert into temp_stroperations (record_id,OUTPUT_STR,INPROCESS_STR) values (n_seqno_commaseprated,empty_clob(),empty_clob()); end if; out_n_seqno_freeformat := n_seqno_freeformat; out_n_seqno_commaseprated := n_seqno_commaseprated; end SP_GET_SEQNO_2; {code} ----- A part of java code I used to call the stored procedure is here. {code} String escapeString = "{call SP_GET_SEQNO_2 (? ? ?)}"; CallableStatement cstme = null; try { cstme = con.prepareCall(escapeString); cstme.setString(1, "F"); cstme.registerOutParameter(2, java.sql.Types.INTEGER); cstme.registerOutParameter(3, java.sql.Types.INTEGER); cstme.execute(); int seqNoFreeformat=0, seqNocommasepreted=0; seqNoFreeformat = cstme.getInt(2); seqNocommasepreted = cstme.getInt(3); System.out.println ("In ConvertXML.processStoredProcedure(), seqNoFreeformat= "+seqNoFreeformat+";seqNocommasepreted="+seqNocommasepreted); } catch (SQLException e) { //System.out.println ("In ConvertXML.processStoredProcedure(), SQLException: "+e); System.err.println("Message:"+e.getMessage()); System.err.println("Error code:"+e.getErrorCode()); System.err.println("SQL statement:"+e.getSQLState()); log.log(Level.INFO, log.getName() + " - SQLException : "+e); } {code}es5f2000 wrote:
jschell wrote:
That works?I dunno. The below definitely works, but like I said, I've only
ever done it with one output parameter (and that has always
been a ResultSet).
String callableQuery = "{?= call my_package.my_call(?, ?)}"
Yes I have done that and at least in terms of my code it wasn't just a result set.
But not with two.
Maybe you are looking for
-
years of data in the installation (4GB); Surface 3 Pro with i7 8GB RAM and 256GB SSD the process is visible in Task Manager and absorbs around 35% of CPU time but no window is opened. It looks like a bug but without the interface window it's impossib
-
How to remove a favorite on Home Page
We have a favorite listed on that we would like to remove from Yahoo Home Page. This is in Favorites NOT bookmarks.
-
Hi, Hopefully someone can offer some advice, I may be missing something obvious here. I'm currently trying to write a feature event receiver to apply web.config modifications that are required by a recent project. The feature is web application scop
-
Location of bookmarks file in mac os 10.6
I need to know where in mac os 10.6, does the bookmarks file reside?
-
B2B - SFTP - Encrypt data using PGP
Hello, I am hearing / reading mixed comments on using PGP encryption / decryption using the SFTP Transport in Oracle B2B. The requirement is the data needs to be encrypted during the transport between the trading partners. The SFTP server houses the