Declaración ALTER FUNCTION (función escalar SQL compilada)

La sentencia ALTER FUNCTION (escalar de SQL) cambia la descripción de una función escalar de SQL compilada definida por el usuario en el servidor actual. Las opciones de la función, los nombres de los parámetros y el cuerpo de la rutina pueden modificarse y pueden definirse y actualizarse versiones adicionales de la función mediante la sentencia ALTER FUNCTION.

Invocación para ALTER FUNCTION (escalar SQL compilado)

Esta declaración solo puede prepararse dinámicamente y el comportamiento de ejecución de DYNAMICRULES debe especificarse implícita o explícitamente.

Autorización para ALTER FUNCTION (escala SQL compilada)

El conjunto de privilegios definido a continuación debe incluir al menos uno de los siguientes:
  • Titularidad de la función
  • El privilegio ALTERIN en el esquema
  • Autorización DBADM del sistema
  • Autorización SYSCTRL
  • SYSADM
  • 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 la función tiene la autoridad de instalación SYSADM o la autoridad de instalación SYSOPR y si el SQLID actual está configurado como SYSINSTL, la función se identifica como función definida por el sistema cuando se reevalúa la definición de la función.fin del cambio

Se pueden requerir privilegios adicionales en las siguientes situaciones:

  • Si se especifica un cuerpo de rutina SQL, el conjunto de privilegios debe incluir los privilegios necesarios para ejecutar las sentencias en el cuerpo de la rutina SQL.
  • Si se hace referencia a un tipo definido por el usuario como tipo de datos de un parámetro, el conjunto de privilegios debe incluir al menos uno de los siguientes:
    • Propiedad del tipo distinto
    • El privilegio USAGE en el tipo definido por el usuario
    • Autorización DBADM del sistema
    • Autorización DATAACCESS
    • Autorización SYSADM
  • Si la función utiliza una tabla como parámetro, el conjunto de privilegios también debe incluir al menos uno de los siguientes:
    • Propiedad de la tabla
    • El privilegio SELECT en la mesa
    • Autorización DATAACCESS
    • Autorización SYSADM
  • Si especifica la cláusula WLM ENVIRONMENT FOR DEBUG MODE, se invoca RACF® o un producto de seguridad externo para comprobar la autoridad requerida para definir programas en el entorno WLM. Si el acceso al entorno WLM está protegido en RACF, el conjunto de privilegios debe incluir la autoridad requerida.
  • Al sustituir una función escalar SQL, el conjunto de privilegios debe incluir la autorización necesaria para añadir un nuevo paquete o una nueva versión de un paquete existente en función del valor del campo BIND NEW PACKAGE del panel de instalación DSNTIPP, o bien el conjunto de privilegios debe incluir la autoridad SYSADM, SYSCTRL o DBADM del sistema. El propietario del paquete debe tener los privilegios necesarios para ejecutar las sentencias del cuerpo de la rutina SQL.

Es posible que se requiera autorización adicional en las tablas SYSDUMMYx, dependiendo del contenido de la definición de la función. Para más detalles, consulte las tablas SYSDUMMYx.

Se requiere al menos uno de los siguientes privilegios si se especifica la opción SECURED (SEGURO) o si la función está actualmente asegurada y se especifica la opción NOT SECURED (NO SEGURO):
  • Autorización SECADM
  • Privilegio CREATE_SECURE_OBJECT

También se requiere al menos uno de esos privilegios si la función está actualmente protegida y se especifica la cláusula ALTER ACTIVE VERSION, ALTER VERSION routine-version-id, ADD VERSION o REPLACE.

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
Inicio del cambioCuando se emite ALTER FUNCTION en un contexto de confianza que tiene la cláusula ROLE AS OBJECT OWNER, el propietario del paquete se determina como sigue:
  • Si no se especifica la opción PROPIETARIO DEL PAQUETE, el rol asociado con la carpeta se convierte en el propietario del paquete.
  • Si se especifica la opción PROPIETARIO DEL PAQUETE, el rol especificado en la opción PROPIETARIO DEL PAQUETE se convierte en el propietario del paquete. En un contexto de confianza, el PROPIETARIO DEL PAQUETE especificado debe ser un rol.
fin del cambio

Sintaxis para ALTER FUNCTION (escalar SQL compilado)

Leer diagrama de sintaxisOmitir el diagrama de sintaxis visualALTER designador-funciónALTERACTIVE VERSIONALL VERSIONSVERSIONidentificador-de-versión-rutinarialista-opcionesREPLACEACTIVE VERSIONVERSIONidentificador-de-versión-rutinariaespecificación de rutinaADD VERSIONidentificador-de-versión-rutinariaespecificación de rutinaACTIVATE VERSIONidentificador-de-versión-rutinariaREGENERATEACTIVE VERSIONVERSIONidentificador-de-versión-rutinariaUSINGAPPLICATION COMPATIBILITYnivel de compatibilidad de aplicacionesDROP VERSIONidentificador-de-versión-rutinaria
designador de función:
Leer diagrama de sintaxisOmitir el diagrama de sintaxis visualFUNCTIONnombre-función(,parámetro-tipo)SPECIFIC FUNCTIONnombre-específico
tipo de parámetro:
Leer diagrama de sintaxisOmitir el diagrama de sintaxis visualtipo de datosAS LOCATOR1
especificación de rutina:
Leer diagrama de sintaxisOmitir el diagrama de sintaxis visual( ,nombre-parámetrotipo de datos )RETURNSdata-type2lista-opcionesSQL-cuerpo-de-rutina
tipo de datos, data-type2:
Leer diagrama de sintaxisOmitir el diagrama de sintaxis visualtipo-incorporado2nombre-tipo-diferenciadoarray-type-name
SQL-cuerpo-de-rutina:
Leer diagrama de sintaxisOmitir el diagrama de sintaxis visualDeclaración de control SQL
lista de opciones:
Leer diagrama de sintaxisOmitir el diagrama de sintaxis visual3NOT DETERMINISTICDETERMINISTICEXTERNAL ACTIONNO EXTERNAL ACTIONREADS SQL DATACONTAINS SQLMODIFIES SQL DATACALLED ON NULL INPUTRETURNS NULL ON NULL INPUTSTATIC DISPATCHALLOW PARALLELDISALLOW PARALLELDISALLOW DEBUG MODEALLOW DEBUG MODEDISABLE DEBUG MODEQUALIFIERnombre-esquemaPACKAGE OWNERnombre-autorizaciónASUTIME NO LIMITASUTIME LIMITenteroINHERIT SPECIAL REGISTERSDEFAULT SPECIAL REGISTERSWLM ENVIRONMENT FOR DEBUG MODEnombreCURRENT DATA NOCURRENT DATA YESDEGREE 1DEGREE ANYCONCURRENT ACCESS RESOLUTIONUSE CURRENTLY COMMITTEDCONCURRENT ACCESS RESOLUTIONWAIT FOR OUTCOMEDYNAMICRULES RUNDYNAMICRULES BINDDYNAMICRULES DEFINEBINDDYNAMICRULES DEFINERUNDYNAMICRULES INVOKEBINDDYNAMICRULES INVOKERUNAPPLICATION ENCODING SCHEME ASCIIAPPLICATION ENCODING SCHEME EBCDICAPPLICATION ENCODING SCHEME UNICODEWITHOUT EXPLAINWITH EXPLAINWITHOUT IMMEDIATE WRITEWITH IMMEDIATE WRITEopción-lista-continuada
opción-lista-continuada:
Leer diagrama de sintaxisOmitir el diagrama de sintaxis visualISOLATION LEVEL CSISOLATION LEVEL RSISOLATION LEVEL RRISOLATION LEVEL UROPTHINT''OPTHINTcadena-constanteSQL PATH,nombre-esquemaSYSTEM PATHSESSION USERUSERQUERY ACCELERATION NONEQUERY ACCELERATION ENABLEQUERY ACCELERATION ENABLE WITH FAILBACKQUERY ACCELERATION ELIGIBLEQUERY ACCELERATION ALLGET_ACCEL_ARCHIVE NOGET_ACCEL_ARCHIVE YESACCELERATION WAITFORDATAnnnn.mACCELERATORnombre-aceleradorREOPT NONEREOPT ALWAYSREOPT ONCEVALIDATE RUNVALIDATE BINDROUNDING DEC_ROUND_CEILINGROUNDING DEC_ROUND_DOWNROUNDING DEC_ROUND_FLOORROUNDING DEC_ROUND_HALF_DOWNROUNDING DEC_ROUND_HALF_EVENROUNDING DEC_ROUND_HALF_UPROUNDING DEC_ROUND_UPDATE FORMAT ISODATE FORMAT EURDATE FORMAT USADATE FORMAT JISDATE FORMAT LOCALDECIMAL(15)DECIMAL(31)DECIMAL(15, s)DECIMAL(31, s)FOR UPDATE CLAUSE REQUIREDFOR UPDATE CLAUSE OPTIONALTIME FORMAT ISOTIME FORMAT EURTIME FORMAT USATIME FORMAT JISTIME FORMAT LOCALSECUREDNOT SECUREDBUSINESS_TIME SENSITIVEYESBUSINESS_TIME SENSITIVENOSYSTEM_TIME SENSITIVEYESSYSTEM_TIME SENSITIVENOARCHIVE SENSITIVEYESARCHIVE SENSITIVENOAPPLCOMPATvalor de compatibilidad de aplicacionesCONCENTRATE STATEMENTSOFFCONCENTRATE STATEMENTSWITH LITERALS
Notas:
  • 1 AS LOCATOR sólo puede especificarse para un tipo de datos LOB o un tipo distinto basado en un tipo de datos LOB.
  • 2 Para el diagrama sintáctico de este fragmento, véase Sintaxis para built-in-type.
  • 3 Especifique las opciones en cualquier orden. Especifique al menos una opción. No especifique la misma opción más de una vez.

Descripción de ALTER FUNCTION (escala SQL compilada)

designador-función

Identifica la función a modificar, que debe ser una función escalar SQL compilada. El designador de función identifica la función SQL por su nombre, una firma de función que identifica la función de forma única o su nombre específico. Para más información, véase Designadores de funciones.

El número de tipos de datos y la concatenación lógica de los tipos de datos se utilizan para identificar de forma única la función. Por lo tanto, no puede cambiar el número de parámetros ni los tipos de datos de los parámetros.

Inicio del cambioLa función no debe estar ofuscada.fin del cambio

ACTIVE VERSION, ALL VERSION o, VERSION routine-version-id
Identifica la versión de la función que se va a cambiar.
VERSIÓN ACTIVA
Especifica que la versión actualmente activa de la función debe cambiarse, sustituirse o regenerarse. Si la función es segura, la versión modificada, sustituida o regenerada sigue siendo segura.

ACTIVE VERSION es la opción predeterminada.

ALL VERSIONS
Especifica que se deben cambiar todas las versiones de la función. SEGURO y NO SEGURO son las únicas opciones que se pueden cambiar cuando se especifica TODAS LAS VERSIONES.
VERSION identificador-de-versión-rutinaria
Identifica la versión de la función que se va a cambiar, sustituir o regenerar. routine-version-id es el identificador de versión que se asigna cuando se define la versión de la función. routine-version-id debe identificar una versión de la función especificada que exista en el servidor actual. Si la función es segura, la versión modificada, sustituida o regenerada sigue siendo segura.
ALTER
Especifica que se va a cambiar una versión de la función. Cuando cambie una función utilizando ALTER opción-lista, cualquier opción que no se especifique explícitamente utilizará el valor existente de la versión de la función que se está cambiando.
REPLACE
Especifica que se va a sustituir una versión de la función.

La vinculación de la versión sustituida de la función podría dar lugar a una nueva ruta de acceso, incluso si no se cambia el cuerpo de la rutina.

Cuando se sustituye una definición de función, se eliminan todos los comentarios existentes en el catálogo para esa definición de la función.

routine-specification
Especifica los nombres de los parámetros y los tipos de datos de la versión de sustitución de la función. Cuando sustituya una función, los tipos de datos, las especificaciones CCSID y los atributos de datos de caracteres (PARA DATOS BIT/SBCS/MEZCLADOS) de los parámetros deben ser los mismos que los atributos de los parámetros correspondientes para la versión actualmente activa de la función.
parameter-name
Especifica el nombre de un parámetro en la función de sustitución. El nombre del parámetro en la función de sustitución puede diferir del nombre del parámetro correspondiente de la función que se empieza a sustituir.
data-type
Especifica el tipo de datos de un parámetro en la nueva versión de la función. Los tipos de datos, las especificaciones CCSID y el atributo de datos de caracteres del parámetro deben coincidir con los atributos del parámetro correspondiente de la función que se está sustituyendo.
lista-opciones
Especifica opciones para la función de sustitución. Para las opciones que no se especifican explícitamente, se utilizan los valores predeterminados del sistema para esas opciones, incluso si esas opciones se especificaron explícitamente para la versión de la función que se está reemplazando. Este no es el caso de las versiones de la función que especificaban DISABLE DEBUG MODE. Si se especifica DISABLE DEBUG MODE para una versión de una función, no se puede cambiar utilizando la cláusula REPLACE.
ADD VERSION identificador-de-versión-rutinaria
Especifica que se va a crear una nueva versión de la función. routine-version-id es el identificador de versión para la nueva versión de la función. routine-version-id no debe identificar una versión de la función especificada que ya exista en el servidor actual.

Si la función es segura, la nueva versión se considera segura.

routine-specification
Especifica los nombres de los parámetros y los tipos de datos para la nueva versión de la función. Los tipos de datos, las especificaciones CCSID y los atributos de datos de caracteres (PARA DATOS BIT/SBCS/MIXED) de los parámetros deben ser los mismos que los atributos de los parámetros correspondientes para la versión actualmente activa de la función.
parameter-name
Especifica el nombre de un parámetro en la nueva versión. El nombre del parámetro puede diferir del nombre del parámetro correspondiente en otras versiones de la función.
data-type
Especifica el tipo de datos de un parámetro en la nueva versión de la función. El tipo de datos, la especificación CCSID y el atributo de datos de caracteres deben coincidir con el parámetro correspondiente de la versión actualmente activa de la función
lista-opciones
Especifica opciones para la nueva versión de la función. Para las opciones que no se especifican explícitamente, se utilizan los valores por defecto del sistema.
ACTIVATE VERSION identificador-de-versión-rutinaria
Especifica la versión de la función que será la versión activa en ese momento. routine-version-id es el identificador de versión que se asigna cuando se define la versión de la función. La versión que se especifica con routine-version-id es la versión que será invocada por una invocación de función. routine-version-id debe identificar una versión de la función que existe en el servidor actual.
REGENERATE
Especifica que se debe volver a generar una versión de la función.

REGENERATE vuelve a vincular automáticamente, en el servidor actual, el paquete para las instrucciones de control SQL para la función y vuelve a vincular el paquete para las instrucciones SQL que se incluyen en el cuerpo de la función.

REGENERATE es diferente al comando REBIND PACKAGE. REBIND PACKAGE vuelve a vincular las sentencias SQL (normalmente para generar mejores rutas de acceso para esas sentencias), pero las sentencias de control SQL en la definición de la función no se vuelven a vincular.

Cuando se regenera una definición de función, no se eliminan los comentarios existentes en el catálogo para esa definición de la función.

Inicio del cambioGeneralmente, la palabra clave REGENERATE sólo se utiliza en situaciones específicas, como cuando falla la regeneración implícita de rutinas u objetos, o el mantenimiento de Db2 requiere que se regeneren objetos o rutinas. Para obtener más información, consulte Cuándo regenerar los objetos y rutinas de la base de datos Db2.fin del cambio

Inicio del cambioUSO DE LA COMPATIBILIDAD DE APLICACIONES applcompat-levelfin del cambio
Inicio del cambioEspecifica el nivel de compatibilidad de la aplicación utilizado para regenerar la versión del procedimiento. La sentencia ALTER devuelve un error si la definición existente de la versión incluye sintaxis, semántica u opciones que requieren un nivel de compatibilidad de aplicación superior. Esta situación puede ocurrir cuando la versión se definió o regeneró más recientemente mientras se ejecutaba en un nivel de compatibilidad de aplicación superior al nivel de compatibilidad de aplicación.

Se pueden especificar los siguientes valores:

Inicio del cambioV12R1M5nnfin del cambio
Inicio del cambio

Compatibilidad con el comportamiento del nivel de función Db2 12 identificado. Por ejemplo, V12R1M510 especifica la compatibilidad con el nivel de función Db2 12 más alto disponible. Debe activarse el nivel de función equivalente o superior.

Inicio del cambioPara obtener información sobre las nuevas capacidades que estarán disponibles en cada nivel de compatibilidad de aplicaciones, consulte los niveles de compatibilidad de aplicaciones V12R1Mnnn.fin del cambio

Sugerencia: Inicio del cambioEs posible que se requieran pasos adicionales de preparación del programa para aumentar el nivel de compatibilidad de las aplicaciones que utilizan clientes o controladores de servidor de datos para acceder a Db2 for z/OS®. Para obtener más información, consulte Configuración de niveles de compatibilidad de aplicaciones para clientes y controladores de servidores de datos.fin del cambio
fin del cambio
Inicio del cambioV12R1fin del cambio
Inicio del cambioCompatibilidad con el comportamiento de Db2 12 nivel de función 500. Este valor tiene el mismo resultado que especificar V12R1M500.fin del cambio
V11R1
Compatibilidad con el comportamiento de la modalidad de nueva función de Db2 11. Después de la migración a Db2 12, este valor tiene el mismo resultado que especificar V12R1M100. Para más información, consulte V11R1 nivel de compatibilidad de la aplicación
V10R1
Compatibilidad con el comportamiento de la modalidad de nueva función de DB2® 10. Para más información, consulte V10R1 nivel de compatibilidad de la aplicación.

Si se omite USING APPLICATION COMPATIBILITY, la regeneración utiliza el valor APPLCOMPAT de la fila de la tabla del catálogo de SYSIBM.SYSPACKAGE aplicable.

fin del cambio
DROP VERSION identificador-de-versión-rutinaria
Suelta la versión de la función que se identifica con routine-version-id. routine-version-id es el identificador de versión que se asigna cuando se define la versión. routine-version-id debe identificar una versión de la función que existe en el servidor actual y no debe identificar la versión actualmente activa de la función. Solo se elimina la versión identificada de la función.

Cuando solo exista una versión de la función en el servidor actual, utilice la instrucción DROP FUNCTION para eliminar la función.

RETURNS
Identifica el resultado de la función.
data-type2
Especifica el tipo de datos de la salida. El tipo de datos debe coincidir con el tipo de datos especificado en la cláusula RETURNS de la instrucción CREATE FUNCTION.
NOT DETERMINISTIC o DETERMINISTIC
Especifica si la función devuelve los mismos resultados cada vez que se invoca con los mismos argumentos de entrada.
NOT DETERMINISTIC
La función podría no devolver el mismo resultado cada vez que se invoque con los mismos argumentos de entrada. La función depende de algunos valores de estado que afectan a los resultados. Db2 utiliza esta información para desactivar la combinación de vistas y expresiones de tabla al procesar instrucciones de modificación de datos SELECT o SQL que hacen referencia a esta función. Un ejemplo de una función que no es determinante es la que genera números aleatorios.

NOT DETERMINISTIC debe especificarse explícita o implícitamente si la función programa accede a un registro especial o invoca otra función que no es determinista.

DETERMINISTIC
La función siempre devuelve el mismo resultado cada vez que se invoca con los mismos argumentos de entrada. Un ejemplo de función determinista es una función que calcula la raíz cuadrada de la entrada. Db2 utiliza esta información para permitir la fusión de vistas y expresiones de tabla para instrucciones de modificación de datos SELECT o SQL que hacen referencia a esta función. Si procede, especifique DETERMINISTIC para evitar que se elijan rutas de acceso no óptimas para las sentencias SQL que hacen referencia a esta función.

Db2 no verifica que el programa de funciones sea coherente con la especificación de DETERMINISTIC o NOT DETERMINISTIC.

EXTERNAL ACTION o NO EXTERNAL ACTION
Especifica si la función realiza una acción que cambia el estado de un objeto que Db2 no gestiona. Un ejemplo de una acción externa es enviar un mensaje o grabar un registro en un archivo.
EXTERNAL ACTION
La función puede realizar una acción que cambie el estado de un objeto que Db2 no gestiona.

Algunas sentencias SQL que invocan funciones con acciones externas pueden dar resultados incorrectos si tareas paralelas ejecutan la función. Por ejemplo, si la función envía una nota para cada llamada inicial a esa función, se enviará una nota para cada tarea paralela, en lugar de una nota para la función.

Si especifica EXTERNAL ACTION, Db2:

  • Materializa las vistas y expresiones de tabla en instrucciones SELECT o SQL de modificación de datos que hacen referencia a la función. Esta materialización puede afectar negativamente a las rutas de acceso elegidas para las sentencias SQL que hacen referencia a esta función. No especifique EXTERNAL ACTION si la función no tiene una acción externa.
  • No mueve la función de un bloque de control de tareas (TCB) a otro entre operaciones FETCH.
  • No permite que otra función o procedimiento almacenado utilice el TCB hasta que se cierre el cursor. Esto también es aplicable a los cursores declarados CON RETENCIÓN.

Los únicos cambios en los recursos realizados fuera de Db2 que están bajo el control de las operaciones de confirmación y reversión son aquellos cambios realizados bajo el control de RRS.

EXTERNAL ACTION debe especificarse implícita o explícitamente si el cuerpo de la rutina SQL invoca una función que está definida con EXTERNAL ACTION.

NO EXTERNAL ACTION
La función no realiza ninguna acción que cambie el estado de un objeto que Db2 no gestiona. Db2 utiliza esta información para permitir la fusión de vistas y expresiones de tabla para instrucciones de modificación de datos SELECT o SQL que hacen referencia a esta función. Si procede, especifique NO EXTERNAL ACTION para evitar que se elijan rutas de acceso no óptimas para las sentencias SQL que hacen referencia a esta función.

Db2 no verifica que el programa de funciones sea coherente con la especificación de EXTERNAL ACTION o NO EXTERNAL ACTION.

MODIFIES SQL DATA, LEE DATOS SQL, 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 la función, 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 la clasificación de acceso a datos de instrucciones SQL para rutinas.
MODIFIES SQL DATA
Especifica que la función puede ejecutar cualquier instrucción SQL excepto las instrucciones que no son compatibles con las funciones. No especifique MODIFIES SQL DATA cuando ALLOW PARALLEL esté en vigor.

Inicio del cambioSi una función definida con MODIFIES SQL DATA se invoca en cualquier lugar excepto en la cláusula select de la sentencia SELECT más externa, los resultados son impredecibles porque la función puede invocarse varias veces dependiendo del plan de acceso que se utilice.fin del cambio

Recomendación: Inicio del cambioSi una sentencia SELECT invoca una función definida con la opción MODIFIES SQL DATA , asegúrese de que las sentencias anidadas dentro de la función no modifican objetos a los que se hace referencia en cualquier sentencia SQL de un nivel de anidamiento superior. De lo contrario, es probable que se produzcan resultados impredecibles.fin del cambio
LEE DATOS SQL
Especifica que la función puede ejecutar sentencias con una clasificación de acceso a datos de READS SQL DATA, CONTAINS SQL o NO SQL. La función no puede ejecutar instrucciones SQL que modifiquen datos.

LEER DATOS SQL es la opción predeterminada.

CONTAINS SQL
Especifica que la función solo puede ejecutar sentencias SQL con una clasificación de acceso a datos de CONTAINS SQL o NO SQL. La función no puede ejecutar instrucciones SQL para leer o modificar datos.
LLAMADA A ENTRADA NULA o RETURNS NULL ON NULL INPUT
Especifica si la función se invoca si alguno de los argumentos de entrada es nulo en el momento de la ejecución.
LLAMADA A ENTRADA NULA
Especifica que la función debe invocarse, si es que hay algún valor de argumento, o todos los valores de argumento son nulos. Esta especificación significa que el cuerpo de la función debe estar codificado para comprobar los valores nulos de los argumentos.

CALLED ON NULL INPUT es el valor predeterminado.

RETURNS NULL ON NULL INPUT
Especifica que la función no se invoca y devuelve el valor nulo si alguno de los argumentos de entrada es nulo.
ENVÍO ESTÁTICO
En el momento de la resolución de la función, Db2 elige una función basada en los tipos estáticos (o declarados) de los parámetros de la función.

El ENVÍO ESTÁTICO es el predeterminado.

ALLOW PARALLEL o DISALLOW PARALLEL
Especifica si la función puede ejecutarse en paralelo. El valor predeterminado es NO PERMITIR PARALELO, si especifica una o más de las siguientes cláusulas:
  • NOT DETERMINISTIC
  • EXTERNAL ACTION
  • MODIFIES SQL DATA

De lo contrario, la opción predeterminada es PERMITIR PARALELO.

ALLOW PARALLEL
Especifica que la función se puede ejecutar en paralelo.
DISALLOW PARALLEL
Especifica que la función no se puede ejecutar en paralelo.
ALLOW DEBUG MODE, DISALLOW DEBUG MODE, o DISABLE DEBUG MODE
Especifica si esta versión de la rutina puede ejecutarse en modo de depuración. El valor predeterminado se determina utilizando el valor del registro especial CURRENT DEBUG MODE.
ALLOW DEBUG MODE
Especifica que esta versión de la rutina se puede ejecutar en modo de depuración. Cuando se invoque esta versión de la rutina y se intente depurar, debe estar disponible un entorno WLM.
DISALLOW DEBUG MODE
Especifica que esta versión de la rutina no se puede ejecutar en modo de depuración.

Puede utilizar una instrucción ALTER para cambiar esta opción a ALLOW DEBUG MODE para esta versión inicial de la rutina.

DISABLE DEBUG MODE
Especifica que esta versión de la rutina nunca puede ejecutarse en modo de depuración.

Esta versión de la rutina no se puede cambiar para especificar PERMITIR MODO DE DEPURACIÓN o NO PERMITIR MODO DE DEPURACIÓN después de que esta versión de la rutina se haya creado o modificado para usar DESACTIVAR MODO DE DEPURACIÓN. Para cambiar esta opción, elimine la rutina y vuelva a crearla utilizando la opción que desee. Una alternativa a eliminar y volver a crear la rutina es crear una versión de la rutina que utilice la opción que desee y convertir esa versión en la versión activa.

Cuando DISABLE DEBUG MODE está en efecto, el ENTORNO WLM PARA DEBUG MODE se ignora.

QUALIFIER nombre-esquema
Especifica el calificador implícito que se utiliza para los nombres de objetos no calificados a los que se hace referencia en el cuerpo del procedimiento. Para obtener información sobre cómo se determina el valor predeterminado de esta opción, consulte Nombres de alias, índice, archivo JAR, máscara, permiso, secuencia, tabla, desencadenador y vista no cualificados.
PACKAGE OWNER nombre-autorización
Especifica el propietario del paquete asociado a la versión de la rutina. El ID de autorización SQL del proceso es el valor predeterminado.
ASUTIME
Especifica la cantidad total de tiempo de procesador, en unidades de servicio de CPU, que puede ejecutar una sola invocación de una rutina. El valor no está relacionado con la columna ASUTIME de la tabla de especificación de límites de recursos.

Cuando se depura una rutina, establecer un límite puede ser útil en caso de que la rutina quede atrapada 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ÍMITE
Especifica que no hay límite en las unidades de servicio.

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 2 147 483 647. 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.
REGISTROS ESPECIALES DE HERENCIA o DEFAULT SPECIAL REGISTERS
Especifica cómo se establecen los registros especiales al entrar en la rutina.
REGISTROS ESPECIALES DE HERENCIA
Especifica que los valores de los registros especiales se heredan, de acuerdo con las reglas que se enumeran en la tabla para las características de los registros especiales en una rutina en la Tabla 1.

HEREDAR REGISTROS ESPECIALES es la opción predeterminada.

DEFAULT SPECIAL REGISTERS
Especifica que los registros especiales se inicializan a los valores por defecto, como se indica en las reglas de la tabla de características de los registros especiales en una rutina en la Tabla 1.
WLM ENVIRONMENT FOR DEBUG MODE nombre
Especifica el entorno de aplicación WLM (gestor de carga de trabajo) que utiliza Db2 al depurar la rutina. El nombre del entorno WLM es un identificador SQL.

Si no especifica WLM ENVIRONMENT FOR DEBUG MODE, Db2 utiliza el espacio de direcciones de procedimiento almacenado establecido por defecto en WLM especificado en el momento de la instalación.

Debe tener la autoridad adecuada para el entorno de aplicación WLM.

El valor WLM ENVIRONMENT FOR DEBUG MODE se ignora cuando DISABLE DEBUG MODE está en vigor.

CURRENT DATA YES o DATOS ACTUALES NO
Especifica si se requiere la vigencia de los datos para cursores de solo lectura y ambiguos cuando el nivel de aislamiento de la estabilidad del cursor está en vigor. CURRENT DATA también determina si se puede utilizar la obtención de bloques para cursores distribuidos y ambiguos.
CURRENT DATA YES
Especifica que la moneda de los datos es necesaria para los cursores de solo lectura y ambiguos. Db2 bloqueos de páginas o filas adquiridos para garantizar la vigencia de los datos. El bloqueo de obtención se ignora para cursores ambiguos y distribuidos.
DATOS ACTUALES NO
Especifica que la moneda de los datos no es necesaria para los cursores de solo lectura y ambiguos. Se permite el bloqueo de la obtención para cursores ambiguos y distribuidos. El uso de CURRENT DATA NO no se recomienda si la rutina intenta preparar y ejecutar dinámicamente una instrucción DELETE WHERE CURRENT OF contra un cursor ambiguo después de que se abra ese cursor. Recibirá un SQLCODE negativo si su rutina intenta utilizar una instrucción DELETE WHERE CURRENT OF para cualquiera de los cursores siguientes:
  • Un cursor que está utilizando la captura de bloques
  • Un cursor que utilice paralelismo de consultas
  • Un cursor que esté posicionado en una fila que esté modificada por este o por otro proceso de aplicaciones

DATOS ACTUALES NO es el valor predeterminado.

DEGREE
Especifica si se intenta ejecutar una consulta utilizando el procesamiento paralelo para maximizar el rendimiento.
1
Especifica que no debe utilizarse el procesamiento paralelo.

1 es el valor predeterminado.

ANY
Especifica que se puede utilizar el procesamiento en paralelo.
CONCURRENT ACCESS RESOLUTION
Especifica si el procesamiento utiliza solo datos confirmados o si esperará a la confirmación o reversión de los datos que están en proceso de actualización.
WAIT FOR OUTCOME
Especifica que el procesamiento esperará la confirmación o reversión de los datos que se están actualizando.
USE CURRENTLY COMMITTED
Especifica que el procesamiento utilice la versión de los datos actualmente confirmada cuando se encuentren datos que estén en proceso de actualización. USE CURRENTLY COMMITTED se aplica a los escaneos que acceden a tablas definidas en espacios de tablas universales con tamaño de bloqueo a nivel de fila o página.

Cuando hay contención de bloqueo entre una transacción de lectura y una transacción de inserción, USE CURRENTLY COMMITTED se aplica a los escaneos con nivel de aislamiento CS o RS. Los escaneos aplicables incluyen escaneos de lectura intencionada para consultas de solo lectura y ambiguas y para cursores actualizables. USE CURRENTLY COMMITTED también es aplicable a los escaneos iniciados desde predicados WHERE de sentencias UPDATE o DELETE y la subselección de sentencias INSERT.

Cuando hay un conflicto de bloqueo entre una transacción de lectura y una transacción de eliminación, USE CURRENTLY COMMITTED se aplica a los escaneos con nivel de aislamiento CS y cuando se especifica CURRENT DATA NO.

DYNAMICRULES
Especifica los valores que se aplican, en tiempo de ejecución, para los siguientes atributos dinámicos de SQL:
  • El ID de autorización que se utiliza para comprobar la autorización
  • El calificador que se utiliza para objetos no calificados
  • La fuente de las opciones de programación de aplicaciones que utiliza Db2 para analizar y verificar semánticamente las sentencias SQL dinámicas

DYNAMICRULES también especifica si las sentencias SQL dinámicas pueden incluir sentencias GRANT, REVOKE, ALTER, CREATE, DROP y RENAME.

Además del valor de la cláusula DYNAMICRULES, el entorno de ejecución de una rutina controla el comportamiento de las sentencias SQL dinámicas en tiempo de ejecución. La combinación del valor DYNAMICRULES y el entorno de tiempo de ejecución determina el valor de los atributos SQL dinámicos. Ese conjunto de valores de atributos se denomina comportamiento de la instrucción SQL dinámica. Se pueden especificar los siguientes valores:
CORRER
Especifica que las sentencias SQL dinámicas deben procesarse utilizando el comportamiento de ejecución.

RUN es el valor predeterminado.

BIND
Especifica que las sentencias SQL dinámicas deben procesarse utilizando el comportamiento de enlace.
DEFINEBIND
Especifica que las sentencias SQL dinámicas deben procesarse utilizando el comportamiento define o el comportamiento bind.
DEFINERUN
Especifica que las sentencias SQL dinámicas deben procesarse utilizando el comportamiento de definición o el comportamiento de ejecución.
INVOKEBIND
Especifica que las sentencias SQL dinámicas deben procesarse utilizando el comportamiento de invocación o el comportamiento de enlace.
INVOKERUN
Especifica que las sentencias SQL dinámicas deben procesarse utilizando el comportamiento de invocación o el comportamiento de ejecución.
Ver Para obtener información sobre los efectos de estas opciones, consulte ID de autorización y SQL dinámico.
APPLICATION ENCODING SCHEME
Especifica el esquema de codificación predeterminado para variables SQL en sentencias SQL estáticas en el cuerpo de la rutina. El valor se utiliza para definir una variable SQL en una instrucción compuesta si la cláusula CCSID no se especifica como parte del tipo de datos y no se especifica la opción de rutina PARAMETER CCSID.
ASCII
Especifica que los datos se codifican utilizando los CCSID ASCII del servidor.
EBCDIC
Especifica que los datos se codifican utilizando los CCSID EBCDIC del servidor.
UNICODE
Especifica que los datos se codifican utilizando los CCSID Unicode del servidor.

Consulte la opción ENCODING bind (Encodificar enlace) en Opción ENCODING bind (Encodificar enlace) para obtener información sobre cómo se determina el valor predeterminado de esta opción.

WITH EXPLAIN o SIN EXPLICAR
Especifica si se proporcionará información sobre cómo se ejecutarán las sentencias SQL en la rutina.
SIN EXPLICAR
Especifica que no se proporcionará información sobre cómo se ejecutarán las sentencias SQL en la rutina.

Puede obtener el resultado EXPLAIN para una instrucción que esté incrustada en una rutina especificada mediante WITHOUT EXPLAIN, incrustando la instrucción SQL EXPLAIN en el cuerpo de la rutina. De lo contrario, el valor de la opción EXPLAIN se aplica a todas las sentencias SQL explicables en el cuerpo de la rutina y a la parte fullselect de cualquier sentencia DECLARE CURSOR.

SIN EXPLICAR es la opción predeterminada.

WITH EXPLAIN
Especifica que se proporcionará información sobre cómo se ejecutarán las sentencias SQL en la rutina. Se inserta información en la tabla owner.PLAN_TABLE. propietario es el ID de autorización del propietario de la rutina. Alternativamente, el ID de autorización del propietario de la rutina puede tener un alias como owner.PLAN_TABLE que apunte a la tabla base, PLAN_TABLE. el propietario también debe tener los privilegios apropiados de SELECCIÓN e INSERCIÓN en esa tabla. WITH EXPLAIN no obtiene información para sentencias que acceden a objetos remotos. PLAN_TABLE debe tener una tabla base y puede tener varios alias con el mismo nombre de tabla, PLAN_TABLE, pero con diferentes calificadores de esquema. Inicio del cambioNo puede ser una vista o un sinónimo y debe existir antes de que se procese la sentencia CREATE.fin del cambio En todas las inserciones en owner.PLAN_TABLE, el valor de QUERYNO es el número de sentencia asignado por Db2.

La opción WITH EXPLAIN también rellena dos tablas opcionales, si existen: DSN_STATEMNT_TABLE y DSN_FUNCTION_TABLE. DSN_STATEMNT_TABLE contiene una estimación del coste de procesamiento de una instrucción SQL y DSN_FUNCTION_TABLE contiene información sobre la resolución de funciones. Para más información, consulte las tablas EXPLICAR.

Para obtener más información sobre la sentencia EXPLAIN, incluida una descripción de las tablas que se rellenan con la opción WITH EXPLAIN, consulte la sentencia EXPLAIN.

WITH IMMEDIATE WRITE o SIN ESCRITURA INMEDIATA
Especifica si se deben realizar escrituras inmediatas para las actualizaciones que se realizan en conjuntos de páginas o particiones dependientes del grupo de búferes. Esta opción solo es aplicable a entornos de intercambio de datos. El parámetro del subsistema IMMEDWRITE no afecta a esta opción. La opción de enlace IMMEDWRITE muestra la jerarquía implícita de la opción de enlace IMMEDWRITE (que es similar a esta opción de rutina) ya que afecta al tiempo de ejecución.
SIN ESCRITURA INMEDIATA
Especifica que se realiza una actividad de escritura normal. Las páginas actualizadas que dependen del grupo de memoria intermedia se escriben en la fase uno de confirmación o antes, o al final de la cancelación de las transacciones que se han revertido.

SIN ESCRITURA INMEDIATA es la opción predeterminada.

WITH IMMEDIATE WRITE
Especifica que las páginas actualizadas que dependen del grupo de búferes se escriben inmediatamente en cuanto se completa la actualización del búfer. Las páginas actualizadas se escriben inmediatamente, incluso si el búfer se actualiza durante el progreso de reenvío o durante la reversión de una transacción. WITH IMMEDIATE WRITE puede afectar al rendimiento.
ISOLATION LEVEL RR, RS, CS, o UR
Especifica hasta qué punto aislar la rutina de los efectos de otras aplicaciones en ejecución. Para obtener información sobre los niveles de aislamiento, consulte Elegir una opción de AISLAMIENTO.
RR
Especifica la lectura repetible.
RS
Especifica la estabilidad de lectura.
CS
Especifica la estabilidad del cursor. CS es el valor predeterminado.
UR
Especifica lectura no comprometida.
OPTHINT 'hint-id '
Especifica si se utilizan sugerencias de optimización de consultas para sentencias SQL estáticas que están contenidas en el cuerpo de la rutina.

hint-id es una cadena de caracteres de hasta 128 bytes de longitud, que utiliza el subsistema Db2 al buscar en la PLAN_TABLE filas para utilizar como entrada. El valor predeterminado es una cadena vacía (''), lo que indica que el subsistema Db2 no utiliza sugerencias de optimización para sentencias SQL estáticas.

Las sugerencias de optimización solo se utilizan si están habilitadas para su sistema. Para más información, consulte el campo SUGERENCIAS DE OPTIMIZACIÓN (parámetro del subsistema OPTHINTS ).

Inicio del cambioSQL PATHfin del cambio
Inicio del cambioEspecifica la ruta SQL que el subsistema Db2 utiliza para resolver tipos, funciones y nombres de procedimiento no cualificados definidos por el usuario (en sentencias CALL) en el cuerpo de la rutina. El valor predeterminado es «SYSIBM», «SYSFUN», «SYSPROC», «SYSIBMADM » y el valor de la opción QUALIFIER, que es el calificador para el desencadenador que es el objetivo de la instrucción. La longitud máxima de la ruta SQL es de 2048 bytes. Db2 calcula la longitud tomando cada nombre de esquema que se especifica y eliminando los espacios en blanco finales, añadiendo dos delimitadores a su alrededor y una coma después de cada nombre de esquema, excepto el último. La longitud de la cadena resultante no puede exceder los 2048 bytes.
nombre-esquema
Identifica un esquema. Db2 no verifica que el esquema exista cuando se procesa la instrucción ALTER. El mismo nombre de esquema no debe aparecer más de una vez en la lista de nombres de esquemas.

SYSPUBLIC no debe especificarse para la ruta de SQL.

SYSTEM PATH
Especifica los nombres de esquema «SYSIBM», «SYSFUN», «SYSPROC», «SYSIBMADM ».
SESSION_USER o USER
Especifica el valor del registro especial SESSION_USER (o USER). En el momento en que se procesa la instrucción ALTER, la longitud real se incluye en la longitud total de la lista de nombres de esquemas que se especifica para la opción SQL PATH.
fin del cambio
REOPT
Especifica si Db2 determinará la ruta de acceso en tiempo de ejecución utilizando los valores de variables SQL o parámetros SQL, marcadores de parámetros y registros especiales.
None
Especifica que Db2 no determina la ruta de acceso en tiempo de ejecución utilizando los valores de variables SQL o parámetros SQL, marcadores de parámetros y registros especiales.

NONE es el valor predeterminado.

ALWAYS
Especifica que Db2 siempre determina la ruta de acceso en tiempo de ejecución cada vez que se ejecuta una instrucción SQL. No especifique REOPT ALWAYS con las cláusulas WITH KEEP DYNAMIC o NODEFER PREPARE.
ONCE
Especifica que las instrucciones SQL dinámicas ( Db2 ) determinan la ruta de acceso solo una vez, la primera vez que se abre la instrucción. Esta ruta de acceso se utiliza hasta que la instrucción preparada se invalida o se elimina de la caché de instrucciones dinámicas y es necesario volver a prepararla.
Aceleración de consulta
Especifica si una consulta SQL estática está vinculada para aceleración y, de ser así, con qué comportamiento.
NONE
Especifica que ninguna consulta SQL estática de la aplicación está vinculada para aceleración o se acelerará cuando se ejecute la aplicación.
HABILITAR
Especifica que una consulta SQL estática está destinada a la aceleración si cumple los criterios de aceleración, incluidos los criterios de coste y heurísticos. La consulta se dirige a un acelerador cuando se ejecuta la aplicación. De lo contrario, si la consulta estática no satisface los criterios de aceleración, la consulta se ejecutará en Db2.

Si se produce una condición de error, como uno de los siguientes ejemplos, mientras se ejecuta la consulta estática acelerada cuando se ejecuta la aplicación, Db2 falla la consulta estática y devuelve un código SQL negativo a la aplicación:

  • Se produce un error al ejecutar la consulta estática en el acelerador.
  • El acelerador devuelve un error para la consulta.
  • El acelerador no se ha iniciado y Db2 no puede dirigir la consulta estática al acelerador para su ejecución.
ENABLE WITH FAILBACK
Da lugar al mismo comportamiento que ENABLE, excepto si se produce una de las condiciones de error en la primera apertura de la consulta estática acelerada cuando se ejecuta la aplicación. En este caso, en lugar de fallar la consulta estática y devolver un código SQL negativo a la aplicación, Db2 realiza un enlace incremental temporal a nivel de sentencia de la consulta y ejecuta la consulta en Db2. La aplicación no ve el fallo de aceleración. No es posible volver a Db2 después de que la aplicación realice un OPEN correcto para la consulta en el acelerador.
ELIGIBLE
Especifica que una consulta SQL estática está destinada a la aceleración si la consulta cumple los criterios básicos de aceleración, independientemente de los criterios de coste o heurísticos. La consulta se dirige al acelerador cuando se ejecuta la aplicación.

Al igual que el comportamiento de ENABLE, si se produce una condición de error al ejecutar la consulta estática acelerada cuando se ejecuta la aplicación, Db2 falla la consulta estática y devuelve un código SQL negativo a la aplicación.

ALL
Especifica que todas las consultas SQL estáticas de la aplicación deben vincularse para su aceleración y dirigirse al acelerador cuando se ejecute la aplicación. Si Db2 determina que una consulta estática no puede ejecutarse en el acelerador y la consulta hace referencia a una tabla o vista base de usuario, la operación BIND o REBIND PACKAGE falla con un mensaje de error para esa consulta. (Se hace una excepción de fallo para las tablas temporales globales declaradas (DGTT) y las tablas temporales globales creadas (CGTT) porque estas tablas no pueden acelerarse)

Al igual que el comportamiento de ENABLE, si se produce una condición de error al ejecutar la consulta estática acelerada cuando se ejecuta la aplicación, Db2 falla la consulta estática y devuelve un código SQL negativo a la aplicación.

Esta opción de enlace no se aplica a un fullselect o WITH common-table-expression que se especifica en una sentencia RETURN para la rutina, o en una asignación de variable de host SET que se utiliza en la rutina. Las consultas que se especifican en estos casos no pueden acelerarse.

GET_ACCEL_ARCHIVE
Especifica si una consulta SQL estática destinada a la aceleración recupera datos archivados en el acelerador, en lugar de datos activos.
NEE
Especifica que no hay ninguna consulta SQL estática vinculada para recuperar datos archivados del acelerador. Si la consulta estática tampoco está vinculada para aceleración, la consulta está vinculada para ejecutarse en Db2.

Si la consulta estática está vinculada para aceleración porque se especificó la opción de vinculación QUERYACCELERATION, la consulta se enruta al acelerador cuando se ejecuta la aplicación; sin embargo, la consulta no recupera ningún dato archivado.

YES
Especifica que si se cumplen todos los criterios siguientes, la consulta se dirige a la aceleración y recupera los datos archivados en el acelerador cuando se ejecuta la aplicación:
  • También se especifica la opción de enlace QUERYACCELERATION.
  • La consulta SQL estática hace referencia a una tabla acelerada que tiene datos particionados archivados en un acelerador.
  • La consulta estática satisface los criterios de aceleración especificados por la opción de enlace QUERYACCELERATION.

Si la consulta estática no satisface los criterios de aceleración especificados por la opción de enlace QUERYACCELERATION, la operación BIND o REBIND PACKAGE falla con un mensaje de error para esa consulta.

Esta opción de enlace no se aplica a un fullselect o WITH common-table-expression que se especifica en una sentencia RETURN para la rutina, o en una asignación de variable de host SET que se utiliza en la rutina. Las consultas que se especifican en estos casos no pueden acelerarse.

Inicio del cambioACELERACIÓN WAITFORDATAfin del cambio
Inicio del cambioEspecifica la cantidad máxima de tiempo, si la hubiera, que un acelerador retrasará una consulta mientras el acelerador espera la replicación de los cambios de datos comprometidos de Db2 que se produjeron antes de que Db2 ejecutara la consulta.

Para consultas estáticas aceleradas, también debe establecer la opción de enlace QUERYACCELERATION para esta función o procedimiento en un valor válido distinto de NONE para solicitar que se aceleren las consultas estáticas. Si el valor de la opción de enlace QUERYACCELERATION se establece en NONE, se acepta la opción de enlace ACCELERATIONWAITFORDATA y el paquete se vincula con el valor de la opción; sin embargo, la opción no se aplicará a las consultas SQL estáticas porque no se acelerarán las consultas estáticas.

Para consultas dinámicas aceleradas, especificar la opción de enlace ACCELERATION WAITFORDATA también inicializa el registro especial CURRENT QUERY ACCELERATION WAITFORDATA, que se utiliza para las consultas dinámicas en la función o procedimiento Db2 si también se utiliza la opción de función o procedimiento DEFAULT SPECIAL REGISTERS. Inicializar CURRENT QUERY ACCELERATION WAITFORDATA a un valor mayor que 0 especifica que Db2 y el acelerador aplicarán el comportamiento de retardo WAITFORDATA y las restricciones a todas las consultas SQL dinámicas que se acelerarán desde la función o procedimiento Db2 . El registro especial CURRENT QUERY ACCELERATION también debe tener un valor válido distinto de NONE para solicitar que se aceleren las consultas dinámicas.

nnnn.m
Especifica un valor de constante numérica DECIMAL(5,1) que especifica el número máximo de segundos que el acelerador retrasará una consulta mientras el acelerador espera la replicación de los cambios de datos de Db2 confirmados que se produjeron antes de que Db2 ejecutara la consulta.

Puede especificar un valor en el rango de 0.0 a 3600.0 segundos. Por ejemplo, un valor de 20.0 representa 20.0 segundos (o 20000 milisegundos), y un valor de 30.5 representa 30.5 segundos (o 30500 milisegundos). El valor máximo de 3600.0 significa que la consulta se retrasa 3600 segundos.

También puede especificar el valor como un valor de constante numérica INTEGER que oscile entre 0 y 3600 segundos, que Db2 convertirá en un valor DECIMAL(5,1).

Importante : Cuando se especifica un valor distinto de cero para la opción de enlace ACCELERATIONWAITFORDATA, Db2 y el acelerador aplicarán otros comportamientos, restricciones y requisitos de retardo WAITFORDATA a todas las consultas que se acelerarán desde el paquete de la aplicación. Estos comportamientos, restricciones y requisitos pueden hacer que consultas que antes se aceleraban con éxito dejen de acelerarse o fallen. Consulte la declaración SET CURRENT QUERY ACCELERATION WAITFORDATA para obtener más información sobre los comportamientos, restricciones y requisitos de WAITFORDATA.
fin del cambio
Inicio del cambioACELERADORfin del cambio
Inicio del cambioEspecifica un servidor acelerador que, si está habilitado y disponible, Db2 considerará como el acelerador preferido para las consultas SQL elegibles antes de enviar las consultas a otros servidores aceleradores. Si el servidor acelerador especificado no está activado o disponible, Db2 enviará las consultas a otros servidores aceleradores disponibles.fin del cambio
VALIDAR EJECUCIÓN o VALIDATE BIND
Especifica si se deben volver a comprobar, en tiempo de ejecución, los errores del tipo «OBJETO NO ENCONTRADO» y «NO AUTORIZADO» que se encuentran durante el enlace o el reenlace. La opción no tiene efecto si todos los objetos y privilegios necesarios existen.
VALIDAR EJECUCIÓN
Especifica que si no existen los objetos o privilegios necesarios cuando se procesa la sentencia CREATE, se devuelven mensajes de advertencia, pero la sentencia CREATE se ejecuta correctamente. El subsistema Db2 vuelve a comprobar los objetos y privilegios en tiempo de ejecución para aquellas sentencias SQL que no pasaron las comprobaciones durante el procesamiento de la sentencia CREATE. La autorización comprueba el uso del ID de autorización del propietario de la rutina.

VALIDATE RUN (Validar ejecución ) es la opción predeterminada.

VALIDATE BIND
Especifica que si los objetos o privilegios necesarios no existen en el momento en que se procesa la instrucción CREATE, se emite un error y la instrucción CREATE falla.
ROUNDING
Especifica el modo de redondeo para la manipulación de datos DECFLOAT. El valor predeterminado se toma del MODO DE REDONDEADO POR DECIMALES FLOTANTES POR DEFECTO en DECP.
DEC_ROUND_CEILING
Especifica que los números se redondean hacia el infinito positivo.
DEC_ROUND_DOWN
Especifica que los números se redondean hacia 0 (truncamiento).
DEC_ROUND_FLOOR
Especifica que los números se redondean hacia el infinito negativo.
DEC_ROUND_HALF_DOWN
Especifica que los números se redondean al más cercano; si son equidistantes, se redondean hacia abajo.
DEC_ROUND_HALF_EVEN
Especifica que los números se redondean al más cercano; si son equidistantes, se redondean de modo que el dígito final sea par.
DEC_ROUND_HALF_UP
Especifica que los números se redondean al más cercano; si son equidistantes, se redondean al alza.
DEC_ROUND_UP
Especifica que los números se redondean a partir de 0.
DATE FORMAT ISO, EUR, USA, JIS, o LOCAL
Especifica el formato de fecha para los valores de resultado que son representaciones de cadena de valores de fecha u hora. Para obtener más información, consulte Representaciones de cadenas de valores de fecha y hora.

El formato predeterminado se especifica en el campo DATE FORMAT (FORMATO DE FECHA) del panel de instalación DSNTIP4 del sistema donde se define la rutina. No puede utilizar la opción LOCAL a menos que tenga una rutina de salida de fecha.

DECIMAL(15 ), DECIMAL(31 ), DECIMAL(15 , s ), o DECIMAL(31 , s )
Especifica la precisión máxima que se debe utilizar para las operaciones aritméticas decimales. Para más información, consulte Aritmética con dos operandos decimales. El formato predeterminado se especifica en el campo ARITMÉTICA DECIMAL del panel de instalación DSNTIPF del sistema donde se define la rutina. Si se especifica la forma pp. s, s debe ser un número en el rango 1–9. s representa la escala mínima que se utilizará para la división.
FOR UPDATE CLAUSE OPTIONAL o PARA ACTUALIZACIÓN SE REQUIERE CLÁUSULA
Especifica si la cláusula FOR UPDATE es necesaria para una instrucción DECLARE CURSOR si el cursor se va a utilizar para realizar actualizaciones posicionadas.
PARA ACTUALIZAR SE REQUIERE CLÁUSULA
Especifica que debe indicarse una cláusula FOR UPDATE como parte de la definición del cursor si este se va a utilizar para realizar actualizaciones posicionadas.

POR ACTUALIZACIÓN CLAUSULA REQUERIDA es la opción predeterminada.

FOR UPDATE CLAUSE OPTIONAL
Especifica que la cláusula FOR UPDATE no necesita ser especificada para que un cursor sea utilizado para actualizaciones posicionadas. El cuerpo de rutina puede incluir sentencias UPDATE posicionadas que actualizan columnas que el usuario está autorizado a actualizar.
La cláusula FOR UPDATE sin lista de columnas se aplica a sentencias SQL estáticas o dinámicas. Incluso si no utiliza esta cláusula, puede especificar FOR UPDATE OF con una lista de columnas para restringir las actualizaciones únicamente a las columnas identificadas en la cláusula FOR UPDATE y especificar la adquisición de bloqueos de actualización.
TIME FORMAT ISO, EUR, USA, JIS, o LOCAL
Especifica el formato de hora para los valores de resultado que son representaciones de cadena de valores de fecha u hora. Para obtener más información, consulte Representaciones de cadenas de valores de fecha y hora.

El formato predeterminado se especifica en el campo FORMATO DE HORA del panel de instalación DSNTIP4 del sistema donde se define la rutina. No puede utilizar la opción LOCAL a menos que tenga una rutina de salida de fecha.

SECURED o NOT SECURED
Especifica si la función se considera segura. Cuando la opción se especifica con la ALL VERSIONS se aplica a todas las versiones existentes y a cualquier versión futura de la función. Cuando se especifique con otras cláusulas como ADD VERSION, o REPLACE, el valor debe ser el mismo que el valor que está en vigor para la función que se está cambiando.
SECURED
Especifica que la función se considera segura.

Inicio del cambioEl uso de esta cláusula o palabra clave puede invalidar paquetes que dependen del objeto de destino, o paquetes que dependen de objetos relacionados a través de efectos en cascada. Véase Cambios que invalidan paquetes.fin del cambio

NOT SECURED
Especifica que la función se considera no segura. NO ASEGURADO no debe especificarse cuando un permiso de fila o una máscara de columna depende de la función.

Cuando se invoca la función, los argumentos de la función no deben hacer referencia a una columna para la que esté habilitada una máscara de columna cuando la tabla utiliza el control de acceso a columnas activas.

Inicio del cambioEl uso de esta cláusula o palabra clave puede invalidar paquetes que dependen del objeto de destino, o paquetes que dependen de objetos relacionados a través de efectos en cascada. Véase Cambios que invalidan paquetes.fin del cambio

BUSINESS_TIME SENSITIVE
Determina si las referencias a tablas temporales del período de aplicación tanto en sentencias SQL estáticas como dinámicas se ven afectadas por el valor del registro especial CURRENT TEMPORAL BUSINESS_TIME.
YES
Las referencias a tablas temporales de período de aplicación se ven afectadas por el valor del registro especial CURRENT TEMPORAL BUSINESS_TIME. SÍ es el valor predeterminado.
NO
Las referencias a tablas temporales de período de aplicación no se ven afectadas por el valor del registro especial CURRENT TEMPORAL BUSINESS_TIME.

Para más información, consulte el registro especial CURRENT TEMPORAL BUSINESS_TIME.

SYSTEM_TIME SENSITIVE
Determina si las referencias a tablas temporales del período del sistema en sentencias SQL tanto estáticas como dinámicas se ven afectadas por el valor del registro especial CURRENT TEMPORAL SYSTEM_TIME.
YES
Las referencias a tablas temporales de período de sistema se ven afectadas por el valor del registro especial CURRENT TEMPORAL SYSTEM_TIME. SÍ es el valor predeterminado.
NO
Las referencias a tablas temporales de período de sistema no se ven afectadas por el valor del registro especial CURRENT TEMPORAL SYSTEM_TIME.

Para más información, consulte el registro especial CURRENT TEMPORAL SYSTEM_TIME.

ARCHIVE SENSITIVE
Determina si las referencias a tablas habilitadas para archivo en sentencias SQL se ven afectadas por el valor de la variable global incorporada SYSIBMADM.GET_ARCHIVE.
YES
Las referencias a tablas habilitadas para archivo se ven afectadas por el valor de la variable global incorporada SYSIBMADM.GET_ARCHIVE. SÍ es el valor predeterminado.
NO
Las referencias a tablas habilitadas para archivo no se ven afectadas por el valor de la variable global incorporada SYSIBMADM.GET_ARCHIVE. Para obtener más información, consulte la variable global incorporada GET_ARCHIVE.
Inicio del cambioAPPLCOMPAT nivel de compatibilidad de APPLCOMPATfin del cambio
Inicio del cambio

Especifica el comportamiento del nivel de compatibilidad de la aplicación para sentencias SQL estáticas en el cuerpo de la función. Si no se especifica esta opción, el comportamiento se determina, por orden de prioridad, por el nivel de compatibilidad de aplicaciones del enlace anterior del paquete, si existe, o por el parámetro del subsistema APPLCOMPAT.

Se pueden especificar los siguientes valores de nivel de compatibilidad de aplicaciones :
Inicio del cambioV12R1M5nnfin del cambio
Inicio del cambio

Compatibilidad con el comportamiento del nivel de función Db2 12 identificado. Por ejemplo, V12R1M510 especifica la compatibilidad con el nivel de función Db2 12 más alto disponible. Debe activarse el nivel de función equivalente o superior.

Inicio del cambioPara obtener información sobre las nuevas capacidades que estarán disponibles en cada nivel de compatibilidad de aplicaciones, consulte los niveles de compatibilidad de aplicaciones V12R1Mnnn.fin del cambio

Sugerencia: Inicio del cambioEs posible que se requieran pasos adicionales de preparación del programa para aumentar el nivel de compatibilidad de las aplicaciones que utilizan clientes o controladores de servidor de datos para acceder a Db2 for z/OS. Para obtener más información, consulte Configuración de niveles de compatibilidad de aplicaciones para clientes y controladores de servidores de datos.fin del cambio
fin del cambio
Inicio del cambioV12R1fin del cambio
Inicio del cambioCompatibilidad con el comportamiento de Db2 12 nivel de función 500. Este valor tiene el mismo resultado que especificar V12R1M500.fin del cambio
V11R1
Compatibilidad con el comportamiento de la modalidad de nueva función de Db2 11. Después de la migración a Db2 12, este valor tiene el mismo resultado que especificar V12R1M100. Para más información, consulte V11R1 nivel de compatibilidad de la aplicación
V10R1
Compatibilidad con el comportamiento de la modalidad de nueva función de DB2 10. Para más información, consulte V10R1 nivel de compatibilidad de la aplicación.
fin del cambio
Inicio del cambioCONCENTRAR DECLARACIONES EN OFF o CONCENTRAR DECLARACIONES CON LITERALESfin del cambio
Inicio del cambioFL 500 Especifica si cada sentencia SQL dinámica de la rutina que especifique constantes literales se almacenará en caché como una entrada de sentencia única e independiente en la caché de sentencias dinámicas, en lugar de compartir una sentencia existente en la caché. Las sentencias SQL dinámicas pueden compartir una sentencia existente en la caché si la nueva sentencia cumple todas las condiciones para compartir una versión en caché de la misma sentencia dinámica, excepto que la nueva sentencia especifique una o más constantes literales que sean diferentes a la sentencia en caché.
CONCENTRAR DECLARACIONES OFF

Especifica que cada sentencia SQL dinámica que especifique constantes literales se almacenará en caché como una entrada de sentencia única si especifica una o más constantes que sean diferentes a la versión almacenada en caché de la misma sentencia dinámica. CONCENTRATE STATEMENTS OFF es el comportamiento predeterminado de almacenamiento en caché de sentencias dinámicas.

CONCENTRATE STATEMENTS WITH LITERALS

Especifica que cada sentencia SQL dinámica que especifique constantes literales compartirá una versión en caché de la misma sentencia dinámica que también se prepara utilizando la opción CONCENTRATE STATEMENTS WITH LITERALS, si la nueva sentencia dinámica cumple todas las condiciones para compartir la sentencia en caché, y las constantes que se especifican pueden reutilizarse en lugar de las constantes de la sentencia en caché.

fin del cambio
SQL-cuerpo-de-rutina
Especifica una sola instrucción de control SQL, incluida una instrucción compuesta. Consulte Lenguaje de procedimientos SQL (SQL PL ) para obtener más información sobre la definición de funciones SQL.

No se permite en una función una llamada a un procedimiento que emita una sentencia COMMIT, ROLLBACK, CONNECT, RELEASE o SET CONNECTION.

Si el cuerpo de la rutina SQL es una instrucción compuesta, debe contener al menos una instrucción RETURN y debe ejecutarse una instrucción RETURN cuando se invoque la función.

No se permite una instrucción ALTER FUNCTION (escalar SQL compilado) o una instrucción ALTER PROCEDURE (SQL nativo) con una cláusula ADD VERSION o REPLACE en un cuerpo de rutina SQL.

Notas para ALTER FUNCTION (escala SQL compilada)

El orden de las opciones y la cláusula de DEVOLUCIONES
La cláusula RETURNS debe preceder a la lista de opciones. Si el cuerpo de la función contiene solo una instrucción RETURN, la instrucción RETURN debe especificarse después de la cláusula RETURNS y la lista de opciones en el cuerpo de la rutina.
ALTER FUNCTION para funciones en uso:
ALTER FUNCTION no podrá realizar cambios si la función está en uso. Por ejemplo, si una consulta que se está ejecutando actualmente hace referencia a una función escalar SQL denominada « fn1 » (el identificador de versión de rutina es « v1 »), una instrucción ALTER FUNCTION fn1 ACTIVATE VERSION v2 esperará a que se complete la consulta que se está ejecutando actualmente antes de hacer de « v2 » la versión activa de la función « fn1 ». Este comportamiento de espera a la finalización se produce incluso si la consulta invoca la función varias veces para procesar varias filas o si la consulta contiene varias referencias a la función que se está modificando.
Consideraciones para cambiar una versión de una función:
Para cambiar una versión de una función, la configuración del entorno que esté en vigor cuando se emita la instrucción ALTER FUNCTION debe ser la misma que la configuración del entorno que esté en vigor cuando se cree por primera vez la versión de la función utilizando la instrucción CREATE FUNCTION o ALTER FUNCTION si se especifica una de las siguientes opciones:
  • QUALIFIER
  • Propietario del paquete
  • ENTORNO WLM PARA MODO DE DEPURACIÓN
  • OPTHINT
  • Vía de acceso de SQL
  • DECIMAL (si el valor incluye una coma)
Consideraciones para los comentarios del catálogo para una definición rutinaria:
Cuando se sustituye una definición de función, se elimina cualquier comentario existente en el catálogo para la definición. Sin embargo, cuando se regenera una definición de función, se conserva cualquier comentario existente en el catálogo para la definición.
Resolución del identificador
Consulte Lenguaje procedimental SQL (SQL PL) para obtener información sobre cómo se resuelven los nombres a columnas, variables o parámetros SQL dentro de una rutina SQL.

Si se utilizan nombres duplicados para columnas, variables y parámetros, califique los nombres duplicados utilizando el designador de tabla para las columnas, el nombre de rutina para los parámetros, el nombre de etiqueta para las variables SQL y el nombre de esquema para las variables globales.

Características del paquete que se genera para una función:
El paquete asociado a una versión de una función se denomina de la siguiente manera:
  • la ubicación se establece en el valor del registro especial CURRENT SERVER
  • collection-id (esquema) para el paquete es el mismo que el calificador de esquema de la función
  • package-id es el mismo que el nombre específico de la función
  • version-id es el mismo que el identificador de versión para la versión de la función
El paquete se genera utilizando las opciones de enlace que corresponden a las opciones de función especificadas implícita o explícitamente. Además de las opciones de encuadernación correspondientes, el paquete se genera utilizando las siguientes opciones de encuadernación:
  • BANDERA(I)
  • SQLERROR(SINPAQUETE)
  • ACTIVAR (*)
Correspondencia de las opciones de función para vincular las opciones de comando:
La siguiente tabla enumera las opciones para CREAR FUNCIÓN y MODIFICAR FUNCIÓN y la opción de comando de enlace correspondiente. Consulte las opciones BIND y REBIND para paquetes, planes y servicios para obtener información sobre las opciones del comando BIND.
Tabla 1. Correspondencia de opciones de función con opciones de enlace
Opción CREAR FUNCIÓN o ALTERAR FUNCIÓN opción de comando bind
Inicio del cambioACELERACIÓN WAITFORDATA nnnn.mfin del cambio Inicio del cambioACELERACIÓNWAITFORDATA( nnnn.m )fin del cambio
Inicio del cambioACELERADOR nombre-aceleradorfin del cambio Inicio del cambioACELERADOR (nombre-del-acelerador )fin del cambio
ESQUEMA DE CODIFICACIÓN DE APLICACIONES ASCII CODIFICACIÓN (ASCII)
ESQUEMA DE CODIFICACIÓN DE APLICACIONES EBCDIC ENCODING(EBCDIC)
ESQUEMA DE CODIFICACIÓN DE APLICACIONES UNICODE CODIFICACIÓN (UNICODE)
ARCHIVO CONFIDENCIAL NO CONFIDENCIAL(NO)
ARCHIVO SENSIBLE SÍ CONFIDENCIAL (SÍ)
HORARIO DE OFICINA SENSIBLE NO SENSIBLE AL VENTILADOR(NO)
SENSIBLE AL HORARIO DE TRABAJO SÍ SENSIBLE AL VENTILADOR(SÍ)
DATOS ACTUALES NO CURRENTDATA(NO)
DATOS ACTUALES SÍ CURRENTDATA(YES)
EJECUCIÓN DE REGLAS DINÁMICAS DYNAMICRULES(RUN)
DYNAMICRULES BIND DYNAMICRULES(BIND)
REGLAS DINÁMICAS DEFINEBIND REGLAS DINÁMICAS(DEFINEBIND)
REGLAS DINÁMICAS DEFINERUN REGLAS DINÁMICAS(DEFINERUN)
DINÁMICO REGLAS INVOCAR VINCULAR DYNAMICRULES(INVOKEBIND)
REGLAS DINÁMICAS INVOKERUN REGLAS DINÁMICAS(INVOKERUN)
Inicio del cambioGET_ACCEL_ARCHIVE NOfin del cambio Inicio del cambioOBTENERARCHIVOACELERADO(NO) fin del cambio
GET_ACCEL_ARCHIVE SÍ GETACCELARCHIVE(SÍ)
NIVEL DE AISLAMIENTO CS ISOLATION(CS)
NIVEL DE AISLAMIENTO RS ISOLATION(RS)
NIVEL DE AISLAMIENTO RR ISOLATION(RR)
NIVEL DE AISLAMIENTO UR ISOLATION (UR)
OPTHINT cadena-constante OPTHINT (hint-id )
PROPIETARIO DEL PAQUETE nombre-autorización PROPIETARIO (id. de autorización )
CALIFICADOR nombre-esquema CALIFICADOR (nombre del calificador )
Inicio del cambioACELERACIÓN DE CONSULTA NINGUNAfin del cambio Inicio del cambio
ACELERACIÓN DE CONSULTAS (NINGUNA)
fin del cambio
ACTIVAR ACELERACIÓN DE CONSULTAS ACELERACIÓN DE CONSULTAS (ACTIVAR)
ACTIVAR LA ACELERACIÓN DE CONSULTAS CON RECUPERACIÓN ACELERACIÓN DE CONSULTAS (ACTIVAR CON RECUPERACIÓN)
ACELERACIÓN DE CONSULTAS ELEGIBLE ACELERACIÓN DE CONSULTAS (ELEGIBLE)
ACELERACIÓN DE CONSULTAS TODO ACELERACIÓN DE CONSULTAS (TODAS)
REOPTAR SIEMPRE REOPT(ALWAYS)
REOPTAR NINGUNO REOPT(NONE)
REINTENTAR UNA VEZ REOPT(ONCE)
REDONDEAR DEC_ROUND_CEILING REDONDEO (TETO)
REDONDEAR DEC_ROUND_DOWN REDONDEO (REDUCIR)
REDONDEAR DEC_ROUND_FLOOR REDONDEO (PISO)
REDONDEAR DEC_ROUND_HALF_DOWN REDONDEO (MEDIO PUNTO)
REDONDEAR DEC_ROUND_HALF_EVEN REDONDEO (MEDIO PUNTO)
REDONDEAR DEC_ROUND_HALF_UP REDONDEO (MEDIO UP)
REDONDEAR DEC_ROUND_UP REDONDEO (AL ALZA)
SQL PATH especificación de ruta PATH(especificación de ruta )
SENSIBLE AL TIEMPO DEL SISTEMA NO SENSIBLE A SISTEMAS (NO)
SENSIBLE AL TIEMPO DEL SISTEMA SÍ SENSIBLE A LOS SISTEMAS (SÍ)
VALIDAR VINCULACIÓN VALIDATE(BIND)
VALIDAR EJECUCIÓN VALIDAR (INICIAR)
CON EXPLICACIÓN EXPLICAR (SÍ)
SIN EXPLICAR EXPLICAR (NO)
POR ESCRITO INMEDIATO ESCRIBIR INMEDIATAMENTE (SÍ)
SIN ESCRITURA INMEDIATA IMMEDWRITE(NO)
Consideraciones sobre el nivel de compatibilidad de la aplicación para objetos de función
El nivel de compatibilidad de la aplicación controla la adopción y el uso de nuevas funciones y mejoras. Cuando se crea o altera un objeto, se utilizan dos niveles de compatibilidad de aplicación distintos: uno para procesar la definición del objeto y el otro para procesar las sentencias SQL en el cuerpo del objeto:
Definición de objeto

El valor de registro especial CURRENT APPLICATION COMPATIBILITY se utiliza para procesar la definición de objeto, excepto para las sentencias del cuerpo del objeto

Este nivel de compatibilidad de aplicación se almacena en la columna SYSENVIRONMENT.APPLCOMPAT. Puede utilizar el valor de ID de entorno en la definición de catálogo del objeto para localizar la fila SYSENVIRONMENT con el valor de ENVID coincidente.

Este nivel de compatibilidad de aplicación se puede cambiar cuando se vuelve a generar el objeto.

Sentencias en el cuerpo del objeto

El nivel de compatibilidad de aplicación que se especifica implícita o explícitamente con la opción APPLCOMPAT de la sentencia CREATE o ALTER se utiliza para procesar sentencias en el cuerpo del objeto.

Este nivel de compatibilidad de aplicación se almacena en la columna SYSPACKAGE.APPLCOMPAT para el paquete asociado a la definición de objeto.

Alterar una definición de función utilizando un nivel de compatibilidad de aplicación inferior al de la definición actual
Si el valor de registro especial CURRENT APPLICATION COMPATIBILITY es inferior al nivel de compatibilidad de aplicación de la definición de objeto existente, la modificación de un objeto puede dar como resultado un error aunque el contenido de la sentencia ALTER sea válido en el nivel actual. Los errores pueden producirse cuando la definición de objeto existente contiene alguna funcionalidad que requiere un nivel superior al valor de registro especial CURRENT APPLICATION COMPATIBILITY.
Niveles de compatibilidad de aplicaciones para objetos de función de regeneración

Para sentencias ALTER que regeneran objetos, la definición de objeto se vuelve a procesar utilizando el valor de compatibilidad de aplicación que se especifica implícita o explícitamente mediante la cláusula USING APPLICATION COMPATIBILITY que sigue a la palabra clave REGENERATE. Este valor de compatibilidad de aplicación sustituye el valor existente en la columna SYSENVIRONMENT.APPLCOMPAT para los valores de entorno asociados a la definición de objeto.

Si no se especifica la cláusula USING APPLICATION COMPATIBILITY, el valor de compatibilidad de aplicación existente en la columna SYSENVIRONMENT.APPLCOMPAT para la definición de objeto se utiliza para reprocesar el texto asociado con la definición de objeto.

El comportamiento de las sentencias en el cuerpo permanece controlado por el valor de la opción APPLCOMPAT existente del objeto.

Inicio del cambioInvalidación de paquetesfin del cambio
Inicio del cambioEsta sentencia puede invalidar todos los paquetes que dependan de objetos destino, y a veces otros objetos relacionados a través de efectos en cascada, dependiendo de las cláusulas y palabras clave especificadas y otros factores. Cuando se modifica una versión de una función SQL para cambiar ciertas opciones que están especificadas para la versión activa, todos los paquetes de aplicación que hacen referencia a esa función se marcan como no válidos, y los paquetes que los invocan requieren un rebind. Esto incluye cambios en ciertas opciones de enlace y opciones de rutina que dan lugar a la regeneración implícita de la función. Estas opciones están marcadas en consecuencia en la siguiente tabla en las columnas «El cambio requiere la reasignación de la aplicación que lo invoca» y «El cambio da lugar a la regeneración implícita de todo el cuerpo de la función» Para más información, consulte Cambios que invalidan paquetes.fin del cambio
Reenlace y regeneración implícitos
Inicio del cambioCuando se cambian ciertos atributos de una función SQL, el cuerpo de la función puede rebotarse o regenerarse. Las columnas "El cambio provoca el reencuadre implícito de las sentencias de no control en el cuerpo de la función" y "El cambio provoca la regeneración implícita de todo el cuerpo de la función" de la siguiente tabla resumen cuándo se produce el reencuadre y la regeneración implícitos al cambiar opciones específicas.fin del cambio
Tabla 2. Opciones CREATE FUNCTION y ALTER FUNCTION que dan como resultado la reasignación o regeneración de la función cuando se cambia
Opción CREAR FUNCIÓN o ALTERAR FUNCIÓN ¿El cambio requiere volver a vincular la aplicación de invocación? ¿El cambio da lugar a una reasignación implícita de las sentencias no control en el cuerpo de la función? ¿El cambio da lugar a la regeneración implícita de todo el cuerpo de la función?
Inicio del cambioACELERACIÓN WAITFORDATAfin del cambio Inicio del cambioNeefin del cambio Inicio del cambiotruefin del cambio Inicio del cambioNeefin del cambio
Inicio del cambioACELERADORfin del cambio Inicio del cambioNeefin del cambio Inicio del cambiotruefin del cambio Inicio del cambioNeefin del cambio
PERMITIR MODO DE DEPURACIÓN, NO PERMITIR MODO DE DEPURACIÓN o DESACTIVAR MODO DE DEPURACIÓN 1, 2 1 true
Esquema de codificación de la aplicación true true true
ARCHIVO CONFIDENCIAL true true true
ASUTIME true Nee Nee
HORARIO DE OFICINA SENSIBLE true true true
datos actuales Nee true Nee
DATE FORMAT true true true
DECIMAL true true true
DYNAMICRULES Nee true Nee
CLAÚSULA DE ACTUALIZACIÓN OPCIONAL o CLAÚSULA DE ACTUALIZACIÓN OBLIGATORIA true true true
Inicio del cambioGET_ACCEL_ARCHIVEfin del cambio Inicio del cambiotruefin del cambio Inicio del cambiotruefin del cambio Inicio del cambiotruefin del cambio
REGISTROS ESPECIALES DE HERENCIA o REGISTROS ESPECIALES POR DEFECTO true Nee Nee
ISOLATION LEVEL Nee true Nee
MODIFICA DATOS SQL, LEE DATOS SQL o CONTIENE SQL true true true
NO DETERMINISTA o DETERMINISTA Nee Nee Nee
OPTHINT Nee true Nee
Propietario del paquete Nee true Nee
QUALIFIER Nee true Nee
Inicio del cambioAceleración de consultafin del cambio Inicio del cambiotruefin del cambio Inicio del cambiotruefin del cambio Inicio del cambiotruefin del cambio
REOPT Nee true Nee
ROUNDING true true true
Vía de acceso de SQL Nee true Nee
SENSIBLE AL TIEMPO DEL SISTEMA true true true
Formato de hora true true true
VALIDAR EJECUCIÓN o VALIDAR VINCULACIÓN Nee true Nee
CON EXPLICACIÓN o SIN EXPLICACIÓN Nee true Nee
CON ENVÍO INMEDIATO o SIN ENVÍO INMEDIATO Nee true Nee
ENTORNO WLM PARA MODO DE DEPURACIÓN true Nee Nee
Nota:
  1. El paquete de funciones se repite o se regenera si el valor de PERMITIR MODO DEBUG se cambia a NO PERMITIR MODO DEBUG
  2. Las aplicaciones de invocación se invalidan si un valor de DISALLOW DEBUG MODE se cambia a DISABLE DEBUG MODE
Consideraciones para los programas de procesador SQL:
Los programas de procesador SQL (como SPUFI, el " db2z_sql_alterfunctionsqlscalar " y el " DSNTEP2 ") podrían no analizar correctamente las sentencias SQL en el cuerpo de la rutina que terminan con punto y coma. Estos programas de procesador aceptan múltiples sentencias SQL como entrada cuando cada sentencia está separada con un carácter terminador. Los programas de procesamiento que utilizan un punto y coma como terminador de instrucciones SQL podrían truncar una instrucción ALTER FUNCTION con puntos y comas incrustados y pasar solo una parte de la instrucción a Db2. Por lo tanto, es posible que tenga que cambiar al carácter terminador SQL para estos programas de procesador.
Consideraciones para la tabla del catálogo SYSENVIRONMENTS:
Una sentencia ALTER que especifique nuevos ajustes de entorno dará lugar a la adición de una nueva fila a la tabla de catálogo SYSENVIRONMENTS. La nueva fila se añadirá incluso si posteriormente se encuentra un error durante el procesamiento del extracto. Por lo tanto, se podría añadir una nueva fila SYSENVIRONMENT a la tabla incluso para una instrucción ALTER que falle.
Objetos dependientes:
Una rutina SQL depende de los objetos a los que se hace referencia en el cuerpo de la rutina.
Cambiar una función de NO SEGURO a SEGURO:
Por lo general, el administrador de seguridad examinará los datos a los que se accede mediante una función, se asegurará de que son seguros y concederá el privilegio CREATE_SECURE_OBJECT al usuario que requiera privilegios para cambiar la función definida por el usuario que se va a proteger. Después de que la función se cambie a SECURED, el administrador de seguridad revocará el privilegio CREATE_SECURE_OBJECT al propietario de la función.

La función se considera segura después de que se ejecute la instrucción ALTER FUNCTION. Db2 trata el atributo SECURED como una afirmación que declara que el administrador de seguridad ha establecido un procedimiento de auditoría para todos los cambios en la función definida por el usuario. Db2 asume que dicho procedimiento de auditoría de control está en vigor para todas las declaraciones ALTER FUNCTION posteriores o cambios en paquetes externos.

Los paquetes y las declaraciones en la caché de declaraciones dinámicas que hacen referencia a la función se invalidan.

Cambiar una función de SEGURO a NO SEGURO:
Los paquetes y las declaraciones en la caché de declaraciones dinámicas que hacen referencia a la función se invalidan cuando la función cambia de SECURED a NOT SECURED. Una función que no está protegida puede afectar negativamente al rendimiento si dicha función accede a datos de una tabla que utiliza control de acceso de filas o control de acceso de columnas. Para minimizar el impacto en el rendimiento, cambie la función para utilizar la opción SEGURA o desactive el control de acceso de filas o el control de acceso de columnas para la tabla a la que está accediendo la función.
Invocar otras funciones definidas por el usuario en una función segura:
Cuando se hace referencia a una función segura definida por el usuario en una instrucción de modificación de datos SQL que hace referencia a una tabla que utiliza control de acceso de filas o control de acceso de columnas, y si la función segura definida por el usuario invoca otras funciones definidas por el usuario, las funciones definidas por el usuario anidadas no se validan como seguras. Si esas funciones anidadas pueden acceder a datos confidenciales, el administrador de seguridad debe asegurarse de que se permita a esas funciones acceder a datos confidenciales y debe asegurarse de que se haya establecido un procedimiento de auditoría de control de cambios para todos los cambios en esas funciones.
La columna SECURE en la tabla DSN_FUNCTION_TABLE EXPLAIN:
La columna SECURE de la tabla DSN_FUNCTION_TABLE EXPLAIN indica si una función definida por el usuario se considera segura.
Inicio del cambioAlteración de funciones ofuscadas:fin del cambio
Inicio del cambioLas funciones ofuscadas no pueden alterarse de ninguna manera.fin del cambio
Implementación de una función SQL compilada:
Cuando se emite un comando BIND DEPLOY para implementar una función SQL compilada en una ubicación de destino, las opciones SECURED y NOT SECURED se incluyen en el proceso de implementación.

Al implementar una función SQL compilada, si no existe una función con el mismo nombre de destino en la ubicación de destino, la función implementada se crea como una nueva función en la ubicación de destino con la misma opción SECURED o NOT SECURED que se especifica (o se utiliza el valor predeterminado NOT SECURED) en la función fuente de la implementación.

Al implementar una función SQL compilada, si ya existe una función con el mismo nombre de destino en la ubicación de destino, la función implementada se añade como una nueva versión de la función o se utiliza para reemplazar una versión existente de la función. La opción SEGURA o NO SEGURA de la función implementada debe ser la misma que la de la función existente en la ubicación de destino

Compatibilidades:
Para la compatibilidad con la instrucción CREATE FUNCTION (SQL scalar), se puede especificar la siguiente cláusula, pero será ignorada:
  • LANGUAGE SQL
Sintaxis opcional:
Para proporcionar compatibilidad con la sintaxis de la instrucción CREATE FUNCTION, también se pueden especificar las siguientes opciones:
  • SPECIFIC
  • PARAMETER CCSID

Sin embargo, si se especifican estas opciones, el valor de la opción debe ser el mismo que el valor que ya está en vigor para la función.

Sintaxis alternativa y sinónimos:
Para proporcionar compatibilidad con versiones anteriores de Db2 u otros productos de la familia Db2 , Db2 admite las siguientes palabras clave:
  • VARIANT como sinónimo de NOT DETERMINISTIC
  • NO VARIANT como sinónimo de DETERMINISTIC
  • LLAMADA NULA como sinónimo de CALLED ON NULL INPUT
  • NOT NULL CALL como sinónimo de RETURNS NULL ON NULL INPUT
  • Se puede especificar ZONA HORARIA como alternativa a TIME ZONE

Ejemplos para ALTER FUNCTION (escalar SQL compilado)

Ejemplo 1
Modificar la definición de una función SQL para indicar que la función es determinista.
   ALTER FUNCTION MY_UDF1 
		DETERMINISTIC;
Ejemplo 2
La siguiente declaración cambia las opciones de función existentes para la versión activa de la función REVERSE SQL. Si necesita cambiar una versión diferente de la función, debe especificar VERSION routine-version-id en lugar de ACTIVE VERSION. Tenga en cuenta que la ALTER cláusula que precede a la especificación de la versión puede omitirse:
   ALTER FUNCTION REVERSE 
		ALTER ACTIVE VERSION
		NOT DETERMINISTIC
		ALLOW DEBUG MODE;
Ejemplo 3
Para cambiar el cuerpo de la función de cualquier versión existente de una función, debe utilizar la REPLACE cláusula. La siguiente declaración cambia tanto el cuerpo de la función como la opción de acceso a datos SQL existente para la versión V2 de la función REVERSE. La lista de parámetros se especifica aunque no se realicen cambios en la lista. Para reemplazar una versión existente de la función, debe especificar la lista de parámetros, RETURNS cláusula, cualquier opción que tenga valores no predeterminados (incluso si esas opciones ya están especificadas en la versión de la función que está reemplazando) y el cuerpo de la función, como en la siguiente declaración:
  ALTER FUNCTION REVERSE(INSTR VARCHAR(4000)) 
		REPLACE VERSION V2 (INSTR VARCHAR(4000))
		RETURNS VARCHAR(4000)
		DETERMINISTIC
		NO EXTERNAL ACTION
		CONTAINS SQL
	 	BEGIN
			DECLARE REVSTR, RESTSTR VARCHAR(4000) DEFAULT '';
			DECLARE LEN INT;
			IF INSTR IS NULL THEN
				RETURN NULL;
			END IF;
			SET RESTSTR = INSTR;
			SET LEN = LENGTH(INSTR);
			WHILE LEN > 0 DO
				SET (REVSTR, RESTSTR, LEN) = (SUBSTR(RESTSTR, 1, 1) CONCAT
						REVSTR, SUBSTR(RESTSTR, 2, LEN - 1), LEN - 1);
			END WHILE;
			RETURN REVSTR;
 	 	END
Ejemplo 4
Para añadir una nueva versión de una función existente, utilice la cláusula ADD VERSION. La siguiente instrucción añade una nueva versión de la función REVERSE para combinar dos instrucciones SET en una instrucción SET. La lista de parámetros se especifica aunque la nueva versión de la función utilice los mismos parámetros que la versión existente de la función. Para añadir una nueva versión de la función, debe especificar la lista de parámetros, la cláusula RETURNS, cualquier opción que tenga valores no predeterminados y el cuerpo de la función, como en la siguiente declaración, que crea la versión V3 de la función REVERSE:
  ALTER FUNCTION REVERSE(INSTR VARCHAR(4000))
		ADD VERSION V3 (INSTR VARCHAR(4000))
		RETURNS VARCHAR(4000)
		DETERMINISTIC
		NO EXTERNAL ACTION
		CONTAINS SQL
	 	BEGIN
			DECLARE REVSTR, RESTSTR VARCHAR(4000) DEFAULT '';
			DECLARE LEN INT;
			IF INSTR IS NULL THEN
				RETURN NULL;
			END IF;
			SET (RESRSTR, LEN) = (INSTR, LENGTH(INSTR));
			WHILE LEN > 0 DO
				SET (REVSTR, RESTSTR, LEN) = (SUBSTR(RESTSTR, 1, 1) CONCAT
						REVSTR, SUBSTR(RESTSTR, 2, LEN - 1), LEN - 1);
			END WHILE;
			RETURN REVSTR;
 	 	END
Ejemplo 5
Para cambiar la versión actualmente activa de la función, debe especificar la cláusula ACTIVATE VERSION en la instrucción ALTER FUNCTION, incluso si la versión que desea que sea la activa acaba de definirse. La siguiente declaración hace que la versión V3 de la función REVERSE SQL sea la versión activa actualmente:
  ALTER FUNCTION REVERSE(INSTR VARCHAR(4000)) 
		ACTIVATE VERSION V3;
Ejemplo 6
Para regenerar la versión activa de la función, debe especificar la cláusula REGENERATE, como en la siguiente declaración:
  ALTER FUNCTION REVERSE(INSTR VARCHAR(4000)) 
		REGENERATE ACTIVE VERSION;