Ergebnis 1 bis 4 von 4

Thema: plsh set zurückgeben

  1. #1
    Pittiplatsch ist offline Neuer Benutzer
    Registriert seit
    05.05.2007
    Ort
    Leipzig
    Beiträge
    10

    Standard plsh set zurückgeben

    Kann man aus einer Funktion in plsh ein set zurückgeben?
    Folgendes habe ich versucht:

    Code:
    postgres@postgresql ~ $ echo 'abc' >> test.txt
    postgres@postgresql ~ $ echo 'efg'>> test.txt
    Code:
    CREATE OR REPLACE FUNCTION shtest()
    RETURNS setof text AS
    $BODY$
    #!/bin/sh
    
    cd /var/lib/postgresql
    cat test.txt
    exit 0
    
    $BODY$
    LANGUAGE 'plsh' VOLATILE;
    Code:
    db=# select * from shtest();
    
     shtest
    --------
     abc
     efg
    (1 Zeile)
    Sieht zunächst ganz gut aus, ist aber nur eine Zeile.
    Oder anders:
    Code:
    db=# create table test (s1 text);
    CREATE TABLE
    db=# insert into test select * from shtest();
    INSERT 0 1
    db=# select * from test;
     s1
    -----
     abc
     efg
    (1 Zeile)
    Ich hätte aber gern eine Tabellenzeile pro Dateizeile.

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

    Standard

    Zitat Zitat von Pittiplatsch Beitrag anzeigen
    Kann man aus einer Funktion in plsh ein set zurückgeben?
    Ich hätte aber gern eine Tabellenzeile pro Dateizeile.
    Vermutlich nicht, es nimmt das, was die Shell rückliefert, als einen Antwort-Text auf.

    Aber Dir kann geholfen werden: zerteile den Text an den Zeilenenden, diese URL hier könnte Dir hilfreich sein:

    http://archives.postgresql.org/pgsql...2/msg00080.php



    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
    Pittiplatsch ist offline Neuer Benutzer
    Registriert seit
    05.05.2007
    Ort
    Leipzig
    Beiträge
    10

    Standard

    Coole Sache das, danke.

    Nun noch eine Frage:
    Wie kann ich jetzt die Rückgabe von shtest() an Parameter 1 von split_to_row(text,text) übergeben ohne es in eine weitere Prozedur zu packen?

    Ich komme ja von MSSQL und da deklariert man am Anfang eines Scripes oder Batches ein paar Variablen, über welche man dann die Werte übergibt oder auch verändert. Aber in Postgres kann man Variablen wohl nur in Funktionen verwenden.

    Mit dem Umschreiben einiger Funktionen von MSSQL nach Postgres bin ich schon recht gut vorwärts gekommen. Aber was reine Scripte betrifft (welche ich recht häufig für Administration, Reporting usw. benutze), da habe ich generell noch das Problem wie man die Ergebnisse eines Schrittes in an den nächsten übergibt. Vielleicht könnt ihr mir hier mal auf den Sprung helfen.

  4. #4
    akretschmer ist offline Super-Moderator
    Registriert seit
    29.10.2006
    Ort
    Nähe Dresden
    Beiträge
    5.337

    Standard

    Zitat Zitat von Pittiplatsch Beitrag anzeigen
    Coole Sache das, danke.

    Nun noch eine Frage:
    Wie kann ich jetzt die Rückgabe von shtest() an Parameter 1 von split_to_row(text,text) übergeben ohne es in eine weitere Prozedur zu packen?
    ungetestet:

    select split_to_row(shtext(), text);

    einfach einsetzen...


    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

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