Maison >base de données >tutoriel mysql >Comment puis-je accéder à des tables nommées dynamiquement dans une fonction SQL ?

Comment puis-je accéder à des tables nommées dynamiquement dans une fonction SQL ?

Mary-Kate Olsen
Mary-Kate Olsenoriginal
2024-11-07 04:20:031036parcourir

How Can I Access Dynamically Named Tables Within a SQL Function?

Noms de table dynamiques dans la fonction de procédure stockée

En SQL, les fonctions sont immuables et ne peuvent pas modifier les données. Par conséquent, les instructions préparées ne peuvent pas être utilisées dans les fonctions, ce qui pose un défi lors de la tentative d'accès à des tables avec des noms dynamiques.

Pour surmonter ce problème, une procédure stockée peut être utilisée. Les procédures stockées peuvent utiliser des instructions préparées et des paramètres OUT pour renvoyer des valeurs.

Voici un exemple de procédure stockée qui peut récupérer un nom à partir d'une table spécifiée dynamiquement :

CREATE PROCEDURE getName
(IN tableName VARCHAR(50), IN myId INT(11), OUT myName VARCHAR(50))
BEGIN

  SET @GetName =
    CONCAT('SELECT name INTO @var1 FROM ', tableName, ' WHERE>

Pour utiliser la procédure , les paramètres IN sont définis avec le nom et l'ID de la table, tandis qu'un paramètre OUT est utilisé pour récupérer le nom.

SET @tableName = 'tbl';
SET @myId = 1005;
SET @name = NULL;
CALL getName(@tableName, @myId, @name);
SELECT @name;

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!

Déclaration:
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