0

私はの初心者postgresqlで、最初は で関数を書きたいと思っていますpostgresql。から例をコピーして貼り付けましたpgsqlが、エラーが発生しました。これは私のコードです:

CREATE FUNCTION somefunc() RETURNS integer AS $$
<< outerblock >>
DECLARE
    quantity integer := 30;
BEGIN
    RAISE NOTICE 'Quantity here is %', quantity;  -- Prints 30
    quantity := 50;
    --
    -- Create a subblock
    --
    DECLARE
        quantity integer := 80;
    BEGIN
        RAISE NOTICE 'Quantity here is %', quantity;  -- Prints 80
        RAISE NOTICE 'Outer quantity here is %', outerblock.quantity;  -- Prints 50
    END;

    RAISE NOTICE 'Quantity here is %', quantity;  -- Prints 50

    RETURN quantity;
END;
$$ LANGUAGE plpgsql;

そして私のエラー:

An error has occured
Fehler:Syntaxfehler bei "CREATE"
Line2:$Body$CREATE FUNCTION somefunc () RETURNS integer AS $$

編集: コード セクションに上記のコードを記述しましたが、psql は SQL セクションに既に同じコードを生成し、次の行が追加されています。

$BODY$CREATE FUNCTION somefunc() RETURNS integer AS $$

この行 ここに画像の説明を入力 を削除すると、この行でエラーが発生しました。次の行でこのエラーが発生しました。 ここに画像の説明を入力

4

1 に答える 1

0

私の推測では、GUI を使用して関数を生成していると思います。この場合、GUI には関数名やパラメーターなどのフィールドがあり、入力した (または無視した) 可能性があります。したがって、コードを入力しているのは関数の本体領域であり、GUI はすべてのボイラープレート情報を求めるプロンプトを表示しています。このすべてが当てはまる場合は、完全な関数作成コードではなく、そのフィールドに関数本体コードのみを含める必要があります (GUI への入力に基づいてアプリケーションが生成するため)。

または、アプリケーションで任意の SQL を実行できる場合 (確かにそうです)、GUI を使用する代わりに任意の SQL として CREATE を実行できます。

于 2013-01-07T16:15:33.583 に答える