Es ist nicht möglich, sp_prepare über ADODB aus Visual Basic auszuführen

Ich kann den Griff-Wert nicht an sp_execute übergeben. Wenn ich den SQL-Code direkt mit Management Studio verwende, folge ich:

Declare @handle Integer exec sp_prepare @handle OUTPUT, N'@year int', N'SELECT * from Sales.CreditCard where ExpYear=@year'; select @handle exec sp_execute @handle, 2007 exec sp_unprepare @handle 

aber wenn ich den folgenden Code auf VB ausprobiere, "param3.Value" ist "nichts", nachdem der Befehl ausgeführt wird.

  ConnString = "DRIVER={SQL server};SERVER=192.168.100.41,1433;UID=sa;PWD=<password>;DATABASE=AdventureWorks" 'create an instance of the ADO connection Connection = CreateObject("ADODB.Connection") 'Open the connection to the database Connection.Open(ConnString) Dim cmd As ADODB.Command Dim param1 As ADODB.Parameter Dim param2 As ADODB.Parameter Dim param3 As ADODB.Parameter cmd = CreateObject("ADODB.Command") cmd.ActiveConnection = Connection cmd.CommandText = "sp_prepare" param1 = cmd.CreateParameter("@handle", 3, 2, 4, 0) param2 = cmd.CreateParameter("@params", 202, 1, 200, "@year Integer") param3 = cmd.CreateParameter("stmt", 202, 1, 200, "SELECT TOP 4 [CreditCardID],[CardType],[CardNumber],[ModifiedDate] FROM [AdventureWorks].[Sales].[CreditCard] where [ExpYear] in (@year)") cmd.Parameters.Append(param1) cmd.Parameters.Append(param2) cmd.Parameters.Append(param3) cmd.Execute() Debug.WriteLine("handle:" & param1.Value) 

Weißt du, wie man es auf VB macht? Der Grund, warum ich das von VB ausführen, ist, dass ich den Befehl benötige, um über RPC laufen zu lassen.

   

Versuche zu ändern:

  param1 = cmd.CreateParameter("@handle", 3, 2, 4, 0) 

nach

 param1 = cmd.CreateParameter("@handle", 3, 4, 4, 0) 

das ist eine Änderung in ParameterDirection . Wenn Sie bemerkt haben, dass sp_prepare handle sp_prepare , aber nicht angezeigt wird, und wenn Sie nicht aufrufen, select @handle