ORACLE SQL:使用SELECT语句将值传递给函数参数

时间:2015-03-19 16:09:57

标签: sql oracle

我在Oracle中有一个函数,它将逗号分隔的字符串转换为值表。它通常被称为:

SELECT DISTINCT COLUMN_VALUE FROM TABLE(Comma_String_To_Table('abc,123,def,456'));

此调用将返回一个包含四行的表:

COLUMN_VALUE
abc
123
def
456

我多次使用这个来接受来自前端网页的多值参数,将参数转换为表格,然后加入表格来过滤我的结果,如下所示:

SELECT *
FROM MYTABLE m
INNER JOIN (
    SELECT DISTINCT COLUMN_VALUE FROM TABLE(Comma_String_To_Table('abc,123'))
) f ON M.STATUS = F.COLUMN_VALUE 

现在,问题是......我正在编写一个独立的SQL。我想使用这个Comma_String_To_Table函数来过滤我的结果,就像上面的例子一样,除了我希望传递给函数的值是SELECT语句的结果。即:

SELECT *
FROM MYTABEL m
INNER JOIN (
    SELECT DISTINCT COLUMN_VALUE FROM TABLE(Comma_String_To_Table(SELECT VALUE FROM APPSETTING WHERE APPSETTINGID = 76))
) f ON M.STATUS = F.COLUMN_VALUE 

SQL SELECT VALUE FROM APPSETTING WHERE APPSETTINGID = 76会产生一个以逗号分隔的字符串值。

我得到的错误是:

ORA-00936: missing expression

非常感谢任何帮助实现这一目标的帮助。

1 个答案:

答案 0 :(得分:4)

试试这个:

SELECT *
FROM MYTABEL m
INNER JOIN (
    SELECT DISTINCT COLUMN_VALUE 
    FROM  TABLE (SELECT Comma_String_To_Table(VALUE)
                 FROM APPSETTING WHERE APPSETTINGID = 76)
) f ON M.STATUS = F.COLUMN_VALUE