【发布时间】:2014-01-03 19:46:47
【问题描述】:
我试图重构一段代码。我们对表和视图进行了类似的选择,我想在过程中导出选择并将表名用作输入参数。比如:
procedure show_table (
i_table_name varchar2
)
is
begin
for c in (
select *
from i_table_name
) loop
...
end loop;
end;
但是 PL/SQL 认为 i_table_name 是文字名称(抛出 PL/SQL: ORA-00942: table or view does not exist)。有没有办法评估变量的内容?我想我可以立即执行,但我不想:)
干杯。
【问题讨论】:
-
如果不想动态声明游标,可以声明两个游标,根据参数值选择打开哪个;取决于您是否担心选择重复或循环内的代码重复?
-
@AlexPoole 我想避免循环中的重复代码,因为无论如何选择都会有所不同。
-
@GunjanShakya 我想我必须使用动态查询。谢谢。