Isso substitui qualquer cursor/result set gerados no servidor e permiti uma busca mais eficiente dos dados. Quando você utiliza um Recordset os resultados retornados pela query pela fonte de dados incluem dados e metadados. Freqüentemente os metadados são muito maiores que os dados ou são uma parte significante do resultado da query.
Exemplo de procedure utilizando output:
CREATE PROCEDURE dbo.spSomaTotal
@DataIni datetime,
@DataFin datetime,
@Total int OUTPUT
as
select @Total = count(Valor) from DBTESTE.dbo.tbResultado
where hora_inic >= @DataIni and hora_fim <= @DataFin
GO
Exemplo de código em VB chamando a storedprocedure:
Dim conSQL As ADODB.Connection
Dim cmdSQL As ADODB.Command
Dim prmSQL As ADODB.Parameter
Dim strSQL As String
‘ Abre a conexão com o servidor SQL.
Set conSQL = New ADODB.Connection
With conSQL
.ConnectionString = “Provider=SQLOLEDB.1;Data Source=SRVSQL2000A; Initial Catalog=DBTESTE; Persist Security Info=True;User ID=USER;Password=SENHA”
.CursorLocation = adUseClient
.Open (sConn)
End With
‘ Abre o objeto COMMAND com um parametro
Set cmdSQL = New ADODB.Command
With cmdSQL
.ActiveConnection = conSQL
.CommandText = “spS6SomaTotal”
.CommandType = adCmdStoredProc
End With
‘ Define o parametro de Data INTPUT
Set prmSQL = cmdSQL.CreateParameter(“DataIni”, adDBDate, adParamInput)
cmdSQL.Parameters.Append prmSQL
prmSQL.Value = “2004-10-01”
Set prmSQL = cmdSQL.CreateParameter(“DataIni”, adDate, adParamInput)
cmdSQL.Parameters.Append prmSQL
prmSQL.Value = “2004-11-30”
‘ Define o parametro de retorno Total OUTPUT
Set prmSQL = cmdSQL.CreateParameter(“Total”, adInteger, adParamOutput)
cmdSQL.Parameters.Append prmSQL
cmdSQL.Execute
‘Imprime o valor retornado pelo parâmetro de output
Debug.Print prmSQL.Value
Resultado :
23737
Para mais informações sobre a utilização de parâmetros de OUTPUT em stored procedures consulte o Books Online (BOL) do SQL Server 2000.

