Recuperar columna — %GETCOL (SQL dinámico)

Utilice esta función para realizar una búsqueda de columna de tabla secundaria en las columnas secundarias especificadas.

Nota: Este tema contiene información sobre la función %GETCOL soportada por los motores de réplica de réplica de CDC excepto motor de réplica de CDC para DB2 para i y motor de réplica de CDC para tecnología Netezza.

La función %GETCOL recupera datos de las columnas de tabla secundaria. Para utilizar esta función antes de la réplica, debe añadir una columna derivada a la tabla primaria y especificar una expresión para cada columna que utilice la función %GETCOL. También puede utilizar esta función al especificar una expresión para una columna de destino.

Para utilizar esta función, las tablas secundarias deben tener columnas de cláusula WHERE. Las columnas de cláusula WHERE se deben especificar por nombre y se debe proporcionar una expresión de valor para cada columna de cláusula WHERE. Se puede hacer referencia a las columnas de la tabla de réplica mediante expresiones de valor, y el valor de la columna capturada se sustituirá en la expresión.

Si las columnas secundarias tienen distintos tipos de datos, debe convertirlos a los tipos de datos adecuados mediante funciones de columna de conversión como %TOCHAR.

Si utiliza motor de réplica de CDC para DB2 para z/OS, consulte el tema %GETCOL and %SELECT Function Calls and Processing Efficiency en la documentación de InfoSphere CDC for z/OS para obtener información sobre las consideraciones de rendimiento cuando se utilizan las funciones de columna %GETCOL o %SELECT.

Esta función le proporciona la opción de especificar la codificación que se utilizará para una columna en una tabla secundaria. Sólo debe especificar un valor para ENCODING si desea alterar temporalmente o modificar la codificación predeterminada de la columna tal como está establecida en la base de datos y detecta réplica de CDC. Al recuperar datos de una tabla secundaria, réplica de CDC utilizará los criterios siguientes (en el orden especificado) para determinar la codificación de una columna:

  1. La especificación ENCODING de una columna de la tabla secundaria que se identifica explícitamente en %GETCOL.
  2. La especificación ENCODING de una columna de la suscripción si la tabla secundaria se especifica en la suscripción. Este valor de codificación se especifica en el separador Codificación de la vista Detalles de correlación de Management Console
  3. La codificación predeterminada de la columna de la base de datos.

Formato de sintaxis largo - lecturas de base de datos

%GETCOL(nombre_columna_secundaria, nombre_tabla, [valor_predeterminado],
nombre_columna_secundaria1, valor_clave1, [nombre_columna_secundaria2
, valor_clave2, [...], nombre_columna_secundarian,
valor_claven])

Esta función lee una tabla y devuelve el valor de la columna especificada, en función de los nombres y valores de columna secundaria identificados. Si especifica un nombre de tabla o columna que contiene espacios, debe colocar dicho nombre entre corchetes. Por ejemplo, especifique [EMP NY] para hacer referencia a una tabla denominada "EMP NY".

Formato de sintaxis largo con especificación ENCODING opcional

%GETCOL(nombre_columna_secundaria [ENCODING codificación], nombre_tabla,
[valor_predeterminado], nombre_columna_secundaria1 [ENCODING codificación1],
valor_clave1, [nombre_columna_secundaria2 [ENCODING codificación2], valor_clave2,
[...], nombren_columna_secundaria [ENCODING codificaciónn], valor_claven])

Formato de sintaxis abreviado — lecturas de resultado &GETCOL existente

%GETCOL(nombre_columna_secundaria, nombre_tabla, valor_predeterminado)

Esta función devuelve el valor de la columna especificada de una fila recuperada de una invocación de función %GETCOL anterior. La sintaxis abreviada le permite recuperar más de una columna de una tabla (que se ha leído anteriormente mediante la función %GETCOL), sin leer de nuevo la tabla. Debe utilizar el formato de sintaxis largo de esta función para especificar una codificación.

El parámetro nombre_tabla especificado en el formato abreviado de la invocación de función %GETCOL debe coincidir con el parámetro nombre_tabla especificado en el formato largo de la invocación de función %GETCOL. Si la lectura no se realiza correctamente o si no se ha realizado una invocación de función %GETCOL anterior, réplica de CDC genera un mensaje de error y establece los valores de la columna derivada en la que se utiliza la función %GETCOL en los valores predeterminados, en función de los tipos de datos de la columna derivada.

Parámetros

nombre_columna_secundaria
Especifica el nombre de una columna de una tabla secundaria. No puede especificar una expresión para este parámetro. Si la columna especificada no existe en la tabla secundaria, réplica de CDC genera un mensaje de error al verificar la expresión que contiene la función %GETCOL. Si desea alterar temporalmente o cambiar la codificación predeterminada de una columna tal como establece la base de dato y detecta réplica de CDC, tiene la opción de utilizar ENCODING <codificación> para especificar el nombre de ISO/IANA de la codificación de la columna. ENCODING <codificación> no está soportado para motor de réplica de CDC para DB2 para z/OS. Esta opción sólo está soportada cuando se utiliza el formato de sintaxis largo.

Si utiliza motor de réplica de CDC para Informix, los valores que especifique aquí deben estar en minúsculas.

nombre_tabla
Especifica el nombre de una tabla. Tenga en cuenta lo siguiente al especificar este parámetro:
  • Para motor de réplica de CDC para bases de datos Oracle, puede especificar el nombre de tabla con el formato 'NOMBRE_PROPIETARIO.NOMBRE_TABLA', donde el propietario y la tabla aparecen en mayúsculas. Si omite el nombre de propietario, réplica de CDC asume que el propietario es el usuario que ha instalado réplica de CDC. Si la propiedad de la tabla no se puede determinar, réplica de CDC asume el valor predeterminado de PUBLIC para el nombre de propietario. Si ha instalado motor de réplica de CDC para Microsoft SQL Server o motor de réplica de CDC para bases de datos Sybase, debe especificar el nombre de tabla con el formato "nombre_base_datos.nombre_propietario.nombre_tabla".
  • Para motor de réplica de CDC para DB2 para z/OS, debe especificar el nombre de tabla con el formato "nombre_propietario.nombre_tabla" o 'nombre_propietario.nombre_tabla'.
  • Para motor de réplica de CDC para DB2 para LUW, debe especificar el nombre de tabla con el formato "[nombre_propietario].nombre_tabla" o '[nombre_propietario].nombre_tabla'.
valor_predeterminado
Especifica un valor predeterminado que se devolverá cuando no se pueda encontrar ninguna fila en la tabla secundaria utilizando el valor de clave que coincide con el valor de la columna secundaria de referencia (foránea) de la fila de tabla primaria. Si no se puede encontrar la fila correspondiente en la tabla secundaria, el valor predeterminado completa la columna derivada de la fila enviada al destino. Si especifica NULL como valor predeterminado, la columna debe admitir nulos. Para determinados motores de réplica de réplica de CDC, este parámetro es necesario. réplica de CDC genera un error si se requiere un valor predeterminado pero no se ha especificado en una invocación de función %GETCOL. Si omite este parámetro, debe especificar dos comas consecutivas (para la sintaxis larga) o una coma (para la sintaxis abreviada) antes del paréntesis derecho para indicar su posición en la lista de parámetros. En este caso, la función %GETCOL devuelve un valor predeterminado según el tipo de datos de la columna especificada.
nombre_columna_secundaria1, nombre_columna_secundaria2, ...nombre_columna_secundarian
Identifica el nombre de columna secundaria de la tabla secundaria utilizada para recuperar la columna secundaria especificada por nombre_tabla_secundaria.
La API de DB2 UDB para z/OS requiere que la columna especificada en nombre_columna_secundaria no admita nulos. motor de réplica de CDC para DB2 para z/OS genera un mensaje de error si encuentra un valor de clave NULL al procesar la función %GETCOL. Para asegurarse de que se invoque la función %GETCOL sólo para registros con valores de clave que no sean NULL, utilice la función %IF.

Si utiliza motor de réplica de CDC para Informix, los valores que especifique aquí deben estar en minúsculas.

valor_clave1, valor_clave2, ...valor_claven
Especifica un valor de clave asociado para cada nombre de columna secundaria. El valor de clave puede ser cualquier expresión. Si especifica un nombre de columna primaria réplica de CDC utiliza el valor de imagen posterior de dicha columna como el valor_clave de la columna secundaria de la tabla secundaria para localizar la fila correspondiente en la tabla secundaria. Puede especificar varios pares de nombre de columna secundaria y valor de clave.

Si utiliza motor de réplica de CDC para Informix, los valores que especifique aquí deben estar en minúsculas.

Nota: Para motor de réplica de CDC para DB2 para z/OS, puede especificar hasta nueve pares nombre_columna_secundaria/valor_clave.

Tipo de datos del resultado

El tipo de datos de la columna recuperada (nombre_columna_secundaria). La función %GETCOL devuelve siempre datos que coinciden con el tipo de datos de la columna. Para datos de caracteres (cadena), devuelve una cadena UTF-8.

Ejemplos

Si desea ver ejemplos y escenarios de la función %GETCOL, consulte la lista de temas relacionados.