2011-01-17 4 views
7

J'ai une procédure stockée qui a utilisé la commande EXECUTE IMMEDIATE pour exécuter une très longue chaîne. Comment puis-je supporter une chaîne très longue et retourner les données dans un refcursor?Oracle EXECUTE IMMEDIATE dans un curseur

+4

Combien de temps est "très long"? Plus de 32K? –

+0

Quelle version de la base de données? – DCookie

Répondre

12

En supposant que votre SQL ne dépasse pas 32K (comme @Tony Andrews a laissé entendre), vous devriez être en mesure d'utiliser quelque chose comme ceci:

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

Lorsque vous travaillez avec Ref Curseurs, open-for peut être directement utilisé , au lieu de execute immediate.

Questions connexes