[英]Can't use bind variable as table name in sql query APEX ORACLE
SELECT * FROM :TABLENAME
是我的查询,而Apex不允许我运行,因为该应用程序不知道表名。 如何使用变量作为表名动态查询。
这是如何做:
select * from dual
return 'select * from ' || :P22_TABLE_NAME;
return 'select * from ' || :P22_TABLE_NAME;
您应该知道表单可能需要查询哪些表。 如果您有一个名为TABLE_NAME
的应用程序项,则可以将结果合并在一起并选择合适的表,如下所示:
select col1, col2, col3 from tablex where :TABLE_NAME = 'TABLEX'
union all
select col1, col2, col3 from tabley where :TABLE_NAME = 'TABLEY'
union all
select col1, col2, col3 from tablez where :TABLE_NAME = 'TABLEZ'
这种方法的好处是将检查查询的语法是否正确,并且表具有正确的列。 并且该解决方案不受SQL注入攻击的影响。
缺点是,如果添加了新表,则必须修改查询。 但是,如果要像这样快速创建表,则无论如何都要考虑修改策略。
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.