Hay muchos artículos sobre ASP y procedimientos almacenados (Procedimientos almacenados), pero dudo que los autores realmente los hayan practicado. Cuando era principiante, consulté mucha información relevante y descubrí que muchos de los métodos proporcionados no eran los mismos en la práctica. Para aplicaciones simples, estos materiales pueden ser útiles, pero se limitan a esto porque son básicamente iguales y se copian entre sí. Para aplicaciones un poco más complejas, no son claros.
Ahora, básicamente accedo a SQL Server llamando a procedimientos almacenados. El siguiente texto es un resumen de la práctica, espero que sea útil para todos.
Un procedimiento almacenado es uno o más comandos SQL almacenados en la base de datos como objetos ejecutables.
Las definiciones son siempre abstractas. Un procedimiento almacenado es en realidad un conjunto de declaraciones SQL que pueden completar ciertas operaciones, pero este conjunto de declaraciones se coloca en la base de datos (aquí solo hablamos de SQL Server). Si creamos procedimientos almacenados y llamamos a procedimientos almacenados en ASP, podemos evitar mezclar declaraciones SQL con código ASP. Hay al menos tres beneficios al hacer esto:
primero, mejora enormemente la eficiencia. La velocidad de ejecución del procedimiento almacenado en sí es muy rápida y llamar al procedimiento almacenado puede reducir en gran medida la cantidad de interacciones con la base de datos.
En segundo lugar, mejorar la seguridad. Si mezcla sentencias SQL en código ASP, una vez que el código se ve comprometido, también significa que la estructura de la biblioteca está comprometida.
En tercer lugar, favorece la reutilización de declaraciones SQL.
En ASP, los procedimientos almacenados generalmente se llaman a través de objetos de comando. Dependiendo de la situación, este artículo también presenta otros métodos de llamada. Para facilitar la explicación, se realiza la siguiente clasificación simple según la entrada y salida del procedimiento almacenado:
1. El procedimiento almacenado que solo devuelve un único conjunto de registros
asume el siguiente procedimiento almacenado (el propósito de este artículo no es describir Sintaxis T-SQL, por lo que el procedimiento almacenado solo proporciona el código, sin explicación):
/*SP1*/
CREATE PROCEDURE dbo.getUserList
as
set nocount on
start
select * from dbo.[userinfo]
end
go
El procedimiento almacenado anterior obtiene todos los registros en la tabla de información de usuario y devuelve un conjunto de registros. El código ASP para llamar al procedimiento almacenado a través del objeto de comando es el siguiente:
'**Llamar al procedimiento almacenado a través del objeto de comando**
DIM MyComm,MyRst
Set MyComm = Server.CreateObject("ADODB.Command")
MyComm.ActiveConnection = MyConStr 'MyConStr es la conexión de la base de datos String
MyComm.CommandText = "getUserList" 'Especifique el nombre del procedimiento almacenado
MyComm.CommandType = 4 'Indica que se trata de un procedimiento almacenado
MyComm.Prepared = true 'Requiere que el comando SQL se compile primero
Establecer MyRst = MyComm.Execute
Set MyComm = Nada
de procedimiento almacenado El conjunto de registros obtenido se asigna a MyRst. A continuación, se puede operar MyRst.
En el código anterior, el atributo CommandType indica el tipo de solicitud. El valor y la descripción son los siguientes:
-1 indica que el tipo del parámetro CommandText no se puede determinar
1 indica que el parámetro CommandText es un tipo de comando general
2 indica que el. El parámetro CommandText es un nombre de tabla existente
4 indica que el parámetro CommandText es El nombre de un procedimiento almacenado
también puede llamar al procedimiento almacenado a través del objeto Connection o del objeto Recordset. Los métodos son los siguientes:
'**Llame al procedimiento almacenado a través de Connection. objeto**
DIM MyConn,MyRst
Set MyConn = Server.CreateObject("ADODB.Connection")
MyConn .open MyConStr 'MyConStr es la cadena de conexión de la base de datos
Set MyRst = MyConn.Execute("getUserList",0,4) 'El último parámetro tiene el mismo significado que CommandType
Set MyConn = Nothing
'**Llamar al procedimiento almacenado a través del objeto Recordset**
DIM MyRst
Set MyRst = Server.CreateObject("ADODB.Recordset")
MyRst.open "getUserList",MyConStr,0,1 ,4
'MyConStr es la cadena de conexión de la base de datos, el último parámetro tiene el mismo significado que CommandType
2. No hay almacenamiento de entrada y salida. Consulte el siguiente procedimiento almacenado para el proceso
:
/*SP2*/
CREATE PROCEDURE dbo.delUserAll
as
set nocount on
start
delete from dbo.[userinfo]
end
go
Este procedimiento almacenado elimina todos los registros en la tabla de información de usuario sin ninguna entrada o salida. Llamada El método es básicamente el mismo que el mencionado anteriormente, excepto que no es necesario obtener el conjunto de registros. :
'**Llame al procedimiento almacenado a través del objeto Comando**
DIM MyComm
Set MyComm = Server.CreateObject("ADODB.Command")
MyComm.ActiveConnection = MyConStr 'MyConStr es la cadena de conexión de la base de datos
MyComm.CommandText = "delUserAll" 'Especificar el nombre del procedimiento almacenado
MyComm.CommandType = 4 'Indica que se trata de un procedimiento almacenado
MyComm.Prepared = true 'Requiere que el comando SQL se compile primero
MyComm.Execute 'No es necesario obtener el registro establecido aquí
Set MyComm = Nothing
Por supuesto, Estos procedimientos almacenados también se pueden llamar a través del objeto Connection o del objeto Recordset, pero el objeto Recordset se crea para obtener el conjunto de registros. Si no se devuelve el conjunto de registros, es mejor utilizar el objeto Command.
3.Al realizar operaciones similares a SP2,
los procedimientos almacenados con valores de retorno
deben aprovechar al máximo las potentes capacidades de procesamiento de transacciones de SQL Server para mantener la coherencia de los datos.Además, es posible que necesitemos que el procedimiento almacenado devuelva el estado de ejecución. Para este fin, modifique SP2 de la siguiente manera:
/*SP3*/
CREAR PROCEDIMIENTO dbo.delUserAll
como
establecido nocount al
comenzar
BEGIN TRANSACTION
eliminar de dbo.[userinfo]
IF error=. 0
comenzar
COMMIT TRANSACTION
regresar 1
terminar
ELSE
comenzar
ROLLBACK TRANSACTION
regresar 0
terminar
regresar
terminar
ir
El procedimiento almacenado anterior devuelve 1 cuando la eliminación se ejecuta correctamente; de lo contrario, devuelve 0 y realiza la operación de reversión. Para obtener el valor de retorno en ASP, necesita usar la colección Parameters para declarar los parámetros:
'**Llame al procedimiento almacenado con el valor de retorno y obtenga el valor de retorno**
DIM MyComm,MyPara
Set MyComm = Server.CreateObject ("ADODB.Command")
MyComm.ActiveConnection = MyConStr 'MyConStr es la cadena de conexión de la base de datos
MyComm.CommandText = "delUserAll" 'Especifique el nombre del procedimiento almacenado
MyComm.CommandType = 4 'Indica que se trata de un procedimiento almacenado
MyComm.Prepared = true 'Requiere que los comandos SQL se compilen primero
' declaración Valor de retorno
Set Mypara = MyComm.CreateParameter("RETURN",2,4)
MyComm.Parameters.Append MyPara
MyComm.Execute
'Obtener el valor de retorno
DIM retValue
retValue = MyComm(0) ' o retValue = MyComm.Parameters(0)
Establecer MyComm = Nothing
En MyComm.CreateParameter("RETURN",2,4), el significado de cada parámetro es el siguiente:
El primer parámetro ("RETURE") es el nombre del parámetro. El nombre del parámetro se puede establecer arbitrariamente, pero generalmente debe ser el mismo que el nombre del parámetro declarado en el procedimiento almacenado. Aquí está el valor de retorno, que normalmente establezco en "RETURE";
el segundo parámetro (2) indica el tipo de datos del parámetro. Para códigos de tipo específicos, consulte la referencia de ADO. El siguiente es un código de tipo de uso común.
adBigInt: 20;
adBinary
: 128;
adInteger
:
3
;
adTinyInt
: 16;
adVarChar
: 200;
se puede tomar, y -1 a - 99 es un valor reservado;
el tercer parámetro (4) indica la naturaleza del parámetro, donde 4 indica que se trata de un valor de retorno. La descripción del valor de este parámetro es la siguiente:
0: el tipo no se puede determinar; 1: parámetro de entrada; 2: parámetro de entrada 3: parámetro de entrada o salida 4: valor de retorno
Se debe decir que el código ASP anterior; ser un código completo, también es el código más complejo. De hecho,
Set Mypara = MyComm.CreateParameter("RETURN",2,4)
MyComm.Parameters.Append MyPara
se puede simplificar a
MyComm.Parameters.Append MyComm.CreateParameter(. "RETURN",2,4)
o incluso Puedes seguir simplificando, lo que se explicará más adelante.
Para los procedimientos almacenados con parámetros, solo se pueden llamar usando el objeto Command (también hay información de que se pueden llamar a través del objeto Connection o del objeto Recordset, pero no lo he probado).
4. El valor de retorno de un procedimiento almacenado con parámetros de entrada y parámetros de salida
es en realidad un parámetro de salida especial. En la mayoría de los casos, utilizamos procedimientos almacenados que tienen parámetros de entrada y salida. Por ejemplo, queremos obtener el nombre de usuario de un usuario con una determinada ID en la tabla de información del usuario. --ID de usuario y un parámetro de salida----nombre de usuario. El procedimiento almacenado para implementar esta función es el siguiente:
/*SP4*/
CREAR PROCEDIMIENTO dbo.getUserName
@UserID int,
@UserName varchar(40) salida
como
set nocount al
comenzar
si @UserID es nulo return
select @UserName=nombre de usuario
de dbo .[ userinfo]
donde userid=@UserID
return
end
go
El código ASP para llamar al procedimiento almacenado es el siguiente:
'**Llamar al procedimiento almacenado con parámetros de entrada y salida**
DIM MyComm,UserID,UserName
UserID = 1
Set MyComm = Server.CreateObject(" ADODB.Command")
MyComm.ActiveConnection = MyConStr 'MyConStr es la cadena de conexión de la base de datos
MyComm.CommandText = "getUserName" 'Especifique el nombre del procedimiento almacenado
MyComm.CommandType = 4 'Indica que se trata de un procedimiento almacenado
MyComm. Prepared = true 'Requiere SQL Compile primero el comando
y declare los parámetros
MyComm.Parameters.append MyComm.CreateParameter("@UserID",3,1,4,UserID)
MyComm.Parameters.append MyComm.CreateParameter("@UserName", 200,2,40)
MyComm Ejecutar
'Obtener los parámetros
UserName = MyComm(1)
Establecer MyComm = Nothing
En el código anterior, puede ver que, a diferencia de declarar el valor de retorno, se requieren 5 parámetros al declarar parámetros de entrada y 4. Los parámetros son necesarios al declarar los parámetros de salida. Al declarar parámetros de entrada, los cinco parámetros son: nombre del parámetro, tipo de datos del parámetro, tipo de parámetro, longitud de los datos y valor del parámetro. Al declarar un parámetro de salida, no hay un último parámetro: el valor del parámetro.
Se debe prestar especial atención a: al declarar parámetros, el orden debe ser el mismo que el definido en el procedimiento almacenado, y el tipo de datos y la longitud de cada parámetro también deben ser los mismos que los definidos en el procedimiento almacenado.
Si el procedimiento almacenado tiene múltiples parámetros, el código ASP parecerá engorroso. Puede usar el comando with para simplificar el código:
'**Llamar a un procedimiento almacenado con parámetros de entrada y salida (código simplificado)**
DIM MyComm,UserID,UserName.
UserID = 1
Establezca MyComm = Server.CreateObject("ADODB.Command")
con MyComm
.ActiveConnection = MyConStr 'MyConStr es la cadena de conexión de la base de datos.CommandText
= "getUserName" 'Especifique el nombre del procedimiento almacenado.CommandType
= 4 'Indica que esto es un procedimiento almacenado.Prepared
= true 'Requiere que el comando SQL se compile primero.Parameters.append
.CreateParameter("@UserID",3,1,4,UserID)
.Parameters.append .CreateParameter("@UserName",200, 2,40)
.Execute
end with
UserName = MyComm(1)
Set MyComm = Nothing
Si queremos obtener los nombres de usuario de 10 usuarios con ID del 1 al 10, ¿necesitamos crear el objeto Comando 10 veces? No. Si necesita llamar al mismo procedimiento almacenado varias veces, simplemente cambie los parámetros de entrada y obtendrá diferentes resultados:
'**Múltiples llamadas al mismo procedimiento almacenado**
DIM MyComm,UserID,UserName
UserName = ""
Set MyComm = Server .CreateObject( "ADODB.Command")
para UserID = 1 a 10
con MyComm
.ActiveConnection = MyConStr 'MyConStr es la cadena de conexión de la base de datos.CommandText
= "getUserName" 'Especifique el nombre del procedimiento almacenado.CommandType
= 4 'Indica que se trata de un procedimiento almacenado.Prepared
= true 'Requiere que los comandos SQL se compilen primero
si UserID = 1 y luego
.Parameters.append .CreateParameter("@UserID",3,1,4,UserID)
.Parameters.append .CreateParameter("@UserName" ,200,2,40 )
.Ejecutar
else
'Reasigne los parámetros de entrada (los parámetros de entrada y los parámetros de salida cuyos valores de parámetros no cambian en este momento no necesitan volver a declararse)
.Parameters("@UserID") = UserID
.Ejecutar
end if
end with
UserName = UserName + MyComm( 1) + "," 'Tal vez le guste usar una matriz para almacenar
el siguiente
Set MyComm = Nothing
Comopuede ver en el código anterior: al llamar al mismo procedimiento almacenado. repetidamente, solo necesita reasignar los parámetros de entrada cuyos valores han cambiado. Este método es Cuando hay múltiples parámetros de entrada y salida, y el valor de solo un parámetro de entrada cambia cada vez que se llama, la cantidad de código puede ser. muy reducido.
5. Procedimientos almacenados que tienen valores de retorno, parámetros de entrada y parámetros de salida al mismo tiempo. Como
se mencionó anteriormente, al llamar a un procedimiento almacenado, el orden en que se declaran los parámetros debe ser el mismo que el orden definido en el procedimiento almacenado. . Otro punto al que prestar especial atención: si el procedimiento almacenado tiene un valor de retorno y parámetros de entrada y salida, el valor de retorno debe declararse primero.
Para demostrar el método de llamada en este caso, mejoremos el ejemplo anterior. Todavía obtengo el nombre de usuario del usuario con ID 1, pero es posible que el usuario no exista (el usuario ha sido eliminado y el ID de usuario es un campo que aumenta automáticamente). El procedimiento almacenado devuelve diferentes valores dependiendo de si el usuario existe o no. En este momento, el procedimiento almacenado y el código ASP son los siguientes:
/*SP5*/
CREATE PROCEDURE dbo.getUserName
--Para profundizar la impresión de "secuencia", invierta el orden de definición de los dos parámetros siguientes
@UserName varchar( 40) salida,
@UserID int
como
set nocount al
comenzar
si @UserID es nulo return
select @UserName=nombre de usuario
de dbo.[userinfo]
donde userid=@UserID
si rowcount> 0
devuelve 1
de lo contrario
devuelve 0
return
end
go
'**The la llamada tiene valor de retorno y entrada Procedimientos almacenados para parámetros y parámetros de salida**
DIM MyComm,UserID,UserName
UserID = 1
Set MyComm = Server.CreateObject("ADODB.Command")
with MyComm
.ActiveConnection = MyConStr 'MyConStr es la conexión de la base de datos string.CommandText
= "getUserName" 'Especifique el nombre del procedimiento almacenado.CommandType
= 4 'Indica que se trata de un procedimiento almacenado
Prepared = true 'Requiere que el comando SQL se compile primero
' El valor de retorno debe declararse primero.Parameters.Append
.CreateParameter("RETURN",2,4)
'El orden de declaración de los dos parámetros siguientes también se invierte en consecuencia.Parameters.append
.CreateParameter("@UserName",200,2,40)
.Parameters.append .CreateParameter(" @UserID",3,1,4,UserID)
. Ejecutar y
finalizar con
if MyComm(0) = 1, luego
UserName = MyComm(1)
else
UserName = "Este usuario no existe"
y finalizar si
Set MyComm = Nothing
6. Procedimientos almacenados que devuelven parámetros y conjuntos de registros al mismo tiempo
. A veces, necesitamos procedimientos almacenados que devuelvan parámetros y conjuntos de registros al mismo tiempo. Por ejemplo, cuando se utilizan procedimientos almacenados para paginación, parámetros como conjuntos de registros y volumen total de datos deben devolverse al mismo tiempo. tiempo. El siguiente es un procedimiento almacenado para el procesamiento de paginación:
/*SP6*/
CREAR PROCEDIMIENTO dbo.getUserList
@iPageCount int SALIDA, --Número total de páginas
@iPage int, --Número de página actual
@iPageSize int --Número de registros por página
como
establecer nocount al
comenzar
--Crear una tabla temporal
crear tabla #t (ID int IDENTIDAD, --Campo de incremento automático
ID de usuario int,
nombre de usuario varchar(40))
--Escribir datos en la tabla temporal
insertar en #t
seleccionar ID de usuario, nombre de usuario de dbo.[UserInfo]
ordenar por ID de usuario
--Obtener el número total de registros
declarar @iRecordCount int
set @iRecordCount = rowcount
--Determinar el número total de páginas
IF @iRecordCount%@iPageSize=0
SET @iPageCount=CEILING(@ iRecordCount/@iPageSize)
ELSE
SET @iPageCount=CEILING(@iRecordCount/@iPageSize)+1
--Si el número de página solicitado es mayor que el número total de páginas, muestra la última página
IF @iPage > @iPageCount
SELECT @iPage = @iPageCount
--Determina los registros de inicio y fin de la página actual
DECLARE @iStart int --start record
DECLARE @iEnd int --end record
SELECT @iStart = (@iPage - 1) * @iPageSize
SELECT @iEnd = @iStart + @iPageSize + 1
--Obtener el registro de la página actual
seleccionar * de # t donde ID> @iStart e ID <@iEnd
--Eliminar la tabla temporal
DROP TABLE #t
--Devolver el número total de registros
return @iRecordCount
end
goEn
el Procedimiento almacenado anterior, ingrese el número de página actual y el número de registros por página, y devuelva la página actual El conjunto de registros, el número total de páginas y el número total de registros. Para ser más típico, el número total de registros se devuelve como valor de retorno. El siguiente es el código ASP que llama al procedimiento almacenado (se omite la operación de paginación específica):
'**Llame al procedimiento almacenado de paginación**
DIM pagenow,pagesize,pagecount,recordcount
DIM MyComm,MyRst
pagenow = Request("pn")
'Personalizado La función se utiliza para verificar números naturales
si CheckNar(pagenow) = false entonces pagenow = 1
tamaño de página = 20
Establezca MyComm = Server.CreateObject("ADODB.Command")
con MyComm
.ActiveConnection = MyConStr 'MyConStr es la cadena de conexión de la base de datos .CommandText
= "getUserList " 'Especifique el nombre del procedimiento almacenado.CommandType
= 4 'Indica que se trata de un procedimiento almacenado
. Prepared = true 'Requiere que los comandos SQL se compilen primero
' Valor de retorno (número total de registros)
.Parameters.Append . CreateParameter("RETURN",2,4 )
'Parámetros de salida (número total de páginas)
.Parameters.Append .CreateParameter("@iPageCount",3,2)
'Parámetros de entrada (número de página actual)
.Parameters.append .CreateParameter( "@iPage",3,1,4 ,pagenow)
'Parámetros de entrada (número de registros por página)
.Parameters.append .CreateParameter("@iPageSize",3,1,4,pagesize)
Establecer MyRst = .Execute
finalizar con
si MyRst.state = 0 entonces 'Datos no obtenidos, MyRst cierra
recordcount = -1
else
MyRst.close 'Nota: Para obtener el valor del parámetro, primero debe cerrar el objeto del conjunto de registros
recordcount = MyComm(0)
pagecount = MyComm( 1)
si cint(pagenow)> =cint(pagecount) entonces pagenow=pagecount
finaliza si
Set MyComm = Nothing
'Lo siguiente muestra el registro
si recordcount = 0 entonces
Response.Escribe "Sin registro"
elseif recordcount > 0 entonces
MyRst.open
do hasta MyRst.EOF
......
loop
'A continuación se muestra la información de paginación
...
else 'recordcount=-1
Response.Write "Error de parámetro"
end if
Con respecto al código anterior, solo hay un punto que necesita ser Explicación: al devolver el conjunto de registros y los parámetros al mismo tiempo, si desea obtener los parámetros, primero debe cerrar el conjunto de registros y luego abrir el conjunto de registros cuando lo use.
7. Procedimientos almacenados que devuelven múltiples conjuntos de registros
Lo primero que presenta este artículo son los procedimientos almacenados que devuelven conjuntos de registros. A veces, se requiere un procedimiento almacenado para devolver múltiples conjuntos de registros en ASP, ¿cómo obtener estos conjuntos de registros al mismo tiempo? Para ilustrar este problema, agregue dos campos a la tabla de información de usuario: usertel y usermail, y configure que solo los usuarios que hayan iniciado sesión puedan ver estos dos contenidos.
/*SP7*/
CREAR PROCEDIMIENTO dbo.getUserInfo
@userid int,
@checklogin bit
como
conjunto nocount al
comenzar
si @userid es nulo o @checklogin es nulo return
seleccione nombre de usuario
de dbo.[usrinfo]
donde userid=@userid
--if Log en usuario, obtenga usertel y usermail
si @checklogin=1
seleccione usertel,usermail
de dbo.[userinfo]
donde userid=@userid
return
end
goEl
siguiente es el código ASP:
'**Llamar a un procedimiento almacenado que devuelve múltiples conjuntos de registros**
DIM checklg,UserID,UserName,UserTel,UserMail
DIM MyComm,MyRst
UserID = 1
'checklogin() es una función personalizada para determinar si el visitante ha iniciado sesión
checklg = checklogin()
Set MyComm = Server.CreateObject("ADODB.Command" )
con MyComm
.ActiveConnection = MyConStr 'MyConStr es la cadena de conexión de la base de datos.CommandText
= "getUserInfo" 'Especifique el nombre del procedimiento almacenado.CommandType
= 4 'Indica que se trata de un procedimiento almacenado.Prepared
= true 'Requiere que se compile el comando SQL first.Parameters.append
.CreateParameter ("@userid",3,1,4,UserID)
.Parameters.append .CreateParameter("@checklogin",11,1,1,checklg)
Establecer MyRst = .Ejecutar
finalizar con
Set MyComm = Nada
'Desde el primero Obtener el valor del conjunto de registros
UserName = MyRst(0)
'Obtener el valor del segundo conjunto de registros
si no MyRst es Nada entonces
Set MyRst = MyRst.NextRecordset()
UserTel = MyRst(0)
UserMail = MyRst(1)
end if
Set MyRst = Nothing
En el código anterior, el método NextRecordset del objeto Recordset se utiliza para obtener múltiples conjuntos de registros devueltos por el procedimiento almacenado.
Hasta ahora, este artículo ha dado una explicación relativamente completa de varias situaciones en las que ASP llama a procedimientos almacenados. Finalmente, hablemos de los diferentes métodos para llamar a múltiples procedimientos almacenados en un programa ASP.
En un programa ASP, es posible llamar a varios procedimientos almacenados al menos de las tres formas siguientes:
1. Crear varios objetos de comando
DIM MyComm
Set MyComm = Server.CreateObject("ADODB.Command")
'Llamar al procedimiento almacenado uno
... ...
Establecer MyComm = Nada
Establecer MyComm = Server.CreateObject("ADODB.Command")
'Llamar al procedimiento almacenado dos
...
Establecer MyComm = Nada
...
2. Cree solo un objeto Comando. Al finalizar una llamada, borre su parámetros
DIM MyComm
Set MyComm = Server.CreateObject("ADODB.Command")
'Llamar al procedimiento almacenado uno
...
'Borrar parámetros (asumiendo que hay tres parámetros)
MyComm.Parameters.delete 2
MyComm.delete 1
MyComm.Parameters. eliminar 0
'Llame al procedimiento almacenado dos y borre los parámetros
...
Establecer MyComm = Nada
En este momento, tenga en cuenta: el orden de borrado de parámetros es opuesto al orden de declaración de parámetros. La razón es que no lo sé. .
3. Utilice el método Actualizar de la colección de datos de Parámetros para restablecer el objeto de Parámetro
DIM MyComm
Set MyComm = Server.CreateObject("ADODB.Command")
'Llamar al procedimiento almacenado uno
...
'Restablecer todos los objetos de Parámetro contenidos en la colección de datos de Parámetros
MyComm.Parameters.Refresh
'Llamar al procedimiento almacenado 2
...
Establecer MyComm = Nothing
Generalmente se cree que crear objetos repetidamente es un método menos eficiente, pero después de la prueba (la herramienta de prueba es Microsoft Application Center Test), los resultados son inesperados:
Método 2 > = Método 1 >> Método 3
La velocidad de ejecución del Método 2 es mayor o igual que la del Método 1 (hasta aproximadamente un 4 % más alta). La velocidad de ejecución de estos dos métodos es mucho más rápida que la del Método 3 (hasta 130). %), por lo que se recomienda Cuando hay muchos parámetros, se usa el método 1; cuando hay pocos parámetros, se usa el método 2.
Me tomó un día finalmente poner por escrito algo de mi experiencia superficial en llamar a procedimientos almacenados en ASP. Entre ellos, de algunos solo conozco los efectos pero no las causas, y algunos pueden estar equivocados, pero todos ellos se deben a mi práctica personal. Por favor, acéptenlo con espíritu crítico, lectores. Si tiene alguna opinión diferente, hágamelo saber. Gracias de antemano.