我正在创建一个参数化的顶点形式,在其中我通过选择列表从用户那里获取列名及其值。当我在where子句中使用它时,例如
select columnnames
from table
where :P592_column = :P592_value ;
它不返回任何输出,但是当我用硬编码代替:P592_column的列名时,它显示输出。请帮助大家,我在这里停留了两天。
感谢任何帮助
您不能将绑定变量用作动态列名。而是将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;