質問: Postgre SQLからEXEファイルなどの外部ファイルを呼び出ししたい。 PL/pgSQLからの呼び出し方法を教えて頂けると助かります。 宜しくお願いいたします。 PL/pgSQLのプログラム ``` CREATE OR REPLACE FUNCTION public.test() RETURNS integer LANGUAGE plpgsql AS $function$ BEGIN COPY empty_table FROM PROGRAM 'C:/WINDOWS/system32/notepad.exe'; END ; $function$ ; ``` このプログラムを実行しても、動作がフリーズした状態になります。
回答: SQLから外部プログラムを実行する方法はないと先の回答には書きましたが、 ご指摘の通りCOPY文で起動することが出来るようです。 COPY > > PROGRAMが指定された場合、サーバは指定したコマンドを実行しその標準出力を読み取る、または、プログラムの標準入力に書き出します。 コマンドはサーバからの視点で指定しなければならず、また、PostgreSQLユーザによって実行できなければなりません。 STDINやSTDOUTが指定された場合、データはクライアントとサーバ間を流れます。 > > > って話からすると、起動したプログラムの標準入力に与えてその結果を待つのではないかと思われます。 notepad.exeごときが標準入出力を処理できたかどうかはわかりませんが、 javaで書いたプログラムに引き渡すのであれば標準入出力を意識して組むとよいかと。