Comment stocker la valeur d'un champ sélectionné dans une variable à partir d'une requête et l'utiliser dans une instruction de mise à jour ?
Voici ma procédure :
J'écris une procédure stockée T-SQL pour le serveur SQL 2005 qui fait ce qui suit :
- récupère la liste des numéros d'identification des factures dans la table des factures et la stocke dans le curseur.
- Récupérer le numéro de facture du curseur -> variable tmp_key
- foreach tmp_key trouve l'identifiant du contact primaire du client de la table customer
- met à jour la clé de contact du client avec l'identifiant du contact primaire
- fermer le curseur
Voici mon code :
DECLARE @tmp_key int
DECLARE @get_invckey cursor
set @get_invckey = CURSOR FOR
select invckey from tarinvoice where confirmtocntctkey is null and tranno like '%115876'
OPEN @get_invckey
FETCH NEXT FROM @get_invckey into @tmp_key
WHILE (@@FETCH_STATUS = 0)
BEGIN
SELECT c.PrimaryCntctKey as PrimaryContactKey
from tarcustomer c, tarinvoice i
where i.custkey = c.custkey and i.invckey = @tmp_key
UPDATE tarinvoice set confirmtocntctkey = PrimaryContactKey where invckey = @tmp_key
FETCH NEXT FROM @get_invckey INTO @tmp_key
END
CLOSE @get_invckey
DEALLOCATE @get_invckey
Comment puis-je stocker la PrimaryContactKey et la réutiliser dans la clause set de l'instruction de mise à jour suivante ? Dois-je créer une variable curseur ou simplement une autre variable locale de type int ?