Willkommen bei Entwickler-Forum.
Ergebnis 1 bis 8 von 8
  1. #1
    Aufsteiger
    Registriert seit
    23.05.2013
    Beiträge
    68

    Standard Fehler beim Prozedur anlegen

    So nun muss ich mich also doch noch mehr mit postgresql beschäftigen

    Von daher habe ich diese Prozedur geschrieben:

    CREATE OR REPLACE FUNCTION timeback (get_timeback numeric(5,2))
    RETURNS TABLE(
    wert2_neu char,
    Zahl Numeric(5,2)

    )

    AS $$
    BEGIN

    RETURN QUERY
    select "wert2","Wert" from "Zeiten" where "Wert" = get_timeback;
    END; $$

    LANGUAGE 'plpgsql';

    Leider weiß ich nicht wo mein Fehler ist.

    Die Tabelle Zeiten sie wie folgt aus:

    CREATE TABLE public."Zeiten"
    (
    "Wert" numeric(5, 2),
    "Timestamp_Messung" timestamp without time zone,
    wert2 character(10) COLLATE pg_catalog."default"
    )

    Was mach ich falsch? Ohne Wert 2 geht es natürlich.

  2. #2
    Stammgast
    Registriert seit
    26.02.2003
    Beiträge
    4.775

    Standard

    Leider weiß ich nicht wo mein Fehler ist.
    Üblicherweise bekommt man Fehlermeldungen. Die sind manchmal hilfreich.

  3. #3
    Stammgast
    Registriert seit
    27.08.2007
    Beiträge
    562

    Standard

    Zitat Zitat von deathdragon Beitrag anzeigen
    Leider weiß ich nicht wo mein Fehler ist.
    Hallo,

    leider weiß ich nicht wo das Problem ist. Syntaxfehler? kein Ergebnis? falsches Ergebnis?

    Ich Orakle mal (man beachte das Wortspiel im DB Forum):

    Wert2_Neu char soll Wert2 Character(10) aufnehmen.

    Ich habe noch nichts mit PostgreSQL zu tun gehabt, aber das würde bei einigen anderen Datenbanken zu Problemen führen.

    Viele Grüße
    Tino


    Edit:
    @Ralf Jansen --> CHECK!
    Ich habs gleich!
    ... sagte der Programmierer.

  4. #4
    Aufsteiger
    Registriert seit
    23.05.2013
    Beiträge
    68

    Standard

    Die Fehlermeldung hat es in sich! Not connected to the server or the connection to the server has been closed.

    Verbindung steht aber da Select geht.

  5. #5
    Stammgast
    Registriert seit
    24.10.2011
    Beiträge
    1.193

    Standard

    Zitat Zitat von deathdragon Beitrag anzeigen
    Die Fehlermeldung hat es in sich! Not connected to the server or the connection to the server has been closed.

    Verbindung steht aber da Select geht.
    vielleicht eher: .. steht aber das Select geht NICHT?

    Mal eine blöde Frage, versuchst Du die Daten aus dem anderen Thread abzufragen?
    Wenn die Daten korrupt sind, kommst Du so wahrscheinlich nicht weiter.
    Der Einsatz von stored procedures, functions oder anonymous blocks bringt es da auch nicht.

    Nimm die Console, psql und schreib ein Select Statement da rein. Im Zweifel musst du zur Einschränkung der Datenmende andere Spalten nehmen. Ausgabe notfalls in Datei umleiten und analysieren.

    Oder gleich einen Dump der Tabelle machen und den analysieren.
    Gruß, defo

  6. #6
    Aufsteiger
    Registriert seit
    23.05.2013
    Beiträge
    68

    Standard

    nein der andere Thread ist separat und hat hiermit überhaupt nichts zu tun.

  7. #7
    Aufsteiger
    Registriert seit
    23.05.2013
    Beiträge
    68

    Standard

    So Jungs habe dem Fehler gefunden! es liegt am pgAdmin. Habe das pgAdmin aus Verzweiflung neu installiert und siehe da ich habe Fehlermeldungen und meine Funktion läuft!
    Jetzt hätte ich aber noch ein anliegen:

    CREATE OR REPLACE FUNCTION timeback2 (para_year int, para_month int)

    RETURNS Table(

    timestamp_test Timestamp,
    test Integer,
    Zahl Numeric(5,2)
    )

    AS $$

    BEGIN
    RETURN QUERY
    select "Timestamp_Messung","Zahl","Wert" from "Zeiten" where EXTRACT(YEAR FROM "Timestamp_Messung")= para_year and EXTRACT(MONTH FROM "Timestamp_Messung") = para_month;

    END; $$

    LANGUAGE 'plpgsql';

    Diese Funktion kann ich anlegen und auch nutzen.

    Das Ergebnis ist aber nun in einer Spalte und nicht in mehreren

    Anstatt der Ausgabe:

    ("2017-01-03 08:59:28.966",,306.00)

    Hätte ich gern

    2017-01-03 08:59:28.966 | | 306.00

    wie kann ich das bewerkstelligen?

  8. #8
    Stammgast
    Registriert seit
    24.10.2011
    Beiträge
    1.193

    Standard

    Zitat Zitat von deathdragon Beitrag anzeigen
    Anstatt der Ausgabe:

    ("2017-01-03 08:59:28.966",,306.00)

    Hätte ich gern

    2017-01-03 08:59:28.966 | | 306.00

    wie kann ich das bewerkstelligen?
    z.B.
    Select spaltea, spalteb from imeback2 (1984, 1)

    Es gibt noch mehr Möglichkeiten. Siehe Doku.
    Gruß, defo

 

 

Lesezeichen

Berechtigungen

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