如何在光标中传递表名作为参数?
问题描述:
我有一个光标查询外部表的过程。我如何通过select
的表名?如何在光标中传递表名作为参数?
procedure ImpInsData(fileN varchar2,Tname VARCHAR2)
as
begin
IXRBI.EXternalChange (fileN,Tname);
declare
cursor cur_extenal is select * from Tname WHERE A IN ('1','2');
begin
FOR rec IN cur_extenal LOOP
vId :=sys_guid();
vRowStatus:=rec.A;
vTag:=rec.C;
end loop
end;
end;
Tname是指定表名称的参数。
我该如何重写它?
答
procedure ImpInsData(fileN varchar2)
as
CURSOR cur_extenal IS
(
select * from Tname WHERE A IN ('1','2')
);
begin
open cur_extenal
FETCH cur_extenal into rec
FOR rec IN cur_extenal LOOP
vId :=sys_guid();
vRowStatus:=rec.A;
vTag:=rec.C;
exit when cur_extenal%notfound;
end loop;
close cur_extenal;
end;
+0
此答案重写OP的发布代码,但实际上并未解决问题。正确的答案需要使用动态SQL,例如[我在其他SO线程中的答案](https://stackoverflow.com/a/29693016/146325)。 – APC
你不能,真的! –
查看“开放使用”。快速Google搜索在[此位置]找到了一个示例(http://www.adp-gmbh.ch/ora/plsql/cursors/dynamic.html) –