2011-12-19 1 views
1

Je tente de définir une liste de variables à l'aide d'une instruction SELECT-INTO, mais je rencontre des problèmes avec la requête retournant des données nulles quand elle devrait trouver une ligne. La partie vraiment étrange est, si je choisis une certaine colonne, cela fonctionne, mais cela ne fonctionnera pas avec les autres. Pour isoler le problème un à la fois, j'ai simplifié la requête. Voici ce que je suis en train de courir:Requête dans mysql Processus stocké retournant faussement null

SELECT Product_1 INTO @Product_1 
FROM STG_XREF_ELS_PRODUCTS 
WHERE MarketName = @ThisMarketName 
LIMIT 1; 

Cette déclaration ne fonctionne pas, si je rentre dans la même requête exacte mais sélectionnez un autre domaine, il fonctionne très bien ...

SELECT MarketName INTO @Product_1 
FROM STG_XREF_ELS_PRODUCTS 
WHERE MarketName = @ThisMarketName 
LIMIT 1; 

notamment , J'ai testé pour m'assurer que ce n'est pas un cas où Product_1 est null, il n'y a pas d'instance dans ma table xréf dans laquelle Product_1 est null. En outre, si je sélectionne juste Product_1 de la table avec une limite de 1 et aucune clause where, je reçois toujours un résultat nul.

J'ai également essayé en utilisant:

set @Product1 = (select Product_1 
       FROM STG_XREF_ELS_PRODUCTS 
       WHERE MarketName = @ThisMarketName); 

Merci d'avance pour votre aide!

P.S.

+3

fyi: La notation @ dans MySQL indique une variable de session. Dans t-sql, le @ indique une variable locale. En MySQL, les variables locales ne nécessitent aucun préfixe. Méfiez-vous de l'utilisation de variables de session dans MySQL parce que la valeur peut ne pas être ce que vous attendez (je vois cela beaucoup avec les gens SQL-Server utilisant MySQL, continuez si ce n'est pas le cas) –

+0

avez-vous essayé avec des backticks? – eddy147

Répondre

0

Essayez de changer le nom de la variable si:

SELECT PRODUCT_1 EN @Product_variable DE STG_XREF_ELS_PRODUCTS OÙ MarketName = @ThisMarketName LIMITE 1;