2013-03-04 7 views
0

J'ai une boucle, par ex.Comment obtenir la valeur du curseur DB2 9.7 dans une boucle où la valeur renvoyée est une chaîne

DECLARE SQL VARCHAR(1024); 

FOR V AS CUR1 CURSOR FOR (SELECT 'Select * from My_Table' from ...) 
DO 
    SET SQL = CUR1; 
    PREPARE S1 FROM SQL; 
    EXECUTE S1; 
END FOR; 

Cela ne semble pas fonctionner. J'ai fait avec succès semblable à ceci quand le curseur dans la boucle for pointe vers une ligne retournée et que je peux accéder à la valeur par ex. comme ceci:

SET SQL = CUR1.TABNAME 

Mais maintenant que la valeur retournée est une chaîne, je ne sais pas comment l'obtenir à partir du curseur. Des idées?

Répondre

3

Vous avez simplement besoin de spécifier un nom de colonne dans votre requête:

DECLARE SQL VARCHAR(1024); 

FOR V AS CUR1 CURSOR FOR (SELECT 'drop table My_Table' as malicious_code from...) 
DO 
    SET SQL = CUR1.malicious_code; 
    PREPARE S1 FROM SQL; 
    EXECUTE S1; 
END FOR; 
Questions connexes