2010-11-17 11 views
0
DROP PROCEDURE `uuu`// 

CREATE DEFINER=`auth_tracker`@`%` PROCEDURE `uuu`() 
BEGIN 

DECLARE a,b CHAR(50); 
DECLARE _output TEXT DEFAULT ''; 

DECLARE cur1 CURSOR FOR SELECT attribute_name, value 
    FROM user_product_attribute upa, product_attribute pa 
    WHERE upa.user_product_id IN 

    ( SELECT upa.user_product_id 
     FROM user_product_attribute upa, user_product up, product_attribute pa, product p 
     WHERE pa.attribute_name = 'username' 
      AND pa.product_attribute_id = upa.product_attribute_id 
      AND pa.product_id = p.product_id 
      AND up.status = 'active' 
      AND p.product_name = 'broadband' 
      AND upa.value = 'lsolway-dsl') 

    AND upa.product_attribute_id = pa.product_attribute_id; 

OPEN cur1; 

read_loop: LOOP 
    FETCH cur1 INTO a, b; 
    SET _output = CONCAT(_output,a,b); 
END LOOP; 

SELECT _output; 

END// 

Salut les gars, je suis en train d'obtenir le SP pour régler la sortie suivante .. Je ne peux pas voir où je me trompe .. Rien est retourné .. La requête elle-même fonctionne bien en mode autonome ..MySQL procédure stockée - valeurs de sortie Problème

Répondre

0

La sous-requête est la raison .. Je n'utilise un curseur pour une requête qui aurait besoin de deux .. Im même pas sûr sont possibles sous-requêtes dans un SP ..

0

DÉCLARE un paramètre OUT et place la valeur dans la sortie.

Aussi une suggestion, il est toujours bon d'utiliser @ pour vos variables locales dans les procédures stockées. tels que @_output, @a et @b.

+0

erreur 1313 (42000): RETOUR est seulement permis dans une FONCTION J'ai ajouté le retour mais il est revenu avec l'erreur ci-dessus – Lee

+0

Édité ma réponse. N'a pas remarqué MySQL. Pour Mysql, vous avez besoin des paramètres de sortie –

+0

Merci pour la réponse mais même avec les valeurs de sortie définies, il a la même erreur .. ERROR 1329 (02000): Aucune donnée - zéro lignes récupérées, sélectionnées ou traitées – Lee

0

Pour autant que je sache, vous ne définissez aucun output parameters. Cela rendrait très difficile d'obtenir des données à partir d'une procédure stockée SQL.