2011-01-17 10 views
7

Çok uzun bir dizeyi yürütmek için EXECUTE IMMEDIATE komutunu kullanan bir saklı yordamım var. Çok uzun bir dizeyi nasıl destekleyebilirim ve verileri bir yansıtıcıya nasıl dönüştürebilirim?Oracle Bir imlecin İYİLEŞTİRİLMESİ

+4

"Çok uzun" ne kadar? 32 K'dan fazla mı? –

+0

Hangi veritabanı sürümü? – DCookie

cevap

0

11gR2 ve DBMS_SQL.to_refcursor'u kullanın. SQL, böyle bir şey kullanmak gerekir değil daha uzun (@Tony Andrews ima gibi) 32K daha olduğunu varsayarsak

12

: ref imleçler ile

declare 
    SQL_Text varchar2(32760) := 'select * from dual'; --your query goes here 
    cur sys_refcursor; 
begin 
    open cur for SQL_Text; 
end; 

çalışan open-for doğrudan kullanılabilir execute immediate yerine.