Имя и количество аргументов не соответствуют сигнатуре какой-либо функции в статическом контексте — XQuery

Я пытаюсь вернуть строку, но почему-то эта функция просто не компилируется. Я немного потерялся!

declare function local:findValue($vrf as xs:string?, $namefirst as element()*, $schoolfirst as element()*, $namesecond as element()*, $schoolsecond as element()*) as xs:string? {

return (
    if (not(fn:empty($namefirst) or fn:empty($schoolfirst))) then (
        if ($vrf) then (
            "SCHOOL"
        ) else (
            "HIGHSCHOOL"
        )  
    ) else if (not(fn:empty($namesecond) or fn:empty($schoolsecond))) then (
        if ($vrf) then (
            "SCHOOL"
        ) else (
            "HIGSCHOOL"
        )  
    ) else ()
)

};

Компиляция просто не пройдет. Он выдает исключение, упомянутое в заголовке, любая быстрая помощь была бы здорово!


person hell_storm2004    schedule 15.06.2016    source источник


Ответы (1)


В функциях XQuery нет предложения возврата, так как вы просто объявляете возвращаемый результат внутри фигурных скобок. Предложение возврата есть только в FLWOR и других выражениях.

Таким образом, код анализируется как вызов функции return с арностью 1. Удаление оболочки

return ( ... )

должен исправить ошибку.

person Ghislain Fourny    schedule 15.06.2016