問題タブ [plpgsql]

For questions regarding programming in ECMAScript (JavaScript/JS) and its various dialects/implementations (excluding ActionScript). Note JavaScript is NOT the same as Java! Please include all relevant tags on your question; e.g., [node.js], [jquery], [json], [reactjs], [angular], [ember.js], [vue.js], [typescript], [svelte], etc.

0 投票する
3 に答える
3768 参照

sql - 関数内の名前付き引数に関する PostgreSQL の問題

Linux 上の PostgreSQL 8.4。私は機能を持っています:

作成しようとすると、次のエラーが返されます。

試してみALIAS FORましたが、うまくいきません。アイデア?

0 投票する
5 に答える
23144 参照

postgresql - PGAdminのPostgreSQL構文エラー

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

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


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

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

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


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

0 投票する
3 に答える
1372 参照

postgresql - plpgsql関数でテーブルのキーフィールドを取得するには?

UPDATE および INSERT 操作のたびにトリガーされ、操作が実行されるテーブルのキー フィールドといくつかの条件をチェックする関数を作成する必要があります。

関数 (およびトリガー) はユニバーサルなものである必要があり、テーブル名/フィールド名をハードコーディングするべきではありません。

テーブル名とそのスキーマ部分にアクセスする必要がある部分に行き詰まりました - PRIMARY KEY の一部であるフィールドを確認してください。

0 投票する
3 に答える
14196 参照

postgresql - PL/pgsqlでEXECUTEを使用してジェネリックトリガーからNEW.*を挿入する

Postgres の「パーティショニング」機能を使用するテーブルがいくつかあります。各テーブルに共通の BEFORE INSERT OF ROW トリガーを定義して、1) 親テーブルに対して挿入が発生した場合にパーティションを動的に作成し、2) パーティションに対して挿入を再実行します。

何かのようなもの:

しかし、「NEW」レコードは、EXECUTE SQL 内には表示されません。この作業をできるだけ簡単にするにはどうすればよいですか?

別の方法として、NEW レコードのフィールドを反復処理できますか?

私は一時テーブルを使用することを考えました:

しかし、一時テーブルへの参照がキャッシュされているため、これも機能しません: PL/PgSQL 関数で一時テーブルにアクセスすると、「OID ##### との関係が存在しません」というエラーが発生するのはなぜですか?

Postgres 8.2 を使用していますが、他のバージョンに変更できません。

EDIT:
@alvherreが指摘したように、これはおそらくEXECUTE ... USING構文を使用してPostgres 8.4で実行できます。http://wiki.postgresql.org/wiki/PL/pgSQL_Dynamic_Triggersの例を参照してください。

0 投票する
2 に答える
25361 参照

sql - PostgreSQL ストアド プロシージャからレコードセットを返す最も簡単な方法は何ですか?

国とその ISO 国コードのリストを含むテーブルがあるだけです。次のようなストアド プロシージャ (別名関数) でクエリをラップしています。

私が得ているエラーは次のとおりです。

TYPE を定義してからカーソルのようにレコードセットをループできることはわかっていますが、IIRC には PostgreSQL の新しいバージョン (私は 8.4.3 を使用しています) でこれを行うためのより良い方法がありますが、試してみようとしています。覚えておいてください。


編集:

これは機能します:

「[テーブル名] の RETURNS セット」に注意してください。しかし、それは最も柔軟ではないようです。複数のテーブルの結合を返そうとすると、バラバラになります。

0 投票する
2 に答える
21798 参照

postgresql - エラー: クエリには結果データの宛先がありません

上記のコードを実行すると、次のエラーが発生します。

エラー: クエリには結果データの宛先がありません

私はパフォーマンスを使用しましたが、別の問題が発生しました。

エラー: "perform" またはその近くで構文エラーが発生しました

このエラーを克服するために何をすべきか教えてください。

0 投票する
2 に答える
26800 参照

postgresql - PL / pgSQLのEXECUTE ... USINGステートメントはレコードタイプで機能しませんか?

PL/PgSQL で、パラメーターとして受け取るテーブルを操作する必要がある関数を作成しようとしています。

関数定義内で EXECUTE..INTO..USING ステートメントを使用して動的クエリを作成します (これが唯一の方法です) が、RECORD データ型で問題が発生しました。

次の(非常に単純化された)例を考えてみましょう。

次のエラーが出力されました。

エラー: レコード データ型の列 "descr" を識別できませんでした

私が使用した構文は有効に思えますが。列名を動的に参照したいので、静的選択 (例でコメント) を使用できません。

だから..誰かが上記のコードの何が問題なのか知っていますか?

0 投票する
2 に答える
21939 参照

postgresql - PostgreSQL - CREATE LANGUAGE を実行しても言語 pgplsql が存在しない

最初の plpgsql 関数を作成しようとしました。スクリプトを実行すると、

エラー: 言語 "'plpgsql'" が存在しません

次に、コマンド CREATE LANGUAGE plpgsql を実行します。次のエラーが表示されます。

エラー: 言語 "plpgsql" は既に存在します

コマンドは同じデータベースで実行されています。

よろしく

ピーター

0 投票する
8 に答える
4385 参照

datetime - PL / pgSQLで最も近いX分に丸める方法は?

X分に最も近い値に丸めるにはどうすればよいですか?

これが私の試みです:

例:

戻る必要があります

0 投票する
1 に答える
5827 参照

python - Python for PostgreSQL のストアド プロシージャ

私たちはまだ Postgres を使い始めたばかりで、Microsoft Sql Server から来ました。

今、いくつかのストアド プロシージャを書きたいと思っています。pl/pgsql で動作するよりも複雑なものを取得するのに苦労した後hello world、約 15 分で同じクエリが動作するようになったため、新しい言語を学習する場合は Python を学習する方がよいと判断しました。 (注意してください、実際にPythonを知っている人は誰もいません)。

pl/psqlと比較して、いくつか質問があります。

  1. pl/Pythonu は pl/pgsql より遅いですか?
  2. それを使用して適切なストアド プロシージャを作成する方法について、「適切な」リファレンスはありますか? Postgres のドキュメントの 5 つの短いページだけでは、十分な情報が得られません。
  3. クエリの準備はどうですか?常に使用する必要がありますか?
  4. 多くのクエリ プランに SD および GD アレイを使用すると、いっぱいになりすぎたり、サーバーに悪影響を及ぼしたりすることはありませんか? いっぱいになった場合、古い値は自動的に削除されますか?
  5. 信頼できる言語になる見込みはありますか?

また、ストアド プロシージャの使用は非常に軽いものです。現在は 4 つしかありませんが、SQL Server 固有の構文 (ストアド プロシージャ以外の Postgres では使用できない変数など) から少しのコードを変換しようとしています。