Declaración ALTER PROCEDURE (SQL - procedimiento externo) (obsoleta)

La sentencia ALTER PROCEDURE cambia la descripción de un procedimiento de SQL externo en el servidor actual.

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

Invocación para ALTER PROCEDURE (SQL - externo)

Esta sentencia puede incorporarse en un programa de aplicación o emitirse de forma interactiva. Es una instrucción ejecutable que puede prepararse dinámicamente solo si el comportamiento DYNAMICRULES RUN está en vigor. Para obtener más información, consulte ID de autorización y SQL dinámico.

Autorización para ALTER PROCEDURE (SQL - externo)

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

  • Propiedad del procedimiento almacenado
  • El privilegio ALTERIN 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 ALTERIN sobre el esquema.

Inicio del cambioSi el ID de autorización que se utiliza para modificar 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 cuando se reevalúa la definición del procedimiento.fin del cambio

Conjunto de privilegios:

Si la sentencia está incluida en un programa de aplicación, el conjunto de privilegios son los privilegios que posee el propietario del paquete.

Si la sentencia está preparada dinámicamente, el conjunto de privilegios es el conjunto de es propiedad de los ID de autorización de SQL del proceso. El nombre de rutina especificado puede incluir un nombre de esquema (calificador). Sin embargo, si el nombre de esquema no es el mismo que uno de estos ID de autorización de SQL, tiene que cumplirse una de estas condiciones:
  1. El conjunto de privilegios incluye la autoridad SYSADM
  2. El conjunto de privilegios incluye la autoridad SYSCTRL
  3. El ID de autorización de SQL del proceso tiene el privilegio ALTERIN sobre el esquema

El ID de autorización SQL que se utiliza para modificar la definición del procedimiento debe tener la autoridad adecuada para el entorno WLM en el que se ha definido actualmente el procedimiento para su ejecución. Esta autorización se obtiene de un producto de seguridad externo, como RACF®. Para obtener más información, consulte Gestión de autorizaciones para la creación de procedimientos almacenados en entornos WLM.

Sintaxis para ALTER PROCEDURE (SQL - externo)

Leer diagrama de sintaxisOmitir el diagrama de sintaxis visualALTER PROCEDUREnombre-procedimientolista-opciones

option-list : (Especifique las opciones en cualquier orden. Especifique al menos una opción. No especifique la misma opción más de una vez)

Leer diagrama de sintaxisOmitir el diagrama de sintaxis visualDYNAMIC RESULT SETSenteroEXTERNAL NAME nombre-del-programa-externoidentificador NOT DETERMINISTICDETERMINISTICMODIFIES SQL DATAREADS SQL DATACONTAINS SQLNO COLLIDCOLLIDid-colecciónWLM ENVIRONMENT nombre(nombre,*) ASUTIME NO LIMITLIMITentero STAY RESIDENT NOYES PROGRAM TYPE SUBMAIN SECURITY DB2USERDEFINER COMMIT ON RETURN NOYES RUN OPTIONSopciones-de-ejecuciónINHERIT SPECIAL REGISTERSDEFAULT SPECIAL REGISTERSSTOP AFTER SYSTEM DEFAULT FAILURESSTOP AFTERenteroFAILURESCONTINUE AFTER FAILURES

Descripción de ALTER PROCEDURE (SQL - externo)

nombre-del-procedimiento
Identifica el procedimiento almacenado que se va a modificar.
DYNAMIC RESULT SETS entero
Especifica el número máximo de conjuntos de resultados de consulta que el procedimiento puede devolver. El valor debe estar en el rango de 0 a 32767.
EXTERNAL NAME nombre-del-programa-externo 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.
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.
DETERMINISTIC
El procedimiento siempre devuelve los mismos resultados cada vez que se llama al procedimiento 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 DETERMINISTIC o NOT DETERMINISTIC.

MODIFIES SQL DATA, READS SQL DATA, o CONTAINS 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 la clasificación de cada instrucción, consulte Clasificación de acceso a datos de instrucciones SQL para rutinas. Las declaraciones que no sean compatibles con ningún procedimiento devolverán un error.
MODIFIES SQL DATA
Especifica que el procedimiento puede ejecutar cualquier instrucción SQL, excepto las instrucciones que no son compatibles con los procedimientos.
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 instrucciones SQL que modifiquen datos.
CONTAINS SQL
Especifica que el procedimiento solo puede ejecutar sentencias SQL con una indicación de acceso de CONTAINS SQL. El procedimiento no puede ejecutar sentencias que lean o modifiquen datos.
NO COLLID o COLLID collection-id
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
Indica 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 (bind) 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.
COLLID id-colección
Especifica la recogida de paquetes para el procedimiento.
WLM ENVIRONMENT nombre o ( nombre,*)
Identifica el entorno WLM (administrador de carga de trabajo) en el que se ejecutará el procedimiento cuando el espacio de direcciones de procedimientos almacenados de WLM ( Db2 ) esté establecido. El nombre del entorno WLM es un identificador SQL.
nombre
Especifica el entorno WLM en el que debe ejecutarse el procedimiento. Si otra rutina llama al procedimiento y esa rutina de llamada se está ejecutando 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 almacenado.

Si otra rutina llama al procedimiento, este se ejecuta en el mismo entorno WLM que utiliza la rutina que llama.

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ímite 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.

NO LIMIT
No hay límite en el número de unidades de servicio de CPU que puede ejecutar el procedimiento.
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.
STAY RESIDENT
Especifica si el módulo de carga del procedimiento debe permanecer en la memoria cuando finalice el procedimiento.
NO
El módulo de carga se elimina de la memoria una vez finalizado el procedimiento.
YES
El módulo de carga permanece en la memoria una vez finalizado el procedimiento.
PROGRAM TYPE
Especifica si el procedimiento se ejecuta como una rutina principal o como una subrutina. Si se modifica el TIPO DE PROGRAMA, es necesario volver a compilar el procedimiento almacenado para que el cambio surta efecto.
SUB
El procedimiento se ejecuta como una subrutina.
MAIN
El procedimiento se ejecuta como una rutina principal.
SECURITY
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.
USER
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 opciones-de-ejecución
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 RUN OPTIONS o pasa una cadena vacía, Db2 no pasa ninguna opción de tiempo 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.
NO
Db2 no emite un commit cuando el procedimiento regresa.
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.

INHERIT SPECIAL REGISTERS o DEFAULT SPECIAL REGISTERS
Especifica cómo se establecen los registros especiales al entrar en la rutina.
INHERIT SPECIAL REGISTERS
Especifica que los registros especiales deben heredarse según las reglas enumeradas en la tabla de características de los registros especiales de un procedimiento de la Tabla 1.
DEFAULT SPECIAL REGISTERS
Especifica que los registros especiales deben inicializarse con los valores por defecto, tal como indican las reglas de la tabla de características de los registros especiales en un procedimiento de la Tabla 1.
STOP AFTER SYSTEM DEFAULT FAILURES, STOP AFTER nn FAILURES, o CONTINUE AFTER FAILURE
Especifica si la rutina se detiene después de los fallos.
STOP AFTER SYSTEM DEFAULT FAILURES
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.
STOP AFTER nn FAILURES
Especifica que esta rutina debe colocarse en estado detenido después de nn fallos. El valor nn puede ser un entero de 1 a 32767.
CONTINUE AFTER FAILURES
Especifica que esta rutina no debe colocarse en estado detenido después de cualquier fallo.

Notas para ALTER PROCEDURE (SQL - externo)

Cambio a un procedimiento SQL nativo:
No puede cambiar un procedimiento SQL externo a un procedimiento SQL nativo. Puede eliminar el procedimiento que desea cambiar mediante la instrucción DROP y crear un procedimiento SQL nativo con una definición similar mediante la instrucción CREATE PROCEDURE. De forma alternativa, puede crear un procedimiento SQL nativo utilizando un esquema diferente.

Para obtener más información, consulte Migración de un procedimiento SQL externo a un procedimiento SQL nativo.

Invalidación de paquetes:
Cuando se modifica un procedimiento SQL, todos los paquetes que hacen referencia a ese procedimiento se marcan como no válidos.
Sintaxis alternativa y sinónimos:

Para proporcionar compatibilidad con versiones anteriores de Db2 u otros productos de la familia UDB de Db2 , Db2 admite las siguientes palabras clave:

  • CONJUNTO DE RESULTADOS, CONJUNTOS DE RESULTADOS y CONJUNTO DE RESULTADOS DINÁMICO como sinónimos de DYNAMIC RESULT SETS.
  • VARIANT como sinónimo de NOT DETERMINISTIC
  • NO VARIANT como sinónimo de DETERMINISTIC

Ejemplo para ALTER PROCEDURE (SQL - externo)

La siguiente declaración modifica la definición de un procedimiento SQL para que los cambios SQL se confirmen al regresar del procedimiento SQL y el procedimiento SQL se ejecute en el entorno WLM denominado WLMSQLP.
ALTER PROCEDURE UPDATE_SALARY_1
 COMMIT ON RETURN YES
 WLM ENVIRONMENT WLMSQLP;