XML Embedded in Stored Function - Performance Considerations
A developer in my company approached us with a question about performance considerations while writing stored procedures or functions that embed XML.
The primary use for this function would be to provide a quick decision given a set of parameters. The function will use the input parameters along with some simple calculations and DB lookups to come up with an answer. These parameters will be stored in the database. Potentially even more parameters that are currently represented in the xml will be available in the DB and therefore could be looked up by the function.
My biggest question is if this way of using XML as an input parameter introduces any performance considerations or concerns for storage/bandwidth etc.
Thank you
Edited by: user8699561 on May 19, 2010 9:24 AM
user8699561 wrote:
A developer in my company approached us with a question about performance considerations while writing stored procedures or functions that embed XML.
The primary use for this function would be to provide a quick decision given a set of parameters. The function will use the input parameters along with some simple calculations and DB lookups to come up with an answer. These parameters will be stored in the database. Potentially even more parameters that are currently represented in the xml will be available in the DB and therefore could be looked up by the function.
My biggest question is if this way of using XML as an input parameter introduces any performance considerations or concerns for storage/bandwidth etc.
Thank you
Edited by: user8699561 on May 19, 2010 9:24 AMStorage/bandwith will be determined regarding the size of the XML doc, but there are ways to minimize those to the minimum (binary XML support in JDBC eg.). Performance overhead in general...eh..."it depends" (how you set it up)...
Similar Messages
-
XML-22043: (Error) Extension function error: Method not found 'getDtformat'
Hi,
We are using a custom made function for formatting date in the XSL transformation. This jar file has been kept under the domain_name/lib folder, and it is working as expected in our Windows environment. However when I tried to deploy it in Linux environment, it is giving the error XML-22043: (Error) Extension function error: Method not found 'getDtformat' (Full stack trace attached below)
Appreciate your help!
Regards,
Ebrahim Badusha.
<Oct 21, 2011 3:04:34 PM EDT> <Error> <oracle.soa.bpel.engine.xml> <BEA-000000> <javax.xml.transform.TransformerException: oramds:/deployed-composites/default/MyProject_rev1.0/xsl/xFormValidationsBRE.xsl<Line 27, Column 252>: XML-22043: (Error) Extension function error: Method not found 'getDtformat'>
<Oct 21, 2011 3:04:34 PM EDT> <Error> <oracle.soa.bpel.engine.xml> <BEA-000000> <
javax.xml.xpath.XPathExpressionException: javax.xml.transform.TransformerException: oramds:/deployed-composites/default/MyProject_rev1.0/xsl/xFormValidationsBRE.xsl<Line 27, Column 252>: XML-22043: (Error) Extension function error: Method not found 'getDtformat'
at oracle.xml.xpath.JXPathExpression.evaluate(JXPathExpression.java:242)
at com.collaxa.cube.xml.xpath.BPELXPathUtil.evaluate(BPELXPathUtil.java:240)
at com.collaxa.cube.engine.ext.bpel.v2.wmp.assign.BPEL2FromToOperationPerformer.evalFromExpression(BPEL2FromToOperationPerformer.java:320)
at com.collaxa.cube.engine.ext.bpel.v2.wmp.assign.BPEL2FromToOperationPerformer.evalFromValue(BPEL2FromToOperationPerformer.java:220)
at com.collaxa.cube.engine.ext.bpel.v2.wmp.assign.BPEL2FromToOperationPerformer.perform(BPEL2FromToOperationPerformer.java:55)
at com.collaxa.cube.engine.ext.bpel.v2.wmp.BPEL2AssignWMP.__executeStatements(BPEL2AssignWMP.java:69)
at com.collaxa.cube.engine.ext.bpel.common.wmp.BaseBPELActivityWMP.perform(BaseBPELActivityWMP.java:158)
at com.collaxa.cube.engine.CubeEngine._performActivity(CubeEngine.java:2463)
at com.collaxa.cube.engine.CubeEngine.performActivity(CubeEngine.java:2334)
at com.collaxa.cube.engine.CubeEngine.handleWorkItem(CubeEngine.java:1115)
at com.collaxa.cube.engine.dispatch.message.instance.PerformMessageHandler.handleLocal(PerformMessageHandler.java:73)
at com.collaxa.cube.engine.dispatch.DispatchHelper.handleLocalMessage(DispatchHelper.java:220)
at com.collaxa.cube.engine.dispatch.DispatchHelper.sendMemory(DispatchHelper.java:328)
at com.collaxa.cube.engine.CubeEngine.endRequest(CubeEngine.java:4350)
at com.collaxa.cube.engine.CubeEngine.endRequest(CubeEngine.java:4281)
at com.collaxa.cube.engine.CubeEngine.createAndInvoke(CubeEngine.java:679)
at com.collaxa.cube.engine.ejb.impl.CubeEngineBean.createAndInvoke(CubeEngineBean.java:103)
at com.collaxa.cube.engine.ejb.impl.CubeEngineBean.syncCreateAndInvoke(CubeEngineBean.java:145)
at com.collaxa.cube.engine.ejb.impl.bpel.BPELEngineBean.syncCreateAndInvoke(BPELEngineBean.java:111)
at sun.reflect.NativeMethodAccessorImpl.invoke0(Native Method)
at sun.reflect.NativeMethodAccessorImpl.invoke(NativeMethodAccessorImpl.java:39)
at sun.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:25)
at java.lang.reflect.Method.invoke(Method.java:597)
at com.bea.core.repackaged.springframework.aop.support.AopUtils.invokeJoinpointUsingReflection(AopUtils.java:310)
at com.bea.core.repackaged.springframework.aop.framework.ReflectiveMethodInvocation.invokeJoinpoint(ReflectiveMethodInvocation.java:182)
at com.bea.core.repackaged.springframework.aop.framework.ReflectiveMethodInvocation.proceed(ReflectiveMethodInvocation.java:149)
at com.bea.core.repackaged.springframework.jee.intercept.MethodInvocationInvocationContext.proceed(MethodInvocationInvocationContext.java:104)
at oracle.security.jps.ee.ejb.JpsAbsInterceptor$1.run(JpsAbsInterceptor.java:94)
at java.security.AccessController.doPrivileged(Native Method)
at oracle.security.jps.util.JpsSubject.doAsPrivileged(JpsSubject.java:313)
at oracle.security.jps.ee.util.JpsPlatformUtil.runJaasMode(JpsPlatformUtil.java:413)
at oracle.security.jps.ee.ejb.JpsAbsInterceptor.runJaasMode(JpsAbsInterceptor.java:81)
at oracle.security.jps.ee.ejb.JpsAbsInterceptor.intercept(JpsAbsInterceptor.java:112)
at oracle.security.jps.ee.ejb.JpsInterceptor.intercept(JpsInterceptor.java:105)
at sun.reflect.GeneratedMethodAccessor1289.invoke(Unknown Source)
at sun.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:25)
at java.lang.reflect.Method.invoke(Method.java:597)
at com.bea.core.repackaged.springframework.aop.support.AopUtils.invokeJoinpointUsingReflection(AopUtils.java:310)
at com.bea.core.repackaged.springframework.jee.intercept.JeeInterceptorInterceptor.invoke(JeeInterceptorInterceptor.java:69)
at com.bea.core.repackaged.springframework.aop.framework.ReflectiveMethodInvocation.proceed(ReflectiveMethodInvocation.java:171)
at com.bea.core.repackaged.springframework.aop.support.DelegatingIntroductionInterceptor.doProceed(DelegatingIntroductionInterceptor.java:131)
at com.bea.core.repackaged.springframework.aop.support.DelegatingIntroductionInterceptor.invoke(DelegatingIntroductionInterceptor.java:119)
at com.bea.core.repackaged.springframework.aop.framework.ReflectiveMethodInvocation.proceed(ReflectiveMethodInvocation.java:171)
at com.bea.core.repackaged.springframework.jee.spi.MethodInvocationVisitorImpl.visit(MethodInvocationVisitorImpl.java:37)
at weblogic.ejb.container.injection.EnvironmentInterceptorCallbackImpl.callback(EnvironmentInterceptorCallbackImpl.java:54)
at com.bea.core.repackaged.springframework.jee.spi.EnvironmentInterceptor.invoke(EnvironmentInterceptor.java:50)
at com.bea.core.repackaged.springframework.aop.framework.ReflectiveMethodInvocation.proceed(ReflectiveMethodInvocation.java:171)
at com.bea.core.repackaged.springframework.aop.interceptor.ExposeInvocationInterceptor.invoke(ExposeInvocationInterceptor.java:89)
at com.bea.core.repackaged.springframework.aop.framework.ReflectiveMethodInvocation.proceed(ReflectiveMethodInvocation.java:171)
at com.bea.core.repackaged.springframework.aop.support.DelegatingIntroductionInterceptor.doProceed(DelegatingIntroductionInterceptor.java:131)
at com.bea.core.repackaged.springframework.aop.support.DelegatingIntroductionInterceptor.invoke(DelegatingIntroductionInterceptor.java:119)
at com.bea.core.repackaged.springframework.aop.framework.ReflectiveMethodInvocation.proceed(ReflectiveMethodInvocation.java:171)
at com.bea.core.repackaged.springframework.aop.framework.JdkDynamicAopProxy.invoke(JdkDynamicAopProxy.java:204)
at $Proxy316.syncCreateAndInvoke(Unknown Source)
at com.collaxa.cube.engine.ejb.impl.bpel.BPELEngineBean_51369e_ICubeEngineLocalBeanImpl.__WL_invoke(Unknown Source)
at weblogic.ejb.container.internal.SessionLocalMethodInvoker.invoke(SessionLocalMethodInvoker.java:39)
at com.collaxa.cube.engine.ejb.impl.bpel.BPELEngineBean_51369e_ICubeEngineLocalBeanImpl.syncCreateAndInvoke(Unknown Source)
at com.collaxa.cube.engine.delivery.DeliveryHandler.callCreateAndInvoke(DeliveryHandler.java:790)
at com.collaxa.cube.engine.delivery.DeliveryHandler.initialRequestAnyType(DeliveryHandler.java:528)
at com.collaxa.cube.engine.delivery.DeliveryHandler.initialRequest(DeliveryHandler.java:487)
at com.collaxa.cube.engine.delivery.DeliveryHandler.request(DeliveryHandler.java:162)
at com.collaxa.cube.engine.ejb.impl.CubeDeliveryBean.request(CubeDeliveryBean.java:493)
at sun.reflect.NativeMethodAccessorImpl.invoke0(Native Method)
at sun.reflect.NativeMethodAccessorImpl.invoke(NativeMethodAccessorImpl.java:39)
at sun.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:25)
at java.lang.reflect.Method.invoke(Method.java:597)
at com.bea.core.repackaged.springframework.aop.support.AopUtils.invokeJoinpointUsingReflection(AopUtils.java:310)
at com.bea.core.repackaged.springframework.aop.framework.ReflectiveMethodInvocation.invokeJoinpoint(ReflectiveMethodInvocation.java:182)
at com.bea.core.repackaged.springframework.aop.framework.ReflectiveMethodInvocation.proceed(ReflectiveMethodInvocation.java:149)
at com.bea.core.repackaged.springframework.jee.intercept.MethodInvocationInvocationContext.proceed(MethodInvocationInvocationContext.java:104)
at oracle.security.jps.ee.ejb.JpsAbsInterceptor$1.run(JpsAbsInterceptor.java:94)
at java.security.AccessController.doPrivileged(Native Method)
at oracle.security.jps.util.JpsSubject.doAsPrivileged(JpsSubject.java:313)
at oracle.security.jps.ee.util.JpsPlatformUtil.runJaasMode(JpsPlatformUtil.java:413)
at oracle.security.jps.ee.ejb.JpsAbsInterceptor.runJaasMode(JpsAbsInterceptor.java:81)
at oracle.security.jps.ee.ejb.JpsAbsInterceptor.intercept(JpsAbsInterceptor.java:112)
at oracle.security.jps.ee.ejb.JpsInterceptor.intercept(JpsInterceptor.java:105)
at sun.reflect.GeneratedMethodAccessor1289.invoke(Unknown Source)
at sun.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:25)
at java.lang.reflect.Method.invoke(Method.java:597)
at com.bea.core.repackaged.springframework.aop.support.AopUtils.invokeJoinpointUsingReflection(AopUtils.java:310)
at com.bea.core.repackaged.springframework.jee.intercept.JeeInterceptorInterceptor.invoke(JeeInterceptorInterceptor.java:69)
at com.bea.core.repackaged.springframework.aop.framework.ReflectiveMethodInvocation.proceed(ReflectiveMethodInvocation.java:171)
at com.bea.core.repackaged.springframework.aop.support.DelegatingIntroductionInterceptor.doProceed(DelegatingIntroductionInterceptor.java:131)
at com.bea.core.repackaged.springframework.aop.support.DelegatingIntroductionInterceptor.invoke(DelegatingIntroductionInterceptor.java:119)
at com.bea.core.repackaged.springframework.aop.framework.ReflectiveMethodInvocation.proceed(ReflectiveMethodInvocation.java:171)
at com.bea.core.repackaged.springframework.jee.spi.MethodInvocationVisitorImpl.visit(MethodInvocationVisitorImpl.java:37)
at weblogic.ejb.container.injection.EnvironmentInterceptorCallbackImpl.callback(EnvironmentInterceptorCallbackImpl.java:54)
at com.bea.core.repackaged.springframework.jee.spi.EnvironmentInterceptor.invoke(EnvironmentInterceptor.java:50)
at com.bea.core.repackaged.springframework.aop.framework.ReflectiveMethodInvocation.proceed(ReflectiveMethodInvocation.java:171)
at com.bea.core.repackaged.springframework.aop.interceptor.ExposeInvocationInterceptor.invoke(ExposeInvocationInterceptor.java:89)
at com.bea.core.repackaged.springframework.aop.framework.ReflectiveMethodInvocation.proceed(ReflectiveMethodInvocation.java:171)
at com.bea.core.repackaged.springframework.aop.support.DelegatingIntroductionInterceptor.doProceed(DelegatingIntroductionInterceptor.java:131)
at com.bea.core.repackaged.springframework.aop.support.DelegatingIntroductionInterceptor.invoke(DelegatingIntroductionInterceptor.java:119)
at com.bea.core.repackaged.springframework.aop.framework.ReflectiveMethodInvocation.proceed(ReflectiveMethodInvocation.java:171)
at com.bea.core.repackaged.springframework.aop.framework.JdkDynamicAopProxy.invoke(JdkDynamicAopProxy.java:204)
at $Proxy312.request(Unknown Source)
at com.collaxa.cube.engine.ejb.impl.bpel.BPELDeliveryBean_5k948i_ICubeDeliveryLocalBeanImpl.__WL_invoke(Unknown Source)
at weblogic.ejb.container.internal.SessionLocalMethodInvoker.invoke(SessionLocalMethodInvoker.java:39)
at com.collaxa.cube.engine.ejb.impl.bpel.BPELDeliveryBean_5k948i_ICubeDeliveryLocalBeanImpl.request(Unknown Source)
at oracle.fabric.CubeServiceEngine.request(CubeServiceEngine.java:380)
at oracle.integration.platform.blocks.mesh.SynchronousMessageHandler.doRequest(SynchronousMessageHandler.java:139)
at oracle.integration.platform.blocks.mesh.MessageRouter.request(MessageRouter.java:179)
at oracle.integration.platform.blocks.mesh.MeshImpl.request(MeshImpl.java:155)
at sun.reflect.NativeMethodAccessorImpl.invoke0(Native Method)
at sun.reflect.NativeMethodAccessorImpl.invoke(NativeMethodAccessorImpl.java:39)
at sun.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:25)
at java.lang.reflect.Method.invoke(Method.java:597)
at org.springframework.aop.support.AopUtils.invokeJoinpointUsingReflection(AopUtils.java:307)
at org.springframework.aop.framework.ReflectiveMethodInvocation.invokeJoinpoint(ReflectiveMethodInvocation.java:182)
at org.springframework.aop.framework.ReflectiveMethodInvocation.proceed(ReflectiveMethodInvocation.java:149)
at oracle.integration.platform.metrics.PhaseEventAspect.invoke(PhaseEventAspect.java:59)
at org.springframework.aop.framework.ReflectiveMethodInvocation.proceed(ReflectiveMethodInvocation.java:171)
at org.springframework.aop.framework.JdkDynamicAopProxy.invoke(JdkDynamicAopProxy.java:204)
at $Proxy329.request(Unknown Source)
at oracle.integration.platform.blocks.soap.WebServiceEntryBindingComponent.doMessageProcessing(WebServiceEntryBindingComponent.java:1281)
at oracle.integration.platform.blocks.soap.WebServiceEntryBindingComponent.processIncomingMessage(WebServiceEntryBindingComponent.java:859)
at oracle.integration.platform.blocks.soap.FabricProvider.processMessage(FabricProvider.java:113)
at oracle.j2ee.ws.server.provider.ProviderProcessor.doEndpointProcessing(ProviderProcessor.java:1187)
at oracle.j2ee.ws.server.WebServiceProcessor.invokeEndpointImplementation(WebServiceProcessor.java:1081)
at oracle.j2ee.ws.server.provider.ProviderProcessor.doRequestProcessing(ProviderProcessor.java:581)
at oracle.j2ee.ws.server.WebServiceProcessor.processRequest(WebServiceProcessor.java:232)
at oracle.j2ee.ws.server.WebServiceProcessor.doService(WebServiceProcessor.java:192)
at oracle.j2ee.ws.server.WebServiceServlet.doPost(WebServiceServlet.java:459)
at oracle.integration.platform.blocks.soap.FabricProviderServlet.doPost(FabricProviderServlet.java:507)
at javax.servlet.http.HttpServlet.service(HttpServlet.java:727)
at javax.servlet.http.HttpServlet.service(HttpServlet.java:820)
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.security.jps.ee.http.JpsAbsFilter$1.run(JpsAbsFilter.java:111)
at java.security.AccessController.doPrivileged(Native Method)
at oracle.security.jps.util.JpsSubject.doAsPrivileged(JpsSubject.java:31
at oracle.security.jps.ee.util.JpsPlatformUtil.runJaasMode(JpsPlatformUt
at oracle.security.jps.ee.http.JpsAbsFilter.runJaasMode(JpsAbsFilter.jav
at oracle.security.jps.ee.http.JpsAbsFilter.doFilter(JpsAbsFilter.java:1
at oracle.security.jps.ee.http.JpsFilter.doFilter(JpsFilter.java:71)
at weblogic.servlet.internal.FilterChainImpl.doFilter(FilterChainImpl.ja
at oracle.dms.servlet.DMSServletFilter.doFilter(DMSServletFilter.java:13
at weblogic.servlet.internal.FilterChainImpl.doFilter(FilterChainImpl.ja
at weblogic.servlet.internal.WebAppServletContext$ServletInvocationActio
at weblogic.servlet.internal.WebAppServletContext$ServletInvocationActio
at weblogic.security.acl.internal.AuthenticatedSubject.doAs(Authenticate
at weblogic.security.service.SecurityManager.runAs(SecurityManager.java:
at weblogic.servlet.internal.WebAppServletContext.securedExecute(WebAppS
at weblogic.servlet.internal.WebAppServletContext.execute(WebAppServletC
at weblogic.servlet.internal.ServletRequestImpl.run(ServletRequestImpl.j
at weblogic.work.ExecuteThread.execute(ExecuteThread.java:209)
at weblogic.work.ExecuteThread.run(ExecuteThread.java:178)
>
Edited by: Ebrahim Badusha on Oct 21, 2011 12:42 PMAny solution for the above problem?
O. -
Calling Stored Function from TopLink
I have a simple Stored Function that I'm trying to call using TopLink API:
TopLink Version: 10.1.3.3.
Oracle JDBC Driver: ojdbc5.jar (Oracle JDBC Driver version - "11.1.0.6.0-Production+")
Stored Procedure:
Function Get_Email_Address_Id(P_EMAIL_ADDRESS IN varchar2) return number;
TopLink Code:
public String executeStoredFunction() {
TopLinkTemplate tlTemplate = getTopLinkTemplate();
StoredFunctionCall call = new StoredFunctionCall();
call.setProcedureName("EMAIL_ADDRESS_PKG.Get_Email_Address_Id");
call.setResult("FUNCTION_RESULT", String.class);
call.addNamedArgument("P_EMAIL_ADDRESS");
ValueReadQuery query = new ValueReadQuery();
query.setCall(call);
query.addArgument("P_EMAIL_ADDRESS");
Vector parameters = new Vector();
parameters.addElement("1009");
String result = (String)tlTemplate.executeQuery(query, parameters.toArray());
return result;
Error I'm getting:
Exception [TOPLINK-7121] (Oracle TopLink - 10g Release 3 (10.1.3.3.0) (Build 070428)): oracle.toplink.exceptions.ValidationException
Exception Description: DatabasePlatform does not support stored functions
at oracle.toplink.exceptions.ValidationException.platformDoesNotSupportStoredFunctions(ValidationException.java:1299)
at oracle.toplink.queryframework.StoredFunctionCall.prepareInternal(StoredFunctionCall.java:52)
at oracle.toplink.internal.databaseaccess.DatabaseCall.prepare(DatabaseCall.java:494)
at oracle.toplink.internal.queryframework.CallQueryMechanism.prepareCall(CallQueryMechanism.java:102)
at oracle.toplink.internal.queryframework.CallQueryMechanism.prepareExecuteSelect(CallQueryMechanism.java:203)
at oracle.toplink.queryframework.DataReadQuery.prepare(DataReadQuery.java:150)
at oracle.toplink.queryframework.DatabaseQuery.checkPrepare(DatabaseQuery.java:405)
at oracle.toplink.queryframework.DatabaseQuery.checkPrepare(DatabaseQuery.java:375)
at oracle.toplink.queryframework.DatabaseQuery.execute(DatabaseQuery.java:598)
at oracle.toplink.queryframework.DataReadQuery.execute(DataReadQuery.java:96)
at oracle.toplink.publicinterface.Session.internalExecuteQuery(Session.java:2089)
at oracle.toplink.publicinterface.Session.executeQuery(Session.java:993)
at oracle.toplink.publicinterface.Session.executeQuery(Session.java:965)
Observations:
Why is TopLink complaining about DatabasePlatform?
I'm using Oracle 10g as my database platform. Did anyone encounter this problem?
I have tried various combinations but it always have same complaint.
Thanks in advance for help.Hello,
It is complaining because the DatabasePlatform being used doesn't support functions. So the problem is that it is using the DatabasePlatform instead of the Oracle10Platform that you are expecting. How have you defined it? Could you have multiple sessions.xml files, and the one that is being picked not define the Oracle10Platform? Or could you be overriding the login somehow (prelogin event etc) and setting it to use the default DatabasePlatform by accident?
Best Regards,
Chris -
Why returning string from java stored function failed ? HELP ME, PLEASE
Hi everybody,
I created java stored function: it's doing http post, parsing xml from http reply, and returning string result.
Sometimes, it doesn't return any value. What can be a reason ?
The high level procedure, has following form:
class SBE {
public static String call(String arg0) {
SBE sbe=new SBE("d:\\oracle\\ora81\\network\\log\\SBE.log");
String result=SBEParser.go(sbe.sendRequest(arg0, ""), sbe.logger);
sbe.logger.log(result);
sbe.logger.log("Finish SBE intetraction");
return result;
PLSQL wrapper has a simple form:
create or replace package PG_SBE as
function CALL(arg0 in varchar2) return varchar2;
end;
create or replace package body PG_SBE as
function CALL(arg0 varchar2) return varchar2 as language java name 'SBE.call(java.lang.String) return java.lang.String';
end;
In log file ("d:\\oracle\\ora81\\network\\log\\SBE.log"), I can find message :
"Finish SBE intetraction"
but query:
select pg_sbe.call("any argument") from dual;
doesn't finish.
What can be a reason ? What can I do to trace stage of convertion java string to varchar ?
Please help me...
Best regards
Marek<BLOCKQUOTE><font size="1" face="Verdana, Arial">quote:</font><HR>Originally posted by Stefan Fdgersten ([email protected]):
Maybe your call is wrong... Shouldn't there be a "?" instead of "1"?
Your code:
String myquery = "begin :1 := jspTest; end;";
I provide my (working) call from java as an example. Maybe it is of any help... :)
import java.sql.*;
import oracle.jdbc.driver.*;
public Vector getAllHosts() throws SQLException {
//return getHosts(false, -1);
Connection conn = null;
CallableStatement cs = null;
Vector hostV = new Vector();
try {
conn = getConnection();
String query = "{ ? = call curTestPkg.curTestFunc}";
cs = conn.prepareCall(query);
cs.registerOutParameter(1, OracleTypes.CURSOR);
cs.execute();
ResultSet rs = ((OracleCallableStatement)cs).getCursor(1);
while (rs.next()) {
Host host = new Host(
rs.getInt("hostid")
, rs.getString("name")
, rs.getString("descr")
, rs.getString("os"));
hostV.add(host);
cs.close();
return hostV;
} finally {
close(conn, cs);
<HR></BLOCKQUOTE>
hi Stefan thanx.....even after changing the call statement i get the same error. i changed query string as...
String myquery = "{ ? = call jspTest}";
CallableStatement cst = con.prepareCall(myquery);
Can u please check out my call sepc that i have written in pl/sql and plz let me know it there is any error in that.
PS : THIS IS THE FIRST TIME I AM WORKING WITH PL/SQL AND IT IS URGENT -
Why returning string from java stored function failed ?
I created java stored function: it's doing http post, parsing xml from http reply, and returning string result.
Sometimes, it doesn't return any value. What can be a reason ?
The high level procedure, has following form:
class SBE {
public static String call(String arg0) {
SBE sbe=new SBE("d:\\oracle\\ora81\\network\\log\\SBE.log");
String result=SBEParser.go(sbe.sendRequest(arg0, ""), sbe.logger);
sbe.logger.log(result);
sbe.logger.log("Finish SBE intetraction");
return result;
PLSQL wrapper has a simple form:
create or replace package PG_SBE as
function CALL(arg0 in varchar2) return varchar2;
end;
create or replace package body PG_SBE as
function CALL(arg0 varchar2) return varchar2 as language java name 'SBE.call(java.lang.String) return java.lang.String';
end;
In log file ("d:\\oracle\\ora81\\network\\log\\SBE.log"), I can find message :
"Finish SBE intetraction"
but query:
select pg_sbe.call("any argument") from dual;
doesn't finish.
What can be a reason ? What can I do to trace stage of convertion java string to varchar ?
Please help me...
MarekThis comes up periodically. It just isn't possible using that type of approach. Probably the best you could do is the create an ADT (containing collections) and use that to pass a 'batch' of information.
Hopefully this will get addressed in the next release of the database. -
DML Operations in Stored Function
Hi,
I have used Update Statement in a function. Which is giving an errror (ORA-14551: cannot perform a DML operation inside a query).
Can I use DML operations in a stored function ?
(I need help on locking master/transaction tables, i.e if a one user locks a master another user should not get modify access to the master/transactions).
Thanks
Ramesh GanjiSomeone who obviously din't read my previous post in this thread. You should pay attention, programming is all about the details.
ORA-14551: cannot perform a DML operation inside a query).Then it obviously does more than just "returns a Table Type object". Why are you doing DML in a function?
PLS-00653: aggregate/table functions are not allowed in PL/SQL scopeWe can only call pipelined functions from SQL queries. So you'll have to ditch the DML or make it an autonomous transaction. Be very careful if you adopt the latter approach.
Cheers, APC -
Recursing through table / complex return types in Java Stored Functions
I have a table representing a tree with arbitrary depth, of the form:
ID NUMBER(10) PRIMARY KEY,
NAME VARCHAR2(20),
PARENT NUMBER(10)
with PARENT being a foreign key for ID, so that top-level nodes in the tree have a NULL PARENT, and other nodes have the ID of their parent node in the PARENT field.
I want a good way to get a row representing a node as well as all its ancestor nodes recursively up to the top level. I do this a lot in my Java application, and right now it works by just getting each row, checking if PARENT is null, and recursing again until I get the top-level node. Since this recursion is in Java and I do multiple queries it's rather slow, and I'd rather perform this operation in the database (using a Java Stored Function/Procedure or PL/SQL).
I'm no good at PL/SQL so don't have a clue how to go about doing this sort of thing, and although I can write a Java Stored Function that does the same recursion I do in the application, I don't know how to return the results. I can't return a REF CURSOR type since the results are from multiple queries, and I can't find any documentation about how to return structured types from a JSF.
If anyone could give me a near-complete PL/SQL listing that does this or (better) help me to complete my Java Stored Function by returning the results in a structured type.You are my own personal God (for the day). Thanks, exactly what I needed, and all in one query with no procedural.
-
Calling stored function that contains commit from .JCX
I would like to call a stored function (Oracle) that contains a commit, from
a WebLogic database control (.JCX). The suggested way to call a stored
function is to do something like:
* @jc:sql statement::
* SELECT MY_FUNCTION({projectID}, {staffID}) FROM DUAL
int callMyFunction(int projectID, int staffID) throws SQLException;
This doesn't work if the function contains a commit - I get: ORA-14552:
cannot perform a DDL, commit or rollback inside a query or DML. I don't
want to just get my own connection to the db in my code and call it directly
because then I won't be using the connection pool provided by WebLogic. Is
there a recommended way to do this? So far, the database control has taken
care of getting connections from the pool. Can I get a connection from the
pool explicitely and use it? How do I "return" it to the pool?
Thanks.
SteveSteve Kincer wrote:
Thanks for the response.
So far, I've only used the database control, so I haven't been doing any
transaction management (rollbacks/commits) myself - I've just called methods
in my database control and not worried it. Come to think of it, all my
other calls are just SELECTs, so it hasn't been an issue, but I've assumed
WebLogic or the connection pool would take care of transaction management
for me if I coded an UPDATE function in the database control.
What do you mean by "find and use the control API provided for
defining/demarking
transactions" ... what control?
I've seen stuff in the help file about transaction management, so I can
research that, but where do I get the connection to use for this? I'm
thinking I should get it from the pool (rather than create my own
connection). I saw a generated method in my database control called
getConnection, but when I tried using it with a CallableStatement I got
error:
"The transaction is no longer active - status: 'Committed'. No further JDBC
access is allowed within this transaction."This means that you are automatically being taken care of transactionally,
and don't need to do any commit() calls.
Joe
>
I guess it's pretty obvious that I'm pretty new to WebLogic.
Thanks for your help.
Steve
"Joe Weinstein" <[email protected]> wrote in message
news:[email protected]...
Steve Kincer wrote:
I would like to call a stored function (Oracle) that contains a commit,
from a WebLogic database control (.JCX). The suggested way to call a
stored function is to do something like:
* @jc:sql statement::
* SELECT MY_FUNCTION({projectID}, {staffID}) FROM DUAL
int callMyFunction(int projectID, int staffID) throws SQLException;
This doesn't work if the function contains a commit - I get: ORA-14552:
cannot perform a DDL, commit or rollback inside a query or DML.Right. It is bad style to hide a commit in a procedure. The begin-tx
and commit should be at the same level, above any specific SQL for the
tx. How did you start a transaction? Are you sure you have an ongoing
transaction?
I don't
want to just get my own connection to the db in my code and call it
directly because then I won't be using the connection pool provided by
WebLogic. Is there a recommended way to do this? So far, the database
control has taken care of getting connections from the pool. Can I get a
connection from the pool explicitely and use it? How do I "return" it to
the pool?You should find and use the control API provided for defining/demarking
transactions.
Joe
Thanks.
Steve -
Hi to all... What is a XML data provider,stored Procedure, personal data providers in deski. when we use these data provider in desk top intelligence.. and use of it.
Please give detail description of the above...
Thanks for reply..........Hi,
We can create Desktop Intelligence reports using XML Data Provider, Personal Data Files and Stored Procedure.
Following is some detailed information about these three.
Xml data provider:
Xml data provider is used for the integration of external data sources stored in XML format.
This is similar to HTML.
Stored Procedure:
A stored procedure is a set of SQL commands that has been compiled and stored on the database server.
Once the stored procedure has been "stored", client applications can execute the stored procedure over and over again without sending it to the database server again and without compiling it again.
Stored procedures improve performance by reducing network traffic and CPU load.
Personal data files:
u2022 *.prn files
A PRN file is a special type of file which contains instructions for a printer, it tells the printer what to print on the page and where as well as which paper tray to use, what the paper size is and a number of other controls.
u2022 *.asc files
Between the values of a row any number of carriage returns or blanks are allowed. In any case it is strongly recommended that the data table be stored in such a way that it can be read and edited easily.
The values may be stored in any format (integer, floating point, exponential notation) and they must be separated at least by one blank. The class information must be of integer type, the row identifiers are interpreted as strings. The lines can have any length and must not contain any comment.
u2022 *.csv files
A CSV file is a specially formatted plain text file which stores spreadsheet or basic database-style information in a very simple format, with one record on each line, and each field within that record separated by a comma.
Regards,
Pradnya Kokil -
I've been trying out this feature as it was shown in adfdeveloperguide. that is, on page 3-26/27
StoredFunctionCall functionCall = new StoredFunctionCall();
functionCall.setProcedureName("READ_EMPLOYEE");
functionCall.addNamedArgument("EMP_ID");
functionCall.setResult("FUNCTION_RESULT", String);
ReadObjectQuery query = new ReadObjectQuery();
query.setCall(functionCall);
query.addArgument("EMP_ID");
Vector args = new Vector();
args.addElement(new Integer(44));
Employee employee = (Employee) session.executeQuery(query, args);
in my version it is:
StoredFunctionCall fCall = new StoredFunctionCall();
fCall.setProcedureName("f_milos");
fCall.addNamedArgument("x");
fCall.setResult("FUNCTION_RESULT", String.class);
ReadObjectQuery query = new ReadObjectQuery();
query.setCall(fCall);
query.addArgument("x");
Vector args = new Vector();
args.addElement(new Integer(2));
String result = (String) session.executeQuery(query,args);
where f_milos is my stored function. as for the session, I got it in this way
Session session=new SessionFactory("META-INF/sessions.xml", "default").acquireSession();
like it was done in my session bean.
dunno, maybe thats the source of the problem.
now, when I come to executeQuery, following error pops:
javax.faces.el.EvaluationException: Exception [TOPLINK-6029] (Oracle TopLink - 10g Release 3 (10.1.3.0.0) (Build 060118)): oracle.toplink.exceptions.QueryException
Exception Description: A reference class must be provided.
Query: ReadObjectQuery().
help?Well, previously you were calling getDBTransaction() on an explicit Application Module object, whereas now, you do:
st = getDBTransaction().createCallableStatement("begin ? := "stmt";end;",0);which means that your code must be inside of an application module in order to work. Do you see the difference?
I'll mention that you shouldn't generally be doing DB calls in your ViewController/UserInterface layer - DB code belongs in the model.
John -
Passing a Spry XML Dataset to a function
I am very much a noob at this. How would I pass my XML dataset to a function so that the function would check a "date" field in the XML file and color the corresponding date cell in a YUI calendar? I have looked through the YUI Forums, but couldn't find any good examples. I am making a calendar of events that uses a calendar to filter the events in my XML file. I want the calendar to highlight the dates that have an event scheduled, so the users get a visual pointer to when events are scheduled. Here is my code:
<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
<html xmlns="http://www.w3.org/1999/xhtml" xmlns:spry="http://ns.adobe.com/spry">
<head>
<meta http-equiv="Content-Type" content="text/html; charset=utf-8" />
<title>Untitled Document</title>
<script src="SpryAssets/xpath.js" type="text/javascript"></script>
<script src="SpryAssets/SpryData.js" type="text/javascript"></script>
<script src="SpryAssets/SpryDataExtensions.js" type="text/javascript"></script>
<script src="yui/2.6.0/build/yahoo-dom-event/yahoo-dom-event.js" type="text/javascript"></script>
<script src="yui/2.6.0/build/calendar/calendar-min.js" type="text/javascript"></script>
<script src="SpryAssets/SpryDOMUtils.js" language="javascript" type="text/javascript"></script>
<script type="text/javascript">
<!--
var dsMDEvents = new Spry.Data.XMLDataSet("schedule.xml", "events/event", {sortOnLoad: "date", sortOrderOnLoad: "ascending"});
var dsEvents = new Spry.Data.XMLDataSet("schedule.xml", "events/event", {sortOnLoad: "date", sortOrderOnLoad: "ascending"} );
dsEvents.setColumnType("date", "date");
dsEvents.setColumnType("@id", "number");var thisDate = new Date();
var todaysDate = mydateFormat(thisDate);
function pad(v)
return (v<10?"0"+v:v);
function mydateFormat(inDate)
var myData = inDate;
var gToday = new Date(myData);
var tToday = pad(gToday.getMonth()+1).toString() + "/" + pad(gToday.getDate()).toString() + "/" + gToday.getFullYear().toString();
return (tToday);
}//-->
</script>
<link href="yui/2.6.0/build/fonts/fonts-min.css" rel="stylesheet" type="text/css" />
<link href="yui/2.6.0/build/calendar/assets/skins/sam/calendar.css" rel="stylesheet" type="text/css" /><link href="SpryAssets/SpryMasterDetail.css" rel="stylesheet" type="text/css" />
</head><body>
<div id="Schedule">
<div id="calendarDiv"></div>
<script type="text/javascript">
// BeginWebWidget YUI_Calendar: yuicalendar1
YAHOO.namespace("calendar"); (function() {
var cn = document.body.className.toString();
if (cn.indexOf('yui-skin-sam') == -1) {
document.body.className += " yui-skin-sam";
YAHOO.calendar.init = function() {
YAHOO.calendar.cal1 = new YAHOO.widget.CalendarGroup("cal1", "CalendarDiv", {PAGES:3}); // The following event subscribers demonstrate how to handle
// YUI Calendar events, specifically when a date cell is
// selected and when it is unselected.
// See: http://developer.yahoo.com/yui/calendar/ for more
// information on the YUI Calendar's configurations and
// events.
// The YUI Calendar API cheatsheet can be found at:
// http://yuiblog.com/assets/pdf/cheatsheets/calendar.pdf
//--- begin event subscribers ---//
YAHOO.calendar.cal1.selectEvent.subscribe(selectHandler, YAHOO.calendar.cal1, true);
YAHOO.calendar.cal1.deselectEvent.subscribe(deselectHandler, YAHOO.calendar.cal1, true);
//--- end event subscribers ---//
function dateHighlightRenderer(workingDate, cell) {
var isHighlighted = false;
var date = workingDate.getMonth()+1 + "/" + workingDate.getDate() + "/" + workingDate.getFullYear();
/*if (rows["date"].search(date) != -1) {
isHighlighted = true;
if (date) {
isHighlighted = true;
if (isHighlighted) {
YAHOO.util.Dom.addClass(cell, this.Style.CSS_CELL_HIGHLIGHT4);
//YAHOO.calendar.cal1.addRenderer("11/14/2009, 11/1/2009, 11/29/2009, 11/30/2009", YAHOO.calendar.cal1.renderCellStyleHighlight1);
for (var i = 1; i <= 7; i++) {
// Attach to the Weekday, instead of individual dates/ranges, to improve performance.
YAHOO.calendar.cal1.addWeekdayRenderer(i, dateHighlightRenderer);
YAHOO.calendar.cal1.render();
var todayFilterFunc = function(dsMDEvents, row, rowNumber)
if (row["date"] >= todaysDate)
return row; // Return the row to keep it in the data set.
return null; // Return null to remove the row from the data set.
dsMDEvents.filter(todayFilterFunc);
} function selectHandler(event, data) {
// The JavaScript function subscribed to yuicalendar1. It is called when
// a date cell is selected.
// alert(event) will show an event type of "Select".
// alert(data) will show the selected date as [year, month, date].
var formattedDate = pad(data[0][0][1]) + "/" + pad(data[0][0][2]) + "/" + data[0][0][0];
var dateFilterFunc = function(dsMDEvents, row, rowNumber)
if (row["date"].search(formattedDate) != -1)
return row; // Return the row to keep it in the data set.
return null; // Return null to remove the row from the data set.
dsMDEvents.filter(dateFilterFunc); // Filter the rows in the data set.
}; function deselectHandler(event, data) {
// The JavaScript function subscribed to yuicalendar1. It is called when
// a selected date cell is unselected.
}; // Create the YUI Calendar when the HTML document is usable.
YAHOO.util.Event.onDOMReady(YAHOO.calendar.init);
// EndWebWidget YUI_Calendar: yuicalendar1
</script>
<div class="MasterDetail">
<div spry:region="dsMDEvents" class="MasterContainer">
<div class="MasterColumn" spry:repeat="dsMDEvents" spry:setrow="dsMDEvents" spry:hover="MasterColumnHover" spry:select="MasterColumnSelected">{date}<br />
{name}<br />
{starttime} - {endtime}</div>
</div>
<div spry:detailregion="dsMDEvents" class="DetailContainer">
<h2 class="DetailColumn">{name}</h2>
<p class="DetailColumn"><strong>Date:</strong> {date}<br />
<strong>Time:</strong> {starttime} - {endtime}</p>
<p class="DetailColumn"><strong>Where:</strong> {location}<br />
<strong>Type:</strong> {type}</p>
<p class="DetailColumn"><strong>Contact:</strong> {contact}</p>
</div>
<br style="clear:both" />
</div>
</div>
</body>
</html>
and here is a snipet of my xml file:
<?xml version="1.0" encoding="utf-8"?>
<events>
<event id="1">
<name>Dreamweaver CS4 Intermediate</name>
<date>10/15/2009</date>
<starttime>8:00 am</starttime>
<endtime>5:00 pm</endtime>
<location>Room 1</location>
<type>Training</type>
<contact>Contact 1</contact>
</event>
<event id="2">
<name>InDesign CS4 Advanced</name>
<date>11/14/2009</date>
<starttime>8:00 am</starttime>
<endtime>5:00 pm</endtime>
<location>Room 2</location>
<type>Training</type>
<contact>Contact 1</contact>
</event>
<event id="3">
<name>Flex CS4 Data Services</name>
<date>10/15/2009</date>
<starttime>1:00 pm</starttime>
<endtime>5:00 pm</endtime>
<location>Room 2</location>
<type>Meeting</type>
<contact>Contact 2</contact>
</event>
<event id="4">
<name>Another Dreamweaver CS4 Intermediate</name>
<date>11/30/2009</date>
<starttime>8:00 am</starttime>
<endtime>5:00 pm</endtime>
<location>Room 1</location>
<type>Training</type>
<contact>Contact 1</contact>
</event>
<event id="5">
<name>Another InDesign CS4 Advanced</name>
<date>11/29/2009</date>
<starttime>8:00 am</starttime>
<endtime>5:00 pm</endtime>
<location>Room 2</location>
<type>Training</type>
<contact>Contact 3</contact>
</event>
<event id="6">
<name>Another Flex CS4 Data Services</name>
<date>11/01/2009</date>
<starttime>1:00 pm</starttime>
<endtime>5:00 pm</endtime>
<location>Room 2</location>
<type>Meeting</type>
<contact>Contact 2</contact>
</event>
<event id="7">
<name>More Training</name>
<date>11/02/2009</date>
<starttime>8:00 am</starttime>
<endtime>10:00 am</endtime>
<location>Room 3</location>
<type>Training</type>
<contact>Contact 4</contact>
</event>
<event id="8">
<name>Another Training</name>
<date>10/25/2009</date>
<starttime>9:00 am</starttime>
<endtime>11:00 am</endtime>
<location>Room 3</location>
<type>Training</type>
<contact>Contact 4</contact>
</event>
<event id="9">
<name>Some More Training</name>
<date>12/02/2009</date>
<starttime>1:00 pm</starttime>
<endtime>3:00 pm</endtime>
<location>Room 3</location>
<type>Training</type>
<contact>Contact 4</contact>
</event>
</events>
The function "dateHighlightRenderer" is where I am running into the problem. How do I code this so that "dateHighlightRenderer" can read the "date" field in my XML file?I have tried the getData() function for this. However, I am not sure if I am using it right:
var d = dsMDEvents.getData();
for (var i = 0; i < d.length(); i++) {
var day = d[i]["date"];
YAHOO.calendar.cal1.addRenderer(day, dateHighlightRenderer);
When I run this for loop, my calendar will not appear on the page. Any suggestions? -
Error in xml to html transform function in 11g(Help needed urgent)
We are migrating from 9g to 11g.Code given below is working fine with 9g but giving following error while converting xml to html.
Error:Exception occurred in XML_TO_HTML :ORA-31011: XML parsing failed
ORA-19202: Error occurred in XML processing
LPX-00609: Function call with invalid number of arguments in 'position (//USER)'.
Code :<?xml version='1.0'?>
<xsl:stylesheet xmlns:xsl="http://www.w3.org/1999/XSL/Transform" version="1.0">
<xsl:template match="/">
<HTML>
<BODY>
<!--begin header-->
<xsl:for-each select="AMAP_REMMIT_EMP/HEADERS/HEADER">
<TABLE border="0" cellpadding="0" cellspacing="0" style="padding:1px" width="100%" height="95" bgcolor="#EAEAEA"><font size="6" face="Arial">amdocs </font>
<TR >
<TD width="50%" align="left" ><b/><font size="2" face="Verdana" /> <xsl:value-of select="VENDOR_NAME"/></TD>
<TD width="50%" align="left"><b/><font size="2" face="Verdana" />Date: <xsl:value-of select="RUN_DATE"/>
</TD>
</TR>
<TR >
<TD width="50%" align="left" ><b/><font size="2" face="Verdana" /> <xsl:value-of select="ADDRESS"/></TD>
<TD width="50%" align="left"><b/><font size="2" face="Verdana" /> <xsl:value-of select="TAX_ID"/>
</TD>
</TR>
<TR >
<TD width="50%" align="left" ><b/><font size="2" face="Verdana" /> <xsl:value-of select="CITY"/> <xsl:value-of select="ZIP"/></TD>
<TD width="50%" align="left"><b/><font size="2" face="Verdana" />Vendor Number: <xsl:value-of select="OSEK_MURSHE"/>
</TD>
</TR>
<TR >
<TD width="50%" align="left" ><b/><font size="2" face="Verdana" /> </TD>
<TD width="50%" align="left"><b/><font size="2" face="Verdana" />Fax Number: <xsl:value-of select="FAX"/>
</TD>
</TR>
</TABLE>
</xsl:for-each>
<!--end header-->
<!--begin lines-->
<p dir="ltr" align="center">
<span style="font-family: Arial; text-decoration: underline; font-weight: 700">
Subject: Remittance Advice</span></p>
<table border="1" cellspacing="1" width="100%" bgcolor="#C0C0C0">
<tr>
<th width="20%"><font face="Arial"><b>Invoice Date</b></font></th>
<th width="20%"><font face="Arial"><b>Invoice Number</b></font></th>
<th width="40%"><font face="Arial"><b>Description</b></font></th>
<th width="20%"><font face="Arial"><b><xsl:value-of select="AMAP_REMMIT_EMP/HEADERS/HEADER/CURRENCY"/> Amount</b></font></th>
</tr>
<xsl:for-each select="AMAP_REMMIT_EMP/MERGE_LINE/LINES/LINE">
<tr>
<td width="20%" >
<xsl:attribute name="bgcolor">
<xsl:if test="position() mod 2 = 0">#DDDDDD</xsl:if>
<xsl:if test="position() mod 2 = 1">#FFFFCC</xsl:if>
</xsl:attribute>
<xsl:value-of select="INVOICE_DATE"/></td>
<td width="20%" >
<xsl:attribute name="bgcolor">
<xsl:if test="position() mod 2 = 0">#DDDDDD</xsl:if>
<xsl:if test="position() mod 2 = 1">#FFFFCC</xsl:if>
</xsl:attribute>
<xsl:value-of select="INVOICE_NUM"/></td>
<td width="40%" >
<xsl:attribute name="bgcolor">
<xsl:if test="position() mod 2 = 0">#DDDDDD</xsl:if>
<xsl:if test="position() mod 2 = 1">#FFFFCC</xsl:if>
</xsl:attribute>
<xsl:value-of select="DESCRIPTION"/></td>
<td width="20%" >
<xsl:attribute name="bgcolor">
<xsl:if test="position() mod 2 = 0">#DDDDDD</xsl:if>
<xsl:if test="position() mod 2 = 1">#FFFFCC</xsl:if>
</xsl:attribute>
<xsl:value-of select="AMOUNT"/></td>
</tr>
</xsl:for-each>
<tr>
<td width="80%" bgcolor="#FFFFFF" colspan="3" align="right">
<b>Total Payment:</b></td>
<td width="20%" bgcolor="#FFFFFF"><xsl:value-of select="//TOTAL"/></td>
</tr>
</table>
<p dir="ltr" align="left"><span style="font-family: Arial"><font size="2">In accordance with your instructions, this amount will be transferred to your <xsl:if test="AMAP_REMMIT_EMP/MERGE_LINE/SITES/SITE/INCLUDE_BANK_DETAILES='Y'">
account number <xsl:value-of select="AMAP_REMMIT_EMP/MERGE_LINE/LINES/LINE/ACCOUNT"/> in bank
<xsl:value-of select="AMAP_REMMIT_EMP/MERGE_LINE/LINES/LINE/BANK"/> , branch <xsl:value-of select="AMAP_REMMIT_EMP/MERGE_LINE/LINES/LINE/BRANCH"/>
on the date of <xsl:value-of select="AMAP_REMMIT_EMP/MERGE_LINE/LINES/LINE/CHECK_DATE"/>.
</xsl:if>
<xsl:if test="AMAP_REMMIT_EMP/MERGE_LINE/SITES/SITE/INCLUDE_BANK_DETAILES!='Y'">
account on the date of <xsl:value-of select="AMAP_REMMIT_EMP/MERGE_LINE/LINES/LINE/CHECK_DATE"/>.
</xsl:if>
<xsl:if test="AMAP_REMMIT_EMP/MERGE_LINE/CREDITNOTES/CREDITNOTE/CREDITNOTE>'0'">
<p>The payment will be credited in two days from the payment date in your account.</p>
</xsl:if>
<p>In case this date is not a valid value date in the bank system, the money will be transferred in the next valid value date.</p>
<xsl:value-of select="AMAP_REMMIT_EMP/MERGE_LINE/NOTES/NOTE/DESCRIPTION"/>
</font></span></p>
<TABLE border="0" cellpadding="0" cellspacing="0" style="border-collapse: collapse" width="100%" height="50">
<TR >
<TD width="60%" ></TD>
<TD width="40%" align="left"><b/><font size="2" face="Verdana" />Yours sincerely,</TD>
</TR>
<TR >
<TD width="60%" ></TD>
<TD width="40%" align="left"><b/><font size="2" face="Verdana" /> <xsl:value-of select="AMAP_REMMIT_EMP/MERGE_LINE/LINES/LINE/COMPANY_NAME"/></TD>
</TR>
<!--end lines-->
<!--end trailer-->
</TABLE>
<table cellpadding="0" cellspacing="0" style="border-collapse: collapse; border-left-width: 1; border-right-width: 1; border-top-style: solid; border-top-width: 1; border-bottom-width: 1; padding: 0" bordercolor="#111111" width="100%">
<tr>
<td width="34%">Alert No:<xsl:value-of select="AMAP_REMMIT_EMP/HEADERS/HEADER/ALERT_ID"/></td>
<td width="33%">Environment: <xsl:value-of select="AMAP_REMMIT_EMP/HEADERS/HEADER/DB_NAME"/></td>
<td width="33%">Date:<xsl:value-of select="AMAP_REMMIT_EMP/HEADERS/HEADER/MAIL_DATE"/></td>
</tr>
</table>
<!--end trailer-->
</BODY>
</HTML>
</xsl:template>
</xsl:stylesheet>
Thanks in advance.#1. We need to see the code that is being used to invoke the stylesheet.
#2. We need to see the document that is being transformed...
It's most likely a bug in 9g which has been fixed in 11g... -
Problem with return value of stored function
Hi,
I've made a stored function that insert a new row in a table and return the primary key (see at the end of the message the function script).
In VS 2005 with Visual basic, using the designer, I've created a dataset containing a tableAdapter to be able to use the Pl/SQL function.
My problem is I can't get the proper return value. The VB code below works without error except that I get 0 as value.
What's wrong?
Cheers,
Sebastien
VB code
Dim myAddSession As New ICISDataSetTableAdapters.AddSessionTableAdapter
Dim intSessionId As Integer
intSessionId = myAddSession.ADD_SESSION(tbxUsername.Text, _
tempFolder.Substring(tempFolder.LastIndexOf("\") + 1), _
"toto", Environment.GetEnvironmentVariable("COMPUTERNAME"), _
myLevelAccess.icisUserId, myLevelAccess.levelId)
The debugger tells me that the ADD_SESSION function return value is Object.
add_session PL/SQL script:
CREATE OR REPLACE FUNCTION ICISSEC.add_session (
orausername IN icis_session.ora_user_name%TYPE,
ctxsessionid IN icis_session.ctx_session_id%TYPE,
ctxsessionname IN icis_session.ctx_session_name%TYPE,
ctxservername IN icis_session.ctx_server_name%TYPE,
icisuserid IN icis_session.icis_user_id%TYPE,
startlevelid IN icis_session.start_lvl_id%TYPE
RETURN icis_session.ICIS_SESSION_ID%TYPE
IS
tmpvar icis_session.ICIS_SESSION_ID%TYPE;
BEGIN
INSERT INTO icis_session
(ora_user_name, ctx_session_id, ctx_server_name,
icis_user_id, start_lvl_id, ctx_session_name
VALUES (orausername, ctxsessionid, ctxservername,
icisuserid, startlevelid, ctxsessionname
RETURNING icis_session_id
INTO tmpvar;
COMMIT;
RETURN tmpvar;
EXCEPTION
WHEN OTHERS
THEN
RAISE;
END add_session;naama wrote:
that if a value is null to convert it to 0 ? . i mean in the part of the declaration of parameter
Nope, can't do that in the signature. You'll need to handle that by validating the passed parameters at the start of the function.
It's simple enough. In your case you might just as well test for NULL and fail the function like this:
FUNCTION date_post_message(
user_lock_in IN NUMBER,
form_type_in IN NUMBER DEFAULT 0 ,
date_in IN DATE)
RETURN BOOLEAN
IS
v_num NUMBER(1);
BEGIN
dbms_output.put_line('Value of parameters : user_lock_in : '||user_lock_in || ' : form_type_in : '||form_type_in||' : date_in : '||date_in );
IF user_lock_in = 1 THEN
RETURN FALSE;
END IF;
IF form_type_in IS NULL THEN
RETURN FALSE;
ELSIF form_type_in NOT IN (1,2) THEN
RETURN FALSE;
END IF;
RETURN TRUE;
EXCEPTION
WHEN NO_DATA_FOUND THEN
RETURN FALSE;
END;In other use cases I would declare a local variable and process it like this:
IF form_type_in IS NULL THEN
l_form_type := 0;
ELSE
l_form_type := form_type_in;
END IF;Obviously the code should use the local variable rather than the parameter.
Validating the values passed in parameters at the start of a function is good practice. If you really want to go to town, read about Design By Contract.
Cheers, APC
Edited by: APC on Nov 9, 2011 1:36 PM
Added example, as requested by OP -
Using Stored Function with a datagridview
Hi All,
I have a problem using a stored function in a datagridview control. My problem is, when the user adds a new row to the grid, the stored function is called to insert the next item number in a grid column. For some reason I cannot figure out why this isn’t just working. The stored function is working alright, as I can call it from SQL Plus or PL/SQL and get the return value back but my problem is inserting it into the grid as the user creates a new row. Can some please help.
Function NextItemNum RETURN NUMBER
IS
varItemNum NUMBER(8);
Begin
SELECT MAX(ITEM_NUM) + 1
INTO varItemNum
FROM ORDERITEMS;
IF varItemNum IS NULL THEN
varItemNum = 1
END IF;
RETURN varItemNum;
END NextItemNum;
/* Code to insert into datagridview */
ig = myOrdersInsertCommand.Parameters.Add(New OracleParameter("pVal", Client.OracleDbType.Int32, 8, ParameterDirection.ReturnValue))
myOrdersInsertCommand.ExecuteNonQuery()
ItemNum = (myOrdersInsertCommand.Parameters("pVal").Value.ToString())
For Each r As DataGridViewRow In OrderItemsDataGridView.Rows
ORDER_ITEMSTableAdapter.InsertOrderItems(r.Cells(0).Value, r.Cells(1).Value, r.Cells(2).Value, r.Cells(3).Value, r.Cells(4).Value, r.Cells(5).Value, r.Cells(6).Value)
NextFirstly, thank you for the help. I have attempted to code the advice you gave but it still does not seem to compile properly. Can you suggest what is wrong with my code please?
Here is the code I am trying to configure:
forceDriver.h
static int32 CVICALLBACK static_callback(TaskHandle taskHandle, int32 everyNsamplesEventType, uInt32 nSamples, void* callbackData);
int32 EveryNCallback(TaskHandle taskHandle, int32 everyNsamplesEventType, uInt32 nSamples);
int32 DoneCallback(TaskHandle taskHandle, int32 status, void *callbackData);
forceDriver.cpp
DAQmxErrChk (DAQmxRegisterEveryNSamplesEvent(taskHandle,DAQmx_Val_Acquired_Into_Buffer,2500,0,&forceDriver::static_callback,panel));
**START TASK**
int32 forceDriver::EveryNCallback(TaskHandle taskHandle, int32 everyNsamplesEventType, uInt32 nSamples)
panel->(member_function);
int32 CVICALLBACK forceDriver::static_callback(TaskHandle taskHandle, int32 everyNsamplesEventType, uInt32 nSamples, void* callbackData)
forceDriver* static_object = static_cast<forceDriver*>(callbackData);
return static_object->EveryNCallback(taskHandle, everyNsamplesEventType, nSamples);
where panel is the object I have created. -
SQL LOADER: how to load CLOB column using stored function
Hi,
I am a newbie of sql loader. Everything seems to be fine until I hit a
road block - the CLOB column type. I want to load data into the clob
column using a stored function. I need to do some manipulation on the
data before it gets saved to that column. But I got this error when I
run the sql loader.
SQL*Loader-309: No SQL string allowed as part of "DATA" field
specification
DATA is my CLOB type column.
here is the content of the control file:
LOAD DATA
INFILE 'test.csv'
BADFILE 'test.bad'
DISCARDFILE 'test.dsc'
REPLACE
INTO TABLE test_table
FIELDS TERMINATED BY ','
OPTIONALLY ENCLOSED BY '"'
TRAILING NULLCOLS
codeid BOUNDFILLER,
reason BOUNDFILLER,
Checkstamp "to_date(:CHECKSTAMP, 'mm/dd/yyyy')",
"DATA" "GetContent(:codeid, :reason)"
All references are suggesting to use a file to load data on
CLOB column but I want to use a function in which it generates
the content to be saved into the column.
Any help is greatly appreciated.
Thanks,
Baldwin
MISICompany*** Duplicate Post ... Please Ignore ***
Maybe you are looking for
-
how do i drag and drop files from one external drive to another, i cannt get both drives to open up. only one at a time.. i have alot to learn i know but that is where i am at the time...
-
I have a new email address with which I can sign into iCloud, but once there it says to enter password for my old email address and I forgotten it. What next?
-
Hi all, i am getting the error at while releasing the request from buffer. its getting stucked at SID:transfering queue SID in system tp log WARNING: /usr/sap/trans/tmp/ALOG1210.PM1.LOC is already in use (19580), I'm waiting 2 sec (20120307091833). M
-
Hi All, there is 1 requirement in which the user wants that whatever 'text' she is filling in one of the 'text box ' in SAP R/3 side ,that has to be incorporated in BW reports . But that field is simple text and is not connected to any BW infoobject
-
Why can I not open files saved on a server?
Why can I not open files saved on a server?