SQLの窓

2010年05月19日


PL/SQL : プロシージャの呼び出し

単純な呼び出し先として、入力引数を二つ取るプロシージャです。

1) SQL としての呼び出し
CALL CSV_OUT('0006','0007')
2) 最も単純な PL/SQL ブロックとしての呼び出し
begin CSV_OUT('0006','0007'); end;
3) 一時 PL/SQL の一部として呼び出し
DECLARE 
	WK_FROM VARCHAR2(4) := '0005'; 
	WK_TO VARCHAR2(4) := '0015'; 
BEGIN 
	CSV_OUT(WK_FROM,WK_TO);
END; 
CREATE or REPLACE PROCEDURE CSV_OUT 
( 
	PM_STRING1 IN VARCHAR2 
	,PM_STRING2 IN VARCHAR2 
) 
 
/**********************************************************/ 
/* 変数の定義 */ 
/**********************************************************/ 
AS 
	WK_FILENAME VARCHAR2(100); 
	WK_CHARACTERSET VARCHAR2(100); 
	FILEHANDLE	UTL_FILE.FILE_TYPE; 
 
	CURSOR cur_main IS
		SELECT * FROM 社員マスタ
			where 社員コード 
			between PM_STRING1 and PM_STRING2
			order by フリガナ;
 
	COMMENT_REC cur_main%ROWTYPE;  
 
/**********************************************************/ 
/* 内部プロシージャ( データ出力 ) */ 
/**********************************************************/ 
PROCEDURE WRITE_DATA 
AS 
	WK_CSV VARCHAR2(200); 
BEGIN 
 
	/***********************************************/ 
	/* 1行ぶんのデータの作成 */ 
	/***********************************************/ 
	WK_CSV := COMMENT_REC.社員コード; 
	WK_CSV := WK_CSV || ',' || COMMENT_REC.氏名; 
 
	/***********************************************/ 
	/* AL32UTF8 は、10g Express 対応 */ 
	/***********************************************/ 
	if WK_CHARACTERSET = 'AL32UTF8' then 
		UTL_FILE.PUT_LINE( 
			FILEHANDLE,  
			CONVERT( WK_CSV,'JA16SJIS','AL32UTF8') 
		); 
	else 
		UTL_FILE.PUTF( FILEHANDLE, '%s\n', WK_CSV ); 
	end if; 
 
END; 
 
/**********************************************************/ 
/* 処理開始 */ 
/**********************************************************/ 
BEGIN 
	DBMS_OUTPUT.PUT_LINE('デバッグ:開始'); 
 
	/***********************************************/ 
	/* 行データを変数にセット */ 
	/***********************************************/ 
	SELECT VALUE INTO WK_CHARACTERSET from V$NLS_PARAMETERS 
		where PARAMETER = 'NLS_CHARACTERSET'; 
 
	/***********************************************/ 
	/* 出力ファイル名を設定 */ 
	/***********************************************/ 
	WK_FILENAME := '社員情報.csv'; 
	if WK_CHARACTERSET = 'AL32UTF8' then 
		WK_FILENAME := 
			CONVERT( WK_FILENAME,'JA16SJIS','AL32UTF8'); 
	end if; 
 
	OPEN cur_main; 
 
	FILEHANDLE := UTL_FILE.FOPEN( 'ORACLEDIR', WK_FILENAME, 'w' ); 
 
	LOOP 
		FETCH cur_main INTO COMMENT_REC; 
		EXIT when cur_main%NOTFOUND; 
 
		/* 内部プロシージャの呼び出し */ 
		WRITE_DATA; 
		DBMS_OUTPUT.PUT_LINE(COMMENT_REC.氏名); 
 
	END LOOP; 
 
	UTL_FILE.FCLOSE( FILEHANDLE ); 
 
	CLOSE cur_main; 
 
/**********************************************************/ 
/* 一番外側のブロックの例外処理 */ 
/**********************************************************/ 
EXCEPTION 
	WHEN OTHERS THEN 
		DBMS_OUTPUT.PUT_LINE('例外発生:'||SQLCODE||':'||SQLERRM); 
END;




タグ:SQL Oracle PL/SQL
posted by lightbox at 2010-05-19 21:46 | Oracle : PL/SQL | このブログの読者になる | 更新情報をチェックする
バッチ処理

Microsoft Office
container 終わり

フリーフォントで簡単ロゴ作成
フリーフォントでボタン素材作成
フリーフォントで吹き出し画像作成
フリーフォントではんこ画像作成
ほぼ自由に利用できるフリーフォント
フリーフォントの書体見本とサンプル
画像を大きく見る為のウインドウを開くボタンの作成

Android SDK ポケットリファレンス
改訂版 Webデザイナーのための jQuery入門
今すぐ使えるかんたん ホームページ HTML&CSS入門
CSS ドロップシャドウの参考デモ
Google Hosted Libraries
cdnjs
BUTTONS (CSS でボタン)
イラストAC
ぱくたそ
写真素材 足成
フリーフォント一覧
utf8 文字ツール
右サイド 終わり
base 終わり