我写了一个pl/sql函数getEmpNums('3A,5 B,6 B'),这个函数将返回这样的字符串“EMP_NO IN('3A','5 B','6 B')”。我想在where子句中使用这个函数。如下所示
SELECT EMP_NO FROM EMP_CUST_VALUES WHERE (select getEmpNums('3A,5B,6B') from dual)
字符串
当我像下面这样调用时,得到“ORA-00936:missing expression”。如何像这样在where子句中调用函数
我试
SELECT EMP_NO FROM EMP_CUST_VALUES WHERE (select getEmpNums('3A,5B,6B') from dual)
型
当我给予它的工作时,它不工作
SELECT EMP_NO FROM EMP_CUST_VALUES WHERE (EMP_NO IN ('3A','5B','6B'))
型
2条答案
按热度按时间xytpbqjk1#
虽然你写的函数可能会返回你想要的,但你选择的原则只适用于有限的情况(Oracle Forms,Reports,也许是其他地方),你可以用绑定变量 * 替换 * 函数结果。
通常情况下,你宁愿选择返回一个集合,并将其与
table
函数一起使用,无论是作为一个连接还是在一个子查询中。函数优先;我使用了内置的数据类型:
字符串
样品表:
型
函数返回什么?一个集合:
型
使用方法:表函数:
型
子查询:
型
ttvkxqim2#
你不需要一个函数或
IN
表达式。相反,您可以直接在查询中使用分隔列表并匹配子字符串(使用周围的分隔符来匹配整个术语):
字符串