Maison > base de données > tutoriel mysql > Comment puis-je utiliser Dynamic SQL dans les procédures stockées MySQL ?

Comment puis-je utiliser Dynamic SQL dans les procédures stockées MySQL ?

Mary-Kate Olsen
Libérer: 2024-12-21 17:50:09
original
528 Les gens l'ont consulté

How Can I Use Dynamic SQL in MySQL Stored Procedures?

Utilisation de SQL dynamique dans les procédures stockées MySQL

Dans les versions MySQL 5.0.13 et ultérieures, le SQL dynamique peut être implémenté dans les procédures stockées.

Création d'instructions SQL dynamiques :

Pour créer des instructions SQL dynamiques, la fonction CONCAT() est utilisée pour concaténer des chaînes et créer dynamiquement des instructions SQL. Voici un exemple :

SET @s = CONCAT('SELECT ',col,' FROM ',tbl );
Copier après la connexion

Dans l'exemple ci-dessus, @s contiendrait l'instruction SQL dynamique :

SELECT col FROM tbl
Copier après la connexion

Préparation et exécution des instructions dynamiques :

Une fois l'instruction SQL dynamique construite, elle doit être préparée et exécuté :

PREPARE stmt FROM @s;
EXECUTE stmt;
Copier après la connexion

Désallocation des instructions préparées :

Après l'exécution, l'instruction préparée doit être désallouée pour libérer les ressources :

DEALLOCATE PREPARE stmt;
Copier après la connexion

Limitations :

Dynamic SQL est pris en charge dans les procédures stockées, mais pas dans fonctions ou déclencheurs.

Exemple :

La procédure stockée suivante illustre le 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 ;
Copier après la connexion

Ce qui précède est le contenu détaillé de. pour plus d'informations, suivez d'autres articles connexes sur le site Web de PHP en chinois!

source:php.cn
Déclaration de ce site Web
Le contenu de cet article est volontairement contribué par les internautes et les droits d'auteur appartiennent à l'auteur original. Ce site n'assume aucune responsabilité légale correspondante. Si vous trouvez un contenu suspecté de plagiat ou de contrefaçon, veuillez contacter admin@php.cn
Derniers articles par auteur
Tutoriels populaires
Plus>
Derniers téléchargements
Plus>
effets Web
Code source du site Web
Matériel du site Web
Modèle frontal