以oracle apex格式创建动态where子句

问题描述 投票:0回答:1

我正在创建一个参数化的顶点形式,在其中我通过选择列表从用户那里获取列名及其值。当我在where子句中使用它时,例如

select columnnames 
from table 
where :P592_column = :P592_value ;

它不返回任何输出,但是当我用硬编码代替:P592_column的列名时,它显示输出。请帮助大家,我在这里停留了两天。

感谢任何帮助

sql oracle oracle-apex dynamic-sql
1个回答
0
投票

您不能将绑定变量用作动态列名。而是将CASE语句中的列列入白名单:

SELECT columnnames 
FROM   table 
WHERE  CASE UPPER( :P592_column )
       WHEN 'COLUMN1' THEN column1
       WHEN 'COLUMN2' THEN column2
       WHEN 'COLUMN3' THEN column3
       WHEN 'COLUMN4' THEN column4
       END = :P592_value;
© www.soinside.com 2019 - 2024. All rights reserved.