【发布时间】:2015-11-13 03:29:18
【问题描述】:
我在 SQL Server 中有一个无法编辑的存储过程。要在 SQL Server 中执行,我必须传递一个参数,这是强制性的。如果我使用“1”,程序将以打印模式运行,而实际程序将以“0”运行。我编写了以下代码,该代码执行时没有错误,并捕获存储过程成功运行但处于打印模式的日志。
请告诉我传递参数'0'需要做的改变
Sub RunProc()
Dim con As ADODB.Connection
Dim cmd As ADODB.Command
Dim rs As ADODB.Recordset
Set con = New ADODB.Connection
Set cmd = New ADODB.Command
Set rs = New ADODB.Recordset
Set objSheet = ThisWorkbook.Sheets("Queries")
strServerNAme = CStr(objSheet.Cells(4, 2).Value)
strDatabase = CStr(objSheet.Cells(5, 2).Value)
strProcName = CStr(objSheet.Cells(6, 2).Value)
' Log into our SQL Server, and run the Stored Procedure
strConnection = "Driver={SQL Server}; Server=" & strServerNAme & "; Database=" & strDatabase & " ;"
con.Open strConnection
cmd.ActiveConnection = con
cmd.Parameters.Append cmd.CreateParameter(, adBoolean, adParamInput, False)
cmd.CommandText = strProcName
Set rs = cmd.Execute(, , adCmdStoredProc)
con.Close
Set con = Nothing
End Sub
【问题讨论】:
-
如果您能向我们展示存储过程的标头(过程主体之前的
CREATE PROC ...内容)将会很有帮助。 -
根据this,CreateParameter 需要5 个参数:
CreateParameter (Name, Type, Direction, Size, Value)。看起来您缺少一个,因此当您的意思是 False 作为值时,您可能会将 False 作为 Size 传递 -
实际方式:
CreateParameter (Name, Type, Direction, Size, Value)。看起来我错过了一个。所以在改变之后..它wotked
标签: sql-server excel vba stored-procedures parameter-passing