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 内の変数をプログラムでやり取りする
|
|
【VB.NET : データベースの最新記事】
- VB.net : GetSchema メソッドでデータベース内のテーブル一覧と指定したテーブルの列名一覧を取得する
- VB.net : ListView に DB から読み込んだデータをセットする
- VB.net : 一時PL/SQL 内の変数をプログラムでやり取りする
- VB.net : PL/SQL の OUT パラメータから実行結果を取得する
- VB.net : ODBC + MySQL で CSV をインポート( クラス化サンプル )
- VB.net : CSVによるインポート用ファイルの作成( つまりエクスポート )
- VB.net : insert 構文によるインポート用ファイルの作成( つまりエクスポート )
- VB.net 2008 : System.Data.Odbc データ取得(SELECT)処理( MySQL 5.1 )
- VB.net 2008 : System.Data.Odbc 更新処理( MySQL 5.1 )
- VB.net 2008 : System.Data.Odbc 接続テスト( MySQL 5.1 )
- VB.net : Oracle の行を返さない SQL の実行






