Invalid Object when Calling Stored Procedure from JDBC Adapter
JDBC Outbound adapter in XI 2.0 connected to SQL Server. I've coded my mapping to format the XSL mapping properly but the Adapter appears to not be able to find the Stored Procedure. Error message returned is "Invalid Object spStoredProcedureName".
Does anybody have any clue as to what I'm missing???
I know this is trivial, but did you use the "full" name of the SP as <schema>.<procname>???
HTH
Similar Messages
-
Calling Stored Procedure from JDBC Adapter
Hello,
I am Updating a SQL Server Table using JDBC Adapter.
Now I have multiple input rows and the procedure needs to be called for each set.
Do I need to use multimapping for this or just generating multiple <b>Statement</b> node will solve?
Also For this will there is any knows/ forseen problem (like Transaction handling) that I need to take care of?
Thanks and Regards,
Himadri
Message was edited by:
Himadri ChakrabortyHimadri,
You can just create multiple statement nodes in one message.
I am not aware of any known or foreseen issues with this approach.
Kind regads,
Koen -
Urgent! Call stored procedure from jdbc vs. call from sqlplus?
Hello I met a strange problem when using JDBC (to Oracle). I have a stored procedure mypack.myproc, which updates a table (only one row and one column in the table). I found that when I called the procedure directly from sql*plus, like:
==========
BEGIN
mypack.myproc;
END;
==========
the value is 2, which is correct.
However, if I call the procedure from with in java via jdbc, the value become 591 (which is ridiculous), the jdbc call looks like:
================
cstmt = con.prepareCall("{call mypack.myproc}");
cstmt.executeUpdate();
con.commit();
================
This is really wield, Any idea?
ThanksHey buddy, it's you again. Just let you know that you are right. The problem is caused by mis-match between jdbc date and oracle date (that procedure is used to do some date calculation). My co-worker suggested me to add this statement in the procedure, and it did solved problem:
================
DBMS_SESSION.SET_NLS( 'NLS_DATE_FORMAT', '''DD-MON-RRRR''' );
================ -
Calling Stored Procedure without JDBC-Adapter
Hallo,
as it is not possible calling Stored Procedures with the parameter Typ Record in Oracle my question: It is possible connecting to DB using native java-code for example in Mapping?
Thanks in advance,
FrankHi Frank,
Maybe you can use the DB look up using the JDBC adapter in your mapping.
Just check this blog for the same,
/people/siva.maranani/blog/2005/08/23/lookup146s-in-xi-made-simpler
As for calling an Oracle Strored Procedure, it is possible using a RECEIVER JDBC adapter, but not a SENDER JDBC adapter.
<i> import the jdbc-driver (oracle) in an archive in Designer.</i>
Also, this imported archive should be under any Namespace, but, it should be in the same SWCV as the one in which the mapping is being executed.
Regards,
Bhavesh -
Calling Stored Procedure from JDBC MSSQL
Ok, I have a stored procedure on a MsSQL Server 2000 data base. I need to call it to encrypt/decrypt passwords, my problem is when I run it from Query Analyzer it works fine but not in JDBC land. Below I have included my code. I have read you need to use a callable statement, but my query has a proc call embedded in it, not just a proc call. Anyone know how this would be accomplished?
THanks in Advance
try {
// create an insert query
StringBuffer query = new StringBuffer();
// add strings and variables to query
query.append("INSERT INTO ");
query.append("users (Company, FirstName, LastName, Username, ");
query.append("Password, Email) ");
query.append("values(");
query.append("'" + form.getCompany() + "', ");
query.append("'" + form.getFirstName() + "', ");
query.append("'" + form.getLastName() + "', ");
query.append("'" + form.getUsername() + "', ");
query.append("dbo.fn_sys_encryptpwd('" + form.getPassword() + "', '" + key + "'), " );
query.append("'" + form.getEmail() + "')");
// get the datasource from the From the context
DataSource dataSource = ResourceLocator.getRCDataSource();
// open a connection
Connection conn = dataSource.getConnection();
// make a statement and execute it
CallableStatement statement = conn.prepareCall(query.toString()) ;
//Statement statement = conn.createStatement();
statement.execute();
// Insert has been performed...destroy the statement and connection.
statement.close();
conn.close();
}I tried with Statement first then I tried with the PreparedStatement, but neither one worked. I have inlcuded part of the stackTrace to give you an idea of my problem
Thanks
java.sql.SQLException: [Microsoft][SQLServer 2000 Driver for JDBC][SQLServer]Invalid object name 'dbo.fn_sys_encryptpwd'.
at com.microsoft.jdbc.base.BaseExceptions.createException(Unknown Source
at com.microsoft.jdbc.base.BaseExceptions.getException(Unknown Source)
at com.microsoft.jdbc.sqlserver.tds.TDSRequest.processErrorToken(Unknown
Source)
at com.microsoft.jdbc.sqlserver.tds.TDSRequest.processReplyToken(Unknown
Source)
at com.microsoft.jdbc.sqlserver.tds.TDSExecuteRequest.processReplyToken(
Unknown Source)
at com.microsoft.jdbc.sqlserver.tds.TDSRequest.processReply(Unknown Sour
ce)
at com.microsoft.jdbc.sqlserver.SQLServerImplStatement.getNextResultType
(Unknown Source)
at com.microsoft.jdbc.base.BaseStatement.commonTransitionToState(Unknown
Source)
at com.microsoft.jdbc.base.BaseStatement.postImplExecute(Unknown Source)
at com.microsoft.jdbc.base.BasePreparedStatement.postImplExecute(Unknown
Source)
at com.microsoft.jdbc.base.BaseStatement.commonExecute(Unknown Source)
at com.microsoft.jdbc.base.BaseStatement.executeInternal(Unknown Source)
at com.microsoft.jdbc.base.BasePreparedStatement.execute(Unknown Source)
at org.apache.tomcat.dbcp.dbcp.DelegatingPreparedStatement.execute(Deleg
atingPreparedStatement.java:168)
at com.retailcode.web.data.dao.LoginDAO.createLogin(LoginDAO.java:81)
at com.retailcode.web.submit.SubmissionServlet.postRegister(SubmissionSe
rvlet.java:226)
at com.retailcode.web.submit.SubmissionServlet.doPost(SubmissionServlet.
java:47)
at javax.servlet.http.HttpServlet.service(HttpServlet.java:709)
at javax.servlet.http.HttpServlet.service(HttpServlet.java:802)
at org.apache.catalina.core.ApplicationFilterChain.internalDoFilter(Appl
icationFilterChain.java:252)
at org.apache.catalina.core.ApplicationFilterChain.doFilter(ApplicationF
ilterChain.java:173)
at org.apache.catalina.core.StandardWrapperValve.invoke(StandardWrapperV
alve.java:213)
at org.apache.catalina.core.StandardContextValve.invoke(StandardContextV
alve.java:178)
at org.apache.catalina.core.StandardHostValve.invoke(StandardHostValve.j
ava:126)
at org.apache.catalina.valves.ErrorReportValve.invoke(ErrorReportValve.j
ava:105)
at org.apache.catalina.core.StandardEngineValve.invoke(StandardEngineVal
ve.java:107)
at org.apache.catalina.connector.CoyoteAdapter.service(CoyoteAdapter.jav
a:148)
at org.apache.coyote.http11.Http11Processor.process(Http11Processor.java
:869)
at org.apache.coyote.http11.Http11BaseProtocol$Http11ConnectionHandler.p
rocessConnection(Http11BaseProtocol.java:664)
at org.apache.tomcat.util.net.PoolTcpEndpoint.processSocket(PoolTcpEndpo
int.java:527)
at org.apache.tomcat.util.net.LeaderFollowerWorkerThread.runIt(LeaderFol
lowerWorkerThread.java:80)
at org.apache.tomcat.util.threads.ThreadPool$ControlRunnable.run(ThreadP
ool.java:684)
at java.lang.Thread.run(Unknown Source) -
Different session used when calling stored procedure from form
after commiting data in a form to a table, a stored procedure is called that inserts the data written to the table into several other tables. Some columns in the original table are updated - no commit is issued in the procedure. On returning from the procedure the form is re-queried but the updated columns don't contain the updates. This seems to imply that the stored procedure is running as a different session to the one of the form.
Is this the case? Can we make the form and the stored procedure use the same session so that the data is available in both without having to commit in the procedure?No. They should be within one session unless you explicitly open a new session.
The reason why you dont see updates of the data block when you requery is probably the changes on the form never go to the back end. I think first you have to make sure data changes go to db table. You can do a commit_form before calling the stored procedure and open up another session (e.g. sqlplus) to check the data in the table changed or not. -
Issue when calling Stored procedure from application
Dear all,
Oracle DB version: 11.2.0.3
OS : RHEL 5.9 64-bit version
We are trying to execute one of the stored procedure (belonging to oracle DB schema) from our Dotnet application(recites in application server) but it takes more than 30 seconds to fetch the records. The stored procedure is called from application. When we try the same procedure from SQL developer or TOAD it completes within a second. Could anyone suggest on the issue?
Note: we are calling a remote DB view from our DB.
No. of records in the view : 49484929 rows
Thanks in advance,
Imran KhanThanks Billy for the reply. The following is the function of the .net application which calls the procedure:
public DataSet ResourceMonitor(String Date, String DateTime, String starttime, String endtime, String Assstarttime, String Assendtime)
try
cLog.StartMethod(this, System.Reflection.MethodInfo.GetCurrentMethod().Name);
Database dbResourceMonitor = null;
DataSet Resourceset = new DataSet();
dbResourceMonitor = DatabaseFactory.CreateDatabase();
DbCommand dbCommand = dbResourceMonitor.GetStoredProcCommand("SP_RESOURCEMONITOR1");
dbResourceMonitor.AddInParameter(dbCommand, "P_Date", DbType.String, Date);
dbResourceMonitor.AddInParameter(dbCommand, "P_DateTime", DbType.String, DateTime);
dbResourceMonitor.AddInParameter(dbCommand, "P_Starttime", DbType.String, starttime);
dbResourceMonitor.AddInParameter(dbCommand, "P_Endtime", DbType.String, endtime);
dbResourceMonitor.AddInParameter(dbCommand, "P_AssStarttime", DbType.String, Assstarttime);
dbResourceMonitor.AddInParameter(dbCommand, "P_AssEndtime", DbType.String, Assendtime);
//dbCommand.Parameters.Add(BuildRefCursorParameter("DEPRECSET"));
dbCommand.Parameters.Add(BuildRefCursorParameter("RECORDSET1"));
dbCommand.Parameters.Add(BuildRefCursorParameter("RECORDSET2"));
dbCommand.Parameters.Add(BuildRefCursorParameter("RECORDSET3"));
dbCommand.Parameters.Add(BuildRefCursorParameter("RECORDSET4"));
return Resourceset;
catch (Exception ex)
cLog.LogMessages(this, ex.Message, cLog.eWiproMessageTypes.ErrorType);
throw ex;
finally
cLog.EndMethod(this, System.Reflection.MethodInfo.GetCurrentMethod().Name);
The stored procedure SP_RESOURCEMONITOR1 has the following DDL:
CREATE OR REPLACE PROCEDURE SP_RESOURCEMONITOR1
( P_Date IN VARCHAR2,
P_DateTime IN VARCHAR2,
P_Starttime IN VARCHAR2,
P_Endtime IN VARCHAR2,
P_AssStarttime IN VARCHAR2,
P_AssEndtime IN VARCHAR2,
P_Mode IN NUMBER,
RECORDSET1 OUT SYS_REFCURSOR,
RECORDSET2 OUT SYS_REFCURSOR,
RECORDSET3 OUT SYS_REFCURSOR,
RECORDSET4 OUT SYS_REFCURSOR
)AS
BEGIN
OPEN RECORDSET1 FOR
Select ROLEMASTER.ROLEID,ROLEMASTER.ROLENAME as ResourceGroup,departmentmaster.DEPARTMENTNAME,departmentmaster.departmentid from Rolemaster
INNER JOIN departmentmaster ON Rolemaster.DEPTID=departmentmaster.DEPARTMENTID
WHERE 1=1 AND sysdate >=Rolemaster.START_DATE AND sysdate<=Rolemaster.END_DATE AND Upper(RoleMaster.Rolename) not like '%HIGHLOADER%' AND displayinlist=1
ORDER BY ROLENAME;
OPEN RECORDSET2 FOR
select ROM.ROLENAME as ResourceGroup, fn_get_resource_status(p_starttime, p_endtime,RM.Resourceid,RM.DeptID) AS Status,upper(RM.Resourceid)as Resourceid,RM.RoleID,RM.DeptID,TRIM(RM.RESOURCENAME) AS RESOURCENAME,'Detail'As Details,'ResChng'As ResChng,'Calender' As Calender FROM ResourceMaster RM
--INNER JOIN DEPARTMENTMASTER DM ON RM.DEPTID = DM.DEPARTMENTID
INNER JOIN ROLEMASTER ROM ON RM.ROLEID = ROM.ROLEID
where --UPPER (DM.DEPARTMENTNAME) IN ('DISPATCH','TRANSPORT','TRANSPORT RAMP')
RM.DEPTID in (select DEPARTMENTID from DEPARTMENTMASTER where displayinadmin=1 and active=1) ;
if (P_Mode =2) THEN
OPEN RECORDSET3 FOR
select * from mobility_attendance_info_v where TRANSACTIONDATE >= TO_DATE(Substr(p_starttime,1, 9) ,'dd-MON-rr') - 1 order by staffno,TRANSACTIONDATETIME Desc;
END IF;
OPEN RECORDSET4 FOR
select rsa.*,planning.flightno,'' As StTime,SUBSTR(rsa.depdt,11,5) as EndTime from resourceallocation rsa inner join planning ON rsa.planningid = planning.planningid
where TO_TIMESTAMP(rsa.DEPDT,'dd-MON-rr HH24:MI')>=TO_TIMESTAMP(P_DateTime,'dd-MON-rr HH24:MI') ;
END SP_RESOURCEMONITOR1;
The view mobility_attendance_info_v is a called from a remote DB. Hope it's quite clear.
Regards,
Imran Khan -
Error while calling stored procedure from apps adapter
Hi,
I am calling Oracle applications standard api to create ar invoice (XX_BPEL_TEST_APPS_ADAPTER_PKG is the name of wrapper package created by adapter) from apps adapter but getting the following error:
Exception occured when binding was invoked. Exception occured during invocation of JCA binding: "JCA Binding execute of Reference operation 'test_apps_adapter' failed due to: Stored procedure invocation error. Error while trying to prepare and execute the APPS.XX_BPEL_TEST_APPS_ADAPTER_PKG.AR_INVOICE_API_PUB$CREATE_SIN API. An error occurred while preparing and executing the APPS.XX_BPEL_TEST_APPS_ADAPTER_PKG.AR_INVOICE_API_PUB$CREATE_SIN API. Cause: java.sql.SQLException: ORA-06531: Reference to uninitialized collection ORA-06512: at "APPS.XX_BPEL_TEST_APPS_ADAPTER_PKG", line 199 ORA-06512: at "APPS.XX_BPEL_TEST_APPS_ADAPTER_PKG", line 909 ORA-06512: at line 1 Check to ensure that the API is defined in the database and that the parameters match the signature of the API. This exception is considered not retriable, likely due to a modelling mistake. To classify it as retriable instead add property nonRetriableErrorCodes with value "-6531" to your deployment descriptor (i.e. weblogic-ra.xml). To auto retry a retriable fault set these composite.xml properties for this invoke: jca.retry.interval, jca.retry.count, and jca.retry.backoff. All properties are integers. ". The invoked JCA adapter raised a resource exception. Please examine the above error message carefully to determine a resolution.
Just wondering if anyone has faced a similar problem?I am trying to pass parameter to test my procedure but it is giving this error : ORA-06531: Reference to uninitialized collection
ORA-06512: at line 12
Here is example for my test procedure:
declare
v_session_id_tab SESSION_ID_TAB_TYPE;
v_service_type_tab SERVICE_TYPE_TAB_TYPE ;
v_service_location_tab SERVICE_LOCATION_TAB_TYPE ;
v_service_call_name_tab SERVICE_CALL_NAME_TAB_TYPE;
v_service_call_start_time_tab SERVICE_CALL_ST_TAB_TYPE;
v_service_call_end_time_tab SERVICE_CALL_ET_TAB_TYPE;
v_service_call_duration_tab SERVICE_CALL_DUR_TAB_TYPE;
v_status_tab STATUS_TAB_TYPE;
v_notes_tab NOTES_TAB_TYPE;
begin
v_session_id_tab(1) := 1;
v_service_type_tab(1) := 'db';
v_service_location_tab(1) := 'local';
v_service_call_name_tab(1) := 'Name of call';
v_service_call_start_time_tab(1) := SYSDATE;
v_service_call_end_time_tab(1) := SYSDATE;
v_service_call_duration_tab(1) := 100;
v_status_tab(1) := 'Z';
v_notes_tab(1) := 'NOTES';
BULK_INSERTS (v_session_id_tab,v_service_type_tab, v_service_location_tab,v_service_call_name_tab,v_service_call_start_time_tab,v_service_call_end_time_tab,
v_service_call_duration_tab, v_status_tab, v_notes_tab);
end;
I declare all types at schema level.
Please give your comments.
Thank you -
Invoke stored procedure from JDBC Adapter
Is there a tool that generates interfaces for stored procedure(ORACLE PL/SQL) like RFC or IDOC adapters?
Hi Denis,
I dont think there is any such tool.]
To generate a Stored Procedure of your Oracle DB, all you will have to do in your <b>JDBC adapter configuration</b> is give the name of the Stored Procedure under <Table> and you will have to give "<b>execute</b>" as the value under action attribute.
Just check this link. Hope it helps,
http://help.sap.com/saphelp_nw04/helpdata/en/b0/676b3c255b1475e10000000a114084/content.htm
http://help.sap.com/saphelp_nw04/helpdata/en/4d/8c103e05df2e4b95cbcc68fed61705/content.htm
Just check this blog of Sriram wherein a stored procedure of a MaxDB Database is called.
/people/sriram.vasudevan3/blog/2005/02/14/calling-stored-procs-in-maxdb-using-sap-xi
I have implemented a scenario which requires an Oracle stored procedure to be executed and so, if you do need any further info, let me know.
Hope this info helps,
Regards,
Bhavesh -
Error when calling Stored Procedure from backing bean
I am using Jdeveloper 11.1.1.6 and am trying to utilize the following URL to execute a SP from a backing bean: http://ramannanda.blogspot.com/2011/11/optimized-update-insert-adf.html
The reason I am looking at this is currently I have coded my backing bean to perform inserts and deletes through the use of my View Objects. I am performing up to a combined 5-10K inserts and deletes and the performance is rather slow. If there is a way to tune the view objects as well as the commit to be much faster, that is the prefered method. If that can't be done then I would like to figure out the approach identified in the URL.
I have highlighted a section of code below that is failing when using the URL approach. It errors out with the following exception: javax.el.ELException: oracle.jbo.JboException: java.sql.SQLException: Internal Error: Inconsistent catalog view
Do you have thoughts as to what might cause this exception.
create or replace
type TYP_TEST_R is object
Test_Id Number(5,0) ,
Test_Num Number(7,0)
create or replace
type TYP_TEST_TB as table of TYP_TEST_R;
private void myMethod(MyTableVORowImpl pCurrentRow) {
int i = 0;
DCIteratorBinding lDciter =
(DCIteratorBinding)getBindings().get("MyTable1Iterator");
MyAppModuleAMImpl lMyAppModuleAMImpl =
(MyAppModuleAMImpl)lDciter.getViewObject().getApplicationModule();
Connection lConnection =
lMyAppModuleAMImpl.getDBTransaction().createStatement(1).getConnection();
StructDescriptor lTblRecordStructType =
StructDescriptor.createDescriptor("DBADMIN.TYP_TEST_R",
lConnection);
.....<additional logic here>......
Object lArray[] = new Object[lSortedDifferences.size()];
while (........) {
Number lNumber = .......
Number lDifferentStore = (Number)lDifferentIterator.next();
STRUCT lTempStruct =+_
new STRUCT(lTblRecordStructType, lConnection,+_
*new Object[] { pCurrentRow.getTestId(),*+_
lDifferentStore });+_
lArray[i] = lTempStruct;
i = i + 1;
//create array structure descriptor
ArrayDescriptor lTableDesc =
ArrayDescriptor.createDescriptor("DBADMIN.TYP_TEST_TB",
lConnection);
//create an Array type with given structure definition
ARRAY lTableArray =
new ARRAY(lTableDesc, lConnection, lArray);
String lCallableProcedureStatement =
" begin DBADMIN.SP_TEST(?,?); end;";
OracleCallableStatement lOracleCallableStatement = null;
lOracleCallableStatement =
(OracleCallableStatement)lMyAppModuleAMImpl.getDBTransaction().createCallableStatement(lCallableProcedureStatement,
0);
lOracleCallableStatement.setARRAY(1, lTableArray);
lOracleCallableStatement.setString(2,
(String)ADFUtil.evaluateEL("#{sessionScope['UserName']}"));
lOracleCallableStatement.executeUpdate();
}That was helpful and now I can execute up to my last line of code: "lOracleCallableStatement.executeUpdate();"
This code executes the SP.
My SP is as follows:
create or replace
PROCEDURE SP_TEST
*( param1 IN TYP_TEST_TB,*
param2 IN VARCHAR2) as
CURSOR for_insert_csr IS
SELECT *
FROM TABLE(param1) T1;
temp_update TYP_TEST_R;
BEGIN
FOR temp_update IN for_insert_csr
LOOP
-- do stuff in this loop
END LOOP;
end;
When trying to execute the SP, I get the following error:
+<LifecycleImpl> <_handleException> ADF_FACES-60098:Faces lifecycle receives unhandled exceptions in phase INVOKE_APPLICATION 5+
javax.el.ELException: oracle.jbo.JboException: java.sql.SQLException: ORA-06550: line 1, column 7:*
PLS-00201: identifier DBADMIN.SP_TEST must be declared*
ORA-06550: line 1, column 7:*
PL/SQL: Statement ignored*
at com.sun.el.parser.AstValue.invoke(Unknown Source)*
at com.sun.el.MethodExpressionImpl.invoke(Unknown Source)*
at org.apache.myfaces.trinidad.component.UIXComponentBase.broadcastToMethodExpression(UIXComponentBase.java:1300)*
at oracle.adf.view.rich.component.UIXDialog.broadcast(UIXDialog.java:97)*
at oracle.adf.view.rich.component.fragment.UIXRegion.broadcast(UIXRegion.java:148)*
at oracle.adf.view.rich.component.fragment.ContextSwitchingComponent$1.run(ContextSwitchingComponent.java:92)*
at oracle.adf.view.rich.component.fragment.ContextSwitchingComponent._processPhase(ContextSwitchingComponent.java:361)*
at oracle.adf.view.rich.component.fragment.ContextSwitchingComponent.broadcast(ContextSwitchingComponent.java:96)*
at oracle.adf.view.rich.component.fragment.UIXInclude.broadcast(UIXInclude.java:102)*
at oracle.adf.view.rich.component.fragment.ContextSwitchingComponent$1.run(ContextSwitchingComponent.java:92)*
at oracle.adf.view.rich.component.fragment.ContextSwitchingComponent._processPhase(ContextSwitchingComponent.java:361)*
at oracle.adf.view.rich.component.fragment.ContextSwitchingComponent.broadcast(ContextSwitchingComponent.java:96)*
at oracle.adf.view.rich.component.fragment.UIXInclude.broadcast(UIXInclude.java:96)*
at oracle.adfinternal.view.faces.lifecycle.LifecycleImpl.broadcastEvents(LifecycleImpl.java:1018)*
at oracle.adfinternal.view.faces.lifecycle.LifecycleImpl._executePhase(LifecycleImpl.java:386)*
at oracle.adfinternal.view.faces.lifecycle.LifecycleImpl.execute(LifecycleImpl.java:194)*
at javax.faces.webapp.FacesServlet.service(FacesServlet.java:265)*
at weblogic.servlet.internal.StubSecurityHelper$ServletServiceAction.run(StubSecurityHelper.java:227)*
at weblogic.servlet.internal.StubSecurityHelper.invokeServlet(StubSecurityHelper.java:125)*
at weblogic.servlet.internal.ServletStubImpl.execute(ServletStubImpl.java:300)*
at weblogic.servlet.internal.TailFilter.doFilter(TailFilter.java:26)*
at weblogic.servlet.internal.FilterChainImpl.doFilter(FilterChainImpl.java:56)*
at oracle.adf.model.servlet.ADFBindingFilter.doFilter(ADFBindingFilter.java:205)*
at weblogic.servlet.internal.FilterChainImpl.doFilter(FilterChainImpl.java:56)*
at oracle.adfinternal.view.faces.webapp.rich.RegistrationFilter.doFilter(RegistrationFilter.java:106)*
at org.apache.myfaces.trinidadinternal.webapp.TrinidadFilterImpl$FilterListChain.doFilter(TrinidadFilterImpl.java:446)*
at oracle.adfinternal.view.faces.activedata.AdsFilter.doFilter(AdsFilter.java:60)*
at org.apache.myfaces.trinidadinternal.webapp.TrinidadFilterImpl$FilterListChain.doFilter(TrinidadFilterImpl.java:446)*
at org.apache.myfaces.trinidadinternal.webapp.TrinidadFilterImpl._doFilterImpl(TrinidadFilterImpl.java:271)*
at org.apache.myfaces.trinidadinternal.webapp.TrinidadFilterImpl.doFilter(TrinidadFilterImpl.java:177)*
at org.apache.myfaces.trinidad.webapp.TrinidadFilter.doFilter(TrinidadFilter.java:92)*
at weblogic.servlet.internal.FilterChainImpl.doFilter(FilterChainImpl.java:56)*
at oracle.adf.library.webapp.LibraryFilter.doFilter(LibraryFilter.java:179)*
at weblogic.servlet.internal.FilterChainImpl.doFilter(FilterChainImpl.java:56)*
at oracle.security.jps.ee.http.JpsAbsFilter$1.run(JpsAbsFilter.java:119)*
at java.security.AccessController.doPrivileged(Native Method)*
at oracle.security.jps.util.JpsSubject.doAsPrivileged(JpsSubject.java:315)*
at oracle.security.jps.ee.util.JpsPlatformUtil.runJaasMode(JpsPlatformUtil.java:442)*
at oracle.security.jps.ee.http.JpsAbsFilter.runJaasMode(JpsAbsFilter.java:103)*
at oracle.security.jps.ee.http.JpsAbsFilter.doFilter(JpsAbsFilter.java:171)*
at oracle.security.jps.ee.http.JpsFilter.doFilter(JpsFilter.java:71)*
Do you have any suggestions on what I might want to try? -
Calling stored procedures from entity object and application module
Hello
I've put in place an EntiyImpl base class containg helper methods to call stored procedures.
I now need to call stored procedures from the application module.
Apart from creating an application module base class and duplicating the helper method code is there a way
to share the helper methods for calling stored procedures between the entity impl and application module impl ?
Regards
PaulDoes the helper code depend on features of a particular entity object instance, beyond its database transaction?
If so, I'm not sure I see how it could be used from an application module class.
If not, here's what you do:
Step 1:
Parametrize the database transaction--you might even want to. So instead of
protected myHelperMethod(Object someParam) {
DBTransaction trans = getDBTransaction();
change this to
protected myHelperMethod(DBTransaction trans, Object someParam) {
Step 2: make the method public and static--once you parameterize the DBTransaction, you should be able to do this.
public static myHelperMethod(DBTransaction trans, Object someParam) {
Step 3: Remove the method from your EntityImpl base class into a utility class:
public abstract class PlSqlUtils {
private PlSqlUtils() {}
public static myHelperMethod(DBTransaction trans, Object someParam) {
When you want to call the method from an application module, entity object, or even view object class, call
PlSqlUtils.myHelperMethod(getDBTransaction(), paramValue);
Unlike Transaction.executeCommand(), this lets you provide functionality like setting procedure parameter values, retrieving OUT parameter values, etc.
Hope this helps,
Avrom -
Calling Stored Procedure from Oracle DataBase using Sender JDBC (JDBC-JMS)
Hi All,
We have requirement to move the data from Database to Queue (Interface Flow: JDBC -> JMS).
Database is Oracle.
*Based on Event, data will be triggered into two tables: XX & YY. This event occurs twice daily.
Take one field: 'aa' in XX and compare it with the field: 'pp' in YY.
If both are equal, then
if the field: 'qq' in YY table equals to "Add" then take the data from the view table: 'Add_View'.
else if the field: 'qq' in YY table equals to "Modify" then take the data from the view table: 'Modify_View'.
Finally, We need to archive the selected data from the respective view table.*
From each table, data will come differently, means with different field names.
I thought of call Stored Procedure from Sender JDBC Adapter for the above requirement.
But I heard that, we cannot call stored procedure in Oracle through Sender JDBC as it returns Cursor instead of ResultSet.
Is there any way other than Stored Procedure?
How to handle Data Types as data is coming from two different tables?
Can we create one data type for two tables?
Is BPM required for this to collect data from two different tables?
Can somebody guide me on how to handle this?
Waiting eagerly for help which will be rewarded.
Thanks and Regards,
Jyothirmayi.Hi Gopal,
Thank you for your reply.
>Is there any way other than Stored Procedure?
Can you try configuring sender adapter to poll the data in intervals. You can configure Automatic TIme planning (ATP) in the sender jdbc channel.
I need to select the data from different tables based on some conditions. Let me simplify that.
Suppose Table1 contains 'n' no of rows. For each row, I need to test two conditions where only one condition will be satisfied. If 1st condition is satisfied, then data needs to be taken from Table2 else data needs to be taken from Table3.
How can we meet this by configuring sender adapter with ATP?
================================================================================================
>How to handle Data Types as data is coming from two different tables?
If you use join query in the select statement field of the channel then whatever you need select fields will be returned. This might be fields of two tables. your datatype fields are combination of two diff table.
we need to take data only from one table at a time. It is not join of two tables.
================================================================================================
Thanks,
Jyothirmayi. -
Calling stored procedure from EJB in JSever
I have some trouble to call stored procedure from EJB deployed to JServer on Oracle8i (815).
I have been able to sucessfully test the stored procedure using thin client JDBC driver. But when I user the default connection in JServer, the stored procedure never got called. Is there any restriction of EJB in JServer?
Thanks
nullThanks man! that was a great help. looks like i am almost there. i created those items t obe hidden.
now i am passing three parameters to the procedure. my url for that column value looks like this,
javascript:P65_PARTITION_ID=#PARTITION_ID#;P65_DBC=#DBC#;P65_FILE_ID=#FILE_ID#;doSubmit('Sku_Save');
the #DBC# parameter is a name of the person that has spaces(firstname lastname). i am getting a javascript error saying,
Line: 1
Char: 37
Error:Expected ';'
i see that char 37 is the space after firstname.
any idea how i should get rid of this error.
Also, as you have been very helpful, a question further beyond :). the above procedure will return a OUT varchar parameter. i guess i have to create another item for that. how do i read it and display just below my report as text.
Thanks Again! -
How to use @jws:sql call Stored Procedure from Workshop
Is there anyone know how to use @jws tag call Sybase stored procedure within
Workshop,
Thanks,Anurag,
Do you know is there any plan to add this feature in future release? and
when?
Thanks,
David
"Anurag Pareek" <[email protected]> wrote in message
news:[email protected]..
David,
In the current release, we do not support calling stored procedures from a
database control. You will have to write JDBC code in the JWS file to call
stored procedures.
Regards,
Anurag
Workshop Support
"David Yuan" <[email protected]> wrote in message
news:[email protected]..
Anurag,
I know how to use DB connection pool and create a db control with it. In
fact, we have created a Web Service with the db control using plain SQL
in
@jws:sql. However, my question here is how to use @jws tag in Weblogic
Workshop to create a Web Services based on Sybase stored procedure orany
Stored Proc not plain SQL.
Thanks,
David
"Anurag Pareek" <[email protected]> wrote in message
news:[email protected]..
David,
You can use a database control to obtain a connection from any JDBC
Connection Pool configured in the config.xml file. The JDBC Connectionpool
could be connecting to any database, the database control is
independent
of
that.
Regards,
Anurag
Workshop Support
"David Yuan" <[email protected]> wrote in message
news:[email protected]..
Is there anyone know how to use @jws tag call Sybase stored
procedure
within
Workshop,
Thanks, -
Weird Problem calling Stored Procedure using JDBC
Scenario is..
I have J2EE application and calling stored procedure using JDBC.
My application connects to instance "A" of testDB.
Schema "A" does NOT own any packages/procedure but granted execute on oracle packages/procedures that reside in schema "B" of testDB.
In java code I call procedure(proc1) in package(pac1) which internally calls procedure(proc2) in package(pac2).
The problem occurs when procedure pac2.proc2 is modified. After the modification, my java code fails and throws an exception "User-Defined Exception" and I am also getting "ORA-06508: PL/SQL: could not find program unit being called". This clears up only if I bounce the web container. (This doesn't happen if I modify pac1.proc1 and run my application)
Has any one faced this problem? Please suggest if any thing can be changed in jdbc code to fix this problem.
ThanksHi,
I assume these are PL/SQL packages and that the changes are made at the package specification level?
If so, it looks like you are hitting the PL/SQL dependencies rules. In other words, if the spec of proc2 is changed, then proc1 is invalidated, since proc1 still depends on the old version of proc2's spec. As a result, if you try to run proc1, its spec must either be explicitly rewritten before it could run again or implicitly recompiled first, if the (implicit) recompilation fails, it won’t run.
Kuassi http://db360.blogspot.com
Maybe you are looking for
-
Access Denied error while editing interactive forms in NWDS
Hi, I am getting following error while editing the Adobe Interactive form in NWDS, I didnt understand why i am getting this error please help me in this issue the error i am getting is as follows java.io.FileNotFoundException: C:\Documents and Settin
-
Text in Line Items for BCS top side entry
Do any of you experts out there know of a way to enter text in bcs line items for top side entries? Thanks Tim
-
Whenever I drag a clip from the clips pane onto the scrubbing board, it loses its audio. When playing the clip in the clips pane it sounds fine, but it is frustratingly silent when I actually add it to my movie. I'm on imovie 4. When exported, there'
-
I am trying to upload the IPod / Itunes software and I get a 1607 error code. Can someone please help me?
-
Aggregate functions without group by clause
hi friends, i was asked an interesting question by my friend. The question is... There is a DEPT table which has dept_no and dept_name. There is an EMP table which has emp_no, emp_name and dept_no. My requirement is to get the the dept_no, dept_name