2012-01-20 3 views
0
declare function tns:getDt($inp as xs:string) as element(ns1:Sschema)*{ 
    let $primary := fn-bea:get-property('PRIMARY','1') 
    let $sec := fn-bea:get-property('SECONDARY','2') 
    if ($primary = "1") then (
    for $response in tns:getData1() 
     return 
     $response 
) else (
    for $response in tns2:getData1() 
    return 
     $response 
) 
} 

Я хочу вызвать функции в разных пространствах имен на основе свойства weblogic admin. Несколько вопросов:Xquery if/else для динамического пространства имен

  1. Как я могу динамически выбирать пространство имен для использования на основе свойства weblogic admin?
  2. В приведенном выше коде семинар Oracle жалуется на if/else. Может ли if/else быть только внутри FLWOR?

ответ

0

Что касается второго вопроса: да, вы должны добавить «возврат» перед выражением «if», чтобы сделать ваш запрос синтаксически действительным.

Что касается вашего первого вопроса, я не совсем уверен, что вы намерены? ..

+0

Спасибо. Я получил его работу с возвратом до if. Что касается первого вопроса, вместо использования «1» и «2», я хотел бы перейти в пространство имен и использовать его для вызова соответствующей функции. Например, если PRIMARY = "ld: test/test1", то я хочу иметь возможность использовать $ PRIMARY: func(). – user127091

+0

Простите, что в XQuery это невозможно, так как пространства имен необходимо статически определять. Вот почему вам нужно будет использовать if/else или switch выражения, чтобы вызвать правильную функцию (как и в любом случае). –

Смежные вопросы