Creación de un procedimiento almacenado en Azure Database for PostgreSQL
La creación de un procedimiento almacenado para una tarea específica tiene muchas ventajas, incluida la ampliación de la funcionalidad de la base de datos de Azure for PostgreSQL. Use un procedimiento almacenado cuando desee:
- Desarrollar y probar código complejo en un solo lugar y luego llamarlo donde sea necesario.
- Ejecutar código de forma eficaz. Los procedimientos almacenados que devuelven el mismo resultado son más eficaces porque se compilan previamente y se almacenan en el servidor de Azure Database PostgreSQL.
- Facilitar la lectura del código.
- Incluir el control de errores dentro de una transacción.
- Ocultar la complejidad a los usuarios.
Aunque Azure Database for PostgreSQL admite varios lenguajes de programación, SQL es el lenguaje nativo de PostgreSQL y funciona mejor con el optimizador.
Se crea un procedimiento almacenado con las palabras clave CREATE PROCEDURE. Como alternativa, use CREATE OR REPLACE PROCEDURE para crear un nuevo procedimiento o reemplazar uno con el mismo nombre.
Incluya un nombre de esquema para crear el procedimiento en un esquema específico. De lo contrario, se crea en el esquema actual. El nombre del procedimiento debe ser único dentro del esquema, incluidos los tipos de argumentos de entrada. Sin embargo, puede sobrecargar los nombres de procedimiento asignando el mismo nombre a un procedimiento o función con diferentes tipos de argumentos.
El usuario que crea el procedimiento es su propietario. También debe especificar el lenguaje.
Los procedimientos toman los parámetros siguientes:
- name: opcionalmente, incluya el nombre del esquema.
- argmode: el modo del argumento. Puede ser IN, INOUT o VARIADIC. El valor predeterminado es IN. No se admite OUT; use INOUT en su lugar. VARDIADIC es un número indefinido de argumentos de entrada del mismo tipo y debe ser el último argumento de entrada.
- argname: nombre del argumento.
- argtype: el tipo de datos del argumento.
- default_expr: una expresión predeterminada (del mismo tipo) que se usará si no se especifica el parámetro. Los parámetros de entrada que siguen a un parámetro con un valor predeterminado también deben tener valores predeterminados.
- lang_name: el lenguaje usado para escribir el procedimiento. Puede ser sql, c, internal o el nombre de un lenguaje de procedimientos definido por el usuario, como plpgsql.
En el ejemplo siguiente, se crea un procedimiento almacenado denominado myprocedure, que toma los parámetros de entrada a y b. IN es el valor predeterminado para los parámetros, por lo que no es necesario identificarlos explícitamente como parámetros de entrada. Cuando se llama al procedimiento almacenado, los valores asignados a estos parámetros se insertan en mytable.
CREATE PROCEDURE myprocedure (a integer, b integer)
LANGUAGE SQL
AS $$
INSERT INTO mytable VALUES (a, b);
$$;
El símbolo $$
se usa para iniciar y finalizar una cadena. También puede usar comillas simples, pero pueden producirse problemas con otros lenguajes de programación, por lo que es preferible $$
.