Ergebnis 1 bis 6 von 6

Thema: Prepared Statement in Stored Procedure

  1. #1
    Yufiel ist offline Neuer Benutzer
    Registriert seit
    25.05.2009
    Beiträge
    14

    Standard Prepared Statement in Stored Procedure

    Hallo,

    ich habe das Problem, ein Prepared Statement nicht in einer Stored Procedure ausführen zu können.

    Mein Code sieht folgendermassen aus:

    Code:
    ...
    
    PREPARE __insertstatement__ (integer, varchar, varchar) AS
        INSERT INTO analysis.test1 ("id", "value", "kling") VALUES ($1, $2, $3);
                
     WHILE t_min <= t_max LOOP
       ....
      FOR result IN SELECT ...
    
          EXECUTE __insertstatement__ (1::integer, 'blubb'::varchar,    
                        'klingwlin'::varchar);
      END LOOP;
    ....
    END LOOP;
    
    ....
    Immer wenn ich die Stored Procedure ausführen möchte, erhalte ich folgende Fehlermeldung:

    Code:
    FEHLER:  Funktion __insertstatement__(integer, character varying, character varying) existiert nicht
    LINE 1: SELECT  __insertstatement__ (1, 'blubb'::varchar, 'klingwlin...
                    ^
    HINT:  Keine Funktion stimmt mit dem angegebenen Namen und den Argumenttypen überein. Sie müssen möglicherweise ausdrückliche Typumwandlungen hinzufügen.
    QUERY:  SELECT  __insertstatement__ (1, 'blubb'::varchar, 'klingwlin'::varchar)
    CONTEXT:  PL/pgSQL function "create_site_stats" line 268 at EXECUTE statement
    
    ********** Error **********
    
    FEHLER: Funktion __insertstatement__(integer, character varying, character varying) existiert nicht
    SQL state: 42883
    Hint: Keine Funktion stimmt mit dem angegebenen Namen und den Argumenttypen überein. Sie müssen möglicherweise ausdrückliche Typumwandlungen hinzufügen.
    Context: PL/pgSQL function "create_site_stats" line 268 at EXECUTE statement
    Die Argumenttypen sind ordentlich gecastet und der Funktionsnahme ist auch beim Aufruf der Gleiche wie bei der Erstellung des Prepared Statement.

    Hat vielleicht irgendjemand eine Idee, was da falsch läuft?

    Vielen Dank

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

    Standard

    Zitat Zitat von Yufiel Beitrag anzeigen
    Hallo,

    ich habe das Problem, ein Prepared Statement nicht in einer Stored Procedure ausführen zu können.

    Mein Code sieht folgendermassen aus:


    Hat vielleicht irgendjemand eine Idee, was da falsch läuft?

    Vielen Dank

    Execute innerhalb einer plpgsql-Procedure ist was komplett anderes als das SQL-Execute.

    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
    Yufiel ist offline Neuer Benutzer
    Registriert seit
    25.05.2009
    Beiträge
    14

    Standard wie ausführen?

    Und wie kann ich dann das Prepared Statement in einer Stored Procedure ausführen?

  4. #4
    ads
    ads ist offline Super-Moderator
    Registriert seit
    08.02.2006
    Ort
    MD
    Beiträge
    4.056

    Standard

    Einfach den Code plain in die Funktion schreiben, das ist dann schon ein Prepared Statement.
    Xandrian: Kurz gesagt: Du hast ein falsches Konzept und willst nicht auf ads hören

    Jetzt NEU: PostgreSQL - Datenbankpraxis für Anwender, Administratoren und Entwickler

    PostgreSQL Service & Support

  5. #5
    Yufiel ist offline Neuer Benutzer
    Registriert seit
    25.05.2009
    Beiträge
    14

    Standard ???

    Also...bitte einmal zur Erklärung:

    (1) Postgres wird doch nicht ein einfaches INSERT Statement selbständig als Prepared Statenent behandeln, oder? Um ein Prepared Statement nutzen zu können, muss man es doch erst erstellen, so dass das System die Checks nur einmal ausführt.

    (2) Wenn ich nicht den EXECUTE Befehl nutzen kann, um das Prepared Statement im Body der Stored Procedure auszuführen, wie kann ich es denn dann aufrufen.

    Vielen Dank für weitere Antworten

  6. #6
    ads
    ads ist offline Super-Moderator
    Registriert seit
    08.02.2006
    Ort
    MD
    Beiträge
    4.056

    Standard

    Zitat Zitat von Yufiel Beitrag anzeigen
    (1) Postgres wird doch nicht ein einfaches INSERT Statement selbständig als Prepared Statenent behandeln, oder? Um ein Prepared Statement nutzen zu können, muss man es doch erst erstellen, so dass das System die Checks nur einmal ausführt.
    Alle SQL-Anweisungen im Quelltext der Funktion sind automatisch Prepared Queries.


    (2) Wenn ich nicht den EXECUTE Befehl nutzen kann, um das Prepared Statement im Body der Stored Procedure auszuführen, wie kann ich es denn dann aufrufen.
    WIe gesagt, einfach Anweisung in den Quelltext schreiben.
    Xandrian: Kurz gesagt: Du hast ein falsches Konzept und willst nicht auf ads hören

    Jetzt NEU: PostgreSQL - Datenbankpraxis für Anwender, Administratoren und Entwickler

    PostgreSQL Service & Support

Ähnliche Themen

  1. Antworten: 3
    Letzter Beitrag: 07.10.2010, 17:52
  2. Stored Procedure in C: Problem mit System Call open/ write
    Von Tim im Forum Prozedurale Sprachen
    Antworten: 7
    Letzter Beitrag: 31.08.2010, 22:37
  3. pl/java Procedure calls are not yet implemented?
    Von THILL im Forum Programmierung
    Antworten: 0
    Letzter Beitrag: 01.05.2010, 12:51
  4. Frage java + PG & prepared statements ..
    Von symbiont im Forum Programmierung
    Antworten: 2
    Letzter Beitrag: 10.08.2008, 12:24
  5. kleines Problem mit Prepared Statements
    Von furianer im Forum Programmierung
    Antworten: 6
    Letzter Beitrag: 29.07.2008, 09:12

Stichworte

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