pgAdmin ツールを使用して実行できる pgScript の必要性を理解できませんでした。いつ使用する必要がありますか?plpgSQL ができないことは何ですか? Microsoft SQL Server でこれに相当するものは何ですか?
3 に答える
pgScript はクライアント側のスクリプト言語ですが、pl/PgSQL はサーバー上で実行されます。これは、まったく異なるユースケースがあることを意味します。たとえば、PgScript はトランザクション ステータスを管理できますが、pl/PgSQL はできませんが、pl/Pgsql を使用して SQL の言語を拡張できますが、pgScript はできません。
さらに、この 2 つは、クエリ プランから動的 SQL に至るまで、他の多くのことをまったく異なる方法で処理することを意味します。pgScript ではクエリ間のラウンド トリップが必要ですが、pl/Pgsql では必要ありません。
pgScript の用途の 1 つは、変数を定義して後で SQL で使用することです。
たとえば、次のようなことができます。
declare @mytbl, @maxid;
set @mytbl = 'sometable';
set @maxid = 2500;
set @res = select count(*) from @mytbl where id <= @maxid;
print @res;
このアプローチは、複雑な SQL クエリの奥深くに埋もれている変数ではなく、変更したい変数をスクリプトの先頭に置くことです。
もちろん、pgScript は、@{Craig Ringer} のコメントで言及されているように、PgAdmin III クライアント内でのみ利用可能な機能です。
Toad Data Modeler の DDL スクリプト ジェネレーターを使用しました。
PgAdmin-III で通常のクエリ実行を使用してスクリプトを実行しましたが、
「エラー: リレーション "ユーザー" が既に存在する SQL 状態: 42P07」というエラーが発生し続けました。
PgAdmin -IIIで Execute pgScript を実行したところ、問題なく動作しました。