2010-03-15 5 views

Répondre

164

Votre syntax n'est pas tout à fait raison: vous devez lister les champs en ordre avant INTO, et les variables cibles correspondantes après:

SELECT Id, dateCreated 
INTO iId, dCreate 
FROM products 
WHERE pName = iName 
+4

+1. C'est un cas où la syntaxe T-SQL est plus claire. Avoir ces listes séparées provoque le même problème de maintenance que DECLARE CURSOR et FETCH (pas que je les utilise). – harpo

+0

Idem pour Pl/Sql. –

1

Alternativement à la réponse de Martin, vous pouvez également ajouter la partie EN à la fin de la requête pour rendre la requête plus lisible:

SELECT Id, dateCreated FROM products INTO iId, dCreate 
7

========== ========== Advise

i réponse clayton @ Martin s correct, mais ceci est un conseil seulement.

Veuillez éviter l'utilisation de variables ambiguës dans la procédure stockée.

Exemple:

SELECT Id, dateCreated 
INTO id, datecreated 
FROM products 
WHERE pName = iName 

L'exemple ci-dessus entraîne une erreur (erreur de valeur nulle)

l'exemple ci-dessous donne est exact. J'espère que cela a du sens.

Exemple:

SELECT Id, dateCreated 
INTO val_id, val_datecreated 
FROM products 
WHERE pName = iName 

Vous pouvez également les rendre sans ambiguïté en faisant référence à la table, comme:

[Crédit: maganap]

SELECT p.Id, p.dateCreated INTO id, datecreated FROM products p 
WHERE pName = iName 
+0

J'ai rencontré ce problème, merci d'ajouter à la réponse ci-dessus. – Benp44

+0

Vous pouvez également les rendre sans ambiguïté en faisant référence à la table, comme: SELECT 'p.Id, p.dateCreated EN id, dateCreated DE produits p OÙ PName = iName' – maganap

+0

bonne suggestion Merci @maganap –

Questions connexes