如何在立即执行中将表名添加到动态查询中?
Posted
技术标签:
【中文标题】如何在立即执行中将表名添加到动态查询中?【英文标题】:How to add table name into dynamic query in execute immediate? 【发布时间】:2015-10-30 13:49:25 【问题描述】:我很困惑,因为我不知道如何在execute immediate
子句中使用变量作为字符串。
declare
variable1 varchar2(30):
cur sys_refcursor;
begin
open cur for
select tablename from table1;
loop
fetch cur into variable1;
exit when cur %notfound;
execute immediate 'select count(*)
into variable1
from user_tables
where table_name =''' || variable1 || '''';
end loop;
close cur;
end;
这里的variable1
是一个表名。应该有一个字符串值。怎么做?还是有错误。
【问题讨论】:
请注意,这里完全没有理由(也没有好处)使用动态 SQL。如果这是真正的问题,请使用静态 SQL。并将计数放入integer
或 number
变量中,而不是放入 varchar2(30)
。
【参考方案1】:
立即执行语句应如下所示:
execute immediate 'select count(*) from user_tables where table_name ='''||variable1||'''' into variable1;
在查询后加上成xxx。
【讨论】:
更好用execute immediate 'select count(*) from user_tables where table_name = :var1' into variable1 USING variable1;
以上是关于如何在立即执行中将表名添加到动态查询中?的主要内容,如果未能解决你的问题,请参考以下文章
BigQuery 是不是支持“立即执行”命令来运行动态查询?