Comment ouvrir un curseur SQL

Bien que le DECLARE CURSOR Instruction SQL spécifie les lignes à inclure dans le curseur, il ne provoque pas réellement quelque chose à se produire parce que DECLARE est juste une déclaration et non une instruction exécutable. La OUVERT déclaration apporte le curseur à l'existence. Il a la forme suivante:

Nom-curseur OUVERT -

Pour ouvrir le curseur dans la COMMANDÉ PAR clause, utilisez la commande suivante:




DECLARE CURSOR revenus FORSELECT Modèle, parts, le prix, Unités * Prix AS ExtPriceFROM TRANSDETAILORDER par modèle, ExtPrice DESC revenus -open -

Vous ne pouvez pas récupérer les lignes à partir d'un curseur jusqu'à ce que vous ouvrez le curseur. Lorsque vous ouvrez un curseur, les valeurs des variables référencées dans le DECLARE CURSOR déclaration devenir fixe, comme le font toutes les fonctions actuelles de date-heure. Prenons l'exemple suivant de SQL embarqué dans un programme de langage hôte:

EXEC SQL DECLARE CURSOR C1 POUR SELECT * FROM ORDERSWHERE ORDERS.Customer =: Nameand DueDate lt; -NAME CURRENT_DATE: = 'Acme Co'- // Un langage hôte statementEXEC Open SQL C1-NOM: =' Omega Inc .'- // Une autre déclaration de l'hôte ... EXEC SQL UPDATE injonctions DueDate = CURRENT_DATE-

La OUVERT déclaration fixe la valeur de toutes les variables référencées dans le curseur de déclarer et fixe une valeur pour toutes les fonctions actuelles de date-heure également. Par conséquent, la deuxième affectation de la variable de nom (Nom: = 'Omega Inc. ") n'a pas d'effet sur les lignes du curseur récupérées. (Cette valeur de NOM on utilise le Suivant fois que vous ouvrez C1.)

Et même si le OUVERT instruction est exécutée une minute avant minuit et le METTRE À JOUR instruction est exécutée une minute après minuit, la valeur de DATE ACTUELLE dans le METTRE À JOUR déclaration est la valeur de cette fonction au moment de la OUVERT déclaration exécuté - même si DECLARE CURSOR ne fait pas référence la fonction date-heure.


» » » » Comment ouvrir un curseur SQL