1 Este também é o método mais simples, com dois parâmetros de entrada e nenhum valor de retorno:
definir conexão = server.createobject(adodb.connection)
conexão.abrir algumDSN
Connection.Execute procname varvalue1, varvalue2
'Limpa todos os objetos e libera recursos
conexão.fechar
definir conexão = nada
2 Se você quiser retornar o conjunto de registros:
definir conexão = server.createobject(adodb.connection)
conexão.abrir algumDSN
definir rs = server.createobject(adodb.recordset)
rs.Open Exec procname varvalue1, varvalue2,conexão
'Limpa todos os objetos e libera recursos
rs.fechar
conexão.fechar
setrs = nada
definir conexão = nada
3 Nenhum dos dois métodos acima pode ter um valor de retorno (exceto Recordset). Se desejar obter o valor de retorno, você precisará usar o método Command.
Em primeiro lugar, existem dois tipos de valores de retorno. Uma é retornar diretamente um valor no procedimento armazenado, assim como o valor de retorno da função de C e VB, a outra é retornar vários valores, e os nomes das variáveis para armazenar esses valores precisam ser especificados primeiro nos parâmetros de chamada; .
Este exemplo precisa lidar com vários parâmetros, parâmetros de entrada, parâmetros de saída, conjuntos de registros de retorno e um valor de retorno direto (está completo o suficiente?)
O procedimento armazenado é o seguinte:
usar bares
IR
-- Cria um procedimento armazenado
criar procedimento sp_PubsTest
--Define três variáveis de parâmetro. Observe que a terceira é especialmente marcada para saída.
@au_lname varchar (20),
@intID int,
@intIDOut int SAÍDA
COMO
SELECIONE @intIDOut = @intID + 1
SELECIONE *
DOS autores
ONDE au_lname LIKE @au_lname + '%'
--Retorna um valor diretamente
RETURN @intID + 2
O programa asp que chama esse procedimento armazenado é o seguinte:
<%@Idioma=VBScript%>
<%
Dim CmdSP
Dimado RS
Dim adCmdSPStoredProc
Dim adParamReturnValue
Escurecer adParaminput
Escurecer adParamOutput
Dim adInteger
Dim iVal
Dim oVal
Dim adoField
Dim adVarChar
'Esses valores são constantes predefinidas em VB e podem ser chamadas diretamente, mas não são predefinidas em VBScript
adCmdSPStoredProc = 4
adParamReturnValue = 4
adParaminput = 1
adParamOutput = 2
anúncioInteiro = 3
adVarChar = 200
iVal = 5
oVal = 3
'Cria um objeto de comando
definir CmdSP = Server.CreateObject (ADODB.Command)
'Criar link
CmdSP.ActiveConnection = Driver={SQL Server};server=(local);Uid=sa;Pwd=;Database=Pubs
'Define o nome da chamada do objeto de comando
CmdSP.CommandText = sp_PubsTest
'Defina o tipo de chamada de comando para ser um procedimento armazenado (adCmdSPStoredProc = 4)
CmdSP.CommandType = adCmdSPStoredProc
'Adiciona parâmetros ao objeto de comando
'Define o procedimento armazenado para ter um valor de retorno direto e é um número inteiro. O valor padrão é 4.
CmdSP.Parameters.Append CmdSP.CreateParameter(RETURN_VALUE, adInteger, adParamReturnValue, 4)
'Define um parâmetro de entrada de caracteres
CmdSP.Parameters.Append CmdSP.CreateParameter(@au_lname, adVarChar, adParaminput, 20, M)
'Define um parâmetro de entrada inteiro
CmdSP.Parameters.Append CmdSP.CreateParameter(@intID, adInteger, adParamInput, , iVal)
'Define um parâmetro de saída inteiro
CmdSP.Parameters.Append CmdSP.CreateParameter(@intIDOut, adInteger, adParamOutput, oVal)
'Executa o procedimento armazenado e obtém o conjunto de registros retornado
Definir adoRS = CmdSP.Execute
'Imprime cada registro Os campos são virtuais e podem ser ignorados.
Embora não adoRS.EOF
para cada adoField em adoRS.Fields
Response.Write adoField.Name & = & adoField.Value & <br> & vbCRLF
Próximo
Resposta.Escrever<br>
adoRS.MoveNext
Wend
'Imprime dois valores de saída:
Response.Write <p>@intIDOut = & CmdSP.Parameters(@intIDOut).Value & </p>
Response.Write <p>Valor de retorno = & CmdSP.Parameters(RETURN_VALUE).Value & </p>
'Limpeza geral
Definir adoRS = nada
Definir CmdSP.ActiveConnection = nada
Definir CmdSP = nada
%>
Existem também outras formas, que são um pouco mais tendenciosas, e falaremos delas mais tarde.
Este artigo refere-se a muitos artigos que não estão listados aqui.