Information ausblenden
Willkommen im Forum für alle Datenbanken! Registriere Dich kostenlos und diskutiere über DBs wie Mysql, MariaDB, Oracle, Sql-Server, Postgres, Access uvm

Bestandteile des sql-query-strings aus Variablen zusammensetzen

Dieses Thema im Forum "MySQL und MariaDB" wurde erstellt von _Tim_, 22 März 2016.

  1. _Tim_

    _Tim_ Benutzer

    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
     
  2. akretschmer

    akretschmer Datenbank-Guru

    Dann suchst Du wohl EXECUTE.
     
  3. _Tim_

    _Tim_ Benutzer

    danke für den Tipp, schau ich mir gleich mal an!
     
  4. _Tim_

    _Tim_ Benutzer

    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 ;

    ---------------------------------------------
     
  5. akretschmer

    akretschmer Datenbank-Guru

    Na schau, nun helfe ich sogar MySQL-Usern...
     
  6. _Tim_

    _Tim_ Benutzer

    da kommst du drüber weg!
     
    akretschmer gefällt das.
Die Seite wird geladen...

Diese Seite empfehlen

  1. Diese Seite verwendet Cookies. Wenn du dich weiterhin auf dieser Seite aufhältst, akzeptierst du unseren Einsatz von Cookies.
    Information ausblenden