web-dev-qa-db-ja.com

PostgreSQLストアドプロシージャを編集する方法は?

私はゆっくりとMSSQLからPostgreSQLに移行しています。

MSSQLでは、すでに保存されているプロシージャまたは関数の編集を呼び出すことができ、管理シェル(SQL Server Management Studio)にプロシージャのテキストが表示されたため、ソースコードをテキストファイルのどこかに保存する必要はありませんでした。

PostgreSQLで同じことを便利な方法で行う方法は? pgAdminIIIを使用しています。

17
Paul

Postgresの公式ディストリビューションには2つのクライアントが含まれています-CLIのもの psql とGUIのもの pgAdmin 。どちらもあなたが望むものをサポートします:psqlの場合は\efおよびpgAdminの場合-関数、[プロパティ]、[コード]タブを右クリックします。

22
Milen A. Radev

これは、コードを編集してテストするための便利な方法でもあります。

1)pgAdminから必要なSQL関数のコードを抽出します。

2)関数を含むコードをfile.sqlに配置します。

3)file.sqlと同じディレクトリにShell/batファイルを作成します。

psql -U postgres dbname < file.sql

4)シェル/バットファイルのショートカットを高速パネルに配置します。

5)お気に入りのテキストエディタでファイルを編集し、ショートカットを押して機能を更新します。

3
sergzach

pgAdminでは、このオプションを有効にすると、生活が楽になります。

ファイル->オプション..->クエリツール-> [x] SQLをメインフォームからSQLダイアログにコピー

次に、SQLペインに表示されているものはすべて、新しく開いたクエリツールウィンドウにコピーされます。したがって、オブジェクトブラウザで機能を選択し、ツールバーの虫眼鏡アイコンをクリックします。

現在のバージョン1.14.2の未解決のバグに注意してください。デフォルトでは、publicには関数に対するEXECUTE特権があります。この特権はREVOKEできます-これはSECURITY DEFINER関数にのみ役立ちます。しかし、このREVOKEはpgAdminからのリバースエンジニアリングされたDDLステートメントにありません(NULLが空のACLと混同されました)。このような関数を削除して再作成する場合は注意してください。

3

オブジェクトツリー(左側)の関数を右クリック->スクリプト->スクリプトCREATE

-または-

新しいSQLクエリを実行します->「関数の作成または置換...」のコードをコピーします

次に、スクリプトを編集して、実行することを忘れないでください

1
Evgeny Nozdrev

phpPgAdminを使用すると、ストアドプロシージャを編集し、インターフェイス内で編集できます。バージョン管理のために外部に保存することについての質問の下に残されたコメントも強くお勧めします。

1
iandouglas