Recomendado: Programación avanzada ASP 3.0 (doce) 4.2.3 Ejemplos de instrucciones que contienen el lado del servidor Esta sección proporciona algunas páginas de ejemplo que se pueden usar para experimentar con varias declaraciones que contienen el lado del servidor. Abra el subdirectorio de la página web de muestra Capítulo 04, que muestra las directivas SSI y el objeto ASP Server & RDQU.
9.2.3 Procedimientos almacenadosEl uso de procedimientos almacenados es un área donde se aplican objetos de comando. Los procedimientos almacenados (a veces llamadas consultas de almacenamiento) son declaraciones de consulta SQL que están predefinidas en una base de datos.
¿Por qué debería crear y usar procedimientos almacenados en lugar de usar cadenas SQL directamente en su código? Hay varias razones principales:
· Los procedimientos almacenados han sido compilados por la base de datos. Esto da como resultado un plan de ejecución, por lo que la base de datos sabe exactamente lo que hará, acelerando así la ejecución del proceso.
Los procedimientos almacenados generalmente son almacenados en caché por la base de datos, lo que los hace funcionar más rápido porque no están obligados a leer el disco en este momento. No todas las bases de datos admiten este mecanismo de almacenamiento en caché. Por ejemplo, el acceso de Microsoft no lo admite, pero SQL Server lo admite.
· Al especificar que las tablas en la base de datos solo pueden modificarse mediante procedimientos almacenados, se puede garantizar que los datos sean más seguros. Esto significa que no se realizarán operaciones SQL potencialmente peligrosas.
· El código ASP se puede evitar mezclar con largas declaraciones SQL, lo que hace que el código ASP sea más fácil de mantener.
· Todo el código SQL se puede almacenar centralmente en el servidor.
· Los parámetros de salida se pueden usar en procedimientos almacenados para permitir la retorno del conjunto de registros u otros valores.
En términos generales, los procedimientos almacenados son casi siempre más rápidos que las declaraciones SQL comparables.
Para usar los procedimientos almacenados, simplemente use el nombre del procedimiento almacenado como texto del comando y establezca el tipo correspondiente. Por ejemplo, considere el ejemplo anterior de un precio de libro actualizado. Si crea un procedimiento almacenado en SQL Server, puede escribir código:
Crear procedimiento USP_UPDATEPRES
COMO
Actualizar títulos
Establecer precio = precio * 1.10
Donde type = 'negocio'
Para la base de datos de acceso de Microsoft, la misma tarea se puede lograr utilizando una instrucción de consulta de actualización simple
Para ejecutar este procedimiento almacenado en una página web ASP, simplemente use el siguiente código:
Establecer cmdupdate = server.CreateObject (ADODB.COMMAND)
cmdupdate.activeconnection = strconn
cmdupdate.commandText = usp_updatePrices
cmdupdate.commandtype = adcmdstoredproc
cmdupdate.execute, AdexecUteRecords
Esto solo está ejecutando un procedimiento almacenado. No se devuelve el conjunto de registros porque los datos solo se están actualizando. Es importante recordar que no crea conjuntos de registros a menos que realmente los necesite.
Si bien esto está bien, no es muy flexible, ya que solo está tratando con un tipo de libro. Un mejor enfoque es crear un proceso que nos permita elegir un tipo de libro para que no tengamos que crear un proceso para cada tipo de libro. Además, se puede eliminar la actualización fija del 10%, lo que hace que sea una mejor flexibilidad. Entonces, ¿cómo puedo hacer esto? Es muy simple, use parámetros.
1. Parámetro
Los parámetros (o variables) de los procedimientos almacenados son los mismos que los de los procedimientos y funciones generales. Se pueden pasar a la función, y la función puede usar su valor. Los procedimientos almacenados en SQL Server (lo mismo es cierto para otras bases de datos, incluido el acceso) tienen esta función.
Para que los procedimientos almacenados manejen múltiples tipos de libros, e incluso permitan a los usuarios especificar un aumento (o disminuir) de los precios, se deben agregar algunos parámetros:
Crear procedimiento USP_UPDATEPRES
@Type Char (12),
@Por dinero
COMO
Actualizar títulos
Establecer precio = precio * (1 @percent / 100)
Donde type = @Type
Ahora, el procedimiento almacenado USP_UPDatePrices toma dos parámetros:
· Uno es el tipo de libro (@Type).
· Uno es el porcentaje de cambios en el precio del libro (@porcentud).
Al igual que las funciones de VBScript, estos parámetros son variables. Sin embargo, a diferencia de VBScript y otros lenguajes de secuencias de comandos, las variables en estos idiomas de secuencias de comandos son todos tipos variables, mientras que las variables SQL tienen tipos definidos (char, dinero, etc.). Se debe seguir la especificación de nombres de las variables SQL, es decir, la variable debe comenzar con el símbolo @.
Tenga en cuenta que tenemos porcentajes pasados a este proceso como un entero (como 10 medios 10%) en lugar de como valor fraccional. Esto solo hace que los procedimientos almacenados sean un poco más intuitivos.
2. Colección de parámetros
Entonces, ahora hay un procedimiento almacenado con parámetros, pero ¿cómo se llama a través de ADO? Hemos visto cómo llamar a los procedimientos almacenados sin parámetros con objetos de comando, y de hecho, no hay diferencia entre ellos. La diferencia es el uso de colecciones de parámetros.
La colección de parámetros contiene objetos de parámetros para cada parámetro en el procedimiento almacenado. Sin embargo, ADO no sabe automáticamente cuáles son estos parámetros, por lo que deben crearse utilizando el método CreateParameter, en la siguiente forma:
Establecer parámetro = command.createParameter (nombre, [tipo], [dirección], [tamaño], [valor])
Los parámetros y descripciones se muestran en la Tabla 9-3:
Tabla 9-3 Parámetros y descripciones del método CreateParameter
parámetro
ilustrar
Nombre
Nombre del parámetro. Este es el nombre del parámetro en la colección de parámetros, no el nombre del parámetro en el procedimiento almacenado. Sin embargo, usar el mismo nombre es una buena práctica
Tipo
El tipo de datos del parámetro. Puede ser una constante de addatatype, consulte el apéndice para más detalles
Dirección
La dirección del parámetro indica si el parámetro proporciona información al procedimiento almacenado o el procedimiento almacenado devuelve información al ADO. Puede ser uno de los siguientes valores:
adparamInput, el parámetro es el parámetro de entrada que se pasa al procedimiento almacenado
adparamoutput, el parámetro es el parámetro de salida recuperado del procedimiento almacenado
adparamInputoututput, los parámetros se pueden usar como parámetros de entrada y salida
adparamreturnValue, este parámetro contiene el estado devuelto por el procedimiento almacenado
Tamaño
Longitud del parámetro. Para tipos de longitud fija, como enteros, este valor se puede ignorar
Valor
Valor del parámetro
Una vez que se crea el parámetro, se puede agregar a la colección de parámetros, por ejemplo:
Establecer parvalue = cmdupdate.createParameter (@Type, advarwchar, adparamInput, _
12, negocio)
cmdupdate.parameters.append parvalue
Establecer parvalue = cmdupdate.createParameter (@porcent, adcurrency, _
adparaminput, 10)
cmdupdate.parameters.append parvalue
No es necesario crear explícitamente un objeto para guardar los parámetros, el tipo de variante predeterminado ya puede funcionar bastante bien. Si no desea crear una variable, también puede tomar atajos, como el siguiente código:
cmdupdate.parameters.append = _
cmdupdate.createparameter (@porcentel, adcurrency, adparaminput, 10)
Esto utiliza el método CreateParameter para devolver un objeto de parámetro y lo recibe con el método Append. Este método se ejecuta más rápido que usar variables, pero alarga la línea de código, lo que la hace menos legible. Puede elegir uno de estos métodos según sus pasatiempos.
Después de agregar los parámetros a la colección de parámetros, se conservan en ella, por lo que a cada parámetro no se le asigna necesariamente un valor cuando se crea el parámetro. El valor del parámetro se puede establecer en cualquier momento antes de que se ejecute el comando. Por ejemplo:
cmdupdate.parameters.append = _
cmdupdate.createParameter (@PERENT, ADCURNIDAD, ADPARAMINPUT)
cmdupdate.parameters (@porcent) = 10
El capítulo anterior mencionó que hay varias formas de acceder a los valores en una colección, y la colección de parámetros no es diferente. El ejemplo anterior utiliza el nombre del parámetro para recuperar los parámetros en el conjunto, o también se puede buscar utilizando números de índice:
cmdupdate.parameters (0) = 10
El código anterior asigna el primer parámetro en el conjunto de parámetros (los parámetros establecidos de 0)
Compartir: Conocimiento relacionado sobre objetos de error ASP avanzados para la aplicación ASP En VBScript, hay una instrucción OnerrorResumEnext que hace que el intérprete de script ignore los errores de tiempo de ejecución y continúe la ejecución del código de script. Luego, el script puede verificar el valor de la propiedad Err.Number para determinar si ocurrió un error. Si se produce un error, se devuelve un valor distinto de cero