У меня есть следующая хранимая процедура.Возврат хранимой процедуры, ado, access, vba
create procedure dbo.sp_getDailyStats
@Rundate varchar(10), @PrevRunDate varchar(10) OUTPUT
as
Declare @Claims bigint;
declare @Days bigint;
declare @Claims_Completed_prev bigint;
declare @Claim_inventory bigint;
declare @Inv30 bigint;
declare @Inv30NP bigint
declare @InvNP bigint
set @PrevRundate=convert(varchar(10),dbo.getPreviousBusinessDate(@Rundate),101)
----- not the whole code.
Я запустить его из командной строки следующим образом:
declare @myvare varchar(10)
declare @InputDate varchar(10)
set @InputDate='06/10/2015'
exec dbo.sp_getDailystats @InputDate, @myvare output
select @myvare; and it returns the previous date to @myware but I have to put output on that line to make it work.
Ниже мой лукаво код:
Dim cn As New ADODB.Connection
Dim cmd As New ADODB.Command
Dim rs As New ADODB.Recordset
Dim Newdate As String
Newdate = "06/10/2015"
Dim Prevdate As String
cn.Open "Provider=sqloledb; " & _
"Data Source=" & "BLD-FS-SQLVS01\PRDINST1, 4020" & ";" & _
"Initial Catalog=" & "HNFS_NetProv" & ";" & _
"Integrated Security=SSPI;"
Set cmd.ActiveConnection = cn
cmd.CommandText = "sp_getDailyStats"
cmd.CommandType = adCmdStoredProc
cmd.Parameters(1) = Newdate
rs.CursorType = adOpenStatic
rs.CursorLocation = adUseClient
rs.LockType = adLockOptimistic
Set rs = cmd.Execute
Prevdate = cmd(2)
Set rs = Nothing
Set cn = Nothing
Ado автоматически распознает, что у меня есть два параметра, но не возвращается cmd (2)
Как я могу получить свою ценность? Все примеры, которые я вижу, хотят, чтобы я добавлял/создавал параметры, которые мне не нужно делать. Мне просто нужно, чтобы парасектер появился, но у меня нет способа вывода результатов на процедуру.
Примечание: вы не должны ** использовать префикс 'sp_' для ваших хранимых процедур. Microsoft [зарезервировала этот префикс для собственного использования (см. * Именование сохраненных процедур *)] (http://msdn.microsoft.com/en-us/library/ms190669%28v=sql.105%29.aspx) и вы рискуете столкнуться с именем когда-нибудь в будущем. [Это также плохо для производительности вашей хранимой процедуры] (http://www.sqlperformance.com/2012/10/t-sql-queries/sp_prefix). Лучше просто просто избегать 'sp_' и использовать что-то еще в качестве префикса - или никакого префикса вообще! –
Результат: SELECT'ing вне процедуры не является параметром out. Это набор результатов, точно так же, как если бы вы выбрали одно поле из фактической таблицы. Посмотрите, что может быть в «rs» после инструкции Execute(). –