Proceso promocionable
El proceso de promoción determina la mejor opción para la resolución de funciones considerando únicamente si los argumentos de entrada en la invocación de la función coinciden o pueden ser promovidos al tipo de datos del parámetro correspondiente de la definición de la función.
Para el subconjunto de funciones candidatas, Db2 compara las listas de parámetros de izquierda a derecha, utilizando el siguiente proceso:
- El tipo de datos del argumento en la invocación de la función se compara con el tipo de datos del parámetro correspondiente en la definición de cada función candidata. (se ignoran los sinónimos de tipos de datos coincidentes y los atributos de tipo de datos).
- Se ignoran los atributos de un tipo de datos (como longitud, precisión, escala, CCSID). Por lo tanto, CHAR(8) y CHAR(35) se consideran iguales, al igual que DECIMAL(11,2) y DECIMAL(4,3).
- Se considera que el carácter y los tipos gráficos son iguales. Por ejemplo, los siguientes tipos de datos se consideran del mismo tipo: CHAR y GRAPHIC, VARCHAR y VARGRAPHIC, y CLOB y DBCLOB. CHAR(13) y GRAPHIC(8) se consideran del mismo tipo.
- Para este argumento, si una función candidata tiene un tipo de datos que se ajusta mejor a la invocación de la función que los tipos de datos de las otras funciones candidatas, esa función es la que mejor se ajusta. La lista de precedencia para la promoción de tipos de datos en Promoción de tipos de datos muestra los tipos de datos que se ajustan a cada tipo de datos, en orden de mejor a peor.
- Si los tipos de datos del primer parámetro para más de una función candidata se ajustan igualmente bien a la invocación de la función, Db2 repite este proceso para el siguiente argumento de la invocación de la función. Db2 continúa este proceso para cada argumento hasta que se encuentra el mejor ajuste.
Si solo queda una función candidata después de comparar todos los argumentos, esa función es la que mejor se ajusta. Si queda más de una función candidata, todas las funciones candidatas restantes se consideran igualmente adecuadas. En este caso, Db2 selecciona la función cuyo esquema es el primero en la ruta SQL.
Si selecciona una función, su uso satisfactorio depende de si se va a invocar en un contexto en el que se permita el resultado devuelto. Por ejemplo, si la función devuelve una tabla donde no se permite una tabla, se devuelve un error.