¿Cuáles son los usos básicos de los procedimientos almacenados de MySQL?
¿Cuáles son los usos básicos de los procedimientos almacenados de MySQL?
Cuando un programa externo accede a la base de datos (como PHP), es necesario organizar muchas declaraciones SQL.
Especialmente cuando la lógica de negocios es compleja, una gran cantidad de SQL y condiciones se mezclan en el código PHP, lo que hace que la gente se estremezca. Ahora, con los procedimientos almacenados de MySQL, la lógica empresarial se puede encapsular en procedimientos almacenados, lo que no solo es fácil de mantener, sino también eficiente en su ejecución.
1. MySQL crea un procedimiento almacenado
"pr_add" es un procedimiento almacenado MySQL simple. Este procedimiento almacenado MySQL tiene dos parámetros de entrada de tipo int "a" y "b". la suma de estos dos parámetros.
El código de copia es el siguiente:
eliminar procedimiento si existe pr_add;
Calcular la suma de dos números
El código de copia es el siguiente:
crear procedimiento pr_add
(
a int,
b int
)
comenzar
declarar c int;
si a es nulo entonces
establecer a = 0
fin; si;
p>
si b es nulo entonces
establezca b = 0
end if
establezca c; = a b;
select c as sum;
/*
return c;
No se puede utilizar en procedimientos almacenados de MySQL. return solo puede aparecer en funciones.
*/
end;
2. Llame al procedimiento almacenado de MySQL
Copia el código de la siguiente manera:
call pr_add(10, 20);
Ejecute el procedimiento almacenado de MySQL y los parámetros del procedimiento almacenado son variables de usuario de MySQL.
Copia el código de la siguiente manera:
set @a = 10
set @b = 20
call pr_add(@; a , @b);
3. Características de los procedimientos almacenados de MySQL
La sintaxis simple para crear procedimientos almacenados de MySQL es:
Copie el código de la siguiente manera:
crear procedimiento nombre del procedimiento almacenado ()
(
[in|out|inout] tipo de datos del parámetro
)
begin
Instrucción MySQL
end;
Los parámetros del procedimiento almacenado MySQL serán por defecto "in", "out" y "inout" si no están especificados explícitamente "en". Tradicionalmente, no especificamos explícitamente parámetros que estén "en".
1. El "()" después del nombre del procedimiento almacenado de MySQL es obligatorio Incluso si no hay ningún parámetro, el "()" sigue siendo necesario.
2. Los parámetros no se pueden utilizar en Agregar "@" antes del nombre del parámetro, como: "@a int". La siguiente sintaxis para crear un procedimiento almacenado es incorrecta en MySQL (correcta en SQL Server).
Las variables en los procedimientos almacenados de MySQL no necesitan agregar "@" antes del nombre de la variable, aunque las variables de usuario del cliente MySQL sí necesitan agregar "@".
Copia el código de la siguiente manera:
crear procedimiento pr_add
(
@a int, -- error
b int -- correcto
)
3. Los parámetros de los procedimientos almacenados de MySQL no pueden especificar valores predeterminados.
4. Los procedimientos almacenados de MySQL no necesitan agregar "como" delante del cuerpo del procedimiento. El procedimiento almacenado de SQL Server debe agregar la palabra clave "as".
Copia el código de la siguiente manera:
crear procedimiento pr_add
(
a int,
b int
)
as -- Error, MySQL no requiere "as"
comenzar
instrucción mysql... ; p>
end;
5. Si el procedimiento almacenado de MySQL contiene varias declaraciones de MySQL, se requiere la palabra clave de inicio y fin.
Copia el código de la siguiente manera:
crear procedimiento pr_add
(
a int,
b int
)
comenzar
sentencia mysql 1...
sentencia mysql 2...
> end;
6. Al final de cada declaración en el procedimiento almacenado de MySQL, un punto y coma ";"
Copie el código de la siguiente manera:
. ..
declare c int;
si a es nulo entonces
establezca a = 0
end if; >
p>
...
end;
7. Comentarios en procedimientos almacenados MySQL.
Copiar código El código es el siguiente:
/*
Este es un
comentario MySQL de varias líneas.
*/
declare c int; -- Este es un comentario MySQL de una sola línea (tenga en cuenta que debe haber al menos un espacio después de --)
si a es nulo entonces # Este también es un comentario MySQL de una sola línea
set a = 0
end if;
;