Ergebnis 1 bis 3 von 3

Thema: Spaltenweise Rückgabe einer Funktion bzw. Elemente eines Record auswählen

  1. #1
    Ciatronical ist offline Neuer Benutzer
    Registriert seit
    21.08.2010
    Beiträge
    29

    Standard Spaltenweise Rückgabe einer Funktion bzw. Elemente eines Record auswählen

    Hallo,
    meine Funktion gibt drei Werte zurück.
    Code:
    CREATE OR REPLACE FUNCTION tst (text)
        RETURNS record AS $$
    DECLARE
        result record;
     BEGIN
       SELECT INTO result 5 AS id, 'testname' AS name, 'C' AS typ;
    return result;
    END; $$ LANGUAGE 'plpgsql'; 
    SELECT tst('');
    Leider stehen alle drei Werte in einer Spalte

    tst
    ----------------
    (5,testname,C)

    Ich benötige jeden Wert in einer Spalte. Etwa so

    Code:
    SELECT 5 AS id, 'testname' AS name, 'C' AS typ;
    id | name | typ
    ----+----------+-----
    5 | testname | C

    Ich habe schon versucht statt des Records eine Tabelle zurückzugeben - kein Erfolg.
    Eine Unterabfrage brachte lediglich Syntaxfehler.
    Eine Antwort würde mich sehr freuen..
    VG Ronny

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

    Standard

    Zitat Zitat von Ciatronical Beitrag anzeigen
    Hallo,
    meine Funktion gibt drei Werte zurück.
    Code:
    CREATE OR REPLACE FUNCTION tst (text)
        RETURNS record AS $$
    DECLARE
        result record;
     BEGIN
       SELECT INTO result 5 AS id, 'testname' AS name, 'C' AS typ;
    return result;
    END; $$ LANGUAGE 'plpgsql'; 
    SELECT tst('');
    Leider stehen alle drei Werte in einer Spalte

    tst
    ----------------
    (5,testname,C)

    Ich benötige jeden Wert in einer Spalte. Etwa so

    Code:
    SELECT 5 AS id, 'testname' AS name, 'C' AS typ;
    id | name | typ
    ----+----------+-----
    5 | testname | C

    Ich habe schon versucht statt des Records eine Tabelle zurückzugeben - kein Erfolg.
    Eine Unterabfrage brachte lediglich Syntaxfehler.
    Eine Antwort würde mich sehr freuen..
    VG Ronny
    Code:
    test=# create or replace function bla() returns record as $$ declare r record; begin select into r 1 as a, 3 as b; return  r; end; $$language plpgsql;
    CREATE FUNCTION
    Zeit: 0,388 ms
    test=*# select * from bla() as (a int, b int);
     a | b
    ---+---
     1 | 3
    (1 Zeile)
    So vielleicht?


    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
    Ciatronical ist offline Neuer Benutzer
    Registriert seit
    21.08.2010
    Beiträge
    29

    Standard

    Ja genau so! Das wars.
    Vielen Dank aus den Märkischen Oderland.

Ähnliche Themen

  1. Elemente eines Record selektieren
    Von Ciatronical im Forum SQL
    Antworten: 0
    Letzter Beitrag: 29.04.2011, 07:04
  2. Antworten: 0
    Letzter Beitrag: 19.04.2011, 03:45
  3. Antworten: 1
    Letzter Beitrag: 14.01.2011, 12:01
  4. Frage id/record eines inserts
    Von traxanos im Forum PL/pgSQL
    Antworten: 3
    Letzter Beitrag: 17.06.2009, 10:50
  5. Problem mit Rückgabe-Records einer Funktion
    Von Gisman im Forum PostGIS
    Antworten: 7
    Letzter Beitrag: 17.02.2009, 14:35

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