Parameter to XQuery

Hi,
I have a XQuery cursor in a trigger and would like to pass a parameter to the XQuery's where statement. How can this be done?
TIA,
kp
Example of code:
CURSOR C1
IS
select COL1
from TABLE1 B, t, xmltable('
for $r in $doc/Data/Section
where $r/RefNo=p_PARAMETER_VALUE
return
(<.etc..
p_PARAMETER_VALUE is in this case string.

You will have to use the "passing" clause and also wrap the procedure argument in a dummy element that you than should remove in the XQuery. The reason is that Oracle does not currently (I am still testing 10g2) seem to allow passing in atomic values using the passing clause. If one does not wrap the parameter in an element, the following unhelpful message is returned
ERROR at line 4:
ORA-00932: inconsistent datatypes: expected - got -
Anyway, something along the lines of what is below
create PROCEDURE test(
  table_id_in IN INTEGER,
  o_result_set_cur_out OUT sys_refcursor)
AS
  BEGIN
    OPEN o_result_set_cur_out FOR
      SELECT XMLQuery('
          for $i in ora:view("TABLE")
          where $i/ROW/TABLE_ID = xs:integer(string($param))
          return $i'
        passing xmlelement(dummy,table_id_in) as param RETURNING CONTENT) AS Query
FROM DUAL;
END; I also had to add xs:integer(string(...)) which normally should not be needed.
Anywary, perhaps it helps,
Peter

Similar Messages

  • How to compare date values in XQuery

    begin
    select sysdate into x_date from dual;
    select xmlquery( '<A>
    { [b]for $a in ora:view("TableA")
    let $id = $a/ROW/ID/text()
    where $a/ROW/TRANS_DATE >= x_date
    return ..
    </A>' returning content}
    into temp from dual;
    end;
    This gives me invalid variable name. I hard code the date and it works fine. I tried xs:date also. Please help.

    You could use the XQuery function fn:current-dateTime iso trying to use a parameter.
    If you want to use an parameter with XQuery, they need to be nodes (not just atomic values) and have to passed using the passing clause.
    See the oracle doc for details and examples.
    Hth,
    Peter

  • Does OSB support XQuery import module feature ?

    In OSB version 11.1 and Oracle Weblogic Server Version: 10.3.6.0
    I need to create library of XQuery functions (reusable components), to achieve this, I need to use XQuery import module feature.
    When I tried to use it, I got this error message ‘Module feature not supported (sorry)’ …
    Does OSB support XQuery import module feature ?

    You may like to refer Eric's blogpost -
    http://www.xenta.nl/blog/2011/10/19/oracle-service-bus-the-number-of-parameters-for-registered-xquery-resource-system1_to_fault-does-not-match-that-given-to-it-at-runtime/
    Basically, if you are not using a parameter in XQuery then it will not be registered.
    Regards,
    Anuj

  • Using Data Provider

    Hi,
    I am using Data Provider.
    Below are the pararmeters I am passing to it,
    oms:dataSource <parameter>mslv/oms/oms1/internal/jdbc/DataSource</parameter> DefaultValue=Xquery
    oms:sql <parameter>select name from employee where job=?</parameter> DefaultValue=Xquery
    in:1
    Now I want to pass a dynamic value for the where clause in the Sql.
    My Order Data is,
    <OrderData>
    <Employee>
    <Name></Name>
    <Job>Engineer</Job>
    </Employee>
    </OrderData>
    Now I want to pass the "Engineer" value to the where clause. How can I define a Xpath or Xquery for the in:1 parameter?
    Please help.

    You can find documentation for the DatabaseAdapter "Data Provider" class (also known as a View Framework Adapter) in the OSM SDK Javadocs. The Javadocs for the class provide information and an example to let you do what you are trying to do. I've copy/pasted them here for your reference:
    This class implements a View Framework external instance adapter that executes a SQL statement and builds an XML document based on the result set.
    There are two mandatory parameters for this class, oms:sql and oms:dataSource.
    oms:dataSource: Refers to the jndi name of a JDBC datasource defined in WebLogic. For example 'mslv/oms/oms1/internal/jdbc/DataSource'
    oms:sql: Contains the sql that will be sent to the database. For example 'select * from scott.emp where empno=?'
    Additional optional input parameters may be supplied that will be bound to parameters defined in the oms:sql value. For example, in the above sql statement a parameter is used to define the value for 'empno' in the where clause. A value for this parameter may be specified by defining a paremter called "in:1". If there were additional input parameters defined in the sql statement, these could be passed as "in:2", "in:3" and so on.
    In all cases these input parameters will be assumed to be string values and bound to the sql statement as string values.
    The following is an example of using the DatabaseAdapter to invoke a query:
    <instance name="well_paid_salesman" xsi:type="externalInstanceType">
    <adapter>com.mslv.oms.view.rule.adapter.DatabaseAdapter</adapter> <parameter
    name="oms:dataSource">'mslv/oms/oms1/internal/jdbc/DataSource'</parameter> <parameter
    name="oms:sql">"select * from scott.emp where job='SALESMAN' and sal > ?"</parameter> <parameter
    name="in:1">1250</parameter> </instance>
    The above declaration returns the following XML instance:
    <results> <rowSet> <row> <empno>7499</empno> <ename>ALLEN</ename> <job>SALESMAN</job> <mgr>7698</mgr>
    <hiredate>1981-02-20 00:00:00.0</hiredate> <sal>1600</sal> <comm>300</comm> <deptno>30</deptno> </row> <row>
    <empno>7844</empno> <ename>TURNER</ename> <job>SALESMAN</job> <mgr>7698</mgr> <hiredate>1981-09-08
    00:00:00.0</hiredate> <sal>1500</sal> <comm>0</comm> <deptno>30</deptno> </row> </rowSet> </results>
    The DatabaseAdapter can also be used to execute SQL stored procedures.
    The DatabaseAdapter provides a stored procedure SQL escape syntax that allows stored procedures to be called in a standard way for all RDBMSs. This escape syntax is defined as part of the Java JDBC API.
    This escape syntax has one form that includes a result parameter and one that does not. If used, the result parameter must be registered as an OUT parameter. The other parameters can be used for input, output or both. Parameters are referred to sequentially, by number, with the first parameter being 1.
    {?= call [,, ...]}
    {call [,, ...]}
    Values for input parameters to the stored procedure are specified using the in:1, in:2 (etc.) parameters in the same way as they are for regular SQL queries.
    Output parameters are specified using out:1, out:2 (etc.). Keep in mind that the parameter number (1, 2, 3, etc.) are numbered sequentially from 1 ordered from left to right in the specified SQL statement including both input and output parameters.
    The value of the parameter is the parameter SQL type (see http://java.sun.com/j2se/1.4.2/docs/api/java/sql/Types.html for a list of types).
    The following example illustrates how to call a database stored procedure that has one output parameter (the result of the stored procedure call), and one input parameter.
    <instance name="lock_count" xsi:type="externalInstanceType">
    <adapter>com.mslv.oms.view.rule.adapter.DatabaseAdapter</adapter> <parameter
    name="oms:dataSource">'mslv/oms/oms1/internal/jdbc/DataSource'</parameter> <parameter
    name="oms:sql">"{? = call om_cartridge_pkg.get_any_cartridge_id('my_cartridge',?)}"</parameter> <parameter
    name="out:1">'INTEGER'</parameter> <parameter name="in:2">'1.1'</parameter> </instance>
    The above declaration returns the following XML instance:
    <results> <outputParameter number="1">1234</outputParameter> </results>
    Hope this helps.
    Brian.

  • 8.1 JWS XML Docs as parameters

    I'm trying to write a webservice that takes in an XML document as an argument, and returns an XML document.
    Does anyone have a simple hello world of this? Everything i've found involves taking strings and other basic java types as arguments.
    Using an 8.1 jws file

    Here is a sample on how you can map the XML parameter to the jws's method parameters.
    Please refer to the workshop docs for farther info.
    The XQuery and the Schema can be configured from the properties editor. You don't need to write them yourself.
    Best regareds,
    Tarek
    package webservices;
    * @common:xmlns namespace="wlai/FunctionDemo/CustomerMgmt_CreateCustomer_request" prefix="ns0"
    public class XMLParams implements com.bea.jws.WebService
    static final long serialVersionUID = 1L;
    * @common:operation
    * @jws:parameter-xml xquery::
    * declare namespace ns0 = "wlai/FunctionDemo/CustomerMgmt_CreateCustomer_request"
    * declare namespace ns1 = "http://www.openuri.org/"
    * let $Input := $input
    * return
    * <ns1:postXmlReq>
    * <ns1:FirstName>{ data($Input/FirstName) }</ns1:FirstName>
    * <ns1:LastName>{ data($Input/LastName) }</ns1:LastName>
    * <ns1:DOB>{ data($Input/DOB) }</ns1:DOB>
    * </ns1:postXmlReq>
    * schema-element="ns0:Input"
    public void postXmlReq(String FirstName, String LastName, String DOB)
    System.out.println(FirstName+" "+LastName+" "+DOB);
    }

  • Need to Divide Parameter groups using XQUERY

    Is there a way that we can divide a group in XQUERY depending upon the no. of times a particular attribute repeats ?
    I/P xml will be of format:
    <:Element>
         <SingleValue><Name>IPaddress</Name><Value>abc</Value></SingleValue>
         <SingleValue><Name>IPaddress</Name><Value>def</Value></SingleValue>
         <SingleValue><Name>IPMask</Name><Value>abc</Value></SingleValue>
         <SingleValue><Name>IPMask</Name><Value>def</Value></SingleValue>
    </:Element>
    o/p format has to be:
    <:Element>
         <:p_address1>abc</:p_address1>
         <:ip_mask1>abc</:ip_mask1>
         <:ip_address2>def</:ip_address2>
         <:ip_mask2>def</:ip_mask2>
    </:Element>

    <:Element>That's an invalid element name. Did you mean to add a namespace prefix at some point?
    Anyway, assuming an input document like :
    <Element>
      <SingleValue><Name>IPaddress</Name><Value>abc</Value></SingleValue>
      <SingleValue><Name>IPaddress</Name><Value>def</Value></SingleValue>
      <SingleValue><Name>IPMask</Name><Value>abc</Value></SingleValue>
      <SingleValue><Name>IPMask</Name><Value>def</Value></SingleValue>
    </Element>This should do it :
    <Element>
      for $IPaddr at $p in $inputXML/Element/SingleValue[Name="IPaddress"]/Value
      return (
        element {concat("ip_address", $p)} {$IPaddr/text()}
      , element {concat("ip_mask", $p)} {$inputXML/Element/SingleValue[Name="IPMask"][$p]/Value/text()}
    </Element>

  • How to use Foreach in Xquery

    This is my Biz service Output:
    <OutputParameters xmlns="http://=XYZ/pcbpel/adapter/db/WT/WT_IN_CS5_PKG/WT_IN_PROM_OSB/" xmlns:xsi="XYZ/XMLSchema-instance">
    <P_REC_TYPE>
    <P_REC_TYPE_ITEM>
    <ATTRIBUTE_NAME>
    Free MMS to newly activated subscribers Balance
    </ATTRIBUTE_NAME>
    <ATTRIBUTE_VALUE>5.000</ATTRIBUTE_VALUE>
    </P_REC_TYPE_ITEM>
    <P_REC_TYPE_ITEM>
    <ATTRIBUTE_NAME>
    Free MMS to newly activated subscribers Expiry Date
    </ATTRIBUTE_NAME>
    <ATTRIBUTE_VALUE>03-10-2012</ATTRIBUTE_VALUE>
    </P_REC_TYPE_ITEM>
    <P_REC_TYPE_ITEM>
    <ATTRIBUTE_NAME>Monetary bonus for all contracts Balance</ATTRIBUTE_NAME>
    <ATTRIBUTE_VALUE>1.118</ATTRIBUTE_VALUE>
    </P_REC_TYPE_ITEM>
    <P_REC_TYPE_ITEM>
    <ATTRIBUTE_NAME>
    Monetary bonus for all contracts Expiry Date
    </ATTRIBUTE_NAME>
    <ATTRIBUTE_VALUE>03-10-2012</ATTRIBUTE_VALUE>
    </P_REC_TYPE_ITEM>
    </P_REC_TYPE>
    <P_ERR_MSG xsi:nil="true"/>
    <P_ERR_STATUS xsi:nil="true"/>
    </OutputParameters>
    THis is my Current Xquery.Want to Iterate for P_REC_TYPE_ITEM above.
    How to write the Xquery Source,plz suggest
    (:: pragma bea:global-element-parameter parameter="$outputParameters1" element="ns1:OutputParameters" location="../../OraCRMServices_SB/XSD/WT_WT_IN_CS5_PKG_WT_IN_PROM_OSB.xsd" ::)
    (:: pragma bea:global-element-return element="ns0:PrepaidPromotionDtlsResponse" location="../XSD/ShowPrepaidPromotionDtlsResponse.xsd" ::)
    declare namespace ns1 = XYX/db/WT/WT_IN_CS5_PKG/WT_IN_PROM_OSB/";
    declare namespace ns0 = "http:///xml/ShowPrepaidPromotionDtlsResponse";
    declare namespace xf = "http:///ShowPrepaidDtls_SB/Transformations/InPromotionReadToSiebel/";
    declare function xf:InPromotionReadToSiebel($outputParameters1 as element(ns1:OutputParameters))
    as element(ns0:PrepaidPromotionDtlsResponse) {
    <ns0:PrepaidPromotionDtlsResponse>
    <ns0:ListOfPrepaidPromotions>
    <ns0:PrepaidPromotionDtls Name = "{ data($outputParameters1/ns1:P_REC_TYPE/ns1:P_REC_TYPE_ITEM[1]/ns1:ATTRIBUTE_NAME) }"
    Value = "{ data($outputParameters1/ns1:P_REC_TYPE/ns1:P_REC_TYPE_ITEM[1]/ns1:ATTRIBUTE_VALUE) }"/>
    for $P_ERR_MSG in $outputParameters1/ns1:P_ERR_MSG
    return
    <ns0:ErrorMessage>{ data($P_ERR_MSG) }</ns0:ErrorMessage>
    for $P_ERR_STATUS in $outputParameters1/ns1:P_ERR_STATUS
    return
    <ns0:ErrorCode>{ data($P_ERR_STATUS) }</ns0:ErrorCode>
    </ns0:ListOfPrepaidPromotions>
    </ns0:PrepaidPromotionDtlsResponse>
    declare variable $outputParameters1 as element(ns1:OutputParameters) external;
    xf:InPromotionReadToSiebel($outputParameters1)
    Regards
    Shona

    http://www.java2s.com/Code/XML/XQuery/Nestedforloop.htm
    http://www.w3schools.com/xquery/xquery_select.asp
    Thanks,
    Vijay

  • How to add all namespaces in root node of xquery transformation result?

    Hi,
    I'm using xquery Transformation in oracle service bus to transfrom output. The schema used for output transfromation has elements being imported from several schemas. so that output xml has these long tags with namespaces of repective schemas e.g.
    <rr:Get360ViewOfProductResponse      xmlns:rr="http://canaldigital.com/schema/product/CPMProductInformation/v2.0/">
    <ResponseHeader>
    <com:ResponseCode xmlns:com="http://broadcast.telenor.com/tsi/common/commonparameters_v1" >0</com:ResponseCode>
    <com:ResponseText xmlns:com="http://broadcast.telenor.com/tsi/common/commonparameters_v1" >0</com:ResponseText>
    </ResponseHeader>
    </rr:Get360ViewOfProductResponse>
    what I want to achieve is that all namespaces come once in the rootNode and all childnodes just use the repective prefixes, so that the xml size doesnt grow too large.Like below.
    <rr:Get360ViewOfProductResponse      xmlns:com="http://broadcast.telenor.com/tsi/common/commonparameters_v1" xmlns:rr="http://canaldigital.com/schema/product/CPMProductInformation/v2.0/" xmlns:pr="http://broadcast.telenor.com/tsi/common/program_v1">
    <ResponseHeader>
    <com:ResponseCode>0</com:ResponseCode>
    <com:ResponseText>0</com:ResponseText>
    </ResponseHeader>
    </rr:Get360ViewOfProductResponse>
    the difference is that ResponseCode and responseText should only use their prefix, and not complete namespace. How can i acheive this.
    Thanks in advance.
    Edited by: 856401 on Feb 9, 2012 1:53 AM

    I get error 'Invalid expression- Unexpected token copy-namespaces'. Is it supported by xquery version 1.0 ? Following is the updated xquery transformation which gives static error:
    xquery version "1.0" encoding "Cp1252";
    (:: pragma bea:global-element-parameter parameter="$get360ViewOfProductResponse1" element="ns5:Get360ViewOfProductResponse" location="../XSD/CPMSchema_v20.xsd" ::)
    (:: pragma bea:global-element-return element="ns6:Get360ViewOfProductResponse" location="../XSD/CPMSchema_v3.xsd" ::)
    declare namespace ns2 = "http://broadcast.telenor.com/tsi/common/displayinformation_v1";
    declare namespace ns1 = "http://broadcast.telenor.com/tsi/common/commonparameters_v1";
    declare namespace ns4 = "http://broadcast.telenor.com/tsi/common/Property_v2";
    declare namespace ns3 = "http://broadcast.telenor.com/tsi/common/ProductMain_v2";
    declare namespace ns0 = "http://broadcast.telenor.com/tsi/common/condition_v1";
    declare namespace ns9 = "http://broadcast.telenor.com/tsi/common/extension_v1";
    declare namespace ns5 = "http://broadcast.telenor.com/tsi/psd/cpm/CPMSchema_v20";
    declare namespace ns6 = "http://canaldigital.com/schema/product/CPMProductInformation/v3.0/";
    declare namespace xf = "http://tempuri.org/CPM_OSB_v3/XQuery/Get360ViewOfProductResponse/";
    declare namespace ns7 = "http://broadcast.telenor.com/tsi/common/productofferingpricewithrules_v2";
    declare namespace ns8 = "http://broadcast.telenor.com/tsi/common/pricecomponent_v2";
    declare copy-namespaces preserve, inherit;
    declare function xf:Get360ViewOfProductResponse($get360ViewOfProductResponse1 as element(ns5:Get360ViewOfProductResponse))
    as element(ns6:Get360ViewOfProductResponse) {
    <ns6:Get360ViewOfProductResponse>
    <ResponseHeader>
    <ns1:ResponseCode>0</ns1:ResponseCode>
    <ns1:ResponseText>{ data($get360ViewOfProductResponse1/responseDescription) }</ns1:ResponseText>
    </ResponseHeader>
    </ns6:Get360ViewOfProductResponse>
    declare variable $get360ViewOfProductResponse1 as element(ns5:Get360ViewOfProductResponse) external;
    xf:Get360ViewOfProductResponse($get360ViewOfProductResponse1)

  • Optional Parameter in ODSI

    Hi,
    I have to create a Optional Parameter in ODSI function as given following :
    xquery version "1.0" encoding "UTF-8";
    (::pragma xds <x:xds targetType="urn:AddressInfo" xmlns:x="urn:annotations.ld.bea.com" xmlns:urn="http://www.wcbsask.com/employeerCoverage/AddressInfo"><creationDate>2010-10-15T15:19:40</creationDate><userDefinedView/></x:xds> ::)
    declare namespace wbt= "ld:Physical/CBC";
    import schema namespace ns1="http://www.abc.com/employeerCoverage/AddressInfo" at "ld:Logical/AddressInfo/schemas/AddressInfo.xsd";
    declare namespace tns="ld:Logical/AddressInfo/SampleOptional";
    (::pragma function <f:function kind="read" visibility="public" isPrimary="true" xmlns:f="urn:annotations.ld.bea.com"/>::)
    declare function tns:getSampleOptional($formNum as xs:string,$optinalInput as xs:integer?) as element(ns1:AddressInfo)?{
    for $cbc in wbt:CBC()
    where $formNum eq $cbc/FORM_NUM
    return
    <ns1:AddressInfo>
    if(exists($optinalInput))then
    <ns1:regNum>{fn:data($CBC/FORM_NUM)}</ns1:regNum>
    else(
    <ns1:cusNumber>{fn:data($optinalInput)}</ns1:cusNumber>
    </ns1:AddressInfo>
    when i am passing the form number as some value and OptionalInput as null(since the parameter is optional). I am getting error as
    com.bea.dsp.das.exception.DASException: weblogic.xml.query.exceptions.XQueryDynamicException: {err}XP0021: "": can not cast to {http://www.w3.org/2001/XMLSchema}integer: error: decimal: Invalid decimal value: expected at least one digit
         at com.bea.dsp.das.ejb.EJBClient.invokeOperation(EJBClient.java:160)
         at com.bea.dsp.das.DataAccessServiceImpl.invokeOperation(DataAccessServiceImpl.java:171)
         at com.bea.dsp.das.DataAccessServiceImpl.invoke(DataAccessServiceImpl.java:122)
         at com.bea.dsp.ide.xquery.views.test.QueryExecutor.invokeFunctionOrProcedure(QueryExecutor.java:113)
         at com.bea.dsp.ide.xquery.views.test.XQueryTestViewContent.getFunctionExecutionResult(XQueryTestView.java:1041)
         at com.bea.dsp.ide.xquery.views.test.XQueryTestViewContent.executeFunction(XQueryTestView.java:1176)
         at com.bea.dsp.ide.xquery.views.test.XQueryTestViewContent.widgetSelectedImpl(XQueryTestView.java:1866)
         at com.bea.dsp.ide.xquery.views.test.XQueryTestViewContent.access$300(XQueryTestView.java:174)
         at com.bea.dsp.ide.xquery.views.test.XQueryTestViewContent$3.run(XQueryTestView.java:1594)
         at org.eclipse.swt.custom.BusyIndicator.showWhile(BusyIndicator.java:67)
         at com.bea.dsp.ide.xquery.views.test.XQueryTestViewContent.widgetSelectedBusy(XQueryTestView.java:1597)
         at com.bea.dsp.ide.xquery.views.test.XQueryTestViewContent.widgetSelected(XQueryTestView.java:1560)
         at org.eclipse.swt.widgets.TypedListener.handleEvent(TypedListener.java:227)
         at org.eclipse.swt.widgets.EventTable.sendEvent(EventTable.java:66)
         at org.eclipse.swt.widgets.Widget.sendEvent(Widget.java:938)
         at org.eclipse.swt.widgets.Display.runDeferredEvents(Display.java:3687)
         at org.eclipse.swt.widgets.Display.readAndDispatch(Display.java:3298)
         at org.eclipse.ui.internal.Workbench.runEventLoop(Workbench.java:2389)
         at org.eclipse.ui.internal.Workbench.runUI(Workbench.java:2353)
         at org.eclipse.ui.internal.Workbench.access$4(Workbench.java:2219)
         at org.eclipse.ui.internal.Workbench$4.run(Workbench.java:466)
         at org.eclipse.core.databinding.observable.Realm.runWithDefault(Realm.java:289)
         at org.eclipse.ui.internal.Workbench.createAndRunWorkbench(Workbench.java:461)
         at org.eclipse.ui.PlatformUI.createAndRunWorkbench(PlatformUI.java:149)
         at org.eclipse.ui.internal.ide.application.IDEApplication.start(IDEApplication.java:106)
         at org.eclipse.equinox.internal.app.EclipseAppHandle.run(EclipseAppHandle.java:169)
         at org.eclipse.core.runtime.internal.adaptor.EclipseAppLauncher.runApplication(EclipseAppLauncher.java:106)
         at org.eclipse.core.runtime.internal.adaptor.EclipseAppLauncher.start(EclipseAppLauncher.java:76)
         at org.eclipse.core.runtime.adaptor.EclipseStarter.run(EclipseStarter.java:363)
         at org.eclipse.core.runtime.adaptor.EclipseStarter.run(EclipseStarter.java:176)
         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.eclipse.equinox.launcher.Main.invokeFramework(Main.java:508)
         at org.eclipse.equinox.launcher.Main.basicRun(Main.java:447)
         at org.eclipse.equinox.launcher.Main.run(Main.java:1173)
         at org.eclipse.equinox.launcher.Main.eclipse_main(Main.java:1148)
         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.m7.installer.util.NitroxMain$1.run(NitroxMain.java:33)
         at java.awt.event.InvocationEvent.dispatch(InvocationEvent.java:199)
         at java.awt.EventQueue.dispatchEvent(EventQueue.java:597)
         at java.awt.EventDispatchThread.pumpOneEventForFilters(EventDispatchThread.java:273)
         at java.awt.EventDispatchThread.pumpEventsForFilter(EventDispatchThread.java:183)
         at java.awt.EventDispatchThread.pumpEventsForHierarchy(EventDispatchThread.java:173)
         at java.awt.EventDispatchThread.pumpEvents(EventDispatchThread.java:168)
         at java.awt.EventDispatchThread.pumpEvents(EventDispatchThread.java:160)
         at java.awt.EventDispatchThread.run(EventDispatchThread.java:121)
    Kindly help in the issue.
    Regards,
    Tara

    "when i am passing ... and OptionalInput as null"
    What does that mean exactly? From the exception, it looks like you are just leaving the text box blank. For 'null' you have to check the 'null' check-box beside it.

  • Problem with Xquery transformation in OSB

    hi,
    My scenario is that I have to break the data in a single tag of xml A, to populate multiple tags of xml B.I am using Xquery transformation and substring function to achieve this. The problem comes when i import the xquery resource in OSB and try to do the transformation in a proxy service it gives the following error
    <con:fault xmlns:con="http://www.bea.com/wli/sb/context">
    <con:errorCode>BEA-382510</con:errorCode>
    <con:reason>
    *OSB Assign action failed updating variable "message": com.bea.wli.common.xquery.XQueryException: Error parsing XML: {err}XP0006: "element {http://schemas.xmlsoap.org/soap/envelope/}Body { {http://www.w3.org/2004/07/xpath-datatypes}untypedAny }": bad value for type element {http://www.example.org/data}data { {http://www.w3.org/2001/XMLSchema}anyType }*
    </con:reason>
    <con:location>
    <con:node>PipelinePairNode1</con:node>
    <con:pipeline>PipelinePairNode1_request</con:pipeline>
    <con:stage>stage1</con:stage>
    <con:path>request-pipeline</con:path>
    </con:location>
    </con:fault>
    the configuration i have done in the proxy service is this::_
    Assign: [XQuery resource..] to [message]
    Delete: [.] in [body]
    Insert [$message] [as first child of][.] in [body]
    The Xquery resource is the .xq file that i have generated for Xquery transformation.
    and i m routing this proxy service to a business service that wud take the XML and dump it to my D drive using file protocol.
    Edited by: rahulc on Oct 12, 2010 12:40 AM
    Edited by: rahulc on Oct 12, 2010 12:41 AM

    My Xquery is this::
    (:: pragma bea:global-element-parameter parameter="$data1" element="ns0:data" location="data.xsd" ::)
    (:: pragma bea:global-element-return element="note" location="note.xsd" ::)
    declare namespace ns0 = "http://www.example.org/data";
    declare namespace xf = "http://tempuri.org/OSB_Try/tag_break/";
    declare function xf:tag_break($data1 as element(ns0:data))
    as element(note) {
    <note>
    <to>
    fn:substring(data($data1),
    1 ,
    6)
    </to>
    <from>
    fn:substring(data($data1),
    7 ,
    6)
    </from>
    <heading>
    fn:substring(data($data1),
    13 ,
    6)
    </heading>
    <body>
    fn:substring(data($data1),
    19 ,
    11)
    </body>
    </note>
    declare variable $data1 as element(ns0:data) external;
    xf:tag_break($data1)
    and my data is this::
    <?xml version="1.0"?>
    <ns0:data xmlns:ns0="http://www.example.org/data">DON'T FORGET ME THIS WEEKEND!</ns0:data>
    and i have tested this zquery for the above data and this is the transformation its doing::
    <note>
    <to>DON'T </to>
    <from>FORGET</from>
    <heading> ME TH</heading>
    <body>IS WEEKEND!</body>
    </note>
    Edited by: rahulc on Oct 12, 2010 1:57 AM

  • How to use JMSReplyTo parameter in ALSB

    Hallo all,
    Background: I am sendind an xml message to ALSB via a JMS Queue. I set the JMSReplyTo header parameter to a spcific queue where I want the Service Bus to send the response. I have the following problem:
    I want to perform some conditional processing with ALSB depending on which is the queue I have in the JMSReplyTo parameter but I am not able to access that parameter with ALSB. I am able to access other JMS header parameter (accessing them using the xquery editor) but that parameter is not even present!
    If I save the JMS message I get in the queue I can see that the param is there but set as follow:
    <mes:JMSReplyTo>
    <mes:Destination applicationName="pgw2JmsSysModule" moduleName="" name="pgw2JmsSysModule!pgw2testQueue" serverName="pgw2JmsServer" />
    </mes:JMSReplyTo>
    How am I supposed to use it?
    Thanks,
    Nicola

    Hi
    See http://edocs.bea.com/alsb/docs25/userguide/transport.html#wp1081193

  • XQuery translate() function not working correctly?

    The following XQuery fragment
    return
    xf:translate($product/@description, "&#174", "®")
    where
    $product/@description
    contains
    Complete Choice&#174 Plan
    returns
    Colete Choice® Pln
    not, as expected
    Complete Choice® Plan

    967660 wrote:
    Hi,
    Another quick question if people don't mind. Bit confused about the trunc date function. I'm following the sql fundamentals exam guide and using their examples:
    select trunc(to_date('02-jun-2009 13:00','dd-mon-yyyy hh24:mi')) day from dual;
    this returns the 2nd of june, as it should, because, as far as i'm aware, leaving the optional variable out defaults the precision to 'day'. but when i explicitly add the variable 'day', as the guide has done with 'week' 'month' and 'year' in the following examples (so i assume this format is correct rather than dd/mon/yyyy), something goes wrong:
    select trunc(to_date('02-jun-2009 13:00','dd-mon-yyyy' hh24:mi'), 'day') day from dual;
    this returns the 31st of may. which is incorrect.
    however replacing 'day' with 'dd' provides the correct answer of the 2nd again.
    this isn't a major issue, it just bothers me that the guide seems (again) to be mistaken, something that is rapidly becoming a trend in their examples. i'd also quite like to know why this is happening, as it will help improve my understanding of sql in general - perhaps there is some sort of default to allow the correct use of the variable 'day' i'm overlooking and that the guide hasn't made clear.
    btw, i'm working in sqlplus - although developer has some odd results too.
    thanks alot,
    nick'day' doesn't trunc to the beginning of the day. It truncates to the first day of the week: in your case 31st May.
    'ddd' truncates to the beginning of the day.
    So, leaving the second parameter out defaults to 'ddd' not 'day'.

  • How to transform with xquery from CDATA to XML

    Hi everyone
    I want to transform from CDATA to XML and I don´t know how to do.
    anyone can help me please?
    I'm using OSB OEPE PS3, I have artifacts: person.PROXY, person.BIZ, BIZ-Person.WSDL, PROXY-Person.WSDL, Person-response.xq and Person.xsd.
    I Use Message Flow Within Route, Routing (Request and Response Actions)
    To Request Xquery transformation is ok, for Response Action I need help. I receive a String and inside with CDATA:
    +<soapenv:Envelope xmlns:soapenv="http://schemas.xmlsoap.org/soap/envelope/" xmlns:xsd="http://www.w3.org/2001/XMLSchema" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance">+
    +<soapenv:Body>+
    +<executeResponse soapenv:encodingStyle="http://schemas.xmlsoap.org/soap/encoding/">+
    +<executeReturn xsi:type="xsd:string">+
    +*<![CDATA[<example-data rows="1"><person><id>123</id><name>JHON</name><surname>MAGNESS</surname>+*
    *+<code>123456789V</code></person></example-data>]]>+*
    +</executeReturn>+
    +</executeResponse>+
    +</soapenv:Body>+
    +</soapenv:Envelope>+
    I want to map from CDATA to XML like this (Person.xsd):
    <xs:schema xmlns="http://www.domain.com/XSD/Persons" xmlns:xs="http://www.w3.org/2001/XMLSchema" xmlns:ns1="http://www.domain.com/XSD/ABCD" targetNamespace="http://www.domain.com/XSD/Persons" elementFormDefault="qualified" attributeFormDefault="unqualified">
    <xs:import namespace="http://www.domain.com/XSD/ABCD"
    <xs:complexType name="Persons">
              <xs:sequence>++
                   <xs:element name="id" type="xs:string"/>
                   <xs:element name="surname1" type="xs:string" minOccurs="0"/>
                   <xs:element name="surname2" type="xs:string" minOccurs="0"/>
                   <xs:element name="name" type="xs:string" minOccurs="0"/>
                   <xs:element name="code" type="xs:string"/>
              </xs:sequence>
         </xs:complexType>
    Edited by: user10070593 on Aug 29, 2012 10:58 PM
    Edited by: user10070593 on Aug 29, 2012 10:58 PM
    Edited by: user10070593 on Aug 29, 2012 11:00 PM

    Hey Patrick / Vlad thank you very much for your help :)
    I have solved it like this:
    Within my proxy in Message Flow (*using Routing -- Route -- Response Action*)
    I'm using the elements Assing and Replace
    In Assing element (expression: Person-response.xq, variable: varBStoPS)
    In Replace element (xpath : executeResponse/executeReturn/text() , in Variable: body, expression:
    *$varBStoPS*)
    Now, within Person-Response.xq , I am using the parameter: *$anyType1*, but this is a string, I don´t know to use a FOR loop in Xquery, as I can apply it to the XML mapping (Person.xsd)?, Knowing I get the list:
    *+<example-data rows="1"><person><id>123</id><name>JHON</name><surname>MAGNESS</surname>+*
    *+<code>123456789V</code></person></example-data>+*
    Person.xsd:
    <xs:element name="processResponse">
              <xs:complexType>
                   <xs:sequence>
                        <xs:element ref="ns1:HeaderMsgABCD"/>
                        <xs:element name="bodyResponse">
                             <xs:complexType>
                                  <xs:sequence>
                                       <xs:element name="PersonsCollection">
                                            <xs:complexType>
                                                 <xs:sequence>
              <xs:element name="Persons" type="Persons" minOccurs="0" maxOccurs="unbounded"/>
                                                 </xs:sequence>
                                            </xs:complexType>
                                       </xs:element>
                                  </xs:sequence>
                             </xs:complexType>
                        </xs:element>
                        <xs:element ref="ns1:ErrorMsgABCD"/>
                   </xs:sequence>
              </xs:complexType>
         </xs:element>
    Person-response.xq:
    xquery version "1.0" encoding "Cp1252";
    (:: pragma parameter="$anyType1" type="xs:anyType" ::)
    (:: pragma bea:global-element-return element="ns0:processResponse" location="../XSD/ Person-response.xq" ::)
    declare namespace xf = "http://tempuri.org/oracle/xquery/Person-response/";
    declare namespace ns1 = "http://www.domain.com/XSD/ABCD";
    declare namespace ns0 = " http://www.domain.com/XSD/Persons";
    declare function xf:XQ_SEARCH_PERSONS_RESPONSE($anyType1 as element(*))
    as element(ns0:processResponse) {
    <ns0:processResponse>
    <ns0:bodyResponse>
         <ns0:PersonsCollection>
    <ns0:Persons>
    <ns0:id>{ data(0) }</ns0:id>
    <ns0:surname1>{ data(0) }</ns0:surname1>
    <ns0:surname2>{ data(0) }</ns0:surname2>
    <ns0:name>{ data(0) }</ns0:name>
    <ns0:code>{ data(0) }</ns0:code>
              </ns0:Persons>
         </ns0:PersonsCollection>
    </ns0:bodyResponse>
    </ns0:processResponse>
    declare variable $anyType1 as element(*) external;
    xf:XQ_SEARCH_PERSONS_RESPONSE ($anyType1)
    Edited by: chromosoma on Aug 30, 2012 12:47 PM
    Edited by: chromosoma on Aug 30, 2012 12:50 PM
    Edited by: chromosoma on Aug 30, 2012 1:00 PM

  • OSB - XQuery - line 24, col 1 {err}FORG0005: expected 1 item, got 2 or mor

    In the below XQ, I am trying to learn making calls to local functions. I have tweaked my earlier XQ, which had a local variable defined [in xf:getCost() function] as XPath to Quantity. Now, I have modified the XQ to make a call to xf:getQty() from xf:getCost(), to get the desired Quantity.
    On executing the below code I get Error occurred while executing XQuery: line 24, column 1: {err}FORG0005: expected exactly one time, got 2+ items. Either the XQuery is invalid or .... Request Help
    xquery version "1.0" encoding "Cp1252";
    (:: pragma parameter="$anyType1" type="xs:anyType" ::)
    (:: pragma type="xs:anyType" ::)
    declare namespace xf = "http://tempuri.org/purchaseOrder/";
    declare function xf:getCost()
    as xs:double {
    let $po := <purchase-order>
    <red-tape/>
    <order-item product="p010" price="10.50" quantity="3"/>
    <order-item product="p020" price="18.10" quantity="8"/>
    <order-item product="p020" price="11.10" quantity="8"/>
    </purchase-order>
    let $s1 := $po/order-item/@price
    let $s2 := $po/order-item/@quantity
    let $s3 := sum(for $el at $i in $s1 return $s1[$i] * xf:getQty($i))
    return $s3
    declare function xf:getQty($index as xs:decimal)
    as xs:decimal {
    let $po := <purchase-order>
    <red-tape/>
    <order-item product="p010" price="10.50" quantity="3"/>
    <order-item product="p020" price="18.10" quantity="8"/>
    <order-item product="p020" price="11.10" quantity="8"/>
    </purchase-order>
    return ($po/order-item/@quantity[$index])
    xf:getCost()

    return ($po/order-item[$index]/@quantity)
    not
    return ($po/order-item/@quantity[$index])

  • How to pass parameter into extract function (for XMLTYPE)

    I have a table PROBLEMXML with XMLTYPE field xml_column. In this column there are several deffinitions for the problem. There is no max amount of deffinitions and it can be no definition at all. I need to return all definitions for every problem as a string wirh definitions separated by ";".
    Query
    SELECT extract(prob.Def,'/Definitions/Definition[1]/@var') || ';'|| extract(prob.Def,'/Definitions/Definition[2]/@var')
    FROM PROBLEMXML j ,
    XMLTABLE (
    '/problem'
    PASSING j.xml_column
    COLUMNS probid VARCHAR (31) PATH '/problem/@id',
    Def XMLTYPE PATH '/problem/Definitions') prob
    where PROBLEM_ID =1;
    returns exactly what I want a;m.
    But
    declare
    my_var varchar2(2000) :=null;
    n1 number;
    n2 number;
    begin
    n1:=1;
    n2:=2;
    SELECT extract(prob.Def,'/Definitions/Definition[n1]/@var') || '|'|| extract(prob.Def,'/Definitions/Definition[n2]/@var') into my_var
    FROM ETL_PROBLEMXML_STG_T j ,
    XMLTABLE (
    '/problem'
    PASSING j.xml_column
    COLUMNS probid VARCHAR (31) PATH '/problem/@id',
    Def XMLTYPE PATH '/problem/Definitions') prob
    where PROBLEM_ID =1;
    dbms_output.put_line(my_var);
    end;
    returns NULL.
    Is there is a way to pass parameter into extract function?

    I need to return all definitions for every problem as a string wirh definitions separated by ";".In XQuery, there's the handy function "string-join" for that.
    For example :
    SQL> WITH etl_problemxml_stg_t AS (
      2   SELECT 1 problem_id,
      3  xmltype('<problem id="1">
      4   <Definitions>
      5    <Definition var="var1"></Definition>
      6    <Definition var="var2"></Definition>
      7    <Definition var="var3"></Definition>
      8   </Definitions>
      9  </problem>') xml_column
    10   FROM dual
    11  )
    12  SELECT j.problem_id,
    13         prob.probid,
    14         prob.def
    15  FROM etl_problemxml_stg_t j,
    16       XMLTable(
    17        'for $i in /problem
    18         return element r
    19         {
    20          $i/@id,
    21          element d { string-join($i/Definitions/Definition/@var, ";") }
    22         }'
    23        passing j.xml_column
    24        columns
    25         probid varchar2(30)  path '@id',
    26         def    varchar2(100) path 'd'
    27       ) prob
    28  ;
    PROBLEM_ID PROBID               DEF
             1 1                    var1;var2;var3

Maybe you are looking for