¿Qué es un procedimiento almacenado?
definición:
Escriba de antemano tareas de uso común o muy complejas con declaraciones SQL y guárdelas con un nombre específico. Luego, cuando desee solicitar a la base de datos que proporcione servicios con las mismas funciones que los procedimientos almacenados definidos en el futuro, solo necesita llamar a ejecutar. Comandos de autocompletar.
En este punto, alguien puede preguntar: ¿Entonces un procedimiento almacenado es solo un montón de declaraciones SQL?
¿Por qué Microsoft quiere agregar esta tecnología?
Entonces, ¿cuál es la diferencia entre los procedimientos almacenados y las declaraciones SQL ordinarias?
Ventajas de los procedimientos almacenados:
1. Los procedimientos almacenados solo se compilan cuando se crean. No es necesario volver a compilar cada vez que se ejecuta el procedimiento almacenado en el futuro. Generalmente, las declaraciones SQL se compilan una vez cada vez que se ejecutan, por lo que el uso de procedimientos almacenados puede mejorar la ejecución. velocidad de la base de datos.
2. Al realizar operaciones complejas en la base de datos (como Actualizar, Insertar, Consultar, Eliminar en varias tablas), esta operación compleja puede encapsularse en un procedimiento almacenado y usarse junto con el procesamiento de transacciones proporcionado por la base de datos.
3. Los procedimientos almacenados se pueden reutilizar, lo que puede reducir la carga de trabajo de los desarrolladores de bases de datos.
4. Alta seguridad, puede configurar que solo un determinado usuario tenga derecho a utilizar el proceso almacenado especificado
Tipos de procedimientos almacenados:
1. Procedimientos almacenados del sistema: comenzando con sp_, se utiliza para configurar el sistema, obtener información y trabajos de gestión relacionados, como sp_help, que se utiliza para obtener información relevante sobre el objeto especificado.
2. El procedimiento almacenado extendido comienza con XP_ y se utiliza para llamar a funciones proporcionadas por el sistema operativo.
maestro ejecutivo..xp_cmdshell 'ping 10.8.16.1'
3. Procedimientos almacenados definidos por el usuario, esto es lo que llamamos procedimientos almacenados.
Formatos comunes
Crear procedimiento nombre_procedimiento
[@parámetro tipo_datos][salida]
[con]{recompilar|cifrado}
como
declaración_ql
explicar:
salida: indica que este parámetro se puede devolver
con {recompilar|cifrado}
recompilar: significa que este procedimiento almacenado se recompilará cada vez que se ejecute.
cifrado: el contenido del procedimiento almacenado creado se cifrará
como:
El contenido del libro de mesa es el siguiente.
Precio del título del libro numerado.
001 Introducción al lenguaje C$30
002 Desarrollo de informe PowerBuilder$52
Ejemplo 1: procedimiento almacenado para consultar el contenido de la tabla Libro
crear proc query_book
como
seleccione * del libro
ir
libro_consulta ejecutivo
Ejemplo 2: agregar un registro al libro de la tabla y consultar la cantidad total de todos los libros en esta tabla
Crear proc insert_book
@param1 char(10),@param2 varchar(20),@param3 dinero,@param4 salida de dinero
con cifrado ----------cifrado
como
insertar libro(número, título del libro, precio) Valores(@param1,@param2,@param3)
seleccione @param4=sum(precio) del libro
ir
Ejemplo de ejecución:
declarar dinero @total_price
exec insert_book '003', 'Guía de desarrollo de controles Delphi', $ 100, @total_price
imprimir 'El monto total es'+convert(varchar,@total_price)
ir
Tres tipos de valores de retorno de procedimientos almacenados:
1. Devuelve el número entero con Return
2. Devolver parámetros en formato de salida
3.Conjunto de registros
La diferencia entre los valores devueltos:
Tanto la salida como el retorno se pueden recibir como variables en el programa por lotes y el conjunto de registros se devuelve al cliente que ejecuta el lote.
Ejemplo 3: Hay dos tablas, Producto y Pedido, con el siguiente contenido:
Producto
Número de producto Nombre del producto Cantidad del pedido del cliente
001 pluma 30
002 cepillo 50
003 Lápiz 100
Orden
Número de producto Nombre del cliente Depósito del cliente
001 Distrito de Nanshan$30
002 Distrito de Luohu$50
003 Distrito de Baoan$4
Utilice el número como condición de conexión para conectar las dos tablas en una tabla temporal. Esta tabla solo contiene el nombre del producto.
Monto total = depósito * cantidad del pedido, la tabla temporal se coloca en el proceso de almacenamiento
El código es el siguiente:
Crear proc temp_sale
como
seleccione a.Número de producto,a.Nombre del producto,b.Nombre del cliente,b.Depósito del cliente,a.Cantidad del pedido del cliente* b.Depósito del cliente como monto total
en #temptable desde Producto a unión interna Orden b en a.número de producto=b.número de producto
si @@error=0
imprimir 'Bueno'
demás
imprimir 'Fallo'