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

ORACLE SQL:使用SELECT语句将值传递给函数参数,sql,oracle,Sql,Oracle,我在Oracle中有一个函数,可以将逗号分隔的字符串转换为值表。这通常被称为: SELECT DISTINCT COLUMN_VALUE FROM TABLE(Comma_String_To_Table('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.ST

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

SELECT DISTINCT COLUMN_VALUE FROM TABLE(Comma_String_To_Table('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 
此调用将返回一个包含四行的表:

COLUMN_VALUE
abc
123
def
456
我多次使用它从前端网页接受多值参数,将参数转换为表,然后加入表以过滤我的结果,如下所示:

SELECT DISTINCT COLUMN_VALUE FROM TABLE(Comma_String_To_Table('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。我想使用这个逗号字符串totable函数来过滤我的结果,就像上面的例子一样,只是我希望传递给函数的值是SELECT语句的结果。i、 e:

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
从APPSETTING中选择值,其中APPSETTINGID=76
生成一个逗号分隔的字符串值

我得到的错误是:

ORA-00936: missing expression
如果您有任何帮助,我们将不胜感激。

试试这个:

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 

AppSetting包含我希望作为逗号分隔字符串进行筛选的表达式。如果我在编写SQL时不使用AppSetting值,它会是这样的:Tony——这正是我所需要的。谢谢