2012-01-20 30 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」表達式之前添加「return」以使您的查詢在語法上有效。

關於你的第一個問題,我不太清楚你的意圖是什麼?

+0

謝謝。我在if之前得到了回報。關於第一個問題,我不想使用「1」和「2」,而是想自己傳入命名空間並使用它來調用相應的函數。例如,如果PRIMARY =「ld:test/test1」,那麼我希望能夠使用$ PRIMARY:func()。 – user127091

+0

對不起,這在XQuery中是不可能的,因爲命名空間需要靜態定義。這就是爲什麼您必須使用if/else或切換表達式來調用正確的函數(就像您一樣)。 –