リンク: バッチで実行するSQLファイルにパラメタを与える方法. Oracleでパッチ実行方法:    パラメタが渡せるということを教えて頂き、それをきっかけにいろいろ調査した結果、以下で動作できることを確認しました。    まず、実行するバッチファイル(ORA_SQL.BAT)は、    *******************************************    echo on    C:\Oracle\Ora81\bin\SQLPLUS Userid/Password@接続文字列 @D:\Sql\OraEX.SQL %1    %2    *******************************************    とします。    OraEX.SQLの内容は以下の通りに修正します。    *******************************************    spool D:\TextLog\A_SYOHIN.log    Set echo on    SELECT COUNT(*) FROM A_SYOHIN    WHERE M_DATE BETWEEN &1 AND &2;    spool off;     (↑引数部分を”%1″、”%2″では    exit;          なく、”&1″、”&2″とする)    *******************************************  … Read More


リンク: @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 := ‘会社コード, 会社名, 販製品名, 数量’; UTL_FILE.PUT_LINE(File_Handle, v_line_header); –会社毎のデータ取得 FOR rec_kaisya IN cur_kaisya(v_nenki,rec_kaisya_1.kaisya_cd ) LOOP –一行づつ書き込み UTL_FILE.PUTF(File_Handle,’ ‘’%s, ‘’%s, ‘’%s,… Read More


リンク: [Chapter 6] 6.2 UTL_FILE: Reading and Writing Server-side Files. リンク: Oracle PL/SQL 編7 – 標準ファイル I/O utl_file.fopen、utl_file.put_line – SAK Streets. ■レコードグルーブシーケンス番号を付与して、CSV 形式でテキスファイル出力 set serveroutput on; declare   cursor c1 is select 得意先CD, 品番     from 受注m order by 得意先CD, 品番;   ct number;   svtkcd varchar2(20) := ‘ ‘;   fno utl_file.file_type;  … Read More


リンク: [PL/SQL] – oracle tips and tricks. PL/SQL プログラミング、言語要素、組み込みパッケージ  †     PL/SQL プログラミング入門 サブプログラム 条件文 (IF、CASE) ループ処理 (FOR、WHILE、LOOP) PL/SQL 二次元配列の定義 カーソル・ループ処理 レコード型の定義 PL/SQL によるインサート処理 動的 SQL (システム固有の動的 SQL)       PL/SQL 言語要素 PL/SQL のデータタイプ コメント・ブロック・例外処理 暗黙カーソル 実行者権限 コレクション型 事前定義例外 PL/SQL の予約語       PL/SQL パッケージライブラリ UTL_FILE の使い方 (UTL_FILE_DIR 編) UTL_FILE の使い方 (DIRECTORY… Read More


>表題にある通り、ストアードプロシジャー(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 RETURN BINARY_INTEGER AS EXTERNAL LIBRARY LIBC NAME “FUNC2″ LANGUAGE C; <3.4.の例> int FUNC2( void ){… Read More


リンク: 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 ************************************ echo **  %ERRORLEVEL% 人在籍しています echo ** (↑ がプロシジャでセットした戻り値です) echo ************************************ echo off pause :RUNEND rem exit 0 ●EMPCOUNT.sql  … Read More