昨天有位久未谋面的老同学,突然问起如何在VB中调用SQL的存储过程。
当时因为手上没有资料,机器上也没装SQL,随即发了早年写的一段ASP代码,也不知道行不行。
抱着负责任的态度,刚好又有点空闲,便做了个测试:
(说来惭愧,N久没用VB了,居然不知道怎么加入ADODB类型库了,就填加了一个ADODC控件,汗颜~```)

Private Sub ExampleButton_Click()
Dim sqlConn As New ADODB.Connection
Dim sqlCmd As New ADODB.Command
Dim myParam As ADODB.Parameter
Dim sqlRs As ADODB.Recordset
Dim sqlCmdStr As String

sqlConn.Open "driver={SQL Server};server=127.0.0.1;database=master;uid=sa;pwd=密码我是不会随便告诉别人的啦:)"
sqlCmd.ActiveConnection = sqlConn
sqlCmd.CommandText = "sp_executesql"
sqlCmd.CommandType = adCmdStoredProc
sqlCmdStr = "SELECT * FROM sysmessages WHERE error>=100 AND error<=120"
Set myParam = sqlCmd.CreateParameter("@statement", adBSTR, adParamInput, Len(sqlCmdStr))
myParam.Value = sqlCmdStr
sqlCmd.Parameters.Append myParam
Set sqlRs = sqlCmd.Execute

sqlRs.MoveFirst
While Not sqlRs.EOF
    MsgBox sqlRs.Fields(0).Value & ",,," & sqlRs.Fields(3).Value
    sqlRs.MoveNext
Wend
End Sub

哈哈,居然成功了(不禁又自我陶醉了一番)。
虽然没什么技术含量,不过还是再次申明一下:
其实调用存储过程最重要的就是参数的正确性,比如参数名称,参数类型啊等等。
幸好这些都是有资料可以查的,可以查SQL手册,或者如果有耐心一点,也可以通过不断的尝试得出正确的答案(哈哈,废话)。