Ergebnis 1 bis 3 von 3

Thema: SELECT_anweisung mit Variable

  1. #1
    Chuqa ist offline Benutzer
    Registriert seit
    25.01.2006
    Beiträge
    39

    Standard SELECT_anweisung mit Variable

    Hallo,

    ich möchte in meiner SQL-Funktion eine SELECT-Anweisung mithilfe einer Variablen ausführen, die kurz vorher durch eine andere SELECT-Anweisung mit einem Wert belegt worden ist. Ich habe dazu folgendes geschrieben:
    Code:
    SELECT tablename INTO tab_name FROM tabledatasets WHERE id = table_id;
    SELECT zeit INTO start_interval FROM quote_ident(tab_name) ORDER BY zeit DESC;
    Nun kommt beim Ausführen der Funktion folgender Fehler:
    ERROR: column "zeit" does not exist
    SQL Status:42703
    Kontext:SQL statement "SELECT zeit FROM quote_ident( $1 ) ORDER BY zeit DESC"
    PL/pgSQL function "tabledataset_inserttodatatset_trigger" line 24 at select into variables
    Nun hatte ich probiert die 2. Anweisung abzuändern
    Code:
    EXECUTE ''SELECT zeit INTO '' || start_interval || '' FROM '' || quote_ident(tab_name) || '' ORDER BY zeit DESC'';
    Fehler:
    ERROR: cannot EXECUTE a null querystring
    SQL Status:22004
    Kontext:PL/pgSQL function "tabledataset_inserttodatatset_trigger" line 24 at execute statement
    Eine weitere Änderung zu
    Code:
    PERFORM ''SELECT zeit INTO '' || start_interval || '' FROM '' || quote_ident(tab_name) || '' ORDER BY zeit DESC'';
    brachte nun beim Ausführen zwar keinen Fehler mehr, allerdings wurde die Variable start_interval auch nicht mit einem Wert belegt. Ich hoffe mir kann jemand helfen, wie ich erfolgreich der Variable einen Wert aus der SQL-Abfrage zuordnen kann

    gruß chuqa

  2. #2
    akretschmer ist gerade online Super-Moderator
    Registriert seit
    29.10.2006
    Ort
    Dresden
    Beiträge
    5.472

    Standard

    Zitat Zitat von Chuqa Beitrag anzeigen
    Hallo,


    gruß chuqa

    nur kurz, hab nicht viel zeit grad:

    - um dynamisch erzeugte Befehle auszuführen, brauchst Du execute
    - um aus execute etwas in variablen zu bekommen, brauchst du execute ... into, was aber erst seit iirc 8.1 funktioniert
    - aufpassen bei strings, die evtl. NULL sein können, dann mit coalesce arbeiten. ich hab nicht genau geschaut, ob das bei dir der fall grad ist, nur als hinweis also


    Andreas
    --
    ads Das hatte dir akretschmer gestern schon gesagt und siehe da sobald du das machst, funktioniert es ;-)
    https://www.xing.com/profile/Andreas_Kretschmer7

  3. #3
    Chuqa ist offline Benutzer
    Registriert seit
    25.01.2006
    Beiträge
    39

    Standard

    Ah danke, hat schon gereicht, mit
    Code:
    EXECUTE ''SELECT zeit FROM '' || quote_ident(tab_name) || '' ORDER BY zeit DESC'' INTO start_interval;
    funktioniert es.

    gruß chuqa

Ähnliche Themen

  1. Variable Definieren
    Von trojannus im Forum SQL
    Antworten: 2
    Letzter Beitrag: 08.03.2012, 09:49
  2. variable für spaltennamen
    Von wuchermann im Forum Trigger und Funktionen
    Antworten: 8
    Letzter Beitrag: 14.05.2009, 15:25
  3. SQL-Wert in VB Variable eintragen
    Von AndreasBeginner im Forum Programmierung
    Antworten: 2
    Letzter Beitrag: 03.05.2009, 21:49
  4. Variable dynamisch auffüllen
    Von Kai-Behncke im Forum PL/pgSQL
    Antworten: 1
    Letzter Beitrag: 27.04.2009, 15:11
  5. Ergebnismenge in Variable packen
    Von kiaaap im Forum PL/pgSQL
    Antworten: 18
    Letzter Beitrag: 20.06.2007, 08:55

Berechtigungen

  • Neue Themen erstellen: Nein
  • Themen beantworten: Nein
  • Anhänge hochladen: Nein
  • Beiträge bearbeiten: Nein
  •  

Links: Tobias Bauer - IT- und Funkdienstleistungen   -   Bilderrahmen-kaufen.de - Der Onlineshop für Bilderrahmen & Fotorahmen   -   Funkforum