Instrucción CREATE PROCEDURE (SQL - procedimiento externo) (obsoleta)

La sentencia CREATE PROCEDURE define un procedimiento de SQL externo en el servidor actual y especifica las sentencias fuente para el procedimiento. Este es el único tipo de procedimiento SQL disponible para las versiones de Db2 anteriores a la DB2® 9.

Función obsoleta : Inicio del cambioLos procedimientos SQL externos están obsoletos y no son tan compatibles como los procedimientos SQL nativos. Para obtener mejores resultados, cree procedimientos de SQL nativo en su lugar. Para obtener más información, consulte Creación de procedimientos SQL nativos y Migración de un procedimiento SQL externo a un procedimiento SQL nativo.fin del cambio

Para obtener información sobre las instrucciones de control SQL que son compatibles con los procedimientos SQL externos, consulte Instrucciones de control SQL para procedimientos SQL externos.

Invocación para CREATE PROCEDURE (SQL - externo)

Esta declaración solo puede prepararse dinámicamente, pero el comportamiento de ejecución de DYNAMICRULES debe especificarse implícita o explícitamente. Está destinado a ser procesado utilizando uno de los siguientes métodos:

  • JCL
  • Db2 for z/OS® El procesador de procedimientos SQL de Microsoft Dynamics NAV (DSNTPSMP) (IBM® Optim Development Studio utiliza este método)

La emisión de la instrucción CREATE PROCEDURE desde otro contexto dará lugar a una definición de procedimiento incompleta, aunque el procesamiento de la instrucción devuelva sin error. Para obtener más información sobre la preparación de procedimientos SQL para su ejecución, consulte Creación de procedimientos SQL externos (en desuso ).

Autorización para CREAR PROCEDIMIENTO (SQL - externo)

El conjunto de privilegios que se define a continuación debe incluir al menos uno de los siguientes:

  • El privilegio CREATEIN en el esquema
  • Autorización SYSADM o SYSCTRL
  • DBADM del sistema
  • Inicio del cambioAutoridad de instalación SYSOPR (cuando el SQLID actual del proceso está configurado como SYSINSTL)fin del cambio

El ID de autorización que se corresponde con el nombre del esquema tiene implícito el privilegio CREATEIN sobre el esquema.

Inicio del cambioSi el ID de autorización que se utiliza para crear el procedimiento tiene la autoridad de instalación SYSADM o la autoridad de instalación SYSOPR y si el SQLID actual está configurado como SYSINSTL, el procedimiento se identifica como procedimiento definido por el sistema.fin del cambio

Conjunto de privilegios:

Si la sentencia está incrustada en un programa de aplicación, el conjunto de privilegios son los privilegios que tiene el propietario del plan o paquete. Si el propietario es un rol, la coincidencia de esquema implícita no se aplica y este rol debe incluir una de las condiciones enumeradas anteriormente.

Si la declaración se prepara dinámicamente y no se ejecuta en un contexto de confianza para el que se especifica la cláusula ROLE AS OBJECT OWNER, el conjunto de privilegios es el conjunto de privilegios que posee el ID de autorización SQL del proceso. Si el nombre del esquema no es el mismo que el ID de autorización SQL del proceso, debe cumplirse una de las siguientes condiciones:

  • El conjunto de privilegios incluye la autoridad SYSADM o SYSCTRL.
  • El ID de autorización SQL del proceso tiene el privilegio CREATEIN en el esquema.

El ID de autorización que se utiliza para crear el procedimiento almacenado debe tener autoridad para crear programas que se ejecutarán en el entorno WLM especificado.

El propietario del procedimiento se determina por la forma en que se invoca la instrucción CREATE PROCEDURE:

  • Si la declaración está integrada en un programa, el propietario es el ID de autorización del propietario del plan o paquete.
  • Si el estado se prepara dinámicamente, el propietario es el ID de autorización SQL en el registro especial CURRENT SQLID.

Al propietario se le otorga implícitamente el privilegio EXECUTE con la opción GRANT para el procedimiento.

Sintaxis para CREATE PROCEDURE (SQL - externo)

Leer diagrama de sintaxisOmitir el diagrama de sintaxis visualCREATE PROCEDUREnombre-procedimiento (,declaración-parámetro)lista-opcionesSQL-cuerpo-de-rutina

declaración de parámetros:

Leer diagrama de sintaxisOmitir el diagrama de sintaxis visual INOUTINOUT nombre-parámetro tipo de parámetro

tipo de parámetro:

Leer diagrama de sintaxisOmitir el diagrama de sintaxis visualtipo-incorporadoTABLE LIKEnombre-tablaAS LOCATOR

tipo integrado:

Leer diagrama de sintaxisOmitir el diagrama de sintaxis visualSMALLINTINTEGERINTDECIMALDECNUMERIC(5,0)( entero, entero)FLOAT(53)( entero)REALDOUBLEPRECISIONCHARACTERCHAR(1)( entero)CHARACTERCHARVARYINGVARCHAR( entero)CCSIDASCIIEBCDICUNICODEFORSBCSMIXEDBITDATACHARACTERCHARLARGE OBJECTCLOB(1M)( enteroKMG)CCSIDASCIIEBCDICUNICODEFORSBCSMIXEDDATAGRAPHIC(1)( entero)VARGRAPHIC(entero)DBCLOB(1M)( enteroKMG)CCSIDASCIIEBCDICUNICODEBINARY LARGE OBJECTBLOB(1M)( enteroKMG)DATETIMETIMESTAMP

option-list : (Las opciones pueden especificarse en cualquier orden, pero cada opción solo puede especificarse una vez)

Leer diagrama de sintaxisOmitir el diagrama de sintaxis visualLANGUAGE SQLFENCED1EXTERNAL NAME' serie'identificador1DYNAMIC RESULT SETS 0DYNAMIC RESULT SETSenteroPARAMETER CCSIDASCIIEBCDICUNICODEPARAMETER VARCHARNULTERMSTRUCTURENOT DETERMINISTICDETERMINISTICCALLED ON NULL INPUT MODIFIES SQL DATAREADS SQL DATACONTAINS SQLNO DBINFONO COLLIDCOLLIDid-colecciónWLM ENVIRONMENTnombre(nombre,*)ASUTIME NO LIMITASUTIME LIMITenteroSTAY RESIDENT NOSTAY RESIDENT YESPROGRAM TYPE MAINPROGRAM TYPE SUBSECURITY DB2SECURITY USERSECURITY DEFINERRUN OPTIONSopciones-de-ejecuciónCOMMIT ON RETURN NOCOMMIT ON RETURN YESINHERIT SPECIAL REGISTERSDEFAULT SPECIAL REGISTERSSTOP AFTER SYSTEM DEFAULT FAILURESSTOP AFTERenteroFAILURESCONTINUE AFTER FAILURE
Notas:
  • 1 Debe especificarse la cláusula FENCED o EXTERNAL NAME para indicar que la definición es para un procedimiento SQL externo.

Descripción de CREAR PROCEDIMIENTO (SQL - externo)

nombre-del-procedimiento

Nombra el procedimiento. El nombre, incluido el calificador implícito o explícito, no debe identificar un procedimiento almacenado existente en el servidor actual.

Inicio del cambio

El nombre del esquema no puede empezar por "SYS" a menos que sea uno de los siguientes nombres: "SYSADM", "SYSIBM", "SYSIBMADM", "SYSPROC" o "SYSTOOLS".

El uso de 'SYSIBMADM' o 'SYSTOOLS' para el esquema requiere autoridad SYSADM o SYSCTRL.

fin del cambio
(declaración de parámetros,...)
Especifica el número de parámetros del procedimiento, el tipo de datos de cada parámetro y el nombre de cada parámetro. Un parámetro para un procedimiento puede utilizarse solo para entrada, solo para salida o para entrada y salida. Si el procedimiento devuelve un error, los parámetros OUT no están definidos y los parámetros INOUT no se modifican. Todos los parámetros son anulables.
ENTRADA
Identifica el parámetro como un parámetro de entrada para el procedimiento. El valor del parámetro al entrar en el procedimiento es el valor que se devuelve a la aplicación SQL que llama, incluso si se realizan cambios en el parámetro dentro del procedimiento.

IN es el valor predeterminado.

OUT
Identifica el parámetro como un parámetro de salida que devuelve el procedimiento. Si el parámetro no se establece dentro del procedimiento, se devuelve el valor nulo.
INOUT
Identifica el parámetro como parámetro de entrada y de salida para el procedimiento. Si el parámetro no se establece dentro del procedimiento, se devuelve su valor de entrada.
nombre-parámetro
Nombra el parámetro para su uso como variable SQL. parameter-name es un identificador SQL y no debe ser un identificador delimitado que incluya letras minúsculas o caracteres especiales. Un nombre de parámetro no puede ser el mismo que el nombre de cualquier otro parámetro para esta versión del procedimiento.
tipo de parámetro
Especifica el tipo de datos del parámetro.
tipo integrado
El tipo de datos del parámetro es un tipo de datos integrado.

Para obtener más información sobre los tipos de datos, incluido el subtipo de tipos de datos de caracteres (la cláusula DATA del subtipo FOR ), consulte built-in-type. Para procedimientos SQL externos, el límite máximo para VARCHAR es 32767 y para VARGRAPHIC es 16382.

Para los parámetros con un tipo de datos de carácter o gráfico, la cláusula CCSID de PARÁMETRO o la cláusula CCSID indica el esquema de codificación del parámetro. Si no especifica ninguna de estas cláusulas, el esquema de codificación es el valor del campo DEF ENCODING SCHEME en el panel de instalación DSNTIPF.

Aunque un parámetro de entrada con un tipo de datos de carácter tiene un subtipo especificado implícita o explícitamente (BIT, SBCS o MIXED), el valor que se pasa realmente en el parámetro de entrada puede tener cualquier subtipo. Por lo tanto, la conversión de los datos de entrada al subtipo del parámetro podría ocurrir cuando se llama al procedimiento. Con ASCII o EBCDIC, se produce un error si se utilizan datos mixtos que contienen caracteres DBCS como valor de un parámetro de entrada declarado con un subtipo SBCS.

Un parámetro con un tipo de datos datetime se pasa al procedimiento SQL como un tipo de datos de caracteres, y los datos se pasan en formato ISO.

El esquema de codificación para un parámetro de tipo fecha y hora se determina de la siguiente manera:

  • Si hay uno o más parámetros con un tipo de datos de carácter o gráfico, el esquema de codificación del parámetro de tipo fecha y hora es el mismo que el esquema de codificación de los parámetros de carácter o gráfico.
  • De lo contrario, el esquema de codificación es el valor del campo DEF ENCODING SCHEME en el panel de instalación DSNTIPF.
TABLA ASÍ nombre-tabla COMO LOCALIZADOR
Especifica que el parámetro es una tabla de transición. Sin embargo, cuando se llama al procedimiento, los valores reales de la tabla de transición no se pasan al procedimiento. En su lugar, se pasa un único valor. Este valor único es un localizador de la tabla, que el procedimiento utiliza para acceder a las columnas de la tabla de transición. Un procedimiento con un parámetro de tabla solo puede invocarse desde la acción desencadenada de un desencadenador.

La tabla de transición incluye columnas que se definen como implícitamente ocultas en la tabla. La tabla identificada puede contener columnas XML; sin embargo, el procedimiento no puede hacer referencia a dichas columnas XML.

Para obtener más información sobre la cláusula TABLE LIKE, consulte TABLE LIKE. Para obtener más información sobre el uso de localizadores de tablas, consulte Acceso a tablas de transición en una función definida por el usuario o un procedimiento almacenado.

LANGUAGE
Especifica el lenguaje de programación de aplicaciones en el que está escrito el procedimiento.
SQL
El procedimiento está escrito en un lenguaje de procedimiento SQL ( Db2 ).
FENCED
Especifica que el procedimiento se ejecuta en un espacio de direcciones externo. FENCED también especifica que el programa de procedimiento SQL es un módulo de carga MVS con un nombre externo.
DYNAMIC RESULT SETS entero
Especifica el número máximo de conjuntos de resultados de consulta que el procedimiento puede devolver. El valor predeterminado es RESULTADOS DINÁMICOS CONJUNTOS 0, lo que indica que el procedimiento no puede devolver ningún conjunto de resultados. El valor del entero debe estar en el rango de 0 a 32767.
PARAMETER CCSID
Indica si el esquema de codificación para los parámetros de cadena de caracteres y gráficos es ASCII, EBCDIC o UNICODE. El esquema de codificación predeterminado es el valor especificado en las cláusulas CCSID de la lista de parámetros o en el campo DEF ENCODING SCHEME del panel de instalación DSNTIPF.

Esta cláusula proporciona una forma práctica de especificar el esquema de codificación para los parámetros de cadena de caracteres y gráficos. Si se especifican cláusulas CCSID individuales para parámetros individuales además de esta cláusula CCSID PARÁMETRO, el valor que se especifique en todas las cláusulas CCSID debe ser el mismo valor que se especifique en esta cláusula.

Esta cláusula también especifica el esquema de codificación que se utilizará para los parámetros de la rutina generados por el sistema, como los tokens de mensajes y DBINFO.

PARÁMETRO VARCHAR
Especifica que la representación de los valores de los parámetros de cadena de caracteres de longitud variable para procedimientos que especifican LANGUAGE C.
NULTERM
Especifica que los parámetros de cadena de caracteres de longitud variable se representan en forma de cadena terminada en NUL.

NULTERM es el valor predeterminado.

ESTRUCTURA
Especifica que los parámetros de cadena de caracteres de longitud variable se representan en forma de estructura VARCHAR.

La cláusula PARAMETER VARCHAR solo se aplica a los parámetros de la lista de parámetros de un procedimiento y en la cláusula RETURNS. No se aplica a los parámetros de la rutina generados por el sistema, como los tokens de mensajes y DBINFO.

En un entorno de intercambio de datos, no debe especificar la cláusula PARAMETER VARCHAR hasta que todos los miembros del grupo de intercambio de datos admitan la cláusula. Si algunos miembros del grupo apoyan esta cláusula y otros no, y se especifica PARÁMETRO VARCHAR, la rutina encontrará diferentes formas de parámetros dependiendo de qué miembro del grupo invoque la rutina.

NOMBRE EXTERNO «cadena» o identificador
Especifica el nombre del módulo de carga MVS para el programa que se ejecuta cuando se especifica el nombre del procedimiento en una sentencia SQL CALL. El valor debe ajustarse a las convenciones de nomenclatura para módulos de carga de MVS : el valor debe ser menor o igual a 8 bytes, y debe ajustarse a las reglas para un identificador ordinario con la excepción de que no debe contener un guión bajo.

NOMBRE EXTERNO procedimiento-nombre es el predeterminado. En algunos casos, el nombre predeterminado no será válido. Para evitar un nombre no válido, especifique EXTERNAL NAME para un procedimiento que tenga un nombre de más de 8 bytes de longitud, contenga un guión bajo o no se ajuste a las reglas de un identificador ordinario.

NOT DETERMINISTIC o DETERMINISTIC
Especifica si el procedimiento devuelve los mismos resultados cada vez que se llama al procedimiento con los mismos argumentos IN y INOUT.
NOT DETERMINISTIC
Es posible que el procedimiento no devuelva el mismo resultado cada vez que se invoque el procedimiento con los mismos argumentos IN y INOUT, incluso cuando los datos referenciados en la base de datos no hayan cambiado.

La opción predeterminada es NO DETERMINISTA.

DETERMINISTIC
El procedimiento siempre devuelve los mismos resultados cada vez que se llama al procedimiento almacenado con los mismos argumentos IN y INOUT, si los datos referenciados en la base de datos no han cambiado.

Db2 no verifica que el código de procedimiento sea coherente con la especificación de DETERMINISTA o NO DETERMINISTA.

CALLED ON NULL INPUT
Especifica que el procedimiento debe ser llamado incluso si alguno o todos los valores de los argumentos son nulos, lo que significa que el procedimiento debe ser codificado para probar valores de argumentos nulos. El procedimiento puede devolver valores nulos o no nulos.

CALLED ON NULL INPUT es el valor predeterminado.

MOD IF ICA DATOS SQL, LEE DATOS SQL o CONTIENE SQL
Especifica la clasificación de las sentencias SQL y las rutinas anidadas que esta rutina puede ejecutar o invocar. El administrador de la base de datos verifica que las sentencias SQL emitidas por el procedimiento, y todas las rutinas invocadas localmente por la rutina, sean coherentes con esta especificación; la verificación no se realiza cuando se invocan rutinas remotas anidadas. Para conocer la clasificación de cada sentencia, consulte la clasificación de acceso a datos de sentencias SQL para rutinas.
MODIFIES SQL DATA
Especifica que el procedimiento puede ejecutar cualquier instrucción SQL, excepto las instrucciones que no son compatibles con los procedimientos.

MODIFICA DATOS SQL es el valor predeterminado.

READS SQL DATA
Especifica que el procedimiento puede ejecutar sentencias con una indicación de acceso a datos de READS SQL DATA o CONTAINS SQL. El procedimiento no puede ejecutar sentencias SQL que modifiquen datos.
CONTAINS SQL
Especifica que el procedimiento solo puede ejecutar sentencias SQL con una indicación de acceso a datos de CONTAINS SQL. El procedimiento no puede ejecutar sentencias que lean o modifiquen datos.
NO DBINFO
Especifica que no se pasa al procedimiento, cuando se invoca, ninguna información de estado adicional que sea conocida por Db2 .
NO COLLID o COLLID ID de colección
Identifica la recogida de paquetes que se utilizará cuando se ejecute el procedimiento. Este es el paquete de recopilación al que está vinculado el DBRM asociado al procedimiento.
NO COLLID
Especifica que la recogida de paquetes para el procedimiento es la misma que la recogida de paquetes del programa de llamada. Si el programa que invoca no utiliza un paquete, Db2 resuelve el paquete utilizando el registro especial CURRENT PACKAGE PATH, el registro especial CURRENT PACKAGESET o la opción de enlace PKLIST (en este orden). Para obtener más información sobre cómo utiliza Db2 estos tres elementos, consulte la información sobre la resolución de paquetes en Encuadernación de un plan de aplicación.

NO COLLID es el valor predeterminado.

COLLID collection-id
Especifica la recogida de paquetes para el procedimiento.
WLM ENVIRONMENT nombre o (nombre, *)
Identifica el entorno WLM (gestor de carga de trabajo) en el que se ejecutará el procedimiento almacenado cuando el espacio de direcciones del procedimiento almacenado e Db2 e esté establecido por WLM. El nombre del entorno WLM es un identificador SQL.

Si no especifica WLM ENVIRONMENT, el procedimiento se ejecuta en el espacio de direcciones de procedimiento almacenado establecido por defecto en WLM que se especifica en el momento de la instalación.

nombre
El entorno WLM en el que debe ejecutarse el procedimiento. Si otro procedimiento o una función definida por el usuario llama al procedimiento y esa rutina de llamada se ejecuta en un espacio de direcciones que no está asociado con el entorno WLM especificado, Db2 enruta la solicitud de procedimiento a un espacio de direcciones diferente.
(nombre,*)
Cuando un programa de aplicación SQL llama directamente a un procedimiento, el nombre especifica el entorno WLM en el que se ejecuta el procedimiento.

Si otro procedimiento o una función definida por el usuario llama al procedimiento almacenado, el procedimiento se ejecuta en el mismo entorno WLM que utiliza la rutina de llamada.

Debe tener la autoridad adecuada para el entorno WLM.

ASUTIME
Especifica la cantidad total de tiempo de procesador, en unidades de servicio de CPU, que puede ejecutar una sola invocación de un procedimiento. El valor no está relacionado con la columna ASUTIME de la tabla de especificación de límites de recursos.

Cuando se depura un procedimiento, establecer un límite puede ser útil en caso de que el procedimiento quede atrapado en un bucle. Para obtener información sobre las unidades de servicio, consulte z/OS MVS Guía de inicialización y ajuste.

Sin límites
No hay límite en el número de unidades de servicio de CPU que puede ejecutar el procedimiento.

NO LIMIT es el valor predeterminado.

LIMIT entero
El límite en el número de unidades de servicio de CPU es un número entero positivo en el rango de 1 a 2147483647. Si el procedimiento utiliza más unidades de servicio que el valor especificado, Db2 cancela el procedimiento. Los ciclos de CPU que consumen las tareas paralelas en un procedimiento no contribuyen al LÍMITE DE TIEMPO DE EJECUCIÓN especificado.
STAYRESIDENT
Especifica si el módulo de carga para el procedimiento permanece residente en la memoria cuando finaliza el procedimiento.
NEE
El módulo de carga se elimina de la memoria una vez finalizado el procedimiento.

NO es el valor predeterminado.

YES
El módulo de carga permanece en la memoria una vez finalizado el procedimiento.
PROGRAMTYPE
Especifica si el procedimiento se ejecuta como una rutina principal o una subrutina.
MAIN
El procedimiento se ejecuta como una rutina principal.

MAIN es el valor predeterminado.

SUB
El procedimiento se ejecuta como una subrutina.
SEGURIDAD
Especifica cómo interactúa el procedimiento con un producto de seguridad externo, como RACF®, para controlar el acceso a recursos no SQL.
Db2
El procedimiento no requiere un entorno de seguridad externo especial. Si el procedimiento accede a recursos protegidos por un producto de seguridad externo, el acceso se realiza utilizando el ID de autorización asociado al espacio de direcciones en el que se ejecuta el procedimiento.

Db2 es el valor predeterminado.

USUARIO
Debe establecerse un entorno de seguridad externo para el procedimiento. Si el procedimiento accede a recursos protegidos por el producto de seguridad externo, el acceso se realiza utilizando el ID de autorización del usuario que invocó el procedimiento.
DEFINER
Debe establecerse un entorno de seguridad externo para el procedimiento. Si el procedimiento accede a recursos protegidos por el producto de seguridad externo, el acceso se realiza utilizando el ID de autorización del propietario del procedimiento.
RUN OPTIONS run-time-options
Especifica las opciones de tiempo de ejecución de Language Environment® que deben utilizarse para el procedimiento. Debe especificar las opciones de tiempo de ejecución como una cadena de caracteres que no supere los 254 bytes. Si no especifica OPCIONES DE EJECUCIÓN o pasa una cadena vacía, Db2 no pasa ninguna opción de ejecución a Language Environment, y Language Environment utiliza sus valores predeterminados de instalación.

Para obtener una descripción de las opciones de tiempo de ejecución de Language Environment, consulte Language Environment Programming Reference.

COMMIT ON RETURN
Indica si Db2 realiza la transacción inmediatamente al regresar del procedimiento.
NEE
Db2 no emite un commit cuando el procedimiento regresa.

NO es el valor predeterminado.

YES
Db2 emite un commit cuando el procedimiento devuelve si las siguientes declaraciones son verdaderas:
  • La instrucción CALL devuelve un SQLCODE positivo.
  • El procedimiento no se encuentra en un estado de aborto obligatorio.

La operación de confirmación incluye el trabajo que efectúa el proceso de aplicación de llamada y el procedimiento.

Si el procedimiento devuelve conjuntos de resultados, los cursores asociados a dichos conjuntos deben haberse definido como WITH HOLD para poderlos utilizar después de la confirmación.

REGISTROS ESPECIALES DE HERENCIA o REGISTROS ESPECIALES POR INCUMPLIMIENTO
Especifica cómo se establecen los registros especiales al entrar en la rutina.
INHERIT SPECIAL REGISTERS
Especifica que los valores de los registros especiales se heredan, según las reglas que figuran en la tabla de características de los registros especiales de un procedimiento de la Tabla 1.

HEREDAR REGISTROS ESPECIALES es la opción predeterminada.

REGISTROS ESPECIALES POR DEFECTO
Especifica que los registros especiales se inicializan con los valores por defecto, tal y como indican las reglas de la tabla de características de los registros especiales en un procedimiento de la Tabla 1.
DETENERSE TRAS FALLOS POR DEFECTO DEL SISTEMA, DETENERSE TRAS nn FALLOS, o CONTINUAR TRAS FALLO
Especifica que la rutina se detiene después de los fallos.
DETENERSE TRAS FALLOS DE DEFECTO DEL SISTEMA
Especifica que esta rutina debe colocarse en estado detenido después del número de fallos indicado por el valor del campo MAX ABEND COUNT en el panel de instalación DSNTIPX.

PARAR DESPUÉS DE FALLOS POR DEFECTO DEL SISTEMA es el valor predeterminado.

DETENERSE DESPUÉS DE nn FALLOS
Especifica que esta rutina debe colocarse en un estado detenido después de nn fallos. El valor nn puede ser un entero de 1 a 32767.
CONTINUAR DESPUÉS DE UN ERROR
Especifica que esta rutina no debe colocarse en estado detenido después de cualquier fallo.
SQL-cuerpo-de-rutina
Especifica las sentencias que definen el cuerpo del procedimiento SQL. Para obtener información sobre las sentencias de control SQL que se admiten en los procedimientos SQL externos, consulte Sentencias de control SQL para procedimientos SQL externos.

Notas para CREAR PROCEDIMIENTO (SQL - externo)

Consideraciones para todo tipo de procedimientos
Para las consideraciones que se aplican a todos los tipos de procedimientos, consulte la declaración CREATE PROCEDURE (resumen ).
Sintaxis alternativa y sinónimos
Para proporcionar compatibilidad con versiones anteriores de Db2 u otros productos de la familia Db2 , Db2 admite la siguiente sintaxis alternativa:
  • CONJUNTO DE RESULTADOS y CONJUNTOS DE RESULTADOS como sinónimos de CONJUNTOS DINÁMICOS DE RESULTADOS
  • VARIANT como sinónimo de NO DETERMINISTA
  • NO VARIANTE como sinónimo de DETERMINISTA

Ejemplos para CREATE PROCEDURE (SQL - externo)

Ejemplo 1
Crear la definición de un procedimiento SQL. El procedimiento acepta un número de empleado y un multiplicador para un aumento de sueldo como entrada. Las siguientes tareas se realizan en el cuerpo del procedimiento:
  • Calcular el nuevo salario del empleado.
  • Actualizar la tabla de empleados con el nuevo valor salarial.
CREATE PROCEDURE UPDATESALARY
 (IN EMPLOYEE_NUMBER CHAR(10),
 IN RATE DECIMAL(6,2))
 LANGUAGE SQL
 FENCED
 EXTERNAL NAME 'USALARY1'
 MODIFIES SQL DATA
  UPDATE EMP
  SET SALARY = SALARY * RATE
  WHERE EMPNO = EMPLOYEE_NUMBER
Ejemplo 2

Cree la definición para el procedimiento SQL descrito en el ejemplo 1, pero especifique que el procedimiento tiene estas características:

  • El procedimiento se ejecuta en un entorno WLM llamado PARTSA.
  • La misma entrada siempre produce la misma salida.
  • El trabajo SQL se confirma al remitente.
  • Las opciones de tiempo de ejecución de Language Environment que se utilizarán cuando se ejecute el procedimiento SQL son 'MSGFILE(OUTFILE),RPTSTG(ON),RPTOPTS(ON)'.
CREATE PROCEDURE UPDATESALARY
 (IN EMPLOYEE_NUMBER CHAR(10),
 IN RATE DECIMAL(6,2))
 LANGUAGE SQL
 FENCED
 EXTERNAL NAME 'USALARY2'
 MODIFIES SQL DATA
 WLM ENVIRONMENT PARTSA
 DETERMINISTIC
 RUN OPTIONS 'MSGFILE(OUTFILE),RPTSTG(ON),RPTOPTS(ON)'
 COMMIT ON RETURN YES
   UPDATE EMP
   SET SALARY = SALARY * RATE
   WHERE EMPNO = EMPLOYEE_NUMBER

Para más ejemplos de procedimientos SQL, véase Sentencias de control SQL para procedimientos SQL externos.