Bestandteile des sql-query-strings aus Variablen zusammensetzen

_Tim_

Benutzer
Beiträge
5
Guten morgen,

ich suche nach einer Möglichkeit in mysql in stored Procedures in einer Abfrage Variablen zu verwenden.

Ziel ist es Abfragen in einer Tabelle zu speichern um dynamisch Gruppen von Mitarbeitern zu erstellen die den Kriterien in der Abfrage entsprechen.
Ich möchte nicht für jede Gruppe eine eigene Abfrage in den Code schreiben sondern (ähnlich wie in der Powershell) dynamische Gruppen erstellen können.


Bei meiner Recherche lande ich bei den Themen 'php' oder bei Abfragen wie 'select a from tbl where a = VARIABLE;'

Ich suche aber nach einer Möglichkeit Variablen als gesamte bedingung, oder lieber noch: als ganze abfrage zu übergeben:

Set VARIABLE = 'a=x';
Select a from tbl where VARIABLE;


oder so:

Set VARIABLE = 'a from tbl where a = x';
Select VARIABLE;




Ich habe es bisher folgendermaßen getestet:
------------------------------------------------------------------
DELIMITER $$

USE `personal_db_restore`$$

DROP PROCEDURE IF EXISTS `sp_selectÜbung`$$

CREATE DEFINER=`root`@`konz%` PROCEDURE `sp_selectÜbung`()
BEGIN


DECLARE varText VARCHAR(128);
DECLARE varAlias VARCHAR(128);
SET varText = 'testText';
SET varAlias = 'Spaltentitel';
SELECT varText AS varAlias;

END$$

DELIMITER ;

------------------------------------------------------------------
Das Ergebnis ist wie zu erwarten:

varAlias: testText

Ich hätte gern das da Spaltentitel: testText ausgegeben wird.

Bin für jeden Hinweis dankbar
Viele Grüße
Tim
 
Werbung:
Hallo,
nochmal vielen Dank für den Tipp mit dem Execute!

Für mein Vorhaben waren noch folgende Dinge nötig:
Das Prepare statement und die Erkenntnis das man im Prepare-statement nicht Abfragen zusammensetzen kann sondern man muss das zusammengesetzte statement als Variable übergeben.
Es darf übrigens keine Variable ohne @ davor sein (bisher habe ich Variablen über DECLARE initialisiert und das lief für die meisten Dinge auch ohne @).

Viele Grüße
Tim

So läuft es nun:
---------------------------------------------
DELIMITER $$

USE `personal_db_restore`$$

DROP PROCEDURE IF EXISTS `sp_selectÜbung`$$

CREATE DEFINER=`root`@`konz%` PROCEDURE `sp_selectÜbung`()
BEGIN

SET @varText = 'testText';
SET @varAlias = 'Spaltentitel';
SET @varSt = CONCAT('select ''', @varText ,''' as ', @varAlias);
PREPARE st FROM @varSt;
EXECUTE st;

END$$

DELIMITER ;

---------------------------------------------
 
Werbung:
Zurück
Oben