ADO Stored Procedures Error message
I am having trouble using Oracle Stored Procedures with ADO.
I keep getting an Run-time 3708 - Parameter object is improperly defined.
Any advice welcome.
This is my VB Code:
Set myCommand = New ADODB.Command
With myCommand
Set .ActiveConnection = myConnection
.CommandType = adCmdStoredProc
.CommandText = "GET_SYSDATE"
.Prepared = True
.Parameters.Append .CreateParameter("TODAY", adVarWChar, adParamInputOutput)
.Execute
mySystemDate = myCommand(0)
End With
This the procedure I am trying to access:
CREATE OR REPLACE PROCEDURE GET_SYSDATE (today in out VARCHAR2) AS
BEGIN
SELECT TO_CHAR(SYSDATE,'DD-MON-YYYY')
INTO today
FROM SYS.DUAL;
END;
Sorry this is resolved !!
Similar Messages
-
Crystal Report That Uses Stored Procedure Errors when connecting to the DB
We had developed reports a few years ago, including one that calls a Stored Procedure on an iSeries AS400 DB2 database. We upgraded our environments to Crystal Reports 2008 and BO XI 3.1. Now, the existing report that previously ran in the old environment is not running (note that the other SQL-based reports work without a problem, only this one which uses a store procedure is not working). I downloaded the report into my local Crystal Reports designer and tried to run it from there and I got the following error message:
======
Failed to retieve data from the database.
Details: ADO Error Code: 0x
Source Microsoft OLE DB Provider for ODBC Drivers
Description: [IBM][iSeries Access ODBC Driver] Statement violates access rule: Connection is set to read only.
SQL State: 37000
Native Error: [Database Vendor Code: 30186 ]
======
{CALL "<database>"."<library>"."RELEASEDNOTINVOICE"({d '2010-03-01'})}
This call will still work from on a SQL client running on a JDBC connection. Is there some problem with the new verion of BO and Crystal Reports with using the iSeries ODBC driver?...my issue was resolved by setting the ODBC.INI registry entry for AllowProcCalls from 0 to 1.
-
Calling the Java Method in PL/SQL Java Stored procedure errors out
Hi,
I could not find a suitable thread to post my PL/SQL question so iam posting it here.........
I have written a java class by name XYZ which has a method ABC for which there are 9 arguements being passed and its a VOID method.
This java class has been loaded into ORACLE using DBMS_JAVA.LOADJAVA pkg, Now this class is being called in the oracle as a JAVA Stored procedure...... When ever im trying to call the procedure it throws the following error
ORA-29531: no method
*Cause: An attempt was made to execute a non-existent method in a
Java class.
*Action: Adjust the call or create the specified method.
The code snippet as follows
JAVA CODE:
Class xyz
public static void Abc (String hostName,
int port,
String serviceURL,
String soapAction,
int timeOut,
String wsUser,
String wsPasWd,
String keyStore,
String keyStorePasWd)
//method implementation
JAVA STORED PROCEDURE:
create OR REPLACE procedure ABC_JAVA_SP_CALL
(p_hostname in varchar2, p_port in number, p_serviceurl in varchar2, p_soapaction in varchar2, p_timeout in number, p_wsuser in varchar2, p_wspasswd in varchar2, p_ks_path in varchar2, p_ks_passwd in varchar2)
as
language java
name 'xyz.Abc(java.lang.String, int, java.lang.String, java.lang.String, int, java.lang.String, java.lang.String, java.lang.String, java.lang.String)';
When i try to call
declare
p_hostname varchar2(100);
p_port number;
p_serviceurl varchar2(100);
p_soapaction varchar2(100);
p_timeout number;
p_wsuser varchar2(100);
p_wspasswd varchar2(100);
p_ks_path varchar2(100);
p_ks_passwd varchar2(100);
begin
//SP which returns the values for the required parameters.
comppkg.getvcsinfo(
p_hostname,
p_port ,
p_serviceurl,
p_soapaction,
p_timeout,
p_wsuser,
p_wspasswd,
p_ks_path,
p_ks_passwd
Layer7_icengc_ws_tes(p_hostname,
p_port ,
p_serviceurl,
p_soapaction,
p_timeout,
p_wsuser,
p_wspasswd,
p_ks_path,
p_ks_passwd);
end;
This thing ends up with
29531. 00000 - "no method %s in class %s"
*Cause: An attempt was made to execute a non-existent method in a
Java class.
*Action: Adjust the call or create the specified method.
Im not understanding what wrong am i doing
pls help
Edited by: madhusudan on Feb 12, 2013 8:07 PMHello,
there is the forum {forum:id=65} for questions about using Java within Oracle.
Regards
Marcus
Edited by: Marwim on 13.02.2013 07:56
I could not find a suitable thread to post my PL/SQL question so iam posting it here.........You got the hint to the correct forum alread in another thread {message:id=10837976}
And if you think this is not related to Java but PL/SQL, then you should ask in {forum:id=75} -
ORABPEL-11809 - call a stored procedure - error in OUT parameter
Hi all.
I have a problem in a BPEL process that calls a stored procedure.
I create a Partner Link that calls a stored procedure in the database. That procedure returns a type that is a table (is defined as a type of the database).
When I deploy the process I have the following error:
<messages>
- <input>
- <WC01_Pesquisa_Ut_InputVariable>
- <part xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" name="InputParameters">
- <InputParameters xmlns="http://xmlns.oracle.com/pcbpel/adapter/db/IGIF/WC01/PESQUISA_UT/">
<P_NIR xmlns="">
165968274
</P_NIR>
<P_NOME_COMPLETO xmlns="">
carla diogo
</P_NOME_COMPLETO>
<P_SEXO xmlns="">
Feminino
</P_SEXO>
<P_DATA_NASC xmlns="">
2007-03-01
</P_DATA_NASC>
<P_NATURALIDADE xmlns=""/>
</InputParameters>
</part>
</WC01_Pesquisa_Ut_InputVariable>
</input>
- <fault>
- <remoteFault xmlns="http://schemas.oracle.com/bpel/extension">
- <part name="code">
<code>
17002
</code>
</part>
- <part name="summary">
<summary>
file:/oracle/product/10.1.3/SOA/Integration10131/bpel/domains/default/tmp/.bpel_SaudeIdentificarCidadao_5.0_e3768f57d137443e1ba52d4a6d809426.tmp/WC01_Pesquisa_Ut.wsdl [ WC01_Pesquisa_Ut_ptt::WC01_Pesquisa_Ut(InputParameters,OutputParameters) ] - WSIF JCA Execute of operation 'WC01_Pesquisa_Ut' failed due to: Error registering an out parameter.
An error occurred when registering parameter PESQUISA_UT as an out parameter of the IGIF.WC01.PESQUISA_UT API. Cause: java.sql.SQLException: Io exception: Connection reset [Caused by: Io exception: Connection reset]
; nested exception is:
ORABPEL-11809
Error registering an out parameter.
An error occurred when registering parameter PESQUISA_UT as an out parameter of the IGIF.WC01.PESQUISA_UT API. Cause: java.sql.SQLException: Io exception: Connection reset [Caused by: Io exception: Connection reset]
Check to ensure that the parameter is a valid IN/OUT or OUT parameter of the API. Contact oracle support if error is not fixable.
</summary>
</part>
- <part name="detail">
<detail>
Internal Exception: java.sql.SQLException: Io exception: Connection resetError Code: 17002
</detail>
</part>
</remoteFault>
</fault>
</messages>
The code of the XSD created when I create the partner link is:
<schema targetNamespace="http://xmlns.oracle.com/pcbpel/adapter/db/IGIF/WC01/PESQUISA_UT/" xmlns="http://www.w3.org/2001/XMLSchema" xmlns:db="http://xmlns.oracle.com/pcbpel/adapter/db/IGIF/WC01/PESQUISA_UT/"
elementFormDefault="unqualified" attributeFormDefault="unqualified">
<element name="InputParameters">
<complexType>
<sequence>
<element name="P_NIR" type="decimal" db:index="1" db:type="NUMBER" minOccurs="0" nillable="true"/>
<element name="P_NOME_COMPLETO" type="string" db:index="2" db:type="VARCHAR2" minOccurs="0" nillable="true"/>
<element name="P_SEXO" type="string" db:index="3" db:type="VARCHAR2" minOccurs="0" nillable="true"/>
<element name="P_DATA_NASC" type="dateTime" db:index="4" db:type="DATE" minOccurs="0" nillable="true"/>
<element name="P_NATURALIDADE" type="string" db:index="5" db:type="VARCHAR2" minOccurs="0" nillable="true"/>
</sequence>
</complexType>
</element>
<element name="OutputParameters">
<complexType>
<sequence>
<element name="PESQUISA_UT" type="db:TABELA_DE_IDS" db:index="0" db:type="Array" minOccurs="0" nillable="true"/>
</sequence>
</complexType>
</element>
<complexType name="TABELA_DE_IDS">
<sequence>
<element name="PESQUISA_UT_ITEM" type="decimal" db:type="NUMBER" minOccurs="0" maxOccurs="unbounded" nillable="true"/>
</sequence>
</complexType>
</schema>
Any ideia?
Thanks in advance.
CarlaI'd suggest that you turn on xml validation on the bpel boundaries to make sure that the xml being passed to the adapter is valid. You do this by logging in to bpel console, go to Manage Domain, at the bottom of the Configuration tab, set validateXml to true.
Then see if it is an xml validation issue - in which case you will have to fix your maps to make sure it is valid indeed.
Assuming your XML is valid and you are still seeing this error, couple of follow up questions:
- are you using synonyms ?
-- note that synonyms are not supported completely by the adapter at this time.
- could you spell out where your types/sp-pkg resides and what are you connecting as at runtime ?
-- just to keep things simple enough to debug, i'd do everything as just one user and slowly go to a scheme that you desire.
HTH -
JDBC Receiver Adapter - Stored Procedure - Error Illegal Parameter
Hi experts,
I have a problem with the next scenario:
HTTP <-> XI -> JDBC
XI sends the following message to JDBC Adapter in mode Receiver to execute a Stored Procedure in a Informix database:
<ns0:mt_messageTestSP xmlns:ns0="urn:test">
<statement>
<hastus_exporta_dia action="execute">
<fechaEnvio isInput="true" type="DATE">11/17/2008</fechaEnvio>
</hastus_exporta_dia>
</statement>
</ns0:mt_messageTestSP>
Note: The format that accepts the SP Informix in the field of type date is: MM/dd/yyyy
The SP is running on an Informix database, and the parameter (fechaEnvio) that receive the SP is of type DATE. At runtime the SP does not run, and in the Component Monitoring of the Runtime Workbench I see the following error:
Unable to execute statement for table or stored procedure. 'hastus_exporta_dia' (Structure 'statement') due to java.lang.IllegalArgumentException
Any idea?
Thanks,
Jose.Hi,
Check the date format...once again...
In oracle date format is DD/MM/YYYY but if the same is sent from PI its throwing the error....
but when i send the format as DD-Mon-YYYY its accepting and showing as DD/MM/YYYY in oracle tables
so just try fetching the date field from the informix database and see how it is get converted into..and based on that send the format
HTH
Rajesh -
Stored Procedure error with JDBC:ODBC
Hi,
I am trying to run a stored procedure on RDMS (Uniaccess ODBC). This has 2 input parameters and returns a resultset of 3 columns. The following is the error I am getting and am stumped. Please help..
(similar call statement works with VB and ADO)
--------output ---------------
Calling MGC005
inside resultset sun.jdbc.odbc.JdbcOdbcCallableStatement@129206
row 1
get string 0004
get string 00000
get string
SQLEcception : java.sql.SQLException: [AIS][UniAccess ODBC Driver]Invalid Column Number//Specified column is before the column specified in the previous call
----------------------source code ------------------
import java.awt.Graphics;
import java.sql.*;
public class JdbcTest {
public JdbcTest() {
Connection con;
CallableStatement stmt;
try {
Class.forName( "sun.jdbc.odbc.JdbcOdbcDriver");
catch (Exception ex) {
System.out.println ("Database Driver not found");
System.exit(0);
try {
String msDbUrl = "jdbc:odbc:CMS_TEST_ODBC";
con = DriverManager.getConnection(msDbUrl, user, password );
stmt = con.prepareCall("{ call MGC005(?, ?)}");
stmt.setString( 1, "CH" );
stmt.setString( 2, "ARRINGTON0909170320010615" );
// stmt.registerOutParameter( 1, java.sql.Types.VARCHAR);
// stmt.registerOutParameter( 2, java.sql.Types.VARCHAR );
// stmt.registerOutParameter( 3, java.sql.Types.VARCHAR );
System.out.println( "Calling MGC005 " );
ResultSet rs = stmt.executeQuery();
while (rs.next()) {
System.out.println( " inside resultset " + rs.getStatement() );
System.out.println( " row " + rs.getRow() );
System.out.println( " get string " + rs.getString(1) );
System.out.println( " get string " + rs.getString(2) );
System.out.println( " get string " + rs.getString(3) );
String i = rs.getString (1);
String s = rs.getString (2);
String t = rs.getString (3);
String text = i + " " + s ;
System.out.println ( " Output " + text);
stmt.close();
con.close();
} catch( SQLException ex ) {
System.out.println ("SQLEcception : " + ex);
public static void main(String[] args) {
new JdbcTest();
}Hi,
The error seems to occur on the line:
String i = rs.getString (1);
The error exactly states what is occuring: "Specified column is before the column specified in the previous call". Try limiting the call to getString() to one for each column for each row.
Try replacing these lines:
System.out.println( " get string " + rs.getString(1) );
System.out.println( " get string " + rs.getString(2) );
System.out.println( " get string " + rs.getString(3) );
String i = rs.getString (1);
String s = rs.getString (2);
String t = rs.getString (3);
with something like:
String i = rs.getString (1);
System.out.println( " get string " + i);
String s = rs.getString (2);
System.out.println( " get string " + s);
String t = rs.getString (3);
System.out.println( " get string " + t);
Hope this works,
Kurt. -
Dear Oracle Experts,
I try to use the stored procedure below but get this error :
"Error(4,1): PLS-00428: an INTO clause is expected in this SELECT statement"
I don't have any clue what could be wrong with my syntax. INTO wouldn't make any sense at this task.
Does someone of you know what's wrong with my Procedure ?
Hope someone can help,
best regards,
Daniel Wetzler
create or replace PROCEDURE AnalysisCompatibility (DATEBEGIN timestamp, DATEEND timestamp)
AS
BEGIN
select Fs.*,Vs.Analysispriority,Vs.Compatibility Compatibility from SigFacts Fs
inner Join Variables Vs On
(Fs.Var_Ref=Vs.Var_Ref and Fs.Machines_Ref=Vs.Machines_Ref )
where Fs.DT between DATEBEGIN and DATEEND
and
Vs.AnalysisPriority > 0
or
VS.Compatibility in (6,7,8,9,10,11,13,21,22)
order by Fs.DT,Fs.Machines_Ref desc, Vs.AnalysisPriority;
END AnalysisCompatibility;I have created a table (ATREPORT.TEST) that has has got the same column name and type of the query output and i still get error message
PLS-00403 -- statement ATreport.TESt cannot be used as an into target, pls help
DECLARE start_date DATE := to_date('01/09/2006' , 'DD-MON-YYYY');
end_date DATE := to_date('30/09/2006' , 'DD-MON-YYYY');
BEGIN
SELECT t.SEC_SHORT_NAME, t.SEC_ISIN, t.SEC_NO,t.SEC_NAME, t.TRADE_DATE,
t.PAYMENT_DATE,t.COUNTERPARTY, t.PRICE , t.NOMINAL ,
t.TRANSACTION_NO,t.CURRENT_VALUE_PC, t.CURRENT_VALUE_SC, t.PAYMENT_AMOUNT_PC,
t.PAYMENT_AMOUNT_SC,
ct.AMOUNT , ct.CURRENCY,
sb.BUSINESS_CLASS_LEVEL_2 ,sb.BUSINESS_CLASS_LEVEL_2_NAME,
sb.BUSINESS_CLASS_LEVEL_3 ,sb.BUSINESS_CLASS_LEVEL_3_NAME,
sb.BUSINESS_CLASS_LEVEL_4 ,sb.BUSINESS_CLASS_LEVEL_4_NAME,
sb.BUSINESS_CLASS_LEVEL_5 ,sb.BUSINESS_CLASS_LEVEL_5_NAME
INTO ATREPORT.TEST
from scdat.A_TRANSACTIONS t
INNER JOIN scdat.A_COSTTAX ct
ON ct.TRANS_REF = t.TRANS_REF
INNER JOIN scdat.A_SECS_BUSINESS_CLASS_TS sb
ON sb.SEC_REF = t.SEC_REF
where t.TRADE_DATE >= to_char(start_date ,'DD-MON-YYYY')
and t.TRADE_DATE < to_char(end_date ,'DD-MON-YYYY')
and ct.COST_NAME = 'Broker commission'
and sb.BUSINESS_CLASS_DEFINITION = 'FTSE';
END; -
There is an error 'ORA-00903'-Invalid table name in my stored procedure which is used to send email.
In my local database it is working fine without any error.
When i try to execute that in eDBDeployer it is showing the error 'ORA-00903'
Here is my code
create or replace PROCEDURE PR_SEND_EMAIL(P_CLAIM_ID IN VARCHAR2,
P_LEVEL_OF_FRAUD IN NUMBER,P_MAIL_SERVER_IP IN VARCHAR2,
P_MAIL_OUTGOING_PORT IN NUMBER,P_EMAIL_ID_SENDER IN VARCHAR2,
P_EMAIL_ID_RECIPIENT IN VARCHAR2)IS V_SMTP_CONNECTION UTL_SMTP.CONNECTION;
V_SMTP_HOST VARCHAR2(25):=P_MAIL_SERVER_IP;
V_SMTP_PORT NUMBER:=P_MAIL_OUTGOING_PORT;
CRLF VARCHAR2(2):= CHR(13) || CHR(10);
V_EMAIL_PREDICTION_RAN VARCHAR2(50):='FRAUD PREDICTION TOOL - SCHEDULED RUN';
V_EMAIL_SENDER VARCHAR2(100):=P_EMAIL_ID_SENDER;
V_EMAIL_RECIPIENT VARCHAR2(100):=P_EMAIL_ID_RECIPIENT;
MESG VARCHAR2(2500);
BEGIN V_SMTP_CONNECTION:=UTL_SMTP.OPEN_CONNECTION(V_SMTP_HOST,V_SMTP_PORT);
UTL_SMTP.HELO(V_SMTP_CONNECTION,V_SMTP_HOST);
UTL_SMTP.MAIL(V_SMTP_CONNECTION,V_EMAIL_SENDER);
UTL_SMTP.RCPT(V_SMTP_CONNECTION,V_EMAIL_RECIPIENT);
UTL_SMTP.OPEN_DATA(V_SMTP_CONNECTION);
MESG:='DATE: ' || TO_CHAR( SYSDATE, 'DD MON YY HH24:MI:SS' )||
CRLF ||'FROM:PREDICTIVE MODELLING TOOL '|| CRLF ||
'SUBJECT:PREDICTION RAN FOR CLAIM NUMBER:' ||P_CLAIM_ID||CRLF||'TO:'||
V_EMAIL_RECIPIENT||CRLF||'PREDICTIVE MODEL TOOL PREDICTION RESULTS'
||CRLF||CRLF ||CRLF||'ESTIMATED LEVEL OF FRAUD : '||P_LEVEL_OF_FRAUD
||CRLF||CRLF ||'THIS PREDICTION WAS RAN BY : '||V_EMAIL_PREDICTION_RAN;
UTL_SMTP.WRITE_DATA(V_SMTP_CONNECTION,MESG);UTL_SMTP.CLOSE_DATA(V_SMTP_CONNECTION);
UTL_SMTP.QUIT(V_SMTP_CONNECTION);EXCEPTION WHEN OTHERS
THEN DBMS_OUTPUT.PUT_LINE('ERROR CODE:'||SQLCODE||' ERROR MESSAGE: '||SQLERRM);END;.... and your question is?
eDBDeployerWhat the heck is that? Is it a tool, a database, what? Whatever it is I think it is specific to your installation, as that sum of all human knowledge, Google, has never heard of it.
In my local database it is working fine without any error.What this means is that something about wherever you are trying to run this code is different from your local database. At a guess, it'll be privileges on UTL_STMP (same error message for procedures as for tables).
Cheers, APC -
JDBC adapter Stored Procedure error: parameter was not supplied
I am trying to call a Stored Procedure 'SP_FUSION_DEBMS_ADRC_MANAGE_CUSTOMER_ADDRESS' in our SQL Server database.
XI 3.0 Sp13
Jdbc Url: jdbc:microsoft:sqlserver://161.241.255.91:1433;databaseName=FusionDB;SelectMethod=Cursor
I am getting following error:
beging of error-----
Exception caught by adapter framework: Error processing request in sax parser: Error when executing statement for table/stored proc. 'SP_FUSION_DEBMS_ADRC_MANAGE_CUSTOMER_ADDRESS' (structure 'Statement1'): java.sql.SQLException: [Microsoft][SQLServer 2000 Driver for JDBC][SQLServer]Procedure 'SP_FUSION_DEBMS_ADRC_MANAGE_CUSTOMER_ADDRESS' expects parameter '@control_no', which was not supplied.
End of error-----
I have defined the field "control_no" in the interface defenition but I am not sure what causing this error, error message is mis-leading.
Please let me know if you have any hints/comments?
thanks,
Laxman moluguHi Laxman,
maybe you have checked this already...from the following help link....DECIMAL might be something you might want to try out....
http://help.sap.com/saphelp_nw04/helpdata/en/2e/96fd3f2d14e869e10000000a155106/frameset.htm
<i>action=EXECUTE
Statements with this action result in a stored procedure being executed. The name of the element is interpreted as the name of the stored procedure in the database. If you use the optional <table> element, the value specified here is used as the stored procedure name. This enables you, for example, to define stored procedure names containing non-XML-compatible characters or characters that prevent them from being used in interface definitions in the Integration Builder/PCK. If specified, <table> must be the first element in the block within <dbTableName>.
The elements within the stored procedure are interpreted as parameters. They can optionally have the attribute isInput=1 (input parameter) or isOutput=1 (output parameter) or both (INOUT parameter). If both attributes are missing, the element is interpreted as an input parameter. The parameter names must be identical to those of the stored procedure definition.
The attribute type=<SQL-Datatype> , which describes the valid SQL data type, is mandatory for all parameter types (IN, OUT, INOUT).
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).</i> -
Trap/display stored procedure errors
Hi,
We are running oracle DB 11g.
In oracle forms, if I want to trap an error, I do exception and then do MESSAGE().
In oracle stored procedure I can do exception but how do I display my formatted message. I am calling the stored procedure from an oracle form.
Here is the piece of code. If the username or password is wrong oracle throws out 312000 error, I want to trap that and display a user friendly message.
PROCEDURE LDAP_LOGIN (ldap_host VARCHAR2,ldap_port VARCHAR2,
ldap_user VARCHAR2, ldap_password VARCHAR2) IS
ldap_retval PLS_INTEGER;
ldap_session DBMS_LDAP.session;
BEGIN
DBMS_LDAP.USE_EXCEPTION := TRUE;
--- connect to LDAP server
ldap_session := DBMS_LDAP.init(hostname => ldap_host,
portnum => ldap_port);
ldap_retval := DBMS_LDAP.simple_bind_s(ld => ldap_session,
dn => ldap_user,
passwd => ldap_password);
--- disconnect from the LDAP server
ldap_retval := DBMS_LDAP.unbind_s(ld => ldap_session);
EXCEPTION
WHEN OTHERS THEN
END; Thanks
Munish
Edited by: Munish on Jan 9, 2013 1:28 PM>
In oracle stored procedure I can do exception but how do I display my formatted message. I am calling the stored procedure from an oracle form.
Here is the piece of code. If the username or password is wrong oracle throws out 312000 error, I want to trap that and display a user friendly message.
>
You use the EXCEPTION_INIT pragm to associate a name with the error number.
See the PL/SQL Language doc
http://docs.oracle.com/cd/B28359_01/appdev.111/b28370/errors.htm#i1863
>
Associating a PL/SQL Exception with a Number (EXCEPTION_INIT Pragma)
To handle error conditions (typically ORA-n messages) that have no predefined name, you must use the OTHERS handler or the pragma EXCEPTION_INIT. A pragma is a compiler directive that is processed at compile time, not at run time.
In PL/SQL, the pragma EXCEPTION_INIT tells the compiler to associate an exception name with an Oracle Database error number. That lets you refer to any internal exception by name and to write a specific handler for it. When you see an error stack, or sequence of error messages, the one on top is the one that you can trap and handle.
You code the pragma EXCEPTION_INIT in the declarative part of a PL/SQL block, subprogram, or package using the following syntax:
PRAGMA EXCEPTION_INIT(exception_name, -Oracle_error_number);
where exception_name is the name of a previously declared exception and the number is a negative value corresponding to an ORA-n error. The pragma must appear somewhere after the exception declaration in the same declarative section, as shown in Example 11-4.
Example 11-4 Using PRAGMA EXCEPTION_INIT
DECLARE
deadlock_detected EXCEPTION;
PRAGMA EXCEPTION_INIT(deadlock_detected, -60);
BEGIN
NULL; -- Some operation that causes an ORA-00060 error
EXCEPTION
WHEN deadlock_detected THEN
NULL; -- handle the error
END; -
Stored Procedure error in Java
My Java application is invoking stored procedure(Oracle 10g). The stored procedure is opening a cursor for a SQL query that is created dynamically in side the procedure. Whenever there is an error while opening the cursor (i.e. executing the SQL query), I get the following exception message in Java application logs irrespective of what error has caused during SQL execution.
SQLException for SQL [{call PRC_TEST(?, ?, ?, ?, ?, ?, ?, ?)}]; SQL state [60000]; error code [604]; ORA-00604: error occurred at recursive SQL level 1
ORA-01003: no statement parsed
; nested exception is java.sql.SQLException: ORA-00604: error occurred at recursive SQL level 1
ORA-01003: no statement parsed
e.g. If the query is like select * from tableA and I dont have proper privlieges. I should get error message while opening the cursor :- insufficient privileges.
Is there any way where we can get more precise(or exact!) error message (in Java application logs) that stopped SQL execution while opening the cursor?I'm using a callable statement.
The strange thing is that, when i remove all IN and OUT paramters in the java code and the stored procedure, both the call to the stored procedure and teh execution of the stored procedure works.
The moment I add in just a IN parameter (in the stored procedure, and setting it in the java code) it stops working, and i receive this error.
java.sql.SQLException: ORA-06550: line 1, column 23:
PLS-00103: Encountered the symbol "" when expecting one of the following:
:= . ( @ % ;
at oracle.jdbc.dbaccess.DBError.throwSqlException(DBError.java:114)
heres the java code and stored procedure
CREATE OR REPLACE PROCEDURE sampleProcedure(tax out number)
is
BEGIN
tax := 10 *.15;
/END;
CallableStatement statement =conn.prepareCall("{call sampleprocedure ?}");
statement.registerOutParameter(1,java.sql.Types.INTEGER);
statement.execute();
ResultSet rs = statement.getResultSet();
if((rs = statement.getResultSet()) != null){ -
Hi All,
Interface proxy to JDBC :
In this I have used stored procedures and implemented structure accordingly.
issue is while testing the interface its showing error for 1 field
" Unable to execute statement for table or stored procedure. 'ABCD_SP' (Structure 'ABCD') due to java.sql.SQLException: Unsupported parameter type 'INT' for parameter 'VINSI' found "
"JDBC message processing failed; reason Error processing request in sax parser: Error when executing statement for table/stored proc. 'ABCD_SP' (structure 'ABCD'): java.sql.SQLException: Unsupported parameter type 'INT' for parameter 'VINSI' found "
I have communicated with DB team and they are saying that field ABCD is "INT" type only . In the same way in my message mapping also i have given INT for Type attribute .
Please help what is the root cause .
VinHi,
i think you defined Parameter type as "INT" and the value is coming in CHAR formate.
If Parameter type as "INT" then value should be some number and not Charectors
If Parameter type as "CHAR" then value should be some Charecters and not NUM.
Regards,
Mastan -
Hi,
My Problem is when im adding dataset with stored procedure, im getting this error.
I Can access database,
Could not create a list of fields for the query. Verify that you can connect to the data source and that your query syntax is correct.
ORA-06550: line 1, column 7: PLS-00306: wrong number or types of arguments in call to 'PROCEDURE_NAME' ORA-06550: line 1, column 7: PL/SQL:
Statement ignored
stored procedure is simple select :
CREATE OR REPLACE PROCEDURE [PROCEDURE_NAME](L_CURSOR out SYS_REFCURSOR)
is
Begin
open L_CURSOR for
SELECT [columnname] FROM
[tablename]
End;
Configuration Details:
DB: Oracle Database 10g Enterprise Edition Release 10.2.0.4.0 - 64biOracle Developer Tools for Visual Studio Copyright (c) 2005,2014 SQL Server Data Tools Type: Oracle , Data Provider : .Net Framework Data Provider For OracleThe answer is of inside question. It is about provider. Change my provider ODTwithODAC for 10g (my database version). And problem resolved.
Thank you for your helps,
Regards,
Arda -
Bea type 4 db2 driver-stored procedure error
Iam creating a connection pool in weblogic 9.2 MP2
using bea type 4 db2 driver and excuting a stored procedure.Iam getting following error
I enabled spy
spy(2008/02/13 09:41:58.050)>> Driver Name = DB2
spy(2008/02/13 09:41:58.050)>> Driver Version = 3.60.24 (023731.010811.022315)
spy(2008/02/13 09:41:58.050)>> Database Name = DB2/MVS
spy(2008/02/13 09:41:58.050)>> Database Version = 8.1.5
spy(2008/02/13 09:44:11.063)>> java.sql.SQLException: [BEA][DB2 JDBC Driver][DB2]UNACCEPTABLE SQL STATEMENT ErrorCode=-84 SQL
State=42612
The code is using
CALL SP03 (?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?)
as follows
String sql = "CALL SP03 (?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?)";
myCallableStmt = con.prepareCall(sql);
is ther are any issues in calling stored procedure with type 4 bea db2 driver.
connectrion pool details
jdbc:bea:db2://server:447
weblogic.jdbc.db2.DB2Driver
user=user
LocationName=server
portNumber=447
serverName=host
batchPerformanceWorkaround=true
The code is working fine with type 2 ibm driver connection pool
Also Iam trying with ibm type 4 driver
Iam getting following error in configuration itself
<Feb 13, 2008 11:18:44 AM EST> <Error> <JDBC> <BEA-001112> <Test "SELECT COUNT(*) FROM
abc.xy_def" set up for pool "DataSourceIBM" failed with exception: "com.ibm.db2.jcc.a.SqlException: DB2 SQL error: SQLCODE: -725,
SQLSTATE: 42721, SQLERRMC: CLIENT APPLNAME;server".>
details
jdbc:db2://mvsavt1_vipa.corpny.csfb.com:447/server
com.ibm.db2.jcc.DB2Driver
user=user
locationName=server
portNumber=450
drivertype=4
Any configuration required at db2 serverOk, Odd. Please email this post (the code below) and the
output of each to [email protected] and ask them to investigate
why one driver finds the procedure and the other doesn't.
This will get back to me officially, and then I will be able
to enlist all the resources to debug it. Is the stored
procedure owned by the same schema as your 'user'?
Mohamed Rabbani P M wrote:
Joe,
It is the same code you gave
BEA Driver Code
import java.io.*;
import java.util.*;
import java.net.*;
import java.sql.*;
import weblogic.common.*;
public class dddb2
public static void main(String argv[])
throws Exception
Connection c = null;
try
java.util.Properties props = new java.util.Properties();
Driver d = (Driver)Class.forName("weblogic.jdbc.db2.DB2Driver").newInstance();
props.put("user", "user");
props.put("password", "password");
props.put("locationName", "dbserver");
String URL = "jdbc:bea:db2://dbhost:447";
c = d.connect(URL, props);
DatabaseMetaData dm = c.getMetaData();
System.out.println(dm.getDriverVersion());
System.out.println("Database version is " + dm.getDatabaseProductVersion() );
CallableStatement p = c.prepareCall("{ CALL SP03 (?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?) }");
p.setInt(1,1234);
p.setString(2,"XYZ");
p.setString(3,"XYZ");
p.setInt(5,1234);
p.setString(6,"");
p.setString(7,"XYZ");
p.setString(9,"XYZ");
p.setString(12,"XYZ");
p.registerOutParameter(4,Types.INTEGER);
p.registerOutParameter(8,Types.INTEGER);
p.registerOutParameter(10,Types.INTEGER);
p.registerOutParameter(11,Types.INTEGER);
p.registerOutParameter(13,Types.INTEGER);
p.setFetchSize(3);
p.execute();
catch (Exception e)
{ e.printStackTrace(); }
finally
{ try {c.close();}catch (Exception e){} }
IBM Driver Code
import java.io.*;
import java.util.*;
import java.net.*;
import java.sql.*;
import weblogic.common.*;
public class dddb2ibm
public static void main(String argv[])
throws Exception
Connection c = null;
try
java.util.Properties props = new java.util.Properties();
Driver d = (Driver)Class.forName("com.ibm.db2.jcc.DB2Driver").newInstance();
props.put("user", "user");
props.put("password", "password");
//props.put("databaseName", "dbserver");
String URL = "jdbc:db2://dbhost:447/dbserver";
c = d.connect(URL, props);
DatabaseMetaData dm = c.getMetaData();
System.out.println(dm.getDriverVersion());
System.out.println("Database version is " + dm.getDatabaseProductVersion() );
CallableStatement p = c.prepareCall("{ CALL SP03 (?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?) }");
p.setInt(1,1234);
p.setString(2,"XYZ");
p.setString(3,"XYZ");
p.setInt(5,1234);
p.setString(6,"");
p.setString(7,"XYZ");
p.setString(9,"XYZ");
p.setString(12,"XYZ");
p.registerOutParameter(4,Types.INTEGER);
p.registerOutParameter(8,Types.INTEGER);
p.registerOutParameter(10,Types.INTEGER);
p.registerOutParameter(11,Types.INTEGER);
p.registerOutParameter(13,Types.INTEGER);
p.setFetchSize(3);
p.execute();
catch (Exception e)
{ e.printStackTrace(); }
finally
{ try {c.close();}catch (Exception e){} } -
Callable statement with oracle stored procedure error
i'm calling a stored procedure in java with the following code. However i constantly recieve this error
so what is going on please HELP
Parameter Type Conflict: sqlType=2006
my call statement would be this:
call Statement = {call getUserByLogin(?,?,?,?)}
if(storedProcedureName=="getUserByLogin"){
strCStmt = ("{call " + storedProcedureName +"(?,?,?,?) }");
cStmt.setObject(1, "system");
cStmt.setObject(2, "username");
cStmt.setObject(3,"password");
cStmt.registerOutParameter(4, java.sql.Types.REF);
rs = cStmt.executeQuery();
i've also tried it with a setString as the IN parameter:
here's the stored procedure:
CREATE OR REPLACE PROCEDURE getUserByLogin (
arg_subscriptionName IN varchar,
arg_loginName IN varchar,
arg_password IN varchar,
arg_rec_userinfo_valLanguage OUT types.rec_userinfo_valLanguage
) AS
var_userNum int;
BEGIN
select
u.userNum into var_userNum
from
userInfo u,
subscription s
where
s.subscriptionName = arg_subscriptionName AND
s.subscriptionNum = u.subscriptionNum AND
u.loginName = arg_loginName AND
u.password = arg_password;
if (var_userNum is null) then
var_userNum := 0;
end if;
getUser(var_userNum, arg_rec_userinfo_valLanguage);
END;i'm calling a stored procedure in java with the
following code. However i constantly recieve this
error
so what is going on please HELP
Parameter Type Conflict: sqlType=2006
my call statement would be this:
call Statement = {call getUserByLogin(?,?,?,?)}
if(storedProcedureName=="getUserByLogin"){
strCStmt = ("{call " + storedProcedureName +"(?,?,?,?)
cStmt.setObject(1, "system");
cStmt.setObject(2, "username");
cStmt.setObject(3,"password");
cStmt.registerOutParameter(4, java.sql.Types.REF);
rs = cStmt.executeQuery();
i've also tried it with a setString as the IN
parameter:
here's the stored procedure:
CREATE OR REPLACE PROCEDURE getUserByLogin (
arg_subscriptionName IN varchar,
arg_loginName IN varchar,
arg_password IN varchar,
arg_rec_userinfo_valLanguage OUT
types.rec_userinfo_valLanguage
) AS
var_userNum int;
BEGIN
select
u.userNum into var_userNum
from
userInfo u,
subscription s
where
s.subscriptionName = arg_subscriptionName AND
s.subscriptionNum = u.subscriptionNum AND
u.loginName = arg_loginName AND
u.password = arg_password;
if (var_userNum is null) then
var_userNum := 0;
end if;
getUser(var_userNum, arg_rec_userinfo_valLanguage);
END;
/Hai,
Try with this if u are using Oracle.
import oracle.sql.*;
import oracle.jdbc.driver.*;
(inbetween ur code)
cStmt.registerOutParameter(4, OracleTypes.CURSOR);
//in place of "cStmt.registerOutParameter(4, java.sql.Types.REF);"
Hope u reply with joy.
regards,
Siva Kumar Annavaram
Maybe you are looking for
-
I can´t remember the security code to unblock my iPod touch and when I try to synchronize it with iTunes I can´t because it ask me to introduce the code that I don´t remember. In my iPod says that it is desactivated and I need to connect to iTunes...
-
Maximum Size for documents?
Is there a maximum size for a Pages document? I am trying to insert pictures into a travel journal and have got as far as 60 something pages with 44 pages having photos at various angles/shadows etc. but the program has slowed right down and now when
-
Checking values in a loop, any help would be great
Am having a right messy time trying to solve the following problem. tring to stop the same question appearing by checking the new random question agains the questions in a db. if it already on the db it get another randomQuestion from another source.
-
Reposting: x3300 M4 "No usable Disks have been Found" Error
This post was originally posted on IBM's developerWorks public forum (https://www.ibm.com/developerworks/community/forums/html/topic?id=1715756f-944a-417c-978c-aad561700e... The following is a summary of the post issue and the response. Issue: I rece
-
Schedule run issue: Late dates earlier than start/finish dates
Hi, I am running into an issue with one of my contractors. When the contractor sends the xer file, all the critical late start dates are a day earlier than the start date i.e. if the start date is Mar 03, 2011 then the late start date is Mar 02, 2011