2016-08-08 20 views
1

Ich habe die folgende gespeicherte Prozedur oder Funktion definiert in meiner Postgresql Datenbank:gespeicherte Prozedur Einfügen von Daten in Postgresql

CREATE OR REPLACE FUNCTION insert_val(int) 
    $body$ 
    BEGIN 
     FOR i IN 1..10 LOOP 
     insert into test (val) 
     values($23); 
     END LOOP; 
    END; 
    $body$ Language 'plpgsql' VOLATILE; 

Ich möchte nur innerhalb einer Schleife diese Daten einzufügen, aber ich bekomme immer diese Fehlermeldung:

Syntaxfehler bei »begin«

Vielleicht habe ich etwas in meiner Funktion verpasst?

Antwort

1

Ich verstehe nicht, die Fehlermeldung, da es nicht auf Englisch, aber ich kann ein paar Probleme in Ihrem Code

CREATE OR REPLACE FUNCTION insert_val(IN val int) RETURNS VOID AS 
$body$ 
    BEGIN 
     FOR i IN 1..10 LOOP 
     insert into test (val) 
     values($23); 
     END LOOP; 
    END; 
    $body$ Language 'plpgsql' VOLATILE; 

Sie fehlten den Rückgabetyp sehen, die Sie AS fehlten und Sie haben vergessen, das Argument in in nennen.

+0

Hallo THX für Ihre Antwort, Sie hatten Recht, ich Nebel die Rückkehr Void As. Ich habe die Funktion ausgeführt und dieses Mal habe ich keine Fehler bekommen, aber auch keine Zeilen im Tabellen-Test waren betroffen, ich meine, habe nichts eingefügt. Können Sie PLS mir helfen? PS: Der Fehler, den ich bekommen habe, bedeutet nur Syntaxfehler in $ body $, sorry für die nicht Übersetzung –

+0

und es wird nicht in einer Zeile in der Tabelle erstellt werden, bis Sie es anrufen! 'Wählen Sie zum Beispiel insert_val (1)'! – e4c5

+0

Danke für den Hinweis –

1

Sie haben vergessen

RETURNS void AS 

zwischen der ersten und der zweiten Zeile.

Aber das wird nur für die Syntax sorgen. Die $23 ist eindeutig falsch, da es keine 23 Funktionsargumente gibt. Meinst Du $1?

+0

Hallo, ja ich habe bereits die Werte hinzugefügt wie: Werte ($ 1, $ 2, $ 3, $ 4, $ 5, $ 6, $ 7, $ 8, $ 9, $ 10). Ich habe bereits den Syntaxfehler von RETURNS void AS behoben, aber ich bekomme immer noch nicht das richtige Ergebnis –

+0

Erklären Sie Ihr Problem. –