Heim >Datenbank >MySQL-Tutorial >Wie rufe ich Daten aus dynamisch angegebenen Tabellen in gespeicherten Prozeduren ab?

Wie rufe ich Daten aus dynamisch angegebenen Tabellen in gespeicherten Prozeduren ab?

Patricia Arquette
Patricia ArquetteOriginal
2024-11-05 22:50:03947Durchsuche

How to Retrieve Data from Dynamically Specified Tables in Stored Procedures?

Dynamische Tabellennamen in gespeicherten Prozedurfunktionen

Problemstellung:

Das Ziel ist Erstellen Sie eine gespeicherte Prozedurfunktion, die einen Wert aus einer Tabelle abruft, wobei der Tabellenname dynamisch als Parameter bereitgestellt wird. Versuche, die SQL-Anweisung innerhalb der Funktion dynamisch zu generieren, führen jedoch zu der Fehlermeldung „Dynamisches SQL ist nicht zulässig...“. Die Anforderung besteht darin, eine Methode zu finden, um diese Einschränkung zu überwinden und das gewünschte Ergebnis zu erzielen.

Lösung:

Während dynamisches SQL in gespeicherten Prozedurfunktionen nicht zulässig ist, ist dies der Fall Es ist möglich, vorbereitete Anweisungen zu verwenden, um SQL-Anweisungen dynamisch zu erstellen und auszuführen. Leider können vorbereitete Anweisungen nicht direkt in Funktionen verwendet werden.

Ein alternativer Ansatz besteht darin, eine gespeicherte Prozedur mit einem OUT-Parameter zu erstellen:

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>

Diese Prozedur akzeptiert die Eingabeparameter tableName und myId und Setzt den myName OUT-Parameter auf den abgerufenen Wert. Die Prozedur erstellt die SQL-Anweisung dynamisch und verwendet eine vorbereitete Anweisung zur Ausführung.

Um diese Prozedur zu verwenden, befolgen Sie diese Schritte:

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

Diese Lösung ermöglicht das dynamische Abrufen von Werten aus verschiedenen Tabellen innerhalb einer gespeicherten Prozedur.

Das obige ist der detaillierte Inhalt vonWie rufe ich Daten aus dynamisch angegebenen Tabellen in gespeicherten Prozeduren ab?. Für weitere Informationen folgen Sie bitte anderen verwandten Artikeln auf der PHP chinesischen Website!

Stellungnahme:
Der Inhalt dieses Artikels wird freiwillig von Internetnutzern beigesteuert und das Urheberrecht liegt beim ursprünglichen Autor. Diese Website übernimmt keine entsprechende rechtliche Verantwortung. Wenn Sie Inhalte finden, bei denen der Verdacht eines Plagiats oder einer Rechtsverletzung besteht, wenden Sie sich bitte an admin@php.cn