Announcement

Collapse
No announcement yet.

Fehler beim Prozedur anlegen

Collapse
X
  • Filter
  • Time
  • Show
Clear All
new posts

  • 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
    Leider weiß ich nicht wo mein Fehler ist.
    Üblicherweise bekommt man Fehlermeldungen. Die sind manchmal hilfreich.

    Comment


    • #3
      Originally posted by deathdragon View Post
      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.

      Comment


      • #4
        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.

        Comment


        • #5
          Originally posted by deathdragon View Post
          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

          Comment


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

            Comment


            • #7
              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?

              Comment


              • #8
                Originally posted by deathdragon View Post
                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

                Comment

                Working...
                X