SELECT 〜 INTO を使用して、社員コードを渡して氏名を取得する Function : GET_CNAME簡易 PL/SQL ビルダーのダウンロード(【接続/ダイアログ・ビルド/アイコンクリック・実行/アイコンクリック】 しかできません)
FUNCTION GET_CNAME ( /* 文字列引数の定義 */ PM_STRING IN VARCHAR2 ) /* 戻り値の定義 */ RETURN VARCHAR2 /**********************************************************/ /* 変数の定義 */ /**********************************************************/ AS RET_VALUE VARCHAR2(2000); WK_VALUE VARCHAR2(2000) := '初期値の設定'; /**********************************************************/ /* 処理開始 */ /**********************************************************/ BEGIN /* デバッグ表示 */ DBMS_OUTPUT.PUT_LINE( 'デバッグ:開始' ); DBMS_OUTPUT.PUT_LINE( 'デバッグ:引数:' || PM_STRING ); DBMS_OUTPUT.PUT_LINE( WK_VALUE ); /* 代入 */ RET_VALUE := PM_STRING; IF RET_VALUE is NULL THEN DBMS_OUTPUT.PUT_LINE( 'NULLデータです' ); RET_VALUE := '該当者は存在しません'; ELSE DBMS_OUTPUT.PUT_LINE( 'データ有り' ); SELECT 氏名 INTO WK_VALUE from 社員マスタ WHERE 社員コード = RET_VALUE; RET_VALUE := WK_VALUE; END IF; /* 戻り値 */ RETURN RET_VALUE; /**********************************************************/ /* 一番外側のブロックの例外処理 */ /**********************************************************/ $if 1=1 $then EXCEPTION WHEN OTHERS THEN WK_VALUE := '例外発生:'||SQLCODE||':'||SQLERRM; DBMS_OUTPUT.PUT_LINE( WK_VALUE ); RET_VALUE := '該当データがシステムに存在しません'; RETURN RET_VALUE; $end END;
カーソルを使用してデータを読み込んで、csv データをディレクトリオブジェクト経由でディスクにファイルを出力する Procedure : LIST_MEMBER![]()
PROCEDURE LIST_MEMBER
(
/* カーソルの範囲指定用 */
PM_STRING IN VARCHAR2
)
/**********************************************************/
/* 変数の定義 */
/**********************************************************/
AS
WK_VALUE VARCHAR2(2000);
/* カーソルの定義(主に複数読み込み用) */
CURSOR cur_main IS
SELECT
社員コード||','||
氏名||','||
フリガナ||','||
所属||','||
性別||','||
作成日||','||
更新日||','||
給与||','||
手当||','||
管理者||','||
生年月日
from "社員マスタ"
where 社員コード <= PM_STRING;
-- ディスクへ書き込むファイル名
WK_FILENAME VARCHAR2(100) := 'syain.csv';
-- ファイルにアクセスする為のハンドルの定義
FILEHANDLE UTL_FILE.FILE_TYPE;
/**********************************************************/
/* 処理開始 */
/**********************************************************/
BEGIN
DBMS_OUTPUT.PUT_LINE('デバッグ:開始');
DBMS_OUTPUT.PUT_LINE('デバッグ:引数:'||PM_STRING);
/* カーソルを開く */
OPEN cur_main;
-- 第一引数は、ディレクトリオブジェクトの名称( 但し文字列 )
FILEHANDLE := UTL_FILE.FOPEN( 'LOGDIR', WK_FILENAME, 'w' );
/* ループ処理(ブロック) */
LOOP
/* 定義したレコード変数に読み込み */
FETCH cur_main INTO WK_VALUE;
/* カーソルに対するシステム変数でデータ終わりを判断 */
if cur_main%NOTFOUND then
/* ループ処理を脱出 */
EXIT;
end if;
-- 書き込み
UTL_FILE.PUT_LINE(FILEHANDLE,WK_VALUE);
END LOOP;
-- ファイルを閉じる
UTL_FILE.FCLOSE( FILEHANDLE );
/* カーソルを閉じる */
CLOSE cur_main;
/**********************************************************/
/* 一番外側のブロックの例外処理 */
/**********************************************************/
$if 1=1 $then
EXCEPTION
WHEN OTHERS THEN
DBMS_OUTPUT.PUT_LINE('例外発生:'||SQLCODE||':'||SQLERRM);
$end
END;
データ作成 mdb よりデータを作成する スクリプト(32ビット用/cscript.exe で呼び出せば 64ビット)のダウンロード26、27、29 行目を環境に合わせて変更 ※ ディレクトリオブジェクトの作成 関連する記事 Oracle : PL/SQL Function の使用方法 Oracle 11g 学習環境の作成 : SQLPlus の環境作成 Oracle SQLPlus でスキーマの作成
|
|
【Oracle : PL/SQLの最新記事】
- PL/SQL : 最も簡単な CSV 出力 の記述
- Oracle : PL/SQL Function の使用方法
- Oracle : PL/SQL : 暗黙のカーソルとループブロックを使用した自動行挿入
- Oracle : PL/SQL : SELECT 〜 INTO 構文の一般的な使用方法
- Oracle : PL/SQL : カーソルを使った一般的なループ処理を行うプロシージャ
- Oracle : PL/SQL : Function のサンプルと使い方
- PL/SQL : OUT タイプのパラメータを持つストアードプロシージャの処理
- PL/SQL : プロシージャの呼び出し
- PL/SQL : Function 雛形







