2011-11-01 2 views
1

quel est l'équivalent de CURSOR%NOTFOUND d'Oracle trouvé dans Teradata?Oracle/PL SQL curosr% trouvé équivalent dans Teradata

Sinon, alors comment puis-je traduire le code ci-dessous pour qu'il s'exécute dans Teradata.

OPEN OPEN_CUR1; 
    LOOP 
     FETCH OPEN_CUR1 INTO ... some variables ...; 
     EXIT WHEN OPEN_CUR1%NOTFOUND; 
CLOSE OPEN_CUR1; 

Merci

Répondre

3

Pour plus d'informations sur la manipulation du curseur/comportement Teradata voir page 47 http://www.info.teradata.com/do_redirect.cfm?itemid=062280010

Fondamentalement, l'équivalent OPEN_CUR1%NOTFOUND d'Oracle dans Teradata est que SQLSTATE est réglé sur 7362 et la SQLCODE à '02000' ... pour cela, vous pouvez consulter les pages 49, 76, 192-198, 405 et suivantes. du document ci-dessus.

EDIT - comme par commentaire:

De l'exemple à la page 49

CREATE PROCEDURE sp1 (OUT par1 CHARACTER(50)) 
BEGIN 
DECLARE var1 INTEGER; 
DECLARE projcursor CURSOR FOR 
SELECT projid, projectdesc 
FROM project; 
OPEN projcursor; 
WHILE (SQLCODE = 0) 
FETCH projcursor INTO var1, par1; 
END WHILE; 
FETCH projcursor INTO var1, par1; 
CLOSE projcursor; 
END; 

Ils utilisent WHILE (SQLCODE = 0) ce qui signifie essentiellement "alors que tout va bien et les données sont disponibles".

+0

Merci pour votre réponse rapide et le partage de la documentation. J'ai déjà parcouru la documentation, mais je voulais un exemple précis de ce que peut remplacer le curseur non trouvé. Y a-t-il un SQLState qui suffira? – Ali

+0

voir mon EDIT ci-dessus ... Je recommande fortement de lire les parties sur SQLSTATE HANDLERs etc. – Yahia