Comment créer et utiliser dynamiquement SQL dans une procédure stockée MySQL?Comment avoir du SQL dynamique dans une procédure stockée MySQL
Répondre
Je ne crois pas que MySQL supporte SQL dynamique. Vous pouvez faire des déclarations "préparées" qui sont similaires mais différentes.
Voici un exemple:
mysql> PREPARE stmt FROM
-> 'select count(*)
-> from information_schema.schemata
-> where schema_name = ? or schema_name = ?'
;
Query OK, 0 rows affected (0.00 sec)
Statement prepared
mysql> EXECUTE stmt
-> USING @schema1,@schema2
+----------+
| count(*) |
+----------+
| 2 |
+----------+
1 row in set (0.00 sec)
mysql> DEALLOCATE PREPARE stmt;
Les déclarations préparées sont souvent utilisés pour voir un plan d'exécution pour une requête donnée. Comme ils sont exécutés avec la commande , exécutez la commande et que le sql peut être affecté à une variable, vous pouvez utiliser le même comportement que le SQL dynamique.
est ici un bon link à ce sujet:
Ne pas oublier de désaffecter le stmt
en utilisant la dernière ligne!
Bonne chance!
Après 5.0.13, dans les procédures stockées, vous pouvez utiliser SQL dynamique:
delimiter //
CREATE PROCEDURE dynamic(IN tbl CHAR(64), IN col CHAR(64))
BEGIN
SET @s = CONCAT('SELECT ',col,' FROM ',tbl);
PREPARE stmt FROM @s;
EXECUTE stmt;
DEALLOCATE PREPARE stmt;
END
//
delimiter ;
SQL dynamique ne fonctionne pas dans les fonctions ou les déclencheurs. Voir the MySQL documentation pour plus d'utilisations.
Vous pouvez passer à travers dehors de l'instruction dynamique à l'aide de variables définies par l'utilisateur
Server version: 5.6.25-log MySQL Community Server (GPL)
mysql> PREPARE stmt FROM 'select "AAAA" into @a';
Query OK, 0 rows affected (0.01 sec)
Statement prepared
mysql> EXECUTE stmt;
Query OK, 1 row affected (0.01 sec)
DEALLOCATE prepare stmt;
Query OK, 0 rows affected (0.01 sec)
mysql> select @a;
+------+
| @a |
+------+
|AAAA |
+------+
1 row in set (0.01 sec)
- 1. dynamique procédure stockée dans Sql Server 2005
- 2. Comment simuler une impression dans une procédure stockée MySQL
- 3. mysql-procédure stockée:
- 4. paramètres de procédure stockée MySQL
- 5. éditeur de procédure stockée mysql
- 6. convertir la procédure de MySQL stockée MSSQL
- 7. Réplication MySQL Trigger & Procédure stockée
- 8. Comment vérifier si une procédure stockée existe dans SQL Azure?
- 9. Procédure stockée MySQL vs sélections multiples
- 10. MySQL: Comment obtenir les résultats d'une procédure stockée dans une fonction stockée?
- 11. Comment créer une procédure stockée MySQL à partir de PHP?
- 12. Passer un tableau dans une procédure stockée
- 13. Mysql trop de boucles while dans une procédure stockée
- 14. Travail SQL et procédure stockée
- 15. Comment appeler une procédure stockée depuis iReport?
- 16. Dans une procédure stockée, comment puis-je obtenir le nom du sproc dans SQL Server 2005?
- 17. Procédure Mysql Call Stored d'une autre procédure stockée
- 18. TSQL ajout dynamique de colonnes dans la procédure stockée
- 19. MS SQL procédure stockée problème
- 20. SQL Server: récupérer l'ID auto-incrémenté dans une procédure stockée?
- 21. Une procédure stockée SQL dynamique est-elle une mauvaise chose pour beaucoup d'enregistrements?
- 22. Comment ajouter une procédure stockée Try/Catch to SQL
- 23. Exécution d'un FuncView dans une procédure stockée
- 24. Procédure stockée MySQL vs requête complexe
- 25. Procédure stockée dans une instruction d'insertion
- 26. Comment transmettre des collections de données dans une procédure stockée T-SQL dans SQL Server 2003
- 27. Oracle - Comment avoir un paramètre de curseur out ref dans une procédure stockée?
- 28. Problème de procédure stockée SQL Server appelant une autre procédure stockée
- 29. Exécuter une procédure stockée dans une vue?
- 30. S'agit-il d'une procédure stockée?
il ne fonctionne pas lorsque le '?' Est à la place du nom de la table –
Essayez-vous cette via console mysql? ou en utilisant une autre méthode, si vous utilisez ceci dans le code, votre fournisseur devra le supporter. –
Apparemment, ils étudient [EXECUTE IMMEDIATE] (http://dev.mysql.com/worklog/task/?id=2793) pour les futures versions. –