name
El nombre (opcionalmente calificado para Esquema) del procedimiento a crear.
argmode
El modo de un argumento: IN
, INOUT
o VARIADIC
. Si se omite, el valor predeterminado es IN
. (OUT
los argumentos actualmente no son compatibles con los procedimientos. Utilice INOUT
en su lugar.)
argname
El nombre de un argumento.,
argtype
los tipos de datos de los argumentos del procedimiento(opcionalmente calificados para esquema), si los hay. Los tipos de argumento pueden ser tipos base, compuesto o dominio, o pueden hacer referencia al tipo de una columna de tabla.
dependiendo del lenguaje de implementación, también se puede permitir especificar «pseudo-tipos»como cstring
. Los Pseudo-tipos indican que el tipo de argumento real está especificado de forma incompleta o fuera del conjunto de tipos de datos SQL ordinarios.
se hace referencia al tipo de columna escribiendo
. El uso de esta característica a veces puede ayudar a que un procedimiento sea independiente de los cambios en la definición de una tabla.table_name
.,column_name
%TYPE
default_expr
una expresión que se utilizará como valor predeterminado si no se especifica el parámetro. La expresión tiene que ser coercible al tipo de argumento del parámetro. Todos los parámetros de entrada que siguen a un parámetro con un valor predeterminado también deben tener valores predeterminados.
lang_name
El nombre del idioma en el que se implementa el procedimiento., Puede ser sql
, c
, internal
, o el nombre de un usuario definido por el lenguaje procedimental, por ejemplo, plpgsql
. Encerrar el nombre entre comillas simples está obsoleto y requiere mayúsculas y minúsculas.
TRANSFORM { FOR TYPE
type_name
}}
se deben aplicar listas que transforman una llamada al procedimiento. Transforms convierta entre tipos SQL y tipos de datos específicos del lenguaje; consulte Crear transformación. Las implementaciones de lenguaje de procedimientos generalmente tienen conocimiento codificado de los tipos incorporados, por lo que no es necesario enumerarlos aquí., Si una implementación de lenguaje de procedimiento no sabe cómo manejar un tipo y no se proporciona ninguna transformación, volverá a un comportamiento predeterminado para convertir tipos de datos, pero esto depende de la implementación.
SECURITY INVOKER
SECURITY DEFINER
SECURITY INVOKER
indica que el procedimiento se ejecutará con los privilegios del usuario que llama. Ese es el valor predeterminado. SECURITY DEFINER
especifica que el procedimiento debe ejecutarse con los privilegios del usuario que lo posee.,
la palabra clave EXTERNAL
está permitida para la conformidad SQL, pero es opcional ya que, a diferencia de SQL, esta característica se aplica a todos los procedimientos no solo a los externos.
a SECURITY DEFINER
el procedimiento no puede ejecutar instrucciones de control de transacciones (por ejemplo, COMMIT
y ROLLBACK
, dependiendo del idioma).,
configuration_parameter
value
la cláusula SET
hace que el parámetro de configuración especificado se establezca en el valor especificado cuando se ingresa el procedimiento, y luego se restaure a su valor anterior cuando se cierra el procedimiento. SET FROM CURRENT
guarda el valor del parámetro actual cuando CREATE PROCEDURE
se ejecuta como el valor que se aplica cuando el procedimiento se introduce.,
si se adjunta una cláusula SET
a un procedimiento, los efectos de un comando SET LOCAL
ejecutado dentro del procedimiento para la misma variable se restringen al procedimiento: el valor anterior del parámetro de configuración se restaura al salir del procedimiento., Sin embargo, un comando ordinario SET
(sin LOCAL
) anula la cláusula SET
, al igual que lo haría con un comando anterior SET LOCAL
: los efectos de dicho comando persistirán después de la salida del procedimiento, a menos que la transacción actual es revertida.
si se adjunta una cláusula SET
a un procedimiento, ese procedimiento no puede ejecutar instrucciones de control de transacciones (por ejemplo, COMMIT
y ROLLBACK
, dependiendo del idioma).,
consulte SET y el Capítulo 19 para obtener más información sobre los nombres y valores de parámetros permitidos.
definition
Una constante de cadena de definir el procedimiento; el significado depende del lenguaje. Puede ser un nombre de procedimiento interno, la ruta a un archivo objeto, un comando SQL o texto en un lenguaje de procedimiento.
a menudo es útil usar comillas de Dólar (consulte la sección 4.1.2.4) para escribir la cadena de definición del procedimiento, en lugar de la sintaxis normal de comillas simples. Sin citar en dólares, cualquier comilla simple o barra invertida en la definición del procedimiento debe escaparse duplicándolas.,
obj_file
, link_symbol
esta forma de la cláusula AS
se utiliza para procedimientos de lenguaje C cargables dinámicamente cuando el nombre del procedimiento en el código fuente del lenguaje C no es el mismo que el nombre del procedimiento SQL. La cadena obj_file
es el nombre del archivo de biblioteca compartida que contiene el procedimiento C compilado, y se interpreta como para el comando LOAD. La cadena link_symbol
es el símbolo de enlace del procedimiento, es decir, el nombre del procedimiento en el código fuente del lenguaje C., Si se omite el símbolo de enlace, se asume que es el mismo que el nombre del procedimiento SQL que se está definiendo.
cuando se repiten CREATE PROCEDURE
las llamadas se refieren al mismo archivo objeto, el archivo solo se carga una vez por sesión. Para descargar y recargar el archivo (quizás durante el desarrollo), inicie una nueva sesión.