2016-08-08 6 views
1

にデータを挿入するために、私持っている私のPostgreSQLデータベースに定義された次のストアド・プロシージャまたは関数:ストアドプロシージャは、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; 

私はちょうどループの内部で、このデータを挿入したいが、私はいつもこのエラーが発生します。

Syntaxfehler bei »begin«

多分私の機能で何かを逃したのでしょうか?

答えて

1

それは英語ではありませんので、私はエラーメッセージを理解していないが、私はあなたのコード内のいくつかの問題

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; 

あなたは戻り値の型を欠落していたを見ることができ、あなたはASを欠落していた、あなたは忘れてしまいましたin引数に名前を付ける。

+0

あなたの答えはTHXです、あなたは正しいと思います。私はこの関数を実行し、今回は何のエラーもなかっただけでなく、テーブルテストの行が影響を受けていない、私は何も挿入していないことを意味します。あなたは私を助けることができますか? P.S:私が得たエラーは、$ body $の構文エラーを意味します。翻訳しないとごめんなさい。 –

+0

あなたがそれを呼び出すまで、行がテーブルに作成されることはありません!例えば ​​'insert_val(1)'を選択してください! – e4c5

+0

アドバイスありがとう –

1

あなたは第一および第二の線との間

RETURNS void AS 

を忘れてしまいました。

しかし、これは構文の世話をします。 $23は明らかに間違っています。なぜなら、23個の関数引数がないからです。 $1を意味しましたか?

+0

こんにちは、私はすでに値($ 1、$ 2、$ 3、$ 4、$ 5、$ 6、$ 7、$ 8、$ 9、$ 10)のように挿入する値を追加しました。 RETURNS void ASの構文エラーを修正しましたが、私はまだ正しい結果を得ていません –

+0

問題を説明してください。 –

関連する問題