Maison > base de données > tutoriel mysql > le corps du texte

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

Mary-Kate Olsen
Libérer: 2024-11-07 04:20:03
original
1005 Les gens l'ont consulté

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>
Copier après la connexion

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;
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