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
Freigeben: 2024-11-05 22:50:03
Original
943 Leute haben es durchsucht

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>
Nach dem Login kopieren

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;
Nach dem Login kopieren

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!

Quelle:php.cn
Erklärung dieser Website
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
Neueste Artikel des Autors
Beliebte Tutorials
Mehr>
Neueste Downloads
Mehr>
Web-Effekte
Quellcode der Website
Website-Materialien
Frontend-Vorlage