[Notas de MYSQL] Uso de procedimientos almacenados

Nota: Los procedimientos almacenados se pueden usar en la versión 5.0 o superior.

Procedimiento almacenado :

Varias declaraciones SQL se combinan en una colección que solo se puede ejecutar mediante el comando "llamar a xx", la colección se denomina procedimiento almacenado.

Almacenamiento significa ahorro y proceso significa pasos.

Es decir, un procedimiento almacenado es una colección que resume y almacena una serie de pasos.

Dado que los comandos preparados de antemano se pueden ejecutar automáticamente, la eficiencia de procesamiento es alta.

Sin embargo, al almacenar datos importantes, es muy peligroso ejecutar procedimientos almacenados que no estén completamente validados.

Cree un procedimiento almacenado:

create procedure 存储过程名()
begin
SQL语句1
SQL语句2
end

El contenido de principio a fin es el cuerpo del procedimiento almacenado.

Problema del delimitador:

Debido a que el contenido del procedimiento almacenado es una instrucción SQL normal, debe agregar el delimitador ; al final del comando

begin
sql1;
sql2;
end

De esta forma, el comando de crear procedimiento se ejecutará en un estado incompleto del procedimiento almacenado. Porque una vez que se ingresa el separador en el monitor MYSQL, sin importar cuál sea el contenido, la parte anterior al separador se ejecutará primero.

Solución: Modificar la configuración del separador

Al crear un procedimiento almacenado, debe cambiar el delimitador de; a otras conformidades, generalmente use //

delimiter //

Ejemplo: Cree un procedimiento almacenado para ejecutar display tb y tb1

delimiter //
create procedure pr1()
begin
select * from tb;
select * from tb1;
end
//delimiter ;

Ejecute el procedimiento almacenado:

Ejemplo: llamar pr1 del ejemplo anterior

call pr1;

 

Cree un procedimiento almacenado con parámetros:

create procedure 存储过程名(参数名 数据类型);

Ejemplo: Cree un registro que muestre que las ventas son mayores o iguales al valor especificado y ejecute el procedimiento almacenado

delimiter //
create procedure pr(d int)
begin
select * from tb where sales>=d;
end


call pr(200); 

Nota: agregar delante del parámetro también obtendrá el mismo resultado (en d int);

Mostrar el contenido del procedimiento almacenado:

show create procedure pr;

 eliminar procedimiento almacenado

drop procedure 存储过程名;

 Funciones almacenadas: Las funciones almacenadas son básicamente la misma forma de pensar y operar que los procedimientos almacenados. La única diferencia con un procedimiento almacenado es que una función almacenada devuelve un valor después de la ejecución.

Las funciones almacenadas pueden funcionar como funciones y las funciones personalizadas se pueden crear utilizando funciones almacenadas. Por lo tanto, las funciones almacenadas también se denominan funciones definidas por el usuario.

El valor devuelto por la función almacenada se puede usar en comandos como seleccionar y actualizar como funciones normales.

create function 存储函数名(参数 数据类型)returns 返回值的数据类型
begin
SQL语句
return 返回值 表达式
end

Declarar la variable:

declare 变量名 变量类型;

Asignar valores a las variables:

a into b;//b=a;

 

Ejercicio: Calcule el peso estándar usando funciones almacenadas

Peso estándar = altura * altura (cm) * 22/10000

delimiter //
create function fu1(height int) returns double
begin
return height*height*22/10000;
end
//
delimiter;

select fu1(174);

 

 Ejercicio: Devolver la media de la columna de ventas

delimiter //
create function fun2() return double
begin
declare r double;
select avg(sales) into r from tb;
return r;
end
//
delimiter ;

select fun2();

Mostrar el contenido de la función almacenada

show create function 存储函数名;

eliminar la función almacenada

drop function 存储函数名;

Desencadenador: un mecanismo que desencadena la ejecución de otros comandos después de realizar una operación en una tabla.

Al ejecutar comandos como insertar, actualizar, eliminar, etc., también se ejecutarán las acciones establecidas previamente como disparadores.

Los disparadores también se utilizan a menudo como un registro del procesamiento o como una copia de seguridad en caso de que se produzca una falla en el procesamiento.

Cuando se dispara el gatillo:

before: se activa antes de que se procese la tabla

after: Activado después de que se procese la tabla

 

Obtener valores de columna antes del procesamiento de la tabla: old.column_name

Obtenga el valor de la columna después del procesamiento de la tabla:  new.column name

Sin embargo, según el comando, se pueden quitar algunos valores de columna y se pueden quitar algunos valores de columna.

 

Ejemplo: Cree un activador "si elimina un registro en una tabla, el registro eliminado se copiará en otras tablas".

Cree una tabla vacía tb1 por adelantado para insertar registros eliminados en tb

create table tb1 like tb;

Crear activador y eliminar tb

delimiter //
create trigger tr before delete on tb1 for each row
begin
insert into tb1(old.id,old.name,old.age);
end
//
delimiter ;

delete from tb1;

 Confirme el activador establecido:

show triggers;

Eliminar activador:

drop trigger 触发器名;

 

 

Supongo que te gusta

Origin blog.csdn.net/m0_52043808/article/details/124221961
Recomendado
Clasificación