ORACLE SQL:使用SELECT语句将值传递给函数参数
我在Oracle中有一个函数,可以将逗号分隔的字符串转换为值表。这通常被称为: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
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——这正是我所需要的。谢谢