La diferencia entre procedimientos almacenados y funciones
Esencialmente no hay diferencia, la esencia de la ejecución es la misma.
Es solo que la función se limita a devolver solo una variable. El procedimiento almacenado puede devolver varios.
Las funciones se pueden incrustar en SQL y se pueden llamar en select. Para que la consulta SQL sea ejecutable, el último parámetro de mysql_real_connect debe establecerse en CLIENT_MULTI_STATEMENTS.
La función tiene muchas restricciones. Por ejemplo, no se pueden usar tablas temporales, solo se pueden usar variables de tabla. También hay algunas funciones que no están disponibles, etc. Existen relativamente pocas restricciones sobre los procedimientos almacenados.
Las diferencias en las características son las siguientes:
1) En términos generales, las funciones implementadas por procedimientos almacenados son más complejas, mientras que las funciones implementadas por funciones son más específicos. Los procedimientos almacenados son potentes y pueden realizar una serie de operaciones de bases de datos, incluida la modificación de tablas; las funciones definidas por el usuario no se pueden utilizar para realizar un conjunto de operaciones que modifican el estado de la base de datos global.
2) Los procedimientos almacenados pueden devolver parámetros, como conjuntos de registros, mientras que las funciones solo pueden devolver valores u objetos de tabla. Las funciones solo pueden devolver una variable; los procedimientos almacenados pueden devolver múltiples variables. Los parámetros del procedimiento almacenado pueden tener tres tipos: IN, OUT e INOUT, mientras que la función solo puede tener la clase IN. No es necesario un tipo de retorno al declarar un procedimiento almacenado, pero es necesario describir el tipo de retorno. al declarar una función, y el cuerpo de la función debe contener una declaración RETURN válida.
3) Los procedimientos almacenados pueden utilizar funciones no deterministas y no se permite que funciones no deterministas se incorporen al cuerpo de funciones definidas por el usuario.
4) Los procedimientos almacenados generalmente se ejecutan como una parte independiente (ejecución de la instrucción EXECUTE), mientras que las funciones se pueden llamar como parte de una instrucción de consulta (llamada SELECT). Dado que la función puede devolver un objeto de tabla, por lo tanto. se puede ubicar después de la palabra clave FROM en la declaración de consulta. Los procedimientos almacenados no están disponibles en las sentencias SQL, pero se pueden utilizar funciones.
Cuando se ejecutan procedimientos y funciones almacenados, SQL Manager recuperará la declaración de consulta correspondiente del caché de procedimientos. Si no hay una declaración de consulta correspondiente en el caché de procedimientos, SQL Manager recuperará el procedimiento almacenado y la función. La función está compilada.
El plan de ejecución se guarda en la caché de procedimientos. Una vez compilado, se ejecuta el plan de ejecución en la caché de procedimientos. Posteriormente, SQL SERVER considerará si ejecutar el plan de acuerdo con la situación real de cada uno. plan de ejecución. Este plan se guarda en la memoria caché. El primer criterio es la frecuencia con la que se puede utilizar este plan de ejecución. El segundo criterio es el costo de generar este plan, que es el tiempo que lleva compilarlo. No es necesario compilar el plan guardado en la memoria caché la próxima vez que se ejecute.
La función y la sintaxis de los procedimientos almacenados de MYSql
Función:
1. Al utilizar el procedimiento almacenado, se pueden realizar muchas operaciones similares, como eliminar, actualizar y agregar. realizarse ¡Será cada vez más fácil de gestionar en el futuro!
2. El procedimiento almacenado se ejecuta más rápido porque las sentencias SQL han sido precompiladas.
3. Los procedimientos almacenados pueden aceptar parámetros, parámetros de salida, devolver conjuntos de resultados únicos o múltiples y devolver valores. La causa del error se puede devolver al programa.
4. El procedimiento almacenado se ejecuta de manera relativamente estable sin demasiados errores. Siempre que tenga éxito una vez, se ejecutará de acuerdo con este programa en el futuro.
5. El procedimiento almacenado se ejecuta principalmente en el servidor, lo que reduce la presión sobre el cliente.
6. Los procedimientos almacenados pueden incluir flujo de programa, lógica y consultas de bases de datos.
Al mismo tiempo, la lógica de los datos se puede encapsular y ocultar físicamente.
7. Los procedimientos almacenados pueden ejecutar una serie de sentencias SQL en un único procedimiento almacenado.
8. Los procedimientos almacenados pueden hacer referencia a otros procedimientos almacenados desde sus propios procedimientos almacenados, lo que puede simplificar una serie de declaraciones complejas.
1. Crear un procedimiento almacenado
crear procedimiento sp_name()
comenzar
.........< / p>
end12341234
2. Llame al procedimiento almacenado
llame a sp_name()11
Nota: Se deben agregar paréntesis después del nombre del procedimiento almacenado. , incluso si el procedimiento almacenado El procedimiento no tiene parámetros para pasar
3. Eliminar el procedimiento almacenado
eliminar el procedimiento sp_name//11
Nota: No se puede eliminar otro procedimiento almacenado en un procedimiento almacenado Solo puede llamar a otro procedimiento almacenado
4. Bloque, condición, bucle
1. comenzar
......
end; 123123
También puedes darle un alias al bloque, como por ejemplo:
lable: comenzar
..........
end label; 123123
Puedes usar dejar etiqueta para saltar fuera del bloque; y ejecute el código después del bloque
2 Declaración condicional
si condición entonces
declaración
else
sentencia
finalizar si; 1234512345
3. Declaraciones de bucle
(1)ciclo while
[etiqueta:] expresión WHILE DO
sentencias
END WHILE [label]; 1234512345
(2), loop loop
[label:] LOOP
declaraciones
END LOOP [etiqueta]; 1234512345
(3), repetir hasta el bucle
[etiqueta:] REPETIR
declaraciones
UNTIL expresión
END REPEAT [etiqueta] ; 12345671234567
5. status
Muestra todo el almacenamiento en la base de datos La información básica del procedimiento almacenado, incluida la base de datos a la que pertenece, el nombre del procedimiento almacenado, la hora de creación, etc.
2.mostrar crear procedimiento sp_name
Mostrar la información detallada de un determinado procedimiento almacenado
Ejemplo de función
CREATE DEFINER=`root`@`` FUNCTION `spr_checkadmin `(acckey varchar(32), accpwd varchar(64)) DEVUELVE int(11)
COMENZAR
DECLARAR x INT;
SELECCIONAR CUENTA(*) INTO x FROM admins WHERE account=acckey AND passwd=accpwd;
RETURN(x);
END; 123456123456
Procedimiento almacenado con valor de retorno único
CREAR DEFINER=`root`@`` PROCEDIMIENTO `spr_getuserstorage`
(tok varchar(128))
COMENZAR
DECLARAR acc VARCHAR(32);
DECLARAR pkgid VARCHAR(32);
DECLARAR regdate DATETIME;
DECLARAR logindate DATETIME;
DECLARAR sumsize BIGINT;
SELECCIONAR cuenta EN cuenta DESDE información de usuario DONDE token=tok;
SI (acc != NULL) ENTONCES
SELECCIONE SUMA(tamaño de archivo) EN tamaño de suma DESDE archivos de usuario DONDE cuenta=acc;
SELECCIONE ID de paquete, fecha de registro, fecha de último inicio de sesión EN pkgid, regdate, fecha de inicio de sesión DESDE información de usuario DONDE cuenta=acc;
SELECT 0, pkgid, regdate, logindate;
ELSE
SELECT(-1);
FINALIZAR si, FUERA sfext varchar(32))
COMENZAR
DECLARAR acc CHAR(32);
SELECCIONAR cuenta EN acc DESDE información de usuario DONDE token=sToken;
p>
SI (acc != NULL) ENTONCES
SELECCIONE fileid, fileext EN sfid, sfext DESDE archivos de usuario DONDE cuenta=acc AND filetype=1;
TERMINAR SI;
FIN;1234567812345678