PL/SQL文にて – Database Expert

Posted by & filed under ORACLE.

リンク: @IT 会議室 – スレッド一覧.
リンク: PL/SQL文にて – Database Expert.
–ファイル名設定
file_name := UPPER(rec_kaisya_1.kaisya_cd) || ‘_KATAMEI_ERROR_’ || to_char(sysdate, ‘YYMMDD’) || ‘.csv’;

–ファイルオープン(新規書き込みモード)
File_Handle := UTL_FILE.FOPEN(file_dir, file_name, ‘w’);
–日付の書き込み
UTL_FILE.PUTF(File_Handle, ‘Created: %s\n’, SYSDATE);
–ファイルへの書き込み(改行のみ)
UTL_FILE.NEW_LINE(FILE_HANDLE);
–見出しの書き込み
v_line_header := ‘会社コード, …

[PL/SQL] – oracle tips and tricks

Posted by & filed under ORACLE.

ストアードプロシジャー(PL/SQL)の中でDOSコマンドを実行方法

Posted by & filed under ORACLE.

>表題にある通り、ストアードプロシジャー(PL/SQL)の中で
>DOSコマンドを実行したのですが、方法がわかりません。
>
>どなたか判る方がいらしたら教えてください。
>
1091058さん、こんにちは。
このフォーラムに結構同じ質問が出てたりします。
でも、例まではなかったかな。
で、簡単ですが載せておきます。
内容的には、以下のな感じでしょうか?
あくまで例なので、細かい部分は省略しています。
あと、外部プロシージャ呼び出しにはLISTENER.oraにEXTPROCの
項目を追加する必要がありますのでお忘れなく。

<外部呼出しの構造>
1.PL/SQL⇒2.外部プロシージャ呼び出し定義(PL/SQL)⇒3.Cライブラリ⇒4.コマンド

<1.の例>
CREATE OR REPLACE PROCEDURE PROC1 (
	retcd	out NUMBER
) AS
BEGIN

    retcd :=  FUNC1();

END;

<2.の例>
CREATE OR REPLACE FUNCTION FUNC1 

PL/SQLで戻る値のセット方法

Posted by & filed under ORACLE.

リンク: OTN Japan – 掲示板.

>エラーが発生するときに、PL/SQLで戻る値をセットしましたが、起動バッチ
>(例えばA.BAT)に渡す方法を教えてもらいませんか?ちなみにSQL*PLUSを
>使って、PL/SQLを実行します。(別の方法がありますか?)
>よろしくお願いします。

こんばんは。
ちょうど似たような要件があったので、SCOTT.EMPを使って簡単なサンプルを作っ
てみました。
PL/SQLプロシジャからの戻り値をコマンドプロンプトで取得する方法です。
ご参考になれば幸いです。

<概略>
 1.SQLスクリプトにバインド変数を定義し、その変数プロシジャの戻り値として
実行します。

 2.プロシジャでは、戻り値に値をセットします。

 3.SQLスクリプトでは、プロシジャからの戻り値(バインド変数)をリターン・
コードとして
   OSに戻します。

 4.DOS(OS)では、ERRORLEVELでリターン・コードを取得します。

以下にサンプルを記述します。(Windows2003ServerSP1:Oracle10gSE
(10.1.0.4)にて動作確認)
※入力値チェックなどはしていません(^^;;)

●EMPsample.bat  <—— 起動するバッチファイル
:RUNSTART
SQLPLUS SCOTT/TIGER@xxxx @D:sampleempcount.sql
if %ERRORLEVEL% == 999999 goto RUNEND
echo