Referencias a parámetros de SQL, variables de SQL y variables globales

Puede hacerse referencia a los parámetros SQL, las variables de SQL y a las variables globales en cualquier punto de la sentencia de procedimiento SQL donde pueda especificarse una expresión o una variable.

No pueden especificarse variables del lenguaje principal en las rutinas de SQL, activadores de SQL o sentencias compuestas dinámicas. Puede hacerse referencia a los parámetros de SQL en cualquier punto del cuerpo de la rutina, y pueden calificarse con el nombre de la rutina. Puede hacerse referencia a las variables de SQL en cualquier punto de la sentencia compuesta en la que se han declarado y pueden calificarse con el nombre de etiqueta que se ha especificado al principio de la sentencia compuesta. Si un parámetro o una variable de SQL tiene un tipo de datos de fila, se puede hacer referencia a los campos en cualquier lugar donde se pueda hacer referencia a un parámetro o una variable de SQL. Puede hacerse referencia a las variables globales de cualquier expresión siempre y cuando la expresión no tenga que ser determinante. Los escenarios siguientes requieren expresiones determinantes, que impiden el uso de variables globales:
  • Restricciones de comprobación
  • Definiciones de columnas generadas
  • Renovar MQT inmediatas

Todos los parámetros de SQL, las variables de SQL, los campos de variables de filas y las variables globales se consideran anulables. El nombre de un parámetro de SQL, de una variable de SQL, de un campo de variable de fila o de una variable global de una rutina de SQL puede ser igual al nombre de una columna de una tabla o vista a la que se haga referencia en la rutina. El nombre de una variable de SQL o un campo de variable de fila también puede ser el mismo que el nombre de otra variable de SQL o campo de variable de fila declarado en la misma rutina. Esto puede ocurrir cuando las dos variables de SQL están declaradas en sentencias compuestas diferentes. La sentencia compuesta que contiene la declaración del nombre de una variable de SQL determina el ámbito del nombre de dicha variable. Para obtener más información, consulte el apartado Sentencia de SQL compuesto (compilado).

El nombre de una variable de SQL o un parámetro de SQL de una rutina de SQL puede ser igual al nombre de un identificador que se ha utilizado en determinadas sentencias de SQL. Si el nombre no se ha calificado, las normas siguientes describen si el nombre hace referencia al identificador o bien al parámetro de SQL o a la variable de SQL:
  • En las sentencias SET PATH y SET SCHEMA, se comprueba si el nombre es un parámetro de SQL o una variable de SQL. Si no se encuentra como variable de SQL o parámetro de SQL, se utiliza como identificador.
  • En las sentencias CONNECT, DISCONNECT, RELEASE y SET CONNECTION, se utiliza el nombre como identificador.
Los nombres idénticos se deben calificar explícitamente. Si se califica claramente un nombre, ello indica si el nombre se refiere a una columna, una variable de SQL, un parámetro de SQL, un campo de variable de fila o una variable global. Si el nombre no se ha calificado, o se ha calificado pero sigue siendo ambiguo, las normas siguientes describen si el nombre hace referencia a una columna, a una variable de SQL, a un parámetro de SQL o a una variable global:
  • Si las tablas y vistas que se han especificado en el cuerpo de la rutina de SQL existen en el momento de crearse la rutina, primero se comprueba si el nombre es un nombre de columna. Si no se encuentra como columna, se comprueba si es como variable de SQL en la sentencia compuesta y, a continuación, si es como parámetro de SQL y, finalmente, se comprueba si es como variable global.
  • Si las tablas o vistas a las que se hace referencia no existen en el momento de crearse la rutina, primero se comprueba si el nombre es una variable de SQL de la sentencia compuesta, a continuación como parámetro de SQL y luego como variable global. La variable puede declararse dentro de la sentencia compuesta que contiene referencia o dentro de una sentencia compuesta en la que dicha sentencia compuesta esté anidada. Si dos variables de SQL están dentro del mismo ámbito y tienen el mismo nombre, cosa que puede ocurrir si están declaradas en sentencias compuestas distintas, se utiliza la variable de SQL declarada en la sentencia compuesta más interior. Si no se encuentra, se da por supuesto que es una columna.