[英]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.