|
' 接続文字列作成
Dim myConnectString As String = _
"Server=localhost/xe;" + _
"User ID=ora01;" + _
"Password=ora01;"
' 接続オブジェクト作成
Dim myCon As New OracleConnection()
' 接続文字列セット
myCon.ConnectionString = myConnectString
' コマンドオブジェクト作成
Dim myCommand As New OracleCommand()
Try
' 接続
myCon.Open()
' 接続とコマンドオブジェクトを関連付ける
myCommand.Connection = myCon
Catch ex As Exception
Console.WriteLine("接続文字列=" + myConnectString)
Console.WriteLine(ex.Message)
Return
End Try
' 一時的に実行される PL/SQL コードを取得
Dim path As String = "..\..\テキストファイル\一時プロシージャテスト.sql"
Dim myReader As New System.IO.StreamReader(path, System.Text.Encoding.Default)
Dim myTempPlsqlCode As String = myReader.ReadToEnd()
myReader.Close()
' CRLF を LF に変更
myTempPlsqlCode = myTempPlsqlCode.Replace(ControlChars.CrLf, ControlChars.Lf)
' コマンドのパラメータをクリア
myCommand.Parameters.Clear()
' コマンドのタイプをテキストに設定
myCommand.CommandType = CommandType.Text
' PL/SQL を設定
myCommand.CommandText = myTempPlsqlCode
' ROWID を取得するパラメータを作成
Dim RET_01 As New OracleParameter("RET_01", OracleType.VarChar)
RET_01.Size = 20 ' 長さ
RET_01.Direction = ParameterDirection.Output
' パラメータを追加
myCommand.Parameters.Add(RET_01)
' シーケンスで設定された番号を取得するパラメータ
Dim RET_02 As New OracleParameter("RET_02", OracleType.Number)
RET_02.Direction = ParameterDirection.Output
' パラメータを追加
myCommand.Parameters.Add(RET_02)
' sysdate 関数で設定された、更新日と更新時刻を取得するパラメータ
Dim RET_03 As New OracleParameter("RET_03", OracleType.DateTime)
RET_03.Direction = ParameterDirection.Output
' パラメータを追加
myCommand.Parameters.Add(RET_03)
' 実行
Try
myCommand.ExecuteNonQuery()
Catch ex As Exception
Console.WriteLine(ex.Message)
myCon.Close()
Return
End Try
' パラメータで取得された情報の表示
Console.WriteLine(RET_01.Value.ToString())
Console.WriteLine(RET_02.Value.ToString())
Console.WriteLine(RET_03.Value.ToString())
Dim rowid As OracleString
' コマンドのパラメータをクリア
myCommand.Parameters.Clear()
myCommand.CommandText = _
"INSERT INTO 採番テストテーブル" + _
" (伝票番号, 更新日)" + _
" VALUES(伝票番号.NEXTVAL,sysdate)"
' ROWID のみを取得する実行
Try
myCommand.ExecuteOracleNonQuery(rowid)
Catch ex As Exception
Console.WriteLine(ex.Message)
myCon.Close()
Return
End Try
' ROWID の表示
Console.WriteLine(rowid.Value.ToString())
' 接続解除
If myCon.State = ConnectionState.Open Then
myCon.Close()
End If
| |