SQLの窓

2011年10月23日


VB.net : 一時 PL/SQL で Data Pump Exportユーティリティと同じデータをエクスポートして処理結果を取得する

PL/SQL のユーティリティを使用すると、VB.net を通してパラメータを
カスタマイズ可能なエクスポートアプリケーションを作成できます。

結果を知る為のパラメータは ParameterDirection.Output で出力のみで
取得しています。正常終了すると、"COMPLETED" という文字列が返ります。
( 既にファイルがある場合は、"例外発生" が返ります。)

各プロシージャの詳細は Oracle ドキュメント : DBMS_DATAPUMP
DECLARE 
	J_HANDLE NUMBER;
/**********************************************************/
/* 処理開始 */
/**********************************************************/
BEGIN
	/***************************/
	/* OPEN */
	/***************************/
	J_HANDLE := DBMS_DATAPUMP.OPEN(
		'EXPORT'
		,'TABLE'
		,NULL
		,NULL
		,'COMPATIBLE'
		,DBMS_DATAPUMP.KU$_COMPRESS_METADATA
	);

	/***************************/
	/* 出力ファイル */
	/***************************/
	DBMS_DATAPUMP.ADD_FILE(
		J_HANDLE
		,'MY_TABLE_BACKUP.DMP'
		,'MYDIR'
		,NULL
		,DBMS_DATAPUMP.KU$_FILE_TYPE_DUMP_FILE
	);

	/***************************/
	/* SQL 式で スキーマを指定 */
	/***************************/
	DBMS_DATAPUMP.METADATA_FILTER(
		J_HANDLE
		,'SCHEMA_EXPR'
		,'IN (''LIGHTBOX'')'
	);

	/***************************/
	/* SQL 式で 表を指定 */
	/***************************/
	DBMS_DATAPUMP.METADATA_FILTER(
		J_HANDLE
		,'NAME_EXPR'
		,'IN (''社員マスタ'',''商品マスタ'')'
	);

	/***************************/
	/* データを出力しない */
	/***************************/
	DBMS_DATAPUMP.DATA_FILTER (
		J_HANDLE
		,'INCLUDE_ROWS'
		,0
	);

	/***************************/
	/* 開始 */
	/***************************/
	DBMS_DATAPUMP.START_JOB(
		J_HANDLE
		,0
	);

	/***************************/
	/* JOB 終了まで待機 */
	/***************************/
	DBMS_DATAPUMP.WAIT_FOR_JOB(
		J_HANDLE
		,:J_STS
	);

	/***************************/
	/* 終了ステータスの表示 */
	/***************************/
	DBMS_OUTPUT.PUT_LINE('処理終了:'||:J_STS);

/**********************************************************/
/* 一番外側のブロックの例外処理 */
/**********************************************************/
EXCEPTION
	WHEN OTHERS THEN
		DBMS_OUTPUT.PUT_LINE('例外発生:'||SQLCODE||':'||SQLERRM);
		:J_STS := '例外発生';
END;

' キャラクタセット
Dim SJIS_Enc As Encoding = Encoding.GetEncoding(932) 
' 読み込み用
' plsql.sql は、改行コードを LF のみにして下さい
Dim ReadFile As StreamReader = New StreamReader( "plsql.sql", SJIS_Enc )

' SHIFT_JIS で読み込み
Dim SqlText As String = ReadFile.ReadToEnd()
ReadFile.Close() 

Dim myCommand As New OracleCommand()
myCommand.Connection = myCon

Dim myParam1 As OracleParameter
' *******************************************
' プロシージャの実行
' *******************************************
' 実行タイプ( SQLとして実行 )
myCommand.CommandType = CommandType.Text
' プロシージャ名
myCommand.CommandText = SqlText

' パラメータクリア
myCommand.Parameters.Clear()
' 内容を取得する変数用パラメータ( OUT なので、Direction プロパティにセット )
myParam1 = myCommand.Parameters.Add("J_STS", OracleType.Varchar)
myParam1.Direction = ParameterDirection.Output 
myParam1.Size = 50		' 長さ

Try
	' 結果を受け取り、後で処理する
	myCommand.ExecuteNonQuery()
Catch ex As Exception
	myCon.Close()
	Console.WriteLine(ex.Message)
	Return
End Try

Console.WriteLine(myParam1.Value)

関連する記事

VB.net : 一時PL/SQL 内の変数をプログラムでやり取りする



posted by lightbox at 2011-10-23 20:21 | VB.NET : データベース | このブログの読者になる | 更新情報をチェックする
container 終わり



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

CSS ドロップシャドウの参考デモ
イラストAC
ぱくたそ
写真素材 足成
フリーフォント一覧
utf8 文字ツール
右サイド 終わり
base 終わり