我已遵循前面的代码,并尝试调用存储过程
ALTER PROCEDURE [dbo].[sp_test]
@in char(5) = ' ',
@out smallint = 0 output
AS
BEGIN
SET NOCOUNT ON;
SET @out = 100
END
然后在VB6中,我尝试通过以下方式请求此存储过程
strConn = "Select * from TBL where 1=2"
Set rsCmd = objCCS.ExecuteStatement(strConn, adUseServer, adOpenDynamic, adLockBatchOptimistic)
Dim rdoqry_data2 As ADODB.Command
Set rdoqry_data2 = CreateObject("Adodb.command")
Set rdoqry_data2 = rsCmd.ActiveCommand
rdoqry_data2.CommandType = adCmdStoredProc
rdoqry_data2.CommandText = "sp_test"
rdoqry_data2(0).Direction = adParamReturnValue
rdoqry_data2(1).Direction = adParamInput
rdoqry_data2(2).Direction = adParamOutput
rdoqry_data2(2).Type = adSmallInt
rdoqry_data2(1) = "123"
rdoqry_data2.Execute
但它会引发异常 ODBC驱动程序不支持请求的属性。
有人可以找到问题吗?
谢谢。
答案 0 :(得分:0)
异常在哪里确切出现?我猜这是异常,是调用过程sp_test的结果,而不是执行objCCS.ExecuteStatement的结果,对吧?
我从VB6调用存储过程sp_test的方法是:
Dim rdoqry_data2 As ADODB.Command
Set rdoqry_data2 = New ADODB.Command
With rdoqry_data2
Set .ActiveConnection = (your connection object)
.Parameters.Append rdoqry_data2.CreateParameter("@in", adVarchar, adParamInput, 5, "123")
.Parameters.Append rdoqry_data2.CreateParameter("@out", adSmallInt, adParamOutput, 2)
.CommandType = adCmdStoredProc
.CommandText = "sp_test"
.Execute
End With
首先,您必须创建命令对象并为其分配连接对象。在这种情况下,您需要两个参数对象。第一个参数是最大为5个字节(char(5))且内容为“ 123”的输入参数。第二个参数是最大2个字节的大小(smallint)。最后,您必须告诉命令对象调用名称为“ sp_test”的存储过程。
这对您有用吗?