SYSADMIN.execExternalProcess
このプロシージャは、シェルスクリプトまたは外部プログラムを実行します:
SYSADMIN.execExternalProcess(IN command string NOT NULL, IN args object, OUT exitCode integer RESULT, OUT stdOut clob, OUT stdErr clob)コマンド(実行されるスクリプトの絶対名)と引数のリスト(NULLの場合もある)を受け取り、外部プロセスへの呼び出しの終了コードと、stdoutとstderrに送られたコマンドの結果を表す整数を返します。標準出力と標準エラーの結果は100,000文字に制限されていることに注意してください。
WindowsとLinuxのどちらのオペレーティング・システムでも、スクリプトへのパスはスラッシュを使って指定できます。WINDOWでは、パスはバックスラッシュを使って指定することもでき、2つ目のバックスラッシュでエスケープします。
Examples
1. スラッシュの使用例
SELECT * FROM (CALL execExternalProcess(command => '/tmp/shellScripts/shellScript.sh'), args => null) a2. エスケープされたバックスラッシュを使用した例
SELECT * FROM (CALL execExternalProcess(command => 'D:\\tmp\\shellScripts\\shellScript.bat', args => ARRAY('c:'))) aストアドプロシージャの実行中に失敗した場合(ファイル名が存在しない場合など)、例外がスローされます。
Using execExternalProcess to Control Execution of Dependent Schedules
このストアドプロシージャを使用して依存するスケジュールの実行を制御するには、以下のSQL スクリプトを使用してジョブを作成します:
BEGINIF (NOT EXISTS (SELECT * FROM (CALL execExternalProcess(command => 'D:/tmp/shellScripts/shellScript.bat', args => ARRAY('c:'))) a WHERE exitCode = 0))ERROR 'failed';END前述のコードでは、スクリプトD:/tmp/shellScripts/shellScript.batが成功した終了コードとして、例えば0を返すと仮定しています。終了コードが0と異なる場合、ジョブは失敗し、その状態は依存するスケジュールの実行を決定するために使用することができます。
This stored procedure can be potentially dangerous since any kind of script could be executed by the system.
デフォルトでは、このストアドプロシージャは(SYSADMINの他のシステムプロシージャと同様に)ユーザadminには表示されますが、新しく作成されたユーザー/ロールには表示されません。
SYSADMIN.executeCli
このプロシージャは、scriptパラメータで渡された任意のJBoss CLI スクリプトを実行します。例えば、for logging tasks。
スクリプトの各コマンドは異なる行にあります(LF文字で区切られています):
SYSADMIN.executeCli(IN script string NOT NULL, IN maskInLogs boolean DEFAULT 'false')maskInLogsパラメータを使用すると、スクリプトに機密データが含まれている場合に、サーバーの Logging テーブルと Logging ファイルでスクリプトを隠すことができます。
maskInLogs parameter of the SYSADMIN.executeCli procedure available since v4.7
Example
この例では、このプロシージャを使用してConfiguration SMTP サーバーを取得します:
SELECT xpathvalue(x.reply, '/r/result/host') AS host, CAST(xpathvalue(x.reply, '/r/result/port') AS integer) AS port FROM ( SELECT jsontoxml('r', replace(reply, '=>', ':')) AS reply FROM ( CALL executeCli( script => E'/socket-binding-group=standard-sockets/remote-destination-outbound-socket-binding=mail-smtp:read-resource' ) ) a) x