如果表为空,如何在JSONiq中编写程序

  • 本文关键字:JSONiq 程序 如果 jsoniq
  • 更新时间 :
  • 英文 :

let $query_a := (for $st in $student
where
(some $t in $transcript
satisfies ($t.ssn = $st.ssn and $t.dcode = "CS" and $t.cno = 530))
return {ssn: $st.ssn, name: $st.name, major: $st.major, status: $st.status}
)

这里的表student表是空的,它返回的query_a为null。如果表格为空,如何编写代码,例如学生[]。

我认为查询中的问题是缺少与let子句对应的return子句。查询在另一个FLWOR表达式(let$query_a…(中嵌套了一个FLWORD表达式(用于$st…(,并且必须有两个返回子句。

这是一个固定的查询,缩进设置有利于可读性(假设$student$transcript分别正确绑定到学生对象和成绩单对象的序列(:

let $query_a :=
for $st in $student
where (
some $t in $transcript
satisfies ($t.ssn = $st.ssn and $t.dcode = "CS" and $t.cno = 530)
)
return {
ssn: $st.ssn,
name: $st.name,
major: $st.major,
status: $st.status
}
return $query_a

注意,CCD_;空";value(它是一个原子项的序列,即null项(:如果序列$student中没有任何项通过谓词过滤器,则$query_a将是空的项序列。

然后,您可以测试序列是否为空,函数为空:

if(empty($sequence))
then ...
else ...

最新更新