数据库的存储过程:
CREATE Procedure SP_GetNewOrderID
@sOrderType char(2),
@sNewOrderID varchar(16) output
As
...
VB工程中的函数:
Public Function GetNewOrderID(ByVal OrderType As String) As String
Dim conn As New Connection
Dim cmd As New Command
Dim NewOrderID As String
Dim param As New Parameter
Dim retval As Variant
conn.Open GetConnStr()
cmd.ActiveConnection = conn cmd.CommandText = "SP_GetNewOrderID" cmd.CommandType = adCmdStoredProc '返回值 'Set param = cmd.CreateParameter("retval", adInteger, adParamReturnValue, 4) 'cmd.Parameters.Append param '输入参数 ,OrderType为传入该函数的参数 Set param = cmd.CreateParameter("sOrderType", adChar, adParamInput, 2, OrderType) cmd.Parameters.Append param '输出参数 Set param = cmd.CreateParameter("sNewOrderID", adChar, adParamOutput, 16) cmd.Parameters.Append param Set retval = cmd.Execute()
NewOrderID = cmd.Parameters("sNewOrderID").Value
GetNewOrderID = NewOrderID
end function存储过程是可以确保没错的。可是得到的函数返回值为空,不知为什么
CREATE Procedure SP_GetNewOrderID
@sOrderType char(2),
@sNewOrderID varchar(16) output
As
...
VB工程中的函数:
Public Function GetNewOrderID(ByVal OrderType As String) As String
Dim conn As New Connection
Dim cmd As New Command
Dim NewOrderID As String
Dim param As New Parameter
Dim retval As Variant
conn.Open GetConnStr()
cmd.ActiveConnection = conn cmd.CommandText = "SP_GetNewOrderID" cmd.CommandType = adCmdStoredProc '返回值 'Set param = cmd.CreateParameter("retval", adInteger, adParamReturnValue, 4) 'cmd.Parameters.Append param '输入参数 ,OrderType为传入该函数的参数 Set param = cmd.CreateParameter("sOrderType", adChar, adParamInput, 2, OrderType) cmd.Parameters.Append param '输出参数 Set param = cmd.CreateParameter("sNewOrderID", adChar, adParamOutput, 16) cmd.Parameters.Append param Set retval = cmd.Execute()
NewOrderID = cmd.Parameters("sNewOrderID").Value
GetNewOrderID = NewOrderID
end function存储过程是可以确保没错的。可是得到的函数返回值为空,不知为什么
http://blog.csdn.net/online/archive/2004/08/05/66376.aspx到底是返回值还是输出参数?
mConn.CursorLocation = adUseClient '设置为客户端代码已经测试,没有问题Set param = cmd.CreateParameter("sNewOrderID", advarChar, adParamOutput, 16)
我加了 mConn.CursorLocation = adUseClient '设置为客户端
马上就可以了,不知为什么要这样设置?
准备好而後传回Client端