Sql 如何使此查询成功运行?
返回 ORA-01427:单行子查询返回多行 我需要输出Sql 如何使此查询成功运行?,sql,oracle,Sql,Oracle,返回 ORA-01427:单行子查询返回多行 我需要输出 where or_in_list_fn returns FV52 1101 您需要使子查询返回1行和1个字段。您可以使用max() 直接使用内部查询,而不是从另一个select返回数据,因为您没有在外部select中执行任何操作 select (SELECT max(yourfield) FROM TABLE(or_in_list_fn('FV52,1101'))) plant_cd from dual 如果要在外部select中执行
where or_in_list_fn returns
FV52
1101
您需要使子查询返回1行和1个字段。您可以使用
max()
直接使用内部查询,而不是从另一个select返回数据,因为您没有在外部select中执行任何操作
select (SELECT max(yourfield) FROM TABLE(or_in_list_fn('FV52,1101'))) plant_cd from dual
如果要在外部select中执行某些筛选或与另一个表联接,请在查询的from子句中使用它,如下所示:
SELECT * FROM TABLE(or_in_list_fn('FV52,1101'))
试试这个:
select plant_cd.* from (SELECT * FROM TABLE(or_in_list_fn('FV52,1101'))) plant_cd
也许这样
SELECT*FROM TABLE(或_in_list_fn('fv521101')
?没有我需要进一步使用的plant_cd别名..所以我想重写它..这样它会返回plant_cd FV52 1101将SELECT语句如下所示:SELECT column_value作为plant_cd FROM TABLE(或_in_list_fn('FV52','1101')
问题是:SELECT()从dual中,这将始终生成提到的异常:ORA-01427:单行子查询返回多行“plant_cd”在您的输出中可以是列标题或数据项?我没有任何字段。或者\u in_list \u fn是一个函数,它在单独的行中返回FV521101。@SatheeshK:如果您没有在外部SELECT中执行任何操作,那么为什么要在另一个SELECT USE中使用SELECT语句。SELECT*FROM TABLE(或\u in_list_fn('FV521101'))
直接。如果我错了,请纠正我。@Gaurav Soni:因为对于别名plant\u cdOps…Nicholas Krasnov已经提到了这个解决方案。
SELECT * FROM TABLE(or_in_list_fn('FV52,1101'))
select plant_cd.* from (SELECT * FROM TABLE(or_in_list_fn('FV52,1101'))) plant_cd
SELECT column_value AS plant_cd FROM TABLE(or_in_list_fn('FV52,1101'))