Вызов базы данных с использованием 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> 
Другие вопросы по тегам