PL/SQL 側で、以下のように定義されたプロシージャを呼び出しますPROCEDURE PARAM_OUT_TEST ( PM_STRING IN VARCHAR2, PM_NUMBER OUT NUMBER )第一引数は、入力のみなので Direction の設定はしていません。第二引数は 入力はしませんが、出力するので Direction の設定をします。 ※ Inpit、Output、InputOutput、ReturnValue があります
Imports System.Data Imports System.Data.OracleClient Module Module1 Sub Main() ' 新しい OracleConnection オブジェクトを作成 Dim myCon As OracleConnection = CreateConnection() if myCon is Nothing then Console.WriteLine("処理が異常終了しました") Return end if '--------------------------------------------------- Dim myCommand As New OracleCommand() myCommand.Connection = myCon Dim myParam1 As OracleParameter Dim myParam2 As OracleParameter ' ******************************************* ' プロシージャの実行 ' ******************************************* ' 実行タイプ( ストアードプロシージャとして実行 ) myCommand.CommandType = CommandType.StoredProcedure ' プロシージャ名 myCommand.CommandText = "PARAM_OUT_TEST" ' パラメータクリア myCommand.Parameters.Clear() ' 1つ目のパラメータ( IN なのでデータセット ) myParam1 = myCommand.Parameters.Add("PM_STRING", OracleType.VarChar) myParam1.Value = "0010" ' 2つ目のパラメータ( OUT なので、Direction プロパティにセット ) myParam2 = myCommand.Parameters.Add("PM_NUMBER", OracleType.Number) myParam2.Direction = ParameterDirection.Output Try ' 結果を受け取り、後で処理する myCommand.ExecuteNonQuery() Catch ex As Exception myCon.Close() Console.WriteLine(ex.Message) Return End Try ' Decimal で返されている Console.WriteLine(myParam2.Value.GetType()) Dim myValue As Decimal = myParam2.Value Console.WriteLine(myValue) '--------------------------------------------------- Call EndConnection( myCon ) End Sub ' ****************************************************** ' 接続終了 ' ****************************************************** Sub EndConnection( myCon As OracleConnection ) ' 接続を閉じる myCon.Close() ' OracleConnection オブジェクトに使用されているすべてのリソースを解放 myCon.Dispose() ' 処理終了 Console.WriteLine("処理が終了しました") ' 一時停止 Console.Write("Enterキーを押して下さい : ") Console.ReadLine() End Sub ' ****************************************************** ' 接続作成 ' ****************************************************** Function CreateConnection( ) As OracleConnection ' 新しい OracleConnectionStringBuilder オブジェクトを作成 Dim builder As New OracleConnectionStringBuilder() ' 接続用のパラメータを追加 builder.Add("Server", "light/xe") builder.Add("User ID", "LIGHTBOX") builder.Add("Password", "LIGHTBOX") ' 内容を確認 Console.WriteLine(builder.ConnectionString) ' 新しい OracleConnection オブジェクトを作成 Dim myCon As New OracleConnection() ' 接続文字列を設定 myCon.ConnectionString = builder.ConnectionString ' 接続を開く Try myCon.Open() Catch ex As OracleException Console.WriteLine("接続エラーです") Console.WriteLine( ex.Message ) Return Nothing End Try Return myCon End Function End Module
Function の場合の戻り値の取得は以下のようにして記述できます この場合、戻り値は最初に定義しますが、変数名は何でもいいです。
' パラメータクリア myCommand.Parameters.Clear() ' 1つ目のパラメータ( 戻り値として ) myParam1 = myCommand.Parameters.Add("RET_VALUE", OracleType.Number) myParam1.Direction = ParameterDirection.ReturnValue ' 2つ目のパラメータ( 第一引数として ) myParam2 = myCommand.Parameters.Add("PM_STRING", OracleType.Varchar) myParam2.Value = "0001"
※ :を使って、SQL文内にバインド変数を埋め込む方法もあります ( CommandType.Text を使います ) コロン( : ) を使った場合の引数の処理 :サーバー側のカーソルを取得して使用する
タグ:PL/SQL
|
【VB.NET : データベースの最新記事】
- VB.net : GetSchema メソッドでデータベース内のテーブル一覧と指定したテーブルの列名一覧を取得する
- VB.net : ListView に DB から読み込んだデータをセットする
- VB.net : 一時 PL/SQL で Data Pump Exportユーティリティと同じデータをエクスポートして処理結果を取得する
- VB.net : 一時PL/SQL 内の変数をプログラムでやり取りする
- 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 の実行