Вызов базы данных с использованием xquery с дублирующимися значениями
Я использую XQuery для запроса базы данных в проекте OSB. Рассмотрим следующую таблицу:
userId Name Category
------ ------- --------
1 Dheepan Student
2 Raju Student
и XQuery
let $userName:=fn-bea:execute-sql(
$dataSourceJndiName,
xs:string("NAME"),
xs:string("select NAME from USER where CATEGORY= 'Student'")
)/*:NAME[1]
return <root> {data($userName)} </root>
По этому запросу я получаю результат как <root>Dheepan Raju</root>
, Но мне нужно вернуть только одну строку, даже если запрос возвращает более одной строки, как показано ниже <root>Dheepan</root>
, Я использовал предикат [1]
в запросе, но не знаю, почему он объединяет значения и возвращает. Может кто-нибудь сказать мне, как вернуть только первый ряд, когда возвращается более одного ряда.
1 ответ
Решение
Вам нужно использовать правильный паратез:
let $userName:=(fn-bea:execute-sql(
$dataSourceJndiName,
xs:string("NAME"),
xs:string("select NAME from USER where CATEGORY= 'Student'")
)/*:NAME)[1]
return <root> {data($userName)} </root>