Identificadores en SQL

Un identificador es un símbolo utilizado para formar un nombre. Un identificador en una sentencia SQL es un identificador SQL o un identificador host. Los identificadores de SQL pueden ser identificadores normales o identificadores delimitados.

Identificadores ordinarios

Inicio del cambioUn identificador ordinario es una letra mayúscula seguida de cero o más caracteres, cada uno de los cuales es una letra mayúscula, un dígito o el carácter de subrayado. Si un identificador que no está delimitado contiene caracteres en minúscula, pero por lo demás sigue todas las reglas de un identificador ordinario, Db2 convierte las letras minúsculas en mayúsculas, y el identificador se convierte en un identificador ordinario. Para obtener más información sobre los identificadores ordinarios, consulte Caracteres y tokens en SQL.fin del cambio

Un identificador ordinario no debe ser una palabra reservada. Si se utiliza una palabra reservada como identificador en SQL, debe especificarse en mayúsculas y debe ser un identificador delimitado o especificado en una variable de host. Para obtener una lista de palabras reservadas, consulte Nombres de esquemas reservados y palabras reservadas en Db2 for z/OS.

Los identificadores que contienen solo caracteres DBCS también pueden ser identificadores ordinarios, a menos que se especifique lo contrario.

La siguiente lista muestra las reglas para formar identificadores ordinarios SQL:

  • La representación e UTF-8 e del nombre no debe exceder los 128 bytes.
  • No se permite continuar en la línea siguiente.

Si el identificador ordinario SQL contiene caracteres DBCS, se aplican las siguientes reglas adicionales:

  • El identificador, si está codificado en EBCDIC, debe comenzar con un desplazamiento de salida ( X'0E' ) y terminar con un cambio de sentido ( X'0F' ). Debe haber un número par de bytes entre el desplazamiento de salida y el de entrada. Un byte impar entre esos desplazamientos no debe ser un desplazamiento de salida. Los espacios en blanco DBCS (X'4040' en EBCDIC) no son aceptables entre el desplazamiento de salida y el desplazamiento de entrada.
  • Los identificadores no se escriben en mayúsculas ni se cambian de ninguna otra manera.

Identificadores delimitados

Un identificador delimitado es una secuencia de uno o más caracteres encerrados entre caracteres de escape. Por ejemplo, si el carácter de escape es la comilla ("), el siguiente ejemplo es un identificador delimitado:
"VIEW"
El carácter de escape es la comilla (")1, excepto en los siguientes casos:
  • SQL dinámico cuando el campo SQL STRING DELIMITER en el panel de instalación DSNTIPF está configurado con comillas (") y se cumple cualquiera de estas condiciones:
    • Se aplica el comportamiento de ejecución de REGLAS DINÁMICAS. Para obtener una lista de los valores de la opción DYNAMICRULES que especifican ejecutar, vincular, definir o invocar un comportamiento, consulte ID de autorización y SQL dinámico.
    • Las REGLAS DINÁMICAS vinculan, definen o invocan el comportamiento se aplica y el campo del panel de instalación USO PARA REGLAS DINÁMICAS es SÍ.
    En este caso, el carácter de escape es el apóstrofo (').

    Sin embargo, para los programas de aplicación COBOL, si el comportamiento de ejecución de DYNAMICRULES no se aplica y el campo USE FOR DYNAMICRULES del panel de instalación es NO, una opción del compilador COBOL especifica si el carácter de escape es la comilla o el apóstrofe.

  • SQL estático en programas de aplicación COBOL. Una opción del compilador COBOL especifica si el carácter de escape es el signo de comillas (") o el apóstrofe (').

Se puede utilizar un identificador delimitado cuando la secuencia de caracteres no se considere un identificador ordinario. Dicha secuencia, por ejemplo, podría ser una palabra reservada de SQL, o podría comenzar con un dígito. Se utilizan dos caracteres de escape consecutivos para representar un carácter de escape dentro del identificador delimitado. Un identificador delimitado que contenga caracteres EBCDIC DBCS también debe contener los caracteres de cambio necesarios.

Los espacios en blanco principales e incrustados en la secuencia son significativos. Los espacios en blanco al final de la secuencia no son significativos. La longitud de un identificador delimitado no incluye los caracteres de escape inicial y final. Los caracteres de escape incrustados (que aparecen como dos caracteres) se cuentan en la longitud como un solo carácter.

Límites para identificadores

Consulte los límites en Db2 for z/OS para conocer los límites de longitud que Db2 impone a los identificadores.

Identificadores del lenguaje principal

Un identificador del lenguaje principal es un nombre declarado en el programa de lenguaje principal.

Las normas para formar un identificador de lenguaje principal son las normas del lenguaje principal. En programas que no sean Java™, no utilice nombres que empiecen por « DB2 ', 'SQ'2, 'SQL', 'sql', 'RDI' o 'DSN' porque los precompiladores generan nombres de variables de host que comienzan con estos caracteres. En Java, no utilice nombres que empiecen por '__sJT_'.

Restricciones de identificadores para el acceso a datos distribuidos

El procesamiento interno e Db2 e del acceso distribuido debe convertir a veces los identificadores de nombre de autorización, nombre de procedimiento y nombre de esquema entre CCSID. Si existe alguna posibilidad de que estos identificadores se utilicen en el acceso distribuido, restrinja los identificadores a caracteres cuya representación en Unicode UTF-8 tenga puntos de código en el rango 0-127. No es necesario introducir los identificadores en Unicode; esta restricción se refiere a la conversión que realiza internamente Db2 .

1 En CCSID 1026 y CCSID 1155, el punto de código para las comillas puede ser X'7F' o X'FC '. Sin embargo, si el delimitador inicial es X'7F', el delimitador final también debe ser X'7F'. Si el delimitador inicial es X'FC ', el delimitador final también debe ser X'FC '.
2 'SQ' está permitido en C, COBOL y REXX.