8

私はPostgreSQLを初めて使用し、PGAdminのクエリツールを使用しています。変数を使用するpgsqlクエリを実行しようとしていますが、構文が正しくないようです。

構文エラーが発生するクエリの例を次に示します。

DECLARE
  num INTEGER;

BEGIN

  num := 3;
  PRINT num;

END;

更新:
わかりました、説明させてください。私はSQLサーバーのバックグラウンドを持っています。管理スタジオでは、クエリウィンドウを開いて、(T)-SQLクエリを試すことができます。

たとえば、次のように書くことができます。

DECLARE @num INT
SET @num = 3
SELECT @num

私はこれがばかげた例であることを知っていますが、私は変数を宣言してそれを使って何かをしようとしているだけです。PL/PGSQLに慣れようとしています。


もう一度更新し
てください:それはまた私です。以下のスクリプトを試していますが、「[ERROR] 7.0-2:構文エラー、予期しない文字」が表示されます。これはPGAdminで機能することを意味しますか?

DECLARE
  num INTEGER;

BEGIN

  num := 3;
  RAISE NOTICE '%', num;

END;
4

5 に答える 5

12

do ステートメントを使用できます。例えば:

do $$
declare 
  num integer := 10;
begin

    RAISE INFO 'VARIABLE: %', num;

end;
$$language plpgsql;

pgadmin を使用する場合は、ここで説明されているように、[pdScript を実行] の代わりに [EXECUTE QUERY] ボタンを使用する必要があります。

http://postgresql.1045698.n5.nabble.com/PgAmin3-Anonymous-code-block-can-t-be-executed-by-pressing-quot-Execute-PG-script-quot-button-td5771073.html

do ステートメントのドキュメントは次のとおりです。

http://www.postgresql.org/docs/9.3/static/sql-do.html

于 2014-01-17T11:02:55.970 に答える
5

他の人が言うことを言い換えて「具体化」するだけです。PostgreSQLにはインラインプロシージャはありません。PRINT文もありません。必ず:

CREATE OR REPLACE FUNCTION test() RETURNS void AS $$
DECLARE
  num INTEGER;

BEGIN

  num := 3;
  RAISE NOTICE '%', num;

END;
$$ LANGUAGE plpgsql;

SELECT test();
于 2009-12-14T11:50:37.843 に答える
3

(たとえば、デバッグ用に)印刷しようとしている場合はnum、次の方法を試すことができます。

RAISE NOTICE '%', num;

http://www.postgresql.org/docs/8.4/static/plpgsql-errors-and-messages.html

PRINTPL/pgSQL では何の意味もありません。

于 2009-12-14T05:57:02.243 に答える
1

Postgresはそれ自体ではそのようなものをサポートしていません(まだ)。psql(公式のコマンドラインクライアント)には、いくつかの基本的なスクリプトがあります。

最適なオプションは、スクリプトがすでに組み込まれているpgAdminです。

于 2009-12-14T10:29:16.523 に答える
1

あなたが何を達成しようとしているのか、私にはわかりません。PostgreSQL はこの種の構文をサポートしていません。同様のキーワード (PRINT を除く?!) は、スタンドアロンの SQL クエリを記述するためではなく、FUNCTION を構築するための手続き型言語である PL/pgSQL にあります。

于 2009-12-14T07:33:43.380 に答える