Resolución de nombres de objetos no cualificados
La mayoría de los nombres de objetos están calificados implícita o explícitamente con un nombre de esquema. Los sinónimos son una excepción.
Un sinónimo tiene un solo nombre de parte. Cuando Db2 encuentra un nombre no cualificado, Db2 debe determinar qué objeto procesar. Este proceso se denomina resolución de nombres.
Cuando Db2 encuentra un nombre de pieza único en un contexto en el que se puede especificar un alias, una tabla, una vista o un sinónimo, Db2 comprueba primero si el nombre hace referencia a un sinónimo definido por el usuario actual.
Los nombres de objetos no calificados, que no sean sinónimos, están calificados implícitamente. Las normas para la calificación de un nombre varían en función del tipo de objeto al que identifica el nombre.
Alias no calificado, índice, archivo JAR, máscara, permiso, secuencia, tabla, desencadenante y nombres de vista
El esquema predeterminado se determina de la siguiente manera:
Para las sentencias SQL estáticas, el esquema predeterminado es el identificador especificado en la opción QUALIFIER del subcomando BIND o la sentencia CREATE o ALTER para una rutina o desencadenador SQL. Si esta opción no está activa para el plan, paquete o procedimiento SQL nativo, el esquema predeterminado es el ID de autorización del propietario del plan, paquete o procedimiento SQL nativo.
- Para las sentencias SQL dinámicas, el comportamiento especificado por la combinación de la opción DYNAMICRULES y el entorno de tiempo de ejecución determina el esquema predeterminado. (Para ver una lista de estos comportamientos y los valores de las REGLAS DINÁMICAS que los determinan, consulte la Tabla 1 ).
- Si se aplica el comportamiento de ejecución DYNAMICRULES, el esquema predeterminado es el esquema del registro especial CURRENT SCHEMA. El comportamiento predeterminado es ejecutar.
- Si se aplica el comportamiento de enlace, el esquema predeterminado es el identificador que se especifica implícita o explícitamente en la opción CALIFICADOR, como se explica para las sentencias SQL estáticas.
- Si se aplica el comportamiento de definición, el esquema predeterminado es el propietario de la función o del procedimiento almacenado (el propietario es el definidor).
- Si se aplica el comportamiento de invocación, el esquema predeterminado es el ID de autorización del invocador de la función o del procedimiento almacenado.
Excepción : para el comportamiento de enlace, definición e invocación, el esquema predeterminado de PLAN_TABLE, DSN_STATEMNT_TABLE y DSN_FUNCTION_TABLE (salida de la instrucción EXPLAIN) es siempre el valor en el registro especial CURRENT SQLID.
Nombres no calificados de función, procedimiento, variable global y específicos
La calificación de los nombres de tipos (tipos incorporados, tipos diferencias o tipos de matriz), funciones, procedimientos almacenados, variables globales y específicos no calificados depende de la sentencia de SQL en la que aparezca el nombre no calificado.
- Si un nombre no cualificado es el objeto principal de una sentencia ALTER, CREATE, COMMENT, DROP, GRANT o REVOKE, el nombre se cualifica implícitamente con un nombre de esquema de la siguiente manera:
En una instrucción estática, el nombre de esquema implícito es el identificador especificado en la opción QUALIFIER del subcomando BIND o en la instrucción CREATE o ALTER para una rutina o desencadenador SQL. Si esta opción no está en vigor para el paquete o procedimiento, el calificador implícito es el ID de autorización del propietario del paquete o procedimiento.
- En una declaración dinámica, el nombre de esquema implícito es el esquema en el registro especial CURRENT SCHEMA.
- De lo contrario, el nombre de esquema implícito para el nombre no cualificado se determina de la siguiente manera:
- Para los nombres de tipos distintos y de tipos de matriz, Db2 busca en la ruta SQL y selecciona el primer esquema de la ruta de forma que el tipo de datos exista en el esquema y el usuario tenga autorización para utilizar el tipo.
- Para los nombres de variables globales, Db2 busca en la ruta de SQL y selecciona el primer esquema en la ruta de tal manera que la variable global exista en el esquema y el usuario tenga autorización para usar la variable global.
- Para los nombres de funciones, Db2 utiliza la ruta SQL junto con la resolución de funciones, como se describe en Resolución de funciones.
- Para los nombres de procedimientos almacenados en sentencias CALL, Db2 busca en la ruta SQL y selecciona el primer esquema de la ruta de forma que el esquema contenga un procedimiento con el mismo nombre y número de parámetros y el usuario tenga autorización para utilizar el procedimiento.
- Db2 , para los nombres de procedimientos almacenados en las sentencias ASSOCIATE LOCATORS y DESCRIBE PROCEDURE, no utiliza la ruta SQL porque no se genera un nombre de esquema implícito para estas sentencias.
Para obtener información sobre la ruta de SQL, consulte Ruta de SQL.