Heim > Datenbank > MySQL-Tutorial > Hauptteil

Wie frage ich dynamisch referenzierte Tabellen in gespeicherten Prozedurfunktionen ab?

Susan Sarandon
Freigeben: 2024-11-06 09:28:02
Original
846 Leute haben es durchsucht

How to Query Dynamically Referenced Tables in Stored Procedure Functions?

Dynamisches Referenzieren von Tabellen in Funktionen gespeicherter Prozeduren

Beim Erstellen gespeicherter Prozedurfunktionen müssen Sie möglicherweise den Namen der Tabelle dynamisch angeben abfragen. Diese Herausforderung entsteht, weil Variablen aufgrund von Einschränkungen bei dynamischem SQL nicht direkt in der FROM-Klausel einer SQL-Anweisung innerhalb einer Funktion verwendet werden können.

Vorbereitete Anweisungen als Workaround

Eine Problemumgehung besteht darin, vorbereitete Anweisungen zu verwenden. In gespeicherten Prozeduren können vorbereitete Anweisungen zum Erstellen dynamischer SQL-Abfragen verwendet werden. Dieser Ansatz eignet sich jedoch nicht für Funktionen, da sie die Verwendung vorbereiteter Anweisungen verbieten.

Gespeicherte Prozeduren mit OUT-Parametern

Um diese Einschränkung zu beheben, wird eine alternative Methode verwendet Erstellen einer gespeicherten Prozedur mit einem OUT-Parameter, der den gewünschten Wert zurückgibt. Hier ist ein Beispiel für eine solche gespeicherte Prozedur:

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

Beispielverwendung

Um diese gespeicherte Prozedur zu verwenden, würden Sie die Variablenwerte wie folgt angeben:

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

Mit dieser Technik können Sie dynamische Tabellennamen innerhalb gespeicherter Prozedurfunktionen effektiv abfragen, indem Sie gespeicherte Prozeduren mit OUT-Parametern nutzen.

Das obige ist der detaillierte Inhalt vonWie frage ich dynamisch referenzierte Tabellen in gespeicherten Prozedurfunktionen 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