PL/SQL

PRINT文出力

PL/SQLでDEBUG文を出力する方法です。

DBMS_OUTPUT.ENABLE(100000);--出力のバッファサイズ
str := 'ST  ' || to_char(sysdate, 'yyyy/mm/dd hh24:mi:ss');
DBMS_OUTPUT.PUT_LINE(str);

sqlplus でDBMS_OUTPUT.PUT_LINEを実行する場合は、
set serveroutput on にしておく必要あり。

ファンクションの実行

sqlplus におて、プロシージャ、関数の実行方法です。

プロシージャ:
SQL> execute proc_a('12');

関数:
SQL> variable a number;
SQL> execute :a := func_a('12');
SQL> print :a

カーソルの使い方

--カーソルの宣言
CURSOR CUR_EQUIP IS
 SELECT AD.EQUIP_CLASS, AD.EQUIP_PLACE,
  DECODE(PR.SLS_MDL_YEAR, '1', AD.SLS_MDL_YEAR, NULL) AS SLS_MDL_YEAR
  FROM TBL_M_EQUIP_PRIORITY PR, TBL_M_ADDITIONAL_EQUIP AD
  WHERE   PR.IMP_CD   = P_IMP_CD
  ORDER by PR.PRIORITY;

--カーソル変数の宣言
REC_EQUIP  CUR_EQUIP%ROWTYPE;

--カーソルオープン
OPEN CUR_EQUIP;

--LOOPでFETCH
LOOP
 FETCH CUR_EQUIP INTO REC_EQUIP;
 EXIT WHEN CUR_EQUIP%NOTFOUND;
 処理・・・
END LOOP;

--カーソルクローズ
CLOSE CUR_EQUIP;

UTL_FILE

テキストファイルの読み書きを行う。

■ファイルオープン
fopen( p_Dir, p_FileName, モード) 
p_Dir:
p_FileName:
モード:r yo
返値:ファイルハンドル
■書き込み
PUT_LINE(ファイル・ハンドル, ‘書込み文字列’)
PUT
NEW_LINE
■読み込み
GET_LINE(ファイル・ハンドル, 文字列変数 ,
‘1行当りの最大文字数’) ;
■クローズ
FCLOSE(ファイル・ハンドル) ;
エラー
エラー内容
INVALID_PATHディレクトリ・オブジェクトがありません
INVALID_MODEファイル・オープンのパラメータが間違っています
INVALID_FILEHANDLEファイル・ハンドルが無効です
NVALID_OPERATIONファイル・オープンに失敗しました
もしくは、要求した操作が出来ません
NTERNAL_ERRORPL/SQL 内で未指定エラーが発生しました
INVALID_MAXLINESIZEFOPEN の MAX_LINESIZE 値が無効です
有効範囲:1~32767
INVALID_FILENAMEファイル名が間違っています
INVALID_OFFSETファイルの最終ポイント以降に対して、検索などの操作を行おうとしています
ACCESS_DENIEDアクセス許可が拒否されました
FILE_OPENファイルがオープンしているため失敗しました
(別プロセスが、ファイルを使用しています)
READ_ERROR読込み操作中に OS 側でエラーがありました
WRITE_ERROR書込み操作中に OS 側でエラーがありました
DELETE_FAILDファイルの削除に失敗しました
RENAME_FAILDファイルの名前変更に失敗しました
CHARSETMISMATCHFOPEN_NCHAR でオープンしたファイルに対して 、 NON_CHAR ファンクション( PUTF 、GET_LINE など)を実行しようとしています

コメント

タイトルとURLをコピーしました