|
Imports System.Data.OracleClient
Module Module1
Sub Main()
Dim OraDatabase As New OracleConnection()
Dim OraCommand As New OracleCommand()
Dim Query As String = Nothing
' *******************************************
' 接続
' *******************************************
' 接続文字列
OraDatabase.ConnectionString = _
"Server=night/xe;" + _
"User ID=LB;" + _
"Password=LB;"
Try
OraDatabase.Open()
OraCommand.Connection = OraDatabase
' コマンドをSQL用に変更
OraCommand.CommandType = CommandType.Text
Catch ex As Exception
Console.WriteLine("1:" & ex.Message)
' デバッグ用一時停止
Console.ReadLine()
Return
End Try
' *******************************************
' DBMS_OUTPUT の結果を取得する為に 使用可能にする
' *******************************************
Query = "BEGIN DBMS_OUTPUT.ENABLE(); END;"
OraCommand.CommandText = Query
Try
OraCommand.ExecuteNonQuery()
Catch ex As Exception
OraDatabase.Close()
Console.WriteLine("2:" & ex.Message)
' デバッグ用一時停止
Console.ReadLine()
Return
End Try
' *******************************************
' 一時PL/SQL
' *******************************************
' コマンドをSQL用に変更
OraCommand.CommandType = CommandType.Text
' 一時PL/SQL を SQL として実行
Query = "DECLARE WK_KEY VARCHAR2(4) := '0001';"
Query &= " WK_NAME VARCHAR2(50);"
Query &= " BEGIN"
Query &= " SELECT 氏名 INTO WK_NAME"
Query &= " FROM 社員マスタ"
Query &= " where 社員コード = WK_KEY;"
Query &= " DBMS_OUTPUT.PUT_LINE(WK_NAME);"
Query &= " END;"
OraCommand.CommandText = Query
' 一時PL/SQL の実行
Try
OraCommand.ExecuteNonQuery()
Catch ex As Exception
OraDatabase.Close()
Console.WriteLine("3:" & ex.Message)
' デバッグ用一時停止
Console.ReadLine()
Return
End Try
' *******************************************
' DBMS_OUTPUT の結果を取得する
' *******************************************
' パラメータをリセット
OraCommand.Parameters.Clear()
' コマンドをプロシージャ用に変更
OraCommand.CommandType = CommandType.StoredProcedure
OraCommand.CommandText = "DBMS_OUTPUT.GET_LINE"
' パラメータの設定(1)
Dim PARAM As OracleParameter = _
New OracleParameter("line", OracleType.VarChar)
PARAM.Direction = ParameterDirection.Output
PARAM.Size = 200
OraCommand.Parameters.Add(PARAM)
' パラメータの設定(2)
Dim STATUS As OracleParameter = _
New OracleParameter("status", OracleType.Number)
STATUS.Direction = ParameterDirection.Output
OraCommand.Parameters.Add(STATUS)
' 実行
Try
OraCommand.ExecuteNonQuery()
Catch ex As Exception
OraDatabase.Close()
Console.WriteLine("4:" & ex.Message)
' デバッグ用一時停止
Console.ReadLine()
Return
End Try
' DBMS_OUTPUT を取得
Do While STATUS.Value = 0
Console.WriteLine(PARAM.Value.ToString())
Try
OraCommand.ExecuteNonQuery()
Catch ex As Exception
Exit Do
End Try
Loop
' パラメータをリセット
OraCommand.Parameters.Clear()
OraDatabase.Close()
' デバッグ用一時停止
Console.ReadLine()
End Sub
End Module
| |