如果我調用存儲過程由正確的方式來傳遞的字符串CreateParameter
DECLARE @return_value int
EXEC @return_value = [dbo].[GetValueProc]
@startDate = '1/1/2010',
@endDate = '12/31/2010',
@groupNo = N'02'
SELECT 'Return Value' = @return_value
從SQL命令窗口,它的偉大工程,但使用VB6它返回一個空的記錄集。
Dim cmd As New ADODB.Command
Set cmd.ActiveConnection = cn
cmd.CommandText = "GetValueProc"
cmd.CommandType = adCmdStoredProc
cmd.Parameters.Append cmd.CreateParameter("@startDate", adDate, adParamInput, 0, startDate)
cmd.Parameters.Append cmd.CreateParameter("@endDate", adDate, adParamInput, 0, endDate)
cmd.Parameters.Append cmd.CreateParameter("@groupNo", adVarChar, adParamInput, 3, "02")
Set RstRecordSet = New ADODB.Recordset
With RstRecordSet
.CursorType = adOpenStatic
.CursorLocation = adUseClient
.LockType = adLockOptimistic
.Open cmd
End With
我從vb獲得一個空的記錄集。但是,從sql命令窗口它按預期工作。
注意:如果我用有問題的參數註釋掉該行,它也會按預期工作。
存儲過程是這樣的:
ALTER PROCEDURE [dbo].[GetValueProc]
@startDate as date,
@endDate as date,
@proposalNo nvarchar(30) = null,
@groupNo nvarchar(3) = null
select...
where ...
and j.[Global Dimension 1 Code] = COALESCE(@groupNo,[Global Dimension 1 Code])
[全球尺寸代碼1]是一個varchar(20)
我也曾嘗試
cmd.Parameters.Append cmd.CreateParameter("@groupNo", adVarChar, adParamInput, 4, "'02'")
沒有幫助。
任何關於傳遞參數的正確方法的幫助將會很棒!
感謝