À l'aide de select dans la variable locale et de l'instruction préparée dans mysql
Chaque fois que l'appel de cette procédure stockée, j'obtiens cette erreur:
#1064 - You have an error in your SQL syntax; check the manual that corresponds to your MySQL server version for the right syntax to use near 'NULL' at line 1
Ce qui semble être le problème?
Voici le code:
DELIMITER $$
DROP PROCEDURE IF EXISTS `singledb`.`TOUR_TRANSFER`$$
CREATE DEFINER=`root`@`localhost` PROCEDURE `TOUR_TRANSFER`()
BEGIN
BEGIN -- for rubric table
DECLARE tblRubric_rubric_id INT;
SET @qry = concat('SELECT count(*) into ',tblRubric_rubric_id,' FROM zerodb2.tour_template');
PREPARE statement FROM @qry;
EXECUTE statement;
SELECT tblRubric_rubric_id;
END;
END$$
DELIMITER ;
Qu'est-ce exactement que vous essayez de faire, je pense que je peux aider. Obtenir le nombre de requêtes et de retour juste que?
je veux juste pour affecter une valeur à une variable locale à l'aide de select dans une déclaration préparée. Mais j'ai découvert qu'il l'habitude de travailler avec des variables locales. Voir bugs.mysql.com/bug.php?id=15263
Il fonctionne avec des variables locales. Je comprends ce que vous essayez de le faire je pense, mais il n'est pas nécessaire de le sélectionner dans une variable locale dans une procédure stockée, sauf si vous avez l'intention de faire quelque chose avec cette variable locale dans la procédure stockée. Où en êtes-vous de l'appel de cette procédure stockée à partir de PHP ou quelque chose? Si vous voulez accéder à cette "count(*)" tout ce que vous avez à faire est d'appeler l'instruction select. Vous n'avez pas à sélectionner dans une variable.
je veux juste pour affecter une valeur à une variable locale à l'aide de select dans une déclaration préparée. Mais j'ai découvert qu'il l'habitude de travailler avec des variables locales. Voir bugs.mysql.com/bug.php?id=15263
Il fonctionne avec des variables locales. Je comprends ce que vous essayez de le faire je pense, mais il n'est pas nécessaire de le sélectionner dans une variable locale dans une procédure stockée, sauf si vous avez l'intention de faire quelque chose avec cette variable locale dans la procédure stockée. Où en êtes-vous de l'appel de cette procédure stockée à partir de PHP ou quelque chose? Si vous voulez accéder à cette "count(*)" tout ce que vous avez à faire est d'appeler l'instruction select. Vous n'avez pas à sélectionner dans une variable.
OriginalL'auteur kaz | 2011-10-27
Vous devez vous connecter pour publier un commentaire.
De http://bugs.mysql.com/bug.php?id=15263:
"Marqueurs de paramètres peuvent être utilisés uniquement en cas de valeurs de données doit apparaître, non pas pour SQL
mots-clés, les identifiants, et ainsi de suite."
Donc, on ne peut pas faire:
PRÉPARER stmt DE 'SELECT id, NON ? À PARTIR de t1';
Nous ne pouvons pas l'utiliser ? au lieu de l'identificateur (nom de variable).
Et lorsque vous utilisez le paramètre nom:
PRÉPARER stmt DE 'SELECT id EN débarrasser DE t1';
dans la chaîne en cours de préparation, le serveur ne savent pas ce qui se réfère à débarrasser
déclaration que vous essayez de le préparer. Vous pouvez essayer de le préparer à l'extérieur de l'espagne avec le même
résultat:
mysql> préparer stmt de 'select id en p à partir de t1';
ERREUR 1327 (42000): variable non déclarée: p
Donc j'ai simplement utilisé la variable, voir ci-dessous:
OriginalL'auteur kaz
Vous avez eu beaucoup d'erreurs de syntaxe, je pense. C'est généralement de la façon dont j'écris mes procédures stockées et ils travaillent. Essayez cette mesure. Fondamentalement, il n'ya pas besoin pour vous de sélectionner le comte dans la variable temporaire si vous êtes juste de sélectionner à partir de cette variable temporaire dans le très à côté de l'instruction.
OriginalL'auteur Ray