あなたが尋ねているところで - いいえ。切断すると、oracleはセッションを終了します(または少なくともkillを試みます)。しかし、あなたは仕事を作ることができます。ジョブは、Oracleインスタンスによって管理されるオブジェクトです。実行にはスケジュールがあります。
begin
dbms_scheduler.create_job(
job_name => 'My job',
job_type => 'STORED_PROCEDURE',
job_action => 'YOUR_SCHEMA.YOUR_PACKAGE.YOUR_PROCEDURE',
start_date => 'desired date to start',
repeat_interval => 'FREQ=DAILY;INTERVAL=1', /* every day */
end_date => 'desired date to stop',
comments => 'I will run it from python');
end;
をstart_date
、repeat_interval
とend_date
ヌルのままに一度だけ、あなたの手順を実行するには:一度ストアドプロシージャを実行する、ジョブを作成するための最も簡単な例
begin
dbms_scheduler.create_job(
job_name => 'My job',
job_type => 'STORED_PROCEDURE',
job_action => 'YOUR_SCHEMA.YOUR_PACKAGE.YOUR_PROCEDURE',
comments => 'I will run it from python');
end;
Oracle Schedulerのは非常に複雑で、強力なツール。パラメータ、匿名ブロック、複雑なスケジュールなどを使用してプロシージャを実行できます。詳しくは、Scheduler、DBMS_SCHEDULERのドキュメントを参照してください。
応答@ドミトリーありがとうございます。 しかし、私はそれを呼び出すPythonコードに値を返すために私のStored Procが必要でした。私はこの場合には不可能と仮定していますか? –
@SakshamArora直接 - いいえ。しかし、戻り値をテーブルに格納することはできます。スクリプトを実行し、識別子を渡し(異なるプロシージャの実行を識別する必要がある場合)、プロシージャを実行します。プロシージャに識別子を使用して結果を保存するコードを追加し、次に選択を行います。 – Dmitry