Oracle データベースでストアド プロシージャを実行するコンソール vb.net プログラムの作成に問題があります。ストアド プロシージャがコード内にハード コードされている場合は、これを行うことができます。問題は、ストアド プロシージャをベンダー プログラムのパラメーターに配置する必要があることです。現在、これを行うために VB6 プログラムを使用しています。現在、彼らはこの vb6 プログラムを .NET に変換したいと考えていますが、その方法がわかりません。以下のアプローチを試しましたが、サードパーティ プログラムからコマンド パラメータが渡されません。
例。これは、サードパーティ プログラムのスクリーンショットです。
PLSQLSUB.exe プログラムは、ストアド プロシージャ CNC_UNLOCK_USERS を呼び出す vb6 です。
これは VB6 コードです。これは現在動作していますが、VB.NET で外部パラメータを渡す方法がわかりません。
Private Sub Form_Load()
Dim cnTrecs As New ADODB.Connection
Dim QY As New ADODB.Command
Dim I As Integer
Dim Procedures(10) As String
Dim ColonPos As Integer
Dim CommLine As String
Dim CommLength As Integer
Dim StartPos As Integer
Dim FileName As String
Dim CheckForFile As String
Dim User As String
Dim Pass As String
Dim Userid As String
Dim Password As String
Dim PLSCount As Integer
PLSCount = 0
CommLine = Command()
CommLength = Len(Trim(CommLine))
If Trim(CommLine) <> "" Then
StartPos = 1
For I = 1 To 10
ColonPos = InStr(StartPos, Trim(CommLine), ";")
If ColonPos > 0 Then
Procedures(I) = Mid(CommLine, StartPos, ColonPos - StartPos)
PLSCount = PLSCount + 1
StartPos = ColonPos + 1
ElseIf I > 1 Then
If (CommLength - StartPos) > 0 Then
Procedures(I) = Mid(CommLine, StartPos, CommLength - StartPos)
MsgBox (Procedures(I))
PLSCount = PLSCount + 1
Exit For
Else
Exit For
End If
Else
Procedures(I) = Trim(CommLine)
PLSCount = PLSCount + 1
Exit For
End If
Next
Exit Sub
Else
Unload Me
Exit Sub
End If
CheckForFile = Dir("C:\VB\vbtext1.txt")
If CheckForFile <> "" Then FileName = "d:\VB\vbtext1.txt"
Open FileName For Input As #5 ' Open UserID and Password file.
Line Input #5, Userid
Line Input #5, Password
Close #5
End If
User = Mid(Userid, 1) ' Set database userID
Pass = Mid(Password, 1) ' Set database password
cnTrecs.Open "DSN=PLSQLSUB;" _
& "Uid=" _
& Trim$(User) & ";PWD=" _
& Trim$(Pass)
For I = 1 To PLSCount ' Loop until end of plsql procedures
Print #1, "The Stored Procedure " & Procedures(I) & " was submitted for execution
on/at "; Format(Now, "dd-mmm-yyyy hh:mm:ss")
Set QY.ActiveConnection = cnTrecs
QY.CommandType = adCmdStoredProc
QY.CommandText = Procedures(I)
QY.Execute
Print #1, "The Stored Procedure " & Procedures(I) & " completed execution on/at ";
Format(Now, "dd-mmm-yyyy hh:mm:ss")
Print #1, " "
Next I
If cnTrecs.State = adStateOpen Then
cnTrecs.Close
End If
End Sub
友人が以下のコードの使用について教えてくれましたが、ストアド プロシージャを渡すことができませんでした。どんな助けでも大歓迎です。
Dim CommandLineArgs As System.Collections.ObjectModel.ReadOnlyCollection(Of String) = My.Application.CommandLineArgs
For i As Integer = 0 To CommandLineArgs.Count - 1
MessageBox.Show("The stored procedure is: " + CommandLineArgs(i))
Next