CreateCallableStatement
I am a new user to JDeveloper and am working through the tutorial on calling a stored PL/SQL procedure. All the info from the Tutorial seems to be working fine. I modified the procedure so that it would have an IN OUT parameter instead of just IN parameters because I wanted to see if it would pass back data successfully too.
In doing this I ran into some datatype problems. I have figured out how to fix the problems but I do not know why I had to fix them this way. Here is the code from the Tutorial:
public void doDML(int operation, TransactionEvent e) {
// Don't call the superclass. This procedure handles only updates
//super.doDML(operation, e);
CallableStatement stmt = null;
// ONLY Perform updates, this Entity won't allow inserts/deletes.
if (operation == DML_UPDATE)
// Prepare JDBC CallableStatement with the Stored Procedure Call
String updateStr = "{call update_inventory(?,?,?,?)}";
stmt = getDBTransaction().createCallableStatement(updateStr, 1);
try
// Bind the Statement Parameters and Execute this Statement
stmt.setString(1, getId().toString());
stmt.setString(2, getDescription().toString());
stmt.setString(3, getPrice().toString());
stmt.setString(4, getOnhand().toString());
stmt.registerOutParameter(4, Types.VARCHAR);
stmt.execute();
System.out.println("OnHand: " + stmt.getString(4));
catch (Exception ex)
throw new oracle.jbo.JboException(ex);
finally
try
stmt.close();
catch (Exception nex)
I added the 'registerOutParamater' line and the 'System.out.println' statement. The Out parameter I am registering is a NUMBER colum in the database. So, I had it as NUMERIC in the registerOutParameter statement. I was getting the ArrayOfOutOfBoundsException error all the time and I noticed that when I would update the form and type '100' in the field it would get stored in the database as '-4.6E-10' or something like that...hence producing the error.
I finally realized that i had to register the OutParameter as a VARCHAR b/c in the above statements it is being passed in as a String. I tried doing the set command as setInt instead of setString but got an error that createCallableStatement does not accept that type of argument.
Could someone please explain to me why these are all being converted to strings to pass into the procedure and why my out parameter must then also be a string when it is a NUMBER column in the database? I am very confused by this. All the procedure in the database does is a simple update statement....there is no data conversion in the database so I am really confused about the string types. Obviously OnHand and Price are NUMBER columns in the database.
Thanks for your help!
null
Can you use the approach mentioned in (use cs.setObject())
ADF Developer's Guide: http://download.oracle.com/docs/cd/E15523_01/web.1111/b31974/bcadvgen.htm#sm0297
Section 37.5.4 How to Call Other Types of Stored Procedures
Code snippet:
*public Date callProcWithOutArgs(Number n, String v) {*
CallableStatement st = null;
*try {*
*// 1. Define the PL/SQL block for the statement to invoke*
String stmt = "begin devguidepkg.proc_with_out_args(?,?,?); end;";
*// 2. Create the CallableStatement for the PL/SQL block*
st = getDBTransaction().createCallableStatement(stmt,0);
*// 3. Register the positions and types of the OUT parameters*
st.registerOutParameter(2,Types.DATE);
st.registerOutParameter(3,Types.VARCHAR);
*// 4. Set the bind values of the IN parameters*
st.setObject(1,n);
st.setObject(3,v);
*// 5. Execute the statement*
st.executeUpdate();
*// 6. Create a bean to hold the multiple return values*
DateAndStringBean result = new DateAndStringBean();
*// 7. Set value of dateValue property using first OUT param*
result.setDateVal(new Date(st.getDate(2)));
*// 8. Set value of stringValue property using 2nd OUT param*
result.setStringVal(st.getString(3));
*// 9. Return the result*
return result;
*} catch (SQLException e) {*
throw new JboException(e);
*} finally {*
*if (st != null) {*
*try {*
*// 10. Close the JDBC CallableStatement*
st.close();
catch (SQLException e) {}
Thanks,
Navaneeth
Similar Messages
-
I am trying to use the below code in DoDML in the EO.
It works fine if I don't use the setDate and setRowID. If I use it gets underlined in red color.
Is there any work around please.
try {
cs=getDBTransaction().createCallableStatement("begin proc1(?,?,?,?,?); end;",0);
cs.setString( 1, loc_var1);
cs.setRowID( 2, loc_rowid ); <<<<<<<<<<<<<<<<
cs.setString( 3, loc_var3);
cs.setDate( 4, loc_startdate ); <<<<<<<<<<<<<<< this is getStartDate()
cs.registerOutParameter( 5, Types.VARCHAR );
cs.executeUpdate();
loc_out_msg = cs.getString(5);
System.out.println(loc_out_msg);
// throw new JboException(loc_out_msg);
catch (Exception e1) { e1.printStackTrace(); }Can you use the approach mentioned in (use cs.setObject())
ADF Developer's Guide: http://download.oracle.com/docs/cd/E15523_01/web.1111/b31974/bcadvgen.htm#sm0297
Section 37.5.4 How to Call Other Types of Stored Procedures
Code snippet:
*public Date callProcWithOutArgs(Number n, String v) {*
CallableStatement st = null;
*try {*
*// 1. Define the PL/SQL block for the statement to invoke*
String stmt = "begin devguidepkg.proc_with_out_args(?,?,?); end;";
*// 2. Create the CallableStatement for the PL/SQL block*
st = getDBTransaction().createCallableStatement(stmt,0);
*// 3. Register the positions and types of the OUT parameters*
st.registerOutParameter(2,Types.DATE);
st.registerOutParameter(3,Types.VARCHAR);
*// 4. Set the bind values of the IN parameters*
st.setObject(1,n);
st.setObject(3,v);
*// 5. Execute the statement*
st.executeUpdate();
*// 6. Create a bean to hold the multiple return values*
DateAndStringBean result = new DateAndStringBean();
*// 7. Set value of dateValue property using first OUT param*
result.setDateVal(new Date(st.getDate(2)));
*// 8. Set value of stringValue property using 2nd OUT param*
result.setStringVal(st.getString(3));
*// 9. Return the result*
return result;
*} catch (SQLException e) {*
throw new JboException(e);
*} finally {*
*if (st != null) {*
*try {*
*// 10. Close the JDBC CallableStatement*
st.close();
catch (SQLException e) {}
Thanks,
Navaneeth -
CreateCallableStatement from ViewController Context
I need to create a callable statement on an Action from a jsp. (right-click on struts diagram, select go to code, create your own event handler.) I can't figure out the inheritence for the createCallableStatement. In impl files in the appModule, this code works:
DBTransaction ctr = getDBTransaction();
cst = ctr.createCallableStatement(cstmt,1);
In this context, I can't get the getDBTransaction to resolve. How do you do this, or is there a better way?Are you still running into this issue?
Also, please note that we recently released a new version of Oracle Help, version 5.0, available here:
http://www.oracle.com/technology/tech/java/help/index.html
Regards, Maria -
XML Publisher Report Output from OAF Page
Hi,
I created a button in a OAF page, and called the XML publisher Report program on click of this button. The concurrent request was ran when check from View Requests. When I click on viewout, the pdf document was open with the option, open, save, cancel. But this is not coming up in the OAF page. when debugged the code, the url is null.
Please see the below code.
OADBTransactionImpl oadbtransactionimpl = (OADBTransactionImpl)paramOAPageContext.getRootApplicationModule().getOADBTransaction();
String s1 = oadbtransactionimpl.getAppsContext().getEnvStore().getEnv("TWO_TASK");
System.out.println("s1 = " + s1);
String s2 = oadbtransactionimpl.getAppsContext().getEnvStore().getEnv("GWYUID");
System.out.println("s2 = " + s2);
String s3 = "BEGIN :1 := fnd_webfile.get_url(fnd_webfile.request_out, :2, :3, :4, 2); end;";
CallableStatement callablestatement = paramOAPageContext.getApplicationModule(paramOAWebBean).getOADBTransaction().createCallableStatement(s3, 1);
System.out.println("s3 = " + s3);
if(requestId != 0)
try
Number number = new Number(requestId);
callablestatement.registerOutParameter(1, 12);
callablestatement.setInt(2, number.intValue());
callablestatement.setString(3, s2);
callablestatement.setString(4, s1);
callablestatement.execute();
String s4 = callablestatement.getString(1);
System.out.println("Before S4 if statement");
if(s4 == null || s4.equals(""))
// throw new RuntimeException();
System.out.println("URL is null");
System.out.println(" print ouput url - " + s4 );
// throw OAException.wrapperException(exception);
oadbtransactionimpl.putValue("OutputURL", s4);
System.out.println(" print ouput url - " + s4 );
}Look at the links AJ gave.
Basically what you will do is create a Data Definition and assign a Data Template to it. Create a (document) Template and assign it to your data definition. You will use the XML Publisher Java API classes to pass parameters to your data template and extract the XML data. Then you will use this in conjunction with your document template and the OAF integration region to present the final output to the user.
All of these things are in the XML Publisher documentation and Javadocs. -
Error while calling a function.
Hi,
below is my callable statement through which am calling a function which returns the service years of a person with personid as parameter.
But dont know why am getting an error which is returning the serviceyrs as 0.
when i try to debug, the problem is in this statement
System.out.println("the output1 is "+cs.getInt(1));
is there any problem with my code.
please look the code below
thanks
kumar
OADBTransaction txn=getOADBTransaction();
OracleCallableStatement cs = (OracleCallableStatement) txn.createCallableStatement("begin :1:=LMIG_UTILITY_PKG.GET_TOTAL_SERVICE(p_person_id => :2); end;",1);
try
cs.registerOutParameter(1,Types.INTEGER);
cs.setInt(2,Integer.parseInt(pid));
System.out.println("person id is "+pid);
System.out.println("the output1 is "+cs.getInt(1));
cs.execute();
serviceyrs= cs.getInt(1);
cs.close();
catch(SQLException sqle)
System.out.println("ERROR"+sqle.toString());
System.out.println("Service years are "+serviceyrs);Hi, Guess u are missing the connection to the JDBC call.
Try the following...it worked for me..
Connection conn = this.getOADBTransaction().getJdbcConnection();
OracleCallableStatement ocs = null;
String param = null;
try {
String stmt = "BEGIN :1 := <PkgName>.<FunctionName>(:2); end;";
ocs = (OracleCallableStatement)conn.prepareCall(stmt);
ocs.registerOutParameter(1, OracleTypes.CHAR);
ocs.setString(2, <param>);
ocs.execute();
param = ocs.getString(1);
} catch(SQLException se)
{ throw OAException.wrapperException(se);
finally
try {
ocs.close();
return(param);
} catch(Exception e)
throw OAException.wrapperException(e);
} -
Unable to execute an update statement using CallableStatement
Hi there,
I'm trying to run an update statement from JUnit using java.sql.CallableStatement and oracle.jbo.server.DBTransaction.
String updateSql =
"update footable set barcol=TO_DATE('12-SEP-09','dd-MM-yy') where bazcol = 505";
try {
statement =
applnModule.getDBTransaction().createCallableStatement(updateSql,
2);
int executeUpdate = statement.executeUpdate();
AppsLogger.write(this,
"# records UPDATED ------------------>" + executeUpdate,
AppsLogger.SEVERE);
} catch (SQLException s) {
s.printStackTrace();
Assert.fail("Encountered SQL Exception: " + s);
} finally {
try {
if (statement != null)
statement.close();
} catch (SQLException s) {
}Below is the exception I get when I run the above code. There is no problem with the SQL - it works fine from SQLDeveloper.
java.lang.AssertionError: Encountered SQL Exception: java.sql.SQLDataException: ORA-01858: a non-numeric character was found where a numeric was expected
org.junit.Assert.fail(Assert.java:91)
sun.reflect.NativeMethodAccessorImpl.invoke0(Native Method)
sun.reflect.NativeMethodAccessorImpl.invoke(NativeMethodAccessorImpl.java:39)
sun.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:25)
java.lang.reflect.Method.invoke(Method.java:597)
org.junit.internal.runners.TestMethod.invoke(TestMethod.java:66)
org.junit.internal.runners.MethodRoadie.runTestMethod(MethodRoadie.java:105)
org.junit.internal.runners.MethodRoadie$2.run(MethodRoadie.java:86)
org.junit.internal.runners.MethodRoadie.runBeforesThenTestThenAfters(MethodRoadie.java:94)
org.junit.internal.runners.MethodRoadie.runTest(MethodRoadie.java:84)
org.junit.internal.runners.MethodRoadie.run(MethodRoadie.java:49)
oracle.apps.common.applicationsTestFramework.junit.internal.AtfJUnit4JTestCaseClassRunner.invokeTestMethod(AtfJUnit4JTestCaseClassRunner.java:362)
oracle.apps.common.applicationsTestFramework.junit.internal.AtfJUnit4JTestCaseClassRunner.runMethods(AtfJUnit4JTestCaseClassRunner.java:272)
oracle.apps.common.applicationsTestFramework.junit.internal.AtfJUnit4JTestCaseClassRunner$1.run(AtfJUnit4JTestCaseClassRunner.java:265)
org.junit.internal.runners.ClassRoadie.runUnprotected(ClassRoadie.java:34)
org.junit.internal.runners.ClassRoadie.runProtected(ClassRoadie.java:44)
oracle.apps.common.applicationsTestFramework.junit.internal.AtfJUnit4JTestCaseClassRunner.run(AtfJUnit4JTestCaseClassRunner.java:262)Edited by: 911023 on Oct 2, 2012 11:28 AM
Edited by: 911023 on Oct 2, 2012 11:30 AMUsing case statement.
UPDATE gor_gold_post
SET hoov_flag = CASE WHEN TRUNC (ADD_MONTHS (rec.loyalty_date, rec.loyalty_period) - SYSDATE) < 304
OR
(TRUNC (ADD_MONTHS (rec.loyalty_date, rec.loyalty_period) - SYSDATE) IS NULL
AND (SYSDATE - TO_DATE (rec.contract_date, 'YYYYMMDD')) > 91.2)
THEN 1
ELSE 99
END,
b49n = CASE WHEN TRUNC (ADD_MONTHS (rec.loyalty_date, rec.loyalty_period) - SYSDATE) < 121.6
OR
(TRUNC (ADD_MONTHS (rec.loyalty_date, rec.loyalty_period) - SYSDATE) IS NULL
AND (SYSDATE - TO_DATE (rec.contract_date, 'YYYYMMDD')) > 91.2)
THEN 1
ELSE 99
END
WHERE tariff_code IN (169, 135, 136);Note: Code not tested. -
How to call a PL/SQL procedure from a Java class?
Hi,
I am new to the E-BusinessSuite and I want to develop a Portal with Java Portlets which display and write data from some E-Business databases (e.g. Customer Relationship Management or Human Resource). These data have been defined in the TCA (Trading Community Architecture) data model. I can access this data with PL/SQL API's. The next problem is how to get the data in the Java class. So, how do you call a PL/SQL procedure from a Java program?
Can anyone let me know how to solve that problem?
Thanks in advance,
Chang Si ChouHave a look at this example:
final ApplicationModule am = panelBinding.getApplicationModule();
try
final CallableStatement stmt = ((DBTransaction)am.getTransaction()).
createCallableStatement("{? = call some_pck.some_function(?, ?)}", 10);
stmt.registerOutParameter(1, OracleTypes.VARCHAR);
stmt.setInt(2, ((oracle.jbo.domain.Number)key.getAttribute(0)).intValue());
stmt.setString(3, "Test");
stmt.execute();
stmt.close();
return stmt.getString(1);
catch (Exception ex)
panelBinding.reportException(ex);
return null;
}Hope This Helps -
How to get multiple out parameters from a pl/sql stored procedure in ADF Jdeveloper 11g release2
I´m trying to call from AppModuleImpl a stored procedure from my oracle DB which receives one input parameter and returns 5 out parameters.
I´m using jdeveloper 11g release2 ADF and I have created a java bean "ProRecallPlatesBean " with the atributes and accesors and I serialize it. just like in this article http://docs.oracle.com/cd/E24382_01/web.1112/e16182/bcadvgen.htm#sm0297
This is my code so far:
public ProRecallPlatesBean getCallProRecallPlates(String numPlates) {
CallableStatement st = null;
try {
// 1. Define the PL/SQL block for the statement to invoke
String stmt = "begin CTS.Pk_PreIn.proRecallPlates(?,?,?,?,?,?); end;";
// 2. Create the CallableStatement for the PL/SQL block
st = getDBTransaction().createCallableStatement(stmt,0);
// 3. Register the positions and types of the OUT parameters
st.registerOutParameter(2,Types.VARCHAR);
st.registerOutParameter(3,Types.VARCHAR);
st.registerOutParameter(4,Types.VARCHAR);
st.registerOutParameter(5,Types.VARCHAR);
st.registerOutParameter(6,Types.VARCHAR);
// 4. Set the bind values of the IN parameters
st.setString(1,numPlates);
// 5. Execute the statement
st.executeUpdate();
// 6. Create a bean to hold the multiple return values
ProRecallPlatesBean result = new ProRecallPlatesBean();
// 7. Set values of properties using OUT params
result.setSpfVal(st.getString(2));
result.setTransportTypeVal(st.getString(3));
result.setTransportCompanyVal(st.getString(4));
result.setCompanyDescrVal(st.getString(5));
result.setDGAPrint(st.getString(6));
// 8. Return the result
return result;
} catch (SQLException e) {
throw new JboException(e);
} finally {
if (st != null) {
try {
// 9. Close the JDBC CallableStatement
st.close();
catch (SQLException e) {}
In Jdeveloper I went into AppModule.xml JAVA>Client Interface section and expose "getCallProRecallPlates" Then I can see "getCallProRecallPlates" in Data Controls, I drag and drop it to a JSF page, an input text component and a button are generated in order to put in there the procedure input parameter (numPlates).
I don't know if I'm on the right track.
When I click the button, the "result" variable is supposed to be filled with data from the stored procedure. I want each of those values to be displayed in Output text or input text adf components but I dont know how. Thank you very much in advance I´m a newbie and i'll appreciate your help!What version are you on?
Works fine for me on my 11g:
SQL> create or replace procedure testxml (clob_out out clob)
2 is
3 l_clob clob;
4 l_ctx dbms_xmlquery.ctxhandle;
5 begin
6 l_ctx := dbms_xmlquery.newcontext ('select * from dual');
7 l_clob := dbms_xmlquery.getxml (l_ctx);
8 clob_out := l_clob;
9 dbms_xmlquery.closecontext (l_ctx);
10 end testxml;
11 /
Procedure created.
SQL>
SQL> variable vout clob;
SQL>
SQL> exec testxml (:vout)
PL/SQL procedure successfully completed.
SQL>
SQL> print vout
VOUT
<?xml version = '1.0'?>
<ROWSET>
<ROW num="1">
<DUMMY>X</DUMMY>
</ROW>
</ROWSET>But definitely you can optimize your proc a bit: Try
create or replace procedure testxml (clob_out in out nocopy clob)
is
l_ctx dbms_xmlquery.ctxhandle;
begin
l_ctx := dbms_xmlquery.newcontext ('select * from dual');
clob_out := dbms_xmlquery.getxml (l_ctx);
dbms_xmlquery.closecontext (l_ctx);
end testxml;
/ -
Double entries are updated.
Hi,
I am using Jdev 11.1.2.1.0
My table is getting updated twice on running this below code :-
1. Once for the default values and form values with ID as null.
2. second time with default values and only ID . Form field values are null for the second time.
Below is the action listener code :-
IDViewImpl VO = (IDViewImpl)this.getIDView1();
NameValuePairs nvp;
nvp = new NameValuePairs();
CallableStatement cs=null;
no = 12;
try{
System.out.println("Inside try");
String stmt = "begin ? := ID_RET(?); end;";
cs=getDBTransaction().createCallableStatement(stmt,0);
cs.registerOutParameter(1, Types.NUMERIC);
cs.setString(2, no);
cs.executeUpdate();
cs.getInt(1);
System.out.println(cs.getInt(1));
nvp.setAttribute("ID",cs.getInt(1));
IDViewRowImpl row = (IDViewRowImpl)VO.createAndInitRow(nvp);
VO.insertRow(row);
catch(JboException e){
throw new JboException(e);
} catch (SQLException e) {
throw new JboException(e);
finally {
if (cs != null) {
try {
Close the statement
cs.close();
} catch (SQLException e) {
this.getDBTransaction().commit();
Please help.Hi,
How can I get the custom create method of the view Row to do my calculation ? To overwrite, my method name should also match with the custom method name.
How can I generate custom methods in the ViewRowImpl.java class?
I have checked the ViewRowImpl.java and found accessors for the VO fields and
protected Object getAttrInvokeAccessor(int index, AttributeDefImpl attrDef) throws Exception {
if ((index >= AttributesEnum.firstIndex()) && (index < AttributesEnum.count())) {
return AttributesEnum.staticValues()[index - AttributesEnum.firstIndex()].get(this);
return super.getAttrInvokeAccessor(index, attrDef);
* setAttrInvokeAccessor: generated method. Do not modify.
* @param index the index identifying the attribute
* @param value the value to assign to the attribute
* @param attrDef the attribute
* @throws Exception
protected void setAttrInvokeAccessor(int index, Object value, AttributeDefImpl attrDef) throws Exception {
if ((index >= AttributesEnum.firstIndex()) && (index < AttributesEnum.count())) {
AttributesEnum.staticValues()[index - AttributesEnum.firstIndex()].put(this, value);
return;
super.setAttrInvokeAccessor(index, value, attrDef);
Regards, -
Problem with setting oracle type parameter in viewobject query
Hi There,
I am facing a problem with JDev1013. I have a view that has JDBC positional parameters that are supposed to be in parameters for function like:
SELECT x.day, x.special_exact_period_only
FROM (
SELECT x.day, x.special_exact_period_only
FROM (
SELECT
x.day,
rb.special_exact_period_only
FROM TABLE (
RentabilityPkg.findMarkerSlots(
'start',
? /* dchannel */,
NULL,
? /* resorts */,
'special',
NULL,
? /* code */,
NULL,
TRUNC(SYSDATE),
TRUNC(SYSDATE + 365 * 2),
NULL
) x
JOIN resourcebase rb USING (rentabilitymanager_id)
UNION
SELECT
x.day,
rb.special_exact_period_only
FROM TABLE (
RentabilityPkg.findMarkerSlots(
'start',
? /* dchannel */,
NULL,
? /* resorts */,
'composition',
NULL,
? /* code */,
NULL,
TRUNC(SYSDATE),
TRUNC(SYSDATE + 365 * 2),
NULL
) x
JOIN resourcebase rb USING (rentabilitymanager_id)
)x
ORDER BY x.day
) x
WHERE ROWNUM <= 30now the JDBC positional parameters take our custom defined list type defined as:
CREATE TYPE NumberList AS TABLE OF NUMBER;
we are setting the parameter in the views with the help of oracle.sql.ARRAY class like:
* Set parameters.
public void setParams(Integer dchannelId, Integer[] resorts, String specialCode)
try {
System.out.println(this.getClass() + ".setParams()");
ARRAY arrParam1 = ((NWSApplicationModule)getApplicationModule()).toSQLNumberList(Arrays.asList(resorts));
ARRAY arrParam2 = ((NWSApplicationModule)getApplicationModule()).toSQLNumberList(Arrays.asList(resorts));
System.out.println("arrParam1 - " + arrParam1);
System.out.println("arrParam1 - " + arrParam1);
System.out.println(this.getClass() + " ARRAY - " + arrParam1.getArray());
System.out.println(this.getClass() + " -- " + arrParam1.length());
System.out.println("arrParam2 - " + arrParam2);
System.out.println("arrParam2 - " + arrParam2);
System.out.println(this.getClass() + " ARRAY - " + arrParam2.getArray());
System.out.println(this.getClass() + " -- " + arrParam2.length());
Object[] params =
{ dchannelId,
arrParam1,
specialCode,
dchannelId,
arrParam2,
specialCode
setWhereClauseParams(params);
System.out.println("DONE WITH " + this.getClass() + ".setParams()");
catch(Exception ex)
ex.printStackTrace(System.out);
}the toSQLNumberList() method is defined in our App module baseclass as follows:
public ARRAY toSQLNumberList(Collection coll)
debug("toSQLNumberList()");
DBTransaction txn = (DBTransaction)getTransaction();
debug("txn - " + txn + " : " + txn.getClass());
return NWSUtil.toSQLNumberList(coll, getConnection(txn));
public static ARRAY toSQLNumberList(Collection c, Connection connection)
//printTrace();
debug("toSQLNumberList()");
try
ArrayDescriptor numberList = ArrayDescriptor.createDescriptor("NUMBERLIST", connection);
NUMBER[] elements = new NUMBER[c == null ? 0 : c.size()];
if (elements.length > 0 )
Iterator iter = c.iterator();
for (int i = 0; iter.hasNext(); i++)
elements[i] = new NUMBER(iter.next().toString());
return new ARRAY(numberList, connection, elements);
catch (Exception ex)
ex.printStackTrace();
return null;
protected Connection getConnection(DBTransaction dbTransaction)
//return null;
debug("Inside getConnection()");
CallableStatement s = null;
try
* Getting Conenction in BC4J is dirty but its better
* as otherwise we might end up coding with connections
* and the Transaction Integrety will be
s = dbTransaction.createCallableStatement("BEGIN NULL; END;", 0);
debug("DOING s.getConnection()...");
Connection conn = s.getConnection();
debug("DONE WITH s.getConnection()...");
/*try
throw new Exception("TEST");
catch (Exception ex)
ex.printStackTrace(System.out);
debug("conn CLASS - " + conn.getClass());
return conn;
catch (Exception ex)
ex.printStackTrace();
return null;
finally
try { s.close(); }
catch (Exception ex) {}
}Whenever we try setting the parameters in view using setParams() and use this view to set the model of a java control it thorws the following exception :
[2006-10-10 12:34:48,797 AWT-EventQueue-0 ERROR] JBO-28302: Piggyback write error
oracle.jbo.PiggybackException: JBO-28302: Piggyback write error
at oracle.jbo.common.PiggybackOutput.getPiggybackStream(PiggybackOutput.java:185)
at oracle.jbo.common.JboServiceMessage.marshalRefs(JboServiceMessage.java:267)
at oracle.jbo.server.remote.PiggybackManager.marshalServiceMessage(PiggybackManager.java:343)
at oracle.jbo.server.remote.PiggybackManager.marshalServiceMessage(PiggybackManager.java:316)
at oracle.jbo.server.remote.AbstractRemoteApplicationModuleImpl.processMessage(AbstractRemoteApplicationModuleImpl.java:2283)
at oracle.jbo.server.ApplicationModuleImpl.doMessage(ApplicationModuleImpl.java:7509)
at oracle.jbo.server.remote.AbstractRemoteApplicationModuleImpl.sync(AbstractRemoteApplicationModuleImpl.java:2221)
at oracle.jbo.server.remote.ejb.ServerApplicationModuleImpl.doMessage(ServerApplicationModuleImpl.java:79)
at oracle.jbo.server.ejb.SessionBeanImpl.doMessage(SessionBeanImpl.java:474)
at sun.reflect.GeneratedMethodAccessor7.invoke(Unknown Source)
at sun.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:25)
at java.lang.reflect.Method.invoke(Method.java:585)
at com.evermind.server.ejb.interceptor.joinpoint.EJBJoinPointImpl.invoke(EJBJoinPointImpl.java:35)
at com.evermind.server.ejb.interceptor.InvocationContextImpl.proceed(InvocationContextImpl.java:69)
at com.evermind.server.ejb.interceptor.system.DMSInterceptor.invoke(DMSInterceptor.java:52)
at com.evermind.server.ejb.interceptor.InvocationContextImpl.proceed(InvocationContextImpl.java:69)
at com.evermind.server.ejb.interceptor.system.TxBeanManagedInterceptor.invoke(TxBeanManagedInterceptor.java:53)
at com.evermind.server.ejb.interceptor.InvocationContextImpl.proceed(InvocationContextImpl.java:69)
at com.evermind.server.ejb.interceptor.system.DMSInterceptor.invoke(DMSInterceptor.java:52)
at com.evermind.server.ejb.interceptor.InvocationContextImpl.proceed(InvocationContextImpl.java:69)
at com.evermind.server.ejb.StatefulSessionEJBObject.OC4J_invokeMethod(StatefulSessionEJBObject.java:840)
at RemoteAMReservation_StatefulSessionBeanWrapper906.doMessage(RemoteAMReservation_StatefulSessionBeanWrapper906.java:286)
at sun.reflect.GeneratedMethodAccessor63.invoke(Unknown Source)
at sun.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:25)
at java.lang.reflect.Method.invoke(Method.java:585)
at com.evermind.server.rmi.RmiMethodCall.run(RmiMethodCall.java:53)
at com.evermind.util.ReleasableResourcePooledExecutor$MyWorker.run(ReleasableResourcePooledExecutor.java:303)
at java.lang.Thread.run(Thread.java:595)
## Detail 0 ##
java.io.NotSerializableException: oracle.jdbc.driver.T4CConnection
at java.io.ObjectOutputStream.writeObject0(ObjectOutputStream.java:1075)
at java.io.ObjectOutputStream.defaultWriteFields(ObjectOutputStream.java:1369)
at java.io.ObjectOutputStream.writeSerialData(ObjectOutputStream.java:1341)
at java.io.ObjectOutputStream.writeOrdinaryObject(ObjectOutputStream.java:1284)
at java.io.ObjectOutputStream.writeObject0(ObjectOutputStream.java:1073)
at java.io.ObjectOutputStream.writeArray(ObjectOutputStream.java:1245)
at java.io.ObjectOutputStream.writeObject0(ObjectOutputStream.java:1069)
at java.io.ObjectOutputStream.writeArray(ObjectOutputStream.java:1245)
at java.io.ObjectOutputStream.writeObject0(ObjectOutputStream.java:1069)
at java.io.ObjectOutputStream.writeObject(ObjectOutputStream.java:291)
at oracle.jbo.common.SvcMsgResponseValues.writeObject(SvcMsgResponseValues.java:116)
at sun.reflect.GeneratedMethodAccessor65.invoke(Unknown Source)
at sun.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:25)
at java.lang.reflect.Method.invoke(Method.java:585)
at java.io.ObjectStreamClass.invokeWriteObject(ObjectStreamClass.java:890)
at java.io.ObjectOutputStream.writeSerialData(ObjectOutputStream.java:1333)
at java.io.ObjectOutputStream.writeOrdinaryObject(ObjectOutputStream.java:1284)
at java.io.ObjectOutputStream.writeObject0(ObjectOutputStream.java:1073)
at java.io.ObjectOutputStream.writeObject(ObjectOutputStream.java:291)
at oracle.jbo.common.PiggybackOutput.getPiggybackStream(PiggybackOutput.java:173)
at oracle.jbo.common.JboServiceMessage.marshalRefs(JboServiceMessage.java:267)
at oracle.jbo.server.remote.PiggybackManager.marshalServiceMessage(PiggybackManager.java:343)
at oracle.jbo.server.remote.PiggybackManager.marshalServiceMessage(PiggybackManager.java:316)
at oracle.jbo.server.remote.AbstractRemoteApplicationModuleImpl.processMessage(AbstractRemoteApplicationModuleImpl.java:2283)
at oracle.jbo.server.ApplicationModuleImpl.doMessage(ApplicationModuleImpl.java:7509)
at oracle.jbo.server.remote.AbstractRemoteApplicationModuleImpl.sync(AbstractRemoteApplicationModuleImpl.java:2221)
at oracle.jbo.server.remote.ejb.ServerApplicationModuleImpl.doMessage(ServerApplicationModuleImpl.java:79)
at oracle.jbo.server.ejb.SessionBeanImpl.doMessage(SessionBeanImpl.java:474)
at sun.reflect.GeneratedMethodAccessor7.invoke(Unknown Source)
at sun.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:25)
at java.lang.reflect.Method.invoke(Method.java:585)
at com.evermind.server.ejb.interceptor.joinpoint.EJBJoinPointImpl.invoke(EJBJoinPointImpl.java:35)
at com.evermind.server.ejb.interceptor.InvocationContextImpl.proceed(InvocationContextImpl.java:69)
at com.evermind.server.ejb.interceptor.system.DMSInterceptor.invoke(DMSInterceptor.java:52)
at com.evermind.server.ejb.interceptor.InvocationContextImpl.proceed(InvocationContextImpl.java:69)
at com.evermind.server.ejb.interceptor.system.TxBeanManagedInterceptor.invoke(TxBeanManagedInterceptor.java:53)
at com.evermind.server.ejb.interceptor.InvocationContextImpl.proceed(InvocationContextImpl.java:69)
at com.evermind.server.ejb.interceptor.system.DMSInterceptor.invoke(DMSInterceptor.java:52)
at com.evermind.server.ejb.interceptor.InvocationContextImpl.proceed(InvocationContextImpl.java:69)
at com.evermind.server.ejb.StatefulSessionEJBObject.OC4J_invokeMethod(StatefulSessionEJBObject.java:840)
at RemoteAMReservation_StatefulSessionBeanWrapper906.doMessage(RemoteAMReservation_StatefulSessionBeanWrapper906.java:286)
at sun.reflect.GeneratedMethodAccessor63.invoke(Unknown Source)
at sun.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:25)
at java.lang.reflect.Method.invoke(Method.java:585)
at com.evermind.server.rmi.RmiMethodCall.run(RmiMethodCall.java:53)
at com.evermind.util.ReleasableResourcePooledExecutor$MyWorker.run(ReleasableResourcePooledExecutor.java:303)
at java.lang.Thread.run(Thread.java:595)This is a typical interaction between 2 server-side components (view-object and app module). Now the question is why is this exception thrown? Any answers?
This application is one that we have migrated from 904 to 1013 and are trying to get it running in 3-tier.
Regards,
AnupamSorry I missed out some semicolons, the script follws:
-- The following TABLE was created to simulate the issue
CREATE TABLE TEST_OBJECT
ASSET_ID NUMBER,
OBJECT_ID NUMBER,
NAME VARCHAR2(50)
INSERT INTO TEST_OBJECT VALUES(1,1,'AAA');
INSERT INTO TEST_OBJECT VALUES(2,2,'BBB');
INSERT INTO TEST_OBJECT VALUES(3,3,'CCC');
COMMIT;
SELECT * FROM TEST_OBJECT;
-- The following TYPES was created to simulate the issue
CREATE OR REPLACE
TYPE DUTYRESULTOBJECTTAB AS TABLE OF DUTYRESULTOBJECT;
CREATE OR REPLACE
type DutyResultObject as object
( ASSET_ID number,
OBJECT_ID number,
NAME varchar2(150)
-- The following PACKAGE N FUNCTION was created to simulate the issue
CREATE OR REPLACE PACKAGE TESTOBJECTPKG
IS
FUNCTION OBJECTSEARCH(P_RESOURCE IN NUMBERLIST) RETURN DUTYRESULTOBJECTTAB;
END;
CREATE OR REPLACE PACKAGE BODY TESTOBJECTPKG
IS
FUNCTION OBJECTSEARCH(P_RESOURCE IN NUMBERLIST) RETURN DUTYRESULTOBJECTTAB
IS
BULKDUTYRESULTOBJECTTAB DUTYRESULTOBJECTTAB;
BEGIN
SELECT DUTYRESULTOBJECT(ASSET_ID, OBJECT_ID, NAME)
BULK COLLECT INTO BULKDUTYRESULTOBJECTTAB
FROM TEST_OBJECT;
RETURN BULKDUTYRESULTOBJECTTAB;
END;
END;
[\code] -
How can i call another view variables in another view
how can i call another view variables in another view and pass that variables to the function
my situation is i have a view FAC which i need to pass par_id_fac TO THE VIEW AGR.AFTER THAT i what to take start_dt in agr view and par_id_fac from Fac and pass this variables to the function i have check the documentation but does not do what i what,the doc simply talk about creating variables and pass then to function.i what to pass variables from the views and return value to my contractno Variables value
something like if :agr.contract_no is null
and :agr.agr_start_dt is not null then
:agr.contract_no := sms_fapp.get_contract_no(:fac.par_id_fac,:agr.agr_start_dt);
end if;
y view is
<?xml version="1.0" encoding="windows-1252" ?>
<!DOCTYPE ViewObject SYSTEM "jbo_03_01.dtd">
<!---->
<ViewObject
xmlns="http://xmlns.oracle.com/bc4j"
Name="AGR"
Version="11.1.2.60.81"
BindingStyle="OracleName"
CustomQuery="true"
PageIterMode="Full"
UseGlueCode="false"
RowClass="sms1405.AGRRowImpl"
ComponentClass="sms1405.AGRImpl"
DefClass="sms1405.AGRDefImpl">
<DesignTime>
<Attr Name="_isExpertMode" Value="true"/>
<Attr Name="_codeGenFlag2" Value="Access|Def|Coll|Prog|VarAccess"/>
<Attr Name="_isCodegen" Value="true"/>
</DesignTime>
<SQLQuery><![CDATA[SELECT SmsAgreements.ID,
SmsAgreements.FAPP_ID,
SmsAgreements.PAR_ID,
SmsAgreements.SSCH_ID,
SmsAgreements.COSERV_ID,
SmsAgreements.IREA_ID_TERMINATED,
SmsAgreements.IREA_ID_SUSPENDED,
SmsAgreements.SPTYP_ID,
SmsAgreements.CLAIM_BASED_YN,
SmsAgreements.NOTES,
SmsAgreements.SUSPENSION_DT,
SmsAgreements.TERMINATION_DT,
SmsAgreements.SPECIAL_PROJECT_END_DT,
SmsAgreements.CAPITAL_FUNDING_APPROVED,
SmsAgreements.PERIODICAL_PAYMENT_AMOUNT,
SmsAgreements.DATE_CREATED,
SmsAgreements.DATE_MODIFIED,
SmsAgreements.MODIFIED_BY,
SmsAgreements.CREATED_BY,
SmsAgreements.CONTRACT_NO,
SmsAgreements.OFF_ID,
SmsAgreements.DATE_APPROVED,
SmsAgreements.AGR_START_DT,
SmsAgreements.AGR_END_DT,
SmsAgreements.MONTHS_FUNDED,
SmsAgreements.PFRE_ANNUAL_FREQUENCY,
SmsAgreements.FUNDED_NO,
SmsAgreements.REGISTERED_NO,
SmsAgreements.CONTRACT_NAME,
SmsAgreements.OPEX_ALLOCATION,
SmsAgreements.EMERG_ORG_YN,
SmsAgreements.SCHEDULE,
SmsAgreements.PERIODICAL_PAYMENT_AVERAGE,
SmsAgreements.NO_OF_PAYMENTS,
SmsAgreements.ADVANCE_PAYMENT_PERCENT,
SmsAgreements.QUALIFY_NO,
SmsAgreements.ENROLLED_NO,
SmsAgreements.MULTI_YEAR_ALLOCATION,
SmsAgreements.AGR_ID_SOURCE,
SmsAgreements.FYEA_YEAR_ACTIVE,
SmsAgreements.PTYPE_CODE,
SmsAgreements.CONTRACT_VALUE,
SmsAgreements.MAGR_ID,
SmsAgreements.PROG_ID,
SmsAgreements.EMERGENCY_BED_#,
SmsAgreements.drep_id,
SmsAgreements.srep_id,
(select name from sms_offices off where off.id = SmsAgreements.off_id)officeName,
(SELECT PROG.NAME FROM sms_programmes prog where PROG.ID = SMSAGREEMENTS.PROG_ID)programe,
(select prog.code || '.' || bvspro.code || ' ' || bvspro.NAME budget_vote from sms_subsidy_schemes ssch,
sms_budget_vote_sub_programs bvspro,
sms_programmes prog
WHERE bvspro_id = bvspro.ID AND prog.ID = prog_id
and prog.id = SMSAGREEMENTS.PROG_ID)Sub_programme,
(select ssch.NAME from sms_subsidy_schemes ssch where SSCH.ID = SMSAGREEMENTS.SSCH_ID)subsidy,
(SELECT master_contract FROM sms_master_agreements magr WHERE MAGR.ID = SmsAgreements.magr_id)masterContract
FROM SMS_AGREEMENTS SmsAgreements]]></SQLQuery>
<ViewAttribute
Name="ContractNo"
IsPersistent="false"
IsNotNull="true"
PrecisionRule="true"
Precision="20"
Type="java.lang.String"
ColumnType="VARCHAR2"
AliasName="CONTRACT_NO"
SQLType="VARCHAR">
<TransientExpression><![CDATA[CONTRACT_NO]]></TransientExpression>
<DesignTime>
<Attr Name="_DisplaySize" Value="20"/>
</DesignTime>
</ViewAttribute>
<ViewAttribute
Name="AgrStartDt"
IsPersistent="false"
PrecisionRule="true"
Type="java.sql.Timestamp"
ColumnType="DATE"
AliasName="AGR_START_DT"
SQLType="DATE">
<RecalcCondition><![CDATA[true]]></RecalcCondition>
<TransientExpression><![CDATA[adf.currentDate]]></TransientExpression>
</ViewAttribute>
</ViewObject>and my FAC view is
<?xml version="1.0" encoding="windows-1252" ?>
<!DOCTYPE ViewObject SYSTEM "jbo_03_01.dtd">
<!---->
<ViewObject
xmlns="http://xmlns.oracle.com/bc4j"
Name="FAC"
Version="11.1.2.60.81"
BindingStyle="OracleName"
CustomQuery="true"
PageIterMode="Full"
UseGlueCode="false">
<DesignTime>
<Attr Name="_isExpertMode" Value="true"/>
</DesignTime>
<SQLQuery><![CDATA[SELECT SmsFacilityVw.PAR_ID_ORG,
SmsFacilityVw.ORGANISATION,
SmsFacilityVw.ORG_KEY,
SmsFacilityVw.C_CODE,
SmsFacilityVw.FACILITY,
SmsFacilityVw.PAR_ID_FAC,
SmsFacilityVw.NPO_REGISTRATION_NO,
SmsFacilityVw.ADDRESS,
SmsFacilityVw.TELNR_WORK,
SmsFacilityVw.ADDRESSLINE,
SmsFacilityVw.Town,
SmsFacilityVw.Suburb,
SmsFacilityVw.PostalCode,
SmsFacilityVw.DSD_REGION,
SmsFacilityVw.SERVICE_DELIVERY_AREA,
SmsFacilityVw.FAXNR,
SmsFacilityVw.EMAIL,
SmsFacilityVw.PAR_TYPE_DEF
FROM SMS_FACILITY_VW SmsFacilityVw]]></SQLQuery>
<ViewAttribute
Name="ParIdOrg"
IsUpdateable="false"
IsPersistent="false"
PrecisionRule="true"
Precision="38"
Scale="0"
Type="java.math.BigInteger"
ColumnType="NUMBER"
AliasName="PAR_ID_ORG"
Expression="PAR_ID_ORG"
SQLType="NUMERIC"/>
<ViewAttribute
Name="Organisation"
IsUpdateable="false"
IsPersistent="false"
PrecisionRule="true"
Precision="100"
Type="java.lang.String"
ColumnType="VARCHAR2"
AliasName="ORGANISATION"
Expression="ORGANISATION"
SQLType="VARCHAR">
<DesignTime>
<Attr Name="_DisplaySize" Value="100"/>
</DesignTime>
</ViewAttribute>
<ViewAttribute
Name="OrgKey"
IsUpdateable="false"
IsPersistent="false"
PrecisionRule="true"
Precision="10"
Type="java.lang.String"
ColumnType="VARCHAR2"
AliasName="ORG_KEY"
Expression="ORG_KEY"
SQLType="VARCHAR">
<DesignTime>
<Attr Name="_DisplaySize" Value="10"/>
</DesignTime>
</ViewAttribute>
<ViewAttribute
Name="CCode"
IsUpdateable="false"
IsPersistent="false"
PrecisionRule="true"
Precision="30"
Type="java.lang.String"
ColumnType="VARCHAR2"
AliasName="C_CODE"
Expression="C_CODE"
SQLType="VARCHAR">
<DesignTime>
<Attr Name="_DisplaySize" Value="30"/>
</DesignTime>
</ViewAttribute>
<ViewAttribute
Name="Facility"
IsUpdateable="false"
IsPersistent="false"
PrecisionRule="true"
Precision="100"
Type="java.lang.String"
ColumnType="VARCHAR2"
AliasName="FACILITY"
Expression="FACILITY"
SQLType="VARCHAR">
<DesignTime>
<Attr Name="_DisplaySize" Value="100"/>
</DesignTime>
</ViewAttribute>
<ViewAttribute
Name="ParIdFac"
IsUpdateable="false"
IsPersistent="false"
PrecisionRule="true"
Precision="38"
Scale="0"
Type="java.math.BigInteger"
ColumnType="NUMBER"
AliasName="PAR_ID_FAC"
Expression="PAR_ID_FAC"
SQLType="NUMERIC"/>
<ViewAttribute
Name="NpoRegistrationNo"
IsUpdateable="false"
IsPersistent="false"
PrecisionRule="true"
Precision="30"
Type="java.lang.String"
ColumnType="VARCHAR2"
AliasName="NPO_REGISTRATION_NO"
Expression="NPO_REGISTRATION_NO"
SQLType="VARCHAR">
<DesignTime>
<Attr Name="_DisplaySize" Value="30"/>
</DesignTime>
</ViewAttribute>
<ViewAttribute
Name="Address"
IsUpdateable="false"
IsPersistent="false"
PrecisionRule="true"
Precision="227"
Type="java.lang.String"
ColumnType="VARCHAR2"
AliasName="ADDRESS"
Expression="ADDRESS"
SQLType="VARCHAR">
<DesignTime>
<Attr Name="_DisplaySize" Value="227"/>
</DesignTime>
</ViewAttribute>
<ViewAttribute
Name="TelnrWork"
IsUpdateable="false"
IsPersistent="false"
PrecisionRule="true"
Precision="150"
Type="java.lang.String"
ColumnType="VARCHAR2"
AliasName="TELNR_WORK"
Expression="TELNR_WORK"
SQLType="VARCHAR">
<DesignTime>
<Attr Name="_DisplaySize" Value="150"/>
</DesignTime>
</ViewAttribute>
<ViewAttribute
Name="Addressline"
IsPersistent="false"
PrecisionRule="true"
Precision="120"
Type="java.lang.String"
ColumnType="VARCHAR2"
AliasName="ADDRESSLINE"
Expression="ADDRESSLINE"
SQLType="VARCHAR"
IsUpdateable="false">
<DesignTime>
<Attr Name="_DisplaySize" Value="120"/>
</DesignTime>
</ViewAttribute>
<ViewAttribute
Name="Town"
IsPersistent="false"
PrecisionRule="true"
Precision="60"
Type="java.lang.String"
ColumnType="VARCHAR2"
AliasName="TOWN"
Expression="TOWN"
SQLType="VARCHAR"
IsUpdateable="false">
<DesignTime>
<Attr Name="_DisplaySize" Value="60"/>
</DesignTime>
</ViewAttribute>
<ViewAttribute
Name="Suburb"
IsPersistent="false"
PrecisionRule="true"
Precision="60"
Type="java.lang.String"
ColumnType="VARCHAR2"
AliasName="SUBURB"
Expression="SUBURB"
SQLType="VARCHAR"
IsUpdateable="false">
<DesignTime>
<Attr Name="_DisplaySize" Value="60"/>
</DesignTime>
</ViewAttribute>
<ViewAttribute
Name="Postalcode"
IsPersistent="false"
PrecisionRule="true"
Precision="4"
Type="java.lang.String"
ColumnType="VARCHAR2"
AliasName="POSTALCODE"
Expression="POSTALCODE"
SQLType="VARCHAR"
IsUpdateable="false">
<DesignTime>
<Attr Name="_DisplaySize" Value="4"/>
</DesignTime>
</ViewAttribute>
<ViewAttribute
Name="DsdRegion"
IsUpdateable="false"
IsPersistent="false"
PrecisionRule="true"
Precision="40"
Type="java.lang.String"
ColumnType="VARCHAR2"
AliasName="DSD_REGION"
Expression="DSD_REGION"
SQLType="VARCHAR">
<DesignTime>
<Attr Name="_DisplaySize" Value="40"/>
</DesignTime>
</ViewAttribute>
<ViewAttribute
Name="ServiceDeliveryArea"
IsUpdateable="false"
IsPersistent="false"
PrecisionRule="true"
Precision="50"
Type="java.lang.String"
ColumnType="VARCHAR2"
AliasName="SERVICE_DELIVERY_AREA"
Expression="SERVICE_DELIVERY_AREA"
SQLType="VARCHAR">
<DesignTime>
<Attr Name="_DisplaySize" Value="50"/>
</DesignTime>
</ViewAttribute>
<ViewAttribute
Name="Faxnr"
IsUpdateable="false"
IsPersistent="false"
PrecisionRule="true"
Precision="50"
Type="java.lang.String"
ColumnType="VARCHAR2"
AliasName="FAXNR"
Expression="FAXNR"
SQLType="VARCHAR">
<DesignTime>
<Attr Name="_DisplaySize" Value="50"/>
</DesignTime>
</ViewAttribute>
<ViewAttribute
Name="Email"
IsUpdateable="false"
IsPersistent="false"
PrecisionRule="true"
Precision="80"
Type="java.lang.String"
ColumnType="VARCHAR2"
AliasName="EMAIL"
Expression="EMAIL"
SQLType="VARCHAR">
<DesignTime>
<Attr Name="_DisplaySize" Value="80"/>
</DesignTime>
</ViewAttribute>
<ViewAttribute
Name="ParTypeDef"
IsUpdateable="false"
IsPersistent="false"
PrecisionRule="true"
Precision="12"
Type="java.lang.String"
ColumnType="VARCHAR2"
AliasName="PAR_TYPE_DEF"
Expression="PAR_TYPE_DEF"
SQLType="VARCHAR">
<DesignTime>
<Attr Name="_DisplaySize" Value="12"/>
</DesignTime>
</ViewAttribute>
<ViewLinkAccessor
Name="AGR"
ViewLink="sms1405.par_facfkViewLink"
Type="oracle.jbo.RowIterator"
IsUpdateable="false"/>
<ViewLinkAccessor
Name="SmsParAddrVwView"
ViewLink="sms1405.parLink"
Type="oracle.jbo.RowIterator"
IsUpdateable="false"/>
<ViewLinkAccessor
Name="DOC"
ViewLink="sms1405.FAC_DOC"
Type="oracle.jbo.RowIterator"
IsUpdateable="false"/>
</ViewObject>Edited by: ADF007 on 2012/08/23 6:10 PMi try this
public class SMS_AGREEMENTSImpl extends EntityImpl {
RowSet newContractNoBeforePost = null;
public static int NUMBER = Types.NUMERIC;
public static int DATE = Types.DATE;
public static int VARCHAR2 = Types.VARCHAR;
protected Object callStoredFunction(int sqlReturnType, String stmt,
Object[] bindVars) {
CallableStatement st = null;
try {
// 1. Create a JDBC CallabledStatement
st = getDBTransaction().createCallableStatement(
"begin ? := "+stmt+";end;",0);
// 2. Register the first bind variable for the return value
st.registerOutParameter(1, sqlReturnType);
if (bindVars != null) {
// 3. Loop over values for the bind variables passed in, if any
for (int z = 0; z < bindVars.length; z++) {
// 4. Set the value of user-supplied bind vars in the stmt
st.setObject(z + 2, bindVars[z]);
// 5. Set the value of user-supplied bind vars in the stmt
st.executeUpdate();
// 6. Return the value of the first bind variable
return st.getObject(1);
catch (SQLException e) {
throw new JboException(e);
finally {
if (st != null) {
try {
// 7. Close the statement
st.close();
catch (SQLException e) {}
protected void doDML(int operation, TransactionEvent e) {
String amDef = "sms1405.sms1405Module";
String config = "sms1405ModuleShared";
String NewContract = null;
ApplicationModule am = Configuration.createRootApplicationModule(amDef, config);
ViewObjectImpl vo = (ViewObjectImpl) am.findViewObject("AGR1");
vo.executeQuery();
Row row = vo.first();
// NewContract = (String)vo
NewContract = (String)row.getAttribute("ContractNo");
SMS_AGREEMENTSImpl newcont = new SMS_AGREEMENTSImpl();
//AGRRowImpl res = new AGRRowImpl();
// NewContract = NewContractNo();
if (operation == 1) {
newcont.setContractNo(NewContractNo());
//res.setContractNo( NewContractNo());
//NewContractNo();
super.doDML(operation, e);
public void postChanges(TransactionEvent TransactionEvent) {
/* Only bother to update references if contractno is a NEW one */
if (getPostState() == STATUS_NEW) {
* Get a rowset of contract related
* to this new partyaddress before calling super
newContractNoBeforePost = (RowSet)getSMS_AGREEMENTS();
super.postChanges(TransactionEvent);
public Date getAgrStartDt() {
return (Date)getAttributeInternal(AGRSTARTDT);
* Sets <code>value</code> as the attribute value for AgrStartDt.
* @param value value to set the AgrStartDt
public void setAgrStartDt(Date value) {
setAttributeInternal(AGRSTARTDT, value);
public String NewContractNo() {
String amDef = "sms1405.sms1405Module";
String config = "sms1405ModuleShared";
String NewContract = null;
ApplicationModule am = Configuration.createRootApplicationModule(amDef, config);
ViewObjectImpl vo = (ViewObjectImpl) am.findViewObject("FAC1");
// vo.setWhereClause("ParIdFac = 38844");
vo.executeQuery();
Row row = vo.first();
Integer par_id = null;
//oracle.jbo.domain.Date today = new oracle.jbo.domain.Date(oracle.jbo.domain.Date.getCurrentDate());
oracle.jbo.domain.Date today = new oracle.jbo.domain.Date();
//FACRowImpl res = new FACRowImpl();
//res.setParIdFac(par_id);
par_id = (Integer)row.getAttribute("ParIdFac");
today = this.getAgrStartDt();
return (String)callStoredFunction(VARCHAR2,
"sms_fapp.get_contract_no(?,?)",
new Object[]{par_id,today});
}at the moment am geting this error
oracle.jbo.JboException: JBO-29000: Unexpected exception caught: java.lang.NullPointerException, msg=null
at oracle.adf.model.binding.DCBindingContainer.reportException(DCBindingContainer.java:415)
at oracle.adf.model.binding.DCBindingContainer.reportException(DCBindingContainer.java:477)
at oracle.adf.model.binding.DCControlBinding.reportException(DCControlBinding.java:201)
at oracle.jbo.uicli.binding.JUCtrlActionBinding.reportException(JUCtrlActionBinding.java:2007)
at oracle.jbo.uicli.binding.JUCtrlActionBinding.doIt(JUCtrlActionBinding.java:1659)
at oracle.adf.model.binding.DCDataControl.invokeOperation(DCDataControl.java:2169)
at oracle.jbo.uicli.binding.JUCtrlActionBinding.invoke(JUCtrlActionBinding.java:731)
at oracle.jbo.uicli.jui.JUActionBinding.actionPerformed(JUActionBinding.java:193)
at oracle.jbo.uicli.controls.JUNavigationBar.doAction(JUNavigationBar.java:412)
at oracle.jbo.jbotester.NavigationBar.doAction(NavigationBar.java:112)
at oracle.jbo.uicli.controls.JUNavigationBar$NavButton.actionPerformed(JUNavigationBar.java:118)
at javax.swing.AbstractButton.fireActionPerformed(AbstractButton.java:1995)
at javax.swing.AbstractButton$Handler.actionPerformed(AbstractButton.java:2318)
at javax.swing.DefaultButtonModel.fireActionPerformed(DefaultButtonModel.java:387)
at javax.swing.DefaultButtonModel.setPressed(DefaultButtonModel.java:242)
at javax.swing.plaf.basic.BasicButtonListener.mouseReleased(BasicButtonListener.java:236)
at java.awt.AWTEventMulticaster.mouseReleased(AWTEventMulticaster.java:272)
at java.awt.Component.processMouseEvent(Component.java:6289)
at javax.swing.JComponent.processMouseEvent(JComponent.java:3267)
at java.awt.Component.processEvent(Component.java:6054)
at java.awt.Container.processEvent(Container.java:2041)
at java.awt.Component.dispatchEventImpl(Component.java:4652)
at java.awt.Container.dispatchEventImpl(Container.java:2099)
at java.awt.Component.dispatchEvent(Component.java:4482)
at java.awt.LightweightDispatcher.retargetMouseEvent(Container.java:4577)
at java.awt.LightweightDispatcher.processMouseEvent(Container.java:4238)
at java.awt.LightweightDispatcher.dispatchEvent(Container.java:4168)
at java.awt.Container.dispatchEventImpl(Container.java:2085)
at java.awt.Window.dispatchEventImpl(Window.java:2478)
at java.awt.Component.dispatchEvent(Component.java:4482)
at java.awt.EventQueue.dispatchEventImpl(EventQueue.java:644)
at java.awt.EventQueue.access$000(EventQueue.java:85)
at java.awt.EventQueue$1.run(EventQueue.java:603)
at java.awt.EventQueue$1.run(EventQueue.java:601)
at java.security.AccessController.doPrivileged(Native Method)
at java.security.AccessControlContext$1.doIntersectionPrivilege(AccessControlContext.java:87)
at java.security.AccessControlContext$1.doIntersectionPrivilege(AccessControlContext.java:98)
at java.awt.EventQueue$2.run(EventQueue.java:617)
at java.awt.EventQueue$2.run(EventQueue.java:615)
at java.security.AccessController.doPrivileged(Native Method)
at java.security.AccessControlContext$1.doIntersectionPrivilege(AccessControlContext.java:87)
at java.awt.EventQueue.dispatchEvent(EventQueue.java:614)
at java.awt.EventDispatchThread.pumpOneEventForFilters(EventDispatchThread.java:269)
at java.awt.EventDispatchThread.pumpEventsForFilter(EventDispatchThread.java:184)
at java.awt.EventDispatchThread.pumpEventsForHierarchy(EventDispatchThread.java:174)
at java.awt.EventDispatchThread.pumpEvents(EventDispatchThread.java:169)
at java.awt.EventDispatchThread.pumpEvents(EventDispatchThread.java:161)
at java.awt.EventDispatchThread.run(EventDispatchThread.java:122)
Caused by: java.lang.NullPointerException
at oracle.jbo.server.EntityImpl.getEntityCache(EntityImpl.java:4665)
at oracle.jbo.server.EntityImpl.saveEventOrigTransAttrVals(EntityImpl.java:729)
at oracle.jbo.server.EntityImpl.saveEventOrigAttrVals(EntityImpl.java:719)
at oracle.jbo.server.EntityImpl.setAttributeInternal(EntityImpl.java:1935)
at sms1405.SMS_AGREEMENTSImpl.setContractNo(SMS_AGREEMENTSImpl.java:998)
at sms1405.SMS_AGREEMENTSImpl.doDML(SMS_AGREEMENTSImpl.java:1628)
at oracle.jbo.server.EntityImpl.postChanges(EntityImpl.java:6751)
at sms1405.SMS_AGREEMENTSImpl.postChanges(SMS_AGREEMENTSImpl.java:1645)
at oracle.jbo.server.DBTransactionImpl.doPostTransactionListeners(DBTransactionImpl.java:3264)
at oracle.jbo.server.DBTransactionImpl.postChanges(DBTransactionImpl.java:3067)
at oracle.jbo.server.DBTransactionImpl.commitInternal(DBTransactionImpl.java:2071)
at oracle.jbo.server.DBTransactionImpl.commit(DBTransactionImpl.java:2352)
at oracle.adf.model.bc4j.DCJboDataControl.commitTransaction(DCJboDataControl.java:1590)
at oracle.adf.model.binding.DCDataControl.callCommitTransaction(DCDataControl.java:1415)
at oracle.jbo.uicli.binding.JUCtrlActionBinding.doIt(JUCtrlActionBinding.java:1428)
... 43 more
## Detail 0 ##
java.lang.NullPointerException
at oracle.jbo.server.EntityImpl.getEntityCache(EntityImpl.java:4665)
at oracle.jbo.server.EntityImpl.saveEventOrigTransAttrVals(EntityImpl.java:729)
at oracle.jbo.server.EntityImpl.saveEventOrigAttrVals(EntityImpl.java:719)
at oracle.jbo.server.EntityImpl.setAttributeInternal(EntityImpl.java:1935)
at sms1405.SMS_AGREEMENTSImpl.setContractNo(SMS_AGREEMENTSImpl.java:998)
at sms1405.SMS_AGREEMENTSImpl.doDML(SMS_AGREEMENTSImpl.java:1628)
at oracle.jbo.server.EntityImpl.postChanges(EntityImpl.java:6751)
at sms1405.SMS_AGREEMENTSImpl.postChanges(SMS_AGREEMENTSImpl.java:1645)
at oracle.jbo.server.DBTransactionImpl.doPostTransactionListeners(DBTransactionImpl.java:3264)
at oracle.jbo.server.DBTransactionImpl.postChanges(DBTransactionImpl.java:3067)
at oracle.jbo.server.DBTransactionImpl.commitInternal(DBTransactionImpl.java:2071)
at oracle.jbo.server.DBTransactionImpl.commit(DBTransactionImpl.java:2352)
at oracle.adf.model.bc4j.DCJboDataControl.commitTransaction(DCJboDataControl.java:1590)
at oracle.adf.model.binding.DCDataControl.callCommitTransaction(DCDataControl.java:1415)
at oracle.jbo.uicli.binding.JUCtrlActionBinding.doIt(JUCtrlActionBinding.java:1428)
at oracle.adf.model.binding.DCDataControl.invokeOperation(DCDataControl.java:2169)
at oracle.jbo.uicli.binding.JUCtrlActionBinding.invoke(JUCtrlActionBinding.java:731)
at oracle.jbo.uicli.jui.JUActionBinding.actionPerformed(JUActionBinding.java:193)
at oracle.jbo.uicli.controls.JUNavigationBar.doAction(JUNavigationBar.java:412)
at oracle.jbo.jbotester.NavigationBar.doAction(NavigationBar.java:112)
at oracle.jbo.uicli.controls.JUNavigationBar$NavButton.actionPerformed(JUNavigationBar.java:118)
at javax.swing.AbstractButton.fireActionPerformed(AbstractButton.java:1995)
at javax.swing.AbstractButton$Handler.actionPerformed(AbstractButton.java:2318)
at javax.swing.DefaultButtonModel.fireActionPerformed(DefaultButtonModel.java:387)
at javax.swing.DefaultButtonModel.setPressed(DefaultButtonModel.java:242)
at javax.swing.plaf.basic.BasicButtonListener.mouseReleased(BasicButtonListener.java:236)
at java.awt.AWTEventMulticaster.mouseReleased(AWTEventMulticaster.java:272)
at java.awt.Component.processMouseEvent(Component.java:6289)
at javax.swing.JComponent.processMouseEvent(JComponent.java:3267)
at java.awt.Component.processEvent(Component.java:6054)
at java.awt.Container.processEvent(Container.java:2041)
at java.awt.Component.dispatchEventImpl(Component.java:4652)
at java.awt.Container.dispatchEventImpl(Container.java:2099)
at java.awt.Component.dispatchEvent(Component.java:4482)
at java.awt.LightweightDispatcher.retargetMouseEvent(Container.java:4577)
at java.awt.LightweightDispatcher.processMouseEvent(Container.java:4238)
at java.awt.LightweightDispatcher.dispatchEvent(Container.java:4168)
at java.awt.Container.dispatchEventImpl(Container.java:2085)
at java.awt.Window.dispatchEventImpl(Window.java:2478)
at java.awt.Component.dispatchEvent(Component.java:4482)
at java.awt.EventQueue.dispatchEventImpl(EventQueue.java:644)
at java.awt.EventQueue.access$000(EventQueue.java:85)
at java.awt.EventQueue$1.run(EventQueue.java:603)
at java.awt.EventQueue$1.run(EventQueue.java:601)
at java.security.AccessController.doPrivileged(Native Method)
at java.security.AccessControlContext$1.doIntersectionPrivilege(AccessControlContext.java:87)
at java.security.AccessControlContext$1.doIntersectionPrivilege(AccessControlContext.java:98)
at java.awt.EventQueue$2.run(EventQueue.java:617)
at java.awt.EventQueue$2.run(EventQueue.java:615)
at java.security.AccessController.doPrivileged(Native Method)
at java.security.AccessControlContext$1.doIntersectionPrivilege(AccessControlContext.java:87)
at java.awt.EventQueue.dispatchEvent(EventQueue.java:614)
at java.awt.EventDispatchThread.pumpOneEventForFilters(EventDispatchThread.java:269)
at java.awt.EventDispatchThread.pumpEventsForFilter(EventDispatchThread.java:184)
at java.awt.EventDispatchThread.pumpEventsForHierarchy(EventDispatchThread.java:174)
at java.awt.EventDispatchThread.pumpEvents(EventDispatchThread.java:169)
at java.awt.EventDispatchThread.pumpEvents(EventDispatchThread.java:161)
at java.awt.EventDispatchThread.run(EventDispatchThread.java:122) -
Problem with BC4J in 10g: incorrect Date formatting
I have PL/SQL procedure, which is called from bc4j-struts-application like this:
CallableStatement cs = getDBTransaction().createCallableStatement(FIND_USER_RESP_STMT,0);
cs.execute();
It return an exeption with this message:
ORA-01403: no data found
ORA-06512: at "CRN.CRN_UTIL", line 115
ORA-06512: at "CRN.CRN_UTIL", line 323
ORA-06512: at "CRN.CRN_RESPONSIBILITY", line 85
ORA-01843: not a valid month
ORA-06512: at line 1
I don't send any data parameter for this procedure. When I try to call it from JDeveloper connections debug, it runs succesfully. I try to create bc4j entity to query:
select to_char(sysdate, 'DD-MON-YYYY') X,
to_char(sysdate, 'DD-MM-YYYY') Y from dual
and it retrieves:
27-¿¿¿-2004
27-09-2004
Date constant is used in PL/SQL procedure with format 'DD-MON_YYYY', but I can't change it, because it used by many other applications.
My local setting is english, USA, and I have the second language on my PC - russian.
JDeveloper 9.0.5.2. This code runs succesfully in JDeveloper 9.0.3.3.
How can I send bc4j date setting in normal format to solve this problem? And where can I find bc4j local settings, which are sended by bc4j to server?
Regards, NikolayHello,
The problem is still available. Could anybody help?
Regard -
Problem with store ResultSet and show result in table
Hi, I'm kind of new in ADF, I need to store ResultSet and show result in table-component. I have two problems:
1) I get my ResultSet by calling callStoredProcedure(...) and this returns actually ref_cursor as ResultSet.
When I try to println() contains of this result set in this method - it works OK (commented part),
but when I want to println() somewhere else (eg. in retrieveRefCursor() method) it doesn't work.
The problem is that the scrollability of the ResultSet is lost - it becomes a TYPE_FORWARD_ONLY ResultSet.
Is there any way to store data from ref_cursor for a long time?
2) My second problem is "store any result set and show this data in table". I have tried use method storeNewResultSet() but
without result (table contains only "No rows yet" and everything seems to be OK - no exception, no warning, no error...).
I have tried to call this method with ResultSet from select on dbs (without resultSet as ref_cursor ) - no result with createRowFromResultSet(),
storeNewResultSet(), setUserDataForCollection()...
I've tried a lot of ways to do this, but it doesn't work. I really don't know how to make it so it can work.
Thanks for your help.
ADF BC, JDev 11.1.1.0
This is my code from ViewObjectImpl
package tp.model ;
import com.sun.jmx.mbeanserver.MetaData ;
import java.sql.CallableStatement ;
import java.sql.Connection ;
import java.sql.PreparedStatement ;
import java.sql.ResultSet ;
import java.sql.ResultSetMetaData ;
import java.sql.SQLException ;
import java.sql.Statement ;
import java.sql.Types ;
import oracle.jbo.JboException ;
import oracle.jbo.server.SQLBuilder ;
import oracle.jbo.server.ViewObjectImpl ;
import oracle.jbo.server.ViewRowImpl ;
import oracle.jbo.server.ViewRowSetImpl ;
import oracle.jdbc.OracleCallableStatement ;
import oracle.jdbc.OracleConnection ;
import oracle.jdbc.OracleTypes ;
public class Profiles1ViewImpl extends ViewObjectImpl {
private static final String SQL_STM = "begin Pkg_profile.get_profile_list(?,?,?,?);end;" ;
public Profiles1ViewImpl () {
/* 0. */
protected void create () {
getViewDef ().setQuery ( null ) ;
getViewDef ().setSelectClause ( null ) ;
setQuery ( null ) ;
public Connection getCurrentConnection () throws SQLException {
// Note that we never execute this statement, so no commit really happens
Connection conn = null ;
PreparedStatement st = getDBTransaction ().createPreparedStatement ( "commit" , 1 ) ;
conn = st.getConnection () ;
st.close () ;
return conn ;
/* 1. */
protected void executeQueryForCollection ( Object qc , Object[] params , int numUserParams ) {
storeNewResultSet ( qc , retrieveRefCursor ( qc , params ) ) ;
// callStoredProcedure ( qc , SQL_STM ) ;
super.executeQueryForCollection ( qc , params , numUserParams ) ;
/* 2. */
private ResultSet retrieveRefCursor ( Object qc , Object[] params ) {
ResultSet rs = null ;
rs = callStoredProcedure ( qc , SQL_STM ) ;
return rs ;
/* 3. */
public ResultSet callStoredProcedure ( Object qc , String stmt ) {
CallableStatement st = null ;
ResultSet refCurResultSet = null ;
try {
st = getDBTransaction ().createCallableStatement ( stmt , 0 ) ; // call
st.setObject ( 1 , 571 ) ; //set id of my record to 571
st.registerOutParameter ( 2 , OracleTypes.CURSOR ) ; // my ref_cursor
st.registerOutParameter ( 3 , Types.NUMERIC ) ;
st.registerOutParameter ( 4 , Types.VARCHAR ) ;
st.execute () ; //executeUpdate
System.out.println ( "Numeric " + st.getObject ( 3 ) ) ;
System.out.println ( "Varchar " + st.getObject ( 4 ) ) ;
refCurResultSet = ( ResultSet ) st.getObject ( 2 ) ; //set Cursoru to ResultSet
// setUserDataForCollection(qc, refCurResultSet); //don't work
// createRowFromResultSet ( qc , refCurResultSet ) ; //don't work
/* this works but only one-time call - so my resultSet(cursor) really have a data
while ( refCurResultSet.next () ) {
String nameProfile = refCurResultSet.getString ( 2 ) ;
System.out.println ( "Name profile: " + nameProfile ) ;
return refCurResultSet ;
} catch ( SQLException e ) {
System.out.println ( "sql ex " + e ) ;
throw new JboException ( e ) ;
} finally {
if ( st != null ) {
try {
st.close () ; // 7. Close the statement
} catch ( SQLException e ) {
System.out.println ( "sql exx2 " + e ) ;
/* 4. Store a new result set in the query-collection-private user-data context */
private void storeNewResultSet ( Object qc , ResultSet rs ) {
ResultSet existingRs = getResultSet ( qc ) ;
// If this query collection is getting reused, close out any previous rowset
if ( existingRs != null ) {
try {
existingRs.close () ;
} catch ( SQLException s ) {
System.out.println ( "sql err " + s ) ;
setUserDataForCollection ( qc , rs ) ; //should store my result set
hasNextForCollection ( qc ) ; // Prime the pump with the first row.
/* 5. Retrieve the result set wrapper from the query-collection user-data */
private ResultSet getResultSet ( Object qc ) {
return ( ResultSet ) getUserDataForCollection ( qc ) ;
// createRowFromResultSet - overridden for custom java data source support - also doesn't work
protected ViewRowImpl createRowFromResultSet ( Object qc , ResultSet resultSet ) {
ViewRowImpl value = super.createRowFromResultSet ( qc , resultSet ) ;
return value ;
}Hi I have the same problem like you ...
My SQL Definition:
CREATE OR REPLACE TYPE RMSPRD.NB_TAB_STOREDATA is table of NB_STOREDATA_REC
CREATE OR REPLACE TYPE RMSPRD.NB_STOREDATA_REC AS OBJECT (
v_title VARCHAR2(100),
v_store VARCHAR2(50),
v_sales NUMBER(20,4),
v_cost NUMBER(20,4),
v_units NUMBER(12,4),
v_margin NUMBER(6,2),
v_ly_sales NUMBER(20,4),
v_ly_cost NUMBER(20,4),
v_ly_units NUMBER(12,4),
v_ly_margin NUMBER(6,2),
v_sales_variance NUMBER(6,2)
CREATE OR REPLACE PACKAGE RMSPRD.NB_SALES_DATA
AS
v_sales_format_tab nb_tab_storedata;
FUNCTION sales_data_by_format_gen (
key_value IN VARCHAR2,
l_to_date IN DATE DEFAULT SYSDATE-1,
l_from_date IN DATE DEFAULT TRUNC (SYSDATE, 'YYYY')
RETURN nb_tab_storedata;
I have a PLSQL function .. that will return table ..
when i use this in sql developer it is working fine....
select * from table (NB_SALES_DATA.sales_data_by_format_gen('TSC',
'05-Aug-2012',
'01-Aug-2012') )
it returning table format record.
I am not able to call from VO object. ...
Hope you can help me .. please tell me step by step process...
protected Object callStoredFunction(int sqlReturnType, String stmt,
Object[] bindVars) {
System.out.println("--> 1");
CallableStatement st = null;
try {
st = getDBTransaction().createCallableStatement("begin ? := " +"NB_SALES_DATA.sales_data_by_format_gen('TSC','05-Aug-2012','01-Aug-2012') ; end;", 0);
System.out.println("--> 2");
st.executeUpdate();
System.out.println("--> 3");
return st.getObject(1);
catch (SQLException e) {
e.printStackTrace();
throw new JboException(e); -
Get the current item in advance table by clicking button
hello friends,
i have an urgent requirement that...
1) i have a search page, when i click the go button all the search results should populate into table region.
2) every row having username, firstname,lastname,email ...etc. and one disable user button
3)suppose user can click any row and click disable user button that user should be disable by calling Oracle Api
here my code everything is ready, i am strucking to get the username from row...and then paas it to the oracle api
if(pageContext.getParameter("DIsableUser")!=null)
OADBTransaction txn =am.getOADBTransaction();
CallableStatement callablestatement1 = txn.createCallableStatement("begin FND_USER_PKG.DISABLEUSER(?);end;",1);
System.out.println("procedure1 is:"+callablestatement1);
try
callablestatement1.setString(1,UserName);
callablestatement1.executeUpdate();
callablestatement1.close();
txn.commit();
catch(Exception e)
throw new OAException(e.getMessage(),OAException.ERROR);
//throw new OAException("POS","MODPOS_SUPPLIER_EXIST");
very urgent...can any one give some solution.
Thanks
krish.Anand, thanx,
no luck...
if("update".equals(pageContext.getParameter(OAWebBeanConstants.EVENT_PARAM)))
String rowReference = pageContext.getParameter(OAWebBeanConstants.EVENT_SOURCE_ROW_REFERENCE);
String userName="";
if(rowReference != null)
PosUserAdminVORowImpl vorowimpl = (PosUserAdminVORowImpl)am.findRowByRef(rowReference);
userName = vorowimpl.getUserName();
System.out.println("print username"+userName);
OADBTransaction txn =am.getOADBTransaction();
CallableStatement callablestatement1 = txn.createCallableStatement("begin FND_USER_PKG.DISABLEUSER(?);end;",1);
System.out.println("procedure1 is:"+callablestatement1);
try
callablestatement1.setString(1,userName);
callablestatement1.executeUpdate();
callablestatement1.close();
txn.commit();
catch(Exception e)
throw new OAException(e.getMessage(),OAException.ERROR);
//throw new OAException("POS","MODPOS_SUPPLIER_EXIST");
where update is firepartial event.when i clcik disableuser button below error poped out on page
ORA-01403: no data found ORA-06512: at "APPS.FND_USER_PKG", line 180 ORA-06512: at "APPS.FND_USER_PKG", line 1315 ORA-06512: at "APPS.FND_USER_PKG", line 1616 ORA-06512: at line 1
let me know you find any thing issue in above code.
Thanks
krish. -
Need to add new row in my table
Hi all,
1. i am developing new OAF page in which i have call stored procedure in my AM but when add code for create additional row only single row is creating.when i click for another row nonew is created.
please help..
this is the code i have used in AM
package EmployeeDetail.oracle.apps.fnd.EmployeeDetail.server;
import java.sql.CallableStatement;
import java.sql.SQLException;
import oracle.apps.fnd.framework.OAException;
import oracle.apps.fnd.framework.OAViewObject;
import oracle.apps.fnd.framework.server.OAApplicationModuleImpl;
import oracle.apps.fnd.framework.server.OADBTransaction;
import oracle.apps.jtf.gantt.javaui.events.TaskIdEvent;
import oracle.jbo.Row;
// --- File generated by Oracle ADF Business Components Design Time.
// --- Custom code may be added to this class.
// --- Warning: Do not modify method signatures of generated methods.
public class EmployeeDetailAMImpl extends OAApplicationModuleImpl {
/**This is the default constructor (do not remove)
public EmployeeDetailAMImpl() {
/**Sample main for debugging Business Components code using the tester.
public static void main(String[] args) {
launchTester("EmployeeDetail.oracle.apps.fnd.EmployeeDetail.server", /* package name */
"EmployeeDetailAMLocal" /* Configuration Name */);
/**Container's getter for EmployeeDetailWIPVO1
public EmployeeDetailWIPVOImpl getEmployeeDetailWIPVO1() {
return (EmployeeDetailWIPVOImpl)findViewObject("EmployeeDetailWIPVO1");
public void task(String Name)
OADBTransaction txn=getOADBTransaction();
CallableStatement cst=null;
OAViewObject vo=(OAViewObject)getEmployeeDetailWIPVO1();
try{
String CallProc="begin emp_task(:1);commit; end;";
cst=txn.createCallableStatement(CallProc,0);
cst.setString(1,Name);
cst.execute();
cst.close();
catch (SQLException sqle) {
throw OAException.wrapperException(sqle);
public void initDetail(String Name)
OAViewObject vo=(OAViewObject)getEmployeeDetailWIPVO1();
vo.setWhereClause(null);
vo.setWhereClauseParams(null);
vo.setWhereClause("TASK_ID=:1");
vo.setWhereClauseParam(0,Name);
vo.executeQuery();
public void createtask()
OAViewObject vo=(OAViewObject)getEmployeeDetailWIPVO1();
if(!vo.isPreparedForExecution())
vo.executeQuery();
Row row=vo.createRow();
vo.insertRow(row);
row.setNewRowState(Row.STATUS_INITIALIZED);
public void rowadd() {
OAViewObject vo = (OAViewObject)getEmployeeDetailWIPVO1();
OADBTransaction txn = getOADBTransaction();
if (!vo.isPreparedForExecution()) {
vo.setWhereClause("1=0");
vo.executeQuery();
Row row = vo.last();
row = vo.createRow();
vo.setCurrentRow(row);
vo.insertRow(row);
row.setNewRowState(Row.STATUS_INITIALIZED);
public void commit()
OADBTransaction txn=(OADBTransaction)getTransaction();
txn.commit();
public void rollback()
OADBTransaction txn=(OADBTransaction)getTransaction();
txn.rollback();
this on COntroller
package EmployeeDetail.oracle.apps.fnd.EmployeeDetail.webui;
import java.io.Serializable;
import oracle.apps.fnd.common.VersionInfo;
import oracle.apps.fnd.framework.OAApplicationModule;
import oracle.apps.fnd.framework.webui.OAControllerImpl;
import oracle.apps.fnd.framework.webui.OAPageContext;
import oracle.apps.fnd.framework.webui.beans.OAWebBean;
import oracle.apps.fnd.framework.webui.beans.table.OATableBean;
* Controller for ...
public class EmpTaskDetailCO extends OAControllerImpl
public static final String RCS_ID="$Header$";
public static final boolean RCS_ID_RECORDED =
VersionInfo.recordClassVersion(RCS_ID, "%packagename%");
* Layout and page setup logic for a region.
* @param pageContext the current OA page context
* @param webBean the web bean corresponding to the region
public void processRequest(OAPageContext pageContext, OAWebBean webBean)
super.processRequest(pageContext, webBean);
OATableBean tableBean =
(OATableBean)webBean.findChildRecursive("EmployeeDetailWIPVO11");
if (tableBean != null)
tableBean.setInsertable(true);
tableBean.setAutoInsertion(false);
* Procedure to handle form submissions for form elements in
* a region.
* @param pageContext the current OA page context
* @param webBean the web bean corresponding to the region
public void processFormRequest(OAPageContext pageContext, OAWebBean webBean)
super.processFormRequest(pageContext, webBean);
OAApplicationModule am=pageContext.getApplicationModule(webBean);
String Name=pageContext.getParameter("SRNO");
Serializable[] Nam={Name};
am.invokeMethod("createtask");
am.invokeMethod("task",Nam);
am.invokeMethod("initDetail",Nam);
/**if(pageContext.getParameter("CreateRow")!=null)
am.invokeMethod("rowadd");
OATableBean tableBean = (OATableBean)webBean.findChildRecursive("EmployeeDetailWIPVO11");
if (tableBean.getName().equals(pageContext.getParameter(SOURCE_PARAM)) &&
ADD_ROWS_EVENT.equals(pageContext.getParameter(EVENT_PARAM))) {
am.invokeMethod("rowadd");
else if (pageContext.getParameter("Apply")!=null)
am.invokeMethod("commit");
else if (pageContext.getParameter("Cancel")!=null)
am.invokeMethod("rollback");
}Hi ,
Modify the the methods as given below
public void rowadd() {
OAViewObject vo = (OAViewObject)getEmployeeDetailWIPVO1();
OADBTransaction txn = getOADBTransaction();
if (!vo.isPreparedForExecution()) {
vo.setWhereClause("1=0");
vo.executeQuery();
vo.next();
vo.last();row = vo.createRow();
vo.setCurrentRow(row);
vo.insertRow(row);
row.setNewRowState(Row.STATUS_INITIALIZED);
Thanks
Pratap
Maybe you are looking for
-
I have one contact that I've been texting for months, about 5 hours ago, I started receiving an error that the text was not sent. However, if I text a picture and then text with the picture the message goes through. Why am I getting this error?
-
Deleting large numbers of photos
I shot a high school football game last night with my D3. Using 9 fps, I quickly ended up with lots of pictures to sift through. Being very selective to print only the best, I am throwing away 90% of what I now have in Lightroom 2. I have a slow old
-
Is import & export working in ECC version?
i had one program. In which Export and Import is not working properly in ECC 6.0 version where as 4.6C working fine. If i commented the Import & Export than only it is working fine. Is there any other procedure OR how to use import and export in ECC
-
My brand new macbook air 13" seems to have a pretty slow shutdown time (20s+). As I am new to mac I spent several days trying to find a fix without any succes. After a shutdown I just ran a console search for a exit timeout and found the following: 0
-
Audio/Video Out of Sync While Using Media Manager
While viewing most video files through Media Manager, the audio is a fraction behind the video. It is not significant but it is noticeable. I have looked at the Media Manager sticky but the posts are on all different areas where the Media Manager is