2017-10-06 40 views
0

我有一個光標查詢外部表的過程。我如何通過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是指定表名稱的參數。

我該如何重寫它?

+2

你不能,真的! –

+0

查看「開放使用」。快速Google搜索在[此位置]找到了一個示例(http://www.adp-gmbh.ch/ora/plsql/cursors/dynamic.html) –

回答

0
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

相關問題