Sie sind auf Seite 1von 963

DB2

DB2 versin 9
para Linux, UNIX y Windows

Consulta de SQL - Volumen 1

SC11-3180-00
DB2


DB2 versin 9
para Linux, UNIX y Windows

Consulta de SQL - Volumen 1

SC11-3180-00
Antes de utilizar esta informacin y el producto al que da soporte, asegrese de leer la informacin general incluida en el
apartado Avisos.

Informacin sobre la edicin


Esta publicacin es la traduccin del original ingls DB2 Version 9 for Linux, UNIX, and Windows SQL Reference
Volume 1, (SC10-4249-00).
Este documento contiene informacin sobre productos patentados de IBM. Se proporciona segn un acuerdo de
licencia y est protegido por la ley de la propiedad intelectual. La presente publicacin no incluye garantas del
producto y las declaraciones que contiene no deben interpretarse como tales.
Puede realizar pedidos de publicaciones en lnea o a travs del representante de IBM de su localidad.
v Para realizar pedidos de publicaciones en lnea, vaya a IBM Publications Center en www.ibm.com/shop/
publications/order
v Para encontrar el representante de IBM correspondiente a su localidad, vaya a IBM Directory of Worldwide
Contacts en www.ibm.com/planetwide
Para realizar pedidos de publicaciones en marketing y ventas de DB2 de los EE.UU. o de Canad, llame al nmero
1-800-IBM-4YOU (426-4968).
Cuando enva informacin a IBM, otorga a IBM un derecho no exclusivo para utilizar o distribuir dicha informacin
en la forma en que IBM considere adecuada, sin contraer por ello ninguna obligacin con el remitente.
Copyright International Business Machines Corporation 1993, 2006. Reservados todos los derechos.
Contenido
Acerca de este manual . . . . . . . . . . . . . . . . . . . . . . . . . . . . . xv
Quin debe utilizar este manual . . . . . . . . . . . . . . . .
. xv . . . . . . . . . . .
Cmo esta estructurado este manual . . . . . . . . . . . . . . .
. xv . . . . . . . . . . .
Breve descripcin del Volumen 2 . . . . . . . . . . . . . . . . . . . . . . . . . . . xvi
Lectura de los diagramas de sintaxis . . . . . . . . . . . . . . . . . . . . . . . . . . . xvi
Convenios utilizados en este manual . . . . . . . . . . . . . . . . . . . . . . . . . . xviii
Condiciones de error . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . xviii
Convenios de resaltado . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . xix
Documentacin relacionada . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . xix

Captulo 1. Conceptos. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 1
Bases de datos relacionales . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 1
Lenguaje de consulta estructurada (SQL) . . . . . . . . . . . . . . . . . . . . . . . . . . 1
Consultas y expresiones de tabla. . . . . . . . . . . . . . . . . . . . . . . . . . . . . 2
Interfaz de nivel de llamada (CLI) de DB2 y Open Database Connectivity (ODBC) . . . . . . . . . . . . 2
Programas de conectividad de bases de datos Java (JDBC) y SQL incorporado para Java (SQLJ) . . . . . . . 3
Esquemas . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 3
Tablas . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 4
Claves . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 5
Restricciones . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 6
Restricciones de unicidad . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 7
Restricciones de referencia . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 7
Restricciones de comprobacin de tabla . . . . . . . . . . . . . . . . . . . . . . . . . 10
Restricciones informativas . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 11
ndices . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 11
Activadores . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 11
Vistas . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 13
Seudnimos . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 14
Paquetes . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 14
Autorizaciones, privilegios y propiedad de objetos . . . . . . . . . . . . . . . . . . . . . . 15
Vistas de catlogo . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 20
Procesos, simultaneidad y recuperacin de aplicaciones . . . . . . . . . . . . . . . . . . . . 21
Niveles de aislamiento. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 23
Comparacin de niveles de aislamiento . . . . . . . . . . . . . . . . . . . . . . . . . 25
Espacios de tablas y otras estructuras de almacenamiento . . . . . . . . . . . . . . . . . . . . 27
Conversin de caracteres . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 29
Bases de datos relacionales distribuidas . . . . . . . . . . . . . . . . . . . . . . . . . . 31
Unidad de trabajo remota . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 32
Unidad de trabajo distribuida dirigida por aplicacin . . . . . . . . . . . . . . . . . . . . 35
Consideraciones sobre la representacin de los datos . . . . . . . . . . . . . . . . . . . . 40
Supervisores de sucesos . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 40
Particin de bases de datos en varias particiones de base de datos . . . . . . . . . . . . . . . . . 42
Comportamiento de objetos grandes en las tablas con particiones . . . . . . . . . . . . . . . . . 43
Sistemas federados de DB2 . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 44
Sistemas federados . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 44
Qu es una fuente de datos? . . . . . . . . . . . . . . . . . . . . . . . . . . . . 45
La base de datos federada . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 46
Compilador de SQL . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 46
Derivadores y mdulos de derivador . . . . . . . . . . . . . . . . . . . . . . . . . . 47
Definiciones de servidor y opciones de servidor . . . . . . . . . . . . . . . . . . . . . . 48
Correlaciones de usuarios . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 48
Apodos y objetos de fuente de datos . . . . . . . . . . . . . . . . . . . . . . . . . . 49
Opciones de columna de apodo . . . . . . . . . . . . . . . . . . . . . . . . . . . 50
Correlaciones de tipos de datos . . . . . . . . . . . . . . . . . . . . . . . . . . . . 51
El servidor federado . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 51

Copyright IBM Corp. 1993, 2006 iii


Fuentes de datos soportadas . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 52
Catlogo del sistema de bases de datos federadas . . . . . . . . . . . . . . . . . . . . . 55
Optimizador de consultas . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 56
Secuencias de clasificacin . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 57

Captulo 2. Elementos del lenguaje . . . . . . . . . . . . . . . . . . . . . . . 61


Caracteres . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 61
Seales . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 63
Identificadores . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 65
Convenios de denominacin y calificaciones de nombre de objeto implcitas . . . . . . . . . . . . . 65
Seudnimos . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 70
ID de autorizacin y nombres de autorizacin . . . . . . . . . . . . . . . . . . . . . . . 71
Nombres de columna . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 75
Referencias a variables del lenguaje principal . . . . . . . . . . . . . . . . . . . . . . . 81
Tipos de datos . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 88
Tipos de datos . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 88
Nmeros . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 90
Series de caracteres . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 91
Series grficas . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 95
Series binarias . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 96
Objeto grande (LOB) . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 97
Valores de fecha y hora . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 99
Valores DATALINK . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 102
Valores XML . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 104
Tipos definidos por el usuario . . . . . . . . . . . . . . . . . . . . . . . . . . . . 105
Promocin de tipos de datos . . . . . . . . . . . . . . . . . . . . . . . . . . . . 108
Conversiones entre tipos de datos . . . . . . . . . . . . . . . . . . . . . . . . . . 110
Asignaciones y comparaciones . . . . . . . . . . . . . . . . . . . . . . . . . . . . 117
Reglas para los tipos de datos del resultado . . . . . . . . . . . . . . . . . . . . . . . 129
Reglas para la conversin de series . . . . . . . . . . . . . . . . . . . . . . . . . . 133
Tipos de datos compatibles entre particiones de base de datos . . . . . . . . . . . . . . . . . 135
Constantes . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 137
Constantes enteras. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 137
Constantes de coma flotante . . . . . . . . . . . . . . . . . . . . . . . . . . . . 137
Constantes decimales . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 138
Constantes de series de caracteres . . . . . . . . . . . . . . . . . . . . . . . . . . 138
Constantes hexadecimales . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 138
Constantes de series grficas . . . . . . . . . . . . . . . . . . . . . . . . . . . . 139
Registros especiales . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 141
Registros especiales . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 141
CURRENT CLIENT_ACCTNG . . . . . . . . . . . . . . . . . . . . . . . . . . . 144
CURRENT CLIENT_APPLNAM . . . . . . . . . . . . . . . . . . . . . . . . . . . 145
CURRENT CLIENT_USERID . . . . . . . . . . . . . . . . . . . . . . . . . . . . 146
CURRENT CLIENT_WRKSTNNAME . . . . . . . . . . . . . . . . . . . . . . . . . 147
CURRENT DATE . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 148
CURRENT DBPARTITIONNUM . . . . . . . . . . . . . . . . . . . . . . . . . . . 149
CURRENT DEFAULT TRANSFORM GROUP. . . . . . . . . . . . . . . . . . . . . . . 150
CURRENT DEGREE . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 151
CURRENT EXPLAIN MODE . . . . . . . . . . . . . . . . . . . . . . . . . . . . 152
CURRENT EXPLAIN SNAPSHOT . . . . . . . . . . . . . . . . . . . . . . . . . . 153
CURRENT FEDERATED ASYNCHRONY . . . . . . . . . . . . . . . . . . . . . . . . 154
CURRENT IMPLICIT XMLPARSE OPTION . . . . . . . . . . . . . . . . . . . . . . . 155
CURRENT ISOLATION . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 156
CURRENT LOCK TIMEOUT . . . . . . . . . . . . . . . . . . . . . . . . . . . . 157
CURRENT MAINTAINED TABLE TYPES FOR OPTIMIZATION . . . . . . . . . . . . . . . . 158
CURRENT PACKAGE PATH . . . . . . . . . . . . . . . . . . . . . . . . . . . . 159
CURRENT PATH . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 160
CURRENT QUERY OPTIMIZATION . . . . . . . . . . . . . . . . . . . . . . . . . 161
CURRENT REFRESH AGE . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 162
CURRENT SCHEMA . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 163
CURRENT SERVER . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 164

iv Consulta de SQL - Volumen 1


CURRENT TIME . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 165
CURRENT TIMESTAMP . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 166
CURRENT TIMEZONE . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 167
CURRENT USER . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 168
SESSION_USER . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 169
SYSTEM_USER . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 170
USER . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 171
Funciones . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 172
Funciones definidas por el usuario externas, de SQL y derivadas . . . . . . . . . . . . . . . . 172
Funciones definidas por el usuario escalares, de columna, de fila y de tabla . . . . . . . . . . . . 172
Signaturas de funcin . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 173
Resolucin de funcin . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 174
invocacin de funciones . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 177
Semntica de vinculacin conservadora. . . . . . . . . . . . . . . . . . . . . . . . . 178
Mtodos . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 181
Mtodos definidos por el usuario externos y SQL . . . . . . . . . . . . . . . . . . . . . 181
Signaturas de mtodo . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 181
Resolucin de mtodos . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 182
Invocacin de mtodos . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 185
Asignacin dinmica de mtodos . . . . . . . . . . . . . . . . . . . . . . . . . . . 186
Expresiones . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 189
Expresiones . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 189
Operaciones de fecha y hora y duraciones . . . . . . . . . . . . . . . . . . . . . . . . 197
Expresiones CASE . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 202
Especificaciones CAST . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 204
Especificaciones XMLCAST . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 207
Operaciones de desreferencia . . . . . . . . . . . . . . . . . . . . . . . . . . . . 209
Funciones OLAP . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 211
Invocacin de mtodos . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 217
Tratamiento de los subtipos . . . . . . . . . . . . . . . . . . . . . . . . . . . . 219
Referencia de secuencia . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 220
Predicados . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 224
Predicados . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 224
Condiciones de bsqueda . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 225
Predicado bsico . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 228
Predicado cuantificado . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 229
Predicado BETWEEN . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 232
Predicado EXISTS . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 233
Predicado IN . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 234
Predicado LIKE. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 236
Predicado NULL . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 241
Predicado TYPE . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 242
Predicado VALIDATED . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 244
Predicado XMLEXISTS . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 245

Captulo 3. Funciones . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 249


Resumen de las funciones . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 249
Funciones soportadas y vistas y rutinas administrativas SQL . . . . . . . . . . . . . . . . . . 251
Funciones agregadas . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 275
AVG . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 276
CORRELATION . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 278
COUNT . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 279
COUNT_BIG . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 280
COVARIANCE . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 282
GROUPING . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 283
MAX . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 285
MIN . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 287
XMLAGG . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 288
Funciones de regresin . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 290
STDDEV . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 293
SUM . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 294

Contenido v
VARIANCE . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 295
Funciones escalares . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 296
ABS o ABSVAL . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 297
ACOS . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 298
ASCII . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 299
ASIN . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 300
ATAN . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 301
ATAN2 . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 302
ATANH . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 303
BIGINT . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 304
BLOB . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 306
CEILING o CEIL . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 307
CHAR . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 308
CHARACTER_LENGTH . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 313
CHR . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 315
CLOB . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 316
COALESCE . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 317
CONCAT . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 318
COS . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 319
COSH . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 320
COT . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 321
DATAPARTITIONNUM . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 322
DATE . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 323
DAY . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 324
DAYNAME . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 325
DAYOFWEEK . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 326
DAYOFWEEK_ISO . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 327
DAYOFYEAR . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 328
DAYS . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 329
DBCLOB . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 330
DBPARTITIONNUM . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 331
DECIMAL . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 333
DECRYPT_BIN y DECRYPT_CHAR . . . . . . . . . . . . . . . . . . . . . . . . . . . 337
DEGREES . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 339
DEREF . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 340
DIFFERENCE . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 341
DIGITS . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 342
DOUBLE . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 343
ENCRYPT . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 345
EVENT_MON_STATE . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 347
EXP . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 348
FLOAT . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 349
FLOOR . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 350
GETHINT . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 351
GENERATE_UNIQUE . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 352
GRAPHIC . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 354
HASHEDVALUE . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 356
HEX . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 358
HOUR. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 360
IDENTITY_VAL_LOCAL . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 361
INSERT . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 365
INTEGER . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 366
JULIAN_DAY . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 368
LCASE o LOWER . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 369
LCASE (esquema SYSFUN) . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 370
LEFT . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 371
LENGTH . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 372
LN . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 374
LOCATE . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 375
LOG . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 379
LOG10 . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 380

vi Consulta de SQL - Volumen 1


LONG_VARCHAR . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 381
LONG_VARGRAPHIC . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 382
LTRIM . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 383
LTRIM (esquema SYSFUN) . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 384
MICROSECOND . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 385
MIDNIGHT_SECONDS . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 386
MINUTE . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 387
MOD . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 388
MONTH . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 389
MONTHNAME . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 390
MULTIPLY_ALT . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 391
NULLIF . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 393
OCTET_LENGTH . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 394
POSITION . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 395
POSSTR . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 398
POWER . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 400
QUARTER . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 401
RADIANS . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 402
RAISE_ERROR . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 403
RAND . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 404
REAL . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 405
REC2XML . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 406
REPEAT . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 411
REPLACE . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 412
RIGHT . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 413
ROUND . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 414
RTRIM . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 416
RTRIM (esquema SYSFUN) . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 417
SECLABEL . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 418
SECLABEL_BY_NAME . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 419
SECLABEL_TO_CHAR . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 420
SECOND . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 422
SIGN . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 423
SIN . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 424
SINH SINH . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 425
SMALLINT . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 426
SOUNDEX . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 427
SPACE . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 428
SQRT . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 429
STRIP . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 430
SUBSTR . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 431
SUBSTRING . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 434
TABLE_NAME . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 437
TABLE_SCHEMA . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 438
TAN . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 440
TANH . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 441
TIME . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 442
TIMESTAMP . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 443
TIMESTAMP_FORMAT . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 444
TIMESTAMP_ISO . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 446
TIMESTAMPDIFF . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 447
TO_CHAR . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 449
TO_DATE . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 450
TRANSLATE . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 451
453
TRUNCATE o TRUNC . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 455
TYPE_ID . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 456
TYPE_NAME . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 457
TYPE_SCHEMA . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 458
UCASE o UPPER . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 459
VALUE . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 460
VARCHAR . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 461

Contenido vii
VARCHAR_FORMAT . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 463
VARGRAPHIC . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 465
WEEK . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 467
WEEK_ISO . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 468
XMLATTRIBUTES . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 469
XMLCOMMENT . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 471
XMLCONCAT . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 472
XMLDOCUMENT . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 474
XMLELEMENT. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 476
XMLFOREST . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 482
XMLNAMESPACES . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 486
XMLPARSE . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 489
XMLPI . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 491
XMLQUERY . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 493
XMLSERIALIZE . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 497
XMLTEXT . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 500
XMLVALIDATE . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 502
XMLXSROBJECTID . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 507
YEAR . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 508
Funciones de tabla . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 509
XMLTABLE . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 510
Funciones definidas por el usuario . . . . . . . . . . . . . . . . . . . . . . . . . . . 514

Captulo 4. Procedimientos . . . . . . . . . . . . . . . . . . . . . . . . . . 517


Visin general de los procedimientos . . . . . . . . . . . . . . . . . . . . . . . . . . 517
procedimiento XSR_ADDSCHEMADOC . . . . . . . . . . . . . . . . . . . . . . . . . 518
procedimiento XSR_COMPLETE . . . . . . . . . . . . . . . . . . . . . . . . . . . . 520
Procedimiento XSR_DTD . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 522
Procedimiento XSR_EXTENTITY . . . . . . . . . . . . . . . . . . . . . . . . . . . . 524
procedimiento XSR_REGISTER . . . . . . . . . . . . . . . . . . . . . . . . . . . . 526

Captulo 5. Consultas . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 529


Consultas de SQL . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 529
Subseleccin . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 530
clusula-select . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 531
clusula-from . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 534
referencia-tabla . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 535
tabla-unida . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 543
clusula-where . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 545
Clusula group-by . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 546
clusula-having. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 552
clusula-order-by . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 553
clusula-fetch-first . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 556
Ejemplos de subselecciones . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 556
Ejemplos de uniones . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 558
Ejemplos de conjuntos de agrupaciones, cube y rollup . . . . . . . . . . . . . . . . . . . . 561
Seleccin completa . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 569
Ejemplos de una seleccin completa . . . . . . . . . . . . . . . . . . . . . . . . . . 572
Sentencia select . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 574
expresin-comn-tabla . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 574
clusula-update . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 580
clusula-read-only . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 580
clusula-optimize-for . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 581
clusula-isolation . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 581
clusula-lock-request . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 582
Ejemplos de una sentencia-select . . . . . . . . . . . . . . . . . . . . . . . . . . . 582

Apndice A. Lmites de SQL y XQuery . . . . . . . . . . . . . . . . . . . . . 585

Apndice B. SQLCA (rea de comunicaciones SQL) . . . . . . . . . . . . . . . . 595

viii Consulta de SQL - Volumen 1


Descripcin de los campos de la SQLCA . . . . . . . . . . . . . . . . . . . . . . . . . 595
Informe de errores . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 599
Utilizacin de SQLCA en sistemas de bases de datos particionadas . . . . . . . . . . . . . . . . 599

Apndice C. SQLDA (rea de descriptores de SQL) . . . . . . . . . . . . . . . . 601


Descripcin de los campos de la SQLDA . . . . . . . . . . . . . . . . . . . . . . . . . 601
Campos en la cabecera SQLDA . . . . . . . . . . . . . . . . . . . . . . . . . . . 602
Campos de una ocurrencia de una SQLVAR base . . . . . . . . . . . . . . . . . . . . . 603
Campos de una ocurrencia de una SQLVAR secundaria . . . . . . . . . . . . . . . . . . . 604
Efecto de DESCRIBE en la SQLDA . . . . . . . . . . . . . . . . . . . . . . . . . . . 606
SQLTYPE y SQLLEN . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 607
SQLTYPE no reconocidos y no soportados . . . . . . . . . . . . . . . . . . . . . . . . 609
Nmeros decimales empaquetados . . . . . . . . . . . . . . . . . . . . . . . . . . 610
Campo SQLLEN para decimales . . . . . . . . . . . . . . . . . . . . . . . . . . . 610

Apndice D. Vistas de catlogo . . . . . . . . . . . . . . . . . . . . . . . . 613


Vistas de catlogo del sistema . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 613
Gua bsica para las vistas de catlogo . . . . . . . . . . . . . . . . . . . . . . . . . . 615
SYSIBM.SYSDUMMY1 . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 619
SYSCAT.ATTRIBUTES . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 620
SYSCAT.BUFFERPOOLDBPARTITIONS . . . . . . . . . . . . . . . . . . . . . . . . . 622
SYSCAT.BUFFERPOOLS . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 623
SYSCAT.CASTFUNCTIONS . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 624
SYSCAT.CHECKS . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 625
SYSCAT.COLAUTH . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 627
SYSCAT.COLCHECKS . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 628
SYSCAT.COLDIST . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 629
SYSCAT.COLGROUPCOLS . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 630
SYSCAT.COLGROUPDIST . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 631
SYSCAT.COLGROUPDISTCOUNTS . . . . . . . . . . . . . . . . . . . . . . . . . . . 632
SYSCAT.COLGROUPS . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 633
SYSCAT.COLIDENTATTRIBUTES . . . . . . . . . . . . . . . . . . . . . . . . . . . 634
SYSCAT.COLOPTIONS . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 635
SYSCAT.COLUMNS . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 636
SYSCAT.COLUSE . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 642
SYSCAT.CONSTDEP . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 643
SYSCAT.DATAPARTITIONEXPRESSION . . . . . . . . . . . . . . . . . . . . . . . . . 644
SYSCAT.DATAPARTITIONS . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 645
SYSCAT.DATATYPES . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 647
SYSCAT.DBAUTH . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 649
SYSCAT.DBPARTITIONGROUPDEF . . . . . . . . . . . . . . . . . . . . . . . . . . . 651
SYSCAT.DBPARTITIONGROUPS . . . . . . . . . . . . . . . . . . . . . . . . . . . . 652
SYSCAT.EVENTMONITORS . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 653
SYSCAT.EVENTS . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 655
SYSCAT.EVENTS . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 656
SYSCAT.FULLHIERARCHIES . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 657
SYSCAT.FUNCMAPOPTIONS . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 658
SYSCAT.FUNCMAPPARMOPTIONS . . . . . . . . . . . . . . . . . . . . . . . . . . 659
SYSCAT.FUNCMAPPINGS . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 660
SYSCAT.HIERARCHIES . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 661
SYSCAT.INDEXAUTH . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 662
SYSCAT.INDEXCOLUSE . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 663
SYSCAT.INDEXDEP . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 664
SYSCAT.INDEXES . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 665
SYSCAT.INDEXEXPLOITRULES . . . . . . . . . . . . . . . . . . . . . . . . . . . . 671
SYSCAT.INDEXEXTENSIONDEP . . . . . . . . . . . . . . . . . . . . . . . . . . . . 672
SYSCAT.INDEXEXTENSIONMETHODS . . . . . . . . . . . . . . . . . . . . . . . . . 673
SYSCAT.INDEXEXTENSIONPARMS . . . . . . . . . . . . . . . . . . . . . . . . . . . 674
SYSCAT.INDEXEXTENSIONS . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 675
SYSCAT.INDEXOPTIONS . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 676

Contenido ix
SYSCAT.INDEXXMLPATTERNS . . . . . . . . . . . . . . . . . . . . . . . . . . . . 677
SYSCAT.KEYCOLUSE . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 678
SYSCAT.NAMEMAPPINGS . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 679
SYSCAT.NICKNAMES . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 680
SYSCAT.PACKAGEAUTH . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 683
SYSCAT.PACKAGEDEP . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 684
SYSCAT.PACKAGES . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 686
SYSCAT.PARTITIONMAPS . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 692
SYSCAT.PASSTHRUAUTH . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 693
SYSCAT.PREDICATESPECS . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 694
SYSCAT.REFERENCES . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 695
SYSCAT.ROUTINEAUTH . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 696
SYSCAT.ROUTINEDEP . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 697
SYSCAT.ROUTINEOPTIONS . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 698
SYSCAT.ROUTINEPARMOPTIONS . . . . . . . . . . . . . . . . . . . . . . . . . . . 699
SYSCAT.ROUTINEPARMS . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 700
SYSCAT.ROUTINES . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 702
SYSCAT.ROUTINESFEDERATED . . . . . . . . . . . . . . . . . . . . . . . . . . . . 711
SYSCAT.SCHEMAAUTH . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 713
SYSCAT.SCHEMATA . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 714
SYSCAT.SECURITYLABELACCESS . . . . . . . . . . . . . . . . . . . . . . . . . . . 715
SYSCAT.SECURITYLABELCOMPONENTELEMENTS . . . . . . . . . . . . . . . . . . . . . 716
SYSCAT.SECURITYLABELCOMPONENTS . . . . . . . . . . . . . . . . . . . . . . . . 717
SYSCAT.SECURITYLABELS . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 718
SYSCAT.SECURITYPOLICIES . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 719
SYSCAT.SECURITYPOLICYCOMPONENTRULES . . . . . . . . . . . . . . . . . . . . . . 720
SYSCAT.SECURITYPOLICYEXEMPTIONS. . . . . . . . . . . . . . . . . . . . . . . . . 721
SYSCAT.SURROGATEAUTHIDS . . . . . . . . . . . . . . . . . . . . . . . . . . . . 722
SYSCAT.SEQUENCEAUTH . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 723
SYSCAT.SEQUENCES . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 724
SYSCAT.SERVEROPTIONS . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 726
SYSCAT.SERVERS . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 727
SYSCAT.STATEMENTS . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 728
SYSCAT.TABAUTH . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 729
SYSCAT.TABCONST . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 731
SYSCAT.TABDEP . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 732
SYSCAT.TABDETACHEDDEP . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 734
SYSCAT.TABLES . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 735
SYSCAT.TABLESPACES . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 742
SYSCAT.TABOPTIONS . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 744
SYSCAT.TBSPACEAUTH . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 745
SYSCAT.TRANSFORMS . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 746
SYSCAT.TRIGDEP . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 747
SYSCAT.TRIGGERS . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 748
SYSCAT.TYPEMAPPINGS . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 750
SYSCAT.USEROPTIONS . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 753
SYSCAT.VIEWS . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 754
SYSCAT.WRAPOPTIONS . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 755
SYSCAT.WRAPPERS . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 756
SYSCAT.XDBMAPGRAPHS . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 757
SYSCAT.XDBMAPSHREDTREES . . . . . . . . . . . . . . . . . . . . . . . . . . . . 758
SYSCAT.XSROBJECTAUTH . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 759
SYSCAT.XSROBJECTCOMPONENTS . . . . . . . . . . . . . . . . . . . . . . . . . . 760
SYSCAT.XSROBJECTDEP . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 761
SYSCAT.XSROBJECTHIERARCHIES . . . . . . . . . . . . . . . . . . . . . . . . . . . 762
SYSCAT.XSROBJECTS . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 763
SYSSTAT.COLDIST . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 764
SYSSTAT.COLGROUPDIST . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 765
SYSSTAT.COLGROUPDISTCOUNTS . . . . . . . . . . . . . . . . . . . . . . . . . . 766
SYSSTAT.COLGROUPS . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 767
SYSSTAT.COLUMNS . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 768

x Consulta de SQL - Volumen 1


SYSSTAT.INDEXES . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 769
SYSSTAT.ROUTINES . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 773
SYSSTAT.TABLES . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 774

Apndice E. Sistemas federados . . . . . . . . . . . . . . . . . . . . . . . . 777


Tipos de servidor vlidos en sentencias de SQL . . . . . . . . . . . . . . . . . . . . . . . 777
Derivador de BioRS . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 777
Derivador de BLAST . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 777
Derivador de CTLIB . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 778
Derivador de DRDA . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 778
Derivador de Entrez . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 778
Derivador de Excel . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 778
Derivador de HMMER . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 779
Derivador de Informix . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 779
Derivador de MSSQLODBC3 . . . . . . . . . . . . . . . . . . . . . . . . . . . . 779
Derivador N8 . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 779
Derivador de ODBC . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 779
Derivador de OLE DB . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 779
Derivador de archivos de tabla estructurada . . . . . . . . . . . . . . . . . . . . . . . 780
Derivador de Teradata . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 780
Derivador de servicios Web . . . . . . . . . . . . . . . . . . . . . . . . . . . . 780
Derivador de WebSphere Business Integration . . . . . . . . . . . . . . . . . . . . . . 780
Derivador de XML . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 780
Opciones de columna de apodo para sistemas federados . . . . . . . . . . . . . . . . . . . . 780
Opciones de correlacin de funciones para sistemas federados . . . . . . . . . . . . . . . . . . 787
Opciones de servidor para sistemas federados . . . . . . . . . . . . . . . . . . . . . . . 788
Opciones de correlacin de usuarios para sistemas federados . . . . . . . . . . . . . . . . . . 807
Opciones de derivador para sistemas federados . . . . . . . . . . . . . . . . . . . . . . . 808
Correlaciones de tipos de datos directas por omisin . . . . . . . . . . . . . . . . . . . . . 811
Fuentes de datos DB2 Database para Linux, UNIX y Windows . . . . . . . . . . . . . . . . . 811
Fuentes de datos DB2 para iSeries . . . . . . . . . . . . . . . . . . . . . . . . . . 812
Fuentes de datos DB2 para VM y VSE . . . . . . . . . . . . . . . . . . . . . . . . . 812
Fuentes de datos DB2 para z/OS . . . . . . . . . . . . . . . . . . . . . . . . . . . 813
Fuentes de datos Informix . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 813
Fuentes de datos Microsoft SQL Server . . . . . . . . . . . . . . . . . . . . . . . . . 814
Fuentes de datos ODBC . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 816
Fuentes de datos Oracle NET8. . . . . . . . . . . . . . . . . . . . . . . . . . . . 817
Fuentes de datos Sybase . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 817
Fuentes de datos Teradata . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 818
Correlaciones de tipos de datos inversas por omisin . . . . . . . . . . . . . . . . . . . . . 819
Fuentes de datos DB2 Database para Linux, UNIX y Windows . . . . . . . . . . . . . . . . . 820
Fuentes de datos DB2 para iSeries . . . . . . . . . . . . . . . . . . . . . . . . . . 820
Fuentes de datos DB2 para VM y VSE . . . . . . . . . . . . . . . . . . . . . . . . . 821
Fuentes de datos DB2 para z/OS . . . . . . . . . . . . . . . . . . . . . . . . . . . 821
Fuentes de datos Informix . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 821
Fuentes de datos Microsoft SQL Server . . . . . . . . . . . . . . . . . . . . . . . . . 822
Fuentes de datos Oracle NET8. . . . . . . . . . . . . . . . . . . . . . . . . . . . 823
Fuentes de datos Sybase . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 823
Fuentes de datos Teradata . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 824

Apndice F. La base de datos SAMPLE y la consulta de SQL . . . . . . . . . . . . 825

Apndice G. Nombres de esquema reservados y palabras reservadas . . . . . . . . 827

Apndice H. Interaccin de los activadores con las restricciones . . . . . . . . . . 831

Apndice I. Tablas de Explain . . . . . . . . . . . . . . . . . . . . . . . . . 835


Tablas de Explain . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 835
Tabla EXPLAIN_ARGUMENT . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 836
Tabla EXPLAIN_DIAGNOSTIC . . . . . . . . . . . . . . . . . . . . . . . . . . . . 841

Contenido xi
Tabla EXPLAIN_DIAGNOSTIC_DATA . . . . . . . . . . . . . . . . . . . . . . . . . . 842
Tabla EXPLAIN_INSTANCE . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 844
Tabla EXPLAIN_OBJECT . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 847
Tabla EXPLAIN_OPERATOR . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 850
Tabla EXPLAIN_PREDICATE . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 852
Tabla EXPLAIN_STATEMENT . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 855
Tabla EXPLAIN_STREAM . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 857
Tabla ADVISE_INDEX . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 859
Tabla ADVISE_INSTANCE . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 863
Tabla ADVISE_MQT . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 864
Tabla ADVISE_PARTITION . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 866
Tabla ADVISE_TABLE . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 868
Tabla ADVISE_WORKLOAD . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 869

Apndice J. Valores de los registros de EXPLAIN . . . . . . . . . . . . . . . . . 871

Apndice K. Tablas de excepciones . . . . . . . . . . . . . . . . . . . . . . . 879


Reglas para crear una tabla de excepciones . . . . . . . . . . . . . . . . . . . . . . . . 879
Gestin de las filas en una tabla de excepciones . . . . . . . . . . . . . . . . . . . . . . . 881
Consulta de las tablas de excepciones . . . . . . . . . . . . . . . . . . . . . . . . . . 881

Apndice L. Sentencias de SQL que se permiten en rutinas . . . . . . . . . . . . 883

Apndice M. CALL invocada desde una sentencia compilada . . . . . . . . . . . . 887

Apndice N. Consideraciones sobre el cdigo UNIX ampliado (EUC) en japons y


chino tradicional . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 893
Elementos de idioma . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 893
Caracteres . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 893
Seales . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 893
Identificadores . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 893
Tipos de datos . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 894
Constantes . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 896
Funciones . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 896
Expresiones . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 896
Predicados . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 897
Funciones . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 897
LENGTH . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 897
SUBSTR . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 898
TRANSLATE . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 898
VARGRAPHIC . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 898
Sentencias . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 898
CONNECT . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 898
PREPARE . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 899

Apndice O. Especificaciones de formato de Backus-Naur (BNF) para los enlaces de


datos . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 901

Apndice P. Informacin tcnica sobre DB2 Database . . . . . . . . . . . . . . . 903


Visin general de la informacin tcnica de DB2 . . . . . . . . . . . . . . . . . . . . . . . 903
Comentarios sobre la documentacin . . . . . . . . . . . . . . . . . . . . . . . . . 903
Biblioteca tcnica de DB2 en formato PDF . . . . . . . . . . . . . . . . . . . . . . . . . 904
Pedido de manuales de DB2 en copia impresa . . . . . . . . . . . . . . . . . . . . . . . 906
Visualizacin de la ayuda para estados de SQL desde el procesador de lnea de mandatos . . . . . . . . 907
Acceso a diferentes versiones del Centro de informacin de DB2 . . . . . . . . . . . . . . . . . 908
Visualizacin de temas en el idioma preferido en el Centro de informacin de DB2 . . . . . . . . . . . 908
Actualizacin del Centro de informacin de DB2 instalado en el sistema o en un servidor de intranet . . . . . 909
Guas de aprendizaje de DB2 . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 911
Informacin de resolucin de problemas de DB2 . . . . . . . . . . . . . . . . . . . . . . 911

xii Consulta de SQL - Volumen 1


Trminos y condiciones . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 912

Apndice Q. Avisos . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 913


Marcas registradas. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 915

ndice . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 917

Cmo ponerse en contacto con IBM . . . . . . . . . . . . . . . . . . . . . . 937

Contenido xiii
xiv Consulta de SQL - Volumen 1
Acerca de este manual
El manual Consulta de SQL en dos volmenes define el lenguaje SQL utilizado por
la base de datosDB2 para Linux, UNIX y Windows. ste incluye:
v Informacin acerca de los conceptos de las bases de datos relacionales, los
elementos del lenguaje, las funciones y los formatos de las consultas
(Volumen 1).
v Informacin acerca de la sintaxis y la semntica de las sentencias de SQL
(Volumen 2).

Quin debe utilizar este manual


Este manual va dirigido a aquellas personas que deseen utilizar el Lenguaje de
consulta estructurada (SQL) para acceder a una base de datos. Principalmente, es
para los programadores y los administradores de bases de datos, pero tambin
pueden utilizarlo los usuarios que accedan a las bases de datos mediante el
procesador de lnea de mandatos (CLP).

Este manual sirve ms de consulta que de gua de aprendizaje. Supone que va a


escribir programas de aplicacin y, por lo tanto, presenta todas las funciones del
gestor de bases de datos.

Cmo esta estructurado este manual


Este manual contiene informacin acerca de los siguientes temas principales:
v El Captulo 1, Conceptos, en la pgina 1 explica los conceptos bsicos de las
bases de datos relacionales y del SQL.
v El Captulo 2, Elementos del lenguaje, en la pgina 61 describe la sintaxis
bsica del SQL y los elementos del lenguaje que son comunes a muchas
sentencias de SQL.
v El Captulo 3, Funciones, en la pgina 249 contiene diagramas de sintaxis,
descripciones semnticas, normas y ejemplos de utilizacin de columna y
funciones escalares del SQL.
v El Captulo 4, Procedimientos, en la pgina 517 contiene diagramas de sintaxis,
descripciones semnticas, normas y ejemplos de utilizacin de procedimientos.
v El Captulo 5, Consultas, en la pgina 529 describe los distintos formatos de
una consulta.
v El Apndice A, Lmites de SQL y XQuery, en la pgina 585 lista las
limitaciones del SQL.
v El Apndice B, SQLCA (rea de comunicaciones SQL), en la pgina 595
describe la estructura de SQLCA.
v El Apndice C, SQLDA (rea de descriptores de SQL), en la pgina 601
describe la estructura de SQLDA.
v El Apndice D, Vistas de catlogo, en la pgina 613 describe las vistas de
catlogos del sistema.
v El Apndice E, Sistemas federados, en la pgina 777 describe las opciones y las
correlaciones de tipos para sistemas federados.

Copyright IBM Corp. 1993, 2006 xv


Cmo est estructurado este manual

v El Apndice F, La base de datos SAMPLE y la consulta de SQL, en la pgina


825 presenta la base de datos SAMPLE, que contiene las tablas que se utilizan en
muchos ejemplos.
v El Apndice G, Nombres de esquema reservados y palabras reservadas, en la
pgina 827 contiene los nombres de esquemas reservados y las palabras
reservadas para los estndares SQL de IBM y SQL99 y SQL2003 de ISO/ANSI.
v El Apndice H, Interaccin de los activadores con las restricciones, en la
pgina 831, explica la interaccin de los activadores y las restricciones de
referencia.
v El Apndice I, Tablas de Explain, en la pgina 835 describe las tablas Explain.
v El Apndice J, Valores de los registros de EXPLAIN, en la pgina 871 describe
la interaccin que tienen entre s los valores de registro especiales CURRENT
EXPLAIN MODE y CURRENT EXPLAIN SNAPSHOT y los mandatos PREP y
BIND.
v El Apndice K, Tablas de excepciones, en la pgina 879 contiene informacin
sobre tablas creadas por el usuario que se utilizan con la sentencia SET
INTEGRITY.
v El Apndice L, Sentencias de SQL que se permiten en rutinas, en la pgina 883
lista las sentencias de SQL que se permite ejecutar en rutinas con diferentes
contextos de acceso de datos de SQL.
v El Apndice M, CALL invocada desde una sentencia compilada, en la pgina
887 describe la sentencia CALL que se puede invocar desde una sentencia
compilada.
v El Apndice N, Consideraciones sobre el cdigo UNIX ampliado (EUC) en
japons y chino tradicional, en la pgina 893 lista las consideraciones que se
deben tener en cuenta al utilizar los juegos de caracteres de cdigo UNIX
ampliado (EUC).
v El Apndice O, Especificaciones de formato de Backus-Naur (BNF) para los
enlaces de datos, en la pgina 901 contiene las especificaciones del formato
BNF (Backus-Naur) para DATALINK.

Breve descripcin del Volumen 2


El segundo volumen del manual Consulta de SQL contiene informacin sobre la
sintaxis y la semntica de las sentencias de SQL.
v Sentencias contiene diagramas de sintaxis, descripciones semnticas, normas y
ejemplos de todas las sentencias de SQL.

Lectura de los diagramas de sintaxis


En todo el manual, se describe la sintaxis utilizando la estructura que se define a
continuacin:

Lea los diagramas de sintaxis de izquierda a derecha y de arriba a abajo, siguiendo


la ruta de la lnea.

El smbolo  indica el principio del diagrama de sintaxis.

El smbolo  indica que la sintaxis contina en la lnea siguiente.

El smbolo  indica que la sintaxis es continuacin de la lnea anterior.

El smbolo  indica el final de un diagrama de sintaxis.

xvi Consulta de SQL - Volumen 1


Lectura de los diagramas de sintaxis

Los fragmentos de sintaxis se inician con el smbolo y finalizan con el smbolo


.

Los elementos necesarios aparecen en la lnea horizontal (la ruta principal).

 required_item 

Los elementos opcionales aparecen por debajo de la ruta principal.

 required_item 
optional_item

Si un elemento opcional aparece por encima de la ruta principal, ese elemento no


tiene efecto sobre la ejecucin y slo se utiliza para la legibilidad.

optional_item
 required_item 

Si puede elegir de dos o ms elementos, aparecern en una pila.

Si debe elegir uno de los elementos, un elemento de la pila aparecer en la ruta


principal.

 required_item required_choice1 
required_choice2

Si la eleccin de uno de los elementos es opcional, toda la pila aparecer por


debajo de la ruta principal.

 required_item 
opcin_opcional1
opcin_opcional2

Si uno de los elementos es el valor por omisin, aparecer por encima de la ruta
principal, y el resto de las elecciones se mostrarn por debajo.

default_choice
 required_item 
optional_choice
optional_choice

Una flecha que vuelve a la izquierda, por encima de la ruta principal, indica que se
puede repetir un elemento. En este caso, los elementos repetidos deben separarse
mediante uno o varios espacios en blanco.

 required_item  repeatable_item 

Acerca de este manual xvii


Lectura de los diagramas de sintaxis

Si la flecha de repetir contiene una coma, deber separar los elementos repetidos
con una coma.

 required_item  repeatable_item 

Una flecha de repetir por encima de una pila indica que puede hacer ms de una
eleccin entre los elementos apilados o repetir una sola eleccin.

Las palabras clave aparecern en maysculas (por ejemplo, FROM). Se deben escribir
exactamente como se indica. Las variables aparecern en minsculas (por ejemplo,
nombre-columna). stas representan los nombres suministrados por el usuario o los
valores de la sintaxis.

Si aparecen signos de puntuacin, parntesis, operadores aritmticos u otro tipo de


smbolos, debe introducirlos como parte de la sintaxis.

En ocasiones, una nica variable representa un fragmento ms largo de la sintaxis.


Por ejemplo, en el siguiente diagrama, la variable bloque-parmetro representa el
fragmento entero de sintaxis que est etiquetado bloque-parmetro:

 required_item bloque-parmetro 

bloque-parmetro:

parmetro1
parmetro2 parmetro3
parmetro4

Los segmentos contiguos que se producen entre puntos grandes (*) puede
especificarse en cualquier secuencia.

 required_item elemento1 * elemento2 * elemento3 * elemento4 

El diagrama anterior muestra que el elemento2 y el elemento3 se pueden


especificar en cualquier orden. Las dos opciones siguientes son vlidas:
required_item item1 item2 item3 item4
required_item item1 item3 item2 item4

Convenios utilizados en este manual


Esta seccin especifica algunos convenios que se utilizan coherentemente en este
manual.

Condiciones de error
Una condicin de error se indica en el texto del manual listando entre parntesis el
SQLSTATE asociado al error. Por ejemplo:
Una signatura duplicada devuelve un error de SQL (SQLSTATE 42723).

xviii Consulta de SQL - Volumen 1


Convenios de resaltado

Convenios de resaltado
Se utilizan los siguientes convenios en este manual.

Negrita Indica mandatos, palabras clave y otros elementos cuyos nombres estn
predefinidos por el sistema.
Cursiva Indica uno de los siguientes:
v Nombres o valores (variables) que debe suministrar el usuario
v nfasis general
v La presentacin de un trmino nuevo
v Una referencia a otra fuente de informacin
Monoespaciado Indica uno de los siguientes:
v Archivos y directorios
v Informacin que se indica al usuario que escriba en un indicador de
mandatos o en una ventana
v Ejemplos de valores de datos especficos
v Ejemplos de texto similar a lo que puede mostrar el sistema
v Ejemplos de mensajes del sistema

Documentacin relacionada
Las siguientes publicaciones pueden resultarle tiles al preparar las aplicaciones:
v Administration Guide
Contiene la informacin necesaria para disear, implementar y mantener una
base de datos a la que se va a acceder de forma local o en un entorno de
cliente/servidor
v Iniciacin al desarrollo de aplicaciones de bases de datos
Presenta el desarrollo de la aplicacin DB2 e incluye los requisitos previos de
la plataforma, el software de desarrollo soportado y una orientacin sobre las
ventajas y limitaciones de los API de programacin soportados.
v Desarrollo de SQL y rutinas externas
Contiene informacin que describe cmo disear y crear bases de datos y
objetos de base de datos, entre los que se encuentran las tablas, las
restricciones, los activadores, las vistas y los procedimientos y funciones
almacenados en SQL y definidos por el usuario. Tambin explica cmo
consultar y modificar datos y cmo controlar el acceso a los objetos de base
de datos.
v DB2 Universal Database for iSeries SQL Reference
Este manual define el SQL soportado por DB2 Query Manager y SQL
Development Kit en iSeries (AS/400). Contiene informacin de consulta para
las tareas de administracin del sistema, administracin de la base de datos,
programacin de aplicaciones y operacin. Este manual incluye sintaxis, notas
acerca del uso, palabras claves y ejemplos para cada una de las sentencias de
SQL utilizadas en sistemas iSeries (AS/400) que ejecutan DB2.
v DB2 Universal Database for z/OS and OS/390 SQL Reference
Este manual define el SQL utilizado en DB2 para z/OS (OS/390). Proporciona
formatos de consulta, sentencias de SQL, sentencias de procedimientos de
SQL, lmites de DB2, SQLCA, SQLDA, tablas de catlogos y palabras
reservadas de SQL para sistemas z/OS que ejecutan DB2.
v DB2 Spatial Extender Users Guide and Reference

Acerca de este manual xix


Documentacin relacionada

Este manual describe cmo escribir aplicaciones para crear y utilizar un


sistema de informacin geogrfica (GIS). Para crear y utilizar un GIS es
necesario proporcionar una base de datos con recursos y luego consultar los
datos para obtener informacin, tal como ubicaciones, distancias y
distribuciones dentro de zonas geogrficas.
v Consulta de SQL de IBM
Este manual contiene todos los elementos comunes de SQL que estn
distribuidos por todos los productos de base de datos de IBM. Proporciona
lmites y normas que pueden servir de ayuda en la preparacin de programas
porttiles que utilicen bases de datos de IBM. Este manual proporciona una
lista de extensiones de SQL e incompatibilidades entre los siguientes
estndares y productos: SQL92E, XPG4-SQL, IBM-SQL y los productos de
bases de datos relacionales de IBM.
v American National Standard X3.135-1992, Database Language SQL
Contiene la definicin estndar ANSI de SQL.
v ISO/IEC 9075:1992, Database Language SQL
Contiene la definicin de SQL proporcionada por la norma 1992 de ISO.
v ISO/IEC 9075-2:1999, Database Language SQL -- Part 2: Foundation
(SQL/Foundation)
Contiene una gran parte de la definicin de SQL proporcionada por la norma
1999 de ISO.
v ISO/IEC 9075-4:1999, Database Language SQL -- Part 4: Persistent Stored Modules
(SQL/PSM)
Contiene la definicin de las sentencias de control de los procedimientos SQL,
tal como aparece en la norma 1999 de ISO.
v ISO/IEC 9075-5:1999, Database Language SQL -- Part 4: Host Language Bindings
(SQL/Bindings)
Contiene la definicin de los enlaces de lenguaje principal y de SQL
dinmico, tal como aparece en la norma 1999 de ISO.

xx Consulta de SQL - Volumen 1


Captulo 1. Conceptos
En este captulo se proporciona una vista de alto nivel de los conceptos que son
importantes para comprender cundo utilizar el Lenguaje de consulta estructurada
(SQL). El material de consulta contenido en el resto de este manual proporciona
una vista ms detallada.

Bases de datos relacionales


Una base de datos relacional es una base de datos que se trata como un conjunto de
tablas y se manipula de acuerdo con el modelo de datos relacional. Contiene un
conjunto de objetos que se utilizan para almacenar y gestionar los datos, as como
para acceder a los mismos. Las tablas, vistas, ndices, funciones, activadores y
paquetes son ejemplos de estos objetos. Los objetos pueden ser definidos por el
sistema (objetos definidos por el sistema) o por el usuario (objetos definidos por el
usuario).

Una base de datos relacional particionada es una base de datos relacional cuyos
datos se gestionan repartidos en mltiples particiones de base de datos. Esta
separacin de los datos entre particiones de base de datos es transparente para los
usuarios de la mayora de sentencias de SQL. Sin embargo, algunas sentencias DLL
(lenguaje de definicin de datos) tienen en cuenta la informacin de las particiones
de base de datos (por ejemplo, CREATE DATABASE PARTITION GROUP). El
lenguaje de definicin de datos es el subconjunto de sentencias de SQL que se
utilizan para describir las relaciones de los datos de una base de datos.

Una base de datos federada es una base de datos relacional cuyos datos estn
almacenados en varias fuentes de datos (tales como bases de datos relacionales
separadas). Los datos son tratados como si pertenecieran a una sola gran base de
datos y se pueden acceder mediante las consultas SQL normales. Los cambios en
los datos se pueden dirigir explcitamente hacia la fuente datos apropiada.

Lenguaje de consulta estructurada (SQL)


SQL es un lenguaje estandarizado que sirve para definir y manipular los datos de
una base de datos relacional. De acuerdo con el modelo relacional de datos, la base
de datos se crea como un conjunto de tablas, las relaciones se representan
mediante valores en las tablas y los datos se recuperan especificando una tabla de
resultados que puede derivarse de una o ms tablas base.

Las sentencias de SQL las ejecuta un gestor de bases de datos. Una de las
funciones del gestor de bases de datos es transformar la especificacin de una tabla
resultante en una secuencia de operaciones internas que optimicen la recuperacin
de los datos. Esta transformacin se produce en dos fases: preparacin y
vinculacin.

Todas las sentencias de SQL ejecutables deben prepararse antes de su ejecucin. El


resultado de esta preparacin es el formato operativo o ejecutable de la sentencia.
El mtodo de preparacin de una sentencia de SQL y la persistencia de su formato
operativo diferencian SQL esttico de SQL dinmico.

Copyright IBM Corp. 1993, 2006 1


Consultas y expresiones de tabla

Consultas y expresiones de tabla


Una consulta es un componente de determinadas sentencias SQL; especifica una
tabla de resultados (temporal).

Una expresin de tabla crea una tabla de resultados temporal a partir de una
consulta sencilla. Las clusulas definen mejor la tabla de resultados. Por ejemplo,
puede utilizar una expresin de tabla como una consulta para seleccionar todos los
directores de varios departamentos, que deben tener una experiencia laboral de
ms de 15 aos y que deben estar ubicados en la oficina de Nueva York.

Una expresin de tabla comn es como una vista temporal dentro de una consulta
compleja. Se puede hacer referencia a la misma en otros puntos de la consulta y se
puede utilizar en lugar de una vista. Cada uso de una expresin de tabla comn
dentro de una consulta compleja comparte la misma vista temporal.

El uso recurrente de una expresin de tabla comn dentro de una consulta se


puede utilizar para dar soporte a aplicaciones como sistemas de reservar de lneas
areas, generadores de material de envo (BOM) y planificacin de red.

Informacin relacionada:
v Sentencia select en la pgina 574
v Consultas de SQL en la pgina 529

Interfaz de nivel de llamada (CLI) de DB2 y Open Database


Connectivity (ODBC)
La interfaz de nivel de llamada de DB2 es una interfaz de programacin de
aplicaciones que proporciona funciones para que los programas de aplicacin
procesen las sentencias de SQL dinmico. Los programas CLI tambin se pueden
compilar utilizando el Software Developers Kit de Open Database Connectivity
(suministrado por Microsoft u otro proveedor), que permite acceder a fuentes de
datos ODBC. A diferencia del SQL interno, esta interfaz no requiere
precompilacin. Las aplicaciones pueden ejecutarse en distintas bases de datos sin
necesidad de volver a compilarlas en cada una de estas bases de datos. Las
aplicaciones utilizan llamadas a procedimientos en tiempo de ejecucin para
conectarse a bases de datos, emitir sentencias de SQL y recuperar datos e
informacin de estado.

La interfaz CLI de DB2 proporciona muchas caractersticas que no estn


disponibles en SQL interno. Por ejemplo:
v La CLI proporciona llamadas de funcin que soportan una forma de consultar
catlogos de bases de datos que es coherente en toda la familia DB2. Esto reduce
la necesidad de escribir consultas de catlogo que deban adaptarse a servidores
de bases de datos concretos.
v La CLI proporciona la capacidad de desplazarse con un cursor de estas maneras:
Hacia adelante, una o ms filas
Hacia atrs, una o ms filas
Hacia adelante desde la primera fila, una o ms filas
Hacia atrs desde la ltima fila, una o ms filas
Desde una posicin en el cursor almacenada previamente.

2 Consulta de SQL - Volumen 1


Interfaz de nivel de llamada de DB2 (CLI) y Open Database Connectivity (ODBC)

v Los procedimientos almacenados llamados desde programas de aplicacin que


se hayan escrito con la CLI pueden devolver conjuntos resultantes a esos
programas.

Programas de conectividad de bases de datos Java (JDBC) y SQL


incorporado para Java (SQLJ)
DB2 implementa dos API de programacin Java basadas en estndares: JDBC
(Conectividad de bases de datos Java) y SQLJ (SQL incorporado para Java). Se
pueden utilizar las dos para crear aplicaciones y applets Java que acceden a DB2:
v Las llamadas JDBC se convierten en llamadas CLI de DB2 a travs de mtodos
nativos Java. Las peticiones JDBC fluyen del DB2 cliente a travs de la CLI de
DB2 hasta el servidor DB2. JDBC no puede utilizar SQL esttico.
v Las aplicaciones SQLJ utilizan JDBC como base para tareas como conectarse a
bases de datos y manejar errores de SQL, pero tambin pueden contener
sentencias de SQL esttico intercaladas en los archivos fuente SQLJ. Un archivo
fuente SQLJ debe convertirse con el conversor SQLJ para que se pueda compilar
el cdigo fuente Java resultante.

Esquemas
Un esquema es un conjunto de objetos con nombre que proporciona una forma de
agrupar los objetos lgicamente. Tambin es un calificador de nombres que
proporciona una forma de utilizar el mismo nombre natural para varios objetos y
de evitar referencias ambiguas a esos objetos; por ejemplo, los nombres de
esquema INTERNAL y EXTERNAL facilitan la distincin de dos tablas SALES
diferentes (INTERNAL.SALES, EXTERNAL.SALES).

Adems, los esquemas permiten que varias aplicaciones almacenen datos en una
sola base de datos sin encontrarse con colisiones de espacios de nombres.

Un esquema es distinto de un esquema XML , y no debe confundirse con ste, que


es un estndar que describe la estructura y valida el contenido de documentos
XML.

Un esquema puede contener tablas, vistas, apodos, activadores, funciones,


paquetes y otros objetos. Un esquema es un objeto de base de datos. Se crea
explcitamente utilizando la sentencia CREATE SCHEMA con el usuario actual o
un ID de autorizacin especificado registrado como propietario del esquema.
Tambin se puede crear implcitamente cuando se crea otro objeto, si el usuario
tiene la autorizacin IMPLICIT_SCHEMA sobre la base de datos.

Un nombre de esquema se utiliza como la parte ms a la izquierda de las dos partes


del nombre de objeto. Si el objeto se califica especficamente con un nombre de
esquema al crearse, se asigna el objeto a dicho esquema. Si no se especifica ningn
nombre de esquema al crear el objeto, se utiliza el nombre de esquema por
omisin.

Por ejemplo, un usuario con autorizacin DBADM crea un esquema llamado C


para el usuario A:
CREATE SCHEMA C AUTHORIZATION A

Captulo 1. Conceptos 3
Esquemas

El usuario A puede emitir la siguiente sentencia para crear una tabla llamada X en
el esquema C (siempre que el usuario A cuente con la autorizacin CREATETAB
sobre la base de datos:
CREATE TABLE C.X (COL1 INT)

Algunos nombres de esquema estn reservados. Por ejemplo, las funciones


incorporadas pertenecen al esquema SYSIBM y las funciones preinstaladas
definidas por el usuario pertenecen al esquema SYSFUN.

Cuando se crea una base de datos, todos los usuarios tienen la autorizacin
IMPLICIT_SCHEMA. Esto permite a cualquier usuario crear objetos en cualquier
esquema que an no exista. Un esquema creado implcitamente permite que
cualquier usuario cree otros objetos en este esquema. La posibilidad de crear alias,
tipos diferenciados, funciones y activadores se ampla a los esquemas creados
implcitamente. Los privilegios por omisin de un esquema creado implcitamente
proporcionan compatibilidad con las versiones anteriores.

Si se revoca la autorizacin IMPLICIT_SCHEMA de PUBLIC, los esquemas se


pueden crear explcitamente utilizando la sentencia CREATE SCHEMA o los
usuarios (por ejemplo, los que tienen autorizacin DBADM) a los que se otorga la
autorizacin IMPLICIT_SCHEMA pueden crearlos implcitamente. Aunque la
revocacin de la autorizacin IMPLICIT_SCHEMA de PUBLIC incrementa el
control sobre la utilizacin de los nombres de esquema, tambin puede producir
errores de autorizacin cuando aplicaciones existentes intentan crear objetos.

Los esquemas tambin tienen privilegios, que permiten al propietario del esquema
controlar qu usuarios tienen el privilegio de crear, modificar copiar y eliminar
objetos del esquema. Esto proporciona una forma de controlar la manipulacin de
un subconjunto de objetos de la base de datos. A un propietario de esquema se le
dan inicialmente todos estos privilegios en el esquema, con la posibilidad de
otorgarlos a otros usuarios. Un esquema creado implcitamente es de propiedad
del sistema y a todos los usuarios se les proporciona inicialmente el privilegio de
crear objetos en dicho esquema. Un usuario con autorizacin SYSADM o DBADM
puede cambiar los privilegios que poseen los usuarios en cualquier esquema. Por
lo tanto, se puede controlar el acceso para crear, modificar, copiar y eliminar
objetos en cualquier esquema (incluso uno creado implcitamente).

Conceptos relacionados:
v Grouping objects by schema en Administration Guide: Implementation
v Schema privileges en Administration Guide: Implementation

Tareas relacionadas:
v Creating a schema en Administration Guide: Implementation

Informacin relacionada:
v Apndice G, Nombres de esquema reservados y palabras reservadas, en la
pgina 827

Tablas
Las tablas son estructuras lgicas mantenidas por el gestor de bases de datos. Las
tablas estn formadas por columnas y filas. Las filas de una tabla no estn
necesariamente ordenadas (el orden lo determina el programa de aplicacin). En la
interseccin de cada columna con una fila hay un elemento de datos especfico

4 Consulta de SQL - Volumen 1


Tablas

denominado valor. Una columna es un conjunto de valores del mismo tipo o de uno
de sus subtipos. Una fila es una secuencia de valores ordenados de forma que el
valor n sea el valor de la columna n de la tabla.

Una tabla base se crea con la sentencia CREATE TABLE y se utiliza para conservar
los datos habituales de los usuarios. Una tabla resultante es un conjunto de filas que
el gestor de bases de datos selecciona o genera a partir de una o varias tablas base
para satisfacer una consulta.

Una tabla de resumen es una tabla definida por una consulta que se utiliza tambin
para determinar los datos de la tabla. Las tablas de resumen se pueden utilizar
para mejorar el rendimiento de las consultas. Si el gestor de bases de datos
determina que se puede resolver una parte de una consulta utilizando una tabla de
resumen, el gestor de bases de datos puede volver a escribir la consulta para
utilizar la tabla de resumen. Esta decisin se basa en valores de configuracin de la
base de datos como, por ejemplo, los registros especiales CURRENT REFRESH
AGE y CURRENT QUERY OPTIMIZATION.

Una tabla puede definir el tipo de datos de cada columna por separado o basar los
tipos en los atributos de un tipo estructurado definido por el usuario. Esto se
denomina una tabla con tipo. Un tipo estructurado definido por el usuario puede
formar parte de una jerarqua de tipos. Un subtipo hereda los atributos de su
supertipo. De manera similar, una tabla con tipo puede formar parte de una
jerarqua de tablas. Una subtabla hereda las columnas de su supertabla. Tenga en
cuenta que el trmino subtipo se aplica a un tipo estructurado definido por el
usuario y a todos los tipos estructurados definidos por el usuario que estn por
debajo del mismo en la jerarqua de tipos. Un subtipo correspondiente de un tipo
estructurado T es un tipo estructurado por debajo de T en la jerarqua de tipos. De
forma similar, el trmino subtabla se aplica a una tabla con tipo y a todas las tablas
con tipo que estn por debajo de la misma en la jerarqua de tablas. Una subtabla
correspondiente de una tabla T es una tabla que est por debajo de T en la jerarqua
de tablas.

Una tabla temporal declarada se crea mediante una sentencia DECLARE GLOBAL
TEMPORARY TABLE y se utiliza para contener datos temporales para una
aplicacin individual. Esta tabla se elimina implcitamente cuando la aplicacin se
desconecta de la base de datos.

Claves
Una clave es un conjunto de columnas que se pueden utilizar para identificar o
para acceder a una fila o filas determinadas. La clave viene identificada en la
descripcin de una tabla, ndice o restriccin de referencia. Una misma columna
puede formar parte de ms de una clave.

Una clave compuesta de ms de una columna se denomina una clave compuesta. En


una tabla con una clave compuesta, el orden de las columnas dentro de la clave
compuesta no est restringido por el orden de las columnas en la tabla. El valor de
una clave compuesta indica un valor compuesto. As, por ejemplo la regla el valor
de la clave fornea debe ser igual al valor de la clave primaria significa que cada
componente del valor de la clave fornea debe ser igual al componente del valor
correspondiente de la clave primaria.

Una clave de unicidad es una clave restringida de manera que no puede tener dos
valores iguales. Las columnas de una clave de unicidad no pueden contener

Captulo 1. Conceptos 5
Claves

valores nulos. El gestor de bases de datos impone la restriccin durante la


ejecucin de cualquier operacin que cambie los valores de los datos como, por
ejemplo, INSERT o UPDATE. El mecanismo utilizado para imponer la restriccin
se denomina ndice de unicidad. De este modo, cada clave de unicidad es una clave
de un ndice de unicidad. Tambin se dice que dichos ndices tienen el atributo
UNIQUE.

Una clave primaria es un caso especial de clave de unicidad. Una tabla no puede
tener ms de una clave primaria.

Una clave fornea es una clave que se especifica en la definicin de una restriccin
de referencia.

Una clave de distribucin es una clave que forma parte de la definicin de una tabla
de una base de datos particionada. La clave de distribucin se utiliza para
determinar la particin de base de datos en la que se almacena la fila de datos. Si
se define una clave de distribucin, las claves exclusivas y las claves primarias
debern incluir las mismas columnas que la clave de distribucin, pero pueden
tener columnas adicionales. Una tabla no puede tener ms de una clave de
distribucin.

Una clave de particionamiento de tabla es un conjunto ordenado de una o varias


columnas de una tabla. Los valores de las columnas de la clave de
particionamiento de tabla se utilizan para determinar la particin de datos a la que
pertenece cada fila de la tabla.

Restricciones
Una restriccin es una regla que impone el gestor de bases de datos.

Existen cuatro tipos de restricciones:


v Una restriccin de unicidad es una regla que prohbe los valores duplicados en
una o varias columnas de una tabla. Las restricciones de unicidad a las que se
da soporte son la clave de unicidad y la clave primaria. Por ejemplo, se puede
definir una restriccin de unicidad en el identificador de proveedor de la tabla
de proveedores para asegurarse de que no se da el mismo identificador de
proveedor a dos proveedores.
v Una restriccin de referencia es una regla lgica acerca de los valores de una o
varias columnas de una o varias tablas. Por ejemplo, un conjunto de tablas que
comparte informacin sobre los proveedores de una empresa. Ocasionalmente, el
nombre de un proveedor cambia. Puede definir una restriccin de referencia que
indique que el ID del proveedor de una tabla debe coincidir con un ID de
proveedor de la informacin de proveedor. Esta restriccin impide que se
realicen operaciones de insercin, actualizacin o supresin que, de lo contrario,
haran que faltara informacin del proveedor.
v Una restriccin de comprobacin de tabla establece restricciones en los datos que se
aaden a una tabla especfica. Por ejemplo, una restriccin de comprobacin de
tabla puede garantizar que el nivel salarial de un empleado no sea inferior a
20.000 euros siempre que se aadan o se actualicen datos salariales en una tabla
que contiene informacin de personal.
v Una restriccin informativa es una regla que el compilador de SQL puede utilizar
pero que no viene impuesta por el gestor de bases de datos.

6 Consulta de SQL - Volumen 1


Restricciones

Las restricciones de referencia y de comprobacin de tabla pueden activarse y


desactivarse. Generalmente es una buena idea, por ejemplo, desactivar la
imposicin de una restriccin cuando se cargan grandes cantidades de datos en
una base de datos.

Restricciones de unicidad
Una restriccin de unicidad es la regla que establece que los valores de una clave
slo son vlidos si son exclusivos en una tabla. Las restricciones de unicidad son
opcionales y pueden definirse en las sentencias CREATE TABLE o ALTER TABLE
utilizando la clusula PRIMARY KEY o la clusula UNIQUE. Las columnas
especificadas en una restriccin de unicidad deben definirse como NOT NULL. El
gestor de bases de datos utiliza un ndice de unicidad para forzar la unicidad de la
clave durante los cambios en las columnas de la restriccin de unicidad.

Una tabla puede tener un nmero arbitrario de restricciones de unicidad y como


mximo una restriccin de unicidad definida como la clave primaria. Una tabla no
puede tener ms de una restriccin de unicidad en el mismo conjunto de
columnas.

Una restriccin de unicidad a la que hace referencia la clave fornea de una


restriccin de referencia se denomina clave padre.

Cuando se define una restriccin de unicidad en una sentencia CREATE TABLE, el


gestor de bases de datos crea automticamente un ndice de unicidad y lo designa
como un ndice principal o de unicidad necesario para el sistema.

Cuando se define una restriccin de unicidad en una sentencia ALTER TABLE y


existe un ndice en las mismas columnas, dicho ndice se designa como de
unicidad y necesario para el sistema. Si no existe tal ndice, el gestor de bases de
datos crea automticamente el ndice de unicidad y lo designa como un ndice
principal o de unicidad necesario para el sistema.

Observe que existe una distincin entre la definicin de una restriccin de unicidad
y la creacin de un ndice de unicidad. Aunque ambos impongan la exclusividad,
un ndice de unicidad permite la existencia de columnas que pueden contener
valores nulos y generalmente no puede utilizarse como una clave padre.

Restricciones de referencia
La integridad de referencia es el estado de una base de datos en la que todos los
valores de todas las claves forneas son vlidos. Una clave fornea es una columna
o un conjunto de columnas de una tabla cuyos valores deben coincidir
obligatoriamente con, como mnimo, un valor de una clave primaria o de una
clave de unicidad de una fila de su tabla padre. Una restriccin de referencia es la
regla que establece que los valores de la clave fornea slo son vlidos si se
cumple una de las condiciones siguientes:
v Aparecen como valores de una clave padre.
v Algn componente de la clave fornea es nulo.

La tabla que contiene la clave padre se denomina la tabla padre de la restriccin de


referencia y se dice que la tabla que contiene la clave fornea es dependiente de
dicha tabla.

Las restricciones de referencia son opcionales y pueden definirse en la sentencia


CREATE TABLE o en la sentencia ALTER TABLE. Las restricciones de referencia

Captulo 1. Conceptos 7
Restricciones

las impone el gestor de bases de datos durante la ejecucin de las sentencias


INSERT, UPDATE, DELETE, ALTER TABLE, ADD CONSTRAINT y SET
INTEGRITY.

Las restricciones de referencia con una regla de supresin o una regla de


actualizacin de RESTRICT se imponen antes que el resto de restricciones de
referencia. Las restricciones de referencia con una regla de supresin o una regla de
actualizacin de NO ACTION se comportan igual que RESTRICT en la mayora de
casos.

Tenga en cuenta que es posible combinar las restricciones de referencia, las


restricciones de comprobacin y los activadores.

Las reglas de integridad de referencia implican los conceptos y terminologa


siguientes:
Clave padre
Clave primaria o clave de unicidad de una restriccin de referencia.
Fila padre
Fila que tiene, como mnimo, una fila dependiente.
Tabla padre
Tabla que contiene la clave padre de una restriccin de referencia. Una
tabla puede definirse como padre en un nmero arbitrario de restricciones
de referencia. Una tabla que es padre en una restriccin de referencia
tambin puede ser dependiente en una restriccin de referencia.
Tabla dependiente
Tabla que contiene como mnimo una restriccin de referencia en su
definicin. Una tabla puede definirse como dependiente en un nmero
arbitrario de restricciones de referencia. Una tabla que es dependiente en
una restriccin de referencia tambin puede ser padre en una restriccin de
referencia.
Tabla descendiente
Una tabla es descendiente de la tabla T si es dependiente de T o
descendiente de una tabla dependiente de T.
Fila dependiente
Fila que tiene, como mnimo, una fila padre.
Fila descendiente
Una fila es descendiente de la fila r si es dependiente de r o descendiente
de una dependiente de r.
Ciclo de referencia
Conjunto de restricciones de referencia en el que cada tabla del conjunto es
descendiente de s misma.
Tabla autorreferente
Tabla que es padre y dependiente en la misma restriccin de referencia. La
restriccin se denomina restriccin de autorreferencia.
Fila de autorreferencia
Fila que es padre de s misma.

Regla de insercin
La regla de insercin de una restriccin de referencia es la que establece que un
valor de insercin que no sea nulo de la clave fornea debe coincidir con algn

8 Consulta de SQL - Volumen 1


Restricciones

valor de la clave padre de la tabla padre. El valor de la clave fornea compuesta


ser nulo si algn componente del valor es nulo. Es una regla implcita cuando se
especifica una clave fornea.

Regla de actualizacin
La regla de actualizacin de una restriccin de referencia se especifica al definir la
restriccin de referencia. Las opciones son NO ACTION y RESTRICT. La regla de
actualizacin se aplica al actualizar una fila de la tabla padre o una fila de la tabla
dependiente.

En el caso de una fila padre, cuando se actualiza un valor de una columna de la


clave padre, se aplican las reglas siguientes:
v Si cualquier fila de la tabla dependiente coincide con el valor original de la
clave, se rechaza la actualizacin cuando la regla de actualizacin es RESTRICT.
v Si cualquier fila de la tabla dependiente no tiene una clave padre
correspondiente cuando se completa la sentencia de actualizacin (excluyendo
los activadores AFTER), se rechaza la actualizacin cuando la regla de
actualizacin es NO ACTION.

En el caso de una fila dependiente, la regla de actualizacin NO ACTION es


implcita cuando se especifica una clave fornea. NO ACTION significa que un
valor de actualizacin que no sea nulo de una clave fornea debe coincidir con
algn valor de la clave padre de la tabla padre cuando se complete la sentencia de
actualizacin.

El valor de la clave fornea compuesta ser nulo si algn componente del valor es
nulo.

Regla de supresin
La regla de supresin de una restriccin de referencia se especifica al definir la
restriccin de referencia. Las opciones son NO ACTION, RESTRICT, CASCADE o
SET NULL. SET NULL slo puede especificarse si hay alguna columna de la clave
fornea que permita valores nulos.

La regla de supresin de una restriccin de referencia se aplica al suprimir una fila


de la tabla padre. Para ser ms exactos, esta regla se aplica cuando una fila de la
tabla padre es el objeto de una operacin de supresin o de supresin propagada
(definida a continuacin) y dicha fila tiene dependientes en la tabla dependiente de
la restriccin de referencia. Examinemos un ejemplo donde P es la tabla padre, D
es la tabla dependiente y p es una fila padre que es el objeto de una operacin de
supresin o de supresin propagada. La regla de supresin funciona del modo
siguiente:
v Con RESTRICT o NO ACTION, se produce un error y no se suprime ninguna
fila.
v Con CASCADE, la operacin de supresin se propaga a los dependientes de p
en la tabla D.
v Con SET NULL, cada columna con posibilidad de nulos de la clave fornea de
cada dependiente de p en la tabla D se establece en nulo.

Cada restriccin de referencia en la que una tabla sea padre tiene su propia regla
de supresin, y todas las reglas de supresin aplicables se utilizan para determinar
el resultado de la operacin de supresin. As, una fila no puede suprimirse si
tiene dependientes en una restriccin de referencia con una regla de supresin
RESTRICT o NO ACTION o la supresin se propaga en cascada a cualquiera de

Captulo 1. Conceptos 9
Restricciones

sus descendientes que sean dependientes en una restriccin de referencia con la


regla de supresin RESTRICT o NO ACTION.

La supresin de una fila de la tabla padre P implica a otras tablas y puede afectar
a las filas de dichas tablas:
v Si la tabla D es dependiente de P y la regla de supresin es RESTRICT o NO
ACTION, D se implicar en la operacin pero no se ver afectada por la misma.
v Si D es dependiente de P y la regla de supresin es SET NULL, D estar
implicada en la operacin y las filas de D podrn actualizarse durante la
operacin.
v Si D es dependiente de P y la regla de supresin es CASCADE, D estar
implicada en la operacin y las filas de D podrn suprimirse durante la
operacin.
Si se suprimen filas de D, se dice que la operacin de supresin en P se propaga
a D. Si D es tambin una tabla padre, las acciones descritas en esta lista se
aplican a su vez a los elementos dependientes de D.

Se dice que cualquier tabla que participe en una operacin de supresin de P est
suprimida-conectada a P. As, una tabla est suprimida-conectada a la tabla P si
depende de P o de una tabla en la que se realicen supresiones de P en cascada.

Las restricciones siguientes son aplicables a las relaciones conectadas por


supresin:
v Cuando una tabla est conectada por supresin con sigo mismo en un ciclo
referencial de ms de una tabla, el ciclo no debe contener una regla de supresin
RESTRICT o SET NULL.
v Una tabla no debe ser una tabla dependiente en una relacin de tipo CASCADE
(con referencia a s misma o a otra tabla) y tener una relacin de referencia a s
misma con una regla de supresin RESTRICT o SET NULL.
v Cuando una tabla est conectada por supresin con otra tabla a travs de varias
relaciones y stas poseen claves forneas de solapamiento, dichas relaciones
deben tener la misma regla de supresin y ninguna de stas puede ser SET
NULL.
v Cuando una tabla se suprime-conecta a otra tabla a travs de varias relaciones
en las que una de ellas se especifica con la regla de supresin SET NULL, la
definicin de la clave fornea de esta relacin no deber contener ninguna clave
de distribucin ni ninguna columna de clave MDC.
v Cuando dos tablas estn conectadas por supresin con la misma tabla a travs
de relaciones de tipo CASCADE, las dos tablas no deben estar conectadas por
supresin entre s en caso de que las vas de acceso conectadas por supresin
terminen con la regla de supresin RESTRICT o SET NULL.

Restricciones de comprobacin de tabla


Una restriccin de comprobacin de tabla es una regla que especifica los valores
permitidos en una o varias columnas de cada fila de una tabla. Una restriccin es
opcional y puede definirse utilizando la sentencia CREATE TABLE o ALTER
TABLE. La especificacin de restricciones de comprobacin de tabla se realiza
mediante una forma restringida de condicin de bsqueda. Una de las restricciones
consiste en que un nombre de columna de una restriccin de comprobacin de
tabla de la tabla T debe identificar una columna de la tabla T.

Una tabla puede tener un nmero arbitrario de restricciones de comprobacin de


tabla. Una restriccin de comprobacin de tabla se impone aplicando su condicin

10 Consulta de SQL - Volumen 1


Restricciones

de bsqueda en cada fila que se inserte o actualice. Si el resultado de la condicin


de bsqueda es falso en cualquiera de las filas, se produce un error.

Cuando hay una o varias restricciones de comprobacin de tabla definidas en la


sentencia ALTER TABLE para una tabla en la que existen datos, stos se
comprueban con la nueva condicin antes de que finalice la sentencia ALTER
TABLE. La sentencia SET INTEGRITY puede utilizarse para poner la tabla en
estado de pendiente de establecer integridad, que permite que la sentencia ALTER
TABLE prosiga sin comprobar los datos.

Restricciones informativas
Una restriccin informativa es una regla que el compilador de SQL puede utilizar
para mejorar la va de acceso a los datos. Las restricciones informativas no vienen
impuestas por el gestor de bases de datos y no se utilizan para verificar los datos
de forma adicional. Simplemente se utilizan para mejorar el rendimiento de la
consulta.

Para definir una restriccin referencial o de comprobacin de tabla, debe utilizarse


la sentencia CREATE TABLE o ALTER TABLE, especificando los atributos de
restriccin que determinen si el gestor de bases de datos debe o no debe imponer
la restriccin y si la restriccin debe o no debe utilizarse para la optimizacin de
las consultas.

Informacin relacionada:
v Apndice H, Interaccin de los activadores con las restricciones, en la pgina
831
v Sentencia SET INTEGRITY en Consulta de SQL, Volumen 2

ndices
Un ndice es un conjunto ordenado de punteros para filas de una tabla base. Cada
ndice se basa en los valores de los datos de una o varias columnas de la tabla. Un
ndice es un objeto que est separado de los datos de la tabla. Cuando se crea un
ndice, el gestor de bases de datos crea este objeto y lo mantiene automticamente.

El gestor de bases de datos utiliza los ndices para:


v Mejorar el rendimiento. En la mayora de los casos, el acceso a los datos es ms
rpido con un ndice. Aunque no puede crearse un ndice para una vista, un
ndice creado para la tabla en la que se basa una vista puede mejorar a veces el
rendimiento de las operaciones en esta vista.
v Asegurar la exclusividad. Una tabla con un ndice de unicidad no puede tener
filas con claves idnticas.

Activadores
Un activador define un conjunto de acciones que se ejecutan en respuesta a una
operacin de insercin, actualizacin o supresin en una tabla determinada.
Cuando se ejecuta una de estas operaciones de SQL, se dice que el activador se ha
activado.

Los activadores son opcionales y se definen mediante la sentencia CREATE


TRIGGER.

Captulo 1. Conceptos 11
Activadores

Los activadores pueden utilizarse, junto con las restricciones de referencia y las
restricciones de comprobacin, para imponer las reglas de integridad de los datos.
Los activadores tambin pueden utilizarse para provocar actualizaciones en otras
tablas, para transformar o generar valores automticamente en las filas insertadas o
actualizadas, o para invocar funciones que realicen tareas como la de emitir alertas.

Los activadores son un mecanismo til para definir e imponer reglas empresariales
transicionales, que son reglas que incluyen diferentes estados de los datos (por
ejemplo, un salario que no se puede aumentar ms del 10 por ciento).

La utilizacin de activadores proporciona la lgica que impone las reglas


empresariales en la base de datos. Esto significa que las aplicaciones no son
responsables de imponer dichas reglas. La lgica centralizada que se imponen en
todas las tablas facilita el mantenimiento, porque no se necesitan realizar cambios
en los programas de aplicacin cuando cambia la lgica.

Los elementos siguientes se especifican al crear un activador:


v La tabla sujeto especifica la tabla para la que se define el activador.
v El suceso activador define una operacin de SQL especfica que modifica la tabla
sujeto. El suceso puede ser una operacin de insercin, actualizacin o
supresin.
v La hora de activacin del activador especifica si el activador debera activarse antes
o despus de que se produzca el suceso activador.

La sentencia que hace que se active un activador incluye un conjunto de filas


afectadas. stas son las filas de la tabla sujeto que se estn insertando, actualizando
o suprimiendo. La granularidad del activador especifica si las acciones del activador
se realizan una vez para la sentencia o una vez para cada una de las filas
afectadas.

La accin activada est formada por una condicin de bsqueda opcional y un


conjunto de sentencias de SQL que se ejecutan siempre que se activa el activador.
Las sentencias de SQL slo se ejecutan si la condicin de bsqueda se evala como
verdadera. Si la hora de activacin del activador es anterior al suceso activador, las
acciones activadas pueden incluir sentencias que seleccionen, establezcan variables
de transicin y sealen estados de SQL. Si la hora de activacin del activador es
posterior al suceso activador, las acciones activadas pueden incluir sentencias que
seleccionen, inserten, actualicen, supriman o sealen estados de SQL.

La accin activada puede hacer referencia a los valores del conjunto de filas
afectadas utilizando variables de transicin. Las variables de transicin utilizan los
nombres de las columnas de la tabla sujeto, calificados por un nombre especificado
que identifica si la referencia es al valor anterior (antes de la actualizacin) o al
valor nuevo (despus de la actualizacin). El nuevo valor tambin se puede
cambiar utilizando la sentencia variable SET en activadores anteriores, de insercin
o actualizacin.

Otra forma de hacer referencia a los valores del conjunto de filas afectadas
consisten en utilizar tablas de transicin. Las tablas de transicin tambin utilizan los
nombres de las columnas de la tabla sujeto pero especifican un nombre para
permitir que el conjunto completo de filas afectadas se trate como una tabla. Las
tablas de transicin slo se pueden utilizar en activadores posteriores y es posible
definir tablas de transicin independientes para los valores anteriores y los nuevos.

12 Consulta de SQL - Volumen 1


Activadores

Se pueden especificar varios activadores para una combinacin de tabla, suceso o


momento de activacin. El orden en el que se activan los activadores es el mismo
que el orden en que se han creado. Por consiguiente, el activador creado ms
recientemente es el ltimo activador que se activa.

La activacin de un activador puede provocar una cascada de activadores, que es el


resultado de la activacin de un activador que ejecuta sentencias de SQL que
provocan la activacin de otros activadores o incluso del mismo activador otra vez.
Las acciones activadas tambin pueden causar actualizaciones como resultado de la
aplicacin de las normas de integridad de referencia para las supresiones que, a su
vez, pueden provocar la activacin de activadores adicionales. Con una cascada de
activadores, se puede activar una cadena de activadores y reglas de supresin de
integridad de referencia, lo que puede producir un cambio significativo en la base
de datos como resultado de una sola sentencia INSERT, UPDATE o DELETE.

Cuando varios activadores tienen acciones de insercin, actualizacin o supresin


en relacin con el mismo objeto, las tablas temporales se utilizan para evitar
conflictos de acceso, lo que puede repercutir visiblemente sobre el rendimiento, en
concreto en los entornos de bases de datos particionadas.

Conceptos relacionados:
v Activadores en el desarrollo de aplicaciones en Desarrollo de SQL y rutinas
externas

Tareas relacionadas:
v Creating triggers en Administration Guide: Implementation

Informacin relacionada:
v Apndice H, Interaccin de los activadores con las restricciones, en la pgina
831

Vistas
Una vista proporciona una manera distinta de ver los datos de una o varias tablas;
es una especificacin con nombre de una tabla resultante. La especificacin es una
sentencia SELECT que se ejecuta siempre que se hace referencia a la vista en una
sentencia de SQL. Una vista tiene columnas y filas igual que una tabla base. Todas
las vistas se pueden utilizar como si fueran tablas base para efectuar una
recuperacin. Si una vista pueda utilizarse o no en una operacin de insercin,
actualizacin o supresin depender de su definicin.

Es posible utilizar las vistas para controlar el acceso a datos sensibles, porque las
vistas permiten que muchos usuarios vean presentaciones distintas de los mismos
datos. Por ejemplo, es posible que varios usuarios accedan a una tabla de datos
sobre los empleados. Un director ve los datos sobre sus empleados pero no de los
empleados de otro departamento. Un oficial de reclutamiento ve las fechas de
contratacin de todos los empleados, pero no sus salarios; un oficial de finanzas ve
los salarios, pero no las fechas de contratacin. Cada uno de estos usuarios trabaja
con una vista derivada de la tabla base. Cada vista se parece a una tabla y tiene
nombre propio.

Cuando la columna de una vista se deriva directamente de la columna de una


tabla base, esa columna de vista hereda las restricciones aplicables a la columna de
la tabla base. Por ejemplo, si una vista incluye una clave fornea de su tabla base,
las operaciones de insercin y actualizacin que utilicen dicha vista estn sujetas a
Captulo 1. Conceptos 13
Vistas

las mismas restricciones de referencia a las que lo est la tabla base. Asimismo, si
la tabla base de una vista es una tabla padre, las operaciones de supresin y
actualizacin que utilicen dicha vista estarn sujetas a las mismas reglas que las
operaciones de supresin y actualizacin de la tabla base.

Una vista puede obtener el tipo de datos de cada columna de la tabla resultante o
basar los tipos en los atributos de un tipo estructurado definido por el usuario.
Esta vista se denomina vista con tipo. De manera similar a una tabla con tipo, una
vista con tipo puede formar parte de una jerarqua de vistas. Una subvista hereda
las columnas de su supervista. El trmino subvista se aplica a una vista con tipo y a
todas las vistas con tipo que estn por debajo de la misma en la jerarqua de vistas.
Una subvista correspondiente de una vista V es una vista por debajo de V en la
jerarqua de vistas con tipo.

Una vista puede quedar no operativa (por ejemplo, si se elimina la tabla base); si
ocurre esto, la vista ya no estar disponible para operaciones de SQL.

Seudnimos
Un seudnimo es un nombre alternativo para una tabla o una vista. Se puede
utilizar para hacer referencia a una tabla o vista en aquellos casos en los que pueda
hacerse referencia a una tabla o vista existente. Un seudnimo no puede utilizarse
en todos los contextos; por ejemplo, no puede utilizarse en la condicin de
comprobacin de una restriccin de comprobacin. Un seudnimo no puede hacer
referencia a una tabla temporal declarada.

Al igual que las tablas o las vistas, un seudnimo puede crearse, eliminarse y tener
comentarios asociados. Sin embargo, a diferencia de las tablas, los seudnimos
pueden hacerse referencia entre s en un proceso llamado encadenamiento. Los
seudnimos son nombres de referencia pblica, por lo que no es necesaria ninguna
autorizacin ni privilegio especial para utilizarlos. Sin embargo, el acceso a la tabla
o a la vista a la que un seudnimo hace referencia s que requiere la autorizacin
asociada con estos objetos.

Hay otros tipos de seudnimos como, por ejemplo, los seudnimos de base de
datos y de red. Tambin se pueden crear seudnimos para apodos que hagan
referencia a vistas o tablas de datos ubicadas en sistemas federados.

Paquetes
Un paquete es un objeto generado durante la preparacin de un programa que
contiene todas las secciones en un nico archivo fuente. Una seccin es el formato
compilado de una sentencia de SQL. Aunque cada seccin corresponde a una
sentencia, no cada sentencia no tiene una seccin. Las secciones creadas para SQL
esttico son comparables al formato vinculado u operativo de las sentencias de
SQL. Las secciones creadas para SQL dinmico son comparables a las estructuras
de control de espacios reservados utilizadas en tiempo de ejecucin.

14 Consulta de SQL - Volumen 1


Privilegios, niveles de autorizacin y autorizaciones de bases de datos

Autorizaciones, privilegios y propiedad de objetos


Los usuarios (identificados mediante un ID de autorizacin) pueden ejecutar
satisfactoriamente sentencias SQL o XQuery nicamente en el caso de que tengan
la autorizacin para realizar la funcin especificada. Para crear una tabla, un
usuario debe tener autorizacin para crear tablas; para modificar una tabla, un
usuario debe tener autorizacin para modificar la tabla y as sucesivamente.

Hay dos formas de autorizacin, la autorizacin administrativa y los privilegios, que


se tratan a continuacin.

El gestor de bases de datos necesita que todos los usuarios estn especficamente
autorizados, ya sea implcita o explcitamente, para utilizar cada una de las
funciones de la base de datos necesarias para realizar una tarea especfica. Las
autorizaciones o los privilegios explcitos se otorgan al usuario (GRANTEETYPE de
U en los catlogos de bases de datos). Las autorizaciones o los privilegios implcitos
se otorgan a un grupo al que pertenece el usuario (GRANTEETYPE de G en los
catlogos de bases de datos).

Autorizacin administrativa:

La persona o personas con autorizacin de administrador se encargan de la tarea


de controlar el gestor de bases de datos y son responsables de la seguridad e
integridad de los datos. Las personas que tengan los niveles de autorizacin
administrativa de SYSADM y DBADM implcitamente tienen todos los privilegios
sobre todos los objetos excepto los objetos relativos a la seguridad de la base de
datos y el control de aquellos que tendrn acceso al gestor de base de datos y la
extensin de dicho acceso.

Los niveles de autorizacin proporcionan un mtodo para agrupar los privilegios y


las operaciones de mantenimiento y de programas de utilidad de nivel superior del
gestor de bases de datos. Las autorizaciones de bases de datos permiten a los usuarios
realizar actividades a nivel de la base de datos. Un usuario o grupo puede tener
una o varias de las autorizaciones siguientes:
v El nivel de autorizacin administrativa que opera a nivel de instancia, SYSADM
(administrador del sistema)
El nivel de autorizacin SYSADM proporciona control sobre todos los recursos
que el gestor de bases de datos crea y mantiene. El administrador del sistema
posee todas las autorizaciones DBADM, SYSCTRL, SYSMAINT y SYSMON,
adems de la autorizacin de otorgar y revocar la autorizacin DBADM.
El usuario que posee la autorizacin SYSADM es responsable de controlar el
gestor de bases de datos y de garantizar la seguridad y la integridad de los
datos. La autorizacin SYSADM proporciona la autorizacin DBADM implcita
en la base de datos pero no proporciona la autorizacin SECADM implcita en
una base de datos.
v Niveles de autorizacin administrativa que operan al nivel de la base de datos:
DBADM (administrador de la base de datos)
El nivel de autorizacin DBADM se aplica a nivel de bases de datos y
proporciona autorizacin para administrar una sola base de datos. Este
administrador de la base de datos posee los privilegios necesarios para crear
objetos, emitir mandatos de la base de datos y acceder a datos de las tablas.
El administrador de la base de datos tambin puede otorgar y revocar el
privilegio CONTROL y otros privilegios individuales.
SECADM (administrador de seguridad)
Captulo 1. Conceptos 15
Privilegios, niveles de autorizacin y autorizaciones de bases de datos

El nivel de autorizacin SECADM se aplica a nivel de bases de datos y


proporciona la autorizacin necesaria para crear y descartar los componentes
de etiqueta de seguridad, polticas de seguridad y etiquetas de seguridad
utilizados para proteger las tablas. Es asimismo la autorizacin necesaria para
otorgar y revocar el privilegio SETSESSIONUSER. Un usuario con
autorizacin SECADM puede transferir la propiedad de los objetos que no
posea. La autorizacin SECADM no posee el privilegio inherente de acceder a
los datos almacenados en tablas y no posee ningn otro privilegio inherente
adicional. Slo puede otorgarla un usuario que tenga la autorizacin
SYSADM. La autorizacin SECADM se puede otorgar a un usuario pero no
puede otorgar ni a un grupo ni a PUBLIC.
v Niveles de autorizacin de control del sistema que operan al nivel de la
instancia:
SYSCTRL (control del sistema)
El nivel de autorizacin SYSCTRL proporciona control sobre las operaciones
que afectan a los recursos del sistema. Por ejemplo, un usuario con
autorizacin SYSCTRL puede crear, actualizar, iniciar, detener o descartar una
base de datos. Este usuario tambin puede iniciar o detener una instancia
pero no acceder a los datos de las tablas. Los usuarios con autorizacin
SYSCTRL tambin poseen autorizacin SYSMON.
SYSMAINT (mantenimiento del sistema)
El nivel de autorizacin SYSMAINT proporciona la autorizacin necesaria
para realizar operaciones de mantenimiento en todas las bases de datos
asociadas a una instancia. Un usuario con autorizacin SYSMAINT puede
actualizar la configuracin de las bases de datos, realizar una copia de
seguridad de una base de datos o de un espacio de tablas, restaurar una bases
de datos existente y supervisar una base de datos. Al igual que SYSCTRL,
SYSMAINT no proporciona acceso a los datos de las tablas. Los usuarios con
autorizacin SYSMAINT tambin poseen autorizacin SYSMON.
v El nivel de autorizacin SYSMON (supervisor del sistema)
SYSMON proporciona la autorizacin necesaria para utilizar el supervisor del
sistema de bases de datos. Opera al nivel de instancia.
v Autorizaciones de bases de datos
Para realizar actividades como, por ejemplo, crear una tabla o una rutina, o para
cargar datos en una tabla, se necesitan autorizaciones especficas sobre las bases
de datos. Por ejemplo, la autorizacin de base de datos LOAD se necesita para
utilizar el programa de utilidad de carga para cargar datos en tablas (un usuario
debe tener asimismo el privilegio INSERT en la tabla).

La Figura 1 en la pgina 17 muestra la relacin entre las autorizaciones y su mbito


de control (para bases de datos, gestores de bases de datos).

16 Consulta de SQL - Volumen 1


Privilegios, niveles de autorizacin y autorizaciones de bases de datos

Niveles de autorizacin Instancia

SYSADM
CUSTOMER

SYSCTRL Autorizaciones de
bases de datos
SYSMAINT

SYSMON
EMPLOYEE

Autorizaciones de
bases de datos

Figura 1. Jerarqua de las autorizaciones

Privilegios:

Los privilegios son las actividades que se permite realizar a un usuario. Los
usuarios autorizados pueden crear objetos, tener acceso a los objetos de los que son
propietarios y pueden transmitir privilegios sobre sus propios objetos a otros
usuarios mediante la sentencia GRANT.

Los privilegios pueden otorgarse a usuarios individuales, a grupos o a PUBLIC.


PUBLIC es un grupo especial que consta de todos los usuarios, incluyendo los
futuros usuarios. Los usuarios que son miembros de un grupo indirectamente
sacarn partido a los privilegios otorgados al grupo, en los lugares en los que los
grupos estn soportados:

El privilegio CONTROL: La posesin del privilegio CONTROL sobre un objeto


permite a un usuario acceder a este objeto de la base de datos y otorgar privilegios
a otros usuarios sobre dicho objeto o revocarlos.

Nota: El privilegio CONTROL slo es aplicable a tablas, vistas, apodos, ndices y


paquetes.

Si un usuario distinto necesita el privilegio CONTROL sobre este objeto, un


usuario con autorizacin SYSADM o DBADM podr otorgarle el privilegio
CONTROL sobre dicho objeto. Aunque el privilegio CONTROL no puede revocarse
del propietario del objeto, el propietario del objeto puede cambiarse utilizando la
sentencia TRANSFER OWNERSHIP.

En algunas situaciones, el creador de un objeto obtiene el privilegio CONTROL


sobre el objeto de forma automtica.

Privilegios individuales: Es posible otorgar privilegios individuales que permitan a


un usuario llevar a cabo determinadas tareas sobre objetos concretos. Los usuarios

Captulo 1. Conceptos 17
Privilegios, niveles de autorizacin y autorizaciones de bases de datos

con autorizacin de administrador (SYSADM o DBADM) o el privilegio CONTROL


pueden otorgar privilegios a los usuarios y revocarlos.

Los privilegios individuales y las autorizaciones de bases de datos permiten una


funcin especfica pero no incluyen el derecho a otorgar los mismos privilegios o
autorizaciones a otros usuarios. El derecho a otorgar privilegios de tabla, vista,
esquema, paquete, rutina y secuencia a otros puede ampliarse a otros usuarios
mediante la opcin WITH GRANT en la sentencia GRANT. Sin embargo, la opcin
WITH GRANT no permite a la persona que otorga el privilegio revocar el
privilegio despus de otorgarlo. Es necesario poseer autorizacin SYSADM,
autorizacin DBADM o el privilegio CONTROL para revocar el privilegio.

Privilegios sobre objetos de un paquete o rutina: Cuando un usuario tenga el privilegio


de ejecutar un paquete o rutina, stos no necesitarn necesariamente privilegios
especficos sobre los objetos utilizados en el paquete o rutina. Si el paquete o rutina
contiene sentencias XQuery o SQL estticas, los privilegios del propietario del
paquete se utilizarn para dichas sentencias. Si el paquete o rutina contiene
sentencias XQuery o SQL dinmicas, el ID de autorizacin utilizado para la
comprobacin de privilegios depender del valor de la opcin de vinculacin
DYNAMICRULES del paquete que emita la sentencias de consulta dinmicas y de
si las sentencias se han emitido cuando el paquete se estaba utilizando en el
contexto de una rutina.

Un usuario o grupo puede autorizarse para cualquier combinacin de


autorizaciones o privilegios individuales. Cuando se asocia un privilegio a un
objeto, este objeto debe existir. Por ejemplo, no es posible otorgar a un usuario el
privilegio SELECT sobre una tabla a menos que esta tabla se haya creado
anteriormente.

Nota: Debe tenerse cuidado cuando se otorguen autorizaciones y privilegios a un


nombre de autorizacin que represente a un usuario o grupo y no se haya
creado ningn usuario o grupo con dicho nombre. En el futuro podra
crearse un usuario o grupo con dicho nombre de autorizacin que recibira
automticamente todas las autorizaciones y privilegios asociados con este
nombre de autorizacin.

La sentencia REVOKE se utiliza para revocar los privilegios otorgados con


anterioridad. Revocar un privilegio de un nombre de autorizacin revoca el
privilegio otorgado por todos los nombres de autorizacin.

Al revocar un privilegio de un nombre de autorizacin no se revoca este mismo


privilegio de ningn otro nombre de autorizacin al que este nombre de
autorizacin haya otorgado el privilegio. Por ejemplo, supongamos que CLAIRE
otorga la opcin SELECT WITH GRANT a RICK y ms tarde RICK otorga SELECT
a BOBBY y a CHRIS. Si CLAIRE revoca el privilegio SELECT de RICK, BOBBY y
CHRIS seguirn reteniendo el privilegio SELECT.

Propiedad del objeto:

Cuando se cree un objeto, a un ID de autorizacin se le asignar la propiedad de


dicho objeto. Por propiedad se entiende que un usuario est autorizado a
referencias el objeto en cualquier sentencia SQL o XQuery que sea de aplicacin.

Cuando se crea un objeto en un esquema, el ID de autorizacin de la sentencia


deber tener el privilegio necesario para crear objetos en el esquema implcita o

18 Consulta de SQL - Volumen 1


Privilegios, niveles de autorizacin y autorizaciones de bases de datos

explcitamente especificado. Es decir, el nombre de autorizacin deber ser el


propietario del esquema o poseer el privilegio CREATEIN sobre el esquema.

Nota: Este requisito no es aplicable al crear espacios de tabla, agrupaciones de


almacenamientos intermedios o grupos de particiones de base de datos.
Estos objetos no se crean en los esquemas.

Cuando se cree un objeto, el ID de autorizacin de la sentencia ser el propietario


de dicho objeto.

Nota: Hay una excepcin. Si se ha especificado la opcin AUTHORIZATION para


la sentencia CREATE SCHEMA, los dems objetos que se creen como parte
de la operacin CREATE SCHEMA sern propiedad del ID de autorizacin
especificado por la opcin AUTHORIZATION. Sin embargo, los objetos
creados en el esquema despus de la operacin de CREATE SCHEMA inicial
sern propiedad del ID de autorizacin asociado a la sentencia CREATE
especfica.

Por ejemplo, la sentencia CREATE SCHEMA SCOTTSTUFF AUTHORIZATION SCOTT


CREATE TABLE T1 (C1 INT) crea el esquema SCOTTSTUFF y la tabla
SCOTTSTUFF.T1, los cuales son ambos propiedad de SCOTT. Suponga que al
usuario BOBBY se le otorga el privilegio CREATEIN sobre el esquema
SCOTTSTUFF y se crea un ndice en la tabla SCOTTSTUFF.T1. Puesto que el
ndice se crea despus que el esquema, BOBBY poseer el ndice sobre
SCOTTSTUFF.T1.

Los privilegios se asignarn al propietario del objeto basndose en el tipo de objeto


que est crendose:
v El privilegio CONTROL se otorga implcitamente a las tablas, ndices y paquetes
recin creados. Este privilegio permite al creador de un objeto acceder al objeto
de la base de datos y otorgar privilegios para o desde otros usuarios sobre dicho
objeto o revocarlos. Si un usuario distinto necesita el privilegio CONTROL sobre
este objeto, un usuario con autorizacin SYSADM o DBADM debe otorgarle el
privilegio CONTROL sobre dicho objeto. El propietario del objeto no puede
revocar el privilegio CONTROL.
v Al privilegio CONTROL se le otorgan implcitamente las vistas recin creadas en
el caso de que el propietario del objeto posea el privilegio CONTROL en todas
las tablas, vistas y apodos a los que se hace referencia mediante la definicin de
vista.
v Otros objetos como por ejemplo, los activadores, rutinas, secuencias, espacios de
tabla y agrupaciones de almacenamientos intermedios no tienen el privilegio
CONTROL asociado a los mismos. Sin embargo, el propietario del objeto recibe
automticamente cada uno de los privilegios asociados al objeto (y puede
proporcionar dichos privilegios a otros usuarios, en los lugares en los que estn
soportados, utilizando la opcin WITH GRANT de la sentencia GRANT).
Adems, el propietario del objeto puede modificar, aadir un comentario o
descartar el objeto. Estas autorizaciones son implcitas para el propietario del
objeto y no pueden revocarse.

El propietario puede otorgar ciertos privilegios sobre el objeto, como por ejemplo
modificar una tabla, privilegios que un usuario que tenga autorizacin SYSADM o
DBADM puede revocar para el propietario. El propietario no puede otorgar ni
revocar determinados privilegios sobre el objeto, como por ejemplo el de comentar
una tabla. Utilice la sentencia TRANSFER OWNERSHIP para mover dichos
privilegios a otro usuario. Cuando se cree un objeto, el ID de autorizacin de la

Captulo 1. Conceptos 19
Privilegios, niveles de autorizacin y autorizaciones de bases de datos

sentencia ser el propietario del objeto. Sin embargo, cuando se cree un paquete y
se especifique la opcin de vinculacin OWNER, el propietario de los objetos
creados mediante sentencias SQL estticas del paquete ser el valor de la opcin de
vinculacin OWNER. Adems, si se especifica la clusula AUTHORIZATION en
una sentencia CREATE SCHEMA, el nombre de autorizacin especificado detrs de
la palabra clave AUTHORIZATION ser el propietario del esquema.

Un administrador de seguridad (SECADM) o el propietario del objeto podrn


utilizar la sentencia TRANSFER OWNERSHIP para cambiar la propiedad de un
objeto de base de datos. Por tanto, un administrador puede crear un objeto en
nombre de un ID de autorizacin, creando el objeto que utiliza el ID de
autorizacin como calificador y utilizando a continuacin la sentencia TRANSFER
OWNERSHIP para transferir la propiedad que el administrador posee sobre el
objeto al ID de autorizacin.

Conceptos relacionados:
v Controlling access to database objects en Administration Guide: Implementation
v Database administration authority (DBADM) en Administration Guide:
Implementation
v Database authorities en Administration Guide: Implementation
v Index privileges en Administration Guide: Implementation
v Indirect privileges through a package en Administration Guide: Implementation
v LOAD authority en Administration Guide: Implementation
v Package privileges en Administration Guide: Implementation
v Routine privileges en Administration Guide: Implementation
v Schema privileges en Administration Guide: Implementation
v Security administration authority (SECADM) en Administration Guide:
Implementation
v Sequence privileges en Administration Guide: Implementation
v System administration authority (SYSADM) en Administration Guide:
Implementation
v System control authority (SYSCTRL) en Administration Guide: Implementation
v System maintenance authority (SYSMAINT) en Administration Guide:
Implementation
v System monitor authority (SYSMON) en Administration Guide: Implementation
v Table and view privileges en Administration Guide: Implementation
v Table space privileges en Administration Guide: Implementation

Informacin relacionada:
v Sentencia GRANT (Autorizaciones de base de datos) en Consulta de SQL,
Volumen 2

Vistas de catlogo
El gestor de bases de datos mantiene un conjunto de vistas tablas base que
contienen informacin sobre los datos que se encuentran bajo su control. Estas
vistas y tablas base se conocen en su conjunto como el catlogo. El catlogo
contiene informacin acerca de la estructura lgica y fsica de los objetos de la base
de datos como, por ejemplo, tablas, vistas, ndices, paquetes y funciones. Tambin
contiene informacin estadstica. El gestor de bases de datos garantiza que las
descripciones del catlogo siempre sean precisas.

20 Consulta de SQL - Volumen 1


Vistas de catlogo

Las vistas de catlogo son como cualquier otra vista de la base de datos. Se
pueden utilizar sentencias de SQL para ver los datos de las vistas de catlogo. Para
modificar ciertos valores del catlogo puede utilizarse un conjunto de vistas
actualizables del catlogo.

Informacin relacionada:
v Vistas de catlogo del sistema en la pgina 613

Procesos, simultaneidad y recuperacin de aplicaciones


Todos los programas SQL se ejecutan como parte de un proceso de aplicacin o
agente. Un proceso de aplicacin implica la ejecucin de uno o varios programas y
es la unidad a la que el gestor de bases de datos asigna los distintos recursos y
bloqueos. Los distintos procesos de la aplicacin pueden implicar la ejecucin de
programas diferentes, o distintas ejecuciones del mismo programa.

Puede que ms de un proceso de aplicacin solicite acceso a los mismos datos al


mismo tiempo. El bloqueo es el mecanismo que se utiliza para mantener la
integridad de los datos en tales condiciones, con lo que se evita, por ejemplo, que
dos procesos de la aplicacin actualicen simultneamente la misma fila de datos.

El gestor de bases de datos adquiere bloqueos para evitar que los cambios no
confirmados efectuados por un proceso de aplicacin sean percibidos
accidentalmente por otro proceso. El gestor de bases de datos libera todos los
bloqueos que ha adquirido y retenido en nombre de un proceso de aplicacin
cuando finaliza dicho proceso. Sin embargo, un proceso de aplicacin puede
solicitar explcitamente que se liberen antes los bloqueos. Esto se consigue
utilizando una operacin de confirmacin, que libera bloqueos adquiridos durante
la unidad de trabajo y tambin confirma cambios en la base de datos durante la
unidad de trabajo.

El gestor de bases de datos proporciona una forma de restituir los cambios no


confirmados realizados por un proceso de aplicacin. Esto podra ser necesario en
caso de error en un proceso de aplicacin o si se produce un punto muerto o un
tiempo excedido por bloqueo. Un proceso de aplicacin puede solicitar de modo
explcito que se restituyan los cambios en la base de datos. Esto se hace utilizando
una operacin de retrotraccin.

Una unidad de trabajo es una secuencia recuperable de operaciones dentro de un


proceso de aplicacin. Una unidad de trabajo se inicia cuando se inicia un proceso
de aplicacin o cuando termina la unidad de trabajo anterior y no sea debido a la
finalizacin del proceso de aplicacin. Una unidad de trabajo finaliza mediante una
operacin de confirmacin, de retrotraccin o por el final de un proceso de
aplicacin. Una operacin de retrotraccin o confirmacin slo afecta a los cambios
realizados en la base de datos durante la unidad de trabajo que est terminando.

Mientras estos cambios permanecen sin confirmar, otros procesos de aplicaciones


no pueden percibirlos y dichos cambios pueden restituirse. Sin embargo, esto no es
as cuando el nivel de aislamiento es de lectura no confirmada (UR). Una vez
confirmados, los dems procesos de aplicacin pueden acceder a estos cambios de
la base de datos y stos ya no se pueden restituir mediante una retrotraccin.

Tanto la CLI (call level interface) de DB2 como SQL incorporado permiten una
modalidad de conexin llamada transacciones simultneas, que admite varias

Captulo 1. Conceptos 21
Procesos, simultaneidad y recuperacin de aplicaciones

conexiones, cada una de las cuales es una transaccin independiente. Una


aplicacin puede tener mltiples conexiones simultneas con la misma base de
datos.

Los bloqueos adquiridos por el gestor de bases de datos para un proceso de


aplicacin se conservan hasta el final de una unidad de trabajo. Sin embargo, esto
no es as cuando el nivel de aislamiento es de estabilidad del cursor (CS, en el que
el bloqueo se libera cuando el cursor se mueve de una fila a otra) o de lectura no
confirmada(UR, en el que no se obtienen bloqueos).

No se puede impedir nunca que un proceso de aplicacin realice operaciones


debido a sus propios bloqueos. Sin embargo, si una aplicacin utiliza transacciones
simultneas, los bloqueos de una transaccin pueden afectar la operacin de una
transaccin simultnea.

El inicio y la finalizacin de una unidad de trabajo definen los puntos de


coherencia en un proceso de aplicacin. Por ejemplo, una transaccin bancaria
puede incluir la transferencia de fondos de una cuenta a otra. Una transaccin de
este tipo necesitara que dichos fondos se restaran de la primera cuenta y se
sumaran ms tarde a la segunda cuenta. Despus de esta sustraccin, los datos son
incoherentes. La coherencia slo queda restablecida cuando los fondos se han
sumado a la segunda cuenta. Cuando se hayan completado los dos pasos, podr
utilizarse la operacin de confirmacin para finalizar la unidad de trabajo, con lo
que los cambios estarn disponibles para otros procesos de aplicacin. Si se
produce una anomala antes de que finalice la unidad de trabajo, el gestor de bases
de datos retrotraer los cambios no confirmados para restablecer la coherencia de
los datos que se presupone que exista al iniciar la unidad de trabajo.

Figura 2. Unidad de trabajo con una sentencia COMMIT

22 Consulta de SQL - Volumen 1


Procesos, simultaneidad y recuperacin de aplicaciones

Figura 3. Unidad de trabajo con una sentencia ROLLBACK

Conceptos relacionados:
v Niveles de aislamiento en la pgina 23

Niveles de aislamiento
El nivel de aislamiento asociado con un proceso de aplicacin define el grado de
aislamiento de dicho proceso de aplicacin respecto a otros procesos de aplicacin
que se ejecutan simultneamente. Por consiguiente, el nivel de aislamiento de un
proceso de aplicacin especifica:
v El grado al que las filas ledas y actualizadas por la aplicacin estn disponibles
para otros procesos de aplicacin que se ejecutan simultneamente.
v El grado al que puede afectar a la aplicacin la actividad de actualizacin de
otros procesos de aplicacin que se ejecutan simultneamente.

El nivel de aislamiento correspondiente a sentencias de SQL esttico se especifica


como un atributo de un paquete y se aplica a los procesos de aplicacin que
utilizan el paquete. El nivel de aislamiento se especifica en el proceso de
preparacin del proceso. Para sentencias de SQL dinmico, el nivel de aislamiento
por omisin es el nivel de aislamiento especificado para el paquete que prepara la
sentencia. La sentencia SET CURRENT ISOLATION permite especificar niveles de
aislamiento alternativos para SQL emitido dentro de una sesin. En funcin del
tipo de bloqueo, limita o impide el acceso a los datos por parte de procesos de
aplicacin simultneos. Las tablas temporales declaradas y las filas de las mismas
no pueden bloquearse, pues slo la aplicacin que las declar puede acceder a
ellas.

El gestor de bases de datos da soporte a tres categoras generales de bloqueos:


Compartimiento
Limita los procesos de aplicacin simultneos a operaciones de slo lectura
de los datos.
Actualizacin
Limita los procesos de aplicacin simultneos a operaciones de slo lectura
de los datos, si dichos procesos no han declarado que podran actualizar la
Captulo 1. Conceptos 23
Niveles de aislamiento

fila. El gestor de bases de datos asume que el proceso que actualmente


mira a una fila es posible que la actualice.
Exclusivo
Evita que los procesos de aplicacin simultneos accedan a los datos de
todas formas. No se aplica a los procesos de aplicacin con un nivel de
aislamiento de lectura no confirmada, que pueden leer los datos pero no
modificarlos.

El bloqueo se produce en la fila de la tabla base. Sin embargo, el gestor de bases


de datos puede sustituir mltiples bloqueos de filas por un solo bloqueo de tabla.
Esto se denomina escalada de bloqueos. Un proceso de aplicacin tiene garantizado al
menos el nivel mnimo de bloqueo solicitado.

El gestor de bases de datos permite cuatro niveles de aislamiento.


Independientemente del nivel de aislamiento, el gestor de bases de datos coloca
bloqueos de exclusividad en cada fila que se inserta, actualiza o suprime. Por lo
tanto, los niveles de aislamiento aseguran que las filas que cambia el proceso de
aplicacin durante una unidad de trabajo no las pueda modificar ningn otro
proceso de aplicacin hasta que la unidad de trabajo haya finalizado. Los niveles
de aislamiento son:
v Lectura repetible (RR)
Este nivel garantiza que:
Cualquier fila leda durante una unidad de trabajo no puede modificarla
ningn otro proceso de aplicacin hasta que la unidad de trabajo haya
finalizado. Las filas se leen en la misma unidad de trabajo que la sentencia
OPEN correspondiente. El uso de la clusula WITH RELEASE opcional en la
sentencia CLOSE significa que, si se vuelve a abrir el cursor, ya no se aplicar
ninguna garanta respecto a las lecturas no repetibles y no se aplicarn ya
lecturas fantasma a ninguna fila a la que se haya accedido anteriormente.
Las filas modificadas por otro proceso de aplicacin no se pueden leer hasta
que dicho proceso de aplicacin las confirme.
El nivel de Lectura repetible no permite ver las filas fantasma (consulte
Estabilidad de lectura).
Adems de los bloqueos de exclusividad, un proceso de aplicacin que se
ejecute en el nivel RR adquiere, como mnimo, bloqueos de compartimiento en
todas las filas a las que hace referencia. Adems, el bloqueo se realiza de forma
que el proceso de aplicacin quede completamente aislado de los efectos de los
procesos de aplicacin simultneos.
v Estabilidad de lectura (RS)
Igual que el nivel de Lectura repetible, el nivel de Estabilidad de lectura asegura
que:
Cualquier fila leda durante una unidad de trabajo no puede modificarla
ningn otro proceso de aplicacin hasta que la unidad de trabajo haya
finalizado. Las filas se leen en la misma unidad de trabajo que la sentencia
OPEN correspondiente. El uso de la clusula WITH RELEASE opcional en la
sentencia CLOSE significa que, si se vuelve a abrir el cursor, ya no se aplicar
ninguna garanta respecto a las lecturas no repetibles a ninguna fila a la que
se haya accedido anteriormente.
Las filas modificadas por otro proceso de aplicacin no se pueden leer hasta
que dicho proceso de aplicacin las confirme.
A diferencia de la Lectura repetible, la Estabilidad de lectura no asla
completamente el proceso de aplicacin de los efectos de procesos de aplicacin
simultneos. En el nivel RS, los procesos de aplicacin que emiten la misma

24 Consulta de SQL - Volumen 1


Niveles de aislamiento

consulta ms de una vez pueden ver filas adicionales producidas por la adicin
de informacin nueva a la base de datos que realizan otros procesos de
aplicacin. Estas filas adicionales se denominan filas fantasma.
Por ejemplo, puede aparecer una fila fantasma en la situacin siguiente:
1. El proceso de aplicacin P1 lee el conjunto de filas n que satisfacen alguna
condicin de bsqueda.
2. Entonces el proceso de aplicacin P2 inserta una o ms filas que satisfacen la
condicin de bsqueda y confirma esas nuevas inserciones.
3. P1 lee nuevamente el conjunto de filas con la misma condicin de bsqueda
y obtiene tanto las filas originales como las filas insertadas por P2.
Adems de los bloqueos de exclusividad, un proceso de aplicacin que se
ejecute al nivel de aislamiento RS adquiere, como mnimo, bloqueos de
compartimiento en todas las filas calificadas para ello.
v Estabilidad del cursor (CS)
Al igual que el nivel de Lectura repetible, el nivel de Estabilidad del cursor
asegura que cualquier fila que haya sido modificada por otro proceso de
aplicacin no pueda leerse hasta que sea confirmada por dicho proceso de
aplicacin.
A diferencia de la Lectura repetible, la Estabilidad del cursor slo asegura que
otros procesos de aplicacin no modifiquen la fila actual de cada cursor
actualizable. De este modo, las filas ledas durante una unidad de trabajo
pueden ser modificadas por otros procesos de aplicacin.
Adems de los bloqueos de exclusividad, un proceso de aplicacin que se
ejecute al nivel de aislamiento CS adquiere, como mnimo, un bloqueo de
compartimiento sobre la fila actual de cada cursor.
v Lectura no confirmada (UR)
Para una operacin SELECT INTO, una operacin FETCH con un cursor de slo
lectura, una operacin de seleccin completa de INSERT, una operacin de
seleccin completa de fila en UPDATE o una operacin de seleccin completa
escalar (dondequiera que se utilice), el nivel de Lectura no confirmada permite
que:
Cualquier fila leda durante una unidad de trabajo sea modificada por otros
procesos de aplicacin.
Cualquier fila cambiada por otro proceso de aplicacin pueda leerse aunque
dicho proceso de aplicacin no ha confirmado el cambio.
Para otras operaciones, se aplican las reglas asociadas con el nivel CS.

Comparacin de niveles de aislamiento


La tabla siguiente resume la informacin acerca de los niveles de aislamiento.

UR CS RS RR
La aplicacin puede ver los cambios no S No No No
confirmados realizados por otros procesos de
aplicacin?
La aplicacin puede actualizar los cambios no No No No No
confirmados realizados por otros procesos de
aplicacin?
3
Pueden otros procesos de aplicacin afectar a S S S No
la operacin de volver a ejecutar una sentencia?
Consulte el fenmeno P3 (fantasma) al final de la
tabla.

Captulo 1. Conceptos 25
Niveles de aislamiento

UR CS RS RR
Pueden otros procesos de aplicacin actualizar No No No No
filas actualizadas? Consulte la Nota 1 al final
de la tabla.
Pueden otros procesos de aplicacin que se No No No No
ejecutan a un nivel de aislamiento que no sea
UR leer las filas actualizadas?
Pueden otros procesos de aplicacin que se S S S S
ejecutan al nivel de aislamiento UR leer las filas
actualizadas?
Pueden otros procesos de aplicacin actualizar S S No No
las filas a las que se ha accedido? Consulte el
fenmeno P2 (lectura no repetible) al final de la
tabla.
Pueden otros procesos de aplicacin leer las S S S S
filas a las que se ha accedido?
Pueden otros procesos de aplicacin actualizar Consulte Consulte No No
o suprimir la fila actual? Consulte el fenmeno la nota 2 la nota 2
P1 (lectura sucia) al final de la tabla. al final al final
de la de la
tabla. tabla.

Notas:
1. El nivel de aislamiento no ofrece proteccin a la aplicacin si sta lee y escribe una tabla.
Por ejemplo, una aplicacin abre un cursor en una tabla y entonces realiza una operacin
de insercin, actualizacin o supresin en la misma tabla. Es posible que la aplicacin
vea datos incoherentes al buscar ms filas desde el cursor abierto.
2. Si el cursor no es actualizable, con CS la fila actual puede actualizarse o suprimirse por
otros procesos de aplicacin en algunos casos. Por ejemplo, el almacenamiento
intermedio puede hacer que la fila actual del cliente sea distinta de la fila actual que
realmente aparece en el servidor.
3. Si las credenciales de control de acceso basado en etiquetas (LBAC) cambian entre
lecturas, es posible que los resultados de la segunda lectura sean diferentes, ya que se
tiene acceso a filas diferentes.
Ejemplos de fenmenos:
P1 Lectura sucia. La unidad de trabajo UW1 modifica una fila. La unidad de trabajo
UW2 lee dicha fila antes que UW1 ejecute COMMIT. Si UW1 realiza entonces una
operacin ROLLBACK, UW2 ha ledo una fila no existente.
P2 Lectura no repetible. La unidad de trabajo UW1 lee una fila. La unidad de trabajo
UW2 modifica dicha fila y realiza una operacin COMMIT. Si UW1 vuelve a leer la
fila, puede recibir un valor modificado.
P3 Fantasma. La unidad de trabajo UW1 lee el conjunto de n filas que satisface alguna
condicin de bsqueda. La unidad de trabajo UW2 inserta (INSERT) una o varias
filas que satisfacen la condicin de bsqueda y la confirma (COMMIT). Si UW1
repite la lectura inicial con la misma condicin de bsqueda, obtiene las filas
originales ms las filas insertadas.

Informacin relacionada:
v Sentencia DECLARE CURSOR en Consulta de SQL, Volumen 2

26 Consulta de SQL - Volumen 1


Espacios de tablas y otras estructuras de almacenamiento

Espacios de tablas y otras estructuras de almacenamiento


Las estructuras de almacenamiento contienen objetos de base de datos. La
estructura bsica de almacenamiento es el espacio de tablas; contiene tablas, ndices,
objetos grandes y datos definidos con un tipo de datos LONG. Existen dos tipos de
espacios de tablas:
Espacio gestionado por base de datos (DMS)
Espacio de tablas que est gestionado por el gestor de bases de datos.
Espacio gestionado por el sistema (SMS)
Espacio de tablas que est gestionado por el sistema operativo.

Todos los espacios de tablas constan de contenedores. Un contenedor describe


dnde se almacenan los objetos. Un subdirectorio de un sistema de archivos es un
ejemplo de contenedor.

Cuando los datos se leen de los contenedores de espacios de tablas, se colocan en


un rea de la memoria denominada agrupacin de almacenamientos intermedios.
Una agrupacin de almacenamientos intermedios est asociada a un espacio de tablas
concreto y, por lo tanto, puede controlar qu datos compartirn las mismas reas
de memoria para el almacenamiento intermedio de datos.

En una base de datos particionada, los datos se reparten entre distintas particiones
de base de datos. El grupo de particiones de base de datos que est asignado al
espacio de tablas determina exactamente qu particiones de base de datos se
incluyen. Un grupo de particiones de base de datos es un grupo formado por una o
varias particiones de base de datos que estn definidas como parte de la base de
datos. Un espacio de tablas incluye uno o varios contenedores para cada particin
del grupo de particiones de base de datos. El gestor de bases de datos utiliza una
correlacin de distribucin asociada a cada grupo de particiones de base de datos,
para determinar en qu particin de base de datos se va a almacenar una fila de
datos determinada. La correlacin de distribucin es una matriz formada por 4096
nmeros de particin de base de datos. El ndice de la correlacin de distribucin
producido por la funcin de particin para cada fila de una tabla se utiliza como
ndice en la correlacin de distribucin para determinar la particin de base de
datos en la que se almacenar una fila. Por ejemplo, la figura siguiente muestra
cmo una fila con el valor de clave de distribucin (c1, c2, c3) se correlaciona con
el ndice de correlacin de distribucin 2 que, a su vez, hace referencia a la
particin de base de datos p5.

Captulo 1. Conceptos 27
Espacios de tablas y otras estructuras de almacenamiento

Figura 4. Distribucin de datos

La correlacin de distribucin se puede cambiar, lo que permite cambiar la


distribucin de datos sin tener que modificar la clave de distribucin ni los datos
reales. La nueva correlacin de distribucin se especifica como parte del mandato
REDISTRIBUTE DATABASE PARTITION GROUP o la API (interfaz de
programacin de aplicaciones) sqludrdt, que la utilizan para redistribuir las tablas
del grupo de particiones de base de datos.

El producto DB2 Data Links Manager proporciona funciones que soportan


capacidades de almacenamiento adicionales. Una tabla de usuario normal tambin
puede incluir columnas (definidas con el tipo de datos DATALINK) que registren
enlaces con datos almacenados en archivos externos. Los valores de DATALINK
hacen referencia a archivos de datos almacenados en un servidor de archivos
externo.

Conceptos relacionados:
v Particin de bases de datos en varias particiones de base de datos en la pgina
42

Informacin relacionada:
v Sentencia CREATE BUFFERPOOL en Consulta de SQL, Volumen 2
v Sentencia CREATE DATABASE PARTITION GROUP en Consulta de SQL,
Volumen 2
v Sentencia CREATE TABLESPACE en Consulta de SQL, Volumen 2

28 Consulta de SQL - Volumen 1


Conversin de caracteres

Conversin de caracteres
Una serie es una secuencia de bytes que puede representar caracteres. Todos los
caracteres de una serie tienen una representacin de codificacin comn. En
algunos casos, puede ser necesario convertir estos caracteres a una representacin
de cdigos diferente, conocida como conversin de caracteres. La conversin de
caracteres, cuando es necesaria, es automtica y, cuando es satisfactoria, es
transparente para la aplicacin.

La conversin de caracteres puede producirse cuando una sentencia de SQL se


ejecuta de manera remota. Tenga en cuenta, por ejemplo, los casos siguientes en los
que las representaciones de codificacin pueden ser distintas en el sistema de envo
y en el de recepcin:
v Los valores de las variables del lenguaje principal se envan desde el
peticionario de aplicaciones al servidor de aplicaciones.
v Los valores de las columnas del resultado se envan desde el servidor de
aplicaciones al peticionario de aplicaciones.

A continuacin se muestra una lista de los trminos utilizados al tratar la


conversin de caracteres:
juego de caracteres
Juego definido de caracteres. Por ejemplo, el siguiente juego de caracteres
aparece en varias pginas de cdigos:
v 26 letras no acentuadas de la A a la Z
v 26 letras no acentuadas de la a a la z
v dgitos del 0 al 9
v .,:;?()'"/_&+%*=<>
pgina de cdigos
Conjunto de asignaciones de caracteres a elementos de cdigo. En el
esquema de codificacin ASCII para la pgina de cdigos 850, por ejemplo,
se asigna a "A" el elemento de cdigo X'41' y a "B" el elemento de
cdigoX'42'. En una pgina de cdigos, cada elemento de cdigo tiene un
solo significado especfico. Una pgina de cdigos es un atributo de la base
de datos. Cuando un programa de aplicacin se conecta a la base de datos,
el gestor de bases de datos determina la pgina de cdigos de la
aplicacin.
elemento de cdigo
Patrn de bits que representa de forma exclusiva un carcter.
esquema de codificacin
Conjunto de reglas utilizadas para representar datos de tipo carcter, por
ejemplo:
v ASCII de un solo byte
v EBCDIC de un solo byte
v ASCII de doble byte
v ASCII mixto de un solo byte y de doble byte

La figura siguiente muestra cmo un juego de caracteres tpico puede


correlacionarse con diferentes elementos de cdigo de dos pginas de cdigos
distintas. Incluso con el mismo esquema de codificacin, existen muchas pginas
de cdigos diferentes y el mismo elemento de cdigo puede representar un
carcter diferente en pginas de cdigo diferentes. Adems, un byte de una serie

Captulo 1. Conceptos 29
Conversin de caracteres

de caracteres no representa necesariamente un carcter de un juego de caracteres


de un solo byte (SBCS). Las series de caracteres tambin se utilizan para datos de
bits y mixtos. Los datos mixtos son una combinacin de caracteres de un solo byte,
de doble byte o de mltiples bytes. Los datos de bits (columnas definidas como FOR
BIT DATA o BLOB o series binarias) no estn asociados a ningn juego de
caracteres.

Figura 5. Correlacin de un juego de caracteres en diferentes pginas de cdigos

El gestor de bases de datos determina los atributos de pginas de cdigos para


todas las series de caracteres cuando una aplicacin se vincula con una base de
datos. Los atributos de pgina de cdigos posibles son:
Pgina de cdigos de base de datos
La pgina de cdigos de base de datos se almacena en el archivo de
configuracin de la base de datos. El valor se especifica cuando se crea la
base de datos y no puede modificarse.
Pgina de cdigos de aplicacin
La pgina de cdigos bajo la que se ejecuta la aplicacin. No es
necesariamente la misma pgina de cdigos bajo la que se ha vinculacin
la aplicacin.

30 Consulta de SQL - Volumen 1


Conversin de caracteres

Pgina de cdigos de la seccin


La pgina de cdigos bajo la que se ejecuta la sentencia de SQL.
Normalmente, la pgina de cdigos de la seccin es la pgina de cdigos
de la base de datos. Sin embargo, se utiliza la pgina de cdigos Unicode
(UTF-8) como pgina de cdigos de la seccin si:
v La sentencia hace referencia a una tabla que se ha creado con el esquema
de codificacin Unicode en una base de datos que no es Unicode
v La sentencia hace referencia a una funcin de tabla que se ha definido
con PARAMETER CCSID UNICODE en una base de datos que no es
Unicode.
Pgina de cdigos 0
Representa una serie derivada de una expresin que contiene un valor
FOR BIT DATA o un valor BLOB.

Las pginas de cdigos de series de caracteres tienen los atributos siguientes:


v Las columnas pueden estar en la pgina de cdigos de la base de datos, en la
pgina de cdigos Unicode (UTF-8) o en la pgina de cdigos 0 (si se ha
definido como FOR BIT DATA o BLOB).
v Las constantes y los registros especiales (por ejemplo, USER, CURRENT
SERVER) estn en la pgina de cdigos de seleccin. Cuando se vincula una
sentencia de SQL con la base de datos, las constantes se convierten, en caso
necesario, de la pgina de cdigos de la aplicacin a la pgina de cdigos de la
base de datos y, a continuacin, a la pgina de cdigos de la seccin.
v Las variables del lenguaje principal de entrada se encuentran en la pgina de
cdigos de la aplicacin. Para la Versin 8, los datos de serie de variables del
lenguaje principal de entrada se convierten, si es necesario, de la pgina de
cdigos de la aplicacin a la pgina de cdigos de la seccin antes de su
utilizacin. La excepcin se produce cuando se utiliza una variable del lenguaje
principal en un contexto en el que se interpretar como datos de bit; por
ejemplo, cuando la variable del lenguaje principal debe asignarse a una columna
que est definida como FOR BIT DATA.

Se utiliza un conjunto de reglas para determinar los atributos de pgina de cdigos


para las operaciones que combinan objetos de serie como, por ejemplo, operaciones
escalares, operaciones con conjuntos o concatenaciones. Los atributos de la pgina
de cdigos se utilizan para determinar los requisitos para la conversin de pginas
de cdigos de las series durante la ejecucin.

Informacin relacionada:
v Asignaciones y comparaciones en la pgina 117
v Reglas para la conversin de series en la pgina 133

Bases de datos relacionales distribuidas


Una base de datos relacional distribuida consta de un conjunto de tablas y otros
objetos distribuidos en distintos sistemas informticos que estn conectados entre
s. Cada sistema tiene un gestor de bases de datos relacionales para manejar las
tablas de su entorno. Los gestores de bases de datos se comunican y cooperan
entre s de una manera que permite a un gestor de bases de datos determinado
ejecutar sentencias de SQL en otro sistema.

Las bases de datos relacionales distribuidas se crean mediante protocolos y


funciones de peticionario-servidor formales. Un peticionario de aplicaciones da

Captulo 1. Conceptos 31
Bases de datos relacionales distribuidas

soporte al extremo correspondiente a la aplicacin en una conexin. Transforma


una peticin de base de datos procedente de la aplicacin en protocolos de
comunicaciones adecuados para ser utilizados en la red de bases de datos
distribuidas. Estas peticiones las recibe y procesa un servidor de bases de datos
situado en el otro extremo de la conexin. Mediante un trabajo conjunto, el
peticionario de aplicaciones y el servidor de bases de datos manejan las
consideraciones acerca de las comunicaciones y la ubicacin, de forma que la
aplicacin pueda funcionar como si estuviera accediendo a una base de datos local.

Un proceso de aplicacin debe conectarse al servidor de aplicaciones de un gestor


de bases de datos para que se puedan ejecutar las sentencias de SQL que hacen
referencia a tablas o vistas. La sentencia CONNECT establece una conexin entre
un proceso de aplicacin y su servidor.

Hay dos tipos de sentencias CONNECT:


v CONNECT (Tipo 1) da soporte a la semntica de una sola base de datos por
unidad de trabajo (Unidad de trabajo remota).
v CONNECT (Tipo 2) da soporte a la semntica de varias bases de datos por
unidad de trabajo (Unidad de trabajo distribuida dirigida por aplicacin).

La CLI (call level interface) de DB2 y SQL incorporado dan soporte a una
modalidad de conexin llamada transacciones simultneas que permite mltiples
conexiones, cada una de las cuales es una transaccin independiente. Una
aplicacin puede tener mltiples conexiones simultneas con la misma base de
datos.

El servidor de aplicaciones puede ser local o remoto con respecto al entorno en el


que se inicia el proceso. Existe un servidor de aplicaciones, aunque el entorno no
est utilizando bases de datos relacionales distribuidas. Este entorno incluye un
directorio local que describe los servidores de aplicaciones que pueden identificarse
en una sentencia CONNECT.

El servidor de aplicaciones ejecuta la forma vinculada de una sentencia de SQL


esttico que hace referencia a tablas o vistas. La sentencia vinculada se toma de un
paquete que el gestor de bases de datos ha creado previamente mediante una
operacin de vinculacin.

En su mayor parte, una aplicacin conectada a un servidor de aplicaciones puede


utilizar las sentencias y las clusulas soportadas por el gestor de bases de datos del
servidor de aplicaciones. Esto es cierto aunque la aplicacin est ejecutndose
mediante el peticionario de aplicaciones de un gestor de bases de datos que no
soporte algunas de estas sentencias y clusulas.

Unidad de trabajo remota


El recurso unidad de trabajo remota permite la preparacin y ejecucin remotas de las
sentencias de SQL. Un proceso de aplicacin del sistema A puede conectarse a un
servidor de aplicaciones del sistema B y, desde una o ms unidades de trabajo,
ejecutar un nmero cualquiera de sentencias de SQL esttico o dinmico que hagan
referencia a objetos de B. Al finalizar una unidad de trabajo en B, el proceso de
aplicacin puede conectarse a un servidor de aplicaciones del sistema C y as
sucesivamente.

La mayora de las sentencias de SQL pueden prepararse y ejecutarse de forma


remota, con las restricciones siguientes:

32 Consulta de SQL - Volumen 1


Unidad de trabajo remota

v Todos los objetos a los que se hace referencia en una sola sentencia de SQL
deben ser gestionados por el mismo servidor de aplicaciones.
v Todas las sentencias de SQL de una unidad de trabajo debe ejecutarlas el mismo
servidor de aplicaciones.

En un momento dado, un proceso de aplicacin se encuentra en uno de cuatro


estados de conexin posibles:
v Conectable y conectado.
Un proceso de aplicacin est conectado a un servidor de aplicaciones y pueden
ejecutarse sentencias CONNECT.
Si la conexin implcita se encuentra disponible:
El proceso de aplicacin entra en este estado cuando una sentencia
CONNECT TO o una sentencia CONNECT sin operandos se ejecuta
satisfactoriamente desde el estado conectable y no conectado.
El proceso de aplicacin puede entrar en este estado desde el estado
conectable implcitamente si se emite cualquier otra sentencia de SQL que no
sea CONNECT RESET, DISCONNECT, SET CONNECTION ni RELEASE.
Tanto si la conexin implcita est disponible como si no lo est, se entra en este
estado cuando:
Se ejecuta satisfactoriamente una sentencia CONNECT TO desde el estado
conectable y no conectado.
Se emite satisfactoriamente una sentencia COMMIT o ROLLBACK o tiene
lugar una retrotraccin forzada que procede de un estado no conectable y
conectado.
v No conectable y conectado.
Un proceso de aplicacin est conectado a un servidor de aplicaciones, pero no
puede ejecutarse satisfactoriamente una sentencia CONNECT TO para cambiar
de servidor de aplicaciones. El proceso de aplicacin pasa a este estado desde el
estado conectable y conectado al ejecutarse cualquier sentencia de SQL que no
sea una de las siguientes: CONNECT TO, CONNECT sin operandos, CONNECT
RESET, DISCONNECT, SET CONNECTION, RELEASE, COMMIT o
ROLLBACK.
v Conectable y no conectado.
Un proceso de aplicacin no est conectado a un servidor de aplicaciones.
CONNECT TO es la nica sentencia de SQL que puede ejecutarse; de lo
contrario, se genera un error (SQLSTATE 08003).
Tanto si la conexin implcita est disponible como si no, el proceso de
aplicacin entra en este estado si se produce un error al emitir una sentencia
CONNECT TO o si se produce un error en una unidad de trabajo que provoca
la prdida de la conexin y una retrotraccin. Un error originado porque el
proceso de aplicacin no est en estado conectable o porque el nombre de
servidor no se encuentra en el directorio local no provoca una transicin a este
estado.
Si la conexin implcita no est disponible:
El proceso de aplicacin est inicialmente en este estado
Las sentencias CONNECT RESET y DISCONNECT provocan una transicin a
este estado.
v Conectable implcitamente (si la conexin implcita se encuentra disponible).
Si la conexin implcita se encuentra disponible, ste es el estado inicial de un
proceso de aplicacin. La sentencia CONNECT RESET provoca una transicin a
este estado. Si se emite una sentencia COMMIT o ROLLBACK en el estado no

Captulo 1. Conceptos 33
Unidad de trabajo remota

conectable y conectado seguida de una sentencia DISCONNECT en el estado


conectable y conectado, tambin se pasa a este estado.

La disponibilidad de la conexin implcita viene determinada por las opciones de


la instalacin, las variables de entorno y los valores de autenticacin.

No es un error ejecutar sentencias CONNECT consecutivas, porque CONNECT no


modifica el estado conectable del proceso de aplicacin. Sin embargo, es un error
ejecutar sentencias CONNECT RESET consecutivas. Tambin es un error ejecutar
cualquier sentencia de SQL que no sea CONNECT TO, CONNECT RESET,
CONNECT sin operandos, SET CONNECTION, RELEASE, COMMIT o
ROLLBACK y luego ejecutar una sentencia CONNECT TO. Para evitar este error,
se deber ejecutar una sentencia CONNECT RESET, DISCONNECT (precedida de
una sentencia COMMIT o ROLLBACK), COMMIT o ROLLBACK antes de la
sentencia CONNECT TO.

Figura 6. Transiciones de estado de conexin si la conexin implcita est disponible

34 Consulta de SQL - Volumen 1


Unidad de trabajo distribuida dirigida por aplicacin

Figura 7. Transiciones de estado de conexin si la conexin implcita no est disponible

Unidad de trabajo distribuida dirigida por aplicacin


El recurso de unidad de trabajo distribuida dirigida por aplicacin tambin proporciona
la preparacin y ejecucin remota de sentencias de SQL. Un proceso de aplicacin
en el sistema A puede conectarse a un servidor de aplicaciones en el sistema B
emitiendo una sentencia CONNECT o SET CONNECTION. Despus, el proceso de
aplicacin puede ejecutar un nmero cualquiera de sentencias de SQL esttico y
dinmico que hagan referencia a objetos de B antes de finalizar la unidad de
trabajo. Todos los objetos a los que se hace referencia en una sola sentencia de SQL
deben ser gestionados por el mismo servidor de aplicaciones. Sin embargo, a
diferencia del recurso de unidad de trabajo remota, pueden participar en la misma
unidad de trabajo cualquier nmero de servidores de aplicaciones. Una operacin
de retrotraccin o confirmacin finaliza la unidad de trabajo.

Una unidad de trabajo distribuida dirigida por aplicacin utiliza una conexin de
tipo 2. Una conexin de tipo 2 conecta un proceso de aplicacin al servidor de
aplicaciones identificado y establece las reglas para la unidad de trabajo distribuida
dirigida por aplicacin.

Un proceso de aplicacin de tipo 2:


v Est siempre conectable
v Est en estado conectado o no conectado
v Tiene cero o ms conexiones.

Captulo 1. Conceptos 35
Unidad de trabajo distribuida dirigida por aplicacin

Cada conexin de un proceso de aplicacin viene identificada de modo exclusivo


por el seudnimo de la base de datos del servidor de aplicaciones de la conexin.

Una conexin individual tiene siempre uno de los estados de conexin siguientes:
v actual y mantenido
v actual y pendiente de liberacin
v inactivo y mantenido
v inactivo y pendiente de liberacin

Un proceso de aplicacin de tipo 2 est inicialmente en estado no conectado y no


tiene ninguna conexin. Una conexin est inicialmente en estado actual y
mantenido.

36 Consulta de SQL - Volumen 1


Estados de conexin de procesos de aplicacin

Figura 8. Transacciones de estado de conexin de unidad de trabajo distribuida dirigida por aplicacin

Estados de conexin de procesos de aplicacin


Se aplican las reglas siguientes a la ejecucin de una sentencia CONNECT:
v Un contexto no puede tener ms de una conexin al mismo servidor de
aplicaciones al mismo tiempo.
v Cuando un proceso de aplicacin ejecuta una sentencia SET CONNECTION, el
nombre de ubicacin especificado debe ser una conexin existente en el conjunto
de conexiones del proceso de aplicacin.
v Cuando un proceso de aplicacin ejecuta una sentencia CONNECT y la opcin
SQLRULES(STD) est en vigor, el nombre de servidor especificado no debe ser
una conexin existente en el conjunto de conexiones del proceso de aplicacin.

Captulo 1. Conceptos 37
Estados de conexin de procesos de aplicacin

Para ver una descripcin de la opcin SQLRULES, consulte el apartado


Opciones que controlan la semntica de la unidad de trabajo distribuida en la
pgina 39.

Si un proceso de aplicacin tiene una conexin actual, el proceso de aplicacin


est en el estado conectado. El registro especial CURRENT SERVER contiene el
nombre del servidor de aplicaciones de la conexin actual. El proceso de aplicacin
puede ejecutar sentencias de SQL que hagan referencia a objetos gestionados por el
servidor de aplicaciones.

Un proceso de aplicacin que est en estado no conectado pasa al estado conectado


cuando ejecuta satisfactoriamente una sentencia CONNECT o SET CONNECTION.
Si no existe ninguna conexin pero se emiten sentencias de SQL, se realiza una
conexin implcita siempre que la variable de entorno DB2DBDFT se haya
establecido con el nombre de una base de datos por omisin.

Si un proceso de aplicacin no tiene una conexin actual, el proceso de aplicacin


est en estado no conectado. Las nicas sentencias de SQL que se pueden ejecutar
son las sentencias CONNECT, DISCONNECT ALL, DISCONNECT (especificando
una base de datos), SET CONNECTION, RELEASE, COMMIT, ROLLBACK y SET
locales.

Un proceso de aplicacin en el estado conectado pasa al estado no conectado cuando


finaliza de manera intencionada su conexin actual o cuando una sentencia de SQL
no es satisfactoria y provoca una operacin de retrotraccin en el servidor de
aplicaciones y la prdida de la conexin. Las conexiones finalizan
intencionadamente al ejecutarse satisfactoriamente una sentencia DISCONNECT o
una sentencia COMMIT cuando la conexin est en estado pendiente de liberacin.
(Si la opcin DISCONNECT del precompilador est establecida en AUTOMATIC,
finalizan todas las conexiones. Si est establecida en CONDITIONAL, finalizan
todas las conexiones que no tienen cursores WITH HOLD abiertos.)

Estados de conexin
Si un proceso de aplicacin ejecuta una sentencia CONNECT y el peticionario de
aplicaciones conoce el nombre de servidor pero ste no est en el conjunto de
conexiones existentes del proceso de aplicacin:
v La conexin actual se coloca en el estado de conexin inactivo y
v El nombre del servidor se aade al conjunto de conexiones y
v La nueva conexin se coloca en el estado de conexin actual y en el estado de
conexin mantenido.

Si el nombre de servidor ya se encuentra en el conjunto de conexiones existentes


del proceso de aplicacin y la aplicacin se precompila con la opcin
SQLRULES(STD), se produce un error (SQLSTATE 08002).

Estados mantenido y pendiente de liberacin. La sentencia RELEASE controla si


una conexin est en el estado mantenido o pendiente de liberacin. El estado
pendiente de liberacin significa que se producir una desconexin en la prxima
operacin de confirmacin satisfactoria. (Una operacin de retrotraccin no tiene
ningn efecto sobre las conexiones). El estado mantenido significa que no se
producir una desconexin en la prxima operacin de confirmacin.

Todas las conexiones se encuentran inicialmente en el estado mantenido y pueden


pasar al estado pendiente de liberacin utilizando la sentencia RELEASE. Una vez
en el estado pendiente de liberacin, una conexin no puede volver a pasar al

38 Consulta de SQL - Volumen 1


Estados de conexin

estado mantenido. Una conexin permanece en el estado pendiente de liberacin


ms all de los lmites de la unidad de trabajo si se emite una sentencia
ROLLBACK o si una operacin de confirmacin no satisfactoria da como resultado
una operacin de retrotraccin.

Aunque una conexin no se haya marcado explcitamente para su liberacin,


todava puede desconectarse mediante una operacin de confirmacin, siempre
que esta operacin cumpla con las condiciones de la opcin DISCONNECT del
precompilador.

Estados actual e inactivo. Con independencia de si una conexin se encuentra en


el estado mantenido o pendiente de liberacin, tambin puede estar en el estado
actual o inactivo. Una conexin en el estado actual es la conexin que se est
utilizando para ejecutar sentencias de SQL mientras se encuentra en este estado.
Una conexin en el estado inactivo es una conexin que no es actual.

Las nicas sentencias de SQL que pueden fluir en una conexin inactiva son
COMMIT, ROLLBACK, DISCONNECT y RELEASE. Las sentencias SET
CONNECTION y CONNECT cambian el estado de conexin del servidor
especificado a actual y cualquier conexin existente se coloca o permanece en
estado inactivo. En todo momento, slo una conexin puede estar en estado actual.
Si una conexin inactiva pasa a ser actual en la misma unidad de trabajo, el estado
de todos los bloqueos, cursores y sentencias preparadas es el mismo que el estado
en estaban la ltima vez que la conexin era actual.

Cuando finaliza una conexin


Cuando finaliza una conexin, se desasignan todos los recursos que el proceso de
aplicacin adquiri mediante la conexin y todos los recursos que se utilizaron
para crear y mantener la conexin. Por ejemplo, si el proceso de aplicacin ejecuta
una sentencia RELEASE, todos los cursores abiertos se cierran al finalizar la
conexin durante la siguiente operacin de confirmacin.

Una conexin tambin puede finalizar a causa de una anomala en las


comunicaciones. Si esta conexin est en estado actual, el proceso de aplicacin se
coloca en estado no conectado.

Todas las conexiones de una proceso de aplicacin finalizan cuando finaliza el


proceso.

Opciones que controlan la semntica de la unidad de trabajo


distribuida
La semntica de gestin de la conexin de tipo 2 viene determinada por un
conjunto de opciones del precompilador. Estas opciones se resumen a continuacin,
con los valores por omisin indicados con texto en negrita y subrayado.
v CONNECT (1 | 2). Especifica si las sentencias CONNECT se procesarn como
tipo 1 o como tipo 2.
v SQLRULES (DB2 | STD). Especifica si las sentencias CONNECT de tipo 2 deben
procesarse segn las normas de DB2, que permiten que CONNECT conmute a
una conexin inactiva o segn las normas estndar de SQL92, que no lo
permiten.
v DISCONNECT (EXPLICIT | CONDITIONAL | AUTOMATIC). Especifica las
conexiones de la base de datos que se desconectarn cuando se produzca una
operacin de confirmacin:
Las que se han marcado explcitamente para su liberacin mediante la
sentencia de SQL RELEASE (EXPLICIT)

Captulo 1. Conceptos 39
Opciones que controlan la semntica de la unidad de trabajo distribuida

Las que no tienen cursores WITH HOLD abiertos y las que se han marcado
para su liberacin (CONDITIONAL)
Todas las conexiones (AUTOMATIC).
v SYNCPOINT (ONEPHASE | TWOPHASE | NONE). Especifica el modo en que
se van a coordinar las operaciones COMMIT y ROLLBACK entre varias
conexiones de bases de datos. Esta opcin se ignora y se incluye nicamente
para la compatibilidad con versiones anteriores.
Las actualizaciones slo pueden producirse respecto a una base de datos de la
unidad de trabajo y el resto de las bases de datos son de slo lectura
(ONEPHASE). Cualquier intento de actualizacin en otra base de datos
producir un error (SQLSTATE 25000).
Se utiliza un gestor de transacciones (TM) en tiempo de ejecucin para
coordinar las operaciones COMMIT de dos fases entre las bases de datos que
den soporte a este protocolo (TWOPHASE).
No utiliza ningn TM para realizar las operaciones COMMIT de dos fases y
no impone un actualizador nico y un lector mltiple (NONE). Cuando se
ejecuta una sentencia COMMIT o ROLLBACK, las sentencias COMMIT o
ROLLBACK individuales se envan a todas las bases de datos. Si hay una o
varias operaciones ROLLBACK anmalas, se produce un error (SQLSTATE
58005). Si hay una o varias operaciones COMMIT anmalas, se produce un
error (SQLSTATE 40003).

Para alterar temporalmente cualquiera de las opciones anteriores en tiempo de


ejecucin, utilice el mandato SET CLIENT o la interfaz de programacin de
aplicaciones (API) sqlesetc. Sus valores actuales se pueden obtener utilizando el
mandato QUERY CLIENT o la API sqleqryc. Observe que no se trata de sentencias
de SQL, sino que son API definidas en los distintos lenguajes principales y en el
procesador de lnea de mandatos (CLP).

Consideraciones sobre la representacin de los datos


Los diversos sistemas representan los datos de maneras distintas. Cuando se
mueven datos de un sistema a otro, a veces debe realizarse una conversin de
datos. Los productos que soportan DRDA realizan automticamente las
conversiones necesarias en el sistema receptor. Para realizar conversiones de datos
numricos, el sistema necesita conocer el tipo de datos y el modo en que el sistema
emisor los representa. Se necesita informacin adicional para convertir las series de
caracteres. La conversin de series depende de la pgina de cdigos de los datos y
de la operacin que se ha de realizar con dichos datos. Las conversiones de
caracteres se llevan a cabo de acuerdo con la arquitectura de representacin de
datos de caracteres (CDRA) de IBM. Para obtener ms informacin sobre la
conversin de los caracteres, consulte el manual Character Data Representation
Architecture: Reference &Registry (SC09-2190-00).

Informacin relacionada:
v Sentencia CONNECT (Tipo 1) en Consulta de SQL, Volumen 2
v Sentencia CONNECT (Tipo 2) en Consulta de SQL, Volumen 2

Supervisores de sucesos
Los supervisores de sucesos se utilizan para reunir informacin sobre la base de
datos y las aplicaciones conectadas cuando se producen los eventos especificados.
Los sucesos representan transiciones en la actividad de la base de datos, como por
ejemplo, conexiones, puntos muertos, sentencias o transacciones. Es posible definir

40 Consulta de SQL - Volumen 1


Consideraciones sobre la representacin de los datos

un supervisor de sucesos por el tipo de suceso o los sucesos que desea supervisar.
Por ejemplo, un supervisor de sucesos espera que se produzca un punto muerto.
Cuando se produce, rene la informacin sobre las aplicaciones implicadas y los
bloqueos en contencin.

Por omisin, todas las bases de datos tienen definido un supervisor de sucesos
denominado DB2DETAILDEADLOCK el cual registra informacin detallada sobre
los sucesos de punto muerto. El supervisor de sucesos DB2DETAILDEADLOCK se
inicia automticamente al iniciar la base de datos.

Mientras el supervisor de instantneas suele utilizarse para el mantenimiento


preventivo y el anlisis de problemas, los supervisores de sucesos se utilizan para
alertar a los administradores sobre problemas inmediatos o para rastrear problemas
inminentes.

Para crear un supervisor de sucesos, utilice la sentencia de SQL CREATE EVENT


MONITOR. Los supervisores de sucesos slo renen datos de sucesos cuando
estn activos. Para activar o desactivar un supervisor de sucesos, utilice la
sentencia de SQL SET EVENT MONITOR STATE. El estado de un supervisor de
sucesos (si est activo o inactivo) puede determinarse por la funcin de SQL
EVENT_MON_STATE.

Cuando se ejecuta la sentencia de SQL CREATE EVENT MONITOR, la definicin


del supervisor de sucesos que crea se almacena en las tablas de catlogo del
sistema de bases de datos siguientes:
v SYSCAT.EVENTMONITORS: los supervisores de sucesos definidos para la base
de datos.
v SYSCAT.EVENTS: Los sucesos supervisados para la base de datos.
v SYSCAT.EVENTTABLES: las tablas destino de los supervisores de sucesos de
tablas.

Cada supervisor de sucesos tiene su propia vista lgica privada de los datos de la
instancia en los elementos del supervisor. Si un supervisor de eventos determinado
se desactiva y se vuelve a activar, se restablece su vista de estos contadores. Slo se
ve afectado el supervisor de sucesos que acaba de activarse; todos los otros
supervisores de sucesos continuarn utilizando sus vistas de los valores del
contador (ms cualquier adicin nueva).

La salida del supervisor de sucesos puede dirigirse a las tablas de SQL no


particionadas, a un archivo o a una rea de interconexin con nombre.

Conceptos relacionados:
v Database system monitor en System Monitor Guide and Reference

Tareas relacionadas:
v Collecting information about database system events en System Monitor Guide
and Reference
v Creating an event monitor en System Monitor Guide and Reference

Informacin relacionada:
v Event monitor sample output en System Monitor Guide and Reference
v Event types en System Monitor Guide and Reference

Captulo 1. Conceptos 41
Particin de bases de datos en varias particiones de base de datos

Particin de bases de datos en varias particiones de base de datos


DB2 permite una gran flexibilidad para repartir los datos entre varias particiones
(nodos) de una base de datos particionada. Los usuarios pueden elegir, mediante la
declaracin de claves de distribucin, cmo distribuirn los datos, as como
determinar sobre qu y cuntas particiones de base de datos se extendern sus
datos de tabla, seleccionando el grupo de particiones de base de datos y el espacio
de tablas en el que debern almacenarse los datos. Asimismo, una correlacin de
distribucin (que se puede actualizar) especifica la correlacin de los valores de la
clave de distribucin con las particiones de base de datos. Esto posibilita una
paralelizacin flexible de la carga de trabajo para tablas grandes, mientras que
permite que se almacenen las tablas mas pequeas en una o en un pequeo
nmero de particiones si as lo elige el diseador de la aplicacin. Cada particin
de base de datos local puede tener ndices locales acerca de los datos que almacena
para proporcionar un acceso a los datos locales de alto rendimiento.

En una base de datos particionada, la clave de distribucin se utiliza para


distribuir datos de tabla por un conjunto de particiones de base de datos. Los
datos de ndice tambin se particionan con sus tablas correspondientes y se
almacenan localmente en cada particin de base de datos.

Para poder utilizar las particiones de base de datos para almacenar datos, es
preciso definirlas en el gestor de bases de datos. Las particiones de base de datos
estn definidas en un archivo llamado db2nodes.cfg.

La clave de distribucin de una tabla en un espacio de tablas de un grupo de


particiones de una base de datos particionada se especifica en la sentencia CREATE
TABLE o en la sentencia ALTER TABLE. Si no se especifica, por omisin se crear
una clave de distribucin para una tabla a partir de la primera columna de la clave
primaria. Si no hay ninguna clave primaria definida, la clave de distribucin por
omisin ser la primera columna definida en dicha tabla que tenga un tipo de
datos que no sea un tipo de datos LOB o largo. Las tablas de las bases de datos
particionadas han de tener, como mnimo, una columna que no sea un tipo de
datos LOB ni largo. Una tabla de un espacio de tablas que se encuentre en un
grupo de particiones de base de datos de una sola particin tendr una clave de
distribucin slo si se especifica explcitamente.

Las filas se ponen en la particin de base de datos de la forma siguiente:


1. Se aplica un algoritmo de hash (funcin de particin de bases de datos) a todas
las columnas de la clave de distribucin, lo que produce la generacin de un
valor de ndice de correlacin de distribucin.
2. El nmero de particin de base de datos en dicho valor de ndice de la
correlacin de distribucin, identifica la particin de base de datos en la que se
almacenar la fila.

DB2 permite la desagrupacin parcial, lo que significa que se puede distribuir una
tabla por un subconjunto de particiones de base de datos del sistema (es decir, un
grupo de particiones de base de datos). Las tablas no tienen que distribuirse
obligatoriamente por todas las particiones de base de datos del sistema.

DB2 tiene la posibilidad de reconocer si los datos a los que se est accediendo para
una unin o una subconsulta se encuentran en la misma particin del mismo
grupo de particiones de base de datos. Esto se conoce como colocacin de tablas. Las
filas de las tablas colocadas con los mismos valores de clave de distribucin se
encuentran en la misma particin de base de datos. DB2 puede elegir realizar el

42 Consulta de SQL - Volumen 1


Particin de bases de datos en varias particiones de base de datos

proceso de unin o subconsulta en la particin de base de datos en la que estn


almacenados los datos. Esto puede tener ventajas significativas para el
rendimiento.

Las tablas colocadas deben:


v Estar en el mismo grupo de particiones de base de datos, uno que no se est
redistribuyendo. (Durante la redistribucin, es posible que las tablas del grupo
de particiones de base de datos utilicen correlaciones de distribucin diferentes;
no estn colocadas).
v Tener claves de distribucin con el mismo nmero de columnas.
v Hacer que las columnas correspondientes de la clave de distribucin sean
compatibles con la particin.
v Estar en un grupo de particiones de base de datos de una sola particin definido
en la misma particin de base de datos.

Informacin relacionada:
v Tipos de datos compatibles entre particiones de base de datos en la pgina 135

Comportamiento de objetos grandes en las tablas con particiones


Una tabla con particiones utiliza un esquema de organizacin de datos donde los
datos de las tablas se dividen en varios objetos de almacenamiento, llamados
particiones de datos o rangos, de acuerdo con los valores de una o ms columnas
de clave de particionamiento de la tabla. Los datos de una tabla determinada se
particionan en varios objetos de almacenamiento basndose en las especificaciones
proporcionadas en la clusula PARTITION BY de la sentencia CREATE TABLE.
Estos objetos de almacenamiento pueden estar en varios espacios de tablas, en el
mismo espacio de tablas o en una combinacin de ambos.

Un objeto grande de una tabla particionada queda, por omisin, almacenado en el


mismo espacio de tablas que su correspondiente objeto de datos. Esto se aplica a
las tablas particionadas que utilizan solamente uno o varios espacios de tablas.
Cuando los datos de una tabla particionada se almacenan en varios espacios de
tablas, los datos de objetos grandes tambin se almacenan en varios espacios de
tablas.

Utilice la clusula LONG IN de la sentencia CREATE TABLE para alterar


temporalmente este comportamiento por omisin. Puede especificar una lista de
espacios de tablas para la tabla donde se almacenarn los datos grandes. Si decide
alterar temporalmente el comportamiento por omisin, el espacio de tablas
especificado en la clusula LONG IN debe ser grande. Si especifica que los datos
grandes de una o ms particiones de datos se deben almacenar en un espacio de
tablas diferente, debe hacerlo as para todas las particiones de datos de la tabla. Es
decir, no puede tener datos grandes almacenados de manera remota para algunas
particiones de datos y almacenados localmente para otras. Si utiliza el
comportamiento por omisin o la clusula LONG IN para alterar temporalmente el
comportamiento por omisin, se crea un objeto grande para que se corresponda
con cada particin de datos. En los espacios de tablas SMS, los datos grandes
deben residir en el mismo espacio de tablas que el objeto de datos al que
pertenece. Todos los espacios de tabla utilizados para almacenar objetos de datos
largos correspondientes a cada particin de datos deben tener los mismos: tamao
de pgina, tamao de extensin, mecanismo de almacenaje (DMS o SMS) y tipo de
almacenaje (regular o grande). Los espacios de tabla largos remotos deben ser de
tipo LARGE y no pueden ser SMS.

Captulo 1. Conceptos 43
Particin de bases de datos en varias particiones de base de datos

Por ejemplo, la siguiente sentencia CREATE TABLE crea objetos para los datos
CLOB para cada particin de datos del mismo espacio de tablas que los datos:
CREATE TABLE documento(id INT, contenido CLOB)
PARTITION BY RANGE(id)
(STARTING FROM 1 ENDING AT 100 IN tbsp1,
STARTING FROM 101 ENDING AT 200 IN tbsp2,
STARTING FROM 201 ENDING AT 300 IN tbsp3,
STARTING FROM 301 ENDING AT 400 IN tbsp4);

Puede utilizar LONG IN para situar los datos CLOB en uno o ms espacios de
tablas grandes, diferentes de aquellos donde se encuentran los datos.
CREATE TABLE documento(id INT, contenido CLOB)
PARTITION BY RANGE(id)
(STARTING FROM 1 ENDING AT 100
IN tbsp1 LONG IN large1,
STARTING FROM 101 ENDING AT 200
IN tbsp2 LONG IN large1,
STARTING FROM 201 ENDING AT 300
IN tbsp3 LONG IN large2,
STARTING FROM 301 ENDING AT 400
IN tbsp4 LONG IN large2);

Nota: Slo se permite una nica clusula LONG IN en el nivel de tabla y para
cada particin de datos.

Conceptos relacionados:
v Data partitions en Administration Guide: Planning
v Understanding index behavior on partitioned tables en Performance Guide
v Large object (LOB) column considerations en Administration Guide:
Implementation
v Partitioned materialized query table behavior en Administration Guide:
Implementation
v Optimization strategies for partitioned tables en Performance Guide
v Partitioned tables en Administration Guide: Planning
v Space requirements for large object data en Administration Guide: Planning
v Table partitioning en Administration Guide: Planning

Tareas relacionadas:
v Creating partitioned tables en Administration Guide: Implementation

Informacin relacionada:
v Sentencia CREATE TABLE en Consulta de SQL, Volumen 2
v Objeto grande (LOB) en la pgina 97

Sistemas federados de DB2

Sistemas federados
Un sistema federado es un tipo especial de sistema de gestin de bases de datos
distribuidas (DBMS). Un sistema federado consta de una instancia DB2 que
funciona como un servidor federado, una base de datos que acta como la base de
datos federada, una o ms fuentes de datos y clientes (usuarios y aplicaciones) que
acceden a la base de datos y a fuentes de datos.

44 Consulta de SQL - Volumen 1


Sistemas federados de DB2

Con un sistema federado, puede enviar peticiones distribuidas a varias fuentes de


datos utilizando de una sola sentencia de SQL. Por ejemplo, puede unir datos que
estn ubicados en una tabla DB2, una tabla Oracle y un archivo con identificador
XML en una nica sentencia de SQL. La figura siguiente muestra los componentes
de un sistema federado y un ejemplo de las fuentes de datos a las que el usuario
puede acceder.

Familia
DB2
DB2 UDB
para z/OS

Sybase

VSAM

Vista SQL integrada


Informix
WebSphere Federation Server
IMS WebSphere O SQL, SQL/XML
Classic D
Federation Server B Federation server Microsoft
para z/OS C SQL Server
Software AG Derivadores y funciones
Adabas

Oracle
CA-Datacom

CA-IDMS Teradata

ODBC
XML

Datos Texto XML Excel WebSphere Script


biolgicos MQ
y algoritmos

Figura 9. Componentes de un sistema federado

La potencia de un sistema federado se encuentra en su capacidad de:


v Correlacionar datos desde tablas locales y fuentes de datos remotas, como si
todos los datos estuviesen almacenados localmente en la base de datos federada
v Actualizar datos en las fuentes de datos relacionales, como si los datos
estuvieran almacenados en la base de datos federada
v Mover datos a fuentes de datos relacionales y desde las mismas
v Sacar partido de las fuerzas de proceso de fuentes de datos, mediante el envo
de consultas a las fuentes de datos para procesarlas
v Compensar las limitaciones de SQL existentes en la fuente de datos, mediante el
proceso de partes de una peticin distribuida en el servidor federado

Qu es una fuente de datos?


En un sistema federado, una fuente de datos puede ser una base de datos relacional
(como por ejemplo Oracle o Sybase) o una fuente de datos no relacional (como por
ejemplo un algoritmo de bsqueda BLAST o un archivo con identificador XML).

Captulo 1. Conceptos 45
Sistemas federados de DB2

Por medio de algunas fuentes de datos, puede acceder a otras fuentes de datos.
Por ejemplo, con el derivador ODBC puede acceder a un servidor WebSphere
Classic Federation para fuentes de datos de z/OS tales como DB2 UDB para z/OS,
IMS, CA-IDMS, CA-Datacom, Software AG Adabas y VSAM.

El mtodo, o protocolo, que se utiliza para acceder a una fuente de datos depende
del tipo de fuente de datos. Por ejemplo, DRDA se utiliza para acceder a fuentes
de datos DB2 para z/OS.

Las fuentes de datos son autnomas. Por ejemplo, el servidor federado puede
enviar consultas a fuentes de datos Oracle al mismo tiempo que aplicaciones
Oracle acceden a estas fuentes de datos. Un sistema federado no monopoliza o
restringe el acceso al resto de fuentes de datos, ms all de restricciones de
integridad y bloqueo.

La base de datos federada


Para usuarios finales y aplicaciones cliente, las fuentes de datos aparecen como una
nica base de datos colectiva en DB2. Los usuarios y las aplicaciones interactan
con la base de datos federada gestionada por el servidor federado.

La base de datos federada contiene un catlogo del sistema que almacena


informacin sobre los datos. El catlogo del sistema de la base de datos federada
contiene entradas que identifican las fuentes de datos y sus caractersticas. El
servidor federado consulta la informacin que est almacenada en el catlogo del
sistema de la base de datos federada y el derivador de la fuente de datos para
determinar cul es el mejor plan para procesar las sentencias de SQL.

El sistema federado procesa sentencias de SQL como si los datos de las fuentes de
datos fuesen tablas relacionales ordinarias o vistas dentro de la base de datos
federada. Como resultado de ello:
v El sistema federado puede correlacionar datos relacionales con datos en formatos
no relacionales. Esto tambin se aplica cuando las fuentes de datos utilizan
distintos dialectos de SQL o cuando no dan soporte a SQL.
v Las caractersticas de la base de datos federada tienen prioridad cuando existen
diferencias entre las caractersticas de la base de datos federada y las
caractersticas de las fuentes de datos. Los resultados de la consulta se ajustan a
la semntica de DB2, incluso si los datos de otras fuentes de datos no DB2 se
utilizan para computar el resultado de la consulta.
Ejemplos:
La pgina de cdigos que el servidor federado utiliza es diferente a la pgina
de cdigos utilizada por la fuente de datos. En este caso, los datos de carcter
de la fuente de datos se convierten en base a la pgina de cdigos utilizada
por la base de datos federada, cuando los datos se devuelven a un usuario
federado.
La secuencia de clasificacin que el servidor federado utiliza es diferente a la
secuencia de clasificacin utilizada por la fuente de datos. En este caso,
cualquier operacin de clasificacin en datos de carcter se realiza en el
servidor federado en lugar de en la fuente de datos.

Compilador de SQL
El compilador de SQL de DB2 recopila informacin para ayudarle a procesar
consultas.

46 Consulta de SQL - Volumen 1


Sistemas federados de DB2

Para obtener datos desde fuentes de datos, los usuarios y las aplicaciones envan
consultas en SQL a la base de datos federada. Cuando se enva una consulta, el
compilador de SQL de DB2 consulta informacin del catlogo global y del
derivador de fuentes de datos para ayudarle a procesar la consulta. Esto incluye
informacin sobre la conexin a la fuente de datos, informacin de servidor,
correlaciones, informacin de ndice y estadsticas de proceso.

Derivadores y mdulos de derivador


Los derivadores son mecanismos mediante los cuales la base de datos federada
interacta con fuentes de datos. La base de datos federada utiliza rutinas
almacenadas en una biblioteca llamada un mdulo de derivador para implementar un
derivador.

Estas rutinas permiten a la base de datos federada realizar operaciones tales como
conectar con una fuente de datos y recuperar datos de la misma interactivamente.
Normalmente, el propietario de la instancia federada utiliza la sentencia CREATE
WRAPPER para registrar un derivador en la base de datos federada. Puede
registrar un derivador como protegido o fiable utilizando la opcin de derivador
DB2_FENCED.

Debe crear un derivador para cada tipo de fuente de datos al que desee acceder.
Por ejemplo, desea acceder a tres tablas de base de datos DB2 para z/OS, una
tabla DB2 para iSeries , dos tablas de Informix y una vista de Informix. En este
caso, necesita crear un derivador para los objetos de fuente de datos DB2 y un
derivador para los objetos de fuente de datos Informix. Despus de registrar estos
derivadores en la base de datos federada, puede utilizar estos derivadores para
acceder a otros objetos desde esas fuentes de datos. Por ejemplo, puede utilizar el
derivador de DRDA con todos los objetos de fuente de datos de la familia de DB2
DB2 Versin 9.1 para Linux, UNIX y Windows, DB2 para z/OS, DB2 para
iSeries y Servidor DB2 para VM y VSE.

Para identificar los datos especficos (nombre, ubicacin, etc.) de cada objeto de
fuente de datos, debe utilizar las definiciones y apodos del servidor.

Un derivador realiza muchas tareas. A continuacin se indican algunas de ellas:


v Se conecta con la fuente de datos. El derivador utiliza la API de conexin
estndar de la fuente de datos.
v Enva consultas a la fuente de datos.
Para las fuentes de datos que dan soporte a SQL, la consulta se enva en SQL.
Para las fuentes de datos que no dan soporte a SQL, la consulta se traduce al
lenguaje de consulta nativo de la fuente de datos o se convierte en una serie
de llamadas de API de la fuente de datos.
v Recibe los conjuntos de resultados de la fuente de datos. El derivador utiliza las
API estndar de la fuente de datos para recibir los conjuntos de resultados.
v Responde a consultas de base de datos federada sobre las correlaciones de tipo
de datos por omisin para una fuente de datos. El derivador contiene las
correlaciones de tipos por omisin que se utilizan cuando se crean apodos para
un objeto de fuente de datos. Para los derivadores relacionales, las correlaciones
de tipos de datos que el usuario crea alteran temporalmente las correlaciones de
tipos de datos por omisin. Las correlaciones de tipos de datos definidos por el
usuario se almacenan en el catlogo global.
v Responde a consultas de base de datos federada sobre las correlaciones de
funciones por omisin para una fuente de datos. La base de datos federada
necesita informacin de correlacin de tipo de datos con la finalidad de

Captulo 1. Conceptos 47
Sistemas federados de DB2

planificar las consultas. El derivador contiene informacin que la base de datos


federada necesita para determinar si las funciones de DB2 se correlacionan con
funciones de la fuente de datos, y cmo se correlacionan las funciones. El
Compilador de SQL utiliza esta informacin para determinar si la fuente de
datos es capaz de realizar las operaciones de consulta. Para los derivadores
relacionales, las correlaciones de funciones que crea el usuario alteran
temporalmente las correlaciones de tipos de funciones por omisin. Las
correlaciones de funciones definidas por el usuario se almacenan en el catlogo
global.

Las opciones de derivador se utilizan para configurar el derivador o para definir el


modo en que el WebSphere Federation Server utiliza el derivador.

Definiciones de servidor y opciones de servidor


Despus de haber creado los derivadores para las fuentes de datos, el propietario
de la instancia federada define las fuentes de datos para la base de datos federada.

El propietario de la instancia proporciona un nombre para identificar la fuente de


datos y otra informacin relacionada con la fuente de datos. Esta informacin
incluye lo siguiente:
v El tipo y la versin de la fuente de datos
v El nombre de base de datos para la fuente de datos (solo para RDBMS)
v Los metadatos especficos para la fuente de datos

Por ejemplo, una fuente de datos de la familia DB2 puede tener mltiples bases
de datos. La definicin debe especificar la base de datos a la que puede conectarse
el servidor federado. En cambio, una fuente de datos Oracle tiene una sola base de
datos, y el servidor federado puede conectarse a la base de datos sin conocer su
nombre. El nombre de la base de datos no est incluido en la definicin de
servidor federado de una fuente de datos Oracle.

El nombre y la otra informacin que el propietario de la instancia proporciona al


servidor federado se denominan, colectivamente, definicin de servidor. Las fuentes
de datos responden a las peticiones de datos y son servidores por derecho propio.

Las sentencias CREATE SERVER y ALTER SERVER se utilizan para crear y


modificar una definicin de servidor.

Parte de la informacin de una definicin de servidor se almacena en forma de


opciones de servidor. Cuando cree definiciones de servidor, es importante que
entienda las opciones que puede especificar acerca del servidor.

Las opciones de servidor se pueden definir de forma que se conserven de una


conexin a otra con la base de datos o bien se pueden definir para que sean
vigentes durante una sola conexin.

Correlaciones de usuarios
Normalmente, se debe definir una asociacin entre el servidor federado y una
fuente de datos.

Cuando un servidor federado necesita desplazar una peticin a una fuente de


datos, el servidor debe establecer, en primer lugar, una conexin con la fuente de
datos. Para la mayora de las fuentes de datos, el servidor federado lleva a cabo
esta accin utilizando un ID de usuario y una contrasea vlidos para esa fuente

48 Consulta de SQL - Volumen 1


Sistemas federados de DB2

de datos. Cuando es necesario un ID de usuario y una contrasea para conectarse


a una fuente de datos, puede definir una asociacin entre el ID de autorizacin del
servidor federado y el ID de usuario y contrasea de la fuente de datos. Esta
asociacin se debe crea para cada ID de usuario que el sistema federado utilizar
para enviar peticiones distribuidas. Esta asociacin se denomina correlacin de
usuarios.

En algunos casos, no es necesario crear una correlacin de usuarios si el ID de


usuario y la contrasea que utiliza para conectar con la base de datos federada son
los mismos que utiliza para acceder a la fuente de datos remota. Puede crear y
almacenar las correlaciones de usuarios en la base de datos federada, o bien puede
almacenar las correlaciones de usuarios en un depsito externo, como por ejemplo
LDAP.

Apodos y objetos de fuente de datos


Despus de haber creado las definiciones de servidor y las correlaciones de
usuarios, el propietario de la instancia federada crea los apodos. Un apodo es un
identificador que se utiliza para hacer referencia al objeto que se encuentra en las
fuentes de datos a las que desea acceder. Los objetos que los apodos identifican se
denominan objetos de fuente de datos.

Los apodos no son nombres alternativos para los objetos de fuente de datos de la
misma forma en que los alias son nombres alternativos. Son punteros mediante los
cuales el servidor federado hace referencia a esos objetos. Normalmente los apodos
se definen mediante la sentencia CREATE NICKNAME junto con determinadas
opciones de columna de apodo y opciones de apodo.

Cuando un usuario final o una aplicacin cliente enva una peticin distribuida al
servidor federado, la peticin no necesita especificar las fuentes de datos. En lugar
de ello, la peticin especifica los objetos de fuente de datos utilizando sus apodos.
Los apodos estn correlacionados con objetos especficos contenidos en la fuente de
datos. Estas correlaciones eliminan la necesidad de calificar los apodos con los
nombres de las fuentes de datos. El usuario final y la aplicacin cliente no
necesitan conocer la ubicacin de los objetos de fuente de datos.

Suponga que define el apodo DEPT para representar una tabla de bases de datos
Informix llamada NFX1.PERSON. El servidor federado admite la sentencia
SELECT * FROM DEPT. Sin embargo, la sentencia SELECT * FROM
NFX1.PERSON no est permitida desde el servidor federado (excepto en una
sesin de paso a travs) a menos que haya una tabla local en el servidor federado
llamada NFX1.PERSON.

Cuando crea un apodo para un objeto de fuente de datos, se aaden metadatos


acerca del objeto al catlogo global. Para facilitar el acceso al objeto de fuente de
datos, el optimizador de consultas utiliza estos metadatos y la informacin que se
encuentra en el derivador. Por ejemplo, si el apodo es para una tabla que tiene un
ndice, el catlogo global contiene informacin acerca del ndice. El derivador
contiene las correlaciones entre los tipos de datos DB2 y los tipos de datos de
fuente de datos.

Los datos de apodo basados en objetos de fuente de datos que utilizan un sistema
de seguridad de etiquetas no se ponen en antememoria normalmente, de modo
que los datos del objeto permanecen seguros. Por ejemplo con el derivador de
Oracle Net8, si crea un apodo en una tabla de Oracle que utiliza Oracle Label
Security (seguridad de etiqueta de Oracle), la tabla se identifica automticamente

Captulo 1. Conceptos 49
Sistemas federados de DB2

como segura. Los datos de apodo resultantes no se pueden poner en antememoria


lo que significa que no se pueden crear tablas de consultas materializadas en los
mismos. Este valor garantiza que slo vean la informacin los usuarios con la
autoridad apropiada en el sistema Oracle. Los apodos que se hayan creado en
objetos de fuente de datos que utilizan Oracle Label Security (seguridad de
etiqueta de Oracle) antes de que esta caracterstica estuviese disponible, se deben
cambiar para no permitir la colocacin en antememoria. Puede utilizar la sentencia
ALTER NICKNAME para permitir o no permitir la colocacin en antememoria en
un apodo. El resto de apodos basados en derivadores distintos de Oracle Net8,
deben utilizar la sentencia ALTER NICKNAME para inhabilitar la colocacin en
antememoria de datos en el servidor federado.

Actualmente, algunas operaciones de programas de utilidad de DB2 no se pueden


ejecutar en apodos, como por ejemplo RUNSTATS.

No puede utilizar el programa de utilidad Cross Loader para realizar una carga
cruzada en un apodo.

Opciones de columna de apodo


Puede proporcionar al catlogo global informacin de metadatos adicional acerca
del objeto con apodo. Estos metadatos describen valores en determinadas columnas
del objeto de fuente de datos. El usuario asigna estos metadatos a parmetros
llamados opciones de columna de apodo.

Las opciones de columna de apodo indican al derivador que debe manejar los
datos de una columna de forma distinta a como normalmente los manejara. El
compilador de SQL y el optimizador de consultas utilizan los metadatos para
desarrollar mejores planes para acceder a los datos.

Las opciones de columna de apodo tambin se utilizan para proporcionar otros


elementos de informacin al derivador. Por ejemplo, para las fuentes de datos
XML, se utiliza una opcin de columna de apodo para indicar al derivador la
expresin XPath que debe utilizar cuando el derivador analice la columna fuera del
documento XML.

Con la federacin, el servidor DB2 trata al objeto de fuente de datos al que un


apodo hace referencia como si fuese una tabla de DB2 local. Como resultado, el
usuario puede definir opciones de columna de apodo para cualquier objeto de
fuente de datos para el que se cree un apodo. Algunas opciones de columna de
apodo estn pensadas para tipos determinados de fuentes de datos y slo pueden
aplicarse a esas fuentes de datos.

Suponga que una fuente de datos tiene una secuencia de clasificacin que difiere
de la secuencia de clasificacin de la base de datos federada. El servidor federado
normalmente no clasificara ninguna columna que contuviese datos de carcter en
la fuente de datos. Devolvera los datos a la base de datos federada y realizara la
clasificacin localmente. Sin embargo, suponga que los datos de la columna son de
tipo carcter (CHAR o VARCHAR) y que slo contiene caracteres numricos
(0,1,...,9). Puede indicar este hecho asignando el valor Y a la opcin de
columna de apodo NUMERIC_STRING. Esto proporciona al optimizador de
consultas de DB2 la posibilidad de realizar la clasificacin en la fuente de datos. Si
la clasificacin se realiza de forma remota, puede evitar la actividad que supone
transferir los datos al servidor federado y realizar la clasificacin localmente.

50 Consulta de SQL - Volumen 1


Sistemas federados de DB2

Puede definir opciones de columna de apodo para apodos relacionales utilizando


las sentencias ALTER NICKNAME. Puede definir opciones de columna de apodo
para apodos no relacionales utilizando las sentencias CREATE NICKNAME y
ALTER NICKNAME.

Correlaciones de tipos de datos


Los tipos de datos en la fuente de datos se deben correlacionar con tipos de datos
DB2 correspondientes de manera que el servidor federado pueda recuperar datos
desde las fuentes de datos.

A continuacin se muestran algunos ejemplos de correlaciones de tipos de datos


por omisin:
v El tipo FLOAT de Oracle se correlaciona con el tipo DOUBLE de DB2.
v El tipo DATE de Oracle se correlaciona con el tipo TIMESTAMP de DB2.
v El tipo DATE de DB2 para z/OS se correlaciona con el tipo DATE de DB2

Para la mayor parte de fuentes de datos, las correlaciones de tipos por omisin se
encuentran en los derivadores. Las correlaciones de tipos por omisin para fuentes
de datos DB2 estn en el derivador de DRDA. Las correlaciones de tipos por
omisin para Informix estn en el derivador de INFORMIX, etc.

Para algunas fuentes de datos no relacionales, hay que especificar la informacin


de tipos de datos en la sentencia CREATE NICKNAME. Los tipos de datos DB2
correspondientes se deben especificar para cada columna del objeto de fuente de
datos cuando se crea el apodo. Cada columna debe correlacionarse con un campo
o columna determinados del objeto de la fuente de datos.

Para las fuentes de datos relacionales, puede alterar temporalmente las


correlaciones de tipos de datos definidas por omisin. Por ejemplo, el tipo de datos
INTEGER de Informix est correlacionado por omisin con el tipo de datos
INTEGER de DB2. Puede alterar temporalmente las correlaciones por omisin y
correlacionar el tipo de datos INTEGER de Informix con el tipo de datos
DECIMAL(10,0) de DB2.

El servidor federado
En un sistema federado se hace referencia al servidor DB2 como el servidor
federado. Puede configurarse el nmero de instancias de DB2 que se desee para
que funcionen como servidores federados. Como servidores federados, puede
utilizar instancias de DB2 existentes o bien crear nuevas instancias especficamente
para el sistema federado.

La instancia de DB2 que gestiona el sistema federado se denomina servidor, pues


responde a las peticiones de los usuarios finales y de las aplicaciones cliente. Con
frecuencia, el servidor federado enva partes de las peticiones que recibe a las
fuentes de datos para su proceso. Una operacin de desplazamiento es una
operacin que se procesa de forma remota. La instancia de DB2 que gestiona el
sistema federado se denomina servidor federado, aunque acte como cliente
cuando desplaza las peticiones a las fuentes de datos.

Como cualquier otro servidor de aplicaciones, el servidor federado es una instancia


del gestor de bases de datos. Los procesos de aplicacin se conectan y envan
peticiones a la base de datos que est dentro del servidor federado. Sin embargo,
existen dos caractersticas principales que lo diferencian de otros servidores de
aplicaciones:

Captulo 1. Conceptos 51
Sistemas federados de DB2

v Un servidor federado est configurado para recibir peticiones que podran


destinarse total o parcialmente a las fuentes de datos. El servidor federado
distribuye esas peticiones a las fuentes de datos.
v Como otros servidores de aplicacin, un servidor federado utiliza protocolos de
comunicacin DRDA (mediante TCP/IP) para comunicarse con instancias de la
familia DB2. Sin embargo, a diferencia de otros servidores de aplicaciones, un
servidor federado utiliza el cliente nativo de la fuente de datos para acceder a la
fuente de datos. Por ejemplo, un servidor federado utiliza Sybase Open Client
para acceder a fuentes de datos Sybase y un controlador ODBC de Microsoft
SQL Server para acceder a fuentes de datos Microsoft SQL Server.

Fuentes de datos soportadas


Hay muchas fuentes de datos a las que puede acceder utilizando un sistema
federado.

La tabla siguiente muestra las fuentes de datos soportadas:


Tabla 1. Versiones de fuente de datos soportadas y mtodos de acceso
Fuente de datos Versiones soportadas Mtodos de acceso y
requisitos
BLAST Fixpacks del 2.2.3 al 2.2.8 Daemon BLAST (se
soportados proporciona con el derivador)
BioRS 5.2.x.x HTTP
DB2 Database para Linux, 8.1, 8.2, 9.1 DRDA
UNIX y Windows
DB2 Universal Database 6.1, 7.1 con las siguientes DRDA
para z/OS APAR aplicadas:
v PQ62695
v PQ55393
v PQ56616
v PQ54605
v PQ46183
v PQ62139

8.1
DB2 Universal Database 5.2 con las siguientes DRDA
para iSeries APAR y PTF aplicadas:
v APAR SE06003, PTF
SI04582
v APAR SE07533, PTF
SI05991
v APAR SE08416, PTF
SI07135
v APAR II13348, PTFs
SF99502, SI11626,
SI11378

5.3

5.4 con la APAR


SE23546, PTF SI21661
aplicada.

52 Consulta de SQL - Volumen 1


Sistemas federados de DB2

Tabla 1. Versiones de fuente de datos soportadas y mtodos de acceso (continuacin)


Fuente de datos Versiones soportadas Mtodos de acceso y
requisitos
DB2 Server para VM y 7.1 (o posterior) con DRDA
VSE arreglos para las APAR
para las funciones de
esquema aplicadas.
Entrez soportadas HTTP.
GenBank soportadas HTTP. Conexin con NCBI
por medio de la Web. Use el
derivador Entrez para
acceder a esta fuente de
datos.
HMMER 2.2g, 2.3 Daemon HMMER (lo
proporciona el derivador)
Informix 7.31, 8.4, 8.5, 9.4, 10.0 Cliente de Informix SDK
V2.81 (o posterior)

En Solaris, el cliente de
Informix SDK versin
2.81.FC2 no est soportado.
Si est utilizando el cliente
de Informix versin 2.81.FC2,
actualice el cliente a la
versin 2.81.FC2R1 o
posterior.

En Windows, el cliente de
Informix SDK versin
2.81.TC2 o posterior.

En el sistema operativo
zLinux en la modalidad de
64 bits, el cliente de Informix
versin 2.81.FC1 o 2.81.FC2
no est soportado.Si est
utilizando una de estas
versiones cliente, actualice el
cliente a la versin 2.81.FC3 o
posterior.
KEGG KEGG API 3.2 Funciones definidas por el
usuario para KEGG
Microsoft Excel 97, 2000, 2002, 2003 Excel 97, 2000, 2002 o 2003
instalado en el servidor
federado

Captulo 1. Conceptos 53
Sistemas federados de DB2

Tabla 1. Versiones de fuente de datos soportadas y mtodos de acceso (continuacin)


Fuente de datos Versiones soportadas Mtodos de acceso y
requisitos
Microsoft SQL Server Service Packs 2000 SP3 y En Windows, el controlador
posteriores en dicho de Microsoft SQL Server
release, 2005 Client ODBC 3.0 (o
posterior).

En UNIX:
v Controlador de DataDirect
Technologies
(antiguamente MERANT)
Connect ODBC 4.2 (o
posterior).
v El derivador de Microsoft
SQL Server con base de
datos UTF-8 requiere
DataDirect Connect para
ODBC 4.2 Service Pack 2 o
posterior.
ODBC 3.x Controlador ODBC para la
fuente de datos.Acceso de
controlador ODBC a
Redbrick y acceso de
controlador ODBC a
WebSphere Classic
Federation Server para
fuentes de datos z/OS, como
por ejemplo, IMS, VSAM,
CA-Datacom, CA-IDMS y
Software AG Adabas.
OLE DB 2.7, 2.8 OLE DB 2.0 (o posterior)
OMIM soportados HTTP. Conexin con NCBI
por medio de la Web y del
programa de utilidad
query.fcgi de OMIM.Use el
derivador Entrez para
acceder a esta fuente de
datos.
Oracle 8.1.7, 9.0, 9.1, 9.2, 9i, 10g Cliente de red Oracle o
software de cliente de NET8
PeopleSoft 8.x IBM WebSphere Business
Integration Adapter for
PeopleSoft v2.3.1, 2.4.
Requiere WebSphere MQ
Series.
PubMed soportados HTTP. Conexin con NCBI
por medio de la Web. Use el
derivador Entrez para
acceder a esta fuente de
datos.
SAP 3.x, 4.x IBM WebSphere Business
Integration Adapter for
mySAP.com v2.3.1, 2.4.
Requiere WebSphere MQ
Series.

54 Consulta de SQL - Volumen 1


Sistemas federados de DB2

Tabla 1. Versiones de fuente de datos soportadas y mtodos de acceso (continuacin)


Fuente de datos Versiones soportadas Mtodos de acceso y
requisitos
Script Daemon de script (se
proporciona con el derivador)
Siebel 7, 7.5, 2000 IBM WebSphere Business
Integration Adapter for Siebel
eBusiness Applications v2.3.1,
2.4. Requiere WebSphere MQ
Series.
Sybase 12.0, 12.5 Interfaz ctlib de Sybase Open
Client
Archivos con estructura de Ninguno
tabla
Teradata V2R4, V2R5, V2R6 Interfaz a nivel de llamada
de Teradata, Versin 2
(CLIv2) Release 04.06 (o
posterior)

En Windows, el cliente de
Teradata TTU 7.0 o posterior
y la biblioteca de API de
Teradata CLIv2 4.7.0 o
posterior en el servidor
federado.
Servicios Web Especificaciones de HTTP, HTTPS. Las funciones
SOAP 1.0., 1.1, WSDL definidas por el usuario de
1.0, 1.1 SOAP consumen servicios
Web.
WebSphere MQ Server edition 6.0 Funciones definidas por el
usuario de WebSphere MQ
en los esquemas DB2MQ,
DB2MQ1C y DB2MQT.
XML Especificacin 1.0 Ninguno

Catlogo del sistema de bases de datos federadas


El catlogo del sistema de la base de datos federada contiene informacin acerca
de los objetos de la base de datos federada e informacin acerca de los objetos de
las fuentes de datos.

En una base de datos federada, el catlogo se denomina catlogo global, pues


contiene informacin acerca de todo el sistema federado. El optimizador de
consultas de DB2 utiliza la informacin del catlogo global y del derivador de
fuente de datos para determinar la mejor manera de procesar sentencias de SQL.
La informacin almacenada en el catlogo global incluye informacin remota y
local, como por ejemplo nombres de columna, tipos de datos de columna, valores
por omisin de columna, informacin de ndice e informacin de estadsticas.

La informacin de catlogo remota es la informacin o el nombre que utiliza la


fuente de datos. La informacin de catlogo local es la informacin o el nombre
que utiliza la base de datos federada. Por ejemplo, imaginemos que una tabla
remota incluye una columna cuyo nombre es EMPNO. El catlogo global
almacenara el nombre de la columna remota como EMPNO. A menos que designe
un nombre distinto, el nombre de la columna local se almacenar como EMPNO.

Captulo 1. Conceptos 55
Sistemas federados de DB2

Puede cambiar el nombre de la columna local por Empleado_nmero. Los usuarios


que enven consultas que incluyan esta columna utilizarn Empleado_nmero en sus
consultas en lugar de EMPNO. Utilice la sentencia ALTER NICKNAME para
cambiar el nombre local de las columnas de la fuente de datos.

Para fuentes de datos relacionales y no relacionales, la informacin almacenada en


el catlogo global incluye tanto informacin remota como local.

Para ver la informacin de tabla de fuente de datos que est almacenada en el


catlogo global, consulte las vistas de catlogo SYSCAT.TABLES,
SYSCAT.NICKNAMES, SYSCAT.TABOPTIONS, SYSCAT.INDEXES,
SYSCAT.INDEXOPTIONS, SYSCAT.COLUMNS y SYSCAT.COLOPTIONS en la
base de datos federada.

El catlogo global tambin incluye informacin acerca de las fuentes de datos. Por
ejemplo, el catlogo global incluye informacin que el servidor federado utiliza
para conectarse con la fuente de datos y para correlacionar las autorizaciones de
los usuarios federados con las autorizaciones de los usuarios de la fuente de datos.
El catlogo global contiene atributos acerca de la fuente de datos que el usuario
establece explcitamente, como por ejemplo, las opciones de servidor.

Optimizador de consultas
Como parte del proceso del compilado de SQL, el optimizador de consultas analiza
una consulta. El compilador desarrolla estrategias alternativas, llamadas planes de
acceso, para procesar la consulta.

Los planes de acceso pueden llamar a la consulta para que sta:


v La procesen las fuentes de datos.
v La procese el servidor federado.
v La procesen en parte las fuentes de datos y en parte el servidor federado.

El optimizador de consultas evala los planes de acceso principalmente en base a


la informacin sobre las capacidades y los datos de la base de datos. El derivador
y el catlogo global contienen esta informacin. El optimizador de consultas
descompone la consulta en segmentos que se llaman fragmentos de consulta. Por
lo general, es ms eficaz enviar un fragmento de consulta a una fuente de datos, si
sta puede procesar el fragmento. Sin embargo, el optimizador de consultas tiene
en cuenta otros factores, tales como:
v El volumen de datos que se deben procesar.
v La velocidad de proceso de la fuente de datos.
v El volumen de datos que devolver el fragmento.
v El ancho de banda de las comunicaciones.
v El hecho de si en el servidor federado existe o no una tabla de consulta
materializada utilizable que represente el mismo resultado de consulta.

El optimizador de consultas genera alternativas de plan de acceso para procesar un


fragmento de consulta. Las alternativas de plan realizan cantidades variables de
trabajo localmente en el servidor federado y en las fuentes de datos remotas.
Puesto que el optimizador de consultas est basado en los costes, asigna costes de
consumo de recursos a las alternativas de plan de acceso. A continuacin, el
optimizador de consultas elige el plan que mejor procesar la consulta con el
menor consumo de recursos.

56 Consulta de SQL - Volumen 1


Sistemas federados de DB2

Si cualquiera de los fragmentos se van a procesar mediante fuentes de datos, la


base de datos federada enva estos fragmentos a las fuentes de datos. Una vez las
fuentes de datos procesan los fragmentos, los resultados se recuperan y se
devuelven a la base de datos federada. Si la base de datos federada ha realizado
cualquier parte del proceso, ste combina sus resultados con los resultados
recuperados desde la fuente de datos. La base de datos federada, a continuacin,
devuelve todos los resultados al cliente.

Secuencias de clasificacin
El orden en el que los datos de carcter se almacenan en una base de datos
depende de la estructura de los datos y de la secuencia de clasificacin definida
para la base de datos.

Suponga que los datos de una base de datos estn todos en letras maysculas y no
contienen caracteres numricos o especiales. Una clasificacin de los datos debera
dar como resultado la misma salida, independientemente de si los datos estn
almacenados en la fuente de datos o en la base de datos federada. La secuencia de
clasificacin utilizada por cada base de datos no debera impactar los resultados de
clasificacin. De la misma manera, si los datos de la base de datos estn todos en
letras minsculas o son todos caracteres numricos, una clasificacin de los datos
debera generar los mismos resultados independientemente de si la clasificacin se
efecta realmente.

Si los datos consisten en cualquiera de las siguientes estructuras:


v Una combinacin de letras y caracteres numricos
v Letras tanto maysculas como minsculas
v Caracteres especiales tales como @, #,
La clasificacin de estos datos puede dar como resultado diferentes salidas, si la
base de datos federada y la fuente de datos utilizan diferentes secuencias de
clasificacin.

En trminos generales, una secuencia de clasificacin es un orden definido para


datos de carcter que determina si un carcter en particular se clasifica por encima,
por debajo o al mismo nivel que otro carcter.

Cmo las secuencias de clasificacin determinan los rdenes de


clasificacin
Una secuencia de clasificacin determina el orden de clasificacin de los caracteres
en un conjunto de caracteres codificado.

Un conjunto de caracteres es el agregado de caracteres que se utilizan en un


sistema informtico o lenguaje de programacin. En un conjunto de caracteres
codificado, cada carcter se asigna a un nmero diferente dentro del rango de 0 a
255 (o el equivalente hexadecimal del mismo). Los nmeros reciben el nombre de
elemento de cdigo; las asignaciones de nmeros a caracteres en un conjunto se
denominan colectivamente una pgina de cdigos.

Adems de asignarse a un carcter, un elemento de cdigo se puede correlacionar


con la posicin del carcter en un orden de clasificacin. En trminos tcnicos, por
tanto, una secuencia de clasificacin en la correlacin colectiva de los elementos de
cdigo de un conjunto de caracteres a las posiciones de orden de clasificacin de
los caracteres del conjunto. La posicin de un carcter se representa mediante un

Captulo 1. Conceptos 57
Sistemas federados de DB2

nmero; este nmero se denomina el peso del carcter. En la secuencia de


clasificacin ms simple, llamada una secuencia de identidad, los pesos son
idnticos a los elementos de cdigo.

Suponga que la base de datos ALPHA utiliza la secuencia de clasificacin por


omisin de la pgina de cdigos EBCDIC, y que la base de datos BETA utiliza la
secuencia de clasificacin por omisin de la pgina de cdigos ASCII. Los rdenes
de clasificacin para series de caracteres en estas dos bases de datos diferiran,
como se muestra en el ejemplo siguiente:
SELECT.....
ORDER BY COL2
EBCDIC-Based Sort ASCII-Based Sort
COL2 COL2
---- ----
V1G 7AB
Y2W V1G
7AB Y2W

De manera similar, las comparaciones de caracteres en una base de datos dependen


de la secuencia de clasificacin definida para esa base de datos. En este ejemplo, la
base de datos ALPHA utiliza la secuencia de clasificacin por omisin de la pgina
de cdigos EBCDIC. La base de datos BETA utiliza la secuencia de clasificacin por
omisin de la pgina de cdigos ASCII. Las comparaciones de caracteres en estas
dos bases de datos generaran resultados distintos, como se muestra en el ejemplo
siguiente:
SELECT.....
WHERE COL2 > TT3
EBCDIC-Based Results ASCII-Based Results
COL2 COL2
---- ----
TW4 TW4
X82 X82
39G

Establecimiento de la secuencia de clasificacin para optimizar


consultas
Los administradores pueden crear bases de datos federadas con una secuencia de
clasificacin determinada que coincida con la secuencia de clasificacin de una
fuente de datos.

Para cada definicin de servidor de fuente de datos, la opcin de servidor


COLLATING_SEQUENCE se establece en Y. Este valor le indica a la base de
datos federada que las secuencias de clasificacin de la base de datos federada y
de la fuente de datos coinciden.

La secuencia de clasificacin de la base de datos federada se establece como parte


de la API de CREATE DATABASE. Mediante esta API, puede especificar una de las
siguientes secuencias:
v Una secuencia de identidad
v Una secuencia de sistema (la secuencia utilizada por el sistema operativo que da
soporte a la base de datos)
v Una secuencia personalizada (una secuencia predefinida que DB2 suministra o
que el usuario define por s mismo)

Suponga que la fuente de datos es DB2 para z/OS. Las clasificaciones que se
definen en una clusula ORDER BY las implementa una secuencia de clasificacin
basada en una pgina de cdigos EBCDIC. Para recuperar datos de DB2 para z/OS

58 Consulta de SQL - Volumen 1


Sistemas federados de DB2

clasificados de acuerdo con clusulas ORDER BY, configure la base de datos


federada de manera que sta utilice la secuencia de clasificacin predefinida
basada en la pgina de cdigos EBCDIC apropiada.

Captulo 1. Conceptos 59
60 Consulta de SQL - Volumen 1
Captulo 2. Elementos del lenguaje
Este captulo describe los elementos del lenguaje que son comunes a muchas
sentencias de SQL:
v Caracteres
v Seales en la pgina 63
v Identificadores en la pgina 65
v Tipos de datos en la pgina 88
v Constantes en la pgina 137
v Registros especiales en la pgina 141
v Funciones en la pgina 172
v Mtodos en la pgina 181
v Expresiones en la pgina 189
v Predicados en la pgina 224

Caracteres
Los smbolos clave de palabras clave y operadores en el lenguaje SQL son
caracteres de un nico byte que forman parte de todos los conjuntos de caracteres
de IBM. Los caracteres del lenguaje se clasifican en letras, dgitos y caracteres
especiales.

Una letra es cualquiera de las 26 letras maysculas (A - Z) o 26 letras minsculas (a


- z) ms los tres caracteres ($, # y @) que se incluyen para la compatibilidad con
los productos de base de datos de lenguaje principal. Por ejemplo, en la pgina de
cdigos 850, $ se encuentra en X'24', # en X'23' y @ en X'40'). Las letras tambin
incluyen los caracteres alfabticos de los juegos de caracteres ampliados. Los juegos
de caracteres ampliados contienen caracteres alfabticos adicionales, tales como
caracteres con signos diacrticos (u es un ejemplo de signo diacrtico). Los
caracteres disponibles dependen de la pgina de cdigos que se utiliza.

Un dgito es cualquier carcter del 0 al 9.

Un carcter especial es cualquiera de los caracteres listados a continuacin:

Carcter Descripcin Carcter Descripcin


espacio o blanco signo menos
" apstrofo, comillas . punto
simples o comillas
dobles
% porcentaje / barra inclinada
& signo & : dos puntos
' apstrofo o comillas ; punto y coma
simples
( abrir parntesis < menor que
) cerrar parntesis = igual
* asterisco > mayor que
+ signo ms ? signo de
interrogacin
, coma _ subrayado

Copyright IBM Corp. 1993, 2006 61


Caracteres

Carcter Descripcin Carcter Descripcin


| barra vertical1 ^ signo de intercalacin
! signo de admiracin [ abrir corchete
{ abrir llave ] cerrar corchete
} cerrar llave
1
El uso del carcter de barra vertical (|) puede inhibir la portabilidad de cdigo entre los
productos relacionales de IBM. Debe utilizarse el operador CONCAT en lugar del operador
||.

Todos los caracteres de mltiples bytes se tratan como letras, excepto el blanco de
doble byte, que es un carcter especial.

62 Consulta de SQL - Volumen 1


Seales

Seales
Los smbolos son las unidades sintcticas bsicas de SQL. Un smbolo es una
secuencia de uno o varios caracteres. Un smbolo no puede contener caracteres en
blanco, a menos que sea una constante de tipo serie o un identificador delimitado,
que pueden contener blancos.

Los smbolos se clasifican en ordinarios y delimitadores:


v Un smbolo ordinario es una constante numrica, un identificador ordinario, un
identificador del lenguaje principal o una palabra clave.
Ejemplos
1 .1 +2 SELECT E 3
v Un smbolo delimitador es una constante de tipo serie, un identificador delimitado,
un smbolo de operador o cualquier carcter especial mostrado en los diagramas
de sintaxis. Un signo de interrogacin tambin es un smbolo delimitador
cuando acta como marcador de parmetros.
Ejemplos
, serie "fld1" = .

Espacios: Un espacio es una secuencia de uno o varios caracteres en blanco. Los


smbolos que no son constantes de tipo serie ni identificadores delimitados no
deben incluir ningn espacio. Los smbolos pueden ir seguidos de un espacio.
Cada smbolo ordinario debe ir seguido por un espacio o por un smbolo
delimitador si lo permite la sintaxis.

Comentarios: Los comentarios de SQL son compuestos (empiezan por /* y


finalizan por */) o simples (empiezan por dos guiones consecutivos y finalizan al
final de la lnea). Las sentencias de SQL esttico pueden incluir comentarios SQL o
del lenguaje principal. Se pueden especificar comentarios dondequiera que se
pueda especificar un espacio, excepto dentro de una seal delimitadora o entre las
palabras clave EXEC y SQL.

Sensibilidad a maysculas y minsculas: Los smbolos pueden incluir letras


minsculas, pero las letras minsculas de un smbolo ordinario se convierten a
maysculas, excepto en las variables del lenguaje principal en C, que tienen
identificadores sensibles a las maysculas y minsculas. Los smbolos
delimitadores no se convierten nunca a maysculas. Por lo tanto, la sentencia:
select * from EMPLOYEE where lastname = Smith;

despus de la conversin, es equivalente a:


SELECT * FROM EMPLOYEE WHERE LASTNAME = Smith;

Las letras alfabticas de mltiples bytes no se convierten a maysculas. Los


caracteres de un solo byte (de la a a la z) s se convierten a maysculas.

Para caracteres en Unicode:


v Un carcter se convierte a maysculas, si procede, si el carcter en maysculas
en UTF-8 tiene la misma longitud que el carcter en minsculas en UTF-8. Por
ejemplo, el carcter i sin punto y en minscula del turco no se convierte porque
en UTF-8 dicho carcter tiene l valor XC4B1, mientras que el carcter I sin
punto en mayscula tiene el valor X49.

Captulo 2. Elementos del lenguaje 63


Seales

v La conversin se realiza sin tener en cuenta el entorno local. Por ejemplo, el


carcter i sin punto en minscula se convierte en el carcter I? sin punto en
mayscula del ingls.
v Amas letras alfabticas de anchura media y anchura completa se convierten en
minscula. Por ejemplo, la a minscula de anchura completa (U+FF41) se
convierte en la A mayscula de anchura completa (U+FF21).

Informacin relacionada:
v Sentencia PREPARE en Consulta de SQL, Volumen 2
v Cmo se invocan las sentencias de SQL en Consulta de SQL, Volumen 2

64 Consulta de SQL - Volumen 1


Identificadores

Identificadores
Un identificador es un smbolo que se utiliza para formar un nombre. En una
sentencia de SQL, un identificador es un identificador de SQL o un identificador
del lenguaje principal.
v identificadores de SQL
Existen dos tipos de identificadores de SQL: ordinarios y delimitados.
Un identificador ordinario es una letra mayscula seguida por cero o ms
caracteres, cada uno de los cuales es una letra en mayscula, un dgito o el
carcter de subrayado. Un identificador ordinario no debe ser idntico a una
palabra reservada.
Ejemplos
WKLYSAL WKLY_SAL
Un identificador delimitado es una secuencia de uno o varios caracteres entre
comillas dobles. Dos comillas consecutivas se utilizan para representar unas
comillas dentro del identificador delimitado. De esta manera un identificador
puede incluir letras en minsculas.
Ejemplos
"WKLY_SAL" "WKLY SAL" "UNION" "wkly_sal"
Las conversin de caracteres de los identificadores creados en una pgina de
cdigos de doble byte pero utilizados por una aplicacin o una base de datos en
una pgina de cdigos de mltiples bytes pueden necesitar una consideracin
especial.
v Identificadores del lenguaje principal
Un identificador del lenguaje principal es un nombre declarado en el programa de
lenguaje principal. Las reglas para formar un identificador de lenguaje principal
son las reglas del lenguaje principal. Un identificador de sistema principal no
debera tener ms de 255 bytes de longitud y no debera empezar por SQL o
DB2 (en mayscula o en minscula).

Convenios de denominacin y calificaciones de nombre de


objeto implcitas
Las reglas para formar el nombre de un objeto dependen del tipo de objeto. Los
nombres de los objetos de una base de datos pueden constar de un solo
identificador o pueden ser objetos calificados mediante esquema que consten de
dos identificadores. Los nombres de los objetos calificados mediante esquema
pueden especificarse sin el nombre de esquema; en este caso, el nombre de
esquema es implcito.

En las sentencias de SQL dinmico, un nombre de objeto calificado con un


esquema utiliza implcitamente el valor de registro especial CURRENT SCHEMA
como calificador para las referencias al nombre de objeto no calificadas. Por
omisin, se establece en el ID de autorizacin actual. Si la sentencia de SQL
dinmico est contenida en un paquete que muestra un comportamiento de
vinculacin, definicin o invocacin, el registro especial CURRENT SCHEMA no se
utiliza en la calificacin. En un paquete con comportamiento de vinculacin, se
utiliza el calificador por omisin del paquete como el valor para la calificacin
implcita de las referencias al objeto no calificadas. En un paquete con
comportamiento de definicin, se utiliza el ID de autorizacin de la persona que
define la rutina como el valor para la calificacin implcita de las referencias al
objeto no calificadas en la rutina. En un paquete con comportamiento de
invocacin, se utiliza el ID en vigor al invocar la rutina como el valor para la

Captulo 2. Elementos del lenguaje 65


Convenios de denominacin y calificaciones de nombre de objeto implcitas

calificacin implcita de las referencias al objeto no calificadas en las sentencias de


SQL dinmico de la rutina. Para obtener ms informacin, consulte el apartado
Caractersticas de SQL dinmico durante la ejecucin en la pgina 72.

En las sentencias de SQL esttico, la opcin de precompilacin/vinculacin


QUALIFIER especifica implcitamente el calificador para los nombres de objetos de
base de datos no calificados. Por omisin, este valor se establece en el ID de
autorizacin del paquete.

Los nombres de objeto siguientes, cuando se utilizan en el contexto de un


procedimiento de SQL, slo pueden utilizar los caracteres permitidos en un
identificador ordinario, aunque los nombres estn delimitados:
v nombre-condicin
v etiqueta
v nombre-parmetro
v nombre-procedimiento
v nombre-variable-SQL
v nombre-sentencia

Los diagramas de sintaxis utilizan distintos trminos para tipos diferentes de


nombres. La lista siguiente define dichos trminos.
nombre-seudnimo Nombre calificado mediante esquema que designa
un seudnimo.
nombre-atributo Identificador que designa un atributo de un tipo de
datos estructurados.
nombre-autorizacin Identificador que designa un usuario o un grupo:
v Los caracteres vlidos son: A-Z; a-z; 0-9;
#; @; $; _; !; %; (; ); {; }; -; .y ^.
v Los caracteres siguientes deben delimitarse entre
comillas si se especifican en el procesador de
lnea de mandatos: !; %; (; ); {; }; -; .y
^.
v El nombre no puede empezar por los caracteres
SYS, IBM ni SQL.
v El nombre no puede ser: ADMINS, GUESTS,
LOCAL, PUBLIC ni USERS.
v Un ID de autorizacin delimitado no debe
contener letras en minsculas.
nombre-agrupalmacinter Identificador que designa una agrupacin de
almacenamientos intermedios.
nombre-columna Nombre calificado o no calificado que designa una
columna de una tabla o de una vista. El calificador
es un nombre de tabla, un nombre de vista, un
apodo o un nombre de correlacin.
nombre-componente Identificador que designa un componente de
etiqueta de seguridad.
nombre-condicin Identificador que designa una condicin en un
procedimiento de SQL.
nombre-restriccin Identificador que designa una restriccin de

66 Consulta de SQL - Volumen 1


Convenios de denominacin y calificaciones de nombre de objeto implcitas

referencia, una restriccin de clave primaria, una


restriccin de unicidad o una restriccin de
comprobacin de tabla.
nombre-correlacin Identificador que designa una tabla resultante.
nombre-cursor Identificador que designa un cursor de SQL. Para
compatibilidad entre sistemas principales, se puede
utilizar un carcter de guin en el nombre.
nombre-fuente-datos Identificador que designa una fuente de datos. Este
identificador es la primera de las tres partes de un
nombre de objeto remoto.
nombre-grupo-particiones-bd Identificador que designa un grupo de particiones
de base de datos.
nombre-descriptor Dos puntos seguidos de un identificador del
lenguaje principal que designa un rea de
descriptores de SQL (SQLDA). Para ver la
descripcin de un identificador de lenguaje
principal, consulte el apartado Referencias a
variables del lenguaje principal en la pgina 81.
Observe que un nombre de descriptor nunca
incluye una variable indicadora.
nombre-tipo-diferenciado Nombre calificado o no calificado que designa un
tipo diferenciado. El gestor de bases de datos
califica implcitamente un nombre de tipo
diferenciado no calificado en una sentencia de SQL
segn el contexto.
nombre-supervisor-sucesos Identificador que designa un supervisor de
sucesos.
nombre-correlacin-funciones Identificador que designa una correlacin de
funciones.
nombre-funcin Nombre calificado o no calificado que designa una
funcin. El gestor de bases de datos califica
implcitamente un nombre de funcin no calificado
en una sentencia de SQL segn el contexto.
nombre-grupo Identificador no calificado que designa un grupo
de transformacin definido para un tipo
estructurado.
variable-lengpral Secuencia de smbolos que designa una variable
del lenguaje principal. Una variable del lenguaje
principal incluye, como mnimo, un identificador
de lenguaje principal, como se explica en el
apartado Referencias a variables del lenguaje
principal en la pgina 81.
nombre-ndice Nombre calificado mediante esquema que designa
un ndice o una especificacin de ndice.
etiqueta Identificador que designa una etiqueta en un
procedimiento de SQL.
nombre-mtodo Identificador que designa un mtodo. El contexto
de esquema de un mtodo est determinado por el

Captulo 2. Elementos del lenguaje 67


Convenios de denominacin y calificaciones de nombre de objeto implcitas

esquema del tipo indicado (o de un supertipo del


tipo indicado) del mtodo.
apodo Nombre calificado mediante esquema que designa
una referencia de servidor federado a una tabla o
vista.
nombre-paquete Nombre calificado mediante esquema que designa
un paquete. Si un paquete tiene un ID de versin
que no es la serie vaca, el nombre del paquete
tambin incluye el ID de versin al final del
nombre, en el formato siguiente:
id-esquema.id-paquete.id-versin.
nombre-parmetro Identificador que designa un parmetro al que se
puede hacer referencia en un procedimiento, una
funcin definida por el usuario, un mtodo o una
extensin de ndice.
nombre-particin Identificador que designa una particin de datos en
una tabla particionada.
nombre-procedimiento Nombre calificado o no calificado que designa un
procedimiento. El gestor de bases de datos califica
implcitamente un nombre de procedimiento no
calificado en una sentencia de SQL segn el
contexto.
nombre-autorizacin-remoto Identificador que designa un usuario de fuente de
datos. Las normas para los nombres de
autorizacin varan de fuente de datos a fuente de
datos.
nombre-funcin-remota Nombre que designa una funcin registrada en una
base de datos de fuente de datos.
nombre-objeto-remoto Nombre de tres partes que designa una tabla de
fuente de datos o vista y que identifica la fuente de
datos en la que reside la tabla o la vista. Las partes
de este nombres son nombre-fuente-datos,
nombre-esquema-remoto y nombre-tabla-remota.
nombre-esquema-remoto Nombre que designa el esquema al que pertenece
una tabla de fuente de datos o vista. Este nombre
es la segunda de las tres partes de un nombre de
objeto remoto.
nombre-tabla-remota Nombre que designa una tabla o una vista en una
fuente de datos. Este nombre es la tercera de las
tres partes de un nombre de objeto remoto.
nombre-tipo-remoto Tipo de datos soportado por una base de datos de
fuente de datos. No utilice el formato largo para
los tipos internos (utilice CHAR en vez de
CHARACTER, por ejemplo).
nombre-puntosalvaguarda Identificador que designa un punto de salvar.
nombre-esquema Identificador que proporciona una agrupacin
lgica de objetos de SQL. Un nombre de esquema
que se utiliza como calificador del nombre de un
objeto puede determinarse implcitamente:

68 Consulta de SQL - Volumen 1


Convenios de denominacin y calificaciones de nombre de objeto implcitas

v a partir del valor del registro especial CURRENT


SCHEMA
v a partir del valor de la opcin de
precompilacin/vinculacin QUALIFIER
v sobre la base de un algoritmo de resolucin que
utilice el registro especial CURRENT PATH
v sobre la base del nombre de esquema de otro
objeto en la misma sentencia de SQL.
Para evitar complicaciones, es recomendable no
utilizar el nombre SESSION como esquema,
excepto para el esquema de tablas temporales
globales declaradas (las cuales deben utilizar el
nombre de esquema SESSION).
nombre-etiqueta-seguridad Identificador que designa una etiqueta de
seguridad.
nombre-poltica-seguridad Identificador que designa una poltica de
seguridad.
nombre-secuencia Identificador que designa una secuencia.
nombre-servidor Identificador que designa un servidor de
aplicaciones. En un sistema federado, el nombre de
servidor tambin designa el nombre local de una
fuente de datos.
nombre-especfico Nombre, calificado o no calificado, que designa un
nombre especfico. El gestor de bases de datos
califica implcitamente un nombre especfico no
calificado en una sentencia de SQL segn el
contexto.
nombre-variable-SQL El nombre de una variable local en una sentencia
de procedimiento SQL. Los nombres de variables
SQL se pueden utilizar en otras sentencias de SQL
donde est permitido un nombre de variable del
lenguaje principal. El nombre puede estar
calificado por la etiqueta de la sentencia compuesta
donde se declar la variable de SQL.
nombre-sentencia Identificador que designa una sentencia de SQL
preparada.
nombre-supertipo Nombre calificado o no calificado que designa el
supertipo de un tipo. El gestor de bases de datos
califica implcitamente un nombre de supertipo no
calificado en una sentencia de SQL segn el
contexto.
nombre-tabla Nombre calificado mediante esquema que designa
una tabla.
nombre-espacio-tablas Identificador que designa un espacio de tablas.
nombre-activador Nombre calificado mediante esquema que designa
un activador.
nombre-correlacin-tipos Identificador que designa una correlacin de tipos
de datos.

Captulo 2. Elementos del lenguaje 69


Convenios de denominacin y calificaciones de nombre de objeto implcitas

nombre-tipo Nombre calificado o no calificado que designa un


tipo. El gestor de bases de datos califica
implcitamente un nombre de tipo no calificado en
una sentencia de SQL segn el contexto.
nombre-tabla-tipo Nombre calificado mediante esquema que designa
una tabla con tipo.
nombre-vista-tipo Nombre calificado mediante esquema que designa
una vista con tipo.
nombre-vista Nombre calificado mediante esquema que designa
una vista.
nombre-derivador Identificador que designa un derivador.
nombre-esquema-xml Nombre calificado o no calificado que designa un
esquema XML.
nombre-objeto-xsr Nombre calificado o no calificado que designa un
objeto en el repositorio de esquemas XML.

Seudnimos
Un seudnimo de tabla se puede considerar como un nombre alternativo de una
tabla o una vista. Por lo tanto, en una sentencia de SQL se puede hacer referencia a
una tabla o a una vista por su nombre o por su seudnimo de tabla.

Un seudnimo se puede utilizar siempre que se pueda utilizar el nombre de una


tabla o una vista. Se puede crear un seudnimo aunque no exista el objeto (aunque
debe existir en el momento de compilar una sentencia que hace referencia al
mismo). Puede hacer referencia a otro seudnimo si no se realizan referencias
circulares ni repetitivas a lo largo de la cadena de seudnimos. Un seudnimo slo
puede hacer referencia a una tabla, una vista o un seudnimo de la misma base de
datos. Un seudnimo no se puede utilizar cuando se espera un nombre de tabla o
de vista nuevo como, por ejemplo, en las sentencias CREATE TABLE o CREATE
VIEW; por ejemplo, si se ha creado el seudnimo PERSONAL, las sentencias
posteriores como, por ejemplo, CREATE TABLE PERSONAL... devolvern un error.

La opcin de para hacer referencia a una tabla o una vista mediante un seudnimo
no se muestra explcitamente en los diagramas de sintaxis, ni se menciona en las
descripciones de las sentencias de SQL.

Un seudnimo no calificado nuevo no puede tener el mismo nombre


completamente calificado que una tabla, una vista o un seudnimo existente.

El efecto de utilizar un seudnimo en una sentencia de SQL es similar al de la


sustitucin de texto. El seudnimo, que debe definirse antes de compilar la
sentencia de SQL, se sustituye en el momento de compilar la sentencia por el
nombre base calificado de la tabla o vista. Por ejemplo, si PBIRD.SALES es un
seudnimo de DSPN014.DIST4_SALES_148, entonces en el momento de la
compilacin:
SELECT * FROM PBIRD.SALES

se convierte en realidad en
SELECT * FROM DSPN014.DIST4_SALES_148

En un sistema federado, los usos y restricciones de la sentencia mencionada no


slo se aplican a los seudnimo de tablas, sino tambin a los seudnimo de

70 Consulta de SQL - Volumen 1


Alias

apodos. Por consiguiente, un seudnimo de apodo se puede utilizar en vez del


apodo en una sentencia de SQL; se puede crear un seudnimo para un apodo que
an no exista, siempre que el apodo se cree antes de que las sentencias que hacen
a la referencia se compilen; un seudnimo para un apodo puede hacer referencia a
otro seudnimo para este apodo y as sucesivamente.

En la tolerancia de sintaxis de las aplicaciones que se ejecutan bajo otros sistemas


de gestin de bases de datos relacionales, se puede utilizar SYNONYM en vez de
ALIAS en las sentencias CREATE ALIAS y DROP ALIAS.

ID de autorizacin y nombres de autorizacin


Un ID de autorizacin es una serie de caracteres obtenida por el gestor de bases de
datos cuando se establece una conexin entre el gestor de bases de datos y un
proceso de aplicacin o un proceso de preparacin de programa. Designa un
conjunto de privilegios. Tambin puede designar a un usuario o a un grupo de
usuarios, pero su propiedad no la controla el gestor de bases de datos.

El gestor de bases de datos utiliza los ID de autorizacin para proporcionar:


v El control de autorizaciones de sentencias de SQL
v Un valor por omisin para la opcin de precompilacin/vinculacin
QUALIFIER y el registro especial CURRENT SCHEMA. Tambin se incluye el ID
de autorizacin en el registro especial CURRENT PATH por omisin y en la
opcin de precompilacin/vinculacin FUNCPATH.

Se aplica un ID de autorizacin a cada sentencia de SQL. El ID de autorizacin que


se aplica a una sentencia de SQL esttico es el ID de autorizacin que se utiliza
durante la vinculacin de programas. El ID de autorizacin correspondiente a una
sentencia de SQL dinmico se basa en la opcin DYNAMICRULES proporcionada
durante el momento de la vinculacin y en el entorno actual de ejecucin del
paquete que emite la sentencia de SQL dinmico:
v En un paquete que tenga un comportamiento de vinculacin, el ID de
autorizacin utilizado es el ID de autorizacin del propietario del paquete.
v En un paquete que tenga un comportamiento de definicin, el ID de
autorizacin utilizado es el ID de autorizacin correspondiente a la persona que
define la rutina.
v En un paquete que tenga un comportamiento de ejecucin, el ID de autorizacin
utilizado es el ID de autorizacin actual del usuario que ejecute el paquete.
v En un paquete que tenga un comportamiento de invocacin, el ID de
autorizacin utilizado es el ID de autorizacin actualmente en vigor al invocar la
rutina. Este ID se denomina ID de autorizacin de ejecucin.
Para obtener ms informacin, consulte el apartado Caractersticas de SQL
dinmico durante la ejecucin en la pgina 72.

Un nombre de autorizacin especificado en una sentencia de SQL no se debe


confundir con el ID de autorizacin de la sentencia. Un nombre de autorizacin es
un identificador que se utiliza en varias sentencias de SQL. Un nombre de
autorizacin se utiliza en la sentencia CREATE SCHEMA para designar al
propietario del esquema. Un nombre de autorizacin se utiliza en las sentencias
GRANT y REVOKE para designar el destino de la operacin de otorgamiento
(grant) o revocacin (revoke). Si se otorgan privilegios a X, esto significa que X (o
un miembro del grupo X) ser posteriormente el ID de autorizacin de las
sentencias que necesiten dichos privilegios.

Captulo 2. Elementos del lenguaje 71


ID de autorizacin y nombres de autorizacin

Ejemplos:
v Supongamos que SMITH es el ID de usuario y el ID de autorizacin que el
gestor de bases de datos ha obtenido al establecer una conexin con el proceso
de aplicacin. La siguiente sentencia se ejecuta interactivamente:
GRANT SELECT ON TDEPT TO KEENE

SMITH es el ID de autorizacin de la sentencia. Por lo tanto, en una sentencia


de SQL dinmico, el valor por omisin del registro especial CURRENT
SCHEMA ser SMITH y, en SQL esttico, el valor por omisin de la opcin de
precompilacin/vinculacin QUALIFIER ser SMITH. La autorizacin para
ejecutar la sentencia se compara con SMITH y SMITH es el calificador implcito
de nombre-tabla de acuerdo con las reglas de calificacin descritas en el apartado
Convenios de denominacin y calificaciones de nombre de objeto implcitas en
la pgina 65.
KEENE es un nombre de autorizacin especificado en la sentencia. Se otorga el
privilegio SELECT en SMITH.TDEPT a KEENE.
v Suponga que SMITH tiene autorizacin de administracin y es el ID de
autorizacin de las siguientes sentencias de SQL dinmico sin que se emita
ninguna sentencia SET SCHEMA durante la sesin:
DROP TABLE TDEPT

Elimina la tabla SMITH.TDEPT.


DROP TABLE SMITH.TDEPT

Elimina la tabla SMITH.TDEPT.


DROP TABLE KEENE.TDEPT

Elimina la tabla KEENE.TDEPT. Observe que KEENE.TDEPT y SMITH.TDEPT


son tablas diferentes.
CREATE SCHEMA PAYROLL AUTHORIZATION KEENE

KEENE es el nombre de autorizacin especificado en la sentencia que crea un


esquema denominado PAYROLL. KEENE es el propietario del esquema
PAYROLL y se le otorgan los privilegios CREATEIN, ALTERIN y DROPIN, con
la posibilidad de otorgarlos a otros.

Caractersticas de SQL dinmico durante la ejecucin


La opcin DYNAMICRULES BIND determina el ID de autorizacin que se utiliza
para comprobar la autorizacin cuando se procesan sentencias de SQL dinmico.
Adems, la opcin tambin controla otros atributos de SQL dinmico como, por
ejemplo, el calificador implcito que se utiliza para las referencias a objetos no
calificadas y si es posible invocar dinmicamente ciertas sentencias de SQL.

El conjunto de valores para el ID de autorizacin y otros atributos de SQL


dinmico se denomina el comportamiento de las sentencias de SQL dinmico. Los
cuatro comportamientos posibles son ejecucin, vinculacin, definicin e
invocacin. Tal como se muestra en la tabla siguiente, la combinacin del valor de
la opcin DYNAMICRULES BIND y el entorno de ejecucin determina el
comportamiento que se utiliza. Es valor por omisin es DYNAMICRULES RUN,
que implica un comportamiento de ejecucin.

72 Consulta de SQL - Volumen 1


Caractersticas de SQL dinmico durante la ejecucin

Tabla 2. Forma en que DYNAMICRULES y el entorno de ejecucin determinan el


comportamiento de las sentencias de SQL dinmico
Comportamiento de las sentencias de SQL dinmico
Valor de DYNAMICRULES Entorno de programa autnomo Entorno de rutina
BIND Comportamiento de vinculacin Comportamiento de vinculacin
RUN Comportamiento de ejecucin Comportamiento de ejecucin
DEFINEBIND Comportamiento de vinculacin Comportamiento de definicin
DEFINERUN Comportamiento de ejecucin Comportamiento de definicin
INVOKEBIND Comportamiento de vinculacin Comportamiento de invocacin
INVOKERUN Comportamiento de ejecucin Comportamiento de invocacin

Comportamiento de ejecucin
DB2 utiliza el ID de autorizacin del usuario (el ID
que inicialmente se ha conectado a DB2) que
ejecuta el paquete como el valor que debe utilizarse
para la comprobacin de autorizacin de las
sentencias SQL dinmico y para el valor inicial
utilizado para la calificacin implcita de
referencias de objetos no calificados dentro de
sentencias SQL dinmico.
Comportamiento de vinculacin
Durante la ejecucin, DB2 utiliza todas las reglas
que se aplican a SQL esttico para la autorizacin y
la calificacin. Utiliza el ID de autorizacin del
propietario del paquete como el valor que se
utilizar para la comprobacin de autorizacin de
las sentencias de SQL dinmico y el calificador por
omisin del paquete para la calificacin implcita
de las referencias a objetos no calificadas de las
sentencias de SQL dinmico.
Comportamiento de definicin
El comportamiento de definicin slo se aplica si la
sentencia de SQL dinmico est en un paquete que
se ejecuta en un contexto de rutina y el paquete se
ha vinculado con DYNAMICRULES DEFINEBIND
o DYNAMICRULES DEFINERUN. DB2 utiliza el
ID d autorizacin del definidor de rutina (no el
vinculador de paquetes de la rutina) como valor
que debe utilizarse para la comprobacin de
autorizacin de las sentencias SQL dinmico, y
para la cualificacin implcita de referencias objetos
sin cualificar dentro de sentencias SQL dentro de
dicha rutina.
Comportamiento de invocacin
El comportamiento de invocacin slo se aplica si
la sentencia de SQL dinmico est en un paquete
que se ejecuta en un contexto de rutina y el
paquete se ha vinculado con DYNAMICRULES
INVOKEBIND o DYNAMICRULES INVOKERUN.
DB2 utiliza el ID de autorizacin de sentencias
vigente cuando la rutina se invoca como el valor
que debe utilizarse para comprobar la autorizacin
del SQL dinmico y para la cualificacin implcita
Captulo 2. Elementos del lenguaje 73
Caractersticas de SQL dinmico durante la ejecucin

de referencias de objetos no calificados dentro de


las sentencias SQL dinmico dentro de dicha
rutina. La tabla siguiente muestra un resumen.
Entorno que se invoca ID utilizado
Cualquier SQL esttico Valor implcito o explcito del propietario
(OWNER) del paquete del que proceda el SQL
que invocaba la rutina
Utilizado en definiciones de vistas o activadores Persona que define la vista o el activador
SQL dinmico de un paquete con comportamiento Valor implcito o explcito del propietario
de vinculacin (OWNER) del paquete del que proceda el SQL
que invocaba la rutina
SQL dinmico de un paquete con comportamiento ID que se utiliza para establecer la conexin
de ejecucin inicial con DB2
SQL dinmico de un paquete con comportamiento Persona que define la rutina que utiliza el paquete
de definicin del que proceda el SQL que invocaba la rutina
SQL dinmico de un paquete con comportamiento El ID autorizacin actual que invoca la rutina
de invocacin

Sentencias restringidas cuando no se aplica el comportamiento de ejecucin

Cuando est en vigor un comportamiento de vinculacin, definicin o invocacin,


no es posible utilizar las siguientes sentencias de SQL dinmico: GRANT,
REVOKE, ALTER, CREATE, DROP, COMMENT, RENAME, SET INTEGRITY, SET
EVENT MONITOR STATE; o consultas que hacen referencia a un apodo.

Consideraciones respecto a la opcin DYNAMICRULES

No se puede utilizar el registro especial CURRENT SCHEMA para calificar las


referencias a objetos no calificadas en las sentencias de SQL dinmico ejecutadas
desde un paquete con comportamiento de vinculacin, definicin o invocacin.
Esto es as incluso despus de emitir la sentencia SET CURRENT SCHEMA para
cambiar el registro especial CURRENT SCHEMA; el valor del registro se cambia
pero no se utiliza.

En caso de que se haga referencia a varios paquetes durante una sola conexin,
todas las sentencias de SQL dinmico que estos paquetes hayan preparado
mostrarn el comportamiento especificado por la opcin DYNAMICRULES para
dicho paquete en concreto y el entorno en el que se utilicen.

Es importante tener presente que, cuando un paquete muestra un comportamiento


de vinculacin, no debe otorgarse a la persona que vincula el paquete ninguna
autorizacin que no se desee que tenga el usuario del paquete ya que una
sentencia dinmica utilizar el ID de autorizacin del propietario del paquete. De
forma similar, cuando un paquete muestra un comportamiento de definicin, no
debe otorgarse a la persona que define la rutina ninguna autorizacin que no se
desee que tenga el usuario del paquete.

ID de autorizacin y preparacin de sentencias


Si se especifica la opcin VALIDATE BIND durante la ejecucin, los privilegios
necesarios para manejar tablas y vistas tambin deben existir durante la
vinculacin. Si estos privilegios o los objetos referenciados no existen y est en
vigor la opcin SQLERROR NOPACKAGE, la operacin de vinculacin no ser
satisfactoria. Si se especifica la opcin SQLERROR CONTINUE, la operacin de
vinculacin ser satisfactoria y se marcarn las sentencias errneas. Si se intenta
ejecutar una de estas sentencias, se producir un error.

74 Consulta de SQL - Volumen 1


ID de autorizacin y preparacin de sentencias

Si un paquete se vincula con la opcin VALIDATE RUN, se realiza todo el proceso


normal de vinculacin, pero no es necesario que existan todava los privilegios
necesarios para utilizar las tablas y vistas referenciadas en la aplicacin. Si durante
la vinculacin no existe un privilegio necesario, se realiza una operacin de
vinculacin incremental cada vez que se ejecuta por primera vez la sentencia en
una aplicacin y deben existir todos los privilegios que la sentencia necesita. Si no
existe un privilegio necesario, la ejecucin de la sentencia no es satisfactoria.

La comprobacin de autorizacin durante la ejecucin se realiza utilizando el ID de


autorizacin del propietario del paquete.

Nombres de columna
El significado de un nombre de columna depende de su contexto. Un nombre de
columna sirve para:
v Declarar el nombre de una columna como, por ejemplo, en una sentencia
CREATE TABLE.
v Identificar una columna como, por ejemplo, en una sentencia CREATE INDEX.
v Especificar los valores de la columna como, por ejemplo, en los contextos
siguientes:
En una funcin de columna, un nombre de columna especifica todos los
valores de la columna en la tabla de resultado intermedia o de grupo a los
que se aplica la funcin. Por ejemplo, MAX(SALARY) aplica la funcin MAX
a todos los valores de la columna SALARY de un grupo.
En una clusula GROUP BY o ORDER BY, un nombre de columna especifica
todos los valores de la tabla de resultado intermedia a los que se aplica la
clusula. Por ejemplo, ORDER BY DEPT ordena una tabla de resultado
intermedia segn los valores de la columna DEPT.
En una expresin, una condicin de bsqueda o una funcin escalar, un
nombre de columna especifica un valor para cada fila o grupo al que se aplica
la construccin. Por ejemplo, cuando la condicin de bsqueda CODE = 20 se
aplica a alguna fila, el valor especificado por el nombre de columna CODE es
el valor de la columna CODE en esa fila.
v Redenominar temporalmente una columna, como en la clusula-correlacin de una
referencia-tabla en una clusula FROM.

Nombre de columna calificados


Un calificador para un nombre de columna puede ser un nombre de tabla, vista,
apodo o seudnimo o un nombre de correlacin.

El hecho de que un nombre de columna pueda calificarse depende del contexto:


v Segn la forma de la sentencia COMMENT ON, puede que se deba calificar un
nombre de una sola columna. No se deben calificar nombres de varias columnas.
v Donde el nombre de columna especifique valores de la columna, puede
calificarse como opcin del usuario.
v En la clusula de asignacin de una sentencia UPDATE, puede calificarse en la
opcin del usuario.
v En todos los dems contextos, un nombre de columna no debe calificarse.

Cuando un calificador es opcional, puede cumplir dos finalidades. Estos casos se


describen en el apartado Calificadores de nombres de columna para evitar
ambigedades en la pgina 78 y Calificadores de nombres de columna en
referencias correlacionadas en la pgina 79.

Captulo 2. Elementos del lenguaje 75


Nombres de correlacin

Nombres de correlacin
Un nombre de correlacin puede definirse en la clusula FROM de una consulta y en
la primera clusula de una sentencia UPDATE o DELETE. Por ejemplo, la clusula
FROM X.MYTABLE Z establece Z como nombre de correlacin para X.MYTABLE.
FROM X.MYTABLE Z

Con Z definida como nombre de correlacin para X.MYTABLE, slo puede


utilizarse Z para calificar una referencia a una columna de esa instancia de
X.MYTABLE en esa sentencia SELECT.

Un nombre de correlacin slo se asocia a una tabla, vista, apodo, seudnimo,


expresin de tabla anidada o funcin de tabla slo dentro del contexto en el que
est definido. Por lo tanto, puede definirse el mismo nombre de correlacin con
distintos propsitos en diferentes sentencias o bien en distintas clusulas de la
misma sentencia.

Como calificador, un nombre de correlacin puede utilizarse para evitar


ambigedades o para establecer una referencia correlacionada. Tambin puede
utilizarse simplemente como nombre abreviado de una tabla, vista, apodo o
seudnimo. En el caso de una expresin de tabla anidada o una funcin de tabla,
es necesario un nombre de correlacin para identificar la tabla resultante. En el
ejemplo, Z podra haberse utilizado simplemente para evitar tener que entrar
X.MYTABLE ms de una vez.

Si se especifica un nombre de correlacin para una tabla, vista, apodo o


seudnimo, cualquier referencia a una columna de esa instancia de la tabla, vista,
apodo o seudnimo debe utilizar el nombre de correlacin en lugar del nombre de
tabla, vista, apodo o seudnimo. Por ejemplo, la referencia a EMPLOYEE.PROJECT
del ejemplo siguiente no es correcto, porque se ha especificado un nombre de
correlacin para EMPLOYEE:

Ejemplo

FROM EMPLOYEE E
WHERE EMPLOYEE.PROJECT=ABC * incorrecto*

La referencia calificada para PROJECT debe utilizar, en su lugar, el nombre de


correlacin E, tal como se muestra abajo:
FROM EMPLOYEE E
WHERE E.PROJECT=ABC

Los nombres especificados en una clusula FROM pueden estar expuestos o no


expuestos. Se dice que un nombre de tabla, vista, apodo o seudnimo est expuesto
en la clusula FROM si no se especifica un nombre de correlacin. El nombre de la
correlacin es siempre un nombre expuesto. Por ejemplo, en la siguiente clusula
FROM, se especifica un nombre de correlacin para EMPLOYEE pero no para
DEPARTMENT, de modo que DEPARTMENT es un nombre expuesto y
EMPLOYEE no lo es:
FROM EMPLOYEE E, DEPARTMENT

Un nombre de tabla, vista, apodo o seudnimo que est expuesto en una clusula
FROM puede ser igual a otro nombre de tabla, vista o apodo expuesto en esa
clusula FROM o cualquier nombre de correlacin de la clusula FROM. Esta
situacin puede dar como resultado una serie de referencias ambiguas de nombres
de columna que acaban devolviendo un cdigo de error (SQLSTATE 42702).

76 Consulta de SQL - Volumen 1


Nombres de correlacin

Las dos primeras clusulas FROM mostradas ms abajo son correctas, porque cada
una no contiene ms de una referencia a EMPLOYEE que est expuesta:
1. Dada una clusula FROM:
FROM EMPLOYEE E1, EMPLOYEE
una referencia calificada como, por ejemplo, EMPLOYEE.PROJECT indica una
columna de la segunda instancia de EMPLOYEE en la clusula FROM. La
referencia calificada a la primera instancia de EMPLOYEE debe utilizar el
nombre de correlacin E1 (E1.PROJECT).
2. Dada una clusula FROM:
FROM EMPLOYEE, EMPLOYEE E2
una referencia calificada como, por ejemplo, EMPLOYEE.PROJECT indica una
columna de la primera instancia de EMPLOYEE en la clusula FROM. Una
referencia calificada a la segunda instancia de EMPLOYEE debe utilizar el
nombre de correlacin E2 (E2.PROJECT).
3. Dada una clusula FROM:
FROM EMPLOYEE, EMPLOYEE
los dos nombres de tabla expuestos que se incluyen en esta clusula
(EMPLOYEE y EMPLOYEE) son los mismos. Esto est permitido, pero las
referencias a nombres de columnas especficos resultaran ambiguas (SQLSTATE
42702).
4. Dada la sentencia siguiente:
SELECT *
FROM EMPLOYEE E1, EMPLOYEE E2 * incorrecto *
WHERE EMPLOYEE.PROJECT = ABC
la referencia calificada EMPLOYEE.PROJECT es incorrecta, porque las dos
instancias de EMPLOYEE en la clusula FROM tienen nombres de correlacin.
En cambio, las referencias a PROJECT deben estar calificadas con algn nombre
de correlacin (E1.PROJECT o E2.PROJECT).
5. Dada una clusula FROM:
FROM EMPLOYEE, X.EMPLOYEE
una referencia a una columna en la segunda instancia de EMPLOYEE debe
utilizar X.EMPLOYEE (X.EMPLOYEE.PROJECT). Si X es el valor del registro
especial CURRENT SCHEMA en SQL dinmico o la opcin de
precompilacin/vinculacin QUALIFIER de SQL esttico, no se puede hacer
ninguna referencia a las columnas porque resultara ambigua.

La utilizacin del nombre de correlacin en la clusula FROM permite, tambin, la


opcin de especificar una lista de nombres de columna que se han de asociar con
las columnas de la tabla resultante. Igual que los nombres de correlacin, estos
nombres de columna listados se convierten en los nombres expuestos de las
columnas que deben utilizarse en las referencias a las columnas en toda la
consulta. Si se especifica una lista de nombres de columna, los nombres de
columna de la tabla principal se convierten en no expuestos.

Dada una clusula FROM:


FROM DEPARTMENT D (NUM,NAME,MGR,ANUM,LOC)

una referencia calificada como, por ejemplo, D.NUM indica la primera columna de
la tabla DEPARTMENT que se ha definido en la tabla como DEPTNO. Una
referencia a D.DEPTNO utilizando esta clusula FROM es incorrecta ya que el
nombre de columna DEPTNO es un nombre de columna no expuesto.

Captulo 2. Elementos del lenguaje 77


Calificadores de nombres de columna para evitar ambigedades

Calificadores de nombres de columna para evitar ambigedades


En el contexto de una funcin, de una clusula GROUP BY, de una clusula
ORDER BY, de una expresin o de una condicin de bsqueda, un nombre de
columna hace referencia a los valores de una columna en alguna tabla, vista,
apodo, expresin de tabla anidada o funcin de tabla. Las tablas, vistas, apodos,
expresiones de tablas anidadas y funciones de tabla donde puede residir la
columna se denominan tablas de objetos del contexto. Dos o ms tablas de objetos
pueden contener columnas con el mismo nombre; un nombre de columna se puede
calificar para indicar la tabla de la cual procede la columna. Los calificadores de
nombres de columna tambin son tiles en los procedimientos de SQL para
diferenciar los nombres de columna de los nombres de variables de SQL utilizados
en sentencias de SQL.

Una expresin de tabla anidada o una funcin de tabla trata las referencias-tabla que
la preceden en la clusula FROM como tablas de objetos. Las referencias-tabla que
siguen no se tratan como tablas de objetos.

Designadores de tablas: Un calificador que designa una tabla de objeto especfica


se conoce como designador de tabla. La clusula que identifica las tablas de objetos
tambin establece los designadores de tabla para ellas. Por ejemplo, las tablas de
objetos de una expresin en una clusula SELECT se nombran en la clusula
FROM que la sigue:
SELECT CORZ.COLA, OWNY.MYTABLE.COLA
FROM OWNX.MYTABLE CORZ, OWNY.MYTABLE

Los designadores en la clusula FROM se establecen como sigue:


v Un nombre que sigue a una tabla, vista, apodo, seudnimo, expresin de tabla
anidada o funcin de tabla es a la vez un nombre de correlacin y un
designador de tabla. As pues, CORZ es un designador de tabla. CORZ sirve
para calificar el primer nombre de columna de la lista de seleccin.
v Una tabla expuesta, un nombre de vista, un apodo o seudnimo es un
designador de tabla. As pues, OWNY.MYTABLE es un designador de tabla.
OWNY.MYTABLE sirve para calificar el nombre de la segunda columna de la
lista de seleccin.

Cada designador de tabla debe ser exclusivo en una clusula FROM determinada
para evitar la aparicin de referencias ambiguas a columnas.

Evitar referencias no definidas o ambiguas: Cuando un nombre de columna hace


referencia a valores de una columna, debe existir una sola tabla de objetos que
incluya una columna con ese nombre. Las situaciones siguientes se consideran
errores:
v Ninguna tabla de objetos contiene una columna con el nombre especificado. La
referencia no est definida.
v El nombre de columna est calificado mediante un designador de tabla, pero la
tabla designada no incluye una columna con el nombre especificado. De nuevo,
la referencia no est definida.
v El nombre no est calificado, y hay ms de una tabla de objetos que incluye una
columna con ese nombre. La referencia es ambigua.
v El designador de tabla califica al nombre de columna, pero la tabla designada no
es nica en la clusula FROM y ambas ocurrencias de la tabla designada
incluyen la columna. La referencia es ambigua.
v El nombre de columna de una expresin de tabla anidada que no va precedida
por la palabra clave TABLE o en una funcin de tabla o expresin de tabla

78 Consulta de SQL - Volumen 1


Evitar referencias no definidas o ambiguas

anidada que es el operando derecho de una unin externa derecha o una unin
externa completa y el nombre de columna no hace referencia a una columna de
una referencia-tabla de la seleccin completa de la expresin de tabla anidada. La
referencia no est definida.

Evite las referencias ambiguas calificando un nombre de columna con un


designador de tabla definido exclusivamente. Si la columna est en varias tablas de
objetos con nombres distintos, los nombres de tabla pueden utilizarse como
designadores. Las referencias ambiguas tambin se pueden evitar sin la utilizacin
del designador de tabla dando nombres exclusivos a las columnas de una de las
tablas de objetos utilizando la lista de nombres de columna que siguen al nombre
de correlacin.

Al calificar una columna con la forma de nombre expuesto de tabla de un


designador de tabla, se puede utilizar la forma calificada o no calificada del
nombre de tabla expuesto. Sin embargo, el calificador y la tabla utilizados deben
ser iguales despus de calificar completamente el nombre de tabla, vista o apodo y
el designador de tabla.
1. Si el ID de autorizacin de la sentencia es CORPDATA:
SELECT CORPDATA.EMPLOYEE.WORKDEPT
FROM EMPLOYEE
es una sentencia vlida.
2. Si el ID de autorizacin de la sentencia es REGION:
SELECT CORPDATA.EMPLOYEE.WORKDEPT
FROM EMPLOYEE * incorrecto *
no es vlido, porque EMPLOYEE representa la tabla REGION.EMPLOYEE,
pero el calificador para WORKDEPT representa una tabla distinta,
CORPDATA.EMPLOYEE.

Calificadores de nombres de columna en referencias


correlacionadas
Una seleccin completa es una forma de consulta que puede utilizarse como
componente de varias sentencias de SQL. Una seleccin completa utilizada en una
condicin de bsqueda de cualquier sentencia se denomina subconsulta. Una
seleccin completa utilizada para recuperar un nico valor como, por ejemplo, una
expresin en una sentencia se denomina una seleccin completa escalar o subconsulta
escalar. Una seleccin completa utilizada en la clusula FROM de una consulta se
denomina expresin de tabla anidada. Se hace referencia a las subconsultas de las
condiciones de bsqueda, subconsultas escalares y expresiones de tabla anidadas
como subconsultas en el resto de este tema.

Una subconsulta puede contener subconsultas propias y stas, a su vez, pueden


contener subconsultas. De este modo, una sentencia de SQL puede contener una
jerarqua de subconsultas. Los elementos de la jerarqua que contienen
subconsultas estn en un nivel superior que las subconsultas que contienen.

Cada elemento de la jerarqua contiene uno o ms designadores de tabla. Una


consulta puede hacer referencia no solamente a las columnas de las tablas
identificadas en su mismo nivel dentro de la jerarqua, sino tambin a las columnas
de las tablas anteriormente identificadas en la jerarqua, hasta alcanzar el estrato
ms elevado. Una referencia a una columna de una tabla identificada en un nivel
superior se llama referencia correlacionada.

Para la compatibilidad con los estndares existentes de SQL, se permiten nombres


de columna calificados y no calificados como referencias correlacionadas. Sin

Captulo 2. Elementos del lenguaje 79


Calificadores de nombres de columna en referencias correlacionadas

embargo, es aconsejable calificar todas las referencias de columnas utilizadas en


subconsultas; de lo contrario, los nombres de columna idnticos pueden conducir a
resultados no deseados. Por ejemplo, si se modifica una tabla de una jerarqua de
modo que contenga el mismo nombre de columna que la referencia correlacionada
y la sentencia se vuelve a preparar, la referencia se aplicar en la tabla modificada.

Cuando se califica un nombre de columna en una subconsulta, se busca en cada


nivel de jerarqua, comenzando en la misma subconsulta en la que aparece el
nombre de columna calificado y continuando hacia niveles superiores de la
jerarqua, hasta que se encuentre un designador de tabla que coincida con el
calificador. Una vez encontrado, se verifica que la tabla contenga la columna en
cuestin. Si se encuentra la tabla en un nivel superior que el nivel que contiene el
nombre de columna, es que ste es una referencia correlacionada para el nivel
donde se encontr el designador de tabla. Una expresin de tabla anidada debe ir
precedida por la palabra clave TABLE opcional para buscar en la jerarqua superior
la seleccin completa de la expresin de tabla anidada.

Cuando el nombre de columna de una subconsulta no se califica, se busca en las


tablas a las que se hace referencia en cada nivel de la jerarqua, empezando en la
misma subconsulta en la que aparece el nombre de columna y siguiendo hacia
niveles superiores de la jerarqua hasta que se encuentre un nombre de columna
que coincida. Si la columna se encuentra en una tabla en un nivel superior al nivel
que contiene el nombre de columna, es que ste es una referencia correlacionada
para el nivel donde se ha encontrado la tabla que contiene la columna. Si se
encuentra el nombre de columna en ms de una tabla en un nivel en concreto, la
referencia es ambigua y se considera un error.

En cualquier caso, en el siguiente ejemplo T hace referencia al designador de tabla


que contiene la columna C. Un nombre de columna, T.C (donde T representa un
calificador implcito o explcito), es una referencia correlacionada solamente si se
dan estas condiciones:
v T.C se utiliza en una expresin de una subconsulta.
v T no designa una tabla utilizada en la clusula de la subconsulta.
v T designa una tabla utilizada en un nivel superior de la jerarqua que contiene la
subconsulta.

Debido a que una misma tabla, vista o apodo pueden estar identificados en
muchos niveles, se recomienda utilizar nombres de correlacin exclusivos como
designadores de tabla. Si se utiliza T para designar una tabla en ms de un nivel
(T es el propio nombre de tabla o es un nombre de correlacin duplicado), T.C
hace referencia al nivel donde se utiliza T que contiene de forma ms directa la
subconsulta que incluye T.C. Si es necesario un nivel de correlacin superior, debe
utilizarse un nombre de correlacin exclusivo.

La referencia correlacionada T.C identifica un valor de C en una fila o grupo de T


a la que se aplican dos condiciones de bsqueda: la condicin 1 en la subconsulta,
y la condicin 2 en algn nivel superior. Si se utiliza la condicin 2 en una clusula
WHERE, se evala la subconsulta para cada fila a la que se aplica la condicin 2.
Si se utiliza la condicin 2 en una clusula HAVING, se evala la subconsulta para
cada grupo al que se aplica la condicin 2.

Por ejemplo, en la sentencia siguiente, la referencia correlacionada X.WORKDEPT


(en la ltima lnea) hace referencia al valor de WORKDEPT en la tabla EMPLOYEE
en el nivel de la primera clusula FROM. (Dicha clusula establece X como nombre

80 Consulta de SQL - Volumen 1


Calificadores de nombres de columna en referencias correlacionadas

de correlacin para EMPLOYEE.) La sentencia lista los empleados que tienen un


salario inferior al promedio de su departamento.
SELECT EMPNO, LASTNAME, WORKDEPT
FROM EMPLOYEE X
WHERE SALARY < (SELECT AVG(SALARY)
FROM EMPLOYEE
WHERE WORKDEPT = X.WORKDEPT)

El ejemplo siguiente utiliza ESTE como nombre de correlacin. La sentencia


elimina las filas de los departamentos que no tienen empleados.
DELETE FROM DEPARTMENT THIS
WHERE NOT EXISTS(SELECT *
FROM EMPLOYEE
WHERE WORKDEPT = THIS.DEPTNO)

Referencias a variables del lenguaje principal


Una variable del lenguaje principal es:
v Variable de un lenguaje de sistema principal como una variable C, una variable
C++, un elemento de datos COBOL, una variable FORTRAN, o una variable
Java.
o:
v Una construccin del lenguaje principal generada por un precompilador de SQL
a partir de una variable declarada mediante extensiones de SQL

a la que se hace referencia en una sentencia de SQL. Las variables del lenguaje
principal se definen directamente mediante las sentencias del lenguaje principal o
indirectamente mediante extensiones de SQL.

Una variable del lenguaje principal en una sentencia de SQL debe identificar una
variable del lenguaje principal descrita en el programa segn las normas para la
declaracin de variables del lenguaje principal.

Todas las variables del lenguaje principal utilizadas en una sentencia de SQL deben
estar declaradas en una seccin DECLARE de SQL en todos los lenguajes
principales excepto en REXX. No se debe declarar ninguna variable fuera de una
seccin DECLARE de SQL con nombres que sean idnticos a variables declaradas
en una seccin DECLARE de SQL. Una seccin DECLARE de SQL empieza por
BEGIN DECLARE SECTION y termina por END DECLARE SECTION.

La metavariable variable-lengpral, tal como se utiliza en los diagramas de sintaxis,


muestra una referencia a una variable del lenguaje principal. Una variable del
lenguaje principal en la clusula VALUES INTO o en la clusula INTO de una
sentencia FETCH o SELECT INTO identifica una variable del lenguaje principal a
la que se asigna un valor procedente de una columna de una fila o una expresin.
En todos los dems contextos, una variable-lengpral especifica un valor que ha de
pasarse al gestor de bases de datos desde el programa de aplicacin.

Variables del lenguaje principal en SQL dinmico


En sentencias de SQL dinmico, se utilizan los marcadores de parmetros en lugar
de las variables del lenguaje principal. Un marcador de parmetros es un signo de
interrogacin (?) que representa una posicin en una sentencia de SQL dinmico en
la que la aplicacin proporcionar un valor; es decir, donde se encontrar una
variable del lenguaje principal si la serie de la sentencia es una sentencia de SQL
esttico. El siguiente ejemplo muestra una sentencia de SQL esttico que emplea
variables del lenguaje principal:

Captulo 2. Elementos del lenguaje 81


Variables del lenguaje principal en SQL dinmico

INSERT INTO DEPARTMENT


VALUES (:hv_deptno, :hv_deptname, :hv_mgrno, :hv_admrdept)

Este ejemplo muestra una sentencia de SQL dinmico que utiliza marcadores de
parmetros:
INSERT INTO DEPARTMENT VALUES (?, ?, ?, ?)

Generalmente, la metavariable variable-lengpral se puede expandir en los diagramas


de sintaxis a:

 :identificador-lengpral 
INDICATOR
:identificador-lengpral

Cada identificador-lengpral debe declararse en el programa fuente. La variable


designada por el segundo identificador-lengpral debe tener un tipo de datos de
entero pequeo.

El primer identificador-lengpral designa la variable principal. Segn la operacin,


proporciona un valor al gestor de bases de datos o bien el gestor de bases de datos
le proporciona un valor. Una variable del lenguaje principal de entrada
proporciona un valor en la pgina de cdigos de la aplicacin en tiempo de
ejecucin. A la variable del lenguaje principal de salida se le proporciona un valor
que, si es necesario, se convierte a la pgina de cdigos de la aplicacin en tiempo
de ejecucin cuando los datos se copian en la variable de la aplicacin de salida.
Una variable del lenguaje principal determinada puede servir tanto de variable de
entrada como de salida en el mismo programa.

El segundo identificador-lengpral designa su variable indicadora. La finalidad de la


variable indicadora es:
v Especificar el valor nulo. Un valor negativo de la variable indicadora especifica
el valor nulo. Un valor de -2 indica una conversin numrica o un error de
expresin aritmtica ocurrido al obtener el resultado
v Registra la longitud original de una serie truncada (si la fuente del valor no es
un tipo de objeto grande)
v Registra la parte correspondiente a los segundos de una hora si la hora se trunca
al asignarse a una variable del lenguaje principal.

Por ejemplo, si se utiliza :HV1:HV2 para especificar un valor de insercin o de


actualizacin y si HV2 es negativo, el valor especificado es el valor nulo. Si HV2
no es negativo, el valor especificado es el valor de HV1.

Del mismo modo, si se especifica :HV1:HV2 en una clusula VALUES INTO o en


una sentencia FETCH o SELECT INTO y si el valor devuelto es nulo, HV1 no se
cambia y HV2 se establece en un valor negativo. Si la base de datos est
configurada con DFT_SQLMATHWARN definido en s (o lo estaba durante la
vinculacin de una sentencia de SQL esttico), HV2 podra ser -2. Si HV2 es -2, no
podra devolverse un valor para HV1 debido a un error en la conversin al tipo
numrico de HV1 o a un error al evaluar una expresin aritmtica utilizada para
determinar el valor de HV1. Cuando se accede a una base de datos con una
versin de cliente anterior a DB2 Universal Database, versin 5, HV2 ser -1 para
excepciones aritmticas. Si el valor devuelto no es nulo, se asigna dicho valor a
HV1 y HV2 se establece en cero (a no ser que la asignacin a HV1 necesite el
truncamiento de una serie que sea no LOB, en cuyo caso HV2 se establece en la

82 Consulta de SQL - Volumen 1


Variables del lenguaje principal en SQL dinmico

longitud original de la serie). Si una asignacin necesita el truncamiento de la parte


correspondiente a los segundos de una hora, HV2 se establece en el nmero de
segundos.

Si se omite el segundo identificador del lenguaje principal, la variable del lenguaje


principal carece de variable indicadora. El valor especificado por la referencia a la
variable del lenguaje principal :HV1 siempre es el valor de HV1 y los valores nulos
no se pueden asignar a la variable. Por este motivo, esta forma no debe utilizarse
en una clusula INTO a no ser que la columna correspondiente no pueda incluir
valores nulos. Si se utiliza esta forma y la columna contiene valores nulos, el gestor
de bases de datos generar un error en tiempo de ejecucin.

Una sentencia de SQL que haga referencia a variables del lenguaje principal debe
pertenecer al mbito de la declaracin de esas variables del lenguaje principal. En
cuanto a las variables a las que la sentencia SELECT del cursor hace referencia, esa
regla se aplica ms a la sentencia OPEN que a la sentencia DECLARE CURSOR.

Ejemplo: Utilizando la tabla PROJECT, asigne a la variable del lenguaje principal


PNAME (VARCHAR(26)) el nombre de proyecto (PROJNAME), a la variable del
lenguaje principal STAFF (dec(5,2)) el nivel principal de personal (PRSTAFF) y a la
variable del lenguaje principal MAJPROJ (char(6)) el proyecto principal (MAJPROJ)
para el proyecto (PROJNO) IF1000. Las columnas PRSTAFF y MAJPROJ pueden
contener valores nulos, por lo tanto proporcione las variables indicadoras
STAFF_IND (smallint) y MAJPROJ_IND (smallint).
SELECT PROJNAME, PRSTAFF, MAJPROJ
INTO :PNAME, :STAFF :STAFF_IND, :MAJPROJ :MAJPROJ_IND
FROM PROJECT
WHERE PROJNO = IF1000

Consideraciones acerca de MBCS: Si es o no es posible utilizar los caracteres de


mltiples bytes en un nombre de variable del lenguaje principal depende del
lenguaje principal.

Referencias a las variables del lenguaje principal de BLOB,


CLOB y DBCLOB
Las variables regulares BLOB, CLOB y DBCLOB, las variables localizadoras LOB
(consulte Referencias a variables localizadoras en la pgina 84), y las variables de
referencia a archivos LOB (consulte Referencias a las variables de referencia de
archivos BLOB, CLOB y DBCLOB en la pgina 84) se pueden definir en todos los
lenguajes principales. Donde se pueden utilizar valores LOB, el trmino
variable-lengpral en un diagrama de sintaxis puede hacer referencia a una variable
del lenguaje principal normal, a una variable localizadora o a una variable de
referencia a archivos. Puesto que no son tipos de datos nativos, se utilizan las
extensiones SQL y los precompiladores generan las construcciones de lenguaje
principal necesarias para poder representar a cada variable. En cuanto a REXX, las
variables LOB se correlacionan con series.

A veces es posible definir una variable lo suficientemente grande como para


contener todo un valor de objeto grande. Si es as y no hay ninguna ventaja de
rendimiento si se utiliza la transferencia diferida de datos desde el servidor, no es
necesario un localizador. No obstante, puesto que el lenguaje principal o las
restricciones de espacio se oponen al almacenamiento de un objeto grande entero
en el almacenamiento temporal de una vez o por motivos de rendimiento, se
puede hacer referencia a un objeto grande por medio de un localizador y las partes
de dicho objeto se pueden seleccionar o actualizar en las variables del lenguaje
principal que contengan slo una parte del objeto grande.

Captulo 2. Elementos del lenguaje 83


Referencias a variables localizadoras

Referencias a variables localizadoras


Una variable localizadora es una variable del lenguaje principal que contiene el
localizador que representa un valor de LOB en el servidor de aplicaciones.

Una variable localizadora de una sentencia de SQL debe identificar una variable
localizadora descrita en el programa de acuerdo a las reglas de declaracin de
variables localizadoras. Siempre se produce indirectamente a travs de una
sentencia de SQL.

El trmino variable localizadora, tal como se utiliza en los diagramas de sintaxis,


muestra una referencia a una variable localizadora. La metavariable
variable-localizadora puede expandirse para que incluya un identificador-lengpral igual
que para la variable-lengpral.

Como sucede con el resto de variables del lenguaje principal, una variable
localizadora de LOB puede tener asociada una variable indicadora. Las variables
indicadoras para las variables localizadoras del lenguaje principal de objeto grande
funcionan de la misma manera que las variables indicadoras de otros tipos de
datos. Cuando una base de datos devuelve un valor nulo, se define la variable
indicadora y la variable localizadora del lenguaje principal no se cambia. Esto
significa que un localizador jams puede apuntar a un valor nulo.

Si se hace referencia a una variable localizadora que en ese momento no represente


ningn valor, se producir un error (SQLSTATE 0F001).

Durante la confirmacin de la transaccin, o en cualquier finalizacin de


transaccin, se liberan todos los localizadores que la transaccin haba adquirido.

Referencias a las variables de referencia de archivos BLOB,


CLOB y DBCLOB
Las variables de referencia a archivos BLOB, CLOB y DBCLOB sirven para la
entrada y salida directa de archivo para los LOB y pueden definirse en todos los
lenguajes principales. Puesto que no son tipos de datos nativos, se utilizan las
extensiones SQL y los precompiladores generan las construcciones de lenguaje
principal necesarias para poder representar a cada variable. En cuanto a REXX, las
variables LOB se correlacionan con series.

Una variable de referencia a archivos representa (ms que contiene) al archivo, de


igual manera que un localizador de LOB representa, ms que contiene, a los bytes
LOB. Las consultas, actualizaciones e inserciones pueden utilizar variables de
referencia a archivos para almacenar o recuperar valores de una sola columna.

Una variable de referencia a archivos tiene las siguientes propiedades:


Tipo de datos BLOB, CLOB o DBCLOB. Esta propiedad se
especifica al declarar la variable.
Direccin La direccin debe ser especificada por el programa
de aplicacin durante la ejecucin (como parte del
valor de Opciones de archivo). La direccin puede
ser:
v De entrada (se utiliza como fuente de datos en
las sentencias EXECUTE, OPEN, UPDATE,
INSERT o DELETE).
v De salida (se utiliza como datos de destino en
sentencias las FETCH o SELECT INTO).

84 Consulta de SQL - Volumen 1


Referencias a las variables de referencia de archivos BLOB, CLOB y DBCLOB

Nombre del archivo Debe especificarlo el programa de aplicacin en


tiempo de ejecucin. Puede ser:
v El nombre completo de la va de acceso de un
archivo (opcin que se recomienda).
v Un nombre de archivo relativo. Si se proporciona
un nombre de archivo relativo, se aade a la va
de acceso actual del proceso cliente.
En una aplicacin, slo debe hacerse referencia a
un archivo en una variable de referencia a archivos.
Longitud del nombre de archivo
Debe especificarlo el programa de aplicacin en
tiempo de ejecucin. Es la longitud del nombre de
archivo (en bytes).
Opciones de archivo Una aplicacin debe asignar una las opciones a una
variable de referencia a archivos antes de utilizar
dicha variable. Las opciones se establecen mediante
un valor INTEGER en un campo de la estructura
de la variable de referencia a archivos. Se debe
especificar alguna de estas opciones para cada
variable de referencia a archivos:
v Entrada (de cliente a servidor)
SQL_FILE_READ
Archivo regular que se puede
abrir, leer y cerrar. (La opcin es
SQL-FILE-READ en COBOL,
sql_file_read en FORTRAN y
READ en REXX.)
v Salida (de servidor a cliente)
SQL_FILE_CREATE
Crear un nuevo archivo. Si el
archivo ya existe, se devuelve un
error. (La opcin es
SQL-FILE-CREATE en COBOL,
sql_file_create en FORTRAN y
CREATE en REXX.)
SQL_FILE_OVERWRITE (sobreescribir)
Si ya existe un archivo con el
nombre especificado, se
sobreescribe el contenido del
archivo; de lo contrario, se crea
un nuevo archivo. (La opcin es
SQL-FILE-OVERWRITE en
COBOL, sql_file_overwrite en
FORTRAN y OVERWRITE en
REXX.)
SQL_FILE_APPEND
Si ya existe un archivo con el
nombre especificado, la salida se
aade a ste; de lo contrario, se
crea un nuevo archivo. (La
opcin es SQL-FILE-APPEND en

Captulo 2. Elementos del lenguaje 85


Referencias a las variables de referencia de archivos BLOB, CLOB y DBCLOB

COBOL, sql_file_append en
FORTRAN y APPEND en
REXX.)
Longitud de datos
No se utiliza en la entrada. En la salida, la
implantacin establece la longitud de datos
en la longitud de los nuevos datos
grabados en el archivo. La longitud se
mide en bytes.

Como sucede con el resto de variables del lenguaje principal, una variable de
referencia a archivos puede tener asociada una variable indicadora.

Ejemplo de una variable de referencia a archivos de salida (en C): Supongamos


una seccin de declaracin codificada como:
EXEC SQL BEGIN DECLARE SECTION
SQL TYPE IS CLOB_FILE hv_text_file;
char hv_patent_title[64];
EXEC SQL END DECLARE SECTION

Una vez procesada:


EXEC SQL BEGIN DECLARE SECTION
/* SQL TYPE IS CLOB_FILE hv_text_file; */
struct {
unsigned long name_length; // Longitud del nombre del archivo
unsigned long data_length; // Longitud de datos
unsigned long file_options; // Opciones de archivo
char name[255]; // Nombre del archivo
} hv_text_file;
char hv_patent_title[64];
EXEC SQL END DECLARE SECTION

El cdigo siguiente puede utilizarse para seleccionar en una columna CLOB de la


base de datos para un nuevo archivo al que :hv_text_file hace referencia.
strcpy(hv_text_file.name, "/u/gainer/papers/sigmod.94");
hv_text_file.name_length = strlen("/u/gainer/papers/sigmod.94");
hv_text_file.file_options = SQL_FILE_CREATE;

EXEC SQL SELECT content INTO :hv_text_file from papers


WHERE TITLE = The Relational Theory behind Juggling;

Ejemplo de una variable de referencia a archivos de entrada (en C): Tomando la


misma seccin de declaracin que antes, se puede utilizar el siguiente cdigo para
insertar datos de un archivo normal al que :hv_text_file hace referencia en una
columna CLOB.
strcpy(hv_text_file.name, "/u/gainer/patents/chips.13");
hv_text_file.name_length = strlen("/u/gainer/patents/chips.13");
hv_text_file.file_options = SQL_FILE_READ:
strcpy(:hv_patent_title, "A Method for Pipelining Chip Consumption");

EXEC SQL INSERT INTO patents( title, text )


VALUES(:hv_patent_title, :hv_text_file);

Referencias a variables del lenguaje principal de tipo


estructurado
Las variables de tipo estructurado pueden definirse en todos los lenguajes de
sistema principal, excepto FORTRAN, REXX y Java. Puesto que no son tipos de

86 Consulta de SQL - Volumen 1


Referencias a variables del lenguaje principal de tipo estructurado

datos nativos, se utilizan las extensiones SQL y los precompiladores generan las
construcciones de lenguaje principal necesarias para poder representar a cada
variable.

Al igual que en todas las dems variables del lenguaje principal, una variable de
tipo estructurado puede tener una variable indicadora asociada. Las variables
indicadoras correspondientes a las variables del lenguaje principal de tipo
estructurado actan de la misma manera que las variables indicadoras de otros
tipos de datos. Cuando una base de datos devuelve un valor nulo, se define la
variable indicadora y la variable del lenguaje principal de tipo estructurado no
cambia.

La variable del lenguaje principal propiamente dicha correspondiente a un tipo


estructurado est definida como tipo de datos interno. El tipo de datos interno
asociado al tipo estructurado debe ser asignable:
v desde el resultado de la funcin de transformacin FROM SQL para el tipo
estructurado tal como est definida por la opcin especificada TRANSFORM
GROUP del mandato de precompilacin; y
v al parmetro de la funcin de transformacin TO SQL para el tipo estructurado
tal como est definida por la opcin especificada TRANSFORM GROUP del
mandato de precompilacin.

Si se utiliza un marcador de parmetros en lugar de una variable del lenguaje


principal, se deben especificar las caractersticas apropiadas del tipo de parmetro
en la SQLDA. Esto requiere un conjunto duplicado de estructuras SQLVAR en la
SQLDA, y el campo SQLDATATYPE_NAME de la SQLVAR debe contener el
nombre de esquema y nombre de tipo del tipo estructurado. Si se omite el
esquema en la estructura SQLDA, se produce un error (SQLSTATE 07002).

Ejemplo: Defina las variables del lenguaje principal hv_poly y hv_point (de tipo
POLYGON, utilizando el tipo interno BLOB(1048576)) en un programa C.
EXEC SQL BEGIN DECLARE SECTION;
SQL esttico
TYPE IS POLYGON AS BLOB(1M)
hv_poly, hv_point;
EXEC SQL END DECLARE SECTION;

Informacin relacionada:
v Apndice N, Consideraciones sobre el cdigo UNIX ampliado (EUC) en japons
y chino tradicional, en la pgina 893
v Objeto grande (LOB) en la pgina 97
v Apndice G, Nombres de esquema reservados y palabras reservadas, en la
pgina 827
v Apndice A, Lmites de SQL y XQuery, en la pgina 585
v Sentencia CREATE ALIAS en Consulta de SQL, Volumen 2
v Sentencia PREPARE en Consulta de SQL, Volumen 2
v Sentencia SET SCHEMA en Consulta de SQL, Volumen 2
v Consultas de SQL en la pgina 529
v Apndice C, SQLDA (rea de descriptores de SQL), en la pgina 601

Captulo 2. Elementos del lenguaje 87


Tipos de datos

Tipos de datos

Tipos de datos
La unidad ms pequea de datos que se puede manipular en SQL se denomina un
valor. Los valores se interpretan segn el tipo de datos de su fuente. Entre los
fuentes se incluyen:
v Constantes
v Columnas
v Variables del lenguaje principal
v Funciones
v Expresiones
v Registros especiales.

DB2 da soporte a una serie de tipos de datos incorporados. Tambin proporciona


soporte para los tipos de datos definidos por el usuario. La Figura 10 en la pgina
89 ilustra los tipos de datos internos a los que se da soporte.

88 Consulta de SQL - Volumen 1


Tipos de datos

Figura 10. Tipos de datos internos de DB2 soportados

Todos los tipos de datos incluyen el valor nulo. El valor nulo es un valor especial
que se diferencia de todos los valores que no son nulos y, por lo tanto, indica la
ausencia de un valor (no nulo). Aunque todos los tipos de datos incluyen el valor
nulo, las columnas definidas como NOT NULL no pueden contener valores nulos.

Informacin relacionada:
v Tipos definidos por el usuario en la pgina 105

Captulo 2. Elementos del lenguaje 89


Nmeros

Nmeros
Todos los nmeros tienen un signo y una precisin. El signo se considera positivo
si el valor de un nmero es cero. La precisin es el nmero de bits o de dgitos
excluyendo el signo.

Consulte el apartado sobre tipo de datos en la descripcin de la sentencia CREATE


TABLE.

Entero pequeo (SMALLINT)


Un entero pequeo es un entero de dos bytes con una precisin de 5 dgitos. El
rango de pequeos enteros va de -32 768 a 32 767.

Entero grande (INTEGER)


Un entero grande es un entero de cuatro bytes con una precisin de 10 dgitos. El
rango de enteros grandes va de 2 147 483 648 a +2 147 483 647.

Entero superior (BIGINT)


Un entero superior es un entero de ocho bytes con una precisin de 19 dgitos. El
rango de los enteros superiores va de 9 223 372 036 854 775 808 a
+9 223 372 036 854 775 807.

Coma flotante de precisin simple (REAL)


Un nmero de coma flotante de precisin simple es una aproximacin de 32 bits de un
nmero real. El nmero puede ser cero o puede estar en el rango de
-3,4028234663852886e+38 a -1.1754943508222875e-38, o de 1,1754943508222875e-38 a
3,4028234663852886e+38.

Coma flotante de doble precisin (DOUBLE o FLOAT)


Una nmero de coma flotante de doble precisin es una aproximacin de 64 bits de un
nmero real. El nmero puede ser cero o puede estar en el rango de
-1,7976931348623158e+308 a -2,2250738585072014e-308, o de 2,2250738585072014e-
308 a 1,7976931348623158e+308.

Decimal (DECIMAL o NUMERIC)


Un valor decimal es un nmero decimal empaquetado con una coma decimal
implcita. La posicin de la coma decimal la determinan la precisin y la escala del
nmero. La escala, que es el nmero de dgitos en la parte de la fraccin del
nmero, no puede ser negativa ni mayor que la precisin. La precisin mxima es
de 31 dgitos.

Todos los valores de una columna decimal tienen la misma precisin y escala. El
rango de una variable decimal o de los nmeros de una columna decimal es de n
a +n, donde el valor absoluto de n es el nmero mayor que puede representarse
con la precisin y escalas aplicables. El rango mximo va de -10**31+1 a 10**31-1.

Informacin relacionada:
v Sentencia CREATE TABLE en Consulta de SQL, Volumen 2
v Apndice C, SQLDA (rea de descriptores de SQL), en la pgina 601

90 Consulta de SQL - Volumen 1


Series de caracteres

Series de caracteres
Una serie de caracteres es una secuencia de bytes. La longitud de la serie es el
nmero de bytes en la secuencia. Si la longitud es cero, el valor se denomina la
serie vaca. Este valor no debe confundirse con el valor nulo.

Serie de caracteres de longitud fija (CHAR)


Todos los valores de una columna de series de longitud fija tienen la misma
longitud, que est determinada por el atributo de longitud de la columna. El
atributo de longitud debe estar entre 1 y 254, inclusive.

Series de caracteres de longitud variable


Existen tres tipos de series de caracteres de longitud variable:
v Un valor VARCHAR puede tener una longitud mxima de 32 672 bytes.
v Un valor LONG VARCHAR puede tener una longitud mxima de 32 700 bytes.
v Un valor CLOB (objeto grande de caracteres) puede tener una longitud mxima
de 2 gigabytes (2 147 483 647 bytes). Un CLOB se utiliza para almacenar datos
basados en caracteres SBCS o mixtos (SBCS y MBCS) (como, por ejemplo,
documentos escritos con un solo juego de caracteres) y, por lo tanto, tiene una
pgina de cdigos SBCS o mixta asociada).

Se aplican restricciones especiales a las expresiones que dan como resultado un


tipo de datos LONG VARCHAR o CLOB y a las columnas de tipo estructurado;
estas expresiones y columnas no se permiten en:
v Una lista SELECT precedida por la clusula DISTINCT
v Una clusula GROUP BY
v Una clusula ORDER BY
v Una subseleccin de un operador de conjunto que no sea UNION ALL
v Un predicado BETWEEN o IN bsico y cuantificado
v Una funcin de columna
v Las funciones escalares VARGRAPHIC, TRANSLATE y de fecha y hora
v El operando patrn de un predicado LIKE o el operando de serie de bsqueda
de una funcin POSSTR
v La representacin en una serie de un valor de fecha y hora.

Las funciones del esquema SYSFUN que toman como argumento VARCHAR no
aceptarn las VARCHAR que tengan ms de 4 000 bytes de longitud como
argumento. Sin embargo, muchas de estas funciones tambin pueden tener una
signatura alternativa que acepte un CLOB(1M). Para estas funciones, el usuario
puede convertir explcitamente las series VARCHAR mayores que 4 000 en datos
CLOB y luego reconvertir el resultado en datos VARCHAR de la longitud deseada.

Las series de caracteres terminadas en nulo que se encuentran en C se manejan de


manera diferente, dependiendo del nivel de estndares de la opcin de
precompilacin.

Cada serie de caracteres se define con ms detalle como:


Datos de bits Datos que no estn asociado con una pgina de cdigos.
Datos del juego de caracteres de un solo byte(SBCS)
Datos en los que cada carcter est representado por un solo byte.

Captulo 2. Elementos del lenguaje 91


Series de caracteres de longitud variable

Datos mixtos Datos que pueden contener una mezcla de caracteres de un juego
de caracteres de un solo byte y de un juego de caracteres de
mltiples bytes (MBCS).

Unidades de serie en las funciones incorporadas


La capacidad para especificar unidades de serie para determinadas funciones
incorporadas permite procesar los datos de las series basndose ms en los
caracteres que en los bytes. La unidad de serie determina la longitud sobre la que se
realizar una operacin. Puede especificar CODEUNITS16, CODEUNITS32 u
OCTETS como unidad de serie para una operacin.
CODEUNITS16
Especifica que la unidad de la operacin ser Unicode UTF-16.
CODEUNITS16 es til en el caso de aplicaciones que procesan datos en
unidades de cdigo que tienen dos bytes de ancho. Tenga en cuenta que
algunos caracteres, conocidos como caracteres suplementarios, necesitan dos
unidades de cdigo UTF-16 para codificarse. Por ejemplo, la clave G de
smbolo musical (en ingls) necesita dos unidades de cdigo UTF-16
(X'D834' y X'DD1E' en UTF-16BE).
CODEUNITS32
Especifica que la unidad de operacin ser Unicode UTF-32.
CODEUNITS32 es til en el caso de aplicaciones que procesan datos en un
formato sencillo, de longitud fija, que debe devolver la misma respuesta,
con independencia del formato de almacenamiento de los datos (ASCII,
UTF-8 o UTF-16).
OCTETS
Especifica que las unidades de operacin son los bytes. OCTETS se utiliza
a menudo cuando una aplicacin tiene inters en asignar espacio de
almacenamiento intermedio o cuando las operaciones necesitan utilizar un
proceso de bytes sencillo.

La longitud calculada de una serie obtenida mediante OCTETS (bytes) puede ser
diferente de la que se calcula mediante CODEUNITS16 o CODEUNITS32. Cuando
se utiliza OCTETS, la longitud de la serie se determina simplemente contando el
nmero de bytes de la serie, mientras que cuando se utiliza CODEUNITS16 o
CODEUNITS32, la longitud de la serie se determina contando el nmero de
unidades de cdigo de 16 bits o de 32 bits necesarias para representar la serie en
UTF-16 o UTF-32, respectivamente. La longitud que se determine mediante
CODEUNITS16 o CODEUNITS32 ser idntica, a menos que los datos contengan
caracteres suplementarios (vea Diferencia entre CODEUNITS16 y CODEUNITS32
en la pgina 93).

Por ejemplo, supongamos que NAME, una columna VARCHAR(128) codificada en


Unicode UTF-8, contiene el valor Jrgen. Las dos consultas siguientes, que
cuentan la longitud de la serie CODEUNITS16 y CODEUNITS32, respectivamente,
devuelven el mismo valor (6).
SELECT CHARACTER_LENGTH(NAME,CODEUNITS16) FROM T1
WHERE NAME = Jrgen

SELECT CHARACTER_LENGTH(NAME,CODEUNITS32) FROM T1


WHERE NAME = Jrgen

La consulta siguiente, que cuenta la longitud de la serie en OCTETS, devuelve el


valor 7.
SELECT CHARACTER_LENGTH(NAME,OCTETS) FROM T1
WHERE NAME = Jrgen

92 Consulta de SQL - Volumen 1


Unidades de serie en las funciones incorporadas

Estos valores representan la longitud de la serie expresada en la unidad de serie


especificada.

La tabla siguiente muestra las representaciones UTF-8, UTF-16BE (big endian) y


UTF-32BE (big endian) del nombre Jrgen:
Formato Representacin del nombre Jrgen
-------- --------------------------------------
UTF-8 X4AC3BC7267656E
UTF-16BE X004A00FC007200670065006E
UTF-32BE X0000004A000000FC0000007200000067000000650000006E

El carcter se representa de forma diferente en las tres unidades de serie:


v La representacin UTF-8 del carcter es X'C3BC'.
v La representacin UTF-16BE del carcter es X'00FC'.
v La representacin UTF-32BE del carcter es X'000000FC'.

La especificacin de unidades de serie para una funcin incorporada no repercute


sobre los tipos de datos o la pgina de cdigos del resultado de la funcin. Si es
preciso, DB2 convierte los datos a Unicode para una evaluacin, cuando se
especifica CODEUNITS16 o CODEUNITS32.

Cuando se especifica OCTETS para la funcin LOCATE o POSITION y las pginas


de cdigo de los argumentos de la serie varan, DB2 convierte los datos en la
pgina de cdigos del argumento serie-fuente. En dicho caso, el resultado de la
funcin se encuentra en la pgina de cdigos del argumento serie-fuente. Cuando se
especifica OCTETS para funciones que toman un nico argumento de serie, los
datos se evalan en la pgina de cdigos del argumento de la serie y el resultado
de la funcin se encontrar en la pgina de cdigos del argumento de la serie.

Diferencia entre CODEUNITS16 y CODEUNITS32: Cuando se especifica


CODEUNITS16 o CODEUNITS32, el resultado ser el mismo, salvo en el caso de
los datos que contengan caracteres Unicode suplementarios. Esto se debe a que los
caracteres Unicode suplementarios se representan mediante dos unidades de
cdigo UTF-16 o una unidad de cdigo UTF-32. En UTF-8, los caracteres que no
sean suplementarios se representan mediante 1 a 3 bytes, y un carcter
suplementario se representa mediante 4 bytes. En UTF-16, los caracteres que no
sean suplementarios estn representados por una unidad de cdigo CODEUNITS16
o 2 bytes y un carcter suplementario est representado mediante dos unidades de
cdigo CODEUNITS16 o 4 bytes. En UTF-32, un carcter est representado por una
unidad de cdigo CODEUNITS32 o 4 bytes.

Por ejemplo, la tabla siguiente muestra los valores hexadecimales de la A


mayscula matemtica en negrita y la A mayscula latina. La A mayscula
matemtica en negrita es un carcter suplementario que se representa mediante 4
bytes en UTF-8, UTF-16 y UTF-32.

Representacin Representacin Representacin


Carcter UTF-8 UTF-16BE UTF-32BE
Valor Unicode X'F09D9080' X'D835DC00' X'0001D400'
X'1D400' - A; A
mayscula
matemtica en negrita
Valor Unicode X'0041' X'41' X'0041' X'00000041'
- A; A mayscula
latina

Captulo 2. Elementos del lenguaje 93


Unidades de serie en las funciones incorporadas

Supongamos que C1 es una columna VARCHAR(128), codificada en Unicode


UTF-8 y que el T1 de dicha tabla contiene una fila con el valor de la A mayscula
matemtica en negrita (X'F09D9080'). Las consultas siguientes devuelven resultados
diferentes:
Consulta Devuelve
----- -------
SELECT CHARACTER_LENGTH(C1,CODEUNITS16) FROM T1 2

SELECT CHARACTER_LENGTH(C1,CODEUNITS32) FROM T1 1

SELECT CHARACTER_LENGTH(C1,OCTETS) FROM T1 4

94 Consulta de SQL - Volumen 1


Series grficas

Series grficas
Una serie grfica es una secuencia de bytes que representa datos de caracteres de
doble byte. La longitud de la serie es el nmero de caracteres de doble byte de la
secuencia. Si la longitud es cero, el valor se denomina la serie vaca. Este valor no
debe confundirse con el valor nulo.

Las series grficas no se comprueban para asegurarse de que sus valores slo
contienen elementos de cdigo de caracteres de doble byte. (La excepcin a esta
regla es una aplicacin precompilada con la opcin WCHARTYPE CONVERT. En
este caso, s que se efecta la validacin.) En lugar de esto, el gestor de bases de
datos supone que los datos de caracteres de doble byte estn contenidos en
campos de datos grficos. El gestor de bases de datos s que comprueba que un
valor de la longitud de una serie grfica sea nmero par de bytes.

Las series grficas terminadas en nulo que se encuentran en C se manejan de


manera diferente, dependiendo del nivel de estndares de la opcin de
precompilacin. Este tipo de datos no puede crearse en una tabla. Slo se puede
utilizar para insertar datos en la base de datos y recuperarlos de la misma.

Series grficas de longitud fija (GRAPHIC)


Todos los valores de una columna de series grficas de longitud fija tienen la
misma longitud, que viene determinada por el atributo de longitud de la columna.
El atributo de longitud debe estar entre 1 y 127, inclusive.

Series grficas de longitud variable


Existen tres tipos de series grficas de longitud variable:
v Un valor VARGRAPHIC puede tener una longitud mxima de 16 336 caracteres
de doble byte.
v Un valor LONG VARGRAPHIC puede tener una longitud mxima de 16 350
caracteres de doble byte.
v Un valor DBCLOB (objeto grande de caracteres de doble byte) puede tener una
longitud mxima de 1 073 741 823 caracteres de doble byte. Un DBCLOB se
utiliza para almacenar datos DBCS grandes basados en caracteres (por ejemplo,
documentos escritos con un solo juego de caracteres) y, por lo tanto, tiene
asociada una pgina de cdigos DBCS).

Se aplican restricciones especiales a una expresin que d como resultado una serie
grfica de longitud variable cuya longitud mxima sea mayor que 127 bytes. Estas
restricciones son las mismas que las especificadas en el apartado Series de
caracteres de longitud variable en la pgina 91.

Captulo 2. Elementos del lenguaje 95


Series binarias

Series binarias
Una serie binaria es una secuencia de bytes. A diferencia de las series de caracteres,
que suelen contener datos de texto, las series binarios se utilizan para contener
datos no tradicionales como, por ejemplo, imgenes, voz o soportes mixtos. Las
series de caracteres del subtipo FOR BIT DATA puede utilizarse para fines
similares, pero los dos tipos de datos no son compatibles. La funcin escalar BLOB
puede utilizarse para convertir una serie de caracteres FOR BIT DATA en una serie
binaria. Las series binarias no estn asociadas a ninguna pgina de cdigos. Tienen
las mismas restricciones que las series de caracteres (consulte los detalles en el
apartado Series de caracteres de longitud variable en la pgina 91).

Objeto grande binario (BLOB)


Un objeto grande binario es una serie binario de longitud variable que puede tener
una longitud mxima de 2 gigabytes (2 147 483 647 bytes). Los valores BLOB
pueden contener datos estructurados para que los utilicen las funciones definidas
por el usuario y los tipos definidos por el usuario. Igual que las series de
caracteres FOR BIT DATA, las series BLOB no estn asociadas a ninguna pgina de
cdigos.

96 Consulta de SQL - Volumen 1


Objeto grande (LOB)

Objeto grande (LOB)


El trmino objeto grande y el acrnimo genrico LOB hace referencia al tipo de
datos BLOB, CLOB o DBCLOB. Los valores LOB estn sujetos a las restricciones
que se aplican a los valores LONG VARCHAR, que se describen en el apartado
Series de caracteres de longitud variable en la pgina 91. Estas restricciones se
aplican incluso si el atributo de longitud de la serie LOB es de 254 bytes o menor.

Los valores LOB pueden ser muy grandes y la transferencia de dichos valores
desde servidor de bases de datos a las variables del lenguaje principal del
programa de aplicacin cliente puede tardar mucho tiempo. Como normalmente
los programas de aplicacin procesan los valores LOB de fragmento en fragmento
en lugar de como un todo, las aplicaciones pueden hacer referencia a un valor LOB
utilizando un localizador de objeto grande.

Un localizador de objeto grande o localizador de LOB es una variable del lenguaje


principal cuyo valor representa un solo valor LOB del servidor de bases de datos.

Un programa de aplicacin puede seleccionar un valor LOB en un localizador de


LOB. Entonces, utilizando el localizador de LOB, el programa de aplicacin puede
solicitar operaciones de base de datos basadas en el valor LOB (por ejemplo,
aplicar las funciones escalares SUBSTR, CONCAT, VALUE o LENGTH, realizar una
asignacin, efectuar bsquedas en el LOB con LIKE o POSSTR o aplicar funciones
definidas por el usuario sobre el LOB) proporcionando el valor del localizador
como entrada. La salida resultante (los datos asignados a una variable del lenguaje
principal cliente), sera normalmente un subconjunto pequeo del valor LOB de
entrada.

Los localizadores de LOB tambin pueden representar, adems de valores base, el


valor asociado con una expresin LOB. Por ejemplo, un localizador de LOB puede
representar el valor asociado con:
SUBSTR( <lob 1> CONCAT <lob 2> CONCAT <lob 3>, <inicio>, <longitud> )

Cuando se selecciona un valor nulo en una variable del lenguaje principal normal,
la variable indicadora se establece en -1, lo que significa que el valor es nulo. Sin
embargo, en el caso de los localizadores de LOB, el significado de las variables
indicadoras es ligeramente distinto. Como una variable del lenguaje principal del
localizador en s nunca puede ser nula, un valor negativo de variable indicadora
significa que el valor LOB representado por el localizador de LOB es nulo. La
informacin de nulo se mantiene local para el cliente en virtud del valor de la
variable indicadora el servidor no hace ningn seguimiento de los valores nulos
con localizadores vlidos.

Es importante comprender que un localizador de LOB representa un valor, no una


fila ni una ubicacin en la base de datos. Cuando se ha seleccionado un valor en
un localizador, no hay ninguna operacin que se pueda efectuar en la fila o tabla
originales que afecte al valor al que hace referencia el localizador. El valor asociado
con un localizador es vlido hasta que finaliza la transaccin o hasta que el
localizador se libera explcitamente, lo primero que se produzca. Los localizadores
no fuerzan copias adicionales de los datos para proporcionar esta funcin. En su
lugar, el mecanismo del localizador almacena una descripcin del valor LOB base.
La materializacin del valor LOB (o expresin, tal como se muestra arriba) se
difiere hasta que se asigna realmente a alguna ubicacin: un almacenamiento
intermedio del usuario en forma de una variable del lenguaje principal u otro
registro de la base de datos.

Captulo 2. Elementos del lenguaje 97


Objeto grande (LOB)

Un localizador de LOB es slo un mecanismo utilizado para hacer referencia a un


valor LOB durante una transaccin; no persiste ms all de la transaccin en la que
se ha creado. No es un tipo de base de datos; nunca se almacena en la base de
datos y, como resultado, no puede participar en vistas ni en restricciones de
comprobacin. Sin embargo, como un localizador de LOB es una representacin
cliente de un tipo LOB, hay SQLTYPE para localizadores de LOB para que puedan
describirse dentro de una estructura SQLDA que se utiliza por sentencias FETCH,
OPEN y EXECUTE.

98 Consulta de SQL - Volumen 1


Valores de fecha y hora

Valores de fecha y hora


Entre los tipos de datos de fecha y hora se incluyen DATE, TIME y TIMESTAMP.
Aunque los valores de fecha y hora se pueden utilizar en algunas operaciones
aritmticas y de series y son compatibles con algunas series, no son ni series ni
nmeros.

Fecha
Una fecha es un valor que se divide en tres partes (ao, mes y da). El rango de la
parte correspondiente al ao va de 0001 a 9999. El rango de la parte
correspondiente al mes va de 1 a 12. El rango de la parte correspondiente al da va
de 1 a x, donde x depende del mes.

La representacin interna de una fecha es una serie de 4 bytes. Cada byte consta
de 2 dgitos decimales empaquetados. Los 2 primeros bytes representan el ao, el
tercer byte el mes y el ltimo byte el da.

La longitud de una columna DATE, tal como se describe en el SQLDA, es de 10


bytes, que es la longitud adecuada para una representacin de serie de caracteres
del valor.

Hora
Una hora es un valor que se divide en tres partes (hora, minuto y segundo) que
indica una hora del da de un reloj de 24 horas. El rango de la parte
correspondiente a la hora va de 0 a 24. El rango de la otra parte va de 0 a 59. Si la
hora es 24, las especificaciones de los minutos y segundos son cero.

La representacin interna de la hora es una serie de 3 bytes. Cada byte consta de 2


dgitos decimales empaquetados. El primer byte representa la hora, el segundo
byte el minuto y el ltimo byte el segundo.

La longitud de la columna TIME, tal como se describe en SQLDA, es de 8 bytes,


que es la longitud adecuada para una representacin de serie de caracteres del
valor.

Indicacin de fecha y hora


Una indicacin de fecha y hora es un valor dividido en siete partes (ao, mes, da,
hora, minuto, segundo y microsegundo) que indica una fecha y una hora como las
definidas ms arriba, excepto en que la hora incluye la especificacin fraccional de
los microsegundos.

La representacin interna de la indicacin de fecha y hora es una serie de 10 bytes.


Cada byte consta de 2 dgitos decimales empaquetados. Los 4 primeros bytes
representan la fecha, los 3 bytes siguientes la hora y los ltimos 3 bytes los
microsegundos.

La longitud de una columna TIMESTAMP, tal como se describe en el SQLDA, es


de 26 bytes, que es la longitud adecuada para la representacin de serie de
caracteres del valor.

Representacin mediante series de los valores de fecha y hora


Los valores cuyos tipos de datos son DATE, TIME o TIMESTAMP se representan
en un formato interno que es transparente para el usuario. Sin embargo, los valores
de fecha, hora e indicacin de fecha y hora tambin pueden representarse
mediante series. Esto resulta til porque no existen constantes ni variables cuyo
tipo de datos sean DATE, TIME o TIMESTAMP. Antes de poder recuperar un valor

Captulo 2. Elementos del lenguaje 99


Representacin mediante series de los valores de fecha y hora

de fecha y hora, ste debe asignarse a una variable de serie. La funcin GRAPHIC
(slo para bases de datos Unicode) puede utilizarse para cambiar el valor de fecha
y hora a una representacin de serie. Normalmente, la representacin de serie es el
formato por omisin de los valores de fecha y hora asociados con el cdigo
territorial de la aplicacin, a menos que se alteren temporalmente por la
especificacin de la opcin DATETIME al precompilar el programa o vincularlo
con la base de datos.

Con independencia de su longitud, no puede utilizarse una serie de objeto grande,


un valor LONG VARCHAR ni un valor LONG VARGRAPHIC para representar un
valor de fecha y hora (SQLSTATE 42884).

Cuando se utiliza una representacin de serie vlida de un valor de fecha y hora


en una operacin con un valor de fecha y hora interno, la representacin de serie
se convierte al formato interno del valor de fecha, hora o indicacin de fecha y
hora antes de realizar la operacin.

Las series de fecha, hora e indicacin de fecha y hora slo deben contener
caracteres y dgitos.

Series de fecha: Una representacin de serie de una fecha es una serie que
empieza por un dgito y que tiene una longitud de 8 caracteres como mnimo.
Pueden incluirse blancos de cola; pueden omitirse los ceros iniciales de las partes
correspondientes al mes y al da.

Los formatos vlidos para las series se indican en la tabla siguiente. Cada formato
se identifica mediante el nombre y la abreviatura asociada.
Tabla 3. Formatos para las representaciones de serie de fechas
Formato de
Nombre del formato Abreviatura fecha Ejemplo
International Standards ISO aaaa-mm-dd 1991-10-27
Organization
Estndar IBM USA USA mm/dd/aaaa 10/27/1991
Estndar IBM European EUR dd.mm.aaaa 27.10.1991
Era Japanese Industrial Standard JIS aaaa-mm-dd 1991-10-27
Christian
Definido-sitio LOC Depende del
cdigo territorial
de la aplicacin

Series de hora: Una representacin de serie de una hora es una serie que empieza
por un dgito y que tiene una longitud de 4 caracteres como mnimo. Pueden
incluirse blancos de cola; puede omitirse un cero inicial de la parte correspondiente
a la hora y pueden omitirse por completo los segundos. Si se omiten los segundos,
se supone una especificacin implcita de 0 segundos. De este modo, 13:30 es
equivalente a 13:30:00.

Los formatos vlidos para las series de horas se indican en la tabla siguiente. Cada
formato se identifica mediante el nombre y la abreviatura asociada.

100 Consulta de SQL - Volumen 1


Series de hora

Tabla 4. Formatos para representaciones de serie de horas


Formato de la
Nombre del formato Abreviatura hora Ejemplo
International Standards ISO hh.mm.ss 13.30.05
Organization
Estndar IBM USA USA hh:mm AM o 1:30 PM
PM
Estndar IBM European EUR hh.mm.ss 13.30.05
Era Japanese Industrial Standard JIS hh:mm:ss 13:30:05
Christian
Definido-sitio LOC Depende del
cdigo territorial
de la aplicacin

Notas:
1. En el formato ISO, EUR o JIS, .ss (o :ss) es opcional.
2. La organizacin International Standards Organization ha cambiado el formato
de la hora, de modo que ahora es idntico al de Japanese Industrial Standard
Christian Era. Por lo tanto, utilice el formato JIS si una aplicacin necesita el
formato actual de International Standards Organization.
3. En el formato de serie de hora USA, puede omitirse la especificacin de los
minutos, con lo que se indica una especificacin implcita de 00 minutos. Por lo
tanto, 1 PM equivale a 1:00 PM.
4. En el formato de hora USA, la hora no debe ser mayor que 12 y no puede ser
0, excepto en el caso especial de 00:00 AM. Hay un solo espacio antes de AM
o PM. AM y PM pueden representarse en minsculas o en maysculas.
Si se utiliza el formato JIS del reloj de 24 horas, la correspondencia entre el
formato USA y el reloj de 24 horas es la siguiente:
12:01 AM a 12:59 AM corresponde a 00:01:00 a 00:59:00.
01:00 AM a 11:59 AM corresponde a 01:00:00 a 11:59:00.
12:00 PM (medioda) a 11:59 PM corresponde a 12:00:00 a 23:59:00.
12:00 AM (medianoche) corresponde a 24:00:00 y 00:00 AM (medianoche)
corresponde a 00:00:00.

Series de indicacin de fecha y hora: Una representacin de serie de una


indicacin de fecha y hora es una serie que empieza por un dgito y que tiene una
longitud de 16 caracteres como mnimo. La representacin de serie completa de
una indicacin de fecha y hora tiene el formato aaaa-mm-dd-hh.mm.ss.nnnnnn. Se
pueden incluir los blancos de cola. Pueden omitirse los ceros iniciales de las partes
correspondientes al mes, da y hora de la indicacin de fecha y hora y se pueden
truncar los microsegundos u omitirse por completo. Si se omite cualquier cero de
cola en la parte correspondiente a los microsegundos, se asume la especificacin
implcita de 0 para los dgitos que faltan. Por lo tanto, 1991-3-2-8.30.00 es
equivalente a 1991-03-02-08.30.00.000000.

Las sentencias de SQL tambin dan soporte a la representacin de serie ODBC de


una indicacin de fecha y hora, pero slo como un valor de entrada. La
representacin de serie ODBC de una indicacin de fecha y hora tiene el formato
aaaa-mm-dd hh:mm:ss.nnnnnn.

Captulo 2. Elementos del lenguaje 101


Valores DATALINK

Valores DATALINK
Un valor DATALINK es un valor encapsulado que contiene una referencia lgica
de la base de datos a un archivo almacenado fuera de la base de datos. Los
atributos de este valor encapsulado son los siguientes:
tipo de enlace
El tipo de enlace soportado actualmente es 'URL' (Uniform Resource Locator).
ubicacin de datos
Ubicacin de un archivo enlazado a una referencia dentro de DB2, en forma de
un URL. Para este URL se pueden utilizar estos nombres de esquema:
v HTTP
v FILE
v UNC
Las dems partes del URL son:
v el nombre del servidor de archivos para los esquemas HTTP, FILE y UNC
v la va de acceso completa dentro del servidor de archivos
comentario
Hasta 200 bytes de informacin descriptiva, incluido el atributo de ubicacin de
los datos. Est pensado para los usos especficos de una aplicacin, como, por
ejemplo, una identificacin alternativa o ms detallada de la ubicacin de los
datos.

Los caracteres en blanco iniciales y de cola se eliminan durante el anlisis de los


atributos de ubicacin de datos en forma de URL. Adems, los nombres de
esquema ('http', 'file', 'unc') y de lenguaje principal no son sensibles a las
maysculas/minsculas y siempre se guardan en maysculas en la base de datos.
Cuando se recupera un valor DATALINK de una base de datos, se intercala un
smbolo de accesos dentro del atributo de URL si la columna DATALINK est
definida con READ PERMISSION DB o WRITE PERMISSION ADMIN. El smbolo
se genera dinmicamente y no es una parte permanente del valor DATALINK
almacenado en la base de datos.

Un valor DATALINK puede tener solamente un atributo de comentario y un


atributo vaco de ubicacin de datos. Incluso es posible que un valor de este tipo
se almacene en una columna, pero, naturalmente, no se enlazar ningn archivo a
esta columna. La longitud total del comentario y el atributo de ubicacin de datos
de un valor DATALINK est actualmente limitado a 200 bytes.

Es importante distinguir entre las referencias DATALINK a archivos y las variables


de referencia a archivos LOB. La semejanza es que ambas contienen una
representacin de un archivo. No obstante:
v Los valores DATALINK quedan retenidos en la base de datos y tanto los enlaces
como los datos de los archivos enlazados pueden considerarse una ampliacin
natural de datos en la base de datos.
v Las variables de referencia a archivos existen temporalmente en el cliente y
pueden considerarse una alternativa al almacenamiento intermedio de un
programa principal.

Utilice las funciones escalares incorporadas para crear un valor DATALINK


(DLVALUE, DLNEWCOPY, DLPREVIOUSCOPY y DLREPLACECONTENT) y para
extraer los valores encapsulados de un valor DATALINK (DLCOMMENT,
DLLINKTYPE, DLURLCOMPLETE, DLURLPATH, DLURLPATHONLY,

102 Consulta de SQL - Volumen 1


Valores DATALINK

DLURLSCHEME, DLURLSERVER, DLURLCOMPLETEONLY,


DLURLCOMPLETEWRITE y DLURLPATHWRITE).

Informacin relacionada:
v Apndice O, Especificaciones de formato de Backus-Naur (BNF) para los
enlaces de datos, en la pgina 901
v Identificadores en la pgina 65

Captulo 2. Elementos del lenguaje 103


Valores XML

Valores XML
Un valor XML representa el XML con formato correcto en forma de documento
XML, contenido XML o secuencia de nodos XML. Una valor XML que est
almacenado en una tabla como valor de una columna definida con el tipo de datos
XML debe ser un documento XML con formato correcto. Los valores XML se
procesan en una representacin interna que no se puede comparar con ningn
valor de serie. Un valor XML puede transformarse en una valor de serie
serializado que representa el documento XML mediante la funcin
XMLSERIALIZE. Igualmente, un valor de serie que representa un documento XML
puede transformarse en un valor XML utilizando la funcin XMLPARSE. Un valor
XML puede analizarse o serializarse implcitamente cuando se intercambia con
tipos de datos binarios y de serie de aplicacin.

Se aplican restricciones especiales a las expresiones que dan como resultado un


valor de tipo de datos XML; dichas expresiones y columnas no estn permitidas en
(SQLSTATE 42818):
v Una lista SELECT precedida por la clusula DISTINCT
v Una clusula GROUP BY
v Una clusula ORDER BY
v Una subseleccin de un operador de conjunto que no sea UNION ALL
v Un predicado BETWEEN, IN o LIKE bsico y cuantificado
v Una funcin agregada con DISTINCT

Informacin relacionada:
v XMLPARSE en la pgina 489
v XMLSERIALIZE en la pgina 497

104 Consulta de SQL - Volumen 1


Tipos definidos por el usuario

Tipos definidos por el usuario


Existen tres tipos de datos definidos por el usuario:
v Tipo diferenciado
v Tipo estructurado
v Tipo de referencia
Cada uno de ellos se describe en los apartados siguientes.

Tipos diferenciados
Un tipo diferenciado es un tipo de datos definido por el usuario que comparte su
representacin interna con un tipo existente (su tipo fuente), pero se considera
un tipo independiente e incompatible para la mayora de operaciones. Por ejemplo,
se desea definir un tipo de imagen, un tipo de texto y un tipo de audio, todos ellos
tienen semnticas bastante diferentes, pero utilizan el tipo de datos interno BLOB
para su representacin interna.

El siguiente ejemplo ilustra la creacin de un tipo diferenciado denominado


AUDIO:
CREATE DISTINCT TYPE AUDIO AS BLOB (1M)

Aunque AUDIO tenga la misma representacin que el tipo de datos interno BLOB,
se considera un tipo independiente; esto permite la creacin de funciones escritas
especialmente para AUDIO y asegura que dichas funciones no se aplicarn a
valores de ningn otro tipo de datos (imgenes, texto, etc.)

Los tipos diferenciados tienen identificadores calificados. Si no se utiliza el nombre


de esquema para calificar el nombre del tipo diferenciado cuando se emplea en
sentencias que no son CREATE DISTINCT TYPE, DROP DISTINCT TYPE o
COMMENT ON DISTINCT TYPE, en la va de acceso de SQL se busca por orden
el primer esquema con un tipo diferenciado que coincida.

Los tipos diferenciados dan soporte a una gran escritura asegurando que slo
aquellas funciones y operadores que estn explcitamente definidos en un tipo
diferenciado se puedan aplicar a sus instancias. Por esta razn, un tipo
diferenciado no adquiere automticamente las funciones y operadores de su tipo
fuente, ya que estas podran no tener ningn significado. (Por ejemplo, la funcin
LENGTH del tipo AUDIO puede devolver la longitud de su objeto en segundos en
lugar de bytes.)

Los tipos diferenciados que derivan de los tipos LONG VARCHAR, LONG
VARGRAPHIC, LOB o DATALINK estn sujetos a las mismas restricciones que su
tipo fuente.

Sin embargo, se puede especificar explcitamente que ciertas funciones y ciertos


operadores del tipo fuente se apliquen al tipo diferenciado. Esto puede hacerse
creando funciones definidas por el usuario que se deriven de funciones definidas
en el tipo fuente del tipo diferenciado. Los operadores de comparacin se generan
automticamente para los tipos diferenciados definidos por el usuario, excepto los
que utilicen LONG VARCHAR, LONG VARGRAPHIC, BLOB, CLOB, DBCLOB o
DATALINK como tipo fuente. Adems, se generan funciones para dar soporte a la
conversin del tipo fuente al tipo diferenciado y del tipo diferenciado al tipo
fuente.

Captulo 2. Elementos del lenguaje 105


Tipos estructurados

Tipos estructurados
Un tipo estructurado es un tipo de datos definido por el usuario con una estructura
definida en la base de datos. Contiene una secuencia de atributos con nombre, cada
uno de los cuales tiene un tipo de datos. Un tipo estructurado tambin incluye un
conjunto de especificaciones de mtodo.

Un tipo estructurado puede utilizarse como tipo de una tabla, de una vista o de
una columna. Cuando se utiliza como tipo para una tabla o vista, esa tabla o vista
se denomina tabla con tipo o vista con tipo, respectivamente. Para las tablas con tipo
y vistas con tipo, los nombres y tipos de datos de los atributos del tipo
estructurado pasan a ser los nombres y tipos de datos de las columnas de esta
tabla o vista con tipo. Las filas de la tabla o vista con tipo pueden considerarse una
representacin de instancias del tipo estructurado. Cuando se utiliza como tipo de
datos para una columna, la columna contiene valores de ese tipo estructurado (o
valores de cualquiera de los subtipos de ese tipo, tal como se describe ms abajo).
Los mtodos se utilizan para recuperar o manipular atributos de un objeto de
columna estructurado.

Terminologa: Un supertipo es un tipo estructurado para el que se han definido


otros tipos estructurados, llamados subtipos. Un subtipo hereda todos los atributos
y mtodos de su supertipo y puede tener definidos otros atributos y mtodos. El
conjunto de tipos estructurados que estn relacionados con un supertipo comn se
denomina jerarqua de tipos y el tipo que no tiene ningn supertipo se denomina el
tipo raz de la jerarqua de tipos.

El trmino subtipo se aplica a un tipo estructurado definido por el usuario y a


todos los tipos estructurados definidos por el usuario que estn debajo de l en la
jerarqua de tipos. Por tanto, un subtipo de un tipo estructurado T es T y todos los
tipos estructurados por debajo de T en la jerarqua. Un subtipo propio de un tipo
estructurado T es un tipo estructurado por debajo de T en la jerarqua de tipos.

Existen restricciones respecto a la existencia de definiciones recursivas de tipos en


una jerarqua de tipos. Por esta razn, es necesario desarrollar una forma abreviada
de hacer referencia al tipo especfico de definiciones recursivas que estn
permitidas. Se utilizan las definiciones siguientes:
v Utiliza directamente: Se dice que un tipo A utiliza directamente otro tipo B slo si
se cumple una de estas condiciones:
1. el tipo A tiene un atributo del tipo B
2. el tipo B es un subtipo de A, o un supertipo de A
v Utiliza indirectamente: Se dice que un tipo A utiliza indirectamente un tipo B slo
si se cumple una de estas condiciones:
1. el tipo A utiliza directamente el tipo B
2. el tipo A utiliza directamente cierto tipo C, y el tipo C utiliza indirectamente
el tipo B

Un tipo puede no estar definido para que uno de sus tipos de atributo se utilice,
directa o indirectamente, a s mismo. Si es necesario tener una configuracin as,
considere la posibilidad de utilizar una referencia como atributo. Por ejemplo, en el
caso de atributos de tipos estructurados, no puede existir una instancia de
empleado que tenga el atributo director cuando director es de tipo
empleado. En cambio, puede existir un atributo director cuyo tipo sea
REF(empleado).

106 Consulta de SQL - Volumen 1


Tipos estructurados

Un tipo no se puede descartar si ciertos otros objetos utilizan el tipo, ya sea directa
o indirectamente. Por ejemplo, no se puede descartar un tipo si una columna de
una tabla o vista hace uso directa o indirectamente del tipo.

Tipos de referencia
Un tipo de referencia es un tipo compaero de un tipo estructurado. De manera
similar a un tipo diferenciado, un tipo de referencia es un tipo escalar que
comparte una representacin comn con uno de los tipos de datos internos. Todos
los tipos de la jerarqua de tipos comparten esta misma representacin. La
representacin de un tipo de referencia se define cuando se crea el tipo raz de una
jerarqua de tipos. Cuando se utiliza un tipo de referencia, se especifica un tipo
estructurado como parmetro del tipo. Este parmetro se denomina el tipo de
destino de la referencia.

El destino de una referencia siempre es una fila de una tabla con tipo o una vista
con tipo. Cuando se utiliza un tipo de referencia, puede tener definido un mbito.
El mbito identifica una tabla (denominada tabla de destino) o una vista
(denominada vista de destino) que contiene la fila de destino de un valor de
referencia. La tabla de destino o la vista de destino debe tener el mismo tipo que el
tipo de destino del tipo de referencia. Una instancia de un tipo de referencia con
mbito identifica de forma exclusiva una fila en una tabla con tipo o en una vista
con tipo, denominada fila de destino.

Informacin relacionada:
v Asignaciones y comparaciones en la pgina 117
v Series de caracteres en la pgina 91
v CURRENT PATH en la pgina 160
v Sentencia DROP en Consulta de SQL, Volumen 2

Captulo 2. Elementos del lenguaje 107


Promocin de tipos de datos

Promocin de tipos de datos


Los tipos de datos se pueden clasificar en grupos de tipos de datos relacionados.
Dentro de estos grupos, existe un orden de prioridad en el que se considera que
un tipo de datos precede a otro tipo de datos. Esta prioridad se utiliza para
permitir la promocin de un tipo de datos a un tipo de datos posterior en el orden
de prioridad. Por ejemplo, el tipo de datos CHAR puede promocionarse a
VARCHAR, INTEGER puede promocionarse a DOUBLE-PRECISION pero CLOB
NO es promocionable a VARCHAR.

La promocin de tipos de datos se utiliza en estos casos:


v Para realizar la resolucin de la funcin
v Para convertir tipos definidos por el usuario
v Para asignar tipos definidos por el usuario a tipos de datos internos

La Tabla 5 muestra la lista de prioridad (por orden) para cada tipo de datos y se
puede utilizar para determinar los tipos de datos a los que se puede promover un
tipo de datos determinado. La tabla muestra que la mejor eleccin siempre es el
mismo tipo de datos en lugar de elegir la promocin a otro tipo de datos.
Tabla 5. Tabla de prioridades de tipos de datos
Tipo de datos Lista de prioridad de tipos de datos (por orden de mejor a peor)
CHAR CHAR, VARCHAR, LONG VARCHAR, CLOB
VARCHAR VARCHAR, LONG VARCHAR, CLOB
LONG LONG VARCHAR, CLOB
VARCHAR
GRAPHIC GRAPHIC, VARGRAPHIC, LONG VARGRAPHIC, DBCLOB
VARGRAPHIC VARGRAPHIC, LONG VARGRAPHIC, DBCLOB
LONG LONG VARGRAPHIC, DBCLOB
VARGRAPHIC
BLOB BLOB
CLOB CLOB
DBCLOB DBCLOB
SMALLINT SMALLINT, INTEGER, BIGINT, decimal, real, double
INTEGER INTEGER, BIGINT, decimal, real, double
BIGINT BIGINT, decimal, real, double
decimal decimal, real, double
real real, double
double double
DATE DATE
TIME TIME
TIMESTAMP TIMESTAMP
DATALINK DATALINK
udt udt (mismo nombre) o un supertipo de udt
REF(T) REF(S) (en el caso de que S sea un supertipo de T)

108 Consulta de SQL - Volumen 1


Promocin de tipos de datos

Tabla 5. Tabla de prioridades de tipos de datos (continuacin)


Tipo de datos Lista de prioridad de tipos de datos (por orden de mejor a peor)

Notas:
1. Los tipos en minsculas anteriores se definen de la siguiente manera:
v decimal = DECIMAL(p,s) o NUMERIC(p,s)
v real = REAL o FLOAT(n), donde n not es mayor que 24
v double = DOUBLE, DOUBLE-PRECISION, FLOAT o FLOAT(n), donde n es mayor que
24
v udt = un tipo definido por el usuario
Los sinnimos, ms cortos o ms lagos, de los tipos de datos listados se consideran
iguales a la forma listada.
2. Para una base de datos Unicode, los siguientes se consideran tipos de datos
equivalentes:
v CHAR y GRAPHIC
v VARCHAR y VARGRAPHIC
v LONG VARCHAR y LONG VARGRAPHIC
v CLOB y DBCLOB

Informacin relacionada:
v Asignaciones y comparaciones en la pgina 117
v Conversiones entre tipos de datos en la pgina 110
v Funciones en la pgina 172

Captulo 2. Elementos del lenguaje 109


Conversiones entre tipos de datos

Conversiones entre tipos de datos


En muchas ocasiones, un valor con un tipo de datos determinado, necesita
convertirse a otro tipo de datos diferente o al mismo tipo de datos, aunque con otra
longitud, precisin o escala. La promocin del tipo de datos es un ejemplo en el
que la promocin de un tipo de datos a otro tipo de datos necesita que el valor se
convierta al nuevo tipo de datos. Un tipo de datos que se puede convertir a otro
tipo de datos es convertible de un tipo de datos fuente al tipo de datos de destino.

La conversin de un tipo de datos a otro tipo de datos puede producirse de forma


implcita o explcita. Las funciones de conversin, la especificacin CAST o la
especificacin XMLCAST pueden utilizarse para cambiar de forma explcita a un
tipo de datos, segn los tipos de datos implicados. El gestor de bases de datos
puede convertir implcitamente tipos de datos durante las asignaciones en las que
participa un tipo diferente. Asimismo, cuando se crea una funcin definida por el
usuario de origen, los tipos de datos de los parmetros de la funcin fuente deben
poder convertirse a los tipos de datos de la funcin que se est creando.

La Tabla 6 en la pgina 111 muestra las conversiones permitidas entre tipos de


datos internos. La primera columna representa el tipo de datos del operando cast
(tipo de datos fuente) y los tipos de datos de la parte superior representan el tipo
de datos de destino de la operacin de conversin. Una S indica que la
especificacin CAST se puede utilizar para combinar tipos de datos fuente y de
destino. Los casos en los que slo se puede utilizar la especificacin XMLCAST se
anotan.

En una base de datos Unicode, si se produce un truncamiento al convertir una


serie de caracteres o grfica a otro tipo de datos, se devuelve una advertencia si se
trunca algn carcter que no sea un blanco. Este comportamiento de truncamiento
es distinto de la asignacin de series de caracteres o grficas a un destino cuando
se produce un error si se trunca algn carcter que no es un blanco.

Se da soporte a las siguientes conversiones en las que intervienen tipos


diferenciados (con la especificacin CAST, a menos que se indique lo contrario):
v Conversin de un tipo diferenciado DT a su tipo de datos fuente S
v Conversin del tipo de datos fuente S de un tipo diferenciado DT al tipo
diferenciado DT
v Conversin del tipo diferenciado DT al mismo tipo diferenciado DT
v Conversin de un tipo de datos A a un tipo diferenciado DT donde A se puede
promocionar al tipo de datos fuente S del tipo diferenciado DT
v Conversin de INTEGER a un tipo diferenciado DT con un tipo de datos fuente
SMALLINT
v Conversin de DOUBLE a un tipo diferenciado DT con un tipo de datos fuente
REAL
v Conversin de VARCHAR a un tipo diferenciado DT con un tipo de datos
fuente CHAR
v Conversin de VARGRAPHIC a un tipo diferenciado DT con un tipo de datos
fuente GRAPHIC
v Para una base de datos Unicode, conversin de VARCHAR o VARGRAPHIC a
un tipo diferenciado DT con un tipo de datos fuente CHAR o GRAPHIC
v Conversin de un tipo diferenciado DT con un tipo de datos fuente S a XML
utilizando la especificacin XMLCAST

110 Consulta de SQL - Volumen 1


Conversiones entre tipos de datos

v Conversin de un XML a un tipo diferenciado DT con un tipo de datos fuente


de cualquier tipo de datos incorporado, utilizando la especificacin XMLCAST,
en funcin del tipo de datos de esquema XML del valor XML

Los tipos de datos FOR BIT DATA no se pueden convertir a CLOB.

No es posible convertir un valor de tipo estructurado en algo diferente. Un tipo


estructurado ST no necesita convertirse a uno de sus supertipos, porque todos los
mtodos de los supertipos de ST son aplicables a ST. Si la operacin deseada slo
es aplicable a un subtipo de ST, utilice la expresin de tratamiento de subtipos
para tratar ST como uno de sus subtipos.

Cuando un tipo de datos definido por el usuario e implicado en una conversin no


est calificado por un nombre de esquema, se utiliza la va de acceso de SQL para
buscar el primer esquema que incluya el tipo de datos definido por el usuario con
este nombre.

Se da soporte a las siguientes conversiones donde intervienen tipos de referencia:


v conversin de un tipo de referencia RT en su tipo de datos de representacin S
v conversin del tipo de datos de representacin S de un tipo de referencia RT en
el tipo de referencia RT
v Conversin de un tipo de referencia RT con un tipo de destino T a un tipo de
referencia RS con un tipo de destino S donde S es un supertipo de T.
v Conversin de un tipo de datos A en un tipo de referencia RT donde A se puede
promocionar al tipo de datos de representacin S del tipo de referencia RT.

Cuando el tipo de destino de un tipo de datos de referencia implicado en una


conversin no est calificado por un nombre de esquema, se utiliza la va de acceso
de SQL para buscar el primer esquema que incluya el tipo de datos definido por el
usuario con este nombre.
Tabla 6. Conversiones soportadas entre tipos de datos internos
Tipo de datos de destino
L
O V
N A T
S G R L I
M I D V V G G O M
A N B E D A A R R N D E
L T I C O R R A A G B S
L E G I R U C C C C P P V C D T T B
I G I M E B H H H L H H A L A I A L X
N E N A A L A A A O I I R O T M M O M
Tipo de datos fuente T R T L L E R R R B C C G B E E P B L
SMALLINT S S S S S S S - - - - - - - - - - - S3
INTEGER S S S S S S S - - - - - - - - - - - S3
BIGINT S S S S S S S - - - - - - - - - - - S3
DECIMAL S S S S S S S - - - - - - - - - - - S3
REAL S S S S S S - - - - - - - - - - - - S3
DOUBLE S S S S S S S - - - - - - - - - - - S3
CHAR S S S S - - S S S S2 S1 S1 - - S S S S S4
VARCHAR S S S S - - S S S S2 S1 S1 - - S S S S S4

Captulo 2. Elementos del lenguaje 111


Conversiones entre tipos de datos

Tabla 6. Conversiones soportadas entre tipos de datos internos (continuacin)


Tipo de datos de destino
L
O V
N A T
S G R L I
M I D V V G G O M
A N B E D A A R R N D E
L T I C O R R A A G B S
L E G I R U C C C C P P V C D T T B
I G I M E B H H H L H H A L A I A L X
N E N A A L A A A O I I R O T M M O M
Tipo de datos fuente T R T L L E R R R B C C G B E E P B L
LONG VARCHAR - - - - - - S S S S2 - - S1 S1 - - - S S3
CLOB - - - - - - S S S S - - - S1 - - - S S4
GRAPHIC - - - - - - S1 S1 - - S S S S S1 S1 S1 S S3
VARGRAPHIC - - - - - - S1 S1 - - S S S S S1 S1 S1 S S3
LONG VARGRAPHIC - - - - - - - - S1 S1 S S S S - - - S S3
DBCLOB - - - - - - - - - S1 S S S S - - - S S3
DATE - S S S - - S S - - S1 S1 - - S - - - S3
TIME - S S S - - S S - - S1 S1 - - - S - - S3
TIMESTAMP - - S S - - S S - - S1 S1 - - S S S - S3
BLOB - - - - - - - - - - - - - - - - - S S4
XML S5 S5 S5 S5 S5 S5 S5 S5 S5 S5 S5 S5 S5 S5 S5 S5 S5 S5 S
Notas
v Vea la descripcin que precede a la tabla para conocer las conversiones soportadas donde intervienen tipos
definidos por el usuario y tipos de referencia.
v Slo un tipo DATALINK puede convertirse a un tipo DATALINK.
v No es posible convertir un valor de tipo estructurado en algo diferente.
1
Conversin slo soportada para bases de datos Unicode.
2
Los tipos de caracteres FOR BIT DATA no se pueden convertir a CLOB.
3
La conversin slo se puede efectuar utilizando XMLCAST.
4
Se procesa implcitamente una funcin XMLPARSE para convertir una serie a XML al asignarse (INSERT o
UPDATE) una seria a una columna XML. La serie tiene que ser un documento XML bien formado para que la
asignacin tenga xito.
5
La conversin slo se puede efectuar utilizando XMLCAST y depende del tipo de datos del esquema XML
subyacente del valor XML. Para obtener detalles, consulte XMLCAST.

Conversiones de valores que no son XML a valores XML


Tabla 7. Conversiones soportadas desde valores que no son XML a valores XML
Tipo de datos de destino
Tipo de datos fuente XML Tipo de esquema XML obtenido
SMALLINT S xs:short
INTEGER S xs:int
BIGINT S xs:long

112 Consulta de SQL - Volumen 1


Conversiones entre tipos de datos

Tabla 7. Conversiones soportadas desde valores que no son XML a valores


XML (continuacin)
Tipo de datos de destino
Tipo de datos fuente XML Tipo de esquema XML obtenido
DECIMAL o NUMERIC S xs:decimal
REAL S xs:float
DOUBLE S xs:double
CHAR S xs:string
VARCHAR S xs:string
LONG VARCHAR S xs:string
CLOB S xs:string
GRAPHIC S xs:string
VARGRAPHIC S xs:string
LONG VARGRAPHIC S xs:string
DBCLOB S xs:string
DATE S xs:date
TIME S xs:time
TIMESTAMP S xs:dateTime
BLOB S xs:base64Binary
Tipo de caracteres FOR BIT DATA S xs:base64Binary
tipo diferenciado utilice esta tabla con el tipo fuente del
tipo diferenciado

Cuando los valores de una serie de caracteres se convierten a valores XML, el valor
elemental xs:string obtenido no puede contener caracteres XML ilegales
(SQLSTATE 0N002). Si la serie de caracteres de entrada no est en Unicode, dichos
caracteres se convertirn a Unicode.

La conversin a tipos binarios de SQL da como resultado valores XQuery


elementales con el tipo xs:base64Binary.

Conversin de valores XML a valores que no son XML


Un XMLCAST desde un valor XML a un valor que no es XML se puede describir
como de dos conversiones: una conversin XQuery que convierte el valor XML
fuente a un tipo XQuery correspondiente al tipo de destino SQL, seguido de una
conversin desde el tipo XQuery correspondiente al tipo SQL real.

Se considera que XMLCAST est soportado si el tipo de destino tiene un tipo de


destino XQuery correspondiente soportado y si hay una conversin XQuery
soportada del tipo de valor fuente al tipo de destino XQuery correspondiente. El
tipo de destino utilizado en la conversin XQuery est basado en el tipo de destino
XQuery correspondiente y puede contener restricciones adicionales.

Captulo 2. Elementos del lenguaje 113


Conversiones entre tipos de datos

La tabla siguiente lista los tipos XQuery que se obtienen de dicha conversin.
Tabla 8. Conversiones soportadas de valores XML a valores que no son XML
Tipo de datos fuente
Tipo de destino XQuery
Tipo de datos de destino XML correspondiente
SMALLINT S xs:short
INTEGER S xs:int
BIGINT S xs:long
DECIMAL o NUMERIC S xs:decimal
REAL S xs:float
DOUBLE S xs:double
FLOAT S xs:double o xs:float
CHAR S xs:string
VARCHAR S xs:string
LONG VARCHAR N no convertible
CLOB S xs:string
GRAPHIC S xs:string
VARGRAPHIC S xs:string
LONG VARGRAPHIC N no convertible
DBCLOB S xs:string
DATE S xs:date
TIME (sin huso horario) S xs:time
TIMESTAMP (sin huso horario) S xs:dateTime
BLOB S xs:base64Binary
CHAR FOR BIT DATA N no convertible
VARCHAR FOR BIT DATA S xs:base64Binary
tipo diferenciado utilice esta tabla con el tipo fuente del
tipo diferenciado
referencia de fila estructurada / otros N no convertible
ADT

En los casos de restriccin siguientes, se utiliza un tipo de datos del esquema XML
derivado por restriccin, como tipo de datos de destino para la conversin XQuery.
v Los valores XML que se van a convertir en tipos de series deben caber dentro de
los lmites de longitud de dichos tipos de DB2 sin que los caracteres o bytes se
trunquen. El nombre utilizado para el tipo de esquema XML derivado es el
nombre del tipo SQL en maysculas seguido de un carcter subrayado y la
longitud mxima de la serie; por ejemplo, VARCHAR_20 si el tipo de datos de
destino XMLCAST es VARCHAR(20).
v Los valores XML que se van a convertir en valores DECIMAL deben caber
dentro de la precisin de los valores DECIMAL especificados y despus de la
coma de decimales no deben contener ms dgitos que no sean cero que la
escala. El nombre utilizado para el tipo de esquema XML derivado es
DECIMAL_precisin_escala, donde precisin es la precisin de los tipos de datos

114 Consulta de SQL - Volumen 1


Conversiones entre tipos de datos

SQL de destino y escala es la escala de los tipos de datos SQL de destino; por
ejemplo, DECIMAL_9_2 si el tipo de datos de destino XMLCAST es
DECIMAL(9,2).
v Los valores XML que se van a convertir a valores TIME no pueden contener un
componente de segundos con dgitos que no sean cero despus de la coma
decimal. El nombre utilizado para el tipo de esquema XML derivado es TIME.

El nombre del tipo de esquema XML derivado slo aparece en un mensaje si un


valor XML no cumple alguna de estas restricciones. Este nombre de tipo ayuda a
comprender el mensaje de error y no corresponde a ningn tipo de XQuery
definido. Si el valor de entrada no cumple el tipo de base del tipo de esquema
XML derivado (el tipo de destino XQuery correspondiente), el mensaje de error
puede indicar en su lugar este tipo. Dado que este formato de nombre de tipo de
esquema XML puede cambiar en el futuro, no debera utilizarse como interfaz de
programacin.

Antes de que la conversin XQuery procese un valor XML, se eliminarn todos los
nodos de documento de la secuencia y cada hijo directo de nodo del documento
eliminado se convertir en un elemento de la secuencia. Si el nodo del documento
tiene varios nodos hijo directos, la secuencia revisada tendr ms elementos que la
secuencia original. El valor XML sin ningn tipo de nodo de documento se
atomiza mediante la funcin XQuery fn:data y se utiliza el valor de secuencia
atomizada resultante en la conversin XQuery. Si la secuencia atomizada es una
secuencia vaca, la conversin devuelve un valor nulo sin ningn proceso posterior.
Si el valor de la secuencia atomizada contiene varios elementos, se devolver un
error (SQLSTATE 10507).

Si el tipo de destino de XMLCAST es el tipo de datos DATE, TIME o TIMESTAMP


de SQL, el valor XML obtenido de la conversin XQuery tambin se ajustar a
UTC y se eliminar el componente de huso horario del valor.

Cuando el valor del tipo de destino XQuery correspondiente se convierte al tipo de


destino SQL; los tipos de datos XML binarios como xs:base64Binary o xs:hexBinary,
se convierten del formato de carcter a datos binarios reales.

Si un valor xs:double o xs:float de INF, -INF o NaN se convierte (mediante


XMLCAST) a un valor DOUBLE o REAL de tipo de datos SQL, se devuelve un
error (SQLSTATE 22003). Un valor xs:double o xs:float de 0 se convierte a +0.

El tipo de destino puede ser un tipo diferenciado definido por el usuario, si el


operando de origen no es un tipo diferenciado definido por el usuario. En dicho
caso, el valor fuente se convierte en el tipo fuente del tipo diferenciado definido
por el usuario (es decir, el tipo de destino) mediante la especificacin XMLCAST y,
a continuacin, este valor se convierte en el tipo diferenciado definido por el
usuario mediante la especificacin CAST.

Conceptos relacionados:
v Atomization (DB2 XQuery) en IBM DB2 XQuery Reference

Informacin relacionada:
v Sentencia CREATE FUNCTION en Consulta de SQL, Volumen 2
v Asignaciones y comparaciones en la pgina 117
v Especificaciones CAST en la pgina 204
v CURRENT PATH en la pgina 160

Captulo 2. Elementos del lenguaje 115


Conversiones entre tipos de datos

v Promocin de tipos de datos en la pgina 108


v Especificaciones XMLCAST en la pgina 207
v Type casting (DB2 XQuery) en IBM DB2 XQuery Reference

116 Consulta de SQL - Volumen 1


Asignaciones y comparaciones

Asignaciones y comparaciones
Las operaciones bsicas de SQL son la asignacin y la comparacin. Las
operaciones de asignacin se realizan durante la ejecucin de sentencias de
variables de transicin INSERT, UPDATE, FETCH, SELECT INTO, VALUES INTO
y SET. Los argumentos de las funciones tambin se asignan cuando se invoca una
funcin. Las operaciones de comparacin se realizan durante la ejecucin de las
sentencias que incluyen predicados y otros elementos del lenguaje como, por
ejemplo, MAX, MIN, DISTINCT, GROUP BY y ORDER BY.

Una regla bsica para las dos operaciones es que el tipo de datos de los operandos
implicados debe ser compatible. La regla de compatibilidad tambin se aplica a las
operaciones de conjuntos.

Otra regla bsica para las operaciones de asignacin es que no pueda asignarse un
valor nulo a una columna que no pueda contener valores nulos, ni a una variable
del lenguaje principal que no tenga una variable indicadora asociada.

Slo se da soporte a las asignaciones y comparaciones que implican datos tanto de


caracteres como grficos cuando una de las series es un literal.

La matriz de compatibilidad a continuacin que muestra las compatibilidades de


tipos de datos para operaciones de asignacin y comparacin.
Tabla 9. Compatibilidad de tipos de datos para asignaciones y comparaciones
Indi-
cacin
de
Operan- Entero Nmero Coma Serie de Serie fecha Serie
dos binario decimal flotante caracteres grfica Fecha Hora y hora binaria UDT
2
Entero S S S No No No No No No
binario
2
Nmero S S S No No No No No No
decimal
2
Coma S S S No No No No No No
flotante
6,7 1 1 1 3 2
Serie de No No No S S No
caracteres
6,7 1 1 1 2
Serie No No No S S No
grfica
1 1 2
Fecha No No No S No No No
1 1 2
Hora No No No No S No No
1 1 2
Indicacin No No No No No S No
de fecha
y hora
3 2
Serie No No No No No No No No S
binaria
2 2 2 2 2 2 2 2 2
UDT S

Captulo 2. Elementos del lenguaje 117


Asignaciones y comparaciones

Tabla 9. Compatibilidad de tipos de datos para asignaciones y comparaciones (continuacin)


Indi-
cacin
de
Operan- Entero Nmero Coma Serie de Serie fecha Serie
dos binario decimal flotante caracteres grfica Fecha Hora y hora binaria UDT
1
La compatibilidad de los valores de indicacin de fecha y hora y de las series est limitada a la
asignacin y la comparacin:
v Los valores de fecha y hora se pueden asignar a las columnas de series y a las variables de series.
v Una representacin de serie vlida de una fecha se puede asignar a una columna de fecha o
comparar con una fecha.
v Una representacin de serie vlida de una hora se puede asignar a una columna de hora o comparar
con una hora.
v Una representacin de serie vlida de una indicacin de fecha y hora se puede asignar a una
columna de indicacin de fecha y hora o comparar con una indicacin de fecha y hora.
(El soporte a series grficas slo est disponible para bases de datos Unicode.)
2
Un valor de tipo diferenciado definido por el usuario slo se puede comparar con un valor definido
con el mismo tipo diferenciado definido por el usuario. En general, se da soporte a las asignaciones
entre un valor de tipo diferenciado y su tipo de datos fuente. Un tipo estructurado definido por el
usuario no es comparable y slo se puede asignar a un operando del mismo tipo estructurado o a uno
de sus subtipos. Para obtener ms informacin, vea Asignacin de tipos definidos por el usuario en la
pgina 123.
3
Observe que esto significa que las series de caracteres definidas con el atributo FOR BIT DATA
tampoco son compatibles con las series binarias.
4
Un operando DATALINK slo puede asignarse a otro operando DATALINK. El valor DATALINK slo
puede asignarse a una columna si la columna est definida con NO LINK CONTROL o el archivo existe
y todava no est bajo el control del enlace del archivo.
5
Para obtener informacin sobre la asignacin y comparacin de tipos de referencia, consulte
Asignacin de tipos de referencia en la pgina 123 y Comparaciones de tipos de referencia en la
pgina 128.
6
Slo soportado para bases de datos Unicode.
7
Las series de datos de bits y grficas no son compatibles.

Asignaciones numricas
La regla bsica para las asignaciones numricas es que la parte entera de un
nmero decimal o entero no se trunca nunca. Si la escala del nmero de destino es
menor que la escala del nmero asignado, se trunca el exceso de dgitos de la
fraccin de un nmero decimal.

De decimal o entero a coma flotante: Los nmeros de coma flotante son


aproximaciones de nmeros reales. Por lo tanto, cuando se asigna un nmero
decimal o entero a una columna variable o de coma flotante, es posible que el
resultado no sea idntico al nmero original.

De coma flotante o decimal a entero: Cuando un nmero de coma flotante o


decimal se asigna a una columna o variable de enteros, se pierde la parte
correspondiente a la fraccin del nmero.

De decimal a decimal: Cuando se asigna un nmero decimal a una columna o


variable decimal, el nmero se convierte, si es necesario, a la precisin y escala del
destino. Se aade o elimina el nmero necesario de ceros iniciales y, en la fraccin
del nmero, se aaden los ceros de cola necesarios o se eliminan los dgitos de cola
necesarios.

118 Consulta de SQL - Volumen 1


De entero a decimal

De entero a decimal: Cuando se asigna un entero a una columna o variable


decimal, primero el nmero se convierte a un nmero decimal temporal y,
despus, si es necesario, a la precisin y escala del destino. La precisin y escala
del nmero decimal temporal es de 5,0 para un entero pequeo, 11,0 para un
entero grande o 19,0 para un entero superior.

De coma flotante a decimal: Cuando se convierte un nmero de coma flotante a


decimal, primero el nmero se convierte a un nmero decimal temporal de
precisin 31 y despus, si es necesario, se trunca a la precisin y escala del destino.
En esta conversin, el nmero se redondea (utilizando la aritmtica de coma
flotante) a una precisin de 31 dgitos decimales. Como resultado, los nmeros
menores que 0,5*10-31 se reducen a 0. Se da a la escala el valor ms grande posible
que permita representar la parte entera del nmero sin prdida de significacin.

Asignaciones de series
Existen dos tipos de asignaciones:
v En la asignacin de almacenaje, se asigna un valor y no es conveniente el
truncamiento de datos significativos; por ejemplo, cuando se asigna un valor a
una columna
v En la asignacin de recuperacin, se asigna un valor y se permite truncamiento;
por ejemplo, cuando se recuperan datos de la base de datos

Las reglas para la asignacin de series difieren segn el tipo de asignacin.

Asignacin de almacenamiento: La regla bsica es que la longitud de la serie


asignada al destino no debe ser mayor que el atributo de longitud del destino. Si la
longitud de la serie es mayor que el atributo de longitud del destino, se pueden
producir las siguientes situaciones:
v La serie se asigna con los blancos de cola truncados (de todos los tipos de serie
excepto de las series largas) para ajustarse al atributo de longitud del destino
v Se devuelve un error (SQLSTATE 22001) cuando:
Se truncaran caracteres que no son blancos de una serie que no es larga
Se truncara cualquier carcter (o byte) de una serie larga

Si se asigna una serie a un destino de longitud fija y la longitud de la serie es


menor que el atributo de longitud del destino, la serie se rellena por la derecha con
el nmero necesario de blancos de un solo byte, de doble byte o UCS-2. El carcter
de relleno siempre es el blanco, incluso para las columnas definidas con el atributo
FOR BIT DATA. (UCS-2 define varios caracteres SPACE con distintas propiedades.
Para una base de datos Unicode, el gestor de bases de datos siempre utilizar
ASCII SPACE en la posicin x0020 como blanco UCS-2. Para una base de datos
EUC, se utiliza IDEOGRAPHIC SPACE en la posicin x3000 para rellenar las
series GRAPHIC.)

Asignacin de recuperacin: La longitud de una serie asignada a un destino


puede ser mayor que el atributo de longitud del destino. Cuando una serie se
asigna a un destino y la longitud de la serie es mayor que el atributo de longitud
del destino, la serie se trunca por la derecha el nmero necesario de caracteres (o
bytes). Cuando ocurre esto, se devuelve un aviso (SQLSTATE 01004) y se asigna el
valor W al campo SQLWARN1 de la SQLCA.

Adems, si se proporciona una variable indicadora y la fuente del valor no es LOB,


la variable indicadora se establece en la longitud original de la serie.

Captulo 2. Elementos del lenguaje 119


Asignacin de recuperacin

Si se asigna una serie de caracteres a un destino de longitud fija y la longitud de la


serie es menor que el atributo de longitud del destino, la serie se rellena por la
derecha con el nmero necesario de blancos de un solo byte, de doble byte o
UCS-2. El carcter de relleno siempre es un blanco, incluso para las series definidas
con el atributo FOR BIT DATA. (UCS-2 define varios caracteres SPACE con
distintas propiedades. Para una base de datos Unicode, el gestor de bases de datos
siempre utilizar ASCII SPACE en la posicin x0020 como blanco UCS-2. Para una
base de datos EUC, se utiliza IDEOGRAPHIC SPACE en la posicin x3000 para
rellenar las series GRAPHIC.)

La asignacin de recuperacin de las variables del lenguaje principal terminadas en


nulo en C se maneja en base a las opciones especificadas con los mandatos PREP o
BIND.

Reglas de conversin para la asignacin de series: Una serie de caracteres o una


serie grfica asignada a una columna o a una variable del lenguaje principal se
convierte primero, si es necesario, a la pgina de cdigos del destino. La
conversin de los caracteres slo es necesaria si son ciertas todas las afirmaciones
siguientes:
v Las pginas de cdigos son diferentes.
v La serie no es nula ni est vaca.
v Ninguna serie tiene un valor de pgina de cdigos de 0 (FOR BIT DATA).

Para las bases de datos Unicode, las series de caracteres pueden asignarse a una
columna grfica y las series grficas pueden asignarse a una columna de
caracteres.

Consideraciones de MBCS para la asignacin de las series de caracteres: Existen


varias consideraciones al asignar series de caracteres que pueden contener
caracteres de un solo byte y de mltiples bytes. Estas consideraciones se aplican a
todas las series de caracteres, incluyendo las definidas como FOR BIT DATA.
v El relleno con blancos siempre se realiza utilizando el carcter blanco de un solo
byte (X'20').
v El truncamiento de blancos siempre se realiza en base al carcter blanco de un
solo byte (X'20'). El carcter blanco de doble byte se trata como cualquier otro
carcter con respecto al truncamiento.
v La asignacin de una serie de caracteres a una variable del lenguaje principal
puede dar como resultado la fragmentacin de caracteres MBCS si la variable
del lenguaje principal de destino no es lo suficientemente grande para contener
toda la serie fuente. Si se fragmenta un carcter MBCS, cada byte del fragmento
del carcter MBCS destino se establece en el destino en un carcter blanco de un
solo byte (X'20'), no se mueven ms bytes de la fuente y SQLWARN1 se
establece en W para indicar el truncamiento. Observe que se aplica el mismo
manejo de fragmentos de caracteres MBCS incluso cuando la serie de caracteres
est definida como FOR BIT DATA.

Consideraciones de DBCS para la asignacin de las series grficas: Las


asignaciones de series grficas se procesan de manera anloga a la de las series de
caracteres. Para las bases de datos que no son Unicode, los tipos de datos de serie
grfica slo son compatibles con otros tipos de datos de serie grfica y nunca con
tipos de datos numricos, de serie de caracteres o de indicacin de fecha y hora.
Para las bases de Unicode, los tipos de datos de serie grfica son compatibles con
tipos de datos de serie de caracteres. No obstante, los tipos de datos de serie de
caracteres o de serie grfica no se pueden intercambiar en la sentencia SELECT
INTO o en VALUES INTO.

120 Consulta de SQL - Volumen 1


Consideraciones de DBCS para la asignacin de las series grficas

Si se asigna un valor de serie grfica a una columna de serie grfica, la longitud


del valor no debe ser mayor que la longitud de la columna.

Si un valor de serie grfica (la serie fuente) se asigna a un tipo de datos de serie
grfica de longitud fija (el destino, que puede ser una columna o una variable del
lenguaje principal), y la longitud de la serie fuente es menor que el destino, ste
contendr una copia de la serie fuente que se habr rellenado por la derecha con el
nmero necesario de caracteres blancos de doble byte para crear un valor cuya
longitud sea igual a la del destino.

Si se asigna un valor de serie grfica a una variable del lenguaje principal de serie
grfica y la longitud de la serie fuente es mayor que la longitud de la variable del
lenguaje principal, sta contendr una copia de la serie fuente que se habr
truncado por la derecha el nmero necesario de caracteres de doble byte para crear
un valor cuya longitud sea igual al de la variable del lenguaje principal. (Tenga en
cuenta que para este caso, es necesario que el truncamiento no implique la
biseccin de un carcter de doble byte; si hubiera que realizar una biseccin, el
valor fuente o la variable del lenguaje principal de destino tendran un tipo de
datos de serie grfica mal definido.) El distintivo de aviso SQLWARN1 de SQLCA
se establecer en W. La variable indicadora, si se especifica, contendr la longitud
original (en caracteres de doble byte) de la serie fuente. Sin embargo, en el caso de
DBCLOB, la variable indicadora no contiene la longitud original.

La asignacin de recuperacin de las variables del lenguaje principal terminadas en


nulo en C (declaradas utilizando wchar_t) se maneja sobre la base de las opciones
especificadas con los mandatos PREP o BIND.

Asignaciones de fecha y hora


La regla bsica para las asignaciones de fecha y hora es que un valor DATE, TIME
o TIMESTAMP slo puede asignarse a una columna con un tipo de datos
coincidente (ya sea DATE, TIME o TIMESTAMP), a una variable de serie de
longitud variable o fija o a una columna de serie. La asignacin no debe ser a una
columna o variable LONG VARCHAR, CLOB, LONG VARGRAPHIC, DBCLOB ni
BLOB.

Cuando un valor de fecha y hora se asigna a una variable de serie o a una


columna de serie, la conversin a una representacin de serie es automtica. Los
ceros iniciales no se omiten de ninguna parte de la fecha, de la hora ni de la
indicacin de fecha y hora. La longitud necesaria del destino variar, segn el
formato de la representacin de serie. Si la longitud del destino es mayor que la
necesaria y el destino es una serie de longitud fija, se rellena por la derecha con
blancos. Si la longitud del destino es menor que la necesaria, el resultado depende
del tipo del valor de indicacin de fecha y hora implicado y del tipo de destino.

Cuando el destino es una variable del lenguaje principal, se aplican las reglas
siguientes:
v Para DATE: Si la longitud de la variable es menor que 10 caracteres, se produce
un error.
v Para TIME: Si se utiliza el formato USA, la longitud de la variable no debe ser
menor que 8 caracteres; en otros formatos la longitud no debe ser menor que 5
caracteres.
Si se utilizan los formatos ISO o JIS, y la longitud de la variable del lenguaje
principal es menor que 8 caracteres, la parte correspondiente a los segundos de

Captulo 2. Elementos del lenguaje 121


Asignaciones de fecha y hora

la hora se omite del resultado y se asigna a la variable indicadora, si se


proporciona. El campo SQLWARN1 de la SQLCA se establece de manera que
indica la omisin.
v Para TIMESTAMP: Si la variable del lenguaje principal es menor que 19
caracteres, se produce un error. Si la longitud es menor que 26 caracteres pero
mayor o igual que 19 caracteres, los dgitos de cola de la parte correspondiente a
los microsegundos del valor se omiten. El campo SQLWARN1 de la SQLCA se
establece de manera que indica la omisin.

Asignaciones de XML
La norma general que rige las asignaciones de XML es que slo se puede asignar
un valor XML a las columnas o a las variables XML. A continuacin, indicamos las
excepciones a la norma.
v Proceso de las variables del sistema principal XML de entrada: Caso especial de
la norma de asignacin de XML, ya que la variable del sistema principal est
basada en el valor de una serie. Para realizar la asignacin de XML dentro de
SQL, el valor de la serie se analiza implcitamente en un valor XML utilizando el
valor del registro especial CURRENT IMPLICIT XMLPARSE OPTION. Esto
permite determinar si se conservarn o se eliminarn los espacios en blanco, a
menos que la variable del lenguaje principal sea un argumento de la funcin
XMLVALIDATE, que siempre elimina los espacios en blanco innecesarios.
v Asignacin de series a marcadores de parmetros de entrada del tipo de datos
XML: Si un marcador de parmetros de entrada tiene un tipo de datos XML
implcito o explcito, el valor vinculado (asignado) al marcador de parmetros
podra ser una variable de serie de caracteres, una variable de serie de grficos o
una variable de serie binaria. En dicho caso, el valor de serie se analiza
implcitamente en un valor XML utilizando el valor del registro especial
CURRENT IMPLICIT XMLPARSE OPTION para determinar si se conservarn o
se eliminarn los espacios en blanco, a menos que el marcador de parmetros
sea un argumento de la funcin XMLVALIDATE, que siempre elimina los
espacios en blanco innecesarios.
v Asignacin directa de series a columnas XML en sentencias de cambio de datos:
Si se realizan asignaciones directas a una columna del tipo XML en una
sentencia de cambio de formato, la expresin asignada podr ser tambin una
serie de caracteres o una serie binaria. En dicho caso, el resultado de XMLPARSE
(DOCUMENT expresin STRIP WHITESPACE) se asignar a la columna de destino.
Los tipos de datos de serie soportados se definen mediante los argumentos
soportados para la funcin XMLPARSE. Tenga en cuenta que esta excepcin de
la asignacin de XML no permite asignar valores de serie de caracteres o
binarios a variables SQL o a parmetros de SQL del tipo de datos XML.
v Asignacin de XML de recuperacin a series: Si se estn recuperando valores
XML en variables del lenguaje principal utilizando una sentencia FETCH INTO
o una sentencia EXECUTE INTO en SQL incorporado, los tipos de datos de la
variable del lenguaje principal pueden ser CLOB, DBCLOB o BLOB. Si se
utilizan otras interfaces de programacin de aplicaciones (como CLI, JDBC o
.NET), los valores XML se podrn recuperar en tipos de series binarias, grficas
o de caracteres soportados por la interfaz de programacin de aplicaciones. En
todos estos casos, el valor XML se serializa implcitamente en una serie
codificada en UTF-8 y, en el caso de las variables de series de caracteres o
grficas, se convierte en la pgina de cdigos del cliente.

Los valores de las series binarias o de caracteres no se pueden recuperar en


variables del lenguaje principal XML. Los valores de las variable del lenguaje
principal XML no se pueden asignar a columnas, variables SQL o parmetros de
SQL de un tipo de datos de serie de caracteres o un tipo de datos de serie binaria.

122 Consulta de SQL - Volumen 1


Asignaciones de tipos definidos por el usuario

Asignacin de tipos definidos por el usuario


Con los tipos definidos por el usuario, se aplican diferentes reglas para las
asignaciones a variables del lenguaje principal que se utilizan para todas las
asignaciones.

Tipos diferenciados: La asignacin a variables del lenguaje principal se realiza


basndose en el tipo fuente del tipo diferenciado. Es decir, sigue la regla:
v Un valor de un tipo diferenciado en el lado derecho de una asignacin se puede
asignar a una variable del lenguaje principal en el lado izquierdo slo si el tipo
fuente del tipo diferenciado se puede asignar a la variable del lenguaje principal.

Si el destino de la asignacin es una columna basada en un tipo diferenciado, el


tipo de datos fuente debe ser convertible al tipo de datos de destino.

Tipos estructurados: La asignacin realizada con variables del lenguaje principal


est basada en el tipo declarado de la variable del lenguaje principal; es decir,
sigue la regla siguiente:
Un valor de un tipo estructurado situado en el lado derecho de una asignacin
se puede asignar a una variable del lenguaje principal, situada en el lado
izquierdo, slo si el tipo declarado de la variable es el tipo estructurado o un
supertipo del tipo estructurado.

Si el destino de la asignacin es una columna de un tipo estructurado, el tipo de


datos fuente debe ser el tipo de datos destino o un subtipo de l.

Asignacin de tipos de referencia


Un tipo de referencia cuyo tipo destino sea T se puede asignar a una columna de
tipo de referencia que tambin es un tipo de referencia cuyo tipo destino sea S,
donde S es un supertipo de T. Si se realiza una asignacin a una columna o
variable de referencia con mbito, no tiene lugar ninguna comprobacin para
asegurarse de que el valor real que se asigna exista en la tabla o vista de destino
definidos por el mbito.

La asignacin a variables del lenguaje principal tiene lugar sobre la base del tipo
de representacin del tipo de referencia. Es decir, sigue la regla:
v Un valor de un tipo de referencia del lado derecho de una asignacin puede
asignarse a una variable del lenguaje principal del lado izquierdo si y slo si el
tipo de representacin de este tipo de referencia puede asignarse a esta variable
del lenguaje principal.

Si el destino de la asignacin es una columna y el lado derecho de la asignacin es


una variable del lenguaje principal, la variable del lenguaje principal debe
convertirse explcitamente al tipo de referencia de la columna de destino.

Comparaciones numricas
Los nmeros se comparan algebraicamente; es decir, tomando en consideracin el
signo. Por ejemplo, 2 es menor que +1.

Si un nmero es un entero y el otro es un decimal, la comparacin se realiza con


una copia temporal del entero, que se ha convertido a decimal.

Cuando se comparan nmeros decimales con escalas diferentes, la comparacin se


realiza con una copia temporal de uno de los nmeros que se ha extendido con
ceros de cola para que su parte correspondiente a la fraccin tenga el mismo
nmero de dgitos que el otro nmero.

Captulo 2. Elementos del lenguaje 123


Comparaciones numricas

Si un nmero es de coma flotante y el otro es un entero o un decimal, la


comparacin se efecta con una copia temporal del otro nmero, que se ha
convertido a coma flotante de doble precisin.

Dos nmeros de coma flotante slo son iguales si las configuraciones de bits de
sus formatos normalizados son idnticos.

Comparaciones de series
Las series de caracteres se comparan de acuerdo con el orden de clasificacin
especificado cuando se ha creado la base de datos, excepto aquellos con un
atributo FOR BIT DATA, que siempre se comparan de acuerdo con sus valores de
bits.

Cuando se comparan series de caracteres de longitud desigual, la comparacin se


efecta utilizando una copia lgica de la serie ms corta, rellenada por el lado
derecho con espacios en blanco para alargar dicha serie y alcanzar de esta manera
la serie ms larga. Esta extensin lgica se realiza para todas las series de
caracteres, incluidas las que tienen el distintivo FOR BIT DATA.

Las series de caracteres (excepto las series de caracteres con el distintivo FOR BIT
DATA) se comparan de acuerdo con el orden de clasificacin especificado al crear
la base de datos. Por ejemplo, el orden de clasificacin por omisin proporcionado
por el gestor de bases de datos puede dar el mismo peso a la versin en
minsculas y en maysculas del mismo carcter. El gestor de bases de datos
realiza una comparacin en dos pasos para asegurarse de que slo se consideran
iguales las series idnticas. En el primer paso, las series se comparan de acuerdo
con el orden de clasificacin de la base de datos. Si los pesos de los caracteres de
las series son iguales, se realiza un segundo paso de desempate para comparar
las series en base a sus valores de elemento de cdigo real.

Dos series son iguales si los dos estn vacas o si todos los bytes correspondientes
son iguales. Si cualquier operando es nulo, el resultado es desconocido.

No se da soporte a las series largas ni a las series LOB las operaciones de


comparacin que utilizan operadores de comparacin bsicos (=, <>, <, >, <= y
>=). Estn soportadas en comparaciones que utilizan el predicado LIKE y la
funcin POSSTR.

Los fragmentos de series largas y series LOB de un mximo de 4.000 bytes se


pueden comparar utilizando las funciones escalares SUBSTR y VARCHAR. Por
ejemplo, si se tienen las columnas:
MI_SHORT_CLOB CLOB(300)
MY_LONG_VAR LONG VARCHAR

entonces lo siguiente ser vlido:


WHERE VARCHAR(MY_SHORT_CLOB) > VARCHAR(SUBSTR(MY_LONG_VAR,1,300))

Ejemplos:

Para estos ejemplos, A, , a y , tienen los valores de elemento de cdigo


X41, XC1, X61 y XE1 respectivamente.

Considere un orden de clasificacin en el que los caracteres A, , a, tengan


los pesos 136, 139, 135 y 138. Entonces, los caracteres se clasifican en el orden de
sus pesos de la forma siguiente:
a < A < <

124 Consulta de SQL - Volumen 1


Comparaciones de series

Ahora considere cuatro caracteres DBCS D1, D2, D3 y D4 con los elementos de
cdigo 0xC141, 0xC161, 0xE141 y 0xE161, respectivamente. Si estos caracteres
DBCS estn en columnas CHAR, se clasifican como una secuencia de bytes segn
los pesos de clasificacin de estos bytes. Los primeros bytes tienen pesos de 138 y
139, por consiguiente D3 y D4 vienen antes que D2 y D1; los segundos bytes
tienen pesos de 135 y 136. Por consiguiente, el orden es el siguiente:
D4 < D3 < D2 < D1

Sin embargo, si los valores que se comparan tienen el atributo FOR BIT DATA o si
estos caracteres DBCS se guardaron en una columna GRAPHIC, los pesos de
clasificacin no se tienen en cuenta y los caracteres se comparan de acuerdo con
los elementos de cdigo del modo siguiente:
A < a < <

Los caracteres DBCS se clasifican como secuencia de bytes, en el orden de los


elementos de cdigo del modo siguiente:
D1 < D2 < D3 < D4

Ahora considere un orden de clasificacin en el que los caracteres A, , a,


tengan los pesos (no exclusivos) 74, 75, 74 y 75. Si consideramos nicamente los
pesos de clasificacin (primer pase), a es igual a A y es igual a . Los
elementos de cdigo de los caracteres de utilizan para romper el empate (segundo
pase) del modo siguiente:
A < a < <

Los caracteres DBCS de las columnas CHAR se clasifican como una secuencia de
bytes, de acuerdo con sus pesos (primer pase) y luego de acuerdo con los
elementos de cdigo para romper el empate (segundo pase). Los primeros bytes
tienen pesos iguales, por lo tanto los elementos de cdigo (0xC1 y 0xE1) rompen el
empate. Por consiguiente, los caracteres D1 y D2 se clasifican antes que los
caracteres D3 y D4. A continuacin, se comparan los segundos bytes de una forma
similar y el resultado es el siguiente:
D1 < D2 < D3 < D4

Una vez ms, si los datos de las columnas CHAR tienen el atributo FOR BIT
DATA o si los caracteres DBCS se guardan en una columna GRAPHIC, los pesos
de clasificacin no se tienen en cuenta y se comparan los caracteres de acuerdo con
los elementos de cdigo:
D1 < D2 < D3 < D4

Para este ejemplo en concreto, el resultado parece ser el mismo que cuando se
utilizaron los pesos de clasificacin, pero obviamente, ste no siempre es el caso.

Reglas de conversin para la comparacin: Cuando se comparan dos series,


primero una de ellas se convierte, si es necesario, al esquema de codificacin y a la
pgina de cdigos de la otra serie.

Clasificacin de los resultados: Los resultados que necesitan clasificarse se


ordenan en base a las reglas de comparacin de series que se tratan en
Comparaciones de series en la pgina 124. La comparacin se efecta en el
servidor de bases de datos. Al devolver los resultados a la aplicacin cliente, se
puede llevar a cabo una conversin de la pgina de cdigos. Esta conversin de la
pagina de cdigos subsiguiente no afecta al orden del conjunto resultante
determinado por el servidor.

Captulo 2. Elementos del lenguaje 125


Consideraciones de MBCS para la comparacin de series

Consideraciones de MBCS para la comparacin de series: Las series de


caracteres SBCS/MBCS mixtas se comparan de acuerdo con el orden de
clasificacin especificado cuando se ha creado la base de datos. Para las bases de
datos creadas con el orden de clasificacin (SYSTEM) por omisin, todos los
caracteres ASCII de un solo byte se clasifican segn el orden correcto, pero los
caracteres de doble byte no se encuentran necesariamente por orden de elemento
de cdigo. Para las bases de datos creadas con el orden IDENTITY, todos los
caracteres de doble byte se clasifican correctamente por orden de elemento de
cdigo, pero los caracteres ASCII de un solo byte tambin se clasifican por orden
de elemento de cdigo. Para las bases de datos creadas con el orden
COMPATIBILITY, se utiliza un orden de acomodacin que clasifica correctamente
la mayora de los caracteres de doble byte y resulta casi correcto para ASCII. sta
era la tabla de clasificacin por omisin en DB2 Versin 2.

Las series de caracteres mixtas se comparan byte a byte. Esto puede provocar
resultados anmalos para los caracteres de mltiples bytes que aparezcan en series
mixtas, porque cada byte se toma en cuenta independientemente.

Ejemplo:

Para este ejemplo, los caracteres de doble byte A, B, a y b tienen los valores
de elemento de cdigo X'8260', X'8261', X'8281' y X'8282', respectivamente.

Considere un orden de clasificacin en el que los elementos de cdigo X'8260',


X'8261', X'8281' y X'8282' tengan los pesos 96, 65, 193 y 194. Entonces:
B < A < a < b

y
AB < AA < Aa < Ab < aB < aA < aa < ab

Las comparaciones de series grficas se procesan de manera anloga a la de las


series de caracteres.

Las comparaciones de series grficas son vlidas entre todos los tipos de datos de
series grficas excepto LONG VARGRAPHIC. Los tipos de datos LONG
VARGRAPHIC y DBCLOB no estn permitidos en una operacin de comparacin.

Para series grficas, el orden de clasificacin de la base de datos no se utiliza. En


su lugar, las series grficas se comparan siempre en base a los valores numricos
(binarios) de sus bytes correspondientes.

Utilizando el ejemplo anterior, si los literales fuesen series grficas, entonces:


A < B < a < b

y
AA < AB < Aa < Ab < aA < aB < aa < ab

Cuando se comparan series grficas de longitudes distintas, la comparacin se


realiza utilizando una copia lgica de la serie ms corta que se ha rellenado por la
derecha con suficientes caracteres blancos de doble byte para extender su longitud
a la de la serie ms larga.

126 Consulta de SQL - Volumen 1


Consideraciones de MBCS para la comparacin de series

Dos valores grficos son iguales si los dos estn vacos o si todos los grficos
correspondientes son iguales. Si cualquier operando es nulo, el resultado es
desconocido. Si dos valores no son iguales, su relacin se determina por una
simple comparacin de series binarias.

Tal como se indica en esta seccin, la comparacin de series byte a byte puede
producir resultados inslitos; es decir, un resultado que difiere de lo que se espera
en una comparacin carcter a carcter. Los ejemplos que se muestran suponen
que se utiliza la misma pgina de cdigos MBCS, sin embargo, la situacin puede
complicarse ms cuando se utilizan distintas pginas de cdigos de mltiples bytes
con el mismo idioma nacional. Por ejemplo, considere el caso de la comparacin de
una serie de una pgina de cdigos DBCS japonesa y una pgina de cdigos EUC
japonesa.

Comparaciones de fecha y hora


Un valor DATE, TIME o TIMESTAMP puede compararse con otro valor del mismo
tipo de datos o con una representacin de serie de dicho tipo de datos. Todas las
comparaciones son cronolgicas, lo que significa que cuanto ms alejado en el
tiempo est del 1 de enero de 0001, mayor es el valor de dicho punto en el tiempo.

Las comparaciones que implican valores TIME y representaciones de serie de


valores de hora siempre incluyen los segundos. Si la representacin de serie omite
los segundos, se implica que son cero segundos.

Las comparaciones que implican valores TIMESTAMP son cronolgicas sin tener en
cuenta las representaciones que puedan considerarse equivalentes.

Ejemplo:
TIMESTAMP(1990-02-23-00.00.00) > 1990-02-22-24.00.00

Comparaciones de tipos definidos por el usuario


Los valores con un tipo diferenciado definido por el usuario slo se pueden
comparar con valores que sean exactamente del mismo tipo diferenciado definido
por el usuario. El tipo diferenciado definido por el usuario debe haberse definido
utilizando la clusula WITH COMPARISONS.

Ejemplo:

Considere por ejemplo el siguiente tipo diferenciado YOUTH y la tabla


CAMP_DB2_ROSTER:
CREATE DISTINCT TYPE YOUTH AS INTEGER WITH COMPARISONS

CREATE TABLE CAMP_DB2_ROSTER


( NAME VARCHAR(20),
ATTENDEE_NUMBER INTEGER NOT NULL,
AGE YOUTH,
HIGH_SCHOOL_LEVEL YOUTH)

La comparacin siguiente es vlida:


SELECT * FROM CAMP_DB2_ROSTER
WHERE AGE > HIGH_SCHOOL_LEVEL

La comparacin siguiente no es vlida:


SELECT * FROM CAMP_DB2_ROSTER
WHERE AGE > ATTENDEE_NUMBER

Captulo 2. Elementos del lenguaje 127


Comparaciones de tipos definidos por el usuario

Sin embargo, AGE se puede comparar con ATTENDEE_NUMBER utilizando una


funcin o una especificacin CAST para convertir entre el tipo diferenciado y el
tipo fuente. Todas las comparaciones siguientes son vlidas:
SELECT * FROM CAMP_DB2_ROSTER
WHERE INTEGER(AGE) > ATTENDEE_NUMBER

SELECT * FROM CAMP_DB2_ROSTER


WHERE CAST( AGE AS INTEGER) > ATTENDEE_NUMBER

SELECT * FROM CAMP_DB2_ROSTER


WHERE AGE > YOUTH(ATTENDEE_NUMBER)

SELECT * FROM CAMP_DB2_ROSTER


WHERE AGE > CAST(ATTENDEE_NUMBER AS YOUTH)

Los valores con un tipo estructurado definido por el usuario no se pueden


comparar con ningn otro valor (se pueden utilizar los predicados NULL y TYPE).

Comparaciones de tipos de referencia


Los valores de un tipo de referencia slo pueden compararse si sus tipos de
destino tienen un supertipo comn. Slo se encontrar la funcin de comparacin
adecuada si el nombre de esquema del supertipo comn es la va de acceso a SQL.
Se realiza la comparacin si se utiliza el tipo de representacin de los tipos de
referencia. El mbito de la referencia no se tiene en cuenta en la comparacin.

Informacin relacionada:
v Conversiones entre tipos de datos en la pgina 110
v Valores de fecha y hora en la pgina 99
v Identificadores en la pgina 65
v Predicado LIKE en la pgina 236
v POSSTR en la pgina 398
v Reglas para los tipos de datos del resultado en la pgina 129
v Reglas para la conversin de series en la pgina 133

128 Consulta de SQL - Volumen 1


Reglas para tipos de datos de resultados

Reglas para los tipos de datos del resultado


Los tipos de datos de un resultado los determinan las reglas que se aplican a los
operandos de una operacin. Esta seccin explica dichas reglas.

Estas reglas se aplican a:


v Las columnas correspondientes en selecciones completas de operaciones de
conjuntos (UNION, INTERSECT y EXCEPT)
v Expresiones resultantes de una expresin CASE
v Los argumentos de la funcin escalar COALESCE (o VALUE)
v Los valores de expresiones de la lista de entrada de un predicado IN
v Las expresiones correspondientes de una clusula VALUES de mltiples filas.

Estas reglas se aplican, sujetas a otras restricciones, sobre series largas para las
distintas operaciones.

A continuacin encontrar las reglas que se refieren a los distintos tipos de datos.
En algunos casos, se utiliza una tabla para mostrar los posibles tipos de datos
resultantes.

Estas tablas identifican el tipo de datos resultante, incluida la longitud aplicable o


precisin y la escala. El tipo resultante se determina teniendo en cuenta los
operandos. Si hay ms de un par de operandos, empiece considerando el primer
par. Esto da un tipo resultante que es el que se examina con el siguiente operando
para determinar el siguiente tipo resultante, etctera. El ltimo tipo resultante
intermedio y el ltimo operando determinan el tipo resultante para la operacin. El
proceso de operaciones se realiza de izquierda a derecha, por lo tanto los tipos del
resultado intermedios son importantes cuando se repiten operaciones. Por ejemplo,
examinemos una situacin que implique:
CHAR(2) UNION CHAR(4) UNION VARCHAR(3)

El primer par da como resultado un tipo CHAR(4). Los valores del resultado
siempre tienen 4 bytes. El tipo resultante final es VARCHAR(4). Los valores del
resultado de la primera operacin UNION siempre tendrn una longitud de 4.

Series de caracteres
Las series de caracteres son compatibles con otras series de caracteres. Las series de
caracteres incluyen los tipos CHAR, VARCHAR, LONG VARCHAR y CLOB.

Si un operando es... Y el otro operando es... El tipo de datos del resultado es...
CHAR(x) CHAR(y) CHAR(z) donde z = max(x,y)
CHAR(x) VARCHAR(y) VARCHAR(z) donde z = max(x,y)
VARCHAR(x) CHAR(y) o VARCHAR(z) donde z = max(x,y)
VARCHAR(y)
LONG VARCHAR CHAR(y), VARCHAR(y) LONG VARCHAR
o LONG VARCHAR
CLOB(x) CHAR(y), VARCHAR(y) CLOB(z) donde z = max(x,y)
o CLOB(y)
CLOB(x) LONG VARCHAR CLOB(z) donde z = max(x,32700)

La pgina de cdigos de la serie de caracteres del resultado se derivar en base a


las reglas de conversin de series.

Captulo 2. Elementos del lenguaje 129


Reglas para tipos de datos de resultados

Series grficas
Las series grficas son compatibles con otras series grficas. Las series grficas
incluyen los tipos de datos GRAPHIC, VARGRAPHIC, LONG VARGRAPHIC y
DBCLOB.

Si un operando es... Y el otro operando es... El tipo de datos del resultado es...
GRAPHIC(x) GRAPHIC(y) GRAPHIC(z) donde z = max(x,y)
VARGRAPHIC(x) GRAPHIC(y) o VARGRAPHIC(z) donde z = max(x,y)
VARGRAPHIC(y)
LONG VARGRAPHIC GRAPHIC(y), LONG VARGRAPHIC
VARGRAPHIC(y) o
LONG VARGRAPHIC
DBCLOB(x) GRAPHIC(y), DBCLOB(z) donde z = max (x,y)
VARGRAPHIC(y) o
DBCLOB(y)
DBCLOB(x) LONG VARGRAPHIC DBCLOB(z) donde z = max (x,16350)

La pgina de cdigos de la serie grfica del resultado se derivar en base a las


reglas de conversin de series.

Series de caracteres y grficas en una base de datos Unicode


En una base de datos Unicode, las series de caracteres y las series grficas son
compatibles.

Si un operando es... Y el otro operando es... El tipo de datos del resultado es...
GRAPHIC(x) CHAR(y) o GRAPHIC(y) GRAPHIC(z) donde z = max(x,y)
VARGRAPHIC(x) CHAR(y) o VARGRAPHIC(z) donde z = max(x,y)
VARCHAR(y)
VARCHAR(x) GRAPHIC(y) o VARGRAPHIC(z) donde z = max(x,y)
VARGRAPHIC
LONG VARGRAPHIC CHAR(y) o LONG VARGRAPHIC
VARCHAR(y) o LONG
VARCHAR
LONG VARCHAR GRAPHIC(y) o LONG VARGRAPHIC
VARGRAPHIC(y)
DBCLOB(x) CHAR(y) o DBCLOB(z) donde z = max (x,y)
VARCHAR(y) o CLOB(y)
DBCLOB(x) LONG VARCHAR DBCLOB(z) donde z = max (x,16350)
CLOB(x) GRAPHIC(y) o DBCLOB(z) donde z = max (x,y)
VARGRAPHIC(y)
CLOB(x) LONG VARGRAPHIC DBCLOB(z) donde z = max (x,16350)

Objeto grande binario (BLOB)


Un BLOB slo es compatible con otro BLOB y el resultado es un BLOB. La funcin
escalar BLOB puede utilizarse para convertir desde otros tipos si stos deben
tratarse como tipos BLOB. La longitud del resultado BLOB es la longitud mayor de
todos los tipos de datos.

Numrico
Los tipos numricos son compatibles con otros tipos numricos. Los tipos
numricos incluyen SMALLINT, INTEGER, BIGINT,DECIMAL, REAL y DOUBLE.

130 Consulta de SQL - Volumen 1


Reglas para tipos de datos de resultados

Si un operando es... Y el otro operando es... El tipo de datos del resultado es...
SMALLINT SMALLINT SMALLINT
INTEGER INTEGER INTEGER
INTEGER SMALLINT INTEGER
BIGINT BIGINT BIGINT
BIGINT INTEGER BIGINT
BIGINT SMALLINT BIGINT
DECIMAL(w,x) SMALLINT DECIMAL(p,x) donde
p = x+max(w-x,5)1
DECIMAL(w,x) INTEGER DECIMAL(p,x) donde
p = x+max(w-x,11)1
DECIMAL(w,x) BIGINT DECIMAL(p,x) donde
p = x+max(w-x,19)1
DECIMAL(w,x) DECIMAL(y,z) DECIMAL(p,s) donde
p = max(x,z)+max(w-x,y-z)1s
= max(x,z)
REAL REAL REAL
REAL DECIMAL, BIGINT, DOUBLE
INTEGER o SMALLINT
DOUBLE cualquier tipo numrico DOUBLE
1
La precisin no puede exceder de 31.

DATE
Una fecha es compatible con otra fecha o con cualquier expresin CHAR o
VARCHAR que contiene una representacin de serie vlida de una fecha. El tipo
de datos del resultado es DATE.

TIME
Una hora es compatible con otra hora o con cualquier expresin CHAR o
VARCHAR que contenta una representacin de serie vlida de una hora. El tipo de
datos del resultado es TIME.

TIMESTAMP
Una indicacin de fecha y hora es compatible con otra indicacin de fecha y hora o
con cualquier expresin CHAR o VARCHAR que contenga una representacin de
serie vlida de una indicacin de fecha y hora. El tipo de datos del resultado es
TIMESTAMP.

XML
Un operando XML es compatible con otro operando XML. El tipo de datos del
resultado es XML.

Tipos definidos por el usuario


Tipos diferenciados: Un tipo diferenciado definido por el usuario slo es
compatible con el mismo tipo diferenciado definido por el usuario. El tipo de datos
del resultado es el tipo diferenciado definido por el usuario.

Tipos de referencia: Un tipo de referencia es compatible con otro tipo de


referencia en el caso de que sus tipos de destino tengan un supertipo comn. El
tipo de datos del resultado es un tipo de referencia que tiene un supertipo comn

Captulo 2. Elementos del lenguaje 131


Reglas para tipos de datos de resultados

como tipo de destino. Si todos los operandos tienen la tabla de mbito idntica, el
resultado tiene esta tabla de mbito. De lo contrario, el resultado no tiene mbito.

Tipos estructurados: Un tipo estructurado es compatible con otro tipo de


estructurado siempre tengan un supertipo comn. El tipo de datos esttico de la
columna del tipo estructurado resultante es el tipo estructurado que es el supertipo
menos comn de cualquiera de las dos columnas.

Por ejemplo, considere la siguiente jerarqua de tipos estructurados:


A
/ \
B C
/ \
D E
/ \
F G

Los tipos estructurados del tipo esttico E y F son compatibles con el tipo esttico
resultante de B, que es el supertipo menos comn de E y F.

Atributo con posibilidad de nulos del resultado


A excepcin de INTERSECT y EXCEPT, el resultado permite nulos a menos que
ambos operandos no permitan nulos.
v Para INTERSECT, si cualquier operando no permite nulos, el resultado no
permite nulos (la interseccin nunca sera nula).
v Para EXCEPT, si el primer operando no permite nulos, el resultado no permite
nulos (el resultado slo puede ser valores del primer operando).

Informacin relacionada:
v BLOB en la pgina 306
v Reglas para la conversin de series en la pgina 133

132 Consulta de SQL - Volumen 1


Reglas para conversiones de series

Reglas para la conversin de series


La pgina de cdigos utilizada para realizar una operacin se determina por las
reglas que se aplican a los operandos en dicha operacin. Esta seccin explica
dichas reglas.

Estas reglas se aplican a:


v Las columnas de serie correspondientes en selecciones completas con
operaciones de conjuntos (UNION, INTERSECT y EXCEPT)
v Los operandos de concatenacin
v Los operandos de predicados (a excepcin de LIKE)
v Expresiones resultantes de una expresin CASE
v Los argumentos de la funcin escalar COALESCE (y VALUE)
v Los valores de expresiones de la lista de entrada de un predicado IN
v Las expresiones correspondientes de una clusula VALUES de mltiples filas.

En cada caso, la pgina de cdigos del resultado se determina en el momento del


enlace, y la ejecucin de la operacin puede implicar la conversin de series a la
pgina de cdigos identificada por dicha pgina de cdigos. Un carcter que no
tenga una conversin vlida se correlaciona con el carcter de sustitucin del juego
de caracteres y SQLWARN10 se establece en W en la SQLCA.

La pgina de cdigos del resultado se determina por las pginas de cdigos de los
operandos. Las pginas de cdigos de los dos primeros operandos determinan una
pgina de cdigos del resultado intermedia, esta pgina de cdigos y la del
siguiente operando determinan una nueva pgina de cdigos del resultado
intermedia (si se aplica), etctera. La ltima pgina de cdigos del resultado
intermedia y la pgina de cdigos del ltimo operando determinan la pgina de
cdigos de la serie o columna del resultado. En cada par de pginas de cdigos, el
resultado se determina por la aplicacin secuencial de las reglas siguientes:
v Si las pginas de cdigos son iguales, el resultado es dicha pgina de cdigos.
v Si cualquiera de las dos pginas de cdigos es BIT DATA (pgina de cdigos 0),
la pgina de cdigos del resultado es BIT DATA.
v En una base de datos Unicode, si una pgina de cdigos denota datos en un
esquema de codificacin que es distinto de la otra pgina de cdigos, el
resultado es UCS-2 sobre UTF-8 (es decir, los datos de tipo grfico sobre los
datos de tipo carcter). (En una base de datos que no sea Unicode, no se permite
la conversin entre distintos esquemas de codificacin.
v Para los operandos que son variables del lenguaje principal (cuya pgina de
cdigos no es BIT DATA), la pgina de cdigos resultante es la pgina de
cdigos de la base de datos. Los datos de entrada de este tipo de variables del
lenguaje principal se convierten de la pgina de cdigos de la aplicacin a la
pgina de cdigos de la base de datos antes de utilizarse.

Las conversiones a la pgina de cdigos del resultado se realizan, si es necesario,


para:
v Un operando del operador de concatenacin
v El argumento seleccionado de la funcin escalar COALESCE (o VALUE)
v La expresin del resultado seleccionada de la expresin CASE
v Las expresiones de la lista in del predicado IN
v Las expresiones correspondientes de una clusula VALUES de mltiples filas

Captulo 2. Elementos del lenguaje 133


Reglas para conversiones de series

v Las columnas correspondientes que hacen referencia en operaciones de


conjuntos.

La conversin de los caracteres es necesaria si son ciertas todas las afirmaciones


siguientes:
v Las pginas de cdigos son diferentes
v Ninguna serie es BIT DATA
v La serie no es nula ni est vaca

Ejemplos

Ejemplo 1: Supongamos lo siguiente en una base de datos creada con la pgina de


cdigos 850:

Expresin Tipo Pgina de cdigos


COL_1 columna 850
HV_2 variable del lenguaje 437
principal

Cuando se evala el predicado:


COL_1 CONCAT :HV_2

la pgina de cdigos del resultado de los dos operandos es 850, porque los datos
de variables del lenguaje principal se convertirn a pgina de cdigos de la base
de datos antes de utilizarse.

Ejemplo 2: Utilizando la informacin del ejemplo anterior para evaluar el


predicado:
COALESCE(COL_1, :HV_2:NULLIND,)

la pgina de cdigos del resultado es 850. Por lo tanto, la pgina de cdigos del
resultado para la funcin escalar COALESCE ser la pgina de cdigos 850.

134 Consulta de SQL - Volumen 1


Tipos de datos compatibles entre particiones de base de datos

Tipos de datos compatibles entre particiones de base de


datos
La compatibilidad entre particiones de base de datos se define entre los tipos de base de
datos de las columnas correspondientes de las claves de distribucin. Los tipos de
datos compatibles entre particiones de base de datos tienen la propiedad de dos
variables, una de cada tipo, con el mismo valor, se correlacionan con el mismo
ndice de correlacin de distribucin por la misma funcin de particin.

La Tabla 10 muestra la compatibilidad de los tipos de datos en las particiones de


base de datos.

La compatibilidad entre particiones de base de datos tiene las caractersticas


siguientes:
v Se utilizan formatos internos para DATE, TIME y TIMESTAMP. No son
compatibles entre s y ninguno es compatible con CHAR.
v La compatibilidad entre particiones de base de datos no se ve afectada por las
columnas con definiciones NOT NULL o FOR BIT DATA.
v Los valores NULL de los tipos de datos compatibles se tratan de manera
idntica. Se pueden generar resultados diferentes para los valores NULL de tipos
de datos no compatibles.
v Se utiliza el tipo de datos del UDT para analizar la compatibilidad entre
particiones de base de datos.
v Los decimales del mismo valor de la clave de distribucin se tratan de manera
idntica, incluso si difieren su escala y precisin.
v La funcin de generacin aleatoria proporcionada por el sistema ignora los
blancos de cola de las series de caracteres (CHAR, VARCHAR, GRAPHIC o
VARGRAPHIC).
v CHAR o VARCHAR de diferentes longitudes son tipos de datos compatibles.
v Los valores REAL o DOUBLE se tratan de manera idntica incluso si su
precisin es diferente.
Tabla 10. Compatibilidades de particin de base de datos
Indica-
cin
de Tipo Tipo
Entero Nmero Coma Serie de Serie fecha diferen- estructu-
Operandos binario decimal flotante caracteres grfica Fecha Hora y hora ciado rado
1
Entero binario S No No No No No No No No
1
Nmero No S No No No No No No No
decimal
1
Coma flotante No No S No No No No No No
2 1
Serie de No No No S No No No No No
caracteres3
Serie grfica3 No No No No S No No No 1
No
1
Fecha No No No No No S No No No
1
Hora No No No No No No S No No
1
Indicacin de No No No No No No No S No
fecha y hora
1 1 1 1 1 1 1 1 1
Tipo No
diferenciado

Captulo 2. Elementos del lenguaje 135


Tipos de datos compatibles entre particiones de base de datos

Tabla 10. Compatibilidades de particin de base de datos (continuacin)


Indica-
cin
de Tipo Tipo
Entero Nmero Coma Serie de Serie fecha diferen- estructu-
Operandos binario decimal flotante caracteres grfica Fecha Hora y hora ciado rado
Tipo No No No No No No No No No No
estructurado3
Nota:
1
El valor de un tipo diferenciado definido por el usuario (UDT) es compatible desde el punto de vista de
particin de base de datos con el tipo fuente del UDT o cualquier otro UDT con un tipo fuente compatible
en el nivel de particin de base de datos.
2
El atributo FOR BIT DATA no afecta a la compatibilidad entre particiones.
3
Observe que los tipos estructurados definidos por el usuario y los tipos de datos LONG VARCHAR, LONG
VARGRAPHIC, CLOB, DBCLOB y BLOB no son aplicables para la compatibilidad de particiones de base de
datos, pues no estn soportados en las claves de distribucin.

136 Consulta de SQL - Volumen 1


Constantes

Constantes
Una constante (a veces llamada un literal) especifica un valor. Las constantes se
clasifican en constantes de tipo serie y constantes numricas. Las constantes
numricas pueden, a su vez, ser constantes enteras, de coma flotante y decimales.

Todas las constantes tienen el atributo NOT NULL.

Un valor de cero negativo en una constante numrica (-0) indica el mismo valor
que un cero sin el signo (0).

Los tipos definidos por el usuario son difciles de escribir. Esto significa que un
tipo definido por el usuario slo es compatible con su propio tipo. Sin embargo,
una constante tiene un tipo interno. Por lo tanto, una operacin que implique un
tipo definido por el usuario y una constante slo es posible si el tipo definido por
el usuario se ha convertido al tipo interno de la constante o si la constante se ha
convertido al tipo definido por el usuario. Por ejemplo, si se utiliza la tabla y el
tipo diferenciado del apartado Comparaciones de tipos definidos por el usuario
en la pgina 127, sern vlidas las siguientes comparaciones con la constante 14:
SELECT * FROM CAMP_DB2_ROSTER
WHERE AGE > CAST(14 AS YOUTH)
SELECT * FROM CAMP_DB2_ROSTER
WHERE CAST(AGE AS INTEGER) > 14

No ser vlida la siguiente comparacin:


SELECT * FROM CAMP_DB2_ROSTER
WHERE AGE > 14

Constantes enteras
Una constante entera especifica un entero en forma de nmero, con signo o sin
signo, con un mximo de 19 dgitos que no incluye ninguna coma decimal. El tipo
de datos de una constante entera es entero grande si su valor est comprendido en
el rango de un entero grande. El tipo de datos de una constante entera es un
entero superior si su valor se encuentra fuera del rango de un entero grande, pero
est comprendido en el rango de un entero superior. Una constante definida fuera
del rango de valores enteros superior se considera una constante decimal.

Observe que la representacin literal ms pequea de una constante entera grabde


es -2 147 483 647, y no -2 147 483 648, que es el lmite para los valores enteros. De
manera similar, la representacin literal ms pequea de una constante entera
superior es -9 223 372 036 854 775 807, y no -9 223 372 036 854 775 808, que es el
lmite para los valores enteros superiores.

Ejemplos:
64 -15 +100 32767 720176 12345678901

En los diagramas de sintaxis, el trmino 'entero' se utiliza para una constante


entera grande que no debe incluir un signo.

Constantes de coma flotante


Una constante de coma flotante especifica un nmero de coma flotante en forma de
dos nmeros separados por una E. El primer nmero puede incluir un signo y una
coma decimal; el segundo nmero puede incluir un signo, pero no una coma
decimal. El tipo de datos de una constante de coma flotante es de precisin doble.

Captulo 2. Elementos del lenguaje 137


Constantes de coma flotante

El valor de la constante es el producto del primer nmero y la potencia de 10


especificada por el segundo nmero; este valor debe estar dentro del rango de los
nmeros de coma flotante. El nmero de bytes de la constante no debe exceder de
30.

Ejemplos:
15E1 2,E5 2,2E-1 +5,E+2

Constantes decimales
Una constante decimal es un nmero con o sin signo de 31 dgitos de longitud como
mximo y que incluye una coma decimal o no est comprendido dentro del rango
de enteros binarios. Debe estar comprendido en el rango de nmeros decimales. La
precisin es el nmero total de dgitos (incluyendo los ceros iniciales y de cola); la
escala es el nmero de dgitos situados a la derecha de la coma decimal
(incluyendo los ceros de cola).

Ejemplos:
25,5 1000, -15, +37589,3333333333

Constantes de series de caracteres


Una constante de serie de caracteres especifica una serie de caracteres de longitud
variable y consta de una secuencia de caracteres que empieza y finaliza por un
apstrofo ('). Esta modalidad de constante de tipo serie especifica la serie de
caracteres contenida entre los delimitadores de series. La longitud de la serie de
caracteres no debe ser mayor que 32.672 bytes. Se utilizan dos delimitadores de
series consecutivos para representar un delimitador de series dentro de la serie de
caracteres.

Ejemplos:
'12/14/1985'
'32'
'DON''T CHANGE'

El valor de una constante se convierte siempre en la pgina de cdigos de la base


de datos cuando se vincula con la base de datos. Se considera que est en la
pgina de cdigos de la base de datos. Por lo tanto, si se utiliza en una expresin
que combina una constante con una columna FOR BIT DATA y cuyo resultado es
FOR BIT DATA, el valor de la constante no se convertir desde su representacin
de pgina de cdigos de base de datos.

Constantes hexadecimales
Una constante hexadecimal especifica una serie de caracteres de longitud variable de
la pgina de cdigos de la seccin.

El formato de una constante hexadecimal es una X seguida por una secuencia de


caracteres que empieza y termina con un apstrofo ('). Los caracteres que se
incluyen entre los apstrofos deben corresponder a una cantidad par de dgitos
hexadecimales. El nmero de dgitos hexadecimales no debe exceder de 16.336 o,
de lo contrario, se producir un error (SQLSTATE -54002). Un dgito hexadecimal
representa 4 bits. Se especifica como un dgito o cualquiera de las letras de la A a
la F (en maysculas o en minsculas), donde A representa el patrn de bits
'1010', B representa '1011', etc. Si una constante hexadecimal no tiene el formato
correcto (por ejemplo, contiene un dgito hexadecimal no vlido o un nmero
impar de dgitos hexadecimales), se genera un error (SQLSTATE 42606).

138 Consulta de SQL - Volumen 1


Constantes hexadecimales

Ejemplos:
X'FFFF' que representa el patrn de bits '1111111111111111'

X'4672616E6B' que representa el patrn VARCHAR de la serie ASCII 'Frank'

Constantes de series grficas


Una constante de serie grfica especifica una serie grfica de longitud variable
formada por una secuencia de caracteres de doble byte que empieza y termina por
un apstrofe de un byte ('), y que est precedida por una carcter G o N de un
solo byte. Los caracteres que se encuentran entre los apstrofes deben representar
un nmero par de bytes, y la longitud de la serie grfica no debe exceder los
16.336 bytes.

Ejemplos:
G'serie de caracteres de doble byte'
N'serie de caracteres de doble byte'

El apstrofo no debe aparecer como parte de un carcter MBCS para que se


considere como delimitador.

En una base de datos Unicode, constante de serie grfica hexadecimal que


especifica que tambin se da soporte a una serie grfica de longitud variable. El
formato de una constante de serie grfica hexadecimal es: GX seguido por una
secuencia de caracteres que empieza y termina por un apstrofe. Los caracteres que
se encuentran entre los apstrofes deben ser un mltiplo par de cuatro dgitos
hexadecimales. El nmero de dgitos hexadecimales no debe ser superior a 16.336;
de lo contrario, se devuelve un error (SQLSTATE -54002). Si el formato de la
constante de serie grfica hexadecimal no es correcto, se devuelve un error
(SQLSTATE 42606). Cada grupo de cuatro dgitos representa un nico carcter
grfico. En una base de datos Unicode, esto sera un nico carcter grfico UCS-2.

Ejemplos:
GX'FFFF'

representa el patrn de bits 1111111111111111 en una base de datos Unicode.


GX'005200690063006B'

representa el patrn VARGRAPHIC de la serie ASCII Rick en una base de datos a


Unicode.

Constantes de series grficas UCS-2


En una base de datos Unicode, serie grfica UCS-2 hexadecimal que especifica que
se da soporte a una constante de serie grfica UCS-2 de longitud variable. El
formato de una constante de serie grfica UCS-2 hexadecimal es: UX seguido por
una secuencia de caracteres que empieza y termina por un apstrofe. Los
caracteres que se encuentran entre los apstrofes deben ser un mltiplo par de
cuatro dgitos hexadecimales. El nmero de dgitos hexadecimales no debe ser
superior a 16.336; de lo contrario, se devuelve un error (SQLSTATE -54002). Si el
formato de la constante de serie grfica UCS-2 hexadecimal no es correcto, se
devuelve un error (SQLSTATE 42606). Cada grupo de cuatro dgitos representa un
nico carcter grfico UCS-2.

Ejemplo:
UX'0042006F006200620079'

Captulo 2. Elementos del lenguaje 139


Constantes de series grficas

representa el patrn VARGRAPHIC de la serie ASCII Bobby.

Informacin relacionada:
v Asignaciones y comparaciones en la pgina 117
v Expresiones en la pgina 189

140 Consulta de SQL - Volumen 1


Registros especiales

Registros especiales

Registros especiales
Un registro especial es un rea de almacenamiento que el gestor de bases de datos
define para un proceso de aplicacin. Se utiliza para almacenar informacin a la
que se puede hacer referencia en sentencias de SQL. Una referencia a un registro
especial es una referencia a un valor proporcionado por el servidor actual. Si el
valor es una serie, su CCSID es el CCSID por omisin del servidor actual. Se hace
referencia a los registros especiales de la forma siguiente:

Captulo 2. Elementos del lenguaje 141


Registros especiales

 CURRENT CLIENT_ACCTNG 
CLIENT ACCTNG
CURRENT CLIENT_APPLNAME
CLIENT APPLNAME
CURRENT CLIENT_USERID
CLIENT USERID
CURRENT CLIENT_WRKSTNNAME
CLIENT WRKSTNNAME
CURRENT DATE
(1)
CURRENT_DATE
CURRENT DBPARTITIONNUM
CURRENT DEFAULT TRANSFORM GROUP
CURRENT DEGREE
CURRENT EXPLAIN MODE
CURRENT EXPLAIN SNAPSHOT
CURRENT FEDERATED ASYNCHRONY
CURRENT IMPLICIT XMLPARSE OPTION
CURRENT ISOLATION
CURRENT LOCK TIMEOUT
CURRENT MAINTAINED TABLE TYPES FOR OPTIMIZATION
CURRENT PACKAGE PATH
CURRENT PATH
(1)
CURRENT_PATH
CURRENT QUERY OPTIMIZATION
CURRENT REFRESH AGE
CURRENT SCHEMA
(1)
CURRENT_SCHEMA
CURRENT SERVER
(1)
CURRENT_SERVER
CURRENT TIME
(1)
CURRENT_TIME
CURRENT TIMESTAMP
(1)
CURRENT_TIMESTAMP
CURRENT TIMEZONE
(1)
CURRENT_TIMEZONE
CURRENT USER
(1)
CURRENT_USER
SESSION_USER
USER
SYSTEM_USER

Notas:
1 El estndar bsico de 1999 de SQL utiliza el formato con el subrayado.

Algunos registros especiales puede actualizarse utilizando la sentencia SET. La


tabla siguiente muestra cules de estos registros especiales pueden actualizarse.
Tabla 11. Registros especiales
Registro especial Actualizable
CURRENT CLIENT_ACCTNG No

142 Consulta de SQL - Volumen 1


Registros especiales

Tabla 11. Registros especiales (continuacin)


Registro especial Actualizable
CURRENT CLIENT_APPLNAME No
CURRENT CLIENT_USERID No
CURRENT CLIENT_WRKSTNNAME No
CURRENT DATE No
CURRENT DBPARTITIONNUM No
CURRENT DEFAULT TRANSFORM GROUP S
CURRENT DEGREE S
CURRENT EXPLAIN MODE S
CURRENT EXPLAIN SNAPSHOT S
CURRENT FEDERATED ASYNCHRONY S
CURRENT IMPLICIT XMLPARSE OPTION S
CURRENT ISOLATION S
CURRENT LOCK TIMEOUT S
CURRENT MAINTAINED TABLE TYPES FOR OPTIMIZATION S
CURRENT PACKAGE PATH S
CURRENT PATH S
CURRENT QUERY OPTIMIZATION S
CURRENT REFRESH AGE S
CURRENT SCHEMA S
CURRENT SERVER No
CURRENT TIME No
CURRENT TIMESTAMP No
CURRENT TIMEZONE No
CURRENT USER No
SESSION_USER S
SYSTEM_USER No
USER S

Cuando se hace referencia a un registro especial en una rutina, el valor del registro
especial de la rutina depende de si el registro especial es actualizable o no. Para
registros especiales no actualizables, el valor se define en el valor por omisin del
registro especial. Para registros especiales actualizables, el valor inicial se hereda
del invocador de la rutina y puede modificarse con una sentencia SET posterior
dentro de la rutina.

Captulo 2. Elementos del lenguaje 143


CURRENT CLIENT_ACCTNG

CURRENT CLIENT_ACCTNG
El registro especial CURRENT CLIENT_ACCTNG (o CLIENT ACCTNG) contiene
el valor de la serie de contabilidad a partir de la informacin de cliente
especificada para esta conexin. El tipo de datos del registro es VARCHAR(255). El
valor por omisin de este registro es una serie vaca.

El valor de la serie de contabilidad puede cambiarse utilizando la API para


Establecer informacin de cliente (sqleseti).

Tenga en cuenta que el valor proporcionado a travs de la API sqleseti est en la


pgina de cdigos de aplicacin y el valor del registro especial se almacena en la
pgina de cdigos de base de datos. En funcin de los valores de datos utilizados
al establecer la informacin de cliente, puede que, durante la conversin de la
pgina de cdigos, se produzca el truncamiento del valor de datos almacenado en
el registro especial.

Ejemplo: Obtenga el valor actual de la serie de contabilidad para esta conexin.


VALUES (CURRENT CLIENT_ACCTNG)
INTO :ACCT_STRING

144 Consulta de SQL - Volumen 1


CURRENT CLIENT_APPLNAME

CURRENT CLIENT_APPLNAM
El registro especial CLIENT_APPLNAME (o CLIENT APPLNAME) contiene el
valor del nombre de la aplicacin a partir de la informacin de cliente especificada
para esta conexin. El tipo de datos del registro es VARCHAR(255). El valor por
omisin de este registro es una serie vaca.

El valor del nombre de aplicacin puede cambiarse utilizando la API para


Establecer informacin de cliente (sqleseti).

Tenga en cuenta que el valor proporcionado a travs de la API sqleseti est en la


pgina de cdigos de aplicacin y el valor del registro especial se almacena en la
pgina de cdigos de base de datos. En funcin de los valores de datos utilizados
al establecer la informacin de cliente, puede que, durante la conversin de la
pgina de cdigos, se produzca el truncamiento del valor de datos almacenado en
el registro especial.

Ejemplo: Seleccione los departamentos a los que se les permite utilizar la aplicacin
que se est usando en esta conexin.
SELECT DEPT
FROM DEPT_APPL_MAP
WHERE APPL_NAME = CURRENT CLIENT_APPLNAME

Captulo 2. Elementos del lenguaje 145


CURRENT CLIENT_USERID

CURRENT CLIENT_USERID
El registro especial CLIENT_USERID (o CLIENT USERID) contiene el valor del ID
de usuario de cliente a partir de la informacin de cliente especificada para esta
conexin. El tipo de datos del registro es VARCHAR(255). El valor por omisin de
este registro es una serie vaca.

El valor del ID de usuario de cliente puede cambiarse utilizando la API para


Establecer informacin de cliente (sqleseti).

Tenga en cuenta que el valor proporcionado a travs de la API sqleseti est en la


pgina de cdigos de aplicacin y el valor del registro especial se almacena en la
pgina de cdigos de base de datos. En funcin de los valores de datos utilizados
al establecer la informacin de cliente, puede que, durante la conversin de la
pgina de cdigos, se produzca el truncamiento del valor de datos almacenado en
el registro especial.

Ejemplo: Averige en qu departamento funciona el ID de usuario de cliente actual.


SELECT DEPT
FROM DEPT_USERID_MAP
WHERE USER_ID = CURRENT CLIENT_USERID

146 Consulta de SQL - Volumen 1


CURRENT CLIENT_WRKSTNNAME

CURRENT CLIENT_WRKSTNNAME
El registro especial CLIENT_WRKSTNNAME (o CLIENT WRKSTNNAME)
contiene el valor del nombre de la estacin de trabajo a partir de la informacin de
cliente especificada para esta conexin. El tipo de datos del registro es
VARCHAR(255). El valor por omisin de este registro es una serie vaca.

El valor del nombre de estacin de trabajo puede cambiarse utilizando la API para
Establecer informacin de cliente (sqleseti).

Tenga en cuenta que el valor proporcionado a travs de la API sqleseti est en la


pgina de cdigos de aplicacin y el valor del registro especial se almacena en la
pgina de cdigos de base de datos. En funcin de los valores de datos utilizados
al establecer la informacin de cliente, puede que, durante la conversin de la
pgina de cdigos, se produzca el truncamiento del valor de datos almacenado en
el registro especial.

Ejemplo: Obtenga el nombre de estacin de trabajo que se est utilizando para esta
conexin.
VALUES (CURRENT CLIENT_WRKSTNNAME)
INTO :WS_NAME

Captulo 2. Elementos del lenguaje 147


CURRENT DATE

CURRENT DATE
El registro especial CURRENT DATE (o CURRENT_DATE) especifica una fecha
basada en la lectura del reloj cuando se ejecuta la sentencia de SQL en el servidor
de aplicaciones. Si este registro especial se utiliza ms de una vez en la misma
sentencia de SQL o bien con CURRENT TIME o CURRENT TIMESTAMP en una
sola sentencia, todos los valores se basan en la misma lectura del reloj.

Cuando se utiliza en una sentencia de SQL incluida en una rutina, CURRENT


DATE no se hereda de la sentencia que la invoca.

En un sistema federado, CURRENT DATE se puede utilizar en una consulta


prevista para fuentes de datos. Cuando se procesa la consulta, la fecha devuelta se
obtendr del registro CURRENT DATE, en el servidor federado, no de las fuentes
de datos.

Ejemplo: Utilizando la tabla PROJECT, establezca la fecha final del proyecto


(PRENDATE) del proyecto MA2111 (PROJNO) en la fecha actual.
UPDATE PROJECT
SET PRENDATE = CURRENT DATE
WHERE PROJNO = MA2111

148 Consulta de SQL - Volumen 1


CURRENT DBPARTITIONNUM

CURRENT DBPARTITIONNUM
El registro especial CURRENT DBPARTITIONNUM especifica un valor INTEGER
que identifica el nmero de nodo coordinador de la sentencia. Para las sentencias
emitidas desde una aplicacin, el coordinador es la particin de base de datos a la
que se conecta la aplicacin. Para las sentencias emitidas desde una rutina, el
coordinador es la particin de base de datos desde la que se invoca la rutina.

Cuando se utiliza en una sentencia de SQL incluida en una rutina, CURRENT


DBPARTITIONNUM nunca se hereda de la sentencia que la invoca.

CURRENT DBPARTITIONNUM devuelve 0 si la instancia de base de datos no est


definida para soportar el particionamiento. (En otras palabras, si no hay ningn
archivo db2nodes.cfg. Para las bases de datos particionadas, el archivo
db2nodes.cfg existe y contiene las definiciones de particin de base de datos).

Es posible cambiar CURRENT DBPARTITIONNUM mediante la sentencia


CONNECT, pero slo bajo ciertas condiciones.

Para compatibilidad con versiones anteriores a la Versin 8, la palabra clave NODE


puede sustituirse por DBPARTITIONNUM.

Ejemplo: Establecer la variable del lenguaje principal APPL_NODE (entero) en el


nmero de la particin de base de datos a la que est conectada la aplicacin.
VALUES CURRENT DBPARTITIONNUM
INTO :APPL_NODE

Informacin relacionada:
v Sentencia CONNECT (Tipo 1) en Consulta de SQL, Volumen 2

Captulo 2. Elementos del lenguaje 149


CURRENT DEFAULT TRANSFORM GROUP

CURRENT DEFAULT TRANSFORM GROUP


El registro especial CURRENT DEFAULT TRANSFORM GROUP especifica un
valor VARCHAR(18) que identifica el nombre del grupo de transformacin
utilizado por las sentencias de SQL dinmicas para intercambiar valores de tipo
estructurado definidos por el usuario con programas de lenguaje principal. Este
registro especial no especifica los grupos de transformacin utilizados en las
sentencias de SQL dinmico o en el intercambio de parmetros y resultados con
funciones externas o mtodos.

Su valor puede definirse mediante la sentencia SET CURRENT DEFAULT


TRANSFORM GROUP. Si no se define ningn valor, el valor inicial del registro
especial es la serie vaca (VARCHAR con una longitud de cero).

En un sentencia de SQL dinmico (es decir, una sentencia que interacciona con
variables del lenguaje principal), el nombre del grupo de transformacin utilizado
para intercambiar valores es el mismo que el nombre de este registro especial, a
menos que el registro contenga la serie vaca. Si el registro contiene la serie vaca
(no se ha definido ningn valor utilizando la sentencia SET CURRENT DEFAULT
TRANSFORM GROUP), se utiliza el grupo de transformacin DB2_PROGRAM
para la transformacin. Si el grupo de transformacin DB2_PROGRAM no est
definido para el tipo estructurado indicado, se emite un error durante la ejecucin
(SQLSTATE 42741).

Ejemplos:

Establezca el grupo de transformacin por omisin en MYSTRUCT1. Las funciones


TO SQL y FROM SQL definidas en la transformacin MYSTRUCT1 se utilizan para
intercambiar variables de tipo estructurado, definidas por el usuario, con el
programa de lenguaje principal.
SET CURRENT DEFAULT TRANSFORM GROUP = MYSTRUCT1

Recupere el nombre del grupo de transformacin por omisin asignado a este


registro especial.
VALUES (CURRENT DEFAULT TRANSFORM GROUP)

150 Consulta de SQL - Volumen 1


CURRENT DEGREE

CURRENT DEGREE
El registro especial CURRENT DEGREE especifica el grado de paralelismo
intraparticin para la ejecucin de sentencias de SQL dinmico. (Para SQL esttico,
la opcin de vinculacin de DEGREE proporciona el mismo control.) El tipo de
datos del registro es CHAR(5). Los valores vlidos son ANY o la representacin de
serie de un entero entre 1 y 32 767, inclusive.

Si el valor de CURRENT DEGREE representado como un entero es 1 cuando una


sentencia de SQL se prepara dinmicamente, la ejecucin de esta sentencia no
utilizar el paralelismo intraparticin.

Si el valor de CURRENT DEGREE representado como un entero es mayor que 1 y


menor o igual a 32 767 cuando una sentencia de SQL se prepara dinmicamente, la
ejecucin de esta sentencia puede implicar el paralelismo intraparticin con el
grado especificado.

Si el valor de CURRENT DEGREE es ANY cuando una sentencia de SQL se


prepara dinmicamente, la ejecucin de dicha sentencia puede implicar el
paralelismo intraparticin que utiliza un grado determinado por el gestor de bases
de datos.

El grado de paralelismo real durante la ejecucin ser el menor de los valores


siguientes:
v El valor del parmetro de configuracin del grado de consulta
mximo(max_querydegree)
v El grado de ejecucin de la aplicacin
v El grado de compilacin de la sentencia de SQL.

Si el parmetro de configuracin del gestor de bases de datos intra_parallel se


establece en NO, el valor del registro especial CURRENT DEGREE se ignorar con
el fin de optimizar y la sentencia no utilizar el paralelismo intraparticin.

El valor puede cambiarse invocando la sentencia SET CURRENT DEGREE.

El valor inicial de CURRENT DEGREE lo determina el parmetro de configuracin


de la base de datos dft_degree.

Informacin relacionada:
v Sentencia SET CURRENT DEGREE en Consulta de SQL, Volumen 2

Captulo 2. Elementos del lenguaje 151


CURRENT EXPLAIN MODE

CURRENT EXPLAIN MODE


El registro especial CURRENT EXPLAIN MODE contiene un valor VARCHAR(254)
que controla la actuacin del recurso Explain con respecto a sentencias de SQL
dinmico admisibles. Este recurso genera e inserta informacin de Explain en las
tablas de Explain. Esta informacin no incluye la instantnea de Explain. Los
valores posibles son YES, EXPLAIN, NO, REOPT, RECOMMEND INDEXES y
EVALUATE INDEXES. (Para SQL esttico, la opcin de vinculacin de EXPLAIN
proporciona el mismo control. En el caso de los mandatos PREP y BIND, los
valores de la opcin EXPLAIN son: YES, NO y ALL.)
YES Habilita el recurso Explain y hace que la informacin de Explain para una
sentencia de SQL dinmico se capture al compilar la sentencia.
EXPLAIN
Se habilita el recurso pero no se ejecutan las sentencias dinmicas.
NO Inhabilita el recurso Explain.
REOPT
Habilita el recurso Explain y hace que la informacin de Explain para una
sentencia de SQL dinmico (o de vinculacin incremental) slo se capture
cuando se reoptimice la sentencia utilizando valores reales para las
variables de entrada (variables del lenguaje principal, registros especiales o
marcadores de parmetros).
RECOMMEND INDEXES
Recomienda un conjunto de ndices para cada consulta dinmica. Llena la
tabla ADVISE_INDEX con el conjunto de ndices.
EVALUATE INDEXES
Explica las consultas dinmicas como si existieran los ndices
recomendados. Los ndices se seleccionan de la tabla ADVISE_INDEX.

El valor inicial es NO. Este valor puede cambiarse invocando la sentencia SET
CURRENT EXPLAIN MODE.

Los valores de los registros especiales CURRENT EXPLAIN MODE y CURRENT


EXPLAIN SNAPSHOT interactan al invocar el recurso Explain. El registro
especial CURRENT EXPLAIN MODE tambin interacta con la opcin de
vinculacin EXPLAIN. RECOMMEND INDEXES y EVALUATE INDEXES slo se
pueden establecer para el registro CURRENT EXPLAIN MODE y deben
establecerse utilizando la sentencia SET CURRENT EXPLAIN MODE.

Ejemplo: Establezca la variable del lenguaje principal EXPL_MODE


(VARCHAR(254)) en el valor que hay actualmente en el registro especial
CURRENT EXPLAIN MODE.
VALUES CURRENT EXPLAIN MODE
INTO :EXPL_MODE

Informacin relacionada:
v Apndice J, Valores de los registros de EXPLAIN, en la pgina 871
v Sentencia SET CURRENT EXPLAIN MODE en Consulta de SQL, Volumen 2

152 Consulta de SQL - Volumen 1


CURRENT EXPLAIN SNAPSHOT

CURRENT EXPLAIN SNAPSHOT


El registro especial CURRENT EXPLAIN SNAPSHOT contiene un valor CHAR(8)
que controla el comportamiento del recurso de instantneas de Explain. Este
recurso genera informacin comprimida que incluye informacin sobre planes de
acceso, costes del operador y estadsticas en tiempo de vinculacin.

Slo las siguientes sentencias tienen en cuenta el valor de este registro: DELETE,
INSERT, SELECT, SELECT INTO, UPDATE, VALUES y VALUES INTO. Los valores
posibles son YES, EXPLAIN, NO y REOPT. (Para SQL esttico, la opcin de
vinculacin EXPLSNAP proporciona el mismo control. En el caso de los mandatos
PREP y BIND, los valores de la opcin EXPLSNAP son: YES, NO y ALL.)
YES Habilita el recurso de instantneas de Explain y realiza una instantnea de
la representacin interna de una sentencia de SQL dinmico al compilar la
sentencia.
EXPLAIN
Habilita el recurso de instantneas de Explain pero no se ejecutan las
sentencias dinmicas.
NO Inhabilita el recurso de instantneas de Explain.
REOPT
Habilita el recurso Explain y hace que la informacin de Explain para una
sentencia de SQL dinmico (o de vinculacin incremental) slo se capture
cuando se reoptimice la sentencia utilizando valores reales para las
variables de entrada (variables del lenguaje principal, registros especiales o
marcadores de parmetros).

El valor inicial es NO. Este valor puede cambiarse invocando la sentencia SET
CURRENT EXPLAIN SNAPSHOT.

Los valores de los registros especiales CURRENT EXPLAIN SNAPSHOT y


CURRENT EXPLAIN MODE interactan al invocar el recurso Explain. El registro
especial CURRENT EXPLAIN SNAPSHOT tambin interacta con la opcin de
vinculacin EXPLSNAP.

Ejemplo: Establezca la variable del lenguaje principal EXPL_SNAP (char(8)) en el


valor que contiene actualmente el registro especial CURRENT EXPLAIN
SNAPSHOT.
VALUES CURRENT EXPLAIN SNAPSHOT
INTO :EXPL_SNAP

Informacin relacionada:
v Apndice J, Valores de los registros de EXPLAIN, en la pgina 871
v Sentencia SET CURRENT EXPLAIN SNAPSHOT en Consulta de SQL, Volumen
2

Captulo 2. Elementos del lenguaje 153


CURRENT FEDERATED ASYNCHRONY

CURRENT FEDERATED ASYNCHRONY


El registro especial CURRENT FEDERATED ASYNCHRONY especifica el grado de
asincrona para la ejecucin de sentencias de SQL dinmico. (La opcin de
vinculacin FEDERATED_ASYNCHRONY ofrece el mismo control para el SQL
esttico.) El tipo de datos del registro es INTEGER. Los valores vlidos son ANY
(representa -1) o un entero entre 0 y el valor del parmetro de configuracin del
gestor de bases de datos maxagents dividido por 4, inclusive. Si, cuando la
sentencia de SQL est dinmicamente preparada, el valor de CURRENT
FEDERATED ASYNCHRONY es:
v 0, la ejecucin de esa sentencia no utilizar la asincrona
v mayor que 0 ni menor o igual que maxagents dividido por 4, la ejecucin de esa
sentencia puede implicar asincrona utilizando el grado especificado
v ANY (representa -1), la ejecucin de esa sentencia puede implicar que la
asincrona utilice un grado que est determinado por el gestor de bases de datos

El valor del registro especial CURRENT FEDERATED ASYNCHRONY puede


modificarse invocando la sentencia SET CURRENT FEDERATED ASYNCHRONY.

El valor inicial del registro especial CURRENT FEDERATED ASYNCHRONY lo


determina el parmetro asincrona_federada de configuracin del gestor de bases de
datos si la sentencia dinmica se emite a travs del procesador de lnea de
mandatos (CLP). La opcin de vinculacin FEDERATED_ASYNCHRONY
determina el valor inicial si la sentencia dinmica forma parte de una aplicacin
que se est vinculando.

Ejemplo: Establecer la variable del lenguaje principal FEDASYNC (INTEGER) en el


valor del registro especial CURRENT FEDERATED ASYNCHRONY.
VALUES CURRENT FEDERATED ASYNCHRONY INTO :FEDASYNC

Informacin relacionada:
v Sentencia SET CURRENT FEDERATED ASYNCHRONY en Consulta de SQL,
Volumen 2

154 Consulta de SQL - Volumen 1


CURRENT IMPLICIT XMLPARSE OPTION

CURRENT IMPLICIT XMLPARSE OPTION


El registro especial CURRENT IMPLICIT XMLPARSE OPTION especifica las
opciones de tratamiento de los espacios en blanco que se utilizarn cuando el
servidor DB2 analice implcitamente los datos XML serializados. Se produce una
operacin de anlisis implcito no validante cuando una sentencia SQL procesa una
variable del lenguaje principal XML o un marcador de parmetros XML escrito
implcita o explcitamente que no es un argumento de la funcin XMLVALIDATE.
El tipo de datos del registro es VARCHAR(128).

El valor del registro especial CURRENT IMPLICIT XMLPARSE OPTION puede


modificarse invocando la sentencia SET CURRENT IMPLICIT XMLPARSE
OPTION. Su valor inicial es STRIP WHITESPACE.

Ejemplos:

Recuperar el valor del registro especial CURRENT IMPLICIT XMLPARSE OPTION


en la variable del lenguaje principal CURXMLPARSEOPT:
EXEC SQL VALUES (CURRENT IMPLICIT XMLPARSE OPTION) INTO :CURXMLPARSEOPT;

Establezca el registro especial CURRENT IMPLICIT XMLPARSE OPTION en


PRESERVE WHITESPACE.
SET CURRENT IMPLICIT XMLPARSE OPTION = PRESERVE WHITESPACE

Se conserva el espacio en blanco cuando se ejecuta la siguiente sentencia SQL:


INSERT INTO T1 (XMLCOL1) VALUES (?)

Informacin relacionada:
v Sentencia SET CURRENT IMPLICIT XMLPARSE OPTION en Consulta de SQL,
Volumen 2
v XMLVALIDATE en la pgina 502

Captulo 2. Elementos del lenguaje 155


CURRENT ISOLATION

CURRENT ISOLATION
El registro especial CURRENT ISOLATION mantiene un valor CHAR(2) que
identifica el nivel de aislamiento (en relacin a otras sesiones simultneas)
correspondiente a las sentencias de SQL dinmico emitidas desde la sesin actual.

Los valores posibles son:


(blancos)
Sin definir; se utiliza el atributo de aislamiento del paquete.
UR Lectura no confirmada
CS Estabilidad del cursor
RR Lectura repetible
RS Estabilidad de lectura

El valor del registro especial CURRENT ISOLATION se puede cambiar mediante la


sentencia SET CURRENT ISOLATION.

Hasta que se emita una sentencia SET CURRENT ISOLATION en una sesin o
despus de especificar RESET para SET CURRENT ISOLATION, el registro
especial CURRENT ISOLATION est establecido en blancos y no se aplica a
sentencias de SQL dinmico; el nivel de aislamiento utilizado se toma del atributo
de aislamiento del paquete que ha emitido la sentencia de SQL dinmico. Una vez
emitida una sentencia SET CURRENT ISOLATION, el registro especial CURRENT
ISOLATION proporciona el nivel de aislamiento correspondiente a cualquier
sentencia de SQL dinmico siguiente compilada dentro de la sesin, con
independencia de los valores del paquete que emita la sentencia. Esto permanecer
vigente hasta que finalice la sesin o hasta que se emita una sentencia SET
CURRENT ISOLATION con la opcin RESET.

Ejemplo: Establecer para la variable del lenguaje principal ISOLATION_MODE


(CHAR(2)) el valor actualmente almacenado en el registro especial CURRENT
ISOLATION.
VALUES CURRENT ISOLATION
INTO :ISOLATION_MODE

Conceptos relacionados:
v Niveles de aislamiento en la pgina 23

Informacin relacionada:
v Sentencia SET CURRENT ISOLATION en Consulta de SQL, Volumen 2

156 Consulta de SQL - Volumen 1


CURRENT LOCK TIMEOUT

CURRENT LOCK TIMEOUT


El registro especial CURRENT LOCK TIMEOUT especifica el nmero de segundos
que debe esperarse un bloqueo antes de devolver un error que indique que no es
posible obtener un bloqueo. Este registro especial afecta a los bloqueos de fila,
tabla, clave de ndice, bloque MDC y va de acceso a XML (XPath). El tipo de datos
del registro es INTEGER.

Los valores vlidos para el registro especial CURRENT LOCK TIMEOUT son los
enteros comprendidos entre -1 y 32767, ambos inclusive. Este registro especial
tambin puede establecerse en un valor nulo. Un valor de -1 especifica que no
deben producirse tiempos de espera excedidos y que la aplicacin debe esperar
hasta que se libere el bloqueo o se detecte un punto muerto. Un valor de 0
especifica que la aplicacin no debe esperar un bloqueo; si no es posible obtener
un bloqueo, debe devolverse un error inmediatamente.

El valor del registro especial CURRENT LOCK TIMEOUT puede modificarse


invocando la sentencia SET CURRENT LOCK TIMEOUT. Su valor inicial es nulo;
en este caso, se utiliza el valor actual del parmetro de configuracin de la base de
datos locktimeout al esperar un bloqueo y se devolver este valor para el registro
especial.

Informacin relacionada:
v Sentencia SET CURRENT LOCK TIMEOUT en Consulta de SQL, Volumen 2

Captulo 2. Elementos del lenguaje 157


CURRENT MAINTAINED TABLE TYPES FOR OPTIMIZATION

CURRENT MAINTAINED TABLE TYPES FOR OPTIMIZATION


El registro especial CURRENT MAINTAINED TABLE TYPES FOR
OPTIMIZATION especifica un valor VARCHAR(254) que identifica los tipos de
tablas que pueden tenerse en cuenta al optimizar el proceso de las series de SQL
dinmico. Las consultas de SQL incorporado esttico nunca tienen en cuenta las
tablas de consultas materializadas.

El valor inicial de CURRENT MAINTAINED TABLE TYPES FOR OPTIMIZATION


es SYSTEM. Su valor puede cambiarse con la sentencia SET CURRENT
MAINTAINED TABLE TYPES FOR OPTIMIZATION.

Informacin relacionada:
v dft_mttb_types - Default maintained table types for optimization configuration
parameter en Performance Guide
v Sentencia SET CURRENT MAINTAINED TABLE TYPES FOR OPTIMIZATION
en Consulta de SQL, Volumen 2

158 Consulta de SQL - Volumen 1


CURRENT PACKAGE PATH

CURRENT PACKAGE PATH


El registro especial CURRENT PATH especifica un valor VARCHAR(4096) que
identifica la va de acceso que se ha de utilizar para resolver las referencias a
paquetes que son necesarias al ejecutar sentencias de SQL.

El valor puede ser una serie vaca o en blanco o una lista de uno o varios nombres
de esquema delimitados por comillas dobles y separados por comas. Las comillas
dobles que aparezcan como parte de la serie debern representarse como dos
comillas dobles, como suele hacerse con los identificadores delimitados. Los
delimitadores y las comas contribuyen a la longitud del registro especial.

Este registro especial se aplica a sentencias tanto estticas como dinmicas.

El valor inicial de CURRENT PACKAGE PATH en una funcin, un mtodo o un


procedimiento definido por el usuario se hereda de la aplicacin que lo invoca. En
otros contextos, el valor inicial de CURRENT PACKAGE PATH es una serie vaca.
El valor slo es una lista de esquemas si el proceso de la aplicacin ha especificado
de forma explcita una lista de esquemas mediante la sentencia SET CURRENT
PACKAGE PATH.

Ejemplos:

Una aplicacin utilizar varios paquetes SQLJ(en los esquemas SQLJ1 y SQLJ2) y
paquete JDBC (en el esquema DB2JAVA). El registro especial CURRENT PACKAGE
PATH debe establecerse para comprobar SQLJ1, SQLJ2 y DB2JAVA, en este orden.
SET CURRENT PACKAGE PATH = "SQLJ1", "SQLJ2", "DB2JAVA"

La variable del lenguaje principal HVPKLIST debe establecerse en el valor


almacenado actualmente en el registro especial CURRENT PACKAGE PATH.
VALUES CURRENT PACKAGE PATH INTO :HVPKLIST

Informacin relacionada:
v CURRENT PATH en la pgina 160
v Sentencia SET CURRENT PACKAGE PATH en Consulta de SQL, Volumen 2

Captulo 2. Elementos del lenguaje 159


CURRENT PATH

CURRENT PATH
El registro especial CURRENT PATH (o CURRENT_PATH) especifica un valor
VARCHAR(254) que identifica la va de acceso de SQL que se ha de utilizar para
resolver las referencias de funciones y las referencias de tipos de datos de
sentencias de SQL preparadas dinmicamente. CURRENT FUNCTION PATH es
sinnimo de CURRENT PATH. CURRENT PATH tambin se utiliza para resolver
las referencias de procedimientos almacenados en sentencias CALL. El valor inicial
es el valor por omisin que se especifica ms abajo. Para SQL esttico, la opcin de
vinculacin FUNCPATH proporciona una va de acceso de SQL que se utiliza para
la resolucin de funciones y tipos de datos.

El registro especial CURRENT PATH contiene una lista de uno o varios nombres
de esquema escritos entre comillas dobles y separados por comas. Por ejemplo, una
va de acceso de SQL que especifica que el gestor de bases de datos primero debe
mirar en el esquema FERMAT, luego en el esquema XGRAPHIC y por ltimo en el
esquema SYSIBM se devuelve en el registro especial CURRENT PATH de la
siguiente manera:
"FERMAT","XGRAPHIC","SYSIBM"

El valor por omisin es SYSIBM,SYSFUN,SYSPROC,SYSIBMADM,X,


donde X es el valor del registro especial USER, delimitado por comillas dobles. El
valor puede cambiarse invocando la sentencia SET CURRENT PATH. No es
necesario especificar el esquema SYSIBM. Si no se incluye en la va de acceso de
SQL, se supone implcitamente que es el primer esquema. SYSIBM no toma
ninguno de los 254 bytes si se asume implcitamente.

Un tipo de datos que no est calificado con un nombre de esquema se calificar


implcitamente con el primer esquema de la va de acceso de SQL que contenga un
tipo de datos con el mismo nombre no calificado. Existen excepciones a esta regla,
como se indica en las descripciones de las sentencias siguientes: CREATE
DISTINCT TYPE, CREATE FUNCTION, COMMENT y DROP.

Ejemplo: Utilizando la vista de catlogo SYSCAT.VIEWS, busque todas las vistas


que se hayan creado con el mismo valor que el valor actual del registro especial
CURRENT PATH.
SELECT VIEWNAME, VIEWSCHEMA FROM SYSCAT.VIEWS
WHERE FUNC_PATH = CURRENT PATH

Informacin relacionada:
v Funciones en la pgina 172
v Sentencia SET PATH en Consulta de SQL, Volumen 2

160 Consulta de SQL - Volumen 1


CURRENT QUERY OPTIMIZATION

CURRENT QUERY OPTIMIZATION


El registro especial CURRENT QUERY OPTIMIZATION especifica un valor
INTEGER que controla la clase de optimizacin de consulta que realiza el gestor
de bases de datos al vincular sentencias de SQL dinmico. La opcin de
vinculacin QUERYOPT controla la clase de optimizacin de consulta para las
sentencias de SQL esttico. Los valores posibles oscilan entre 0 y 9. Por ejemplo, si
la clase de optimizacin de consulta se establece en 0 (optimizacin mnima), el
valor del registro especial es 0. El valor por omisin est determinado por el
parmetro de configuracin de la base de datos dft_queryopt. El valor puede
cambiarse invocando la sentencia SET CURRENT QUERY OPTIMIZATION.

Ejemplo: Utilizando la vista de catlogo SYSCAT.PACKAGES, busque todos los


planes que se han vinculado con el mismo valor que el valor actual del registro
especial CURRENT QUERY OPTIMIZATION.
SELECT PKGNAME, PKGSCHEMA FROM SYSCAT.PACKAGES
WHERE QUERYOPT = CURRENT QUERY OPTIMIZATION

Informacin relacionada:
v Sentencia SET CURRENT QUERY OPTIMIZATION en Consulta de SQL,
Volumen 2

Captulo 2. Elementos del lenguaje 161


CURRENT REFRESH AGE

CURRENT REFRESH AGE


El registro especial CURRENT REFRESH AGE especifica un valor de duracin de
indicacin de fecha y hora con un tipo de datos de DECIMAL(20,6). Es la duracin
mxima desde que se produjo un suceso de indicacin de fecha y hora concreto en
un objeto de datos de la antememoria (por ejemplo, una sentencia REFRESH
TABLE procesada en una tabla de consultas materializadas REFRESH DEFERRED
mantenida por el sistema) de forma que el objeto de datos de la antememoria
pueda utilizarse para optimizar el proceso de la consulta. Si CURRENT REFRESH
AGE tiene un valor de 99 999 999 999 999 y la clase de optimizacin de la consulta
es 5 o superior, los tipos de tablas especificadas en CURRENT MAINTAINED
TABLE TYPES FOR OPTIMIZATION se tienen en cuenta al optimizar el proceso de
consulta de SQL dinmico.

El valor de CURRENT REFRESH debe ser 0 99 999 999 999 999. El valor inicial es
0. El valor puede cambiarse invocando la sentencia SET CURRENT REFRESH
AGE.

Informacin relacionada:
v Sentencia SET CURRENT REFRESH AGE en Consulta de SQL, Volumen 2

162 Consulta de SQL - Volumen 1


CURRENT SCHEMA

CURRENT SCHEMA
El registro especial CURRENT SCHEMA (o CURRENT_SCHEMA) especifica un
valor VARCHAR(128) que identifica el nombre de esquema utilizado para calificar
las referencias a objetos de base de datos, donde corresponda, en sentencias de
SQL preparadas dinmicamente. Para mantener la compatibilidad con DB2 para
OS/390, se puede especificar CURRENT SQLID (o CURRENT_SQLID) en lugar de
CURRENT SCHEMA.

El valor inicial de CURRENT SCHEMA es el ID de autorizacin del usuario de la


sesin actual. El valor puede cambiarse invocando la sentencia SET SCHEMA.

La opcin de vinculacin QUALIFIER controla el nombre de esquema utilizado


para calificar las referencias a objetos de base de datos, donde corresponda, para
sentencias de SQL esttico.

Ejemplo: Establezca el esquema para la calificacin de objetos en 'D123'.


SET CURRENT SCHEMA = 'D123'

Captulo 2. Elementos del lenguaje 163


CURRENT SERVER

CURRENT SERVER
El registro especial CURRENT SERVER (o CURRENT_SERVER) especifica un valor
VARCHAR(18) que identifica el servidor de aplicaciones actual. El registro contiene
el nombre real del servidor de aplicaciones, no un seudnimo.

Es posible cambiar CURRENT SERVER mediante la sentencia CONNECT, pero


slo bajo ciertas condiciones.

Cuando se utiliza en una sentencia de SQL incluida en una rutina, CURRENT


SERVER no se hereda de la sentencia que la invoca.

Ejemplo: Establezca la variable del lenguaje principal APPL_SERVE (VARCHAR(18))


en el nombre del servidor de aplicaciones al que est conectada la aplicacin.
VALUES CURRENT SERVER INTO :APPL_SERVE

Informacin relacionada:
v Sentencia CONNECT (Tipo 1) en Consulta de SQL, Volumen 2

164 Consulta de SQL - Volumen 1


CURRENT TIME

CURRENT TIME
El registro especial CURRENT TIME (o CURRENT_TIME) especifica una hora
basada en la lectura del reloj cuando se ejecuta la sentencia de SQL en el servidor
de aplicaciones. Si este registro especial se utiliza ms de una vez en la misma
sentencia de SQL o bien con CURRENT DATE o CURRENT TIMESTAMP en una
sola sentencia, todos los valores se basan en la misma lectura del reloj.

Cuando se utiliza en una sentencia de SQL incluida en una rutina, CURRENT


TIME no se hereda de la sentencia que la invoca.

En un sistema federado, CURRENT TIME se puede utilizar en una consulta


destinada a fuentes de datos. Cuando se procesa la consulta, la hora devuelta se
obtendr del registro CURRENT TIME del servidor federado, no de las fuentes de
datos.

Ejemplo: Utilizando la tabla CL_SCHED, seleccione todas las clases (CLASS_CODE)


que empiezan (STARTING) ms tarde hoy. Las clases de hoy tienen un valor 3 en
la columna DAY.
SELECT CLASS_CODE FROM CL_SCHED
WHERE STARTING > CURRENT TIME AND DAY = 3

Captulo 2. Elementos del lenguaje 165


CURRENT TIMESTAMP

CURRENT TIMESTAMP
El registro especial CURRENT TIMESTAMP (o CURRENT_TIMESTAMP) especifica
una indicacin de fecha y hora basada en la lectura del reloj cuando se ejecuta la
sentencia de SQL en el servidor de aplicaciones. Si este registro especial se utiliza
ms de una vez en la misma sentencia de SQL o bien con CURRENT DATE o
CURRENT TIME en una sola sentencia, todos los valores se basan en la misma
lectura del reloj.

Cuando se utiliza en una sentencia de SQL incluida en una rutina, CURRENT


TIMESTAMP no se hereda de la sentencia que la invoca.

En un sistema federado, CURRENT TIMESTAMP se puede utilizar en una consulta


destinada a fuentes de datos. Cuando se procesa la consulta, la indicacin de fecha
y hora se obtendr del registro CURRENT TIMESTAMP del servidor federado, no
de las fuentes de datos.

Ejemplo: Inserte una fila en la tabla IN_TRAY. El valor de la columna RECEIVED


mostrar la indicacin de fecha y hora en la que se ha aadido la fila. Los valores
de las otras tres columnas se obtienen de las variables del lenguaje principal SRC
(char(8)), SUB (char(64)) y TXT (VARCHAR(200)).
INSERT INTO IN_TRAY
VALUES (CURRENT TIMESTAMP, :SRC, :SUB, :TXT)

166 Consulta de SQL - Volumen 1


CURRENT TIMEZONE

CURRENT TIMEZONE
El registro especial CURRENT TIMEZONE (o CURRENT_TIMEZONE) especifica la
diferencia entre UTC (Hora coordinada universal, conocida anteriormente como
GMT) y la hora local del servidor de aplicaciones. La diferencia se representa por
un perodo de tiempo (un nmero decimal cuyos dos primeros dgitos
corresponden a las horas, los dos siguientes a los minutos y los dos ltimos a los
segundos). El nmero de horas est entre -24 y 24, exclusive. Al restar CURRENT
TIMEZONE de la hora local se convierte esa hora a UTC. La hora se calcula a
partir de la hora del sistema operativo en el momento en que se ejecuta la
sentencia de SQL. (El valor de CURRENT TIMEZONE se determina a partir de las
funciones de tiempo de ejecucin de C).

El registro especial CURRENT TIMEZONE se puede utilizar all donde se utilice


una expresin de tipo de datos DECIMAL(6,0); por ejemplo, en operaciones
aritmticas de hora e indicacin de fecha y hora.

Cuando se utiliza en una sentencia de SQL incluida en una rutina, CURRENT


TIMEZONE no se hereda de la sentencia que la invoca.

Ejemplo: Inserte un registro en la tabla IN_TRAY utilizando una indicacin de fecha


y hora UTC para la columna RECEIVED.
INSERT INTO IN_TRAY VALUES (
CURRENT TIMESTAMP - CURRENT TIMEZONE,
:source,
:subject,
:notetext )

Captulo 2. Elementos del lenguaje 167


CURRENT USER

CURRENT USER
El registro especial CURRENT USER (o CURRENT_USER) especifica el ID de
autorizacin que se va a utilizar para autorizacin de sentencia. Para sentencias de
SQL esttico, el valor representa el ID de autorizacin que se utiliz cuando se
vincul el paquete. Para sentencias de SQL dinmico, el valor es el mismo que el
valor del registro especial SESSION_USER para paquetes vinculados con la opcin
de vinculacin DYNAMICRULES(RUN). El tipo de datos del registro es
VARCHAR(128).

Ejemplo: Seleccione nombres de tablas cuyo esquema coincida con el valor del
registro especial CURRENT USER.
SELECT TABNAME FROM SYSCAT.TABLES
WHERE TABSCHEMA = CURRENT USER AND TYPE = T

Si esta sentencia se ejecuta como una sentencia de SQL esttico, devuelve las tablas
cuyo nombre de esquema coincide con el vinculador del paquete que incluye la
sentencia. Si esta sentencia se ejecuta como una sentencia de SQL dinmico,
devuelve las tablas cuyo nombre de esquema coincide con el valor actual del
registro especial SESSION_USER.

168 Consulta de SQL - Volumen 1


SESSION_USER

SESSION_USER
El registro especial SESSION_USER especifica el ID de autorizacin que se debe
utilizar para la sesin actual. El valor de este registro se utiliza para la
comprobacin de autorizacin de sentencias de SQL dinmico cuando el
comportamiento de ejecucin DYNAMICRULES est en vigor para el paquete. El
tipo de datos del registro es VARCHAR(128).

El valor inicial de SESSION_USER para una nueva conexin es el mismo que el


valor del registro especial SYSTEM_USER. Su valor se puede modificar invocando
la sentencia SET SESSION AUTHORIZATION.

SESSION_USER es sinnimo del registro especial USER.

Ejemplo: Determine qu rutinas se pueden ejecutar utilizando SQL dinmico.


Supongamos que el comportamiento de ejecucin DYNAMICRULES est en vigor
para el paquete que emitir la sentencia de SQL dinmico que invoca la rutina.
SELECT SCHEMA, SPECIFICNAME FROM SYSCAT.ROUTINEAUTH
WHERE GRANTEE = SESSION_USER
AND EXECUTEAUTH IN (Y, G)

Informacin relacionada:
v Sentencia SET SESSION AUTHORIZATION en Consulta de SQL, Volumen 2

Captulo 2. Elementos del lenguaje 169


SYSTEM_USER

SYSTEM_USER
El registro especial SYSTEM_USER especifica el ID de autorizacin del usuario que
se ha conectado a la base de datos. El valor de este registro slo se puede
modificar conectndose como un usuario con otro ID de autorizacin. El tipo de
datos del registro es VARCHAR(128).

Consulte Ejemplo en la descripcin de la sentencia SET SESSION


AUTHORIZATION.

Informacin relacionada:
v Sentencia SET SESSION AUTHORIZATION en Consulta de SQL, Volumen 2

170 Consulta de SQL - Volumen 1


USER

USER
El registro especial USER especifica el ID de autorizacin de tiempo de ejecucin
que se pasa al gestor de bases de datos cuando se inicia una aplicacin en una
base de datos. El tipo de datos del registro es VARCHAR(128).

Cuando se utiliza en una sentencia de SQL incluida en una rutina, USER no se


hereda de la sentencia que lo invoca.

Ejemplo: Seleccione todas las notas de la tabla IN_TRAY que el usuario haya
colocado ah.
SELECT * FROM IN_TRAY
WHERE SOURCE = USER

Captulo 2. Elementos del lenguaje 171


Funciones

Funciones
Una funcin es una operacin denotada por un nombre de funcin seguido por uno
o ms operandos que se incluyen entre parntesis. Por ejemplo, se pueden pasar a
la funcin TIMESTAMP valores de datos de entrada del tipo DATE y TIME y el
resultado ser TIMESTAMP. Las funciones pueden estar incorporadas o puede
definirlas el usuario.
v Con el gestor de bases de datos se proporcionan funciones incorporadas.
Devuelven un solo valor del resultado y se identifican como parte del esquema
SYSIBM. Entre estas funciones se incluyen funciones de columna (por ejemplo,
AVG), funciones con operadores (por ejemplo, +) y funciones de conversin (por
ejemplo, DECIMAL).
v Las funciones definidas por el usuario son funciones que estn registradas en una
base de datos de SYSCAT.ROUTINES (utilizando la sentencia CREATE
FUNCTION). Estas funciones nunca forman parte del esquema SYSIBM. El
gestor de bases de datos proporciona un conjunto de estas funciones en un
esquema denominado SYSFUN.
Las funciones definidas por el usuario amplan las posibilidades del sistema de
bases de datos aadiendo definiciones de funciones (proporcionadas por
usuarios o proveedores) que pueden aplicarse en el propio ncleo de la base de
datos. La ampliacin de las funciones de la base de datos permite que la base de
datos explote las mismas funciones en su ncleo que las que utiliza una
aplicacin, proporcionando ms sinergia entre la aplicacin y la base de datos.

Funciones definidas por el usuario externas, de SQL y


derivadas
Una funcin definida por el usuario puede ser una funcin externa, una funcin de
SQL o una funcin derivada. Una funcin externa se define en la base de datos con
una referencia a una biblioteca de cdigos objeto y una funcin en dicha biblioteca
que se ejecutar cuando se invoque la funcin. Las funciones externas no pueden
ser funciones de columna. Una funcin de SQL se define para la base de datos
utilizando solamente la sentencia RETURN de SQL. Puede devolver un valor
escalar, una fila o una tabla. Las funciones de SQL no pueden ser funciones de
columna. Una funcin derivada se define para la base de datos con una referencia a
otra funcin incorporada o definida por el usuario que ya se conoce en la base de
datos. Las funciones derivadas pueden ser funciones escalares o funciones de
columna. Son tiles para dar soporte a funciones existentes con tipos definidos por
el usuario.

Funciones definidas por el usuario escalares, de columna, de


fila y de tabla
Cada funcin definida por el usuario tambin se clasifica como funcin escalar, de
columna o de tabla. Una funcin escalar es una funcin que devuelve una respuesta
de un solo valor cada vez que se invoca. Por ejemplo, la funcin incorporada
SUBSTR() es una funcin escalar. Las UDF escalares pueden ser externas o
derivadas.

Una funcin de columna es la que recibe un conjunto de valores similares (una


columna) y devuelve una respuesta de un solo valor. A veces tambin se
denominan funciones de totales en DB2. Un ejemplo de una funcin de columna es
la funcin incorporada AVG(). Un UDF de columna externa no puede definirse en
DB2, pero un UDF de columna, cuyo origen se encuentra en una de las funciones
de columna incorporadas, s puede definirse. Es til para tipos diferenciados. Por

172 Consulta de SQL - Volumen 1


Funciones definidas por el usuario escalares, de columna, de fila y de tabla

ejemplo, si est definido un tipo diferenciado SHOESIZE con un tipo base


INTEGER, se podra definir una UDF AVG(SHOESIZE), derivada de la funcin
incorporada AVG(INTEGER), que sera una funcin de columna.

Una funcin de fila es una funcin que devuelve una fila de valores. Se puede
utilizar slo como funcin de transformacin, que correlaciona valores de atributos
de un tipo estructurado con valores de una fila. Las funciones de fila deben estar
definidas como funciones de SQL.

Una funcin de tabla es una funcin que devuelve una tabla a la sentencia de SQL
donde se invoca la funcin. Slo se puede hacer referencia a la funcin en la
clusula FROM de una sentencia SELECT. Una funcin as puede utilizarse para
aplicar la potencia de proceso del lenguaje SQL a datos que no son de o para DB2
convertir tales datos a una tabla DB2. Esta funcin podra, por ejemplo, tomar un
archivo y convertirlo en una tabla, tomar muestras de datos de la Web y
disponerlos en forma de tabla o acceder a una base de datos Lotus Notes y
devolver informacin sobre mensajes de correo, tal como la fecha, el remitente y el
texto del mensaje. Esta informacin puede unirse a otras tablas de la base de datos.
Una funcin de tabla se puede definir como una funcin externa o como una
funcin de SQL. (Una funcin de tabla no puede ser una funcin derivada).

Signaturas de funcin
Una funcin se identifica por su esquema, un nombre de funcin el nmero de
parmetros y los tipos de datos de sus parmetros. Esto se denomina signatura de
funcin, que debe ser exclusiva en la base de datos. Varias funciones pueden tener
el mismo nombre dentro de un esquema, siempre que el nmero de parmetros o
bien los tipos de datos de los parmetros sean diferentes. Un nombre de funcin
para el que existen mltiples instancias de funcin se llama funcin sobrecargada.
Un nombre de funcin puede estar sobrecargado dentro de un esquema, en cuyo
caso hay ms de una funcin con el mismo nombre en el esquema. Estas funciones
deben tener tipos de parmetros distintos. Un nombre de funcin tambin puede
estar sobrecargado en una va de acceso de SQL, en cuyo caso hay ms de una
funcin con el mismo nombre en la va de acceso. Estas funciones no es necesario
que tengan tipos de parmetros distintos.

Una funcin se puede invocar haciendo referencia (en un contexto que lo permita)
a su nombre calificado (esquema y nombre de funcin), seguido por la lista de
argumentos, entre parntesis. Tambin se puede invocar sin especificar el nombre
del esquema, obteniendo como resultado una serie de posibles funciones de
diferentes esquemas que tienen los mismos parmetros o bien parmetros
aceptables. En este caso, la va de acceso de SQL se utiliza como ayuda para resolver
la funcin. La va de acceso de SQL es una lista de esquemas que se examinan
para identificar una funcin con el mismo nombre, nmero de parmetros y tipos
de datos aceptables. Para las sentencias de SQL esttico, la va de acceso de SQL se
especifica utilizando la opcin de vinculacin FUNCPATH. Para las sentencias de
SQL dinmico, la va de acceso de SQL es el valor del registro especial CURRENT
PATH.

El acceso a las funciones se controla mediante el privilegio EXECUTE. Se utilizan


sentencias GRANT y REVOKE para especificar quin puede o no puede ejecutar
una funcin o conjunto de funciones determinadas. Se necesita el privilegio
EXECUTE (o la autoridad DBADM) para invocar una funcin. La persona que
define la funcin recibe el privilegio EXECUTE de forma automtica. Si se trata de
una funcin externa o de una funcin de SQL que tienen la opcin WITH GRANT
en todos los objetos subyacentes, la persona que la define tambin recibe la opcin

Captulo 2. Elementos del lenguaje 173


Signaturas de funcin

WITH GRANT con el privilegio EXECUTE sobre la funcin. La persona que la


define (o SYSADM o DBADM) debe otorgarlo entonces al usuario que desee
invocar la funcin desde una sentencia de SQL o hacer referencia a la misma en
una sentencia de DDL (como, por ejemplo, CREATE VIEW, CREATE TRIGGER o al
definir una restriccin) o crear otra funcin derivada de esta funcin. Si no se
otorga a un usuario el privilegio EXECUTE, el algoritmo de resolucin de funcin
no tendr en cuenta la funcin aunque sta se corresponda mucho mejor. Las
funciones incorporadas (funciones SYSIBM) y las funciones SYSFUN tienen
otorgado el privilegio EXECUTE en PUBLIC de forma implcita.

Resolucin de funcin
Despus de invocar una funcin, el gestor de bases de datos debe decidir cul de
las posibles funciones con el mismo nombre es la ms apropiada . Esto incluye la
resolucin de funciones incorporadas y definidas por el usuario.

Un argumento es un valor que se pasa a una funcin en una invocacin. Cuando se


invoca una funcin en SQL, se pasa una lista de cero o ms argumentos. Son
argumentos posicionales en tanto que la semntica de dichos argumentos viene
determinada por su posicin en la lista de argumentos. Un parmetro es una
definicin formal de una entrada para una funcin. Cuando una funcin est
definida en la base de datos, ya sea internamente (una funcin incorporada) o por
el usuario (una funcin definida por el usuario), se especifican sus parmetros
(cero o ms) y el orden de sus definiciones define su posicin y su semntica. Por
lo tanto, cada parmetro es una entrada posicional particular de una funcin. En la
invocacin, un argumento corresponde a un parmetro determinado en virtud a la
posicin que ste ocupe en la lista de argumentos.

El gestor de bases de datos utiliza el nombre de la funcin que se facilita en la


invocacin, el privilegio EXECUTE sobre la funcin, el nmero y los tipos de datos
de los argumentos, todas las funciones que tienen el mismo nombre en la va de
acceso de SQL y los tipos de datos de sus parmetros correspondientes como
punto de referencia para decidir si se selecciona o no una funcin. A continuacin
se muestran los resultados posibles del proceso de decisin:
v Una funcin determinada se considera como la mejor. Por ejemplo, con las
funciones denominadas RISK en el esquema TEST con las signaturas definidas
como:
TEST.RISK(INTEGER)
TEST.RISK(DOUBLE)

una va de acceso de SQL que incluya el esquema TEST y la siguiente referencia


de funcin (donde DB es una columna DOUBLE):
SELECT ... RISK(DB) ...

se elegir el segundo RISK.


La siguiente referencia de funcin (donde SI es una columna SMALLINT):
SELECT ... RISK(SI) ...

elegir el primer RISK, ya que SMALLINT se puede promover a INTEGER y es


una coincidencia mejor que DOUBLE, que se encuentra ms abajo en la lista de
prioridad.
Cuando se tienen en cuenta argumentos que son tipos estructurados, la lista de
prioridad incluye los supertipos del tipo esttico del argumento. La funcin que
mejor se ajusta es la definida con el parmetro de supertipo ms cercano, en la
jerarqua de tipos estructurados, al tipo esttico del argumento de funcin.

174 Consulta de SQL - Volumen 1


Resolucin de funcin

v Ninguna funcin se considera la mejor. Tomando como ejemplo las dos mismas
funciones del caso anterior y la siguiente referencia de funcin (donde C es una
columna CHAR(5)):
SELECT ... RISK(C) ...

el argumento es incoherente con el parmetro de las dos funciones RISK.


v Una funcin determinada se selecciona segn la va de acceso de SQL y el
nmero de argumentos, as como sus tipos de datos, que se han pasado en la
invocacin. Por ejemplo, dadas unas funciones denominadas RANDOM con las
signaturas definidas como:
TEST.RANDOM(INTEGER)
PROD.RANDOM(INTEGER)

y una va de acceso de SQL de:


"TEST","PROD"

la siguiente referencia de funcin:


SELECT ... RANDOM(432) ...

elegir TEST.RANDOM, ya que las dos funciones RANDOM son coincidencias


igualmente buenas (coincidencias exactas en este caso particular) y ambos
esquemas estn en la va de acceso, pero TEST precede a PROD en la va de
acceso de SQL.

Determinacin de la mejor opcin


La comparacin de los tipos de datos de los argumentos con los tipos de datos
definidos de los parmetros de las funciones en cuestin, constituye la base
primordial para tomar la decisin de qu funcin de un grupo de funciones con el
mismo nombre se considera ms adecuada. Tenga en cuenta que los tipos de
datos de los resultados de las funciones o el tipo de funcin (de columna, escalar o
de tabla) en cuestin no se tiene en cuenta en esta determinacin.

La resolucin de las funciones se realiza siguiendo los pasos siguientes:


1. En primer lugar, busque todas aquellas funciones del catlogo
(SYSCAT.ROUTINES) y funciones incorporadas que cumplan las condiciones
siguientes:
v En las invocaciones donde se ha especificado el nombre de esquema (una
referencia calificada), el nombre de esquema y el nombre de funcin
coinciden con el nombre de invocacin.
v En las invocaciones donde no se ha especificado el nombre de esquema (una
referencia no calificada), el nombre de funcin coincide con el nombre de
invocacin y tiene un nombre de esquema que coincide con uno de los
esquemas de la va de acceso de SQL.
v La persona que la invoca tiene el privilegio EXECUTE sobre la funcin.
v El nmero de parmetros definidos coincide con la invocacin.
v Cada argumento de invocacin coincide con el tipo de datos del parmetro
definido correspondiente de la funcin o es promocionable al mismo.
2. A continuacin, examine de izquierda a derecha cada argumento de la
invocacin de la funcin. Para cada argumento, elimine todas las funciones que
no sean la mejor coincidencia para ese argumento. La mejor opcin para un
argumento dado es el primer tipo de datos que aparece en la lista de prioridad
correspondiente al tipo de datos del argumento para el cual existe una funcin
con un parmetro de ese tipo de datos. En esta comparacin no se tienen en
cuenta las longitudes, precisiones y escalas ni el atributo FOR BIT DATA. Por
Captulo 2. Elementos del lenguaje 175
Determinacin de la mejor opcin

ejemplo, un argumento DECIMAL(9,1) se considera una coincidencia exacta


para un parmetro DECIMAL(6,5) mientras que un argumento VARCHAR(19)
es una coincidencia exacta para un parmetro VARCHAR(6).
La mejor coincidencia para un argumento de tipo estructurado definido por el
usuario es el propio argumento; la siguiente mejor coincidencia es el supertipo
inmediato, y as sucesivamente para cada supertipo del argumento. Observe
que slo se tiene en cuenta el tipo esttico (tipo declarado) del argumento de
tipo estructurado, no el tipo dinmico (tipo ms especfico).
3. Si despus del paso 2 queda ms de una funcin elegible, todas las funciones
elegibles restantes deben tener signaturas idnticas pero encontrarse en
esquemas diferentes. Elija la funcin cuyo esquema aparezca antes en la va de
acceso de SQL del usuario.
4. Si despus del paso 2 no queda ninguna funcin elegible, se devolver un error
(SQLSTATE 42884).

Consideraciones sobre las vas de acceso SQL para funciones


incorporadas
Las funciones incorporadas residen en un esquema especial denominado SYSIBM.
Hay funciones adicionales disponibles en los esquemas SYSFUN y SYSPROC que,
sin embargo, no se consideran funciones incorporadas porque se han desarrollado
como funciones definidas por el usuario y carecen de consideraciones de proceso
especiales. Los usuarios no pueden definir funciones adicionales en los esquemas
SYSIBM, SYSFUN ni SYSPROC (ni en ningn otro esquema cuyo nombre empiece
por las letras SYS).

Como ya se ha indicado, las funciones incorporadas participan en el proceso de


resolucin de las funciones exactamente como lo hacen las funciones definidas por
el usuario. Una diferencia entre ambas, desde el punto de vista de la resolucin de
funcin, es que las funciones incorporadas siempre deben tenerse en cuenta
durante la resolucin de funcin. Por este motivo, si se omite SYSIBM de los
resultados de va de acceso se asume (para la resolucin de las funciones y los
tipos de datos) que SYSIBM es el primer esquema de la va de acceso.

Por ejemplo, si la va de acceso de SQL de un usuario est definida de la siguiente


manera:
"SHAREFUN","SYSIBM","SYSFUN"

y hay una funcin LENGTH definida en el esquema SHAREFUN con el mismo


nmero y los mismos tipos de argumentos que SYSIBM.LENGTH, una referencia
no calificada a LENGTH en la sentencia de SQL de este usuario har que se
seleccione SHAREFUN.LENGTH. No obstante, si la va de acceso de SQL del
usuario est definida de la siguiente forma:
"SHAREFUN","SYSFUN"

y existe la misma funcin SHAREFUN.LENGTH, una referencia no calificada a


LENGTH en la sentencia de SQL de este usuario har que se seleccione
SYSIBM.LENGTH, ya que SYSIBM aparece implcitamente antes en la va de
acceso.

Para minimizar los posibles problemas en este rea:


v No utilice nunca los nombres de funciones incorporadas para funciones
definidas por el usuario.

176 Consulta de SQL - Volumen 1


consideraciones sobre las vas de acceso SQL para funciones incorporadas

v Si, por algn motivo, es necesario crear una funcin definida por el usuario con
el mismo nombre que una funcin incorporada, asegrese de calificar todas las
referencias a la misma.

Ejemplo de resolucin de funcin


A continuacin se muestra un ejemplo de una resolucin de funcin satisfactoria.
(Observe que no se muestran todas las palabras clave necesarias.)

Existen siete funciones ACT, en tres esquemas diferentes, registradas del modo
siguiente:
CREATE FUNCTION AUGUSTUS.ACT (CHAR(5), INT, DOUBLE) SPECIFIC ACT_1 ...
CREATE FUNCTION AUGUSTUS.ACT (INT, INT, DOUBLE) SPECIFIC ACT_2 ...
CREATE FUNCTION AUGUSTUS.ACT (INT, INT, DOUBLE, INT) SPECIFIC ACT_3 ...
CREATE FUNCTION JULIUS.ACT (INT, DOUBLE, DOUBLE) SPECIFIC ACT_4 ...
CREATE FUNCTION JULIUS.ACT (INT, INT, DOUBLE) SPECIFIC ACT_5 ...
CREATE FUNCTION JULIUS.ACT (SMALLINT, INT, DOUBLE) SPECIFIC ACT_6 ...
CREATE FUNCTION NERO.ACT (INT, INT, DEC(7,2)) SPECIFIC ACT_7 ...

La referencia de funcin es la siguiente (donde I1 e I2 son columnas INTEGER y D


es una columna DECIMAL):
SELECT ... ACT(I1, I2, D) ...

Suponga que la aplicacin que efecta esta referencia tiene una va de acceso de
SQL establecida como:
"JULIUS","AUGUSTUS","CAESAR"

De acuerdo con el algoritmo...


v La funcin con el nombre especfico ACT_7 se elimina como candidato, porque
el esquema NERO no est incluido en la va de acceso de SQL.
v La funcin con el nombre especfico ACT_3 se elimina como candidato, porque
tiene el nmero incorrecto de parmetros. ACT_1 y ACT_6 se eliminan porque,
en ambos casos, el primer argumento no se puede promocionar al tipo de datos
del primer parmetro.
v Como sigue habiendo ms de un candidato, los argumentos se tienen en cuenta
siguiendo un orden.
v Para el primer argumento, las funciones restantes, ACT_2, ACT_4 y ACT_5
coinciden exactamente con el tipo de argumento. No se puede pasar por alto
ninguna de las funciones; as pues, se debe examinar el argumento siguiente.
v Para este segundo argumento, ACT_2 y ACT_5 coinciden exactamente, pero no
sucede lo mismo con ACT_4, por lo cual queda descartado. Se examina el
siguiente argumento para determinar alguna diferencia entre ACT_2 y ACT_5.
v Para el tercer y ltimo argumento, ni ACT_2 ni ACT_5 coinciden exactamente
con el tipo de argumento, pero ambos son igualmente aceptables.
v Quedan dos funciones, ACT_2 y ACT_5, con signaturas de parmetros idnticas.
La criba final consiste en determinar el esquema de qu funcin aparece primero
en la va de acceso de SQL y, en base a ello, se elige ACT_5.

invocacin de funciones
Cuando ya se ha seleccionado la funcin, pueden darse todava algunos motivos
por los cuales no se pueda utilizar alguna funcin. Cada funcin est definida para
devolver un resultado con un tipo de datos concreto. Si este tipo de datos
resultante no es compatible con el contexto en el que se invoca la funcin, se
producir un error. Por ejemplo, con las funciones denominadas STEP, en esta
ocasin con tipos de datos diferentes como resultado:

Captulo 2. Elementos del lenguaje 177


Invocacin de funciones

STEP(SMALLINT) devuelve CHAR(5)


STEP(DOUBLE) devuelve INTEGER

y la referencia de funcin siguiente (donde S es una columna SMALLINT):


SELECT ... 3 + STEP(S) ...

como hay una coincidencia exacta de tipo de argumento, se elige la primera


operacin STEP. Se produce un error en la sentencia porque el tipo resultante es
CHAR(5) en lugar de un tipo numrico, tal como necesita un argumento del
operador de suma.

Otros ejemplos en los que puede ocurrir esto son los siguientes, ambos darn como
resultado un error en la sentencia:
v Se ha hecho referencia a la funcin en una clusula FROM, pero la funcin
seleccionada en el paso de resolucin de las funciones ha sido una funcin
escalar o de columna.
v El caso contrario en el que el contexto llama a una funcin escalar o de columna
y la resolucin de la funcin selecciona una funcin de tabla.

En los casos donde los argumentos de la invocacin de la funcin no coinciden


exactamente con los tipos de datos de los parmetros de la funcin seleccionada,
los argumentos se convierten al tipo de datos del parmetro durante la ejecucin,
utilizando las mismas reglas que para la asignacin a columnas. Tambin se
incluye el caso en el que la precisin, escala o longitud difiere entre el argumento y
el parmetro.

Semntica de vinculacin conservadora


Existen casos en los que las rutinas y los tipos de datos se resuelven cuando se
procesa una sentencia y el gestor de bases de datos debe poder repetir esta
resolucin. Esto sucede en:
v Sentencias en paquetes de DML esttico
v Vistas
v Activadores
v Restricciones de comprobacin
v Rutinas de SQL

En el caso de las sentencias en paquetes de DML esttico, las referencias a la rutina


y al tipo de datos se resuelven durante una operacin de vinculacin. Las
referencias a la rutina y al tipo de datos en las vistas, activadores, rutinas de SQL y
restricciones de comprobacin se resuelven cuando se crea el objeto de base de
datos.

Si la resolucin de la rutina se realiza de nuevo en alguna referencia a rutina de


estos objetos, podra cambiar de comportamiento si:
v Se ha aadido una rutina nueva con una signatura ms adecuada pero el
ejecutable real realiza operaciones distintas.
v A la persona que la ha definido se le ha otorgado el privilegio de ejecucin sobre
una rutina con una signatura ms adecuada pero el ejecutable real realiza
operaciones distintas.
Similarmente, si la resolucin se ejecuta de nuevo para cualquier tipo de datos de
estos objetos, podra cambiar el comportamiento si se ha aadido un nuevo tipo de
datos con el mismo nombre en un esquema diferente que tambin est en la va de
acceso de SQL. Para evitar esto, el gestor de bases de datos aplica la semntica de

178 Consulta de SQL - Volumen 1


Semntica de vinculacin conservadora

vinculacin conservadora cuando lo considera necesario. Esto asegura que las


referencias a la rutina y al tipo de datos se resuelvan utilizando la misma va de
acceso de SQL y el mismo conjunto de rutinas con las que se resolvi cuando se
vincul anteriormente. La indicacin de fecha y hora de creacin de las rutinas y
los tipos de datos tenidos en cuenta durante la resolucin no es posterior a la hora
en que se vincul la sentencia. (Las funciones incorporadas aadidas a partir de la
Versin 6.1 tienen una indicacin de fecha y hora de creacin basada en la hora de
creacin o migracin de la base de datos.) De esta forma, slo se tendrn en cuenta
las rutinas y los tipos de datos que se tuvieron en cuenta durante la resolucin de
la rutina y del tipo de datos cuando se proces originalmente la sentencia. Por
tanto, las rutinas y los tipos de datos creados o autorizados recientemente no se
tendrn en cuenta cuando se aplica la semntica de vinculacin conservadora.

Piense en una base de datos con dos funciones que tienen las signaturas
SCHEMA1.BAR(INTEGER) y SCHEMA2.BAR(DOUBLE). Supongamos que una va
de acceso de SQL contiene los dos esquemas, SCHEMA1 y SCHEMA2 (aunque su
orden en la va de acceso de SQL carece de importancia). A USER1 se le ha
otorgado el privilegio EXECUTE sobre la funcin SCHEMA2.BAR(DOUBLE).
Supongamos que USER1 crea una vista que llama a BAR(INT_VAL). Esta se
resolver en la funcin SCHEMA2.BAR(DOUBLE). La vista siempre utilizar
SCHEMA2.BAR(DOUBLE), aunque alguien otorgue a USER1 el privilegio
EXECUTE sobre SCHEMA1.BAR(INTEGER) despus de crear la vista.

En el caso de los paquetes de DML esttico, los paquetes se pueden volver a


vincular implcitamente o emitiendo explcitamente el mandato REBIND (o la API
correspondiente) o el mandato BIND (o la API correspondiente). La revinculacin
implcita se ejecuta siempre para resolver rutinas y tipos de datos con la semntica
de vinculacin conservadora. El mandato REBIND proporciona la posibilidad de
resolver con la semntica de vinculacin conservadora (RESOLVE
CONSERVATIVE) o resolver teniendo en cuenta las rutinas y tipos datos nuevos
(RESOLVE ANY, la opcin por omisin).

La revinculacin implcita de un paquete siempre resuelve la misma rutina.


Aunque se hay otorgado el privilegio EXECUTE sobre una rutina ms adecuada, la
rutina no se tendr en cuenta. La revinculacin explcita de un paquete puede dar
como resultado la seleccin de una rutina distinta. (Pero si se especifica RESOLVE
CONSERVATIVE, la resolucin de la rutina seguir la semntica de vinculacin
conservadora).

Si una rutina se ha especificado durante la creacin de una vista, activador,


restriccin o cuerpo de rutina SQL, la instancia concreta de la rutina que se
utilizar viene determinada por la resolucin de rutina en el momento en que se
crea el objeto. Aunque posteriormente se otorgue el privilegio EXECUTE despus
de crear el objeto, la rutina concreta que el objeto utiliza no cambiar.

Piense en una base de datos con dos funciones que tienen las signaturas
SCHEMA1.BAR(INTEGER) y SCHEMA2.BAR(DOUBLE). A USER1 se le ha
otorgado el privilegio EXECUTE sobre la funcin SCHEMA2.BAR(DOUBLE).
Supongamos que USER1 crea una vista que llama a BAR(INT_VAL). Esta se
resolver en la funcin SCHEMA2.BAR(DOUBLE). La vista siempre utilizar
SCHEMA2.BAR(DOUBLE), aunque alguien otorgue a USER1 el privilegio
EXECUTE sobre SCHEMA1.BAR(INTEGER) despus de crear la vista.

El mismo comportamiento se produce en otros objetos de la base de datos. Por


ejemplo, si un paquete se revincula de forma implcita (tal vez despus de eliminar
un ndice), el paquete har referencia a la misma rutina concreta tanto antes como

Captulo 2. Elementos del lenguaje 179


Semntica de vinculacin conservadora

despus de la revinculacin implcita. Sin embargo, la revinculacin explcito de un


paquete, puede dar como resultado la seleccin de una rutina distinta.

Informacin relacionada:
v Asignaciones y comparaciones en la pgina 117
v CURRENT PATH en la pgina 160
v Promocin de tipos de datos en la pgina 108

180 Consulta de SQL - Volumen 1


Mtodos

Mtodos
Un mtodo de base de datos de un tipo estructurado es una relacin entre un
conjunto de valores de datos de entrada y un conjunto de valores resultantes,
donde el primer valor de entrada (o argumento sujeto) tiene el mismo tipo, o es un
subtipo del tipo sujeto (tambin llamado parmetro sujeto) del mtodo. Por ejemplo,
es posible pasar valores de datos de entrada de tipo VARCHAR a un mtodo
denominado CITY, de tipo ADDRESS y el resultado ser un valor ADDRESS (o un
subtipo de ADDRESS).

Los mtodos se definen implcita o explcitamente, como parte de la definicin de


un tipo estructurado definido por el usuario.

Los mtodos definidos implcitamente se crean para cada tipo estructurado. Se


definen mtodos observadores para cada atributo del tipo estructurado. Los mtodos
observadores permiten que una aplicacin obtenga el valor de un atributo para
una instancia del tipo. Tambin se definen mtodos mutadores para cada atributo,
que permiten que una aplicacin cambie la instancia de tipo modificando el valor
de un atributo de una instancia de tipo. El mtodo CITY descrito anteriormente es
un ejemplo de mtodo mutador para el tipo ADDRESS.

Los mtodos definidos explcitamente o mtodos definidos por el usuario son mtodos
que se registran en el catlogo SYSCAT.ROUTINES de una base de datos,
utilizando una combinacin de las sentencias CREATE TYPE (o ALTER TYPE ADD
METHOD) y CREATE METHOD. Todos los mtodos definidos para un tipo
estructurado se definen en el mismo esquema que el tipo.

Los mtodos definidos por el usuario para tipos estructurados amplan la funcin
de sistema de bases de datos aadiendo definiciones de mtodo (proporcionadas
por usuarios o proveedores) que pueden aplicarse a instancias de tipo estructurado
en el ncleo de la base de datos. La definicin de los mtodos de la base de datos
permite que la base de datos explote los mismos mtodos en su ncleo que los que
utiliza una aplicacin, proporcionando ms sinergia entre la aplicacin y la base de
datos.

Mtodos definidos por el usuario externos y SQL


Un mtodo definido por el usuario puede ser externo o estar basado en una
expresin SQL. Un mtodo externo se define para la base de datos con una
referencia a una biblioteca de cdigos objeto y una funcin en dicha biblioteca que
se ejecutar cuando se invoque el mtodo. Un mtodo basado en una expresin
SQL devuelve el resultado de la expresin SQL cuando se invoca el mtodo. Tales
mtodos no necesitan ninguna biblioteca de cdigos objeto, ya que estn escritos
completamente en SQL.

Un mtodo definido por el usuario puede devolver un solo valor cada vez que se
invoca. Este valor puede ser un tipo estructurado. Un mtodo se puede definir
como preservador del tipo (utilizando SELF AS RESULT), para permitir que el tipo
dinmico del argumento sujeto sea el tipo devuelto del mtodo. Todos los mtodos
mutadores definidos implcitamente son preservadores del tipo.

Signaturas de mtodo
Un mtodo se identifica por su tipo sujeto, un nombre de mtodo, el nmero de
parmetros y los tipos de datos de sus parmetros. Esto se denomina una signatura
de mtodo y debe ser exclusiva en la base de datos.

Captulo 2. Elementos del lenguaje 181


Signaturas de mtodo

Puede existir ms de un mtodo con el mismo nombre para un tipo estructurado,


siempre que:
v El nmero de parmetros o los tipos de datos de los parmetros sean diferentes
o
v Los mtodos formen parte de la misma jerarqua de mtodos (es decir, los
mtodos estn en una relacin de alteracin temporal o alteren temporalmente el
mismo mtodo original) o
v No exista la misma signatura de funcin (utilizando el tipo sujeto o cualquiera
de sus subtipos o supertipos como primer parmetro).

Un nombre de mtodo que tiene varias instancias de mtodo se denomina mtodo


sobrecargado. Un nombre de mtodo puede estar sobrecargado dentro de un tipo, lo
que significa que existe ms de un mtodo de ese nombre para el tipo (todos los
cuales tienen diferentes tipos de parmetros). Un nombre de mtodo tambin
puede estar sobrecargado en la jerarqua de tipos sujeto, en cuyo caso existe ms
de un mtodo con ese nombre en la jerarqua de tipos. Estos mtodos deben tener
tipos de parmetros distintos.

Un mtodo se puede invocar haciendo referencia (en un contexto permitido) al


nombre de mtodo, precedido por una referencia a una instancia de tipo
estructurado (el argumento sujeto) y por el operador de doble punto. A
continuacin debe seguir una lista de argumentos entre parntesis. El mtodo que
se invoca realmente depende del tipo esttico del tipo sujeto, utilizando el proceso
de resolucin de mtodos descrito en la seccin siguiente. Los mtodos definidos
con WITH FUNCTION ACCESS tambin se pueden invocar utilizando la
invocacin de funciones, en cuyo caso se aplican las reglas normales para la
resolucin de la funcin.

Si la resolucin de la funcin da como resultado un mtodo definido con WITH


FUNCTION ACCESS, se procesan todos los pasos siguientes de invocacin de
mtodos.

El acceso a los mtodos se controla mediante el privilegio EXECUTE. Se utilizan


sentencias GRANT y REVOKE para especificar quin puede o no puede ejecutar
un mtodo o conjunto de mtodos determinado. Se necesita el privilegio EXECUTE
(o la autoridad DBADM) para invocar un mtodo. La persona que define el
mtodo recibe el privilegio EXECUTE de forma automtica. Si se trata de un
mtodo externo o un mtodo SQL que tienen la opcin WITH GRANT en todos los
objetos subyacentes, la persona que lo define tambin recibe la opcin WITH
GRANT con el privilegio EXECUTE sobre el mtodo. La persona que lo define (o
SYSADM o DBADM) debe otorgarlo entonces al usuario que desee invocar el
mtodo desde una sentencia de SQL o hacer referencia al mismo en una sentencia
de DDL (como, por ejemplo, CREATE VIEW, CREATE TRIGGER o al definir una
restriccin). Si no se otorga a un usuario el privilegio EXECUTE, el algoritmo de
resolucin de mtodos no tendr en cuenta el mtodo aunque ste se corresponda
mucho mejor.

Resolucin de mtodos
Despus de invocar un mtodo, el gestor de bases de datos debe decidir cul de
los posibles mtodos con el mismo nombre es el ms apropiado . Las funciones
(incorporadas o definidas por el usuario) no se tienen en cuenta durante la
resolucin del mtodo.

Un argumento es un valor que se pasa a un mtodo en una invocacin. Cuando un


mtodo se invoca en SQL, se le pasa el argumento sujeto (de algn tipo

182 Consulta de SQL - Volumen 1


Resolucin de mtodos

estructurado) y opcionalmente una lista de argumentos. Son argumentos


posicionales en tanto que la semntica de dichos argumentos viene determinada
por su posicin en la lista de argumentos. Un parmetro es una definicin formal de
una entrada en un mtodo. Cuando se define un mtodo para la base de datos, ya
sea implcitamente (mtodo generado por el sistema para un tipo) o por un
usuario (mtodo definido por el usuario), se especifican sus parmetros (con el
parmetro sujeto como primer parmetro) y el orden de sus definiciones determina
sus posiciones y su semntica. Por tanto, cada parmetro es una entrada posicional
determinada de un mtodo. En la invocacin, un argumento corresponde a un
parmetro determinado en virtud a la posicin que ste ocupe en la lista de
argumentos.

El gestor de bases de datos utiliza el nombre de mtodo proporcionado en la


invocacin, el privilegio EXECUTE sobre el mtodo, el nmero y los tipos de datos
de los argumentos, todos los mtodos que tienen el mismo nombre para el tipo
esttico del argumento sujeto y los tipos de datos de sus parmetros
correspondientes como base para decidir si selecciona o no un mtodo. A
continuacin se muestran los resultados posibles del proceso de decisin:
v Un mtodo determinado se considera que es el ms apropiado. Por ejemplo,
para los mtodos denominados RISK del tipo SITE con signaturas definidas
como:
PROXIMITY(INTEGER) FOR SITE
PROXIMITY(DOUBLE) FOR SITE

la siguiente invocacin de mtodo (donde ST es una columna SITE, DB es una


columna DOUBLE):
SELECT ST..PROXIMITY(DB) ...

se elegira el segundo PROXIMITY.


La siguiente invocacin de mtodo (donde SI es una columna SMALLINT):
SELECT ST..PROXIMITY(SI) ...

elegir el primer PROXIMITY, ya que SMALLINT se puede promover a


INTEGER y es una coincidencia mejor que DOUBLE, que se encuentra ms
abajo en la lista de prioridad.
Cuando se tienen en cuenta argumentos que son tipos estructurados, la lista de
prioridad incluye los supertipos del tipo esttico del argumento. La funcin que
mejor se ajusta es la definida con el parmetro de supertipo ms cercano, en la
jerarqua de tipos estructurados, al tipo esttico del argumento de funcin.
v Ningn mtodo se considera una opcin aceptable. Tomando como ejemplo las
dos mismas funciones del caso anterior y la siguiente referencia de funcin
(donde C es una columna CHAR(5)):
SELECT ST..PROXIMITY(C) ...

el argumento es incoherente con el parmetro de las dos funciones PROXIMITY.


v Se selecciona un mtodo determinado basndose en los mtodos de la jerarqua
de tipos y en el nmero y tipos de datos de los argumentos pasados en la
invocacin. Por ejemplo, para los mtodos denominados RISK de los tipos SITE
y DRILLSITE (un subtipo de SITE) con signaturas definidas como:
RISK(INTEGER) FOR DRILLSITE
RISK(DOUBLE) FOR SITE

y la siguiente invocacin de mtodo (donde DRST es una columna DRILLSITE,


DB es una columna DOUBLE):

Captulo 2. Elementos del lenguaje 183


Resolucin de mtodos

SELECT DRST..RISK(DB) ...

se elegir el segundo RISK, ya que DRILLSITE se puede promocionar a SITE.


La siguiente referencia a mtodo (donde SI es una columna SMALLINT):
SELECT DRST..RISK(SI) ...

elegir el primer RISK, ya que SMALLINT se puede promocionar a INTEGER,


que est ms cerca en la lista de prioridad que DOUBLE, y DRILLSITE es una
opcin mejor que SITE, que es un supertipo.
Los mtodos con la misma jerarqua de tipos no pueden tener las mismas
signaturas, teniendo en cuenta parmetros distintos al parmetro sujeto.

Determinacin de la mejor opcin


La comparacin de los tipos de datos de los argumentos con los tipos de datos
definidos de los parmetros de los mtodos en cuestin, constituye la base
primordial para decidir qu mtodo de un grupo de mtodos con el mismo
nombre se considera el ms apropiado. Observe que los tipos de datos de los
resultados de los mtodos en cuestin no intervienen en esa decisin.

La resolucin del mtodo se realiza siguiendo los pasos siguientes:


1. En primer lugar, busque todos los mtodos del catlogo (SYSCAT.ROUTINES)
que cumplan las condiciones siguientes:
v El nombre del mtodo coincide con el nombre de invocacin, y el parmetro
sujeto es el mismo tipo o es un supertipo del tipo esttico del argumento
sujeto.
v La persona que lo invoca tiene el privilegio EXECUTE sobre el mtodo.
v El nmero de parmetros definidos coincide con la invocacin.
v Cada argumento de invocacin coincide con el tipo de datos del parmetro
definido correspondiente del mtodo o es promocionable a ese tipo.
2. A continuacin, examine de izquierda a derecha cada argumento de la
invocacin del mtodo. El argumento situado ms a la izquierda (y por tanto el
primer argumento) es el parmetro SELF implcito. Por ejemplo, un mtodo
definido para el tipo ADDRESS_T tiene un primer parmetro implcito de tipo
ADDRESS_T. Para cada argumento, elimine todas las funciones que no sean la
mejor coincidencia para ese argumento. La mejor opcin para un argumento
dado es el primer tipo de datos que aparece en la lista de prioridad
correspondiente al tipo de datos del argumento para el cual existe una funcin
con un parmetro de ese tipo de datos. La longitud, la precisin, la escala y el
atributo FOR BIT DATA no se tienen en cuenta en esta comparacin. Por
ejemplo, un argumento DECIMAL(9,1) se considera una coincidencia exacta
para un parmetro DECIMAL(6,5) mientras que un argumento VARCHAR(19)
es una coincidencia exacta para un parmetro VARCHAR(6).
La mejor coincidencia para un argumento de tipo estructurado definido por el
usuario es el propio argumento; la siguiente mejor coincidencia es el supertipo
inmediato, y as sucesivamente para cada supertipo del argumento. Observe
que slo se tiene en cuenta el tipo esttico (tipo declarado) del argumento de
tipo estructurado, no el tipo dinmico (tipo ms especfico).
3. Como mximo, despus del paso 2 queda un mtodo elegible. Este es el
mtodo que se elige.
4. Si despus del paso 2 no queda ningn mtodo elegible, se produce un error
(SQLSTATE 42884).

184 Consulta de SQL - Volumen 1


Ejemplo de resolucin de mtodo

Ejemplo de resolucin de mtodo


A continuacin se muestra un ejemplo de una resolucin de mtodo satisfactoria.

Existen siete mtodos FOO para tres tipos estructurados definidos en una jerarqua
de GOVERNOR como un subtipo de EMPEROR, como un subtipo de
HEADOFSTATE, registrados con las signaturas siguientes:
CREATE METHOD FOO (CHAR(5), INT, DOUBLE) FOR HEADOFSTATE SPECIFIC FOO_1 ...
CREATE METHOD FOO (INT, INT, DOUBLE) FOR HEADOFSTATE SPECIFIC FOO_2 ...
CREATE METHOD FOO (INT, INT, DOUBLE, INT) FOR HEADOFSTATE SPECIFIC FOO_3 ...
CREATE METHOD FOO (INT, DOUBLE, DOUBLE) FOR EMPEROR SPECIFIC FOO_4 ...
CREATE METHOD FOO (INT, INT, DOUBLE) FOR EMPEROR SPECIFIC FOO_5 ...
CREATE METHOD FOO (SMALLINT, INT, DOUBLE) FOR EMPEROR SPECIFIC FOO_6 ...
CREATE METHOD FOO (INT, INT, DEC(7,2)) FOR GOVERNOR SPECIFIC FOO_7 ...

La referencia al mtodo es la siguiente (donde I1 e I2 son columnas INTEGER, D


es una columna DECIMAL y E es una columna EMPEROR):
SELECT E..FOO(I1, I2, D) ...

De acuerdo con el algoritmo...


v FOO_7 se elimina como candidato, porque el tipo GOVERNOR es un subtipo
(no un supertipo) de EMPEROR.
v FOO_3 se elimina como candidato, porque tiene un nmero errneo de
parmetros.
v FOO_1 y FOO_6 se eliminan porque, en ambos casos, el primer argumento (no
el argumento sujeto) no se puede promocionar al tipo de datos del primer
parmetro. Como sigue habiendo ms de un candidato, los argumentos se tienen
en cuenta siguiendo un orden.
v Para el argumento sujeto, FOO_2 es un supertipo, mientras que FOO_4 y FOO_5
coinciden con el argumento sujeto.
v Para el primer argumento, los mtodos restantes, FOO_4 y FOO_5, coinciden
exactamente con el tipo del argumento. No se puede asignar ningn mtodo y,
por tanto, se debe examinar el argumento siguiente.
v Para este segundo argumento, FOO_5 es una coincidencia exacta pero FOO_4 no
lo es, por lo cual se descarta. Esto deja FOO_5 como mtodo elegido.

Invocacin de mtodos
Una vez seleccionado el mtodo, pueden todava existir algunos motivos por los
cuales no se pueda utilizar el mtodo.

Cada mtodo est definido para devolver un resultado con un tipo de datos
especfico. Si este tipo de datos resultante no es compatible con el contexto donde
se invoca el mtodo, se produce un error. Por ejemplo, supongamos que se definen
los siguientes mtodos llamados STEP, cada uno con un tipo de datos diferentes
como resultado:
STEP(SMALLINT) FOR TYPEA RETURNS CHAR(5)
STEP(DOUBLE) FOR TYPEA RETURNS INTEGER

y la siguiente referencia a mtodo (donde S es una columna SMALLINT y TA es


una columna TYPEA):
SELECT 3 + TA..STEP(S) ...

Captulo 2. Elementos del lenguaje 185


Invocacin de mtodos

en este caso se elige el primer STEP, pues hay una coincidencia exacta del tipo del
argumento. Se produce un error en la sentencia, porque el tipo resultante es
CHAR(5) en lugar de un tipo numrico, tal como necesita un argumento del
operador de suma.

Empezando por el mtodo que se ha seleccionado, se utiliza el algoritmo descrito


en Asignacin dinmica de mtodos para crear el conjunto de mtodos
asignables durante la compilacin. En Asignacin dinmica de mtodos se
describe con exactitud el mtodo que se invoca.

Observe que cuando el mtodo seleccionado es un mtodo conservador del tipo:


v el tipo esttico resultante tras la resolucin de la funcin es el mismo que el tipo
esttico del argumento sujeto de la invocacin del mtodo
v el tipo dinmico resultante cuando se invoca el mtodo es el mismo que el tipo
dinmico del argumento sujeto de la invocacin del mtodo.
Esto puede ser un subtipo del tipo resultante especificado en la definicin del
mtodo conservador del tipo, que a su vez puede ser un supertipo del tipo
dinmico devuelto realmente cuando se procesa el mtodo.

En los casos donde los argumentos de la invocacin del mtodo no coinciden


exactamente con los tipos de datos de los parmetros del mtodo seleccionado, los
argumentos se convierten al tipo de datos del parmetro durante la ejecucin,
utilizando las mismas reglas que para la asignacin a columnas. Esto incluye el
caso en el que la precisin, escala o longitud difiere entre el argumento y el
parmetro, pero excluye el caso en el que el tipo dinmico del argumento es un
subtipo del tipo esttico del parmetro.

Asignacin dinmica de mtodos


Los mtodos proporcionan la funcionalidad y encapsulan los datos de un tipo. Un
mtodo se define para un tipo y siempre puede asociarse con este tipo. Uno de los
parmetros del mtodo es el parmetro implcito SELF. El parmetro SELF es del
tipo para el que se ha declarado el mtodo. El argumento que se pasa al
argumento SELF cuando se invoca el mtodo en una sentencia DML se denomina
sujeto.

Cuando se selecciona un mtodo utilizando la resolucin de mtodos (vea


Resolucin de mtodos en la pgina 182), o se ha especificado un mtodo en una
sentencia de DDL, este mtodo se conoce como el mtodo autorizado aplicable
ms especfico. Si el sujeto es de tipo estructurado, es posible que el mtodo tenga
uno o varios mtodos alternativos. Entonces, DB2 debe determinar a cul de estos
mtodos debe invocar, en base al tipo dinmico (tipo ms especfico) del sujeto en
tiempo de ejecucin. Esta determinacin se denomina determinacin del mtodo
asignable ms especfico. Este proceso se describe aqu.
1. En la jerarqua de mtodos, busque el mtodo original del que forme parte el
mtodo autorizado ms especfico. Se denomina el mtodo raz.
2. Cree el conjunto de mtodos asignables, que debe incluir los siguientes:
v El mtodo autorizado aplicable ms especfico.
v Cualquier mtodo que altere temporalmente el mtodo autorizado aplicable
ms especfico y que est definido para un tipo que sea un subtipo del sujeto
de esta invocacin.
3. Determine el mtodo asignable ms especfico, de la forma siguiente:

186 Consulta de SQL - Volumen 1


Asignacin dinmica de mtodos

a. Empiece con un mtodo arbitrario que sea un elemento del conjunto de


mtodos asignables y que sea un mtodo del tipo dinmico del sujeto o de
uno de sus supertipos. Es el mtodo asignable inicial ms especfico.
b. Itere por los elementos del conjunto de mtodos asignables. Para cada
mtodo: Si el mtodo est definido para uno de los subtipos adecuados del
tipo para el que est definido el mtodo asignable ms especfico y si est
definido para uno de los supertipos del tipo ms especfico del sujeto, repita
el paso 2 con este mtodo como el mtodo asignable ms especfico; de lo
contrario, siga iterando.
4. Invoque el mtodo asignable ms especfico.

Ejemplo:

Se proporcionan tres tipos: Persona, Empleado yDirector. Existe un mtodo


original ingresos, definido para Persona, que calcula los ingresos de una
persona. Por omisin, una persona es un desempleado (un nio, un jubilado, etc.).
Por lo tanto, ingresos para el tipo Persona siempre devuelve cero. Para el tipo
Empleado y para el tipo Director, deben aplicarse algoritmos distintos para
calcular los ingresos. Por lo tanto, el mtodo ingresos para el tipo Persona se
altera temporalmente en Empleado y en Director.

Cree y rellene una tabla de la manera siguiente:


CREATE TABLE aTable (id integer, personColumn Person);
INSERT INTO aTable VALUES (0, Persona()), (1, Empleado()), (2, Director());

Liste todas las personas que tengan unos ingresos mnimos de $40000:
SELECT id, persona, name
FROM aTable
WHERE persona..ingresos() >= 40000;

Utilizando la resolucin de mtodos, se selecciona el mtodo ingresos para el


tipo Persona como el mtodo autorizado aplicable ms especfico.
1. El mtodo raz es ingresos para Persona.
2. El segundo paso del algoritmo anterior se lleva a cabo para construir el
conjunto de mtodos asignables:
v Se incluye el mtodo ingresos para el tipo Persona, porque es el mtodo
autorizado aplicable ms especfico.
v Se incluye el mtodo ingresos para el tipo Empleado e ingresos para
Director, porque ambos mtodos alteran temporalmente el mtodo raz y
tanto Empleado como Director son subtipos de Persona.
Por lo tanto, el conjunto de mtodos asignables es: {ingresos para Persona,
ingresos para Empleado, ingresos para Director}.
3. Determine el mtodo asignable ms especfico:
v Para un sujeto cuyo tipo ms especfico sea Persona:
a. Deje que el mtodo asignable inicial ms especfico sea ingresos para el
tipo Persona.
b. Como no hay ningn otro mtodo en el conjunto de mtodos asignables
que est definido para un subtipo adecuado de Persona y para un
supertipo del tipo ms especfico del sujeto, ingresos para el tipo
Persona es el mtodo asignable ms especfico.
v Para un sujeto cuyo tipo ms especfico sea Empleado:
a. Deje que el mtodo asignable inicial ms especfico sea ingresos para el
tipo Persona.

Captulo 2. Elementos del lenguaje 187


Asignacin dinmica de mtodos

b. Itere por el conjunto de mtodos asignables. Como el mtodo ingresos


para el tipo Empleado est definido para un subtipo adecuado de
Persona y para un supertipo del tipo ms especfico del sujeto (Nota:
Un tipo es su propio supertipo y subtipo)el mtodo ingresos para el
tipo Empleado es una opcin mejor para el mtodo asignable ms
especfico. Repita este paso con el mtodo ingresos para el tipo
Empleado como el mtodo asignable ms especfico.
c. Como no hay ningn otro mtodo en el conjunto de mtodos asignables
que est definido para un subtipo adecuado de Empleado y para un
supertipo del tipo ms especfico del sujeto, el mtodo ingresos para el
tipo Empleado es el mtodo asignable ms especfico.
v Para un sujeto cuyo tipo ms especfico sea Director:
a. Deje que el mtodo asignable inicial ms especfico sea ingresos para el
tipo Persona.
b. Itere por el conjunto de mtodos asignables. Como el mtodo ingresos
para el tipo Director est definido para un subtipo adecuado de
Persona y para un supertipo del tipo ms especfico del sujeto (Nota:
Un tipo es su propio supertipo y subtipo), el mtodo ingresos para el
tipo Director es una opcin mejor para el mtodo asignable ms
especfico. Repita este paso con el mtodo ingresos para el tipo
Director como el mtodo asignable ms especfico.
c. Como no hay ningn otro mtodo en el conjunto de mtodos asignables
que est definido para un subtipo adecuado de Director y para un
supertipo del tipo ms especfico del sujeto, el mtodo ingresos para el
tipo Director es el mtodo asignable ms especfico.
4. Invoque el mtodo asignable ms especfico.

Informacin relacionada:
v Asignaciones y comparaciones en la pgina 117
v Promocin de tipos de datos en la pgina 108

188 Consulta de SQL - Volumen 1


Expresiones

Expresiones

Expresiones
Una expresin especifica un valor. Puede ser un valor simple, formado slo por
una constante o un nombre de columna, o puede ser ms complejo. Si se utilizan
repetidamente expresiones complejas similares, puede plantearse la utilizacin de
una funcin SQL para encapsular una expresin comn.

En una base de datos Unicode, una expresin que acepte una serie de caracteres o
grfica aceptar todo tipo de serie para el que se soporte la conversin.

expresin:

operador

 funcin
+ (expresin)
constante
nombre-columna
variable
registro-especial
(1)
(seleccin-completa-escalar)
(2)
duracin-etiquetada
(3)
expresin-case
(4)
especificacin-cast
(5)
especificacin-xmlcast
(6)
operacin-desreferencia
(7)
funcin-OLAP
(8)
invocacin-mtodo
(9)
tratamiento-subtipo
(10)
referencia-secuencia

operador:

(11)
CONCAT
/
*
+

Notas:
1 Vea Seleccin completa escalar en la pgina 196 para obtener ms
informacin.

Captulo 2. Elementos del lenguaje 189


Expresiones

2 Vea Duraciones etiquetadas en la pgina 197 para obtener ms informacin.


3 Vea Expresiones CASE en la pgina 202 para obtener ms informacin.
4 Vea Especificaciones CAST en la pgina 204 para obtener ms informacin.
5 Vea Especificaciones XMLCAST en la pgina 207 para obtener ms
informacin.
6 Vea Operaciones de desreferencia en la pgina 209 para obtener ms
informacin.
7 Vea Funciones OLAP en la pgina 211 para obtener ms informacin.
8 Vea Invocacin de mtodos en la pgina 217 para obtener ms informacin.
9 Vea Tratamiento de los subtipos en la pgina 219 para obtener ms
informacin.
10 Vea Referencia de secuencia en la pgina 220 para obtener ms
informacin.
11 || puede utilizarse como sinnimo de CONCAT.

Expresiones son operadores


Si no se utilizan operadores, el resultado de la expresin es el valor especificado.

Ejemplos:
SALARY:SALARYSALARYMAX(SALARY)

Expresiones con el operador de concatenacin


El operador de concatenacin (CONCAT) enlaza dos operandos de serie para
formar una expresin de serie.

Los operandos de la concatenacin deben ser series compatibles. Es preciso tener


en cuenta que una serie binaria no se puede concatenar con una serie de caracteres,
incluso las que se definen como FOR BIT DATA (SQLSTATE 42884).

En una base de datos Unicode, una concatenacin que implique operandos de


series de caracteres y operandos de series grficas convertir primero los
operandos de caracteres en operandos grficos. Observe que, en una base de datos
que no sea Unicode, la concatenacin no puede implicar operandos de caracteres y
operandos grficos.

Si ambos operandos pueden ser nulos, el resultado tambin podr ser nulo; si
alguno de ellos es nulo, el resultado es el valor nulo. De lo contrario, el resultado
constar de la serie del primer operando seguida por la del segundo. La
comprobacin se efecta para detectar los datos mixtos formados defectuosamente
al realizar la concatenacin.

La longitud del resultado es la suma de las longitudes de los operandos.

El tipo de datos y el atributo de longitud del resultado vienen determinados por


los de los operandos, tal como se muestra en la tabla siguiente:
Tabla 12. Tipo de datos y longitud de los operandos concatenados
Atributos de
longitud
Operandos combinados Resultado
CHAR(A) CHAR(B) <255 CHAR(A+B)

190 Consulta de SQL - Volumen 1


Expresiones con el operador de concatenacin

Tabla 12. Tipo de datos y longitud de los operandos concatenados (continuacin)


Atributos de
longitud
Operandos combinados Resultado
CHAR(A) CHAR(B) >254 VARCHAR(A+B)
CHAR(A) VARCHAR(B) <4001 VARCHAR(A+B)
CHAR(A) VARCHAR(B) >4000 LONG VARCHAR
CHAR(A) LONG VARCHAR - LONG VARCHAR

VARCHAR(A) VARCHAR(B) <4001 VARCHAR(A+B)


VARCHAR(A) VARCHAR(B) >4000 LONG VARCHAR
VARCHAR(A) LONG VARCHAR - LONG VARCHAR

LONG VARCHAR LONG VARCHAR - LONG VARCHAR

CLOB(A) CHAR(B) - CLOB(MIN(A+B, 2G))


CLOB(A) VARCHAR(B) - CLOB(MIN(A+B, 2G))
CLOB(A) LONG VARCHAR - CLOB(MIN(A+32K, 2G))
CLOB(A) CLOB(B) - CLOB(MIN(A+B, 2G))

GRAPHIC(A) GRAPHIC(B) <128 GRAPHIC(A+B)


GRAPHIC(A) GRAPHIC(B) >127 VARGRAPHIC(A+B)
GRAPHIC(A) VARGRAPHIC(B) <2001 VARGRAPHIC(A+B)
GRAPHIC(A) VARGRAPHIC(B) >2000 LONG VARGRAPHIC
GRAPHIC(A) LONG VARGRAPHIC - LONG VARGRAPHIC

VARGRAPHIC(A) VARGRAPHIC(B) <2001 VARGRAPHIC(A+B)


VARGRAPHIC(A) VARGRAPHIC(B) >2000 LONG VARGRAPHIC
VARGRAPHIC(A) LONG VARGRAPHIC - LONG VARGRAPHIC

LONG VARGRAPHIC LONG - LONG VARGRAPHIC


VARGRAPHIC

DBCLOB(A) GRAPHIC(B) - DBCLOB(MIN(A+B, 1G))


DBCLOB(A) VARGRAPHIC(B) - DBCLOB(MIN(A+B, 1G))
DBCLOB(A) LONG VARGRAPHIC - DBCLOB(MIN(A+16K, 1G))
DBCLOB(A) DBCLOB(B) - DBCLOB(MIN(A+B, 1G))

BLOB(A) BLOB(B) - BLOB(MIN(A+B, 2G))

Observe que, para que haya compatibilidad con las versiones anteriores, no hay
escalada automtica de los resultados que implica tipos de datos LONG a los tipos
de datos LOB. Por ejemplo, la concatenacin de un valor CHAR(200) y un valor

Captulo 2. Elementos del lenguaje 191


Expresiones con el operador de concatenacin

LONG VARCHAR totalmente completo da como resultado un error en lugar de


una promocin de un tipo de datos CLOB.

La pgina de cdigos del resultado se considera una pgina de cdigos derivada


que viene determinada por la pgina de cdigos de sus operandos.

Un operando puede ser un marcador de parmetros. Si se utiliza un marcador de


parmetros, el tipo de datos y los atributos de longitud del operando se consideran
los mismos que los del operando que no es el marcador de parmetros. El orden
de las operaciones tiene su importancia, puesto que determina estos atributos en
casos en los que se produce una concatenacin anidada.

Ejemplo 1: Si FIRSTNME es Pierre y LASTNAME es Fermat, entonces lo siguiente:


FIRSTNME CONCAT CONCAT LASTNAME

devuelve el valor Pierre Fermat

Ejemplo 2: Dado:
v COLA definido como VARCHAR(5) con valor AA
v :host_var definida como una variable del lenguaje principal con una longitud 5
y el valor BB
v COLC definido como CHAR(5) con valor CC
v COLD definido como CHAR(5) con valor DDDDD

El valor de COLA CONCAT :host_var CONCAT COLC CONCAT COLD es


AABB CC DDDDD

El tipo de datos es VARCHAR, el atributo de longitud es 17 y la pgina de cdigos


resultante es la pgina de cdigos de la base de datos.

Ejemplo 3: Dado:
COLA definido como CHAR(10)
COLB definido como VARCHAR(5)

El marcador de parmetros de la expresin:


COLA CONCAT COLB CONCAT ?

se considera VARCHAR(15), porque COLA CONCAT COLB se evala primero, dando


como resultado el primer operando de la segunda operacin CONCAT.

Tipos definidos por el usuario: No se puede utilizar un tipo definido por el


usuario con el operador de concatenacin, aunque sea un tipo diferenciado con un
tipo de datos fuente de tipo serie. Para poder concatenar, es preciso crear una
funcin con el operador CONCAT como fuente. Por ejemplo, si existieran los tipos
diferenciados TITLE y TITLE_DESCRIPTION y ambos tuvieran los tipos de datos
VARCHAR(25), la siguiente funcin definida por el usuario, ATTACH, se podra
utilizar para concatenarlos.
CREATE FUNCTION ATTACH (TITLE, TITLE_DESCRIPTION)
RETURNS VARCHAR(50) SOURCE CONCAT (VARCHAR(), VARCHAR())

Tambin existe la posibilidad de sobrecargar el operador de concatenacin


empleando una funcin definida por el usuario para aadir los tipos de datos
nuevos.

192 Consulta de SQL - Volumen 1


Expresiones con el operador de concatenacin

CREATE FUNCTION CONCAT (TITLE, TITLE_DESCRIPTION)


RETURNS VARCHAR(50) SOURCE CONCAT (VARCHAR(), VARCHAR())

Expresiones con operadores aritmticos


Si se utilizan operadores aritmticos, el resultado de la expresin es un valor
derivado de la aplicacin de los operadores a los valores de los operandos.

Si cualquier operando puede ser nulo o la base de datos est configurada con
DFT_SQLMATHWARN establecido en s, el resultado puede ser nulo.

Si algn operando tiene el valor nulo, el resultado de la expresin es el valor nulo.

Los operadores numricos se pueden aplicar a tipos numricos con signo y a tipos
de fecha y hora (vea Aritmtica de fecha y hora en SQL en la pgina 198). Por
ejemplo, USER+2 no es vlido. Las funciones derivadas se pueden definir para
operaciones aritmticas sobre tipos diferenciados con un tipo fuente que sea un
tipo numrico con signo.

El operador de prefijo + (ms unario) no modifica su operando. El operador de


prefijo (menos unario) invierte el signo de un operando distinto de cero y, si el
tipo de datos de A es un entero pequeo, el tipo de datos de A ser un entero
grande. El primer carcter del smbolo que sigue a un operador de prefijo no debe
ser un signo ms ni un signo menos.

Los operadores infijos +, , * y / especifican, respectivamente, una suma, una resta,


una multiplicacin y una divisin. El valor del segundo operando de una divisin
no debe ser cero. Estos operadores tambin se pueden tratar como funciones. Por
consiguiente, la expresin +(a,b) es equivalente a la funcin de operador cuya
expresin es a+b.

Errores aritmticos: Si se produce un error aritmtico como, por ejemplo, una


divisin por cero o se produce un desbordamiento numrico durante el proceso de
una expresin, se devuelve un error y la sentencia de SQL que procesa la expresin
falla con un error (SQLSTATE 22003 22012).

Una base de datos puede configurarse (utilizando DFT_SQLMATHWARN


establecido en s) para que los errores aritmticos devuelvan un valor nulo para la
expresin, emitan un aviso (SQLSTATE 01519 01564) y prosigan con el proceso
de la sentencia de SQL. Cuando los errores aritmticos se tratan como nulos, hay
implicaciones en los resultados de las sentencias de SQL. A continuacin
encontrar algunos ejemplos de dichas implicaciones.
v Un error aritmtico que se produce en la expresin que es el argumento de una
funcin de columna provoca que se ignore la fila en la determinacin del
resultado de la funcin de columna. Si el error aritmtico ha sido un
desbordamiento, puede afectar de manera significativa a los valores del
resultado.
v Un error aritmtico que se produce en la expresin de un predicado en una
clusula WHERE puede hacer que no se incluyan filas en el resultado.
v Un error aritmtico que se produce en la expresin de un predicado en una
restriccin de comprobacin da como resultado el proceso de actualizacin o
insercin ya que la restriccin no es falsa.

Si estos tipos de efectos no son aceptables, deben seguirse pasos adicionales para
manejar el error aritmtico y producir resultados aceptables. Algunos ejemplos son:

Captulo 2. Elementos del lenguaje 193


Expresiones con operadores aritmticos

v aadir una expresin case para comprobar la divisin por cero y establecer el
valor deseado para dicha situacin
v aadir predicados adicionales para manejar los nulos (por ejemplo, una
restriccin de comprobacin en columnas sin posibilidad de nulos dara:
check (c1*c2 is not null and c1*c2>5000)

para hacer que la restriccin se violase en un desbordamiento).

Dos operandos enteros


Si ambos operandos de un operador aritmtico son enteros, la operacin se realiza
en binario y el resultado es un entero grande a no ser que uno de los operandos (o
ambos) sea un entero superior, en cuyo caso el resultado es un entero superior. Se
pierde cualquier resto de una divisin. El resultado de una operacin aritmtica de
enteros (incluyendo el menos unitario) debe estar dentro del rango del tipo del
resultado.

Operandos enteros y decimales


Si un operando es un entero y el otro es un decimal, la operacin se realiza en
decimal utilizando una copia temporal del entero que se habr convertido a
nmero decimal con la precisin p y la escala 0; p es 19 para un entero superior, 11
para un entero grande y 5 para un entero pequeo.

Dos operandos decimales


Si los dos operandos son decimales, la operacin se efecta en decimal. El
resultado de cualquier operacin aritmtica decimal es un nmero decimal con una
precisin y una escala que dependen de la operacin y de la precisin y la escala
de los operandos. Si la operacin es una suma o una resta y los operandos no
tienen la misma escala, la operacin se efecta con una copia temporal de uno de
los operandos. La copia del operando ms corto se extiende con ceros de cola de
manera que la parte de la fraccin tenga el mismo nmero de dgitos que el otro
operando.

El resultado de una operacin decimal no debe tener una precisin mayor que 31.
El resultado de una suma, resta y multiplicacin decimal se obtiene de un
resultado temporal que puede tener una precisin mayor que 31. Si la precisin del
resultado temporal no es mayor que 31, el resultado final es el mismo que el
resultado temporal.

Aritmtica decimal en SQL


Las frmulas siguientes definen la precisin y la escala del resultado de las
operaciones decimales en SQL. Los smbolos p y s indican la precisin y la escala
del primer operando y los smbolos p' y s' indican y la precisin y la escala del
segundo operando.

Sumas y restas: La precisin es min(31,max(p-s,p-s) +max(s,s)+1). La escala del


resultado de una suma o una resta es max (s,s).

Multiplicaciones: La precisin del resultado de una multiplicacin es min


(31,p+p) y la escala es min(31,s+s).

Divisiones: La precisin del resultado de la divisin es 31. La escala es 31-p+s-s'.


La escala no debe ser negativa.

Nota: El parmetro de configuracin de base de datos MIN_DEC_DIV_3 modifica


la escala para las operaciones aritmticas decimales que incluyen la divisin.
Si el valor del parmetro se establece en NO, la escala se calcula como

194 Consulta de SQL - Volumen 1


Aritmtica decimal en SQL

31-p+s-s'. Si el parmetro se establece en YES, la escala se calcula como


MAX(3, 31-p+ s-s'). Esto asegura que el resultado de una divisin decimal
tenga siempre una escala de 3 como mnimo (la precisin es siempre 31).

Operandos de coma flotante


Si cualquiera de los dos operandos de un operador aritmtico es de coma flotante,
la operacin se realiza en coma flotante, convirtiendo primero los operandos a
nmeros de coma flotante de doble precisin, si es necesario. Por lo tanto, si
cualquier elemento de una expresin es un nmero de coma flotante, el resultado
de la expresin es un nmero de coma flotante de precisin doble.

Una operacin en la que intervenga un nmero de coma flotante y un entero se


realiza con una copia temporal del entero que se ha convertido a coma flotante de
precisin doble. Una operacin en la que intervenga un nmero de coma flotante y
un nmero decimal se efecta con una copia temporal del nmero decimal que se
ha convertido a coma flotante de precisin doble. El resultado de una operacin de
coma flotante debe estar dentro del rango de los nmeros de coma flotante.

Tipos definidos por el usuarios como operandos


Un tipo definido por el usuario no puede utilizarse con operadores aritmticos ni
siquiera aunque el tipo de datos fuente sea numrico. Para llevar a cabo una
operacin aritmtica, cree una funcin con el operador aritmtico como fuente. Por
ejemplo, si existen los tipos diferenciados INCOME y EXPENSES, y ambos tienen
tipos de datos DECIMAL(8,2), se podra utilizar la funcin REVENUE definida por
el usuario para restar uno de otro, de la forma siguiente:
CREATE FUNCTION REVENUE (INCOME, EXPENSES)
RETURNS DECIMAL(8,2) SOURCE "-" (DECIMAL, DECIMAL)

El operador - (menos) se puede sobrecargar de forma alternativa utilizando la


funcin definida por el usuario para restar los tipos de datos nuevos.
CREATE FUNCTION "-" (INCOME, EXPENSES)
RETURNS DECIMAL(8,2) SOURCE "-" (DECIMAL, DECIMAL)

Prioridad de las operaciones


Las expresiones entre parntesis y las expresiones de desreferencia se evalan
primero de izquierda a derecha. (Los parntesis tambin se utilizan en sentencias
de subseleccin, condiciones de bsqueda y funciones. Sin embargo, no deben
utilizarse para agrupar arbitrariamente secciones dentro de sentencias de SQL.)
Cuando del orden de evaluacin no se especifica mediante parntesis, los
operadores de prefijo se aplican antes que la multiplicacin y divisin, y la
multiplicacin y divisin se aplican antes que la suma y la resta. Los operadores de
un mismo nivel de prioridad se aplican de izquierda a derecha.

Figura 11. Prioridad de las operaciones

Captulo 2. Elementos del lenguaje 195


Seleccin completa escalar

Seleccin completa escalar


Una seleccin completa escalar, tal como se utiliza en una expresin, es una seleccin
completa, entre parntesis, que devuelve una nica fila formada por un solo valor
de columna. Si la seleccin completa no devuelve una fila, el resultado de la
expresin es el valor nulo. Si el elemento de la lista de seleccin es una expresin
que simplemente es un nombre de columna o una operacin de desreferencia, el
nombre de columna del resultado est basado en el nombre de la columna. La
autorizacin necesaria para una seleccin completa escalar es la misma que se
necesita para una consulta SQL.

Informacin relacionada:
v Sentencia CREATE FUNCTION (Escalar de SQL, tabla o fila) en Consulta de
SQL, Volumen 2
v Asignaciones y comparaciones en la pgina 117
v Seleccin completa en la pgina 569
v Reglas para la conversin de series en la pgina 133
v Consultas de SQL en la pgina 529

196 Consulta de SQL - Volumen 1


Operaciones de fecha y hora y duraciones

Operaciones de fecha y hora y duraciones


Los valores de fecha y hora se pueden aumentar, disminuir y restar. Estas
operaciones pueden incluir nmeros decimales llamados duraciones. Las siguientes
secciones describen los tipos de duraciones y las normas para la aritmtica de hora
y fecha.

Duraciones
Una duracin es un nmero que representa un intervalo de tiempo. Existen cuatro
tipos de duraciones:

Duraciones etiquetadas:

duracin-etiquetada:

funcin YEAR
(expresin) YEARS
constante MONTH
nombre-columna MONTHS
variable-lengpral DAY
DAYS
HOUR
HOURS
MINUTE
MINUTES
SECOND
SECONDS
MICROSECOND
MICROSECONDS

Una duracin etiquetada representa una unidad de tiempo especfica expresada por
un nmero (que puede ser el resultado de una expresin) seguido de una de las
siete palabras clave de duracin: YEARS, MONTHS, DAYS, HOURS, MINUTES,
SECONDS o MICROSECONDS. (Tambin se acepta la forma singular de estas
palabras clave: YEAR, MONTH, DAY, HOUR, MINUTE, SECOND y
MICROSECOND.) El nmero especificado se convierte como si se asignara a un
nmero DECIMAL(15,0). Slo puede utilizarse una duracin etiquetada como
operando de un operador aritmtico en el que el otro operando sea un valor de
tipo de datos DATE, TIME o TIMESTAMP. As pues, la expresin HIREDATE + 2
MONTHS + 14 DAYS es vlida, mientras que la expresin HIREDATE + (2
MONTHS + 14 DAYS) no lo es. En ambas expresiones, las duraciones etiquetadas
son 2 MONTHS (meses) y 14 DAYS (das).

Duracin de fecha: Una duracin de fecha representa un nmero de aos, meses y


das, expresados como un nmero DECIMAL(8,0). Para que se interprete
correctamente, el nmero debe tener el formato aaaammdd., donde aaaa representa
el nmero de aos, mm el nmero de meses y dd el nmero de das. (El punto en
el formato indica un tipo de datos DECIMAL.) El resultado de restar un valor de
fecha de otro, como sucede en la expresin HIREDATE BRTHDATE, es una
duracin de fecha.

Duracin de hora: Una duracin de hora representa un nmero de horas, minutos


y segundos, expresado como un nmero DECIMAL(6,0). Para interpretarse
correctamente, el nmero debe tener el formato hhmmss., donde hh representa el
nmero de horas, mm el nmero de minutos y ss el nmero de segundos. (El

Captulo 2. Elementos del lenguaje 197


Duraciones

punto en el formato indica un tipo de datos DECIMAL.) El resultado de restar un


valor de hora de otro es una duracin de hora.

Duracin de la indicacin de fecha y hora: Una duracin de la indicacin de fecha y


hora representa un nmero de aos, meses, das, horas, minutos, segundos y
microsegundos expresado como un nmero DECIMAL(20,6). Para que se interprete
correctamente, el nmero debe tener el formato aaaammddhhmmss.nnnnnn, donde
aaaa, mm, dd, hh, mm, ss y nnnnnn representan el nmero de aos, meses, das,
horas, minutos, segundos y microsegundos respectivamente. El resultado de restar
un valor de indicacin de fecha y hora de otro es una duracin de la indicacin de
fecha y hora.

Aritmtica de fecha y hora en SQL


Las nicas operaciones aritmticas que pueden efectuarse con valores de fecha y
hora son la suma y la resta. Si un valor de fecha y hora es un operando de suma,
el otro operando debe ser una duracin. A continuacin, encontrar las reglas
especficas que rigen la utilizacin del operador de suma con valores de fecha y
hora.
v Si un operando es una fecha, el otro operando debe ser una duracin de fecha o
una duracin etiquetada de YEARS, MONTHS o DAYS.
v Si un operando es una hora, el otro operando debe ser una duracin de hora o
una duracin etiquetada de HOURS, MINUTES o SECONDS.
v Si un operando es una fecha y hora, el otro operando debe ser una duracin.
Cualquier tipo de duracin es vlido.
v Ningn operando del operador de suma puede ser un marcador de parmetros.

Las normas para la utilizacin del operador de resta con valores de fecha y hora
no son las mismas que para la suma, porque un valor de fecha y hora no puede
restarse de una duracin, y porque la operacin de restar dos valores de fecha y
hora no es la misma que la operacin de restar una duracin de un valor de fecha
y hora. A continuacin se muestran las normas especficas que rigen la utilizacin
del operador de resta con valores de fecha y hora.
v El primer operando es una fecha, el segundo operando debe ser una fecha, una
duracin de fecha, una representacin de una fecha en forma de serie o una
duracin etiquetada de YEARS, MONTHS o DAYS.
v Si el segundo operando es una fecha, el primer operando debe ser una fecha o
una representacin de una fecha en forma de serie.
v Si el primer operando es una hora, el segundo operando debe ser una hora, una
duracin de hora, una representacin de una hora en forma de serie o una
duracin etiquetada de HOURS, MINUTES o SECONDS.
v Si el segundo operando es una hora, el primer operando debe ser una hora o
una representacin de una hora en forma de serie.
v Si el primer operando es una fecha y hora, el segundo operando debe ser una
fecha y hora, una representacin de una fecha y hora en forma de serie o una
duracin.
v Si el segundo operando es una fecha y hora, el primer operando debe ser una
fecha y hora o una representacin de una fecha y hora en forma de serie.
v Ningn operando del operador de resta puede ser un marcador de parmetros.

Aritmtica de fecha: Las fechas se pueden restar, aumentar o disminuir.

Resta de fechas: Al restar un fecha (DATE2) de otra (DATE1) se obtiene como


resultado una duracin de fecha que especifica el nmero de aos, meses y das
entre las dos fechas. El tipo de datos del resultado es DECIMAL(8,0). Si DATE1 es
198 Consulta de SQL - Volumen 1
Aritmtica de fecha y hora en SQL

mayor o igual que DATE2, DATE2 se resta de DATE1. Si DATE1 es menor que
DATE2, DATE1 se resta de DATE2 y el signo del resultado se convierte en
negativo. La descripcin siguiente clarifica los pasos que intervienen en el
resultado de la operacin = DATE1 DATE2.
Si DAY(DATE2) <= DAY(DATE1)
entonces DAY(RESULT) = DAY(DATE1) DAY(DATE2).
Si DAY(DATE2) > DAY(DATE1)
entonces DAY(RESULT) = N + DAY(DATE1)
DAY(DATE2)
donde N = el ltimo da de MONTH(DATE2).
MONTH(DATE2) se aumenta en 1.
Si MONTH(DATE2) <= MONTH(DATE1)
entonces MONTH(RESULT) = MONTH(DATE1)
- MONTH(DATE2).
Si MONTH(DATE2) > MONTH(DATE1)
entonces MONTH(RESULT) = 12 + MONTH(DATE1)
- MONTH(DATE2).
YEAR(DATE2) se aumenta en 1.
YEAR(RESULT) = YEAR(DATE1) YEAR(DATE2).

Por ejemplo, el resultado de DATE('15/3/2000') '31/12/1999' es 00000215. (o una


duracin de 0 aos, 2 meses y 15 das).

Incremento y disminucin de las fechas: Al aadir o restar una duracin a una fecha
se obtiene como resultado tambin una fecha. (En esta operacin, un mes equivale
a una pgina de un calendario. La adicin de meses a una fecha es como ir
pasando pginas a un calendario, empezando por la pgina en la que aparece la
fecha.) El resultado debe estar comprendido entre las fechas 1 de enero de 0001 y
31 de diciembre de 9999, ambos inclusive.

Si se suma o resta una duracin de aos, solamente la parte de la fecha


correspondiente a los aos se ver afectada. Tanto el mes como el da permanecen
inalterados, a no ser que el resultado fuera el 29 de febrero en un ao no bisiesto.
En este caso, el da se cambia a 28 y se define un indicador de aviso en la SQLCA
para indicar el ajuste.

Del mismo modo, si se suma o resta una duracin de meses, solamente los meses,
y los aos si fuera necesario, se vern afectados. La parte de una fecha
correspondiente a los aos no se cambia a no ser que el resultado no fuera vlido
(31 de setiembre, por ejemplo). En este caso, el da se establece en el ltimo da del
mes y se define un indicador de aviso en la SQLCA para indicar el ajuste.

Al aadir o restar una duracin de das afectar, obviamente, a la parte de la fecha


correspondiente a los das y potencialmente al mes y al ao.

Las duraciones de fecha, ya sean positivas o negativas, tambin se pueden aadir y


restar a las fechas. Tal como ocurre con las duraciones etiquetadas, se obtiene como
resultado una fecha vlida y se define un indicador de aviso en la SQLCA siempre
que se deba efectuar un ajuste de fin de mes.

Cuando se suma una duracin de fecha positiva a una fecha, o una duracin de
fecha negativa se resta de una fecha, la fecha aumenta el nmero especificado de
aos, meses y das, en ese orden. As pues, DATE1 + X, donde X es un nmero
DECIMAL(8,0) positivo, equivale a la expresin:
DATE1 + YEAR(X) YEARS + MONTH(X) MONTHS + DAY(X) DAYS.

Captulo 2. Elementos del lenguaje 199


Aritmtica de fecha y hora en SQL

Cuando una duracin de fecha positiva se resta de una fecha, o bien se aade una
duracin de fecha negativa a una fecha, la fecha disminuye en el nmero das,
meses y aos especificados, en este orden. As pues, DATE1 X, donde X es un
nmero DECIMAL(8,0) positivo, equivale a la expresin:
DATE1 DAY(X) DAYS MONTH(X) MONTHS YEAR(X) YEARS.

Al aadir duraciones a fechas, la adicin de un mes a una fecha determinada da la


misma fecha un mes posterior a menos que la fecha no exista en el siguiente mes.
En este caso, se establece la fecha correspondiente al ltimo da del siguiente mes.
Por ejemplo, 28 de enero ms un mes da como resultado 28 de febrero y si se
aade un mes al 29, 30 31 de enero tambin se obtendr como resultado el 28 de
febrero o bien 29 de febrero si se trata de un ao bisiesto.

Nota: Si se aade uno o ms meses a una fecha determinada y del resultado se


resta la misma cantidad de meses, la fecha final no tiene por qu ser
necesariamente la misma que la original.

Aritmtica de las horas: Las horas se pueden restar, aumentar o disminuir.

Resta de los valores de horas: El resultado de restar una hora (HOUR2) de otra
(HOUR1) es una duracin que especifica el nmero de horas, minutos y segundos
entre las dos horas. El tipo de datos del resultado es DECIMAL(6,0).

Si HOUR1 es mayor o igual que HOUR2, HOUR2 se resta de HOUR1.

Si HOUR1 es menor que HOUR2, HOUR1 se resta de HOUR2 y el signo del


resultado se convierte en negativo. La descripcin siguiente clarifica los pasos que
intervienen en el resultado de la operacin = HOUR1 HOUR2.
Si SECOND(TIME2) <= SECOND(TIME1)
entonces SECOND(RESULT) = SECOND(HOUR1) SECOND(HOUR2).
Si SECOND(TIME2) > SECOND(TIME1)
entonces SECOND(RESULT) =
60 + SECOND(HOUR1) SECOND(HOUR2).
MINUTE(HOUR2) se aumenta entonces en 1.
Si MINUTE(TIME2) <= MINUTE(TIME1)
entonces MINUTE(RESULT) = MINUTE(HOUR1)
MINUTE(HOUR2).
Si MINUTE(TIME1) > MINUTE(TIME1)
entonces MINUTE(RESULT) =
60 + MINUTE(HOUR1) MINUTE(HOUR2).
HOUR(HOUR2) se aumenta entonces en 1.
HOUR(RESULT) = HOUR(TIME1) HOUR(TIME2).

Por ejemplo, el resultado de TIME(11:02:26) 00:32:56 es 102930. (una duracin


de 10 horas, 29 minutos y 30 segundos).

Incremento y disminucin de los valores de horas: El resultado de sumar una duracin


a una hora, o de restar una duracin de una hora, es una hora. Se rechaza
cualquier desbordamiento o subdesbordamiento de horas, garantizando de este
modo que el resultado sea siempre una hora. Si se suma o resta una duracin de
horas, slo se ve afectada la parte correspondiente a las horas. Los minutos y los
segundos no cambian.

De manera parecida, si se suma o resta una duracin de minutos, slo se afecta a


los minutos y, si fuera necesario, a las horas. La parte correspondiente a los
segundos no cambia.

200 Consulta de SQL - Volumen 1


Aritmtica de fecha y hora en SQL

Al aadir o restar una duracin de segundos afectar, obviamente, a la parte de la


fecha correspondiente a los segundos y potencialmente a los minutos y a las horas.

Las duraciones de hora, tanto positivas como negativas, pueden tambin sumarse
y restarse a las horas. El resultado es una hora que se ha incrementado o
disminuido en el nmero especificado de horas, minutos y segundos, por ese
orden.TIME1 + X, donde X es un nmero DECIMAL(6,0) equivalente a la
expresin:
TIME1 + HOUR(X) HOURS + MINUTE(X) MINUTES + SECOND(X) SECONDS

Nota: Aunque la hora 24:00:00 se acepta como una hora vlida, no se devuelve
nunca como resultado de una suma o resta de horas, ni siquiera aunque el
operando de duracin sea cero (por ejemplo, hora(24:00:00)0 segundos =
00:00:00).

Aritmtica de la indicacin de fecha y hora: Las indicaciones de fecha y hora se


pueden restar, incrementar o disminuir.

Resta de indicaciones de fecha y hora: El resultado de restar una indicacin de fecha


y hora (TS2) de otra (TS1) es una duracin de la indicacin de fecha y hora que
especifica el nmero de aos, meses, das, horas, minutos, segundos y
microsegundos entre las dos indicaciones de fecha y hora. El tipo de datos del
resultado es DECIMAL(20,6).

Si TS1 es mayor o igual que TS2, TS2 se resta de TS1. Si TS1 es menor que TS2,
TS1 se resta de TS2 y el signo del resultado se convierte en negativo. La
descripcin siguiente clarifica los pasos que intervienen en el resultado de la
operacin = TS1 TS2:
Si MICROSECOND(TS2) <= MICROSECOND(TS1)
entonces MICROSECOND(RESULT) = MICROSECOND(TS1)
MICROSECOND(TS2).
Si MICROSECOND(TS2) > MICROSECOND(TS1)
entonces MICROSECOND(RESULT) =
1000000 +
MICROSECOND(TS1) MICROSECOND(TS2)
y SECOND(TS2) se aumenta en 1.

La parte correspondiente a los segundos y minutos de la indicacin de fecha y


hora se resta tal como se especifica en las reglas para la resta de horas.
S HOUR(TS2) <= HOUR(TS1)
entonces HOUR(RESULT) = HOUR(TS1) HOUR(TS2).
Si HOUR(TS2) > HOUR(TS1)
entonces HOUR(RESULT) = 24 + HOUR(TS1) HOUR(TS2)
y DAY(TS2) se aumenta en 1.

La parte correspondiente a la fecha de las indicaciones de fecha y hora se resta tal


como se especifica en las reglas para la resta de fechas.

Incremento y disminucin de indicaciones de fecha y hora: El resultado de sumar o


restar una duracin con una indicacin de fecha y hora es tambin una indicacin
de fecha y hora. El clculo con fechas y horas se realiza tal como se ha definido
anteriormente, excepto que se acarrea un desbordamiento o subdesbordamiento a
la parte de fecha del resultado, que debe estar dentro del rango de fechas vlidas.
El desbordamiento de microsegundos pasa a segundos.

Captulo 2. Elementos del lenguaje 201


Expresiones CASE

Expresiones CASE
expresin-case:

ELSE NULL
CASE clusula-searched-when END
clusula-simple-when ELSE expresin-resultado

clusula-searched-when:

 WHEN condicin-bsqueda THEN expresin-resultado


NULL

clusula-simple-when:

expresin  WHEN expresin THEN expresin-resultado


NULL

Las expresiones CASE permiten seleccionar una expresin en funcin de la


evaluacin de una o varias condiciones. En general, el valor de la expresin-case es
el valor de la expresin-resultado que sigue a la primera (ms a la izquierda)
expresin case que se evala como cierta. Si ninguna se evala como cierta y est
presente la palabra clave ELSE, el resultado es el valor de la expresin-resultado o
NULL. Si ninguna se evala como cierta y no se utiliza la palabra clave ELSE, el
resultado es NULL. Tenga presente que cuando una expresin CASE se evala
como desconocida (debido a valores NULL), la expresin CASE no es cierta y por
eso se trata igual que una expresin CASE que se evala como falsa.

Si la expresin CASE est en una clusula VALUES, un predicado IN, una clusula
GROUP BY o en una clusula ORDER BY, la condicin-bsqueda de una
clusula-searched-when no puede ser un predicado cuantificado, un predicado IN
que hace uso de una seleccin completa ni un predicado EXISTS (SQLSTATE
42625).

Cuando se utiliza la clusula-simple-when, se comprueba si el valor de la expresin


anterior a la primera palabra clave WHEN es igual al valor de la expresin posterior
a la palabra clave WHEN. Por lo tanto, el tipo de datos de la expresin anterior a la
primera palabra clave WHEN debe ser comparable a los tipos de datos de cada
expresin posterior a la palabra o palabras clave WHEN. La expresin anterior a la
primera palabra clave WHEN de una clusula-simple-when no puede incluir ninguna
funcin que sea una variante o que tenga una accin externa (SQLSTATE 42845).

Una expresin-resultado es una expresin que sigue a las palabras clave THEN o
ELSE. Debe haber, como mnimo, una expresin-resultado en la expresin CASE
(NULL no puede especificarse para cada case) (SQLSTATE 42625). Todas las
expresiones-resultado deben tener tipos de datos compatibles (SQLSTATE 42804).

Ejemplos:

202 Consulta de SQL - Volumen 1


Expresiones CASE

v Si el primer carcter de un nmero de departamento corresponde a una divisin


dentro de la organizacin, se puede utilizar una expresin CASE para listar el
nombre completo de la divisin a la que pertenece cada empleado:
SELECT EMPNO, LASTNAME,
CASE SUBSTR(WORKDEPT,1,1)
WHEN A THEN Administracin
WHEN B THEN Recursos humanos
WHEN C THEN Contabilidad
WHEN D THEN Diseo
WHEN E THEN Operaciones
END
FROM EMPLOYEE;
v El nmero de aos de formacin acadmica se usa en la tabla EMPLOYEE para
obtener el nivel de formacin. Una expresin CASE se puede utilizar para
agrupar estos datos y para mostrar el nivel de formacin.
SELECT EMPNO, FIRSTNME, MIDINIT, LASTNAME,
CASE
WHEN EDLEVEL < 15 THEN SECONDARY
WHEN EDLEVEL < 19 THEN COLLEGE
ELSE POST GRADUATE
END
FROM EMPLOYEE
v Otro ejemplo interesante del uso de una expresin CASE consiste en la
proteccin de los errores que surjan de una divisin por 0. Por ejemplo, el
siguiente cdigo detecta los empleados que perciben ms de un 25% de sus
ingresos en comisiones, pero que su sueldo no se basa enteramente en
comisiones.
SELECT EMPNO, WORKDEPT, SALARY+COMM FROM EMPLOYEE
WHERE (CASE WHEN SALARY=0 THEN NULL
ELSE COMM/SALARY
END) > 0.25;
v Las siguientes expresiones CASE son iguales:
SELECT LASTNAME,
CASE
WHEN LASTNAME = Haas THEN Presidente
...

SELECT LASTNAME,
CASE LASTNAME
WHEN Haas THEN Presidente
...

Existen dos funciones escalares, NULLIF y COALESCE, que sirven exclusivamente


para manejar un subconjunto de la funcionalidad que una expresin CASE puede
ofrecer. La Tabla 13 muestra la expresin equivalente al utilizar CASE o estas
funciones.
Tabla 13. Expresiones CASE equivalentes
Expresin Expresin equivalente
CASE WHEN e1=e2 THEN NULL ELSE e1 END NULLIF(e1,e2)
CASE WHEN e1 IS NOT NULL THEN e1 ELSE e2 END COALESCE(e1,e2)
CASE WHEN e1 IS NOT NULL THEN e1 ELSE COALESCE(e1,e2,...,eN)
COALESCE(e2,...,eN) END

Informacin relacionada:
v Reglas para los tipos de datos del resultado en la pgina 129

Captulo 2. Elementos del lenguaje 203


especificaciones CAST

Especificaciones CAST
especificacin-cast:

CAST ( expresin AS tipo-datos 


NULL
marcador-parmetros

 )
(1)
SCOPE nombre-tabla-tipo
nombre-vista-tipo

Notas:
1 La clusula SCOPE slo se aplica al tipo de datos REF.

La especificacin CAST devuelve el operando cast (el primer operando) convertido


al tipo especificado por el tipo-datos. Si no se soporta cast, se devuelve un error
(SQLSTATE 42846).
expresin
Si el operando cast es una expresin (distinta del marcador de parmetros o
NULL), el resultado es el valor del argumento convertido al tipo-datos de
destino especificado.
Al convertir series de caracteres (que no sean CLOB) en una serie de caracteres
de longitud diferente, se devuelve un aviso (SQLSTATE 01004) si se truncan
otros caracteres que no sean los blancos de cola. Al convertir series de
caracteres grficas (que no sean DBCLOB) en una serie de caracteres grfica
con una longitud diferente, se devuelve un aviso (SQLSTATE 01004) si se
truncan otros caracteres que no sean los blancos de cola. Para los operandos
BLOB, CLOB y DBCLOB de cast, el mensaje de aviso aparece si se trunca
cualquier carcter.
NULL
Si el operando cast es la palabra clave NULL, el resultado es un valor nulo que
tiene el tipo -datos especificado.
marcador-parmetros
Un marcador de parmetros (especificado como un signo de interrogacin) se
suele considerar como una expresin pero se documenta independientemente
en este caso porque tiene un significado especial. Si el operando cast es un
marcador-parmetros, el tipo-datos especificado se considera una promesa de que
la sustitucin se podr asignar al tipo de datos especificado (utilizando la
asignacin de almacenamiento para series). Un marcador de parmetros como
este se considera un marcador de parmetros con tipo. Los marcadores de
parmetros con tipo se tratan como cualquier otro valor con tipo en lo
referente a la resolucin de la funcin, a DESCRIBE de una lista de seleccin o
a la asignacin de columnas.
tipo-datos
Nombre de un tipo de datos existente. Si el nombre de tipo no est calificado,
la va de acceso de SQL se utiliza para realizar la resolucin del tipo de datos.
Un tipo de datos que tenga asociados atributos como, por ejemplo, la longitud
o la precisin y escala debe incluir dichos atributos al especificar el tipo-datos
(CHAR toma por omisin la longitud de 1 y DECIMAL toma por omisin una
precisin de 5 y una escala de 0 si no se especifican). Las restricciones sobre los
tipos de datos soportados se basan en el operando cast especificado.

204 Consulta de SQL - Volumen 1


especificaciones CAST

v Para un operando cast que sea una expresin, los tipos de datos de destino a
los que se da soporte dependen del tipo de datos del operando cast (tipo de
datos fuente).
v Para un operando cast que sea la palabra clave NULL se puede utilizar
cualquier tipo de datos existente.
v Para un operando cast que sea un marcador de parmetros, el tipo de datos
de destino puede ser cualquier tipo de datos existente. Si el tipo de datos es
un tipo diferenciado definido por el usuario, la aplicacin que hace uso del
marcador de parmetros utilizar el tipo de datos fuente del tipo
diferenciado definido por el usuario. Si el tipo de datos es un tipo
estructurado definido por el usuario, la aplicacin que hace uso del
marcador de parmetros utilizar el tipo de parmetro de entrada de la
funcin de transformacin TO de SQL para el tipo estructurado definido por
el usuario.
SCOPE
Cuando el tipo de datos es un tipo de referencia, puede definirse un mbito
que identifique la tabla de destino o la vista de destino de la referencia.
nombre-tabla-tipo
El nombre de una tabla con tipo. Ya debe existir la tabla (SQLSTATE
42704). La conversin debe hacerse hacia el tipo-datos REF(S), donde S es el
tipo de nombre-tabla-tipo (SQLSTATE 428DM).
nombre-vista-tipo
El nombre de una vista con tipo. La vista debe existir o tener el mismo
nombre que la vista a crear que incluye la conversin del tipo de datos
como parte de la definicin de la vista (SQLSTATE 42704). La conversin
debe hacerse hacia el tipo-datos REF(S), donde S es el tipo de
nombre-vista-tipo (SQLSTATE 428DM).

Cuando se convierten datos numricos en datos de caracteres, el tipo de datos


resultante es una serie de caracteres de longitud fija. Cuando se convierten datos
de caracteres en datos numricos, el tipo de datos resultante depende del tipo de
nmero especificado. Por ejemplo, si se convierte en un entero, pasar a ser un
entero grande.

Ejemplos:
v A una aplicacin slo le interesa la parte entera de SALARY (definido como
decimal (9,2)) de la tabla EMPLOYEE. Se podra preparar la siguiente consulta,
con el nmero de empleado y el valor del entero de SALARY.
SELECT EMPNO, CAST(SALARY AS INTEGER) FROM EMPLOYEE
v Supongamos que hay un tipo diferenciado denominado T_AGE que se define
como SMALLINT y se utiliza para crear la columna AGE en la tabla
PERSONNEL. Supongamos tambin que existe tambin un tipo diferenciado
denominado R_YEAR que est definido en INTEGER y que se utiliza para crear
la columna RETIRE_YEAR en la tabla PERSONNEL. Se podra preparar la
siguiente sentencia de actualizacin.
UPDATE PERSONNEL SET RETIRE_YEAR =?
WHERE AGE = CAST( ? AS
T_AGE)
El primer parmetro es un marcador de parmetros no tipificado que tendra un
tipo de datos de R_YEAR, si bien la aplicacin utilizar un entero para este
marcador de parmetros. Esto no necesita la especificacin explcita de CAST
porque se trata de una asignacin.

Captulo 2. Elementos del lenguaje 205


especificaciones CAST

El segundo marcador de parmetros es un marcador de parmetros con tipo que


se convierte como un tipo diferenciado T_AGE. Esto cumple el requisito de que
la comparacin debe realizarse con tipos de datos compatibles. La aplicacin
utilizar el tipo de datos fuente (que es SMALLINT) para procesarlo con este
marcador de parmetros.
El proceso satisfactorio de esta sentencia supone que la va de acceso SQL
incluye el nombre de esquema del esquema (o esquemas) donde estn definidos
los dos tipos diferenciados.
v Una aplicacin suministra un valor que es una serie de bits como, por ejemplo,
una corriente de audio y no debera realizarse la conversin de pgina de
cdigos antes de que se utilice en una sentencia SQL. La aplicacin podra
utilizar la siguiente funcin CAST:
CAST( ? AS VARCHAR(10000) FOR BIT DATA)

Informacin relacionada:
v Conversiones entre tipos de datos en la pgina 110
v CHAR en la pgina 308
v INTEGER en la pgina 366
v Especificaciones XMLCAST en la pgina 207

206 Consulta de SQL - Volumen 1


Especificaciones XMLCAST

Especificaciones XMLCAST
especificacin-xmlcast:

XMLCAST ( expresin AS tipo-datos )


NULL
marcador-parmetros

La especificacin XMLCAST devuelve el operando cast (el primer operando)


convertido al tipo especificado por el tipo de datos. XMLCAST da soporte a
conversiones que requieren valores XML, incluidas las conversiones entre los tipos
de datos que no son XML y el tipo de datos XML. Si la conversin no est
soportada se devuelve un error (SQLSTATE 22003).

Slo se puede utilizar la especificacin XMLCAST en una base de datos Unicode


con una nica particin de base de datos (SQLSTATE 42997).
expresin
Si el operando cast es una expresin (distinta del marcador de parmetros o
NULL), el resultado es el valor del argumento convertido al tipo de datos de
destino especificado. El tipo de datos de destino o la expresin deben ser del
tipo de datos XML (SQLSTATE 42846).
NULL
Si el operando cast es la palabra clave NULL, el tipo de datos de destino debe
ser el tipo de datos XML (SQLSTATE 42846). El resultado es un valor XML
nulo.
marcador-parmetros
Si el operando cast es un marcador de parmetros, el tipo de datos de destino
debe ser el tipo de datos XML (SQLSTATE 42846). Un marcador de parmetros
(especificado como un signo de interrogacin) se suele considerar como una
expresin pero se documenta independientemente en este caso porque tiene un
significado especial. Si el operando cast es un marcador de parmetros, el tipo
de datos especificado se considera una promesa de que la sustitucin se podr
asignar al tipo de datos especificado (utilizando la asignacin de
almacenamiento). Un marcador de parmetros de este tipo se considera un
marcador de parmetros con tipo, y se trata como cualquier otro valor con tipo
para fines de resolucin de funcin, una operacin de descripcin en una lista
de seleccin o una asignacin de columna.
tipo-datos
El nombre de un tipo de datos SQL existente. Si el nombre no est calificado,
la va de acceso de SQL se utiliza para realizar la resolucin del tipo de datos.
Si un tipo de datos tiene atributos asociados como, por ejemplo, la longitud o
precisin y la escala, estos atributos deben incluirse cuando se especifica un
valor para tipo-datos. CHAR toma por omisin una longitud de 1 y DECIMAL
toma por omisin una precisin de 5 y una escala de 0 si no se especifican. Las
restricciones sobre los tipos de datos soportados se basan en el operando cast
especificado.
v Para un operando cast que sea una expresin, los tipos de datos de destino a
los que se da soporte dependen del tipo de datos del operando cast (tipo de
datos fuente).
v Para un operando cast que sea la palabra clave NULL, el tipo de datos de
destino debe ser XML.

Captulo 2. Elementos del lenguaje 207


Especificaciones XMLCAST

v Para un operando cast que sea un marcador de parmetros, el tipo de datos


de destino debe ser XML.

Ejemplos:
v Crear un valor XML nulo.
XMLCAST(NULL AS XML)
v Convertir un valor extrado de una expresin XMLQUERY en un INTEGER:
XMLCAST(XMLQUERY($m/PRODUCT/QUANTITY
PASSING BY REF xmlcol AS "m" RETURNING SEQUENCE) AS INTEGER)
v Convertir un valor extrado de una expresin XMLQUERY en una serie de
caracteres de longitud variable:
XMLCAST(XMLQUERY($m/PRODUCT/ADD-TIMESTAMP
PASSING BY REF xmlcol AS "m" RETURNING SEQUENCE) AS VARCHAR(30))
v Convertir un valor extrado de una subconsulta escalar SQL en un valor XML.
XMLCAST((SELECT quantity FROM product AS p
WHERE p.id = 1077) AS XML)

Informacin relacionada:
v Conversiones entre tipos de datos en la pgina 110
v Especificaciones CAST en la pgina 204

208 Consulta de SQL - Volumen 1


Operaciones de desreferencia

Operaciones de desreferencia
operacin-desreferencia:

expresin-ref-mbito > nombre1


( )
,

 expresin

El mbito de la expresin de referencia con mbito es una tabla o vista llamada


tabla o vista destino. La expresin de referencia con mbito identifica una fila
destino. La fila destino es la fila de la tabla o vista destino (o de una sus subtablas o
subvistas) cuyo valor de la columna de identificador de objeto (OID) coincide con
la expresin de referencia. Se puede utilizar la operacin de desreferencia para
acceder a una columna de la fila destino, o para invocar un mtodo, utilizando la
fila destino como sujeto del mtodo. El resultado de una operacin de
desreferencia puede siempre ser nulo. La operacin de desreferencia tiene
prioridad por encima de todos los otros operadores.
expresin-ref-mbito
Una expresin que es un tipo de referencia que tiene un mbito (SQLSTATE
428DT). Si la expresin es una variable del lenguaje principal, un marcador de
parmetros u otro valor de tipo de referencia sin mbito, se necesita una
especificacin CAST con una clusula SCOPE para proporcionar un mbito a la
referencia.
nombre1
Especifica un identificador no calificado.
Si nombre1 no va seguido por ningn parntesis y nombre1 coincide con el
nombre de un atributo del tipo destino, el valor de la operacin de
desreferencia es el valor de la columna mencionada de la fila destino. En este
caso, el tipo de datos de la columna (que puede contener nulos) determina el
tipo del resultado de la operacin de desreferencia. Si no existe ninguna fila
destino cuyo identificador de objeto coincida con la expresin de referencia, el
resultado de la operacin de desreferencia es nulo. Si la operacin de
desreferencia se utiliza en una lista de seleccin y no se incluye como parte de
una expresin, nombre1 pasa a ser el nombre de la columna resultante.
Si nombre1 va seguido por un parntesis o nombre1 no coincide con el nombre
de un atributo del tipo destino, la operacin de desreferencia se trata como una
invocacin de mtodo. El nombre del mtodo invocado es nombre1. El sujeto
del mtodo es la fila destino, que se considera como una instancia de su tipo
estructurado. Si no existe ninguna fila destino cuyo identificador de objeto
coincida con la expresin de referencia, el sujeto del mtodo es un valor nulo
del tipo destino. Las expresiones entre parntesis, si las hay, proporcionan los
restantes parmetros de la invocacin del mtodo. El proceso normal se utiliza
para la resolucin de la invocacin del mtodo. El tipo resultante del mtodo
seleccionado (que puede contener nulos) determina el tipo resultante de la
operacin de desreferencia.

El ID de autorizacin de la sentencia que utiliza una operacin de desreferencia


debe tener el privilegio SELECT sobre la tabla de destino de la expresin-ref-mbito
(SQLSTATE 42501).

Captulo 2. Elementos del lenguaje 209


Operaciones de desreferencia

Una operacin de desreferencia no puede nunca modificar valores de la base de


datos. Si se utiliza una operacin de desreferencia para invocar un mtodo
mutador, ste modifica una copia de la fila destino y devuelve la copia, dejando
inalterada la base de datos.

Ejemplos:
v Suponga que existe una tabla EMPLOYEE que contiene una columna
denominada DEPTREF, que es un tipo de referencia con mbito para una tabla
con tipo basada en un tipo que incluye el atributo DEPTNAME. Los valores de
DEPTREF de la tabla EMPLOYEE deben corresponderse con los valores de la
columna de OID de la tabla de destino de la columna DEPTREF.
SELECT EMPNO, DEPTREF>DEPTNAME
FROM EMPLOYEE
v Utilizando las mismas tablas que en el ejemplo anterior, utilice una operacin de
desreferencia para invocar un mtodo llamado BUDGET, con la fila destino
como parmetro sujeto y '1997' como parmetro adicional.
SELECT EMPNO, DEPTREF>BUDGET(1997) AS DEPTBUDGET97
FROM EMPLOYEE

Informacin relacionada:
v Sentencia CREATE TABLE en Consulta de SQL, Volumen 2

210 Consulta de SQL - Volumen 1


Funciones OLAP

Funciones OLAP
especificacin-OLAP:

especificacin-ordenamiento
especificacin-numeracin
especificacin-agregacin

especificacin-ordenamiento:

RANK () OVER ( 
DENSE_RANK () clusula-particin-ventana

 clusula-orden-ventana )

especificacin-numeracin:

ROW_NUMBER () OVER ( 
clusula-particin-ventana

 )
clusula-orden-ventana

especificacin-agregacin:

funcin-columna OVER ( 
clusula-particin-ventana

 )
RANGE BETWEEN UNBOUNDED PRECEDING AND CURRENT ROW
clusula-orden-ventana
clusula-grupo-agregacin-ventana

clusula-particin-ventana:

PARTITION BY  expresin-particionamiento

clusula-orden-ventana:

ORDER BY  expresin-clave-clasificacin opcin asc


opcin desc
ORDER OF diseador-tabla

opcin asc:

ASC NULLS LAST

NULLS FIRST

Captulo 2. Elementos del lenguaje 211


Funciones OLAP

opcin desc:

NULLS FIRST
DESC
NULLS LAST

clusula-grupo-agregacin-ventana:

ROWS inicio-grupo
RANGE entre-grupo
final-grupo

inicio-grupo:

UNBOUNDED PRECEDING
constante-sin-signo PRECEDING
CURRENT ROW

entre-grupo:

BETWEEN lmite-grupo1 AND lmite-grupo2

lmite-grupo1:

UNBOUNDED PRECEDING
constante-sin-signo PRECEDING
constante-sin-signo FOLLOWING
CURRENT ROW

lmite-grupo2:

UNBOUNDED FOLLOWING
constante-sin-signo PRECEDING
constante-sin-signo FOLLOWING
CURRENT ROW

final-grupo:

UNBOUNDED FOLLOWING
constante-sin-signo FOLLOWING

Las funciones OLAP (On-Line Analytical Processing) devuelven informacin sobre


ordenacin y numeracin de filas y sobre funciones de columna existentes, as
como un valor escalar en el resultado de una consulta. Se puede incluir una
funcin OLAP en expresiones, en una lista de seleccin o en la clusula ORDER BY
de una sentencia SELECT (SQLSTATE 42903). Una funcin OLAP no se puede
utilizar en un argumento con una expresin XMLQUERY ni XMLEXISTS
(SQLSTATE 42903). Las funciones OLAP no se pueden utilizar como argumento de
una funcin de columna (SQLSTATE 42607). La funcin OLAP se aplica a la tabla
resultante de la subseleccin ms interna donde reside la funcin OLAP.

212 Consulta de SQL - Volumen 1


Funciones OLAP

Cuando se utiliza una funcin OLAP, se especifica una ventana que define las filas
a las que se aplica la funcin, y en qu orden. Cuando la funcin OLAP se utiliza
con una funcin de columna, las filas pertinentes se pueden definir con ms
detalle, con respecto a la fila actual, en forma de rango o indicando un nmero de
filas que preceden y siguen a la fila actual. Por ejemplo, dentro de una divisin por
meses, se puede calcular un valor promedio respecto a los tres meses anteriores.

La funcin de ordenacin calcula la posicin ordinal de una fila dentro de la


ventana. Las filas que no son distintas con respecto a la ordenacin dentro de sus
ventanas tienen asignada la misma posicin. Los resultados de la ordenacin se
pueden definir con o sin huecos en los nmeros que resultan de valores
duplicados.

Si se especifica RANK, la posicin de una fila se define como 1 ms el nmero de


filas que preceden estrictamente a la fila. Por lo tanto, si dos o ms filas no difieren
con respecto a la ordenacin, habr uno o ms huecos en la numeracin jerrquica
secuencial.

Si se especifica DENSE_RANK (o DENSERANK), el rango de una fila se define


como 1 ms el nmero de filas que la preceden que son distintas respecto a la
ordenacin. Por tanto, no habr huecos en la numeracin jerrquica secuencial.

La funcin ROW_NUMBER (o ROWNUMBER) calcula el nmero secuencial de la


fila dentro de la ventana definida por la ordenacin, empezando por 1 para la
primera fila. Si la clusula ORDER BY no est especificada en la ventana, los
nmeros de fila se asignan a las filas en un orden arbitrario, tal como son
devueltas por la subseleccin (no de acuerdo con ninguna clusula ORDER BY de
la sentencia-select).

Si se utiliza la clusula FETCH FIRST n ROWS ONLY junto con la funcin


ROW_NUMBER, es posible que el nmero de filas no se visualice en orden. La
clusula FETCH FIRST se aplica despus de que se haya generado el conjunto de
resultados (incluidas las asignaciones ROW_NUMBER); por lo tanto, si el orden del
nmero de filas no es el mismo que el orden del conjunto de resultados, es posible
que falten algunos nmeros asignados en la secuencia.

El tipo de datos del resultado de RANK, DENSE_RANK o ROW_NUMBER es


BIGINT. El resultado no puede ser nulo.
PARTITION BY (expresin-particionamiento,...)
Define la particin que se utiliza para aplicar la funcin. Una
expresin-particionamiento es una expresin utilizada para definir el
particionamiento del conjunto resultante. Cada nombre-columna referenciado en
una expresin-particionamiento debe hacer referencia sin ambigedades a una
columna del conjunto resultante de la sentencia de subseleccin donde reside
la funcin OLAP (SQLSTATE 42702 42703). Una expresin-particionamiento no
pueden incluir una seleccin completa escalar. ni una expresin XMLQUERY ni
XMLEXISTS (SQLSTATE 42822) ni cualquier funcin ni consulta que no sea
determinista o que tenga una accin externa (SQLSTATE 42845).
ORDER BY (expresin-clave-clasificacin,...)
Define la ordenacin de las filas dentro de una particin que determina el
valor de la funcin OLAP o el significado de los valores de fila en la
clusula-grupo-agregacin-ventana (no define la ordenacin del conjunto
resultante de la consulta).

Captulo 2. Elementos del lenguaje 213


Funciones OLAP

expresin-clave-clasificacin
Una expresin utilizada para definir la ordenacin de las filas dentro de una
particin de ventana. Cada nombre de columna referenciado en una
expresin-clave-clasificacin debe identificar, sin ambigedades, una columna del
conjunto resultante de la subseleccin, incluida la funcin OLAP (SQLSTATE
42702 42703). Una expresin-clave-clasificacin no puede incluir una seleccin
completa escalar. ni una expresin XMLQUERY ni XMLEXISTS (SQLSTATE
42822) ni cualquier funcin ni consulta que no sea determinista o que tenga
una accin externa (SQLSTATE 42845). Esta clusula es necesaria para las
funciones RANK y DENSE_RANK (SQLSTATE 42601).
ASC
Utiliza los valores de la expresin-clave-clasificacin en orden ascendente.
DESC
Utiliza los valores de la expresin-clave-clasificacin en orden descendente.
NULLS FIRST
La ordenacin de la ventana tiene en cuenta los valores nulos antes de todos
los valores no nulos en el orden de clasificacin.
NULLS LAST
La ordenacin de la ventana tiene en cuenta los valores nulos despus de todos
los valores no nulos en el orden de clasificacin.
ORDER OF diseador-tabla
Especifica que debe aplicarse el mismo orden utilizado en diseador-tabla a la
tabla resultante de la subseleccin. Debe haber una referencia de tabla que se
corresponda con diseador-tabla en la clusula FROM de la subseleccin que
especifica esta clusula (SQLSTATE 42703). La subseleccin (o seleccin
completa) correspondiente al diseador-tabla especificado debe incluir una
clusula ORDER BY que dependa de los datos (SQLSTATE 428FI). El orden
que se aplica es el mismo que si las columnas de la clusula ORDER BY de la
subseleccin anidada (o seleccin completa) se incluyeran en la subseleccin
exterior (o seleccin completa) y estas columnas se especificaran en lugar de la
clusula ORDER OF.
clusula-grupo-agregacin-ventana
El grupo de agregacin de una fila R es un conjunto de filas definidas en
relacin a R (en la ordenacin de las filas de la particin de R). Esta clusula
especifica el grupo de agregacin. Si no se especifica esta clusula, el valor por
omisin es el mismo que RANGE BETWEEN UNBOUNDED PRECEDING
AND CURRENT ROW, lo que proporciona un resultado de agregacin
acumulativo.
Si se especifica una clusula-orden-ventana, el comportamiento por omisin es
diferente cuando no se especifica clusula-grupo-agregacin-ventana. El grupo
de agregacin de ventana consta de todas las filas de la particin R que
preceden a R o que son iguales a R en la clasificacin de ventanas de la
particin de ventanas definida por la clusula-orden-ventana.
ROWS
Indica que el grupo de agregacin se define mediante el contaje de filas.
RANGE
Indica que el grupo de agregacin se define mediante un valor de
desplazamiento con respecto a una clave de clasificacin.
inicio-grupo
Especifica el punto de inicio del grupo de agregacin. El final del grupo de

214 Consulta de SQL - Volumen 1


Funciones OLAP

agrupacin es la fila actual. La clusula inicio-grupo es equivalente a una


clusula entre-grupo en la forma BETWEEN inicio-grupo AND CURRENT
ROW.
entre-grupo
Especifica el inicio y final del grupo de agregacin basndose en ROWS o
RANGE.
final-grupo
Especifica el punto final del grupo de agregacin. El inicio del grupo de
agregacin es la fila actual. La especificacin de la clusula final-grupo es
equivalente a la de una clusula entre-grupo del formato BETWEEN
CURRENT ROW AND final-grupo.
UNBOUNDED PRECEDING
Incluye la particin completa que precede a la fila actual. Esto se puede
especificar con ROWS o RANGE. Tambin se puede especificar con varias
expresiones-clave-clasificacin en la clusula-orden-ventana.
UNBOUNDED FOLLOWING
Incluye la particin completa que sigue a la fila actual. Esto se puede
especificar con ROWS o RANGE. Tambin se puede especificar con varias
expresiones-clave-clasificacin en la clusula-orden-ventana.
CURRENT ROW
Especifica el inicio o el final del grupo de agregacin basndose en la fila
actual. Si se especifica ROWS, la fila actual es el lmite del grupo de
agregacin. Si se especifica RANGE, el lmite del grupo de agregacin
incluye el conjunto de filas con los mismos valores para las
expresiones-clave-clasificacin que la fila actual. Esta clusula no se puede
especificar en lmite-grupo2 si lmite-grupo1 especifica el valor FOLLOWING.
valor PRECEDING
Especifica el rango o nmero de filas que preceden a la fila actual. Si se
especifica ROWS, valor es un entero positivo que indica un nmero de
filas. Si se especifica RANGE, el tipo de datos de valor debe ser comparable
con el tipo de la expresin-clave-clasificacin de la clusula-orden-ventana.
Slo puede haber una sola expresin-clave-clasificacin y el tipo de datos
de esa expresin debe permitir la operacin de resta. Esta clusula no se
puede especificar en lmite-grupo2 si lmite-grupo1 es CURRENT ROW o
valor FOLLOWING.
valor FOLLOWING
Especifica el rango o nmero de filas que siguen a la fila actual. Si se
especifica ROWS, valor es un entero positivo que indica un nmero de
filas. Si se especifica RANGE, el tipo de datos de valor debe ser comparable
con el tipo de la expresin-clave-clasificacin de la clusula-orden-ventana.
Slo puede haber una sola expresin-clave-clasificacin y el tipo de datos
de esa expresin debe permitir la operacin de suma.

Ejemplos:
v Este ejemplo muestra la ordenacin de los empleados, dispuestos por apellidos,
de acuerdo con un salario total (salario ms prima) que sea mayor que $30.000.
SELECT EMPNO, LASTNAME, FIRSTNME, SALARY+BONUS AS TOTAL_SALARY,
RANK() OVER (ORDER BY SALARY+BONUS DESC) AS RANK_SALARY
FROM EMPLOYEE WHERE SALARY+BONUS > 30000
ORDER BY LASTNAME
Observe que si el resultado debe estar ordenado de acuerdo con la escala de
salarios, debe sustituir ORDER BY LASTNAME por:

Captulo 2. Elementos del lenguaje 215


Funciones OLAP

ORDER BY RANK_SALARY

o
ORDER BY RANK() OVER (ORDER BY SALARY+BONUS DESC)
v Este ejemplo ordena los departamentos de acuerdo con su salario total medio.
SELECT WORKDEPT, AVG(SALARY+BONUS) AS AVG_TOTAL_SALARY,
RANK() OVER (ORDER BY AVG(SALARY+BONUS) DESC) AS RANK_AVG_SAL
FROM EMPLOYEE
GROUP BY WORKDEPT
ORDER BY RANK_AVG_SAL
v Este ejemplo ordena los empleados de un departamento de acuerdo con su nivel
de formacin. Si varios empleados de un departamento tienen el mismo nivel,
ello no debe suponer un aumento del nivel siguiente.
SELECT WORKDEPT, EMPNO, LASTNAME, FIRSTNME, EDLEVEL,
DENSE_RANK() OVER
(PARTITION BY WORKDEPT ORDER BY EDLEVEL DESC) AS RANK_EDLEVEL
FROM EMPLOYEE
ORDER BY WORKDEPT, LASTNAME
v Este ejemplo proporciona nmeros a las filas del resultado de una consulta.
SELECT ROW_NUMBER() OVER (ORDER BY WORKDEPT, LASTNAME) AS NUMBER,
LASTNAME, SALARY
FROM EMPLOYEE
ORDER BY WORKDEPT, LASTNAME
v Este ejemplo lista los cinco empleados con mayores ingresos.
SELECT EMPNO, LASTNAME, FIRSTNME, TOTAL_SALARY, RANK_SALARY
FROM (SELECT EMPNO, LASTNAME, FIRSTNME, SALARY+BONUS AS TOTAL_SALARY,
RANK() OVER (ORDER BY SALARY+BONUS DESC) AS RANK_SALARY
FROM EMPLOYEE) AS RANKED_EMPLOYEE
WHERE RANK_SALARY < 6
ORDER BY RANK_SALARY

Observe que primero se ha utilizado una expresin de tabla anidada para


calcular el resultado, incluidos los niveles de ordenacin, para poder utilizar el
nivel en la clusula WHERE. Tambin se podra haber utilizado una expresin
de tabla comn.

Informacin relacionada:
v Identificadores en la pgina 65

216 Consulta de SQL - Volumen 1


Invocacin de mtodos

Invocacin de mtodos
invocacin-mtodo:

expresin-sujeto..nombre-mtodo
( )
,

 expresin

El mtodo observador y el mtodo mutador, ambos generados por el sistema, as


como los mtodos definidos por el usuario se invocan utilizando el operador
formado por dos puntos.
expresin-sujeto
Es una expresin con un tipo resultante esttico que es un tipo estructurado
definido por el usuario.
nombre-mtodo
Es el nombre no calificado de un mtodo. El tipo esttico de expresin-sujeto o
uno de sus supertipos debe incluir un mtodo que tenga el nombre
especificado.
(expresin,...)
Los argumentos de nombre-mtodo se especifican entre parntesis. Se pueden
utilizar parntesis vacos para indicar que no existen argumentos. El
nombre-mtodo y los tipos de datos de las expresiones argumento especificadas
se utilizan para obtener el mtodo especfico, basndose en el tipo esttico de
expresin-sujeto.

El operador .. utilizado para invocar el mtodo es un operador infijo que define


una prioridad de operaciones de izquierda a derecha. Por ejemplo, las dos
expresiones siguientes son equivalentes:
a..b..c + x..y..z

y
((a..b)..c) + ((x..y)..z)

Si un mtodo no tiene ningn otro parmetro que no sea su sujeto, ste se puede
invocar con o sin parntesis. Por ejemplo, las dos expresiones siguientes son
equivalentes:
point1..x
point1..x()

Los sujetos nulos de una invocacin de mtodo se gestionan de este modo:


v Si un mtodo mutador generado por el sistema se invoca con un sujeto nulo, se
produce un error (SQLSTATE 2202D)
v Si cualquier mtodo distinto de un mtodo mutador generado por el sistema se
invoca con un sujeto nulo, el mtodo no se ejecuta y su resultado es nulo. Esta
regla incluye los mtodos definidos por el usuario con SELF AS RESULT.

Cuando se crea un objeto de base de datos (por ejemplo, un paquete, vista o


activador), se determina el mtodo de ajuste ptimo que existe para cada
invocacin de mtodo.

Captulo 2. Elementos del lenguaje 217


Invocacin de mtodos

Nota: Los mtodos de los tipos definidos con WITH FUNCTION ACCESS tambin
se pueden invocar utilizando la notacin normal de funciones. La resolucin
de la funcin considera como aceptables todas las funciones, as como los
mtodos con acceso a funcin. Sin embargo, las funciones no se pueden
invocar utilizando la invocacin de mtodo. La resolucin del mtodo
considera aceptables todos los mtodos, pero no las funciones. Si la
resolucin no proporciona una funcin o mtodo apropiado, se produce un
error (SQLSTATE 42884).

Ejemplo:
v Este ejemplo utiliza el operador .. para invocar un mtodo llamado AREA. Se
supone que existe una tabla llamada RINGS, con una columna CIRCLE_COL del
tipo estructurado CIRCLE. Se supone tambin que el mtodo AREA se ha
definido previamente para el tipo CIRCLE como AREA() RETURNS DOUBLE.
SELECT CIRCLE_COL..AREA() FROM RINGS

Informacin relacionada:
v Mtodos en la pgina 181

218 Consulta de SQL - Volumen 1


Tratamiento de los subtipos

Tratamiento de los subtipos


tratamiento-subtipo:

TREAT ( expresin AS tipo-datos )

El tratamiento-subtipo se utiliza para convertir una expresin de tipo estructurado


en uno de sus subtipos. El tipo esttico de expresin debe ser un tipo estructurado
definido por el usuario, y ese tipo debe ser el mismo que tipo-datos o que un
subtipo de l. Si el nombre de tipo especificado en tipo-datos no est calificado, se
utiliza la va de acceso de SQL para resolver la referencia al tipo. El tipo esttico
del resultado de tratamiento-subtipo es tipo-datos, y el valor del tratamiento-subtipo
es el valor de la expresin. Durante la ejecucin, si el tipo dinmico de la expresin
no es tipo-datos o un subtipo de tipo-datos, se produce un error (SQLSTATE 0D000).

Ejemplo:
v En este ejemplo, todas las instancias de objetos de la columna CIRCLE_COL
estn definidas con el tipo dinmico COLOREDCIRCLE para una aplicacin. Se
utiliza la consulta siguiente para invocar el mtodo RGB para tales objetos. Se
supone que existe una tabla llamada RINGS, con una columna CIRCLE_COL del
tipo estructurado CIRCLE. Se supone tambin que COLOREDCIRCLE es un
subtipo de CIRCLE y que el mtodo RGB se ha definido previamente para
COLOREDCIRCLE como RGB() RETURNS DOUBLE.
SELECT TREAT (CIRCLE_COL AS COLOREDCIRCLE)..RGB()
FROM RINGS
Durante la ejecucin, si hay instancias del tipo dinmico CIRCLE, se produce un
error (SQLSTATE 0D000). Este error se puede evitar utilizando el predicado
TYPE en una expresin CASE, del modo siguiente:
SELECT (CASE
WHEN CIRCLE_COL IS OF (COLOREDCIRCLE)
THEN TREAT (CIRCLE_COL AS COLOREDCIRCLE)..RGB()
ELSE NULL
END)
FROM RINGS

Informacin relacionada:
v Predicado TYPE en la pgina 242

Captulo 2. Elementos del lenguaje 219


Referencia de secuencia

Referencia de secuencia
referencia-secuencia:

expresin-nextval
expresin-prevval

expresin-nextval:

NEXT VALUE FOR nombre-secuencia

expresin-prevval:

PREVIOUS VALUE FOR nombre-secuencia

NEXT VALUE FOR nombre-secuencia


Una expresin NEXT VALUE genera y devuelve el siguiente valor de la
secuencia especificada por nombre-secuencia.
PREVIOUS VALUE FOR nombre-secuencia
Una expresin PREVIOUS VALUE devuelve el valor generado ms
recientemente de la secuencia especificada para una sentencia anterior del
proceso de aplicacin actual. Se puede hacer referencia a este valor
repetidamente utilizando expresiones PREVIOUS VALUE que especifican el
nombre de la secuencia. Pueden existir mltiples instancias de las expresiones
PREVIOUS VALUE especificando el mismo nombre de secuencia en una sola
sentencia; todas ellas devuelven el mismo valor. En un entorno de bases de
datos particionadas, es posible que una expresin PREVIOUS VALUE no
devuelva el valor generado ms recientemente.
Una expresin PREVIOUS VALUE slo se puede utilizar si ya se ha hecho
referencia a una expresin NEXT VALUE que especifica el mismo nombre de
secuencia en el proceso de aplicacin actual, ya sea en la transaccin actual ya
sea en una transaccin anterior (SQLSTATE 51035).

Notas:
v Se genera un valor nuevo para una secuencia cuando la expresin NEXT VALUE
especifica el nombre de dicha secuencia. Sin embargo, si existen mltiples
instancias de una expresin NEXT VALUE que especifican el mismo nombre de
secuencia en una consulta, el contador para la secuencia se incrementa slo una
vez para cada fila del resultado y todas las instancias de NEXT VALUE
devuelven el mismo valor para una fila del resultado.
v Se puede utilizar el mismo nmero de secuencia como valor de clave de
unicidad en dos tablas independientes haciendo referencia al nmero de
secuencia con una expresin NEXT VALUE para la primera fila (esto genera el
valor de secuencia) y una expresin PREVIOUS VALUE para las dems filas (la
instancia de PREVIOUS VALUE hace referencia al valor de secuencia generado
ms recientemente en la sesin actual), tal como se muestra a continuacin:
INSERT INTO order(orderno, cutno)
VALUES (NEXT VALUE FOR order_seq, 123456);

INSERT INTO line_item (orderno, partno, quantity)


VALUES (PREVIOUS VALUE FOR order_seq, 987654, 1);

220 Consulta de SQL - Volumen 1


Referencia de secuencia

v Las expresiones NEXT VALUE y PREVIOUS VALUE pueden especificarse en los


lugares siguientes:
sentencia-select o sentencia SELECT INTO (en la clusula-select, a condicin
de que la sentencia no contenga una palabra clave DISTINCT, una clusula
GROUP BY, una clusula ORDER BY, una palabra clave UNION, una palabra
clave INTERSECT o una palabra clave EXCEPT)
sentencia INSERT (en una clusula VALUES)
sentencia INSERT (en la clusula-select de la seleccin completa (fullselect))
sentencia UPDATE (en la clusula SET (una sentencia UPDATE buscada o
colocada), excepto que no se puede especificar NEXT VALUE en la
clusula-select de la seleccin completa de una expresin de la clusula SET)
setencia SET variable (excepto en la clusula-select de la seleccin completa
de una expresin; una expresin NEXT VALUE puede especificarse en un
activador, pero una expresin PREVIOUS VALUE no puede especificarse)
sentencia VALUES INTO (en la clusula-select de la seleccin completa
(fullselect) de una expresin)
sentencia CREATE PROCEDURE (en el cuerpo-rutina de un procedimiento
SQL)
sentencia CREATE TRIGGER en la accin-activada (se puede especificar una
expresin NEXT VALUE, pero no se puede especificar una expresin
PREVIOUS VALUE)
v Las expresiones NEXT VALUE y PREVIOUS VALUE no se pueden especificar
(SQLSTATE 428F9) en los lugares siguientes:
Las condiciones de unin de una unin externa completa
El valor DEFAULT de una columna en una sentencia CREATE o ALTER
TABLE
La definicin de columna generada en una sentencia CREATE o ALTER
TABLE
La definicin de tabla de resumen de una sentencia CREATE TABLE o ALTER
TABLE
La condicin de una restriccin CHECK
Sentencia CREATE TRIGGER (se puede especificar una expresin NEXT
VALUE, pero no se puede especificar una expresin PREVIOUS VALUE)
Sentencia CREATE VIEW
Sentencia CREATE METHOD
Sentencia CREATE FUNCTION
Una lista de argumentos de una expresin XMLQUERY, XMLEXISTS o
XMLTABLE
v Adems, no se puede especificar una expresin NEXT VALUE (SQLSTATE
428F9) en los lugares siguientes:
La expresin CASE
La lista de parmetros de una funcin agregada
La subconsulta en un contexto distinto de los explcitamente permitidos
mencionados anteriormente
La sentencia SELECT para la que la SELECT externa contiene un operador
DISTINCT
La condicin de unin de una unin
La sentencia SELECT para la que la SELECT externa contiene una clusula
GROUP BY

Captulo 2. Elementos del lenguaje 221


Referencia de secuencia

La sentencia SELECT para la que la SELECT externa est combinada con otra
sentencia SELECT utilizando el operador establecido UNION, INTERSECT o
EXCEPT
Una expresin de tabla anidada
La lista de parmetros de una funcin de tabla
La clusula WHERE de la sentencia SELECT ms externa o una sentencia
DELETE o UPDATE
La clusula ORDER BY de la sentencia SELECT ms externa
La clusula-select de la seleccin completa (fullselect) de una expresin, en la
clusula SET de una sentencia UPDATE
La sentencia IF, WHILE, DO ... UNTIL o CASE de una rutina SQL
v Cuando se genera un valor para una secuencia, se consume dicho valor y, la
siguiente vez que se solicita un valor, se genera un valor nuevo. Esto es vlido
incluso cuando la sentencia que contiene la expresin NEXT VALUE falla o se
retrotrae.
Si una sentencia INSERT incluye una expresin NEXT VALUE en la lista
VALUES para la columna y si se produce un error en algn punto durante la
ejecucin de INSERT (puede ser un problema al generar el siguiente valor de
secuencia o un problema con el valor de otra columna), se produce una
anomala de insercin (SQLSTATE 23505) y se considera que el valor generado
para la secuencia se ha consumido. En algunos casos, al volver a emitir la misma
sentencia INSERT se puede obtener un resultado satisfactorio.
Por ejemplo, considere un error que es el resultado de la existencia de un ndice
de unicidad para la columna para la que se ha utilizado NEXT VALUE y el
valor de secuencia generado ya existe en el ndice. Es posible que el siguiente
valor generado para la secuencia sea un valor que no existe en el ndice y, por
consiguiente, el INSERT subsiguiente dar un resultado satisfactorio.
v Si al generar un valor para un secuencia, se excede el valor mximo para la
secuencia (o el valor mnimo para una secuencia descendente) y no se permiten
ciclos, se producir un error (SQLSTATE 23522). En este caso, el usuario puede
modificar (ALTER) la secuencia para ampliar el rango de valores aceptables,
habilitar ciclos para la secuencia o eliminar (DROP) la secuencia y crear
(CREATE) una nueva con un tipo de datos diferente que tenga un mayor rango
de valores.
Por ejemplo, una secuencia puede haberse definido con un tipo de datos de
SMALLINT y, finalmente, la secuencia se queda sin valores asignables. Elimine
(DROP) y vuelva a crear la secuencia con la nueva definicin para volver a
definir la secuencia como INTEGER.
v Una referencia a una expresin NEXT VALUE en la sentencia de seleccin
(select) de un cursor hace referencia a un valor que se genera para una fila de la
tabla resultante. Se genera un valor de secuencia para una expresin NEXT
VALUE para cada fila que se busca desde la base de datos. Si se realiza el
bloqueo en el cliente, puede que los valores se hayan generado en el servidor
antes del proceso de la sentencia FETCH. Esto puede producirse cuando existe
bloqueo de las filas de la tabla resultante. Si la aplicacin cliente no capta
(FETCH) explcitamente todas las filas que la base de datos ha materializado, la
aplicacin no ver los resultados de todos los valores de secuencia generados
(para las filas materializadas que no se ha devuelto).
v Una referencia a una expresin PREVIOUS VALUE de la sentencia de seleccin
(select) de un cursor hace referencia a un valor que se ha generado para la
secuencia especificada antes de la apertura del cursor. Sin embargo, el cierre del
cursor puede afectar a los valores devueltos por PREVIOUS VALUE para la
secuencia especificada en las sentencias futuras o incluso para la misma

222 Consulta de SQL - Volumen 1


Referencia de secuencia

sentencia en el caso de que se vuelva a abrir el cursor. Esto suceder cuando la


sentencia de seleccin del cursor incluya una referencia a NEXT VALUE para el
mismo nombre de secuencia.
v Compatibilidades
Para mantener la compatibilidad con las versiones anteriores de DB2:
- NEXTVAL y PREVVAL pueden especificarse en lugar de NEXT VALUE y
PREVIOUS VALUE.

Ejemplos:

Supongamos que existe una tabla llamada order y que se crea una secuencia
llamada order_seq del modo siguiente:
CREATE SEQUENCE order_seq
START WITH 1
INCREMENT BY 1
NO MAXVALUE
NO CYCLE
CACHE 24

A continuacin se muestran algunos ejemplos de cmo generar un nmero de


secuencia order_seq con una expresin NEXT VALUE:
INSERT INTO order(orderno, custno)
VALUES (NEXT VALUE FOR order_seq, 123456);

o
UPDATE order
SET orderno = NEXT VALUE FOR order_seq
WHERE custno = 123456;

o
VALUES NEXT VALUE FOR order_seq INTO :hv_seq;

Captulo 2. Elementos del lenguaje 223


Predicados

Predicados

Predicados
Un predicado especifica una condicin que es cierta, falsa o desconocida acerca de
una fila o un grupo determinado.

Las siguientes reglas se aplican a todos los tipos de predicados:


v Todos los valores especificados en un predicado debe ser compatibles.
v Una expresin que se utiliza en un predicado bsico, cuantificado, IN o
BETWEEN no debe dar como resultado una serie de caracteres con un atributo
de longitud superior a 4 000, una serie de caracteres grficos con un atributo de
longitud superior a 2 000 ni una serie LOB de cualquier tamao.
v El valor de una variable del lenguaje principal puede ser nulo (es decir, la
variable puede tener una variable indicadora negativa).
v La conversin de la pgina de cdigos de los operandos de los predicados que
implican dos o ms operandos, a excepcin de LIKE, se realiza segn las reglas
de conversin de series.
v La utilizacin de un valor DATALINK se limita al predicado NULL.
v La utilizacin de un valor de tipo estructurado est limitado al predicado NULL
y al predicado TYPE.
v En una base de datos Unicode, todos los predicados que acepten una serie de
caracteres o grfica aceptarn todo tipo de serie para el que se soporte la
conversin.

Una seleccin completa es una forma de sentencia SELECT que, cuando se utiliza
en un predicado, tambin se denomina una subconsulta.

Informacin relacionada:
v Seleccin completa en la pgina 569
v Reglas para la conversin de series en la pgina 133

224 Consulta de SQL - Volumen 1


Condiciones de bsqueda

Condiciones de bsqueda
condicin-bsqueda:

predicado 
NOT SELECTIVITY constante-numrica
(condicin-bsqueda)

 
AND predicado
OR NOT SELECTIVITY constante-numrica
(condicin-bsqueda)

Una condicin de bsqueda especifica una condicin que es verdadera, falsa, o


desconocida acerca de una fila determinada.

El resultado de una condicin de bsqueda se deriva por la aplicacin de


operadores lgicos (AND, OR, NOT) especificados al resultado de cada predicado
especificado. Si no se especifican operadores lgicos, el resultado de la condicin
de bsqueda es el resultado del predicado especificado.

AND y OR se definen en la Tabla 14, en la que P y Q son unos predicados


cualesquiera:
Tabla 14. Tablas de evaluacin para AND y OR
P Q P AND Q P OR Q
Verdadero Verdadero Verdadero Verdadero
Verdadero Falso Falso Verdadero
Verdadero Desconocido Desconocido Verdadero
Falso Verdadero Falso Verdadero
Falso Falso Falso Falso
Falso Desconocido Falso Desconocido
Desconocido Verdadero Desconocido Verdadero
Desconocido Falso Falso Desconocido
Desconocido Desconocido Desconocido Desconocido

NOT(verdadero) es falso, NOT(falso) es verdadero y NOT(desconocido) es


desconocido.

En primer lugar se evalan las condiciones de bsqueda entre parntesis. Si el


orden de evaluacin no se especifica mediante parntesis, NOT se aplica antes que
AND y AND es aplica antes que OR. El orden en el que se evalan los operadores
del mismo nivel de prioridad no est definido, para permitir la optimizacin de
condiciones de bsqueda.

Captulo 2. Elementos del lenguaje 225


Condiciones de bsqueda

Figura 12. Orden de evaluacin de las condiciones de bsqueda

SELECTIVITY valor
La clusula SELECTIVITY se utiliza para indicar a DB2 qu porcentaje de
selectividad prevista corresponde al predicado. SELECTIVITY se puede
especificar slo cuando el predicado es un predicado definido por el usuario.
Un predicado definido por el usuario consta de una invocacin de funcin
definida por el usuario, en el contexto de una especificacin de predicado que
coincide con la existente en la clusula PREDICATES de CREATE FUNCTION.
Por ejemplo, si la funcin foo est definida con PREDICATES WHEN=1..., es
vlido utilizar SELECTIVITY de este modo:
SELECT *
FROM STORES
WHERE foo(parm,parm) = 1 SELECTIVITY 0.004

El valor de selectividad debe ser un valor literal numrico comprendido dentro


del rango inclusivo 0-1 (SQLSTATE 42615). Si SELECTIVITY no se especifica, el
valor por omisin es 0.01 (es decir, el predicado definido por el usuario debe
descartar todas las filas de la tabla excepto un 1 por ciento. El valor por
omisin de SELECTIVITY se puede modificar para una funcin determinada
actualizando su columna SELECTIVITY en la vista SYSSTAT.ROUTINES. Se
obtiene un error si la clusula SELECTIVITY se especifica para un predicado
no definido por el usuario (SQLSTATE 428E5).

Se puede utilizar una funcin definida por el usuario (UDF) como predicado
definido por el usuario y, por tanto, puede permitir la utilizacin de ndices si:
v La especificacin de predicado est presente en la sentencia CREATE
FUNCTION
v la UDF se invoca en una clusula WHERE que se compara (sintcticamente)
de la misma manera que se especifica en la especificacin de predicado
v no existe ninguna negacin (operador NOT)

Ejemplos:

En la consulta siguiente, la especificacin UDF interna de la clusula WHERE


cumple las tres condiciones y se considera que es un predicado definido por el
usuario.
SELECT *
FROM customers
WHERE within(location, :sanJose) = 1 SELECTIVITY 0.2

226 Consulta de SQL - Volumen 1


Condiciones de bsqueda

Sin embargo, la presencia de within en la consulta siguiente no permite el uso de


ndices debido a la negacin, y no se considera un predicado definido por el
usuario.
SELECT *
FROM customers
WHERE NOT(within(location, :sanJose) = 1) SELECTIVITY 0.3

En el ejemplo siguiente, se identifican los clientes y tiendas que estn a una


determinada distancia entre s. La distancia de una tienda a otra se calcula
mediante el radio de la ciudad donde viven los clientes.
SELECT *
FROM customers, stores
WHERE distance(customers.loc, stores.loc) <
CityRadius(stores.loc) SELECTIVITY 0.02

En la consulta anterior, se considera que el predicado contenido en la clusula


WHERE es un predicado definido por el usuario. El resultado producido por
CityRadius se utiliza como argumento de bsqueda para la funcin productora de
rangos.

Sin embargo, como el resultado devuelto por CityRadius se utiliza como funcin
productora de rangos, el predicado definido por el usuario no podr utilizar la
extensin de ndice definida para la columna stores.loc. Por lo tanto, la UDF slo
utilizar el ndice definido en la columna customers.loc.

Informacin relacionada:
v Sentencia CREATE FUNCTION (Escalar externa) en Consulta de SQL, Volumen
2

Captulo 2. Elementos del lenguaje 227


Predicado bsico

Predicado bsico
 expresin = expresin 
(1)
<>
<
>
(1)
<=
(1)
>=

Notas:
1 Tambin se da soporte a los formatos siguientes de operadores de
comparacin en predicados bsicos y cuantificados: ^=, ^<, ^>, !=, !< y !>. En
las pginas de cdigos 437, 819 y 850, se da soporte a los formatos =, < y
>.

Todos estos formatos especficos para el producto de los operadores de


comparacin solamente estn pensados para dar soporte al SQL existente que
emplea estos operadores y no se recomienda su utilizacin para escribir
sentencias de SQL nuevas.

Un predicado bsico compara dos valores.

Si el valor de cualquier operando es nulo, el resultado del predicado ser


desconocido. De lo contrario el resultado es verdadero o falso.

Para valores x e y:
Predicado Es verdadero si y slo si...
x=y x es igual a y
x <> y x es diferente de y
x<y x es menor que y
x>y x es mayor que y
x >= y x es mayor o igual que y
x <= y x es menor o igual que y

Ejemplos:
EMPNO=528671
SALARY < 20000
PRSTAFF <> :VAR1
SALARY > (SELECT AVG(SALARY) FROM EMPLOYEE)

228 Consulta de SQL - Volumen 1


Predicado cuantificado

Predicado cuantificado
 expresin1 = SOME (seleccin completa1) 
(1) ANY
<> ALL
<
>
<=
>=
,

(  expresin2 ) = SOME (seleccin completa2)


ANY

Notas:
1 Tambin se da soporte a los formatos siguientes de operadores de
comparacin en predicados bsicos y cuantificados: ^=, ^<, ^>, !=, !< y !>. En
las pginas de cdigos 437, 819 y 850, se da soporte a los formatos =, < y
>.

Todos estos formatos especficos para el producto de los operadores de


comparacin solamente estn pensados para dar soporte al SQL existente que
emplea estos operadores y no se recomienda su utilizacin para escribir
sentencias de SQL nuevas.

Un predicado cuantificado compara un valor o valores con una coleccin de valores.

La seleccin completa debe identificar un nmero de columnas que sea el mismo


que el nmero de expresiones especificadas a la izquierda del operador del
predicado (SQLSTATE 428C4). La seleccin completa puede devolver cualquier
nmero de filas.

Cuando se especifica ALL:


v El resultado del predicado es verdadero si la seleccin completa no devuelve
ningn valor o si la relacin especificada es verdadera para cada valor que
devuelva la seleccin completa.
v El resultado es falso si la relacin especificada es falsa para un valor como
mnimo que devuelve la seleccin completa.
v El resultado es desconocido si la relacin especificada no es falsa para ninguno
de los valores que devuelve la seleccin completa y una comparacin como
mnimo es desconocida debido a un valor nulo.

Cuando se especifica SOME o ANY:


v El resultado del predicado es verdadero si la relacin especificada es verdadera
para cada valor de una fila como mnimo que devuelve la seleccin completa.
v El resultado es falso si la seleccin completa no devuelve ninguna fila o si la
relacin especificada es falsa para como mnimo un valor de cada fila que
devuelve la seleccin completa.
v El resultado es desconocido si la relacin especificada no es verdadera para
cualquiera de las filas y, como mnimo, una comparacin es desconocida debido
a un valor nulo.

Ejemplos: Utilice las tablas siguientes al hacer referencia a los ejemplos siguientes.

Captulo 2. Elementos del lenguaje 229


Predicado cuantificado

Figura 13.

Ejemplo 1
SELECT COLA FROM TBLAB
WHERE COLA = ANY(SELECT COLX FROM TBLXY)

Da como resultado 2,3. La subseleccin devuelve (2,3). COLA en las filas 2 y 3 es


igual al menos a uno de estos valores.

Ejemplo 2
SELECT COLA FROM TBLAB
WHERE COLA > ANY(SELECT COLX FROM TBLXY)

Da como resultado 3,4. La subseleccin devuelve (2,3). COLA en las filas 3 y 4 es


mayor que al menos uno de estos valores.

Ejemplo 3
SELECT COLA FROM TBLAB
WHERE COLA > ALL(SELECT COLX FROM TBLXY)

Da como resultado 4. La subseleccin devuelve (2,3). COLA en la fila 4 es el nico


que es mayor que estos dos valores.

Ejemplo 4
SELECT COLA FROM TBLAB
WHERE COLA > ALL(SELECT COLX FROM TBLXY
WHERE COLX<0)

Da como resultado 1,2,3,4, nulo. La subseleccin no devuelve ningn valor. Por lo


tanto, el predicado es verdadero para todas las filas de TBLAB.

Ejemplo 5
SELECT * FROM TBLAB
WHERE (COLA,COLB+10) = SOME (SELECT COLX, COLY FROM TBLXY)

La subseleccin devuelve todas las entradas de TBLXY. El predicado es verdadero


para la subseleccin, por lo tanto el resultado es el siguiente:
COLA COLB
----------- -----------
2 12
3 13

Ejemplo 6
SELECT * FROM TBLAB
WHERE (COLA,COLB) = ANY (SELECT COLX,COLY-10 FROM TBLXY)

230 Consulta de SQL - Volumen 1


Predicado cuantificado

La subseleccin devuelve COLX y COLY-10 de TBLXY. El predicado es verdadero


para la subseleccin, por lo tanto el resultado es el siguiente:
COLA COLB
----------- -----------
2 12
3 13

Captulo 2. Elementos del lenguaje 231


predicado BETWEEN

Predicado BETWEEN
 expresin BETWEEN expresin AND expresin 
NOT

El predicado BETWEEN compara un valor con un rango de valores.

El predicado BETWEEN:
valor1 BETWEEN valor2 AND valor3

es equivalente a la condicin de bsqueda:


valor1 >= valor2 AND valor1 <= valor3

El predicado BETWEEN:
valor1 NOT BETWEEN valor2 AND valor3

es equivalente a la condicin de bsqueda:


NOT(valor1 BETWEEN valor2 AND valor3); es decir,
valor1 < valor2 OR valor1 > valor3.

El primer operando (expresin) no puede incluir ninguna funcin que sea variante
o que tenga una accin externa (SQLSTATE 426804).

En una mezcla de valores de indicacin de fecha y hora y representaciones de serie


de caracteres, todos los valores se convierten al tipo de datos del operando de
fecha y hora.

Ejemplos:

Ejemplo 1
EMPLOYEE.SALARY BETWEEN 20000 AND 40000

Devuelve todos los salarios comprendidos entre 20.000 y 40.000 dlares.

Ejemplo 2
SALARY NOT BETWEEN 20000 + :HV1 AND 40000

Suponiendo que :HV1 es 5000, da como resultado todos los salarios que son
inferiores a 25.000 dlares y superiores a 40.000.

232 Consulta de SQL - Volumen 1


predicado EXISTS

Predicado EXISTS
 EXISTS (seleccin completa) 

El predicado EXISTS comprueba la existencia de ciertas filas.

La seleccin completa puede especificar cualquier nmero de columnas y


v El resultado es verdadero slo si el nmero de filas especificadas mediante la
seleccin completa no es cero.
v El resultado es falso slo si el nmero de filas especificadas es cero
v El resultado no puede ser desconocido.

Ejemplo:
EXISTS (SELECT * FROM TEMPL WHERE SALARY < 10000)

Captulo 2. Elementos del lenguaje 233


predicado IN

Predicado IN
 expresin1 IN (seleccin completa1) 
NOT ,

(  expresin2 )
expresin2
,

(  expresin3 ) IN (seleccin completa2)


NOT

El predicado IN compara un valor o valores con un conjunto de valores.

La seleccin completa debe identificar un nmero de columnas que sea el mismo


que el nmero de expresiones especificadas a la izquierda de la palabra clave IN
(SQLSTATE 428C4). La seleccin completa puede devolver cualquier nmero de
filas.
v Un predicado IN del formato:
expresin IN expresin

es equivalente a un predicado bsico del formato:


expresin = expresin
v Un predicado IN del formato:
expresin IN (seleccin completa)

es equivalente a un predicado cuantificado del formato:


expresin = ANY (seleccin completa)
v Un predicado IN del formato:
expresin NOT IN (seleccin completa)

es equivalente a un predicado cuantificado del formato:


expresin <> ALL (seleccin completa)
v Un predicado IN del formato:
expresin IN (expresina, expresinb, ..., expresink)

es equivalente a:
expresin = ANY (seleccin completa)

donde seleccin completa en el formato de la clusula-values es:


VALUES (expresina), (expresinb), ..., (expresink)
v Un predicado IN del formato:
(expresina, expresinb,..., expresink) IN (seleccin completa)

es equivalente a un predicado cuantificado del formato:


(expresina, expresinb,..., expresink) = ANY (seleccin completa)

Los valores para expresin1 y expresin2 o la columna de seleccin completa1 del


predicado IN deben ser compatibles. Cada valor de expresin3 y su columna
correspondiente de seleccin completa2 del predicado IN deben ser compatibles.
Pueden utilizarse las reglas para tipos de datos del resultado para determinar los
atributos del resultado utilizados en la comparacin.

234 Consulta de SQL - Volumen 1


predicado IN

Los valores para las expresiones del predicado IN (incluyendo las columnas
correspondientes de una seleccin completa)pueden tener pginas de cdigos
diferentes. Si se precisa realizar una conversin, la pgina de cdigos se determina
aplicando las reglas para las conversiones de series a la lista IN primero y,
posteriormente, al predicado, utilizando la pgina de cdigos derivada para la lista
IN como segundo operando.

Ejemplos:

Ejemplo 1: lo siguiente se evala como verdadero si el valor de la fila que se


encuentra por debajo de la evaluacin en al columna DEPTNO contiene D01, B01 o
C01:
DEPTNO IN (D01, B01, C01)

Ejemplo 2: lo siguiente slo se evala como verdadero si el valor de EMPNO


(nmero de empleado) del lado izquierdo coincide con el valor de EMPNO de un
empleado del departamento E11:
EMPNO IN (SELECT EMPNO FROM EMPLOYEE WHERE WORKDEPT = E11)

Ejemplo 3: dada la siguiente informacin, este ejemplo se evala en verdadero si el


valor especfico de la fila de la columna COL_1 coincide con cualquiera de los
valores de la lista:
Tabla 15. Ejemplo de predicado IN
Expresiones Tipo Pgina de cdigos
COL_1 columna 850
variable del lenguaje
HV_2 principal 437
variable del lenguaje
HV_3 principal 437
CON_1 constante 850

Cuando se evala el predicado:


COL_1 IN (:HV_2, :HV_3, CON_4)

las dos variables del lenguaje principal se convertirn a la pgina de cdigos 850,
en base a las reglas para las conversiones de series.

Ejemplo 4: lo siguiente se evala en verdadero si el ao especificado en


EMENDATE (fecha de una actividad del empleado en un proyecto finalizado)
coincide con cualquiera de los valores especificados en la lista (el ao actual o los
dos aos anteriores):
YEAR(EMENDATE) IN (YEAR(CURRENT DATE),
YEAR(CURRENT DATE - 1 YEAR),
YEAR(CURRENT DATE - 2 YEARS))

Ejemplo 5: lo siguiente se evala en verdadero si tanto el valor de ID como el de


DEPT del lado izquierdo coinciden con MANAGER y DEPTNUMB
respectivamente para cualquiera de las filas de la tabla ORG.
(ID, DEPT) IN (SELECT MANAGER, DEPTNUMB FROM ORG)

Informacin relacionada:
v Reglas para los tipos de datos del resultado en la pgina 129
v Reglas para la conversin de series en la pgina 133

Captulo 2. Elementos del lenguaje 235


predicado LIKE

Predicado LIKE
 expresin-coincidencia LIKE expresin-patrn 
NOT

 
ESCAPE expresin-escape

El predicado LIKE busca series que tienen un determinado patrn. El patrn se


especifica mediante una serie en la que el signo de subrayado y de porcentaje
pueden tener un significado especial. Los blancos finales de un patrn forman
parte del mismo.

Si el valor de cualquiera de los argumentos es nulo, el resultado del predicado


LIKE es desconocido.

Los valores de expresin-coincidencia, expresin-patrn y expresin-escape son


expresiones de serie compatibles. Hay ligeras diferencias en los tipos de
expresiones de series soportados por cada uno de los argumentos. Los tipos
vlidos de las expresiones se listan bajo la descripcin de cada argumento.

Ninguna de las expresiones puede tener un tipo diferenciado. Sin embargo, pueden
ser una funcin que convierta un tipo diferenciado en su tipo fuente.
expresin-coincidencia
Una expresin que especifica la serie que se debe examinar para ver si cumple
con un determinado patrn de caracteres.
La expresin se puede especificar mediante:
v Una constante
v Un registro especial
v Una variable del lenguaje principal (incluida una variable localizadora o una
variable de referencia de archivo)
v Una funcin escalar
v Un localizador de objeto grande
v Un nombre de columna
v Una expresin que concatene cualquiera de las anteriores
expresin-patrn
Una expresin que especifica la serie que se debe comparar.
La expresin se puede especificar mediante:
v Una constante
v Un registro especial
v Una variable del lenguaje principal
v Una funcin escalar cuyos operandos seas cualquiera de los anteriores
v Una expresin que concatene cualquiera de las anteriores
v Un parmetro de procedimiento SQL
con las siguientes restricciones:
v Ningn elemento de la expresin puede ser del tipo LONG VARCHAR,
CLOB, LONG VARGRAPHIC o DBCLOB. Adems, no puede tratarse de una
variable de referencia de archivo BLOB.
v La longitud real de expresin-patrn no puede superar los 32.672 bytes.

236 Consulta de SQL - Volumen 1


predicado LIKE

A continuacin se muestran ejemplos de expresiones de serie o series vlidas:


v Parmetros de funcin SQL definidos por el usuario
v Variables de transicin activadores
v Variables locales en sentencias compuestas dinmicas

Una descripcin sencilla del uso del predicado LIKE es que el patrn se utilice
para especificar los criterios de cumplimiento correspondientes a los valores de
expresin-coincidencia, donde:
v El carcter de subrayado (_) representa cualquier carcter nico.
v El signo de porcentaje (%) representa una serie de cero o ms caracteres.
v Cualquier otro carcter se representa a s mismo.

Si la expresin-patrn tiene que incluir el carcter de subrayado o de porcentaje,


la expresin-escape se utiliza para especificar un carcter que precede al carcter
de subrayado o de porcentaje en el patrn.

A continuacin se ofrece una descripcin rigurosa del predicado LIKE. Tenga


en cuenta que en esta descripcin se pasa por alto el uso de la expresin-escape;
su uso se explicar ms adelante.
v Supongamos que m indica el valor de expresin-coincidencia y que p indica el
valor de expresin-patrn. La serie p se interpreta como una secuencia el
nmero mnimo de especificadores de subserie, de modo que cada carcter
de p forma parte de exactamente un especificador de subserie. Un
especificador de subserie es un carcter de subrayado, un signo de
porcentaje o una secuencia no vaca de caracteres que no son el signo de
subrayado ni de porcentaje.
El resultado del predicado es desconocido si m o p es el valor nulo. De lo
contrario, el resultado es verdadero (true) o falso (false). El resultado es true
si m y p son ambos series vacas o existe un particionamiento de m en
subseries como:
Una subserie de m es una secuencia de cero o ms caracteres contiguos y
cada carcter de m forma parte de exactamente una subserie.
Si el especificador de subserie nmero n es un carcter de subrayado, la
subserie nmero n de m es cualquier carcter nico.
Si el especificador de subserie nmero n es un carcter de porcentaje, la
subserie nmero n de m es cualquier secuencia de cero o ms caracteres.
Si el especificador de subserie nmero n no es ni un signo de subrayado
ni uno de porcentaje, la subserie nmero n de m es igual a dicho
especificador de subserie y tiene la misma longitud que dicho
especificador de subserie.
El nmero de subseries de m es igual al nmero de especificadores de
subserie.
Por lo tanto, si p es una serie vaca y m no es una serie vaca, el resultado es
false. Paralelamente, si m es una serie vaca y p no es una serie vaca
(excepto para una serie que solo contenga signos de porcentaje), el resultado
es false.
El predicado m NOT LIKE p es equivalente a la condicin de bsqueda NOT
(m LIKE p).

Cuando se especifica la expresin-escape, la expresin-patrn no debe contener el


carcter de escape especificado por la expresin-escape, excepto cuando va

Captulo 2. Elementos del lenguaje 237


predicado LIKE

seguido inmediatamente del carcter de escape, el carcter de subrayado o el


carcter de porcentaje (SQLSTATE 22025).

Si la expresin-coincidencia es una serie de caracteres en una base de datos


MBCS, puede contener datos mixtos. En este caso, el patrn puede incluir
tanto caracteres SBCS como no SBCS. Para bases de datos que no son Unicode,
los caracteres especiales del patrn se interpretan del siguiente modo:
v Un signo de subrayado de media anchura SBCS hace referencia a un carcter
SBCS.
v Un carcter de subrayado de anchura completa no SBCS hace referencia a un
carcter no SBCS.
v Un signo de porcentaje de media anchura SBCS o de anchura completa no
SBCS hace referencia a cero o ms caracteres SBCS o no SBCS.

En una base de datos Unicode, no se suele hacer distincin entre caracteres de


un solo byte y no de un solo byte. Aunque el formato UTF-8 es una
codificacin de bytes mixtos de caracteres Unicode, no existe ninguna
distincin real entre caracteres SBCS y no SBCS en UTF-8. Cada carcter es un
carcter Unicode, independientemente del nmero de bytes en formato UTF-8.

En una columna grfica Unicode, cada carcter que no sea suplementario,


incluido el carcter de signo de subrayado de media anchura (U+005F) y el
carcter de signo de porcentaje de media anchura (U+0025), tiene dos bytes de
anchura. En una base de datos Unicode, los caracteres especiales de un patrn
se interpretan del siguiente modo:
v Para series de caracteres, un carcter de subrayado de media anchura (X5F)
o un carcter de subrayado de anchura completa (XEFBCBF) hace
referencia a un carcter Unicode y un carcter de signo de porcentaje de
media anchura (X25) o un carcter de signo de porcentaje de anchura
completa (XEFBC85) hace referencia a cero o ms caracteres Unicode.
v Para series grficas, un carcter de subrayado de media anchura (U+005F) o
un carcter de subrayado de anchura completa (U+FF3F) hace referencia a
un carcter Unicode y un carcter de signo de porcentaje de media anchura
(U+0025) o un carcter de signo de porcentaje de anchura completa
(U+FF05) hace referencia a cero o ms caracteres Unicode.

Necesita dos caracteres de subrayado para comparar un carcter grfico


suplementario Unicode, puesto que dicho carcter se representa mediante dos
caracteres UCS-2 en una columna grfica. Sin embargo, slo necesita un
carcter de subrayado para comparar un carcter suplementario Unicode en
una columna de carcter.
expresin-escape
Este argumento opcional es una expresin que especifica un carcter que se
utilizar para modificar el significado especial de los caracteres de subrayado
(_) y de porcentaje (%) en la expresin-patrn. Esto permite utilizar el predicado
LIKE para comparar valores que contienen los caracteres reales de porcentaje y
de subrayado.
La expresin se puede especificar mediante:
v Una constante
v Un registro especial
v Una variable del lenguaje principal
v Una funcin escalar cuyos operandos seas cualquiera de los anteriores

238 Consulta de SQL - Volumen 1


predicado LIKE

v Una expresin que concatene cualquiera de las anteriores

teniendo en cuenta las siguientes restricciones:


v Ningn elemento de la expresin puede ser del tipo LONG VARCHAR,
CLOB, LONG VARGRAPHIC o DBCLOB. Adems, no puede ser una
variable de referencia a archivos BLOB.
v Para columnas de caracteres, el resultado de la expresin debe ser un
carcter o una serie binaria que contenga exactamente un byte (SQLSTATE
22019).
v Para columnas grficas, el resultado de la expresin debe ser un carcter
(SQLSTATE 22019).

Cuando hay caracteres de escape en la serie de patrn, un carcter de


subrayado, de porcentaje o de escape puede representar una ocurrencia literal
de s mismo. Esto es cierto si el carcter en cuestin va precedido de un
nmero impar de caracteres de escape sucesivos. De lo contrario, no es cierto.

En un patrn, una secuencia de caracteres de escape sucesivos se trata del


siguiente modo:
v Supongamos que S es una secuencia y que no forma parte de una secuencia
ms larga de caracteres de escape sucesivos. Supongamos tambin que S
contiene un total de n caracteres. Las reglas que controlan S dependen del
valor de n:
Si n es impar, S debe ir seguido de un signo de subrayado o de porcentaje
(SQLSTATE 22025). S y el carcter que lo sigue representan (n-1)/2
ocurrencias literales del carcter de escape seguidas de una ocurrencia
literal del signo de subrayado o de porcentaje.
Si n es par, S representa n/2 ocurrencias literales del carcter de escape. A
diferencia del caso e que n es impar, S puede finalizar el patrn. Si no
finaliza el patrn, puede ir seguido de cualquier carcter (excepto, por
supuesto, de un carcter de escape, que violara la suposicin de que S no
forma parte de una secuencia ms larga de caracteres de escape
sucesivos). Si S va seguido de un signo de subrayado o de porcentaje,
dicho carcter tiene su significado especial.

A continuacin se ilustra el efecto de ocurrencias sucesivas del carcter de


escape que, en este caso, es la barra inclinada invertida (\).
Serie de patrn
Patrn real
\% Un signo de porcentaje
\\% Una barra inclinada invertida seguida de cero o ms caracteres
arbitrarios
\\\% Una barra inclinada invertida seguida de un signo de
porcentaje

La pgina de cdigos utilizada en la comparacin se basa en la pgina de cdigos


del valor de expresin-coincidencia.
v El valor de expresin-coincidencia nunca se convierte.
v Si la pgina de cdigos de expresin-patrn difiere de la pgina de cdigos de
expresin-coincidencia, el valor de expresin-patrn se convierte a la pgina de
cdigos de expresin-coincidencia, a no ser que alguno de los operandos est
definido como FOR BIT DATA (en cuyo caso no hay conversin).

Captulo 2. Elementos del lenguaje 239


predicado LIKE

v Si la pgina de cdigos de expresin-escape difiere de la pgina de cdigos de


expresin-coincidencia, el valor de expresin-escape se convierte a la pgina de
cdigos de expresin-coincidencia, a no ser que alguno de los operandos est
definido como FOR BIT DATA (en cuyo caso no hay conversin).

Notas:
v El nmero de blancos finales es significativo tanto en expresin-coincidencia como
en expresin-patrn. Si las series no tienen la misma longitud, la serie ms corta
no se rellena con espacios en blanco. Por ejemplo, la expresin PADDED LIKE
PADDED no dara lugar a una coincidencia.
v Si el patrn especificado en un predicado LIKE es un marcador de parmetro y
se utiliza una variable del lenguaje principal de caracteres de longitud fija para
sustituir el marcador de parmetro, el valor especificado para la variable del
lenguaje principal debe tener la longitud correcta. Si no se especifica la longitud
correcta, la operacin select no devolver los resultados previstos.
Por ejemplo, si la variable del lenguaje principal se define como CHAR(10) y se
asigna el valor WYSE% a dicha variable del lenguaje principal, la variable del
lenguaje principal se rellena con blancos durante la asignacin. El patrn
utilizado es:
WYSE%

El gestor de bases de datos busca todos los valores que comienzan por WYSE y
terminan por cinco espacios en blanco. Si desea buscar slo valores que
comienzan por WYSE, asigne el valor WSYE%%%%%% a la variable del
lenguaje principal.

Ejemplos:
v Busque la serie SYSTEMS que aparezca en cualquier lugar dentro de la
columna PROJNAME de la tabla PROJECT.
SELECT PROJNAME FROM PROJECT
WHERE PROJECT.PROJNAME LIKE %SYSTEMS%
v Busque una serie cuyo primer carcter sea J que tenga exactamente dos
caracteres de longitud en la columna FIRSTNME de la tabla EMPLOYEE.
SELECT FIRSTNME FROM EMPLOYEE
WHERE EMPLOYEE.FIRSTNME LIKE J_
v Busque una serie de cualquier longitud, cuyo primer carcter sea J, en la
columna FIRSTNME de la tabla EMPLOYEE.
SELECT FIRSTNME FROM EMPLOYEE
WHERE EMPLOYEE.FIRSTNME LIKE J%
v En la tabla CORP_SERVERS, busque una serie en la columna LA_SERVERS que
coincida con el valor del registro especial CURRENT SERVER.
SELECT LA_SERVERS FROM CORP_SERVERS
WHERE CORP_SERVERS.LA_SERVERS LIKE CURRENT SERVER
v Recupere todas las series que comienzan por la secuencia de caracteres %_\ en
la columna A de la tabla T.
SELECT A FROM T
WHERE T.A LIKE \%\_\\% ESCAPE \
v Utilice la funcin escalar BLOB para obtener un carcter de escape de un byte
que sea compatible con los tipos de datos de patrn y de coincidencia (ambos
BLOB).
SELECT COLBLOB FROM TABLET
WHERE COLBLOB LIKE :var_patrn ESCAPE BLOB(XOE)

240 Consulta de SQL - Volumen 1


Predicado NULL

Predicado NULL
 expresin IS NULL 
NOT

El predicado NULL comprueba la existencia de valores nulos.

El resultado de un predicado NULL no puede ser desconocido. Si el valor de la


expresin es nulo, el resultado es verdadero. Si el valor no es nulo, el resultado es
falso. Si se especifica NOT, el resultado se invierte.

Ejemplos:
PHONENO IS NULL

SALARY IS NOT NULL

Captulo 2. Elementos del lenguaje 241


predicado TYPE

Predicado TYPE
 expresin IS OF 
NOT
IS
OF DYNAMIC TYPE
NOT

 (  nombre de tipo ) 
ONLY

Un predicado TYPE compara el tipo de una expresin con uno o ms tipos


estructurados definidos por el usuario.

El tipo dinmico de una expresin que implica desreferenciar un tipo de referencia


es el tipo real de la fila referenciada de la tabla o vista con tipo de destino. Puede
diferenciarse del tipo de destino de una expresin que implica la referencia,
denominado el tipo esttico de la expresin.

Si el valor de expresin es nulo, el resultado del predicado ser desconocido. El


resultado del predicado ser verdadero si el tipo dinmico de la expresin es un
subtipo de uno de los tipos estructurados especificados por nombre de tipo; de lo
contrario, el resultado ser falso. Si ONLY precede cualquier nombre de tipo, no se
tienen en cuenta los subtipos correspondientes de este tipo.

Si nombre de tipo no est calificado, se resuelve utilizando la va de acceso de SQL.


Cada nombre de tipo debe identificar un tipo definido por el usuario que est en la
jerarqua de tipos del tipo esttico de expresin (SQLSTATE 428DU).

Debe utilizarse la funcin DEREF siempre que el predicado TYPE tenga una
expresin que implique un valor de tipo de referencia. El tipo esttico de esta
forma de expresin es el tipo de destino de la referencia.

La sintaxis IS OF y OF DYNAMIC TYPE son alternativas equivalentes para el


predicado TYPE. Asimismo, IS NOT OF y NOT OF DYNAMIC TYPE son
alternativas equivalentes.

Ejemplos:

Existe una jerarqua de tablas que tiene una tabla raz EMPLOYEE de tipo EMP y
una subtabla MANAGER de tipo MGR. Otra tabla, ACTIVITIES, incluye una
columna denominada WHO_RESPONSIBLE que est definida como REF(EMP)
SCOPE EMPLOYEE. Lo siguiente es un predicado de tipo que devuelve un
resultado verdadero cuando una fila correspondiente a WHO_RESPONSIBLE es un
director (manager):
DEREF (WHO_RESPONSIBLE) IS OF (MGR)

Si una tabla contiene una columna EMPLOYEE de tipo EMP, EMPLOYEE puede
contener valores de tipo EMP y tambin valores de sus subtipos, tales como MGR.
El predicado siguiente
EMPL IS OF (MGR)

242 Consulta de SQL - Volumen 1


predicado TYPE

devuelve un resultado verdadero cuando EMPL no es nulo y es realmente un


director.

Informacin relacionada:
v DEREF en la pgina 340

Captulo 2. Elementos del lenguaje 243


Predicado VALIDATED

Predicado VALIDATED
 nombre-columna IS VALIDATED 

El predicado VALIDATED comprueba que el valor especificado por


nombre-columna, que debe tener el tipo de datos XML, ya se haya validado
mediante la funcin XMLVALIDATE. El esquema XML que se ha utilizado para la
validacin no tiene efecto alguno sobre el resultado.

El predicado VALIDATED slo est soportado en una base de datos Unicode con
una nica particin de base de datos.

Si el valor de nombre-columna es nulo, el resultado del predicado ser desconocido;


de lo contrario, el resultado es verdadero (true) o falso (false). El resultado del
predicado es verdadero si el valor de nombre-columna no es nulo y se ha validado.
El resultado del predicado es falso si el valor de nombre-columna no es nulo y no se
ha validado.

Ejemplos:

Ejemplo 1: supongamos que en la tabla T1 se ha definido la columna XMLCOL.


Recuperar nicamente los valores XML que hayan sido validados por cualquier
esquema XML.
SELECT XMLCOL FROM T1
WHERE XMLCOL IS VALIDATED

Ejemplo 2: supongamos que en la tabla T1 se ha definido la columna XMLCOL.


Imponer la norma que hace que no se puedan insertar ni actualizar valores si no se
han validado.
ALTER TABLE T1 ADD CONSTRAINT CK_VALIDATED
CHECK (XMLCOL IS VALIDATED)

244 Consulta de SQL - Volumen 1


predicado XMLEXISTS

Predicado XMLEXISTS
 XMLEXISTS ( constante-expresin-xquery 

 ) 
,
BY REF
PASSING  argumento-xquery

argumento-xquery:

expresin-variable-xquery AS identificador
BY REF

El predicado XMLEXISTS comprueba si una expresin XQuery devuelve una


secuencia de uno o ms elementos.
constante-expresin-xquery
Especifica una constante de serie de caracteres de SQL que se interpreta como
una expresin XQuery. La serie de la constante se convierte directamente a
UTF-8 sin la conversin a la base de datos o la pgina de cdigos de la
seccin. La expresin XQuery se ejecuta mediante un conjunto opcional de
valores de entrada XML, y devuelve una secuencia de salida que se comprueba
para determinar el resultado del predicado XMLEXISTS. El valor para la
constante-expresin-xquery no debe ser una serie vaca o un serie de caracteres
en blanco (SQLSTATE 10505).
PASSING
Especifica los valores de entrada y el modo en que pasan a la expresin
XQuery especificada por la constante-expresin-xquery.
BY REF
Especifica que el mecanismo de pase por omisin es por referencia para
cualquier expresin-variable-xquery de tipo de datos XML. Cuando los
valores XML se pasan por referencia, la evaluacin de XQuery utiliza los
rboles de nodos de entrada, si los hay, directamente desde las expresiones
de entrada especificadas, con lo que se conservan todas las propiedades,
incluyendo las identidades de nodo originales y el orden del documento. Si
dos argumentos pasan el mismo valor XML, las comparaciones de
identidad de nodo y orden de documento en que intervienen algunos
nodos incluidos entre los dos argumentos de entrada pueden hacer
referencia a nodos del mismo rbol de nodos XML.
Esta clusula no afectar al modo en que se pasan los valores que no son
XML. Los valores que no son XML crean una copia nueva del valor
durante la conversin a XML.
argumento-xquery
Especifica un argumento que se pasar a la expresin XQuery especificada
por constante-expresin-xquery. Un argumento especifica un valor y la forma
en que ese valor se debe pasar. El argumento contiene una expresin SQL
que se evala.
v Si el valor del resultado es del tipo XML, se convierte en un
valor-xml-entrada. Un valor XML nulo se convierte en una secuencia XML
vaca.

Captulo 2. Elementos del lenguaje 245


predicado XMLEXISTS

v Si el valor del resultado no es del tipo XML, debe ser convertible al tipo
de datos XML. Un valor nulo se convierte en una secuencia XML vaca.
El valor convertido se transforma en un valor-xml-entrada.
Cuando se evala la constante-expresin-xquery, se presenta un valor igual a
valor-xml-entrada a una variable XQuery y la clusula AS especifica un
nombre.
expresin-variable-xquery
Especifica una expresin SQL cuyo valor est disponible para la
expresin XQuery especificada por constante-expresin-xquery durante la
ejecucin. La expresin no puede contener una referencia de secuencia
(SQLSTATE 428F9) ni una funcin OLAP (SQLSTATE 42903).
AS identificador
Especifica que el valor generado por expresin-variable-xquery se pasar
a constante-expresin-xquery como una variable XQuery. El nombre de la
variable ser identificador. El signo de dlar inicial ($) que precede a los
nombres de variable en el lenguaje XQuery no se incluye en el
identificador. El identificador debe ser un nombre vlido de variable
XQuery y est restringido a un nombre XML NCName. El identificador
no debe tener ms de 128 bytes de longitud. Dos argumentos de la
misma clusula PASSING no pueden emplear el mismo identificador
(SQLSTATE 42711).
BY REF
Indica que un valor de entrada XML se debe pasar por referencia.
Cuando los valores XML se pasan por referencia, la evaluacin de
XQuery utiliza los rboles de nodos de entrada, si los hay,
directamente desde las expresiones de entrada especificadas, con lo que
se conservan todas las propiedades, incluyendo las identidades de
nodo originales y el orden del documento. Si dos argumentos pasan el
mismo valor XML, las comparaciones de identidad de nodo y orden de
documento en que intervienen algunos nodos incluidos entre los dos
argumentos de entrada pueden hacer referencia a nodos del mismo
rbol de nodos XML. Si no se especifica BY REF a continuacin de una
expresin-variable-xquery, los argumentos XML se pasan mediante el
mecanismo de pase por omisin que se proporciona mediante la
sintaxis situada tras la palabra clave PASSING. Esta opcin no puede
especificarse para valores que no son XML. Cuando se pasa un valor
que no es XML, el valor se convierte a XML; este proceso crea una
copia.

Notas:

El predicado XMLEXISTS no puede formar parte de:


v La clusula ON asociada a un operador JOIN o una sentencia MERGE
(SQLSTATE 42972)
v La clusula GENERATE KEY USING o RANGE THROUGH de la sentencia
CREATE INDEX EXTENSION (SQLSTATE 428E3)
v La clusula FILTER USING de la sentencia CREATE FUNCTION (Escalar
externa), ni la clusula FILTER USING de la sentencia CREATE INDEX
EXTENSION (SQLSTATE 428E4)
v Una restriccin de comprobacin ni una expresin de generacin de columnas
(SQLSTATE 42621)
v Una clusula-group-by (SQLSTATE 42822)

246 Consulta de SQL - Volumen 1


predicado XMLEXISTS

v Un argumento de una funcin-columna (SQLSTATE 42607)

Las sentencias que restringen las subconsultas pueden restringir tambin un


predicado XMLEXISTS que implique una subconsulta.

Slo se puede utilizar el predicado XMLEXISTS en una base de datos Unicode con
una nica particin de base de datos (SQLSTATE 42997).

Ejemplo:
SELECT c.custid FROM customer c
WHERE XMLEXISTS($h/buyHistory/buyItem[ category = "fishing" ]
PASSING buyHistory AS "h")

Conceptos relacionados:
v XMLEXISTS predicate usage en Performance Guide
v XMLEXISTS predicate when querying XML data en XML Guide

Captulo 2. Elementos del lenguaje 247


predicado XMLEXISTS

248 Consulta de SQL - Volumen 1


Captulo 3. Funciones
Resumen de las funciones
Una funcin es una operacin que se indica mediante un nombre de funcin
seguido por un par de parntesis que contienen la especificacin de los
argumentos (es posible que no haya argumentos).

Las funciones incorporadas las proporciona el gestor de bases de datos; devuelven un


resultado de un solo valor y se identifican como parte del esquema SYSIBM. Entre
las funciones incorporadas se incluyen las funciones de columna (como, por
ejemplo, AVG), las funciones con operadores (por ejemplo, +), las funciones de
conversin (como DECIMAL), y otras (como SUBSTR).

Las funciones definidas por el usuario se registran en una base de datos de


SYSCAT.ROUTINES (utilizando la sentencia CREATE FUNCTION). Estas funciones
nunca forman parte del esquema SYSIBM. Se proporciona un conjunto de estas
funciones con el gestor de bases de datos en un esquema denominado SYSFUN y
otro en un esquema denominado SYSPROC.

Las funciones se clasifican como funciones agregadas (de columna), funciones


escalares, funciones de fila y funciones de tabla.
v El argumento de una funcin de columna es un conjunto de valores similares. Una
funcin de columna devuelve un solo valor (posiblemente nulo) y puede
especificarse en una sentencia de SQL donde sea posible utilizar una expresin.
v Los argumentos de una funcin escalar son valores escalares individuales, que
pueden ser de tipos distintos y tener significados diferentes. Una funcin escalar
devuelve un solo valor (posiblemente nulo) y puede especificarse en una
sentencia de SQL donde sea posible utilizar una expresin.
v El argumento de una funcin de fila es un tipo estructurado. Una funcin de fila
devuelve una fila de tipos de datos incorporados y slo se puede especificar
como funcin de transformacin para un tipo estructurado.
v Los argumentos de una funcin de tabla son valores escalares individuales, que
pueden ser de tipos distintos y tener significados diferentes. Una funcin de
tabla devuelve una tabla a la sentencia SQL y slo puede especificarse en la
clusula FROM de una sentencia SELECT.

El nombre de la funcin, combinado con el esquema, proporciona el nombre


completamente calificado de la funcin. La combinacin del esquema, el nombre
de funcin y los parmetros de entrada constituye una signatura de funcin.

En algunos casos, el tipo de parmetro de entrada se especifica como un tipo de


datos incorporados concreto y, en otros casos, se especifica mediante una variable
general como cualquier-tipo-numrico. Si se especifica un tipo de datos concreto, una
coincidencia exacta slo se obtendr con el tipo de datos especificado. Si se utiliza
una variable general, cada uno de los tipos de datos asociados con dicha variable
da como resultado una coincidencia exacta.

Copyright IBM Corp. 1993, 2006 249


Resumen de las funciones

Es posible que existan funciones adicionales, porque las funciones definidas por el
usuario pueden crearse en esquemas distintos, utilizando como fuente una de las
signaturas de funcin. Tambin es posible crear funciones externas en las
aplicaciones.

Conceptos relacionados:
v Funciones agregadas en la pgina 275

Informacin relacionada:
v Funciones en la pgina 172
v Subseleccin en la pgina 530
v Sentencia CREATE FUNCTION en Consulta de SQL, Volumen 2

250 Consulta de SQL - Volumen 1


Funciones soportadas

Funciones soportadas y vistas y rutinas administrativas SQL


La Tabla 16 resume informacin sobre las funciones soportadas. El nombre de la
funcin, combinado con el esquema, proporciona el nombre completamente
calificado de la funcin. La columna Entrada muestra el tipo de datos que se
espera para cada argumento durante la invocacin de la funcin. Muchas de las
funciones incluyen variaciones de parmetros de entrada, lo que permite utilizar
distintos tipos de datos o un nmero diferente de argumentos. La combinacin de
esquema, nombre de funcin y parmetros de entrada forma una signatura de
funcin. La columna Devuelve muestra los tipos de datos posibles de los valores
que devuelve la funcin. Para las vistas y rutinas administrativas SQL, consulte la
informacin de consulta relativa a la informacin de retorno y de entrada.

Para ver las listas de las funciones incorporadas a las que se proporciona soporte
clasificadas por tipos, consulte las tablas siguientes:
v Funciones agregadas (Tabla 17 en la pgina 267)
v Funciones escalares de difusin (Tabla 18 en la pgina 268)
v Funciones escalares de particionamiento (Tabla 19 en la pgina 269)
v Funciones escalares de fecha y hora (Tabla 20 en la pgina 269)
v Funciones escalares numricas (Tabla 21 en la pgina 270)
v Funciones escalares de seguridad (Tabla 22 en la pgina 271)
v Funciones XML (Tabla 23 en la pgina 271)
v Funciones escalares de series (Tabla 24 en la pgina 272)
v Funciones escalares diversas (Tabla 25 en la pgina 274)

Para consultar listas de vistas y rutinas administrativas SQL soportadas clasificadas


por funcionalidad, consulte Vistas y rutinas administrativas SQL soportadas. Estas
rutinas y vistas estn agrupadas como indicamos a continuacin:
v Rutinas administrativas SQL de supervisin de actividad
v Procedimiento ADMIN_CMD almacenado y rutinas administrativas SQL
asociadas
v Vistas y rutinas administrativas SQL de la configuracin
v Vistas administrativas del entorno
v Rutinas administrativas SQL de instantneas de salud
v Rutinas administrativas SQL de MQSeries
v Vistas y rutinas administrativas SQL de la seguridad
v Vistas y rutinas administrativas SQL de instantneas
v Rutinas administrativas SQL de procedimientos SQL
v Rutinas administrativas SQL de redistribucin paso a paso
v Rutinas administrativas SQL de la herramienta de administracin del
almacenamiento
v Vistas y rutinas administrativas SQL varias
Tabla 16. Funciones soportadas
Nombre de funcin Esquema Entrada Devuelve Descripcin
SYSIBM Cualquier expresin que Mismo tipo de datos y Esta funcin escalar devuelve el valor
devuelva un tipo de longitud que el absoluto del argumento.
ABS o ABSVAL en la pgina 297
datos numrico argumento.
integrado.

Captulo 3. Funciones 251


Funciones soportadas

Tabla 16. Funciones soportadas (continuacin)


Nombre de funcin Esquema Entrada Devuelve Descripcin
SYSFUN v SMALLINT v SMALLINT Esta funcin escalar devuelve el valor
absoluto del argumento.
v INTEGER v INTEGER
ABS o ABSVAL en la pgina 297
v BIGINT v BIGINT
v DOUBLE v DOUBLE
SYSIBM v DOUBLE v DOUBLE Esta funcin escalar devuelve el
ACOS en la pgina 298 coarcocoseno del argumento como un
ngulo expresado en radianes.
SYSFUN v CHAR v INTEGER Esta funcin escalar devuelve el valor
de cdigo ASCII del carcter situado
ASCII en la pgina 299 v VARCHAR(4000) v INTEGER ms a la izquierda del argumento
v CLOB(1M) v INTEGER como un entero.

SYSIBM v DOUBLE v DOUBLE Esta funcin escalar devuelve el


ASIN en la pgina 300 arcoseno del argumento como un
ngulo expresado en radianes.
SYSIBM v DOUBLE v DOUBLE Esta funcin escalar devuelve la
ATAN en la pgina 301 arcotangente del argumento como un
ngulo expresado en radianes.
SYSIBM v DOUBLE v DOUBLE Esta funcin escalar devuelve la
arcotangente hiperblica del
ATANH en la pgina 303
argumento, donde el argumento es un
ngulo expresado en radianes.
SYSIBM v DOUBLE, DOUBLE v DOUBLE Esta funcin escalar devuelve la
arcotangente de las coordenadas x e y
ATAN2 en la pgina 302 (especificado por el primer y segundo
argumentos respectivamente) como un
ngulo, expresado en radianes.
SYSIBM v tipo-numrico4 v tipo-numrico1 Esta funcin agregada devuelve el
AVG en la pgina 276
promedio de un conjunto de nmeros.
SYSIBM v tipo-numrico v BIGINT Esta funcin escalar devuelve una
representacin en el formato de un
BIGINT en la pgina 304 v VARCHAR v BIGINT entero de 64 bits de un nmero o una
serie de caracteres en el formato de
una constante de enteros.
SYSIBM v tipo-serie v BLOB Esta funcin escalar convierte del tipo
BLOB en la pgina 306 fuente a BLOB, con longitud opcional.
v tipo-serie, INTEGER v BLOB
SYSIBM v SMALLINT v SMALLINT Esta funcin escalar devuelve el entero
ms pequeo que es superior o igual
v INTEGER v INTEGER al argumento.
CEILING o CEIL en la pgina 307
v BIGINT v BIGINT
v DOUBLE v DOUBLE
SYSIBM v tipo-carcter v CHAR Esta funcin escalar devuelve una
representacin en el formato de una
v tipo-carcter, INTEGER v CHAR(entero) serie del tipo fuente.
v tipo-fechahora v CHAR
v tipo-fechahora, v CHAR
palabra-clave2 v CHAR(6)
CHAR en la pgina 308
v SMALLINT v CHAR(11)
v INTEGER v CHAR(20)
v BIGINT v CHAR(2+precisin)
v DECIMAL v CHAR(2+precisin)
v DECIMAL, VARCHAR
SYSFUN v DOUBLE v CHAR(24) Esta funcin escalar devuelve una
representacin en el formato de una
CHAR en la pgina 308
serie de caracteres de un nmero de
coma flotante.
SYSIBM v tipo-serie, unidad-serie v INTEGER Esta funcin escalar devuelve la
CHARACTER_LENGTH en la
longitud de una expresin de la
pgina 313
unidad-serie especificada.

252 Consulta de SQL - Volumen 1


Funciones soportadas

Tabla 16. Funciones soportadas (continuacin)


Nombre de funcin Esquema Entrada Devuelve Descripcin
SYSFUN v INTEGER v CHAR(1) Esta funcin escalar devuelve el
carcter que tiene el valor del cdigo
ASCII especificado por el argumento.
CHR en la pgina 315
El valor del argumento debe estar
comprendido entre 0 y 255; de lo
contrario, el valor devuelto es nulo.
SYSIBM v tipo-carcter v CLOB Esta funcin escalar convierte del tipo
CLOB en la pgina 316 fuente a CLOB, con longitud opcional.
v tipo-carcter, INTEGER v CLOB
SYSIBM v cualquier-tipo, v cualquier-tipo Esta funcin escalar devuelve el
COALESCE en la pgina 317 3
cualquier-tipo-compatible- primer argumento no nulo del
conjunto de argumentos.
unin,...
SYSIBM v tipo-serie, v tipo-serie-mx Esta funcin escalar devuelve la
CONCAT en la pgina 318 tipo-serie-compatible concatenacin de dos argumentos de
serie.
SYSIBM v tipo-numrico, v DOUBLE Esta funcin agregada devuelve el
CORRELATION en la pgina 278 tipo-numrico coeficiente de correlacin de un
conjunto de pares de nmeros.
SYSIBM v DOUBLE v DOUBLE Esta funcin escalar devuelve el
coseno del argumento, donde el
COS en la pgina 319
argumento es un ngulo expresado en
radianes.
SYSIBM v DOUBLE v DOUBLE Esta funcin escalar devuelve el
coseno hiperblico del argumento,
COSH en la pgina 320
donde el argumento es un ngulo
expresado en radianes.
SYSIBM v DOUBLE v DOUBLE Esta funcin escalar devuelve la
cotangente del argumento, donde el
COT en la pgina 321
argumento es un ngulo expresado en
radianes.
SYSIBM v cualquier-tipo-integrado4 v INTEGER Esta funcin agregada devuelve el
COUNT en la pgina 279 nmero de filas o valores de un
conjunto de filas o valores.
SYSIBM v cualquier-tipo-integrado4 v DECIMAL(31,0) Esta funcin agregada devuelve el
nmero de filas o valores de un
COUNT_BIG en la pgina 280 conjunto de filas o valores. El
resultado puede ser mayor que el
valor mximo de INTEGER.
SYSIBM v tipo-numrico, v DOUBLE Esta funcin agregada devuelve la
COVARIANCE en la pgina 282 tipo-numrico covarianza de un conjunto de pares de
nmeros.
SYSIBM v cualquier-tipo v INTEGER Esta funcin escalar devuelve el
nmero de secuencia
DATAPARTITIONNUM en la (SYSDATAPARTITIONS.SEQNO) de la
pgina 322 particin de datos donde reside la fila.
El argumento es cualquier nombre de
columna dentro de la tabla.
SYSIBM v DATE v DATE Esta funcin escalar devuelve una
fecha a partir de un solo valor de
v TIMESTAMP v DATE entrada.
DATE en la pgina 323
v DOUBLE v DATE
v VARCHAR v DATE
SYSIBM v VARCHAR v INTEGER Esta funcin escalar devuelve la parte
correspondiente al da de un valor.
v DATE v INTEGER
DAY en la pgina 324
v TIMESTAMP v INTEGER
v DECIMAL v INTEGER
SYSFUN v VARCHAR(26) v VARCHAR(100) Esta funcin escalar devuelve una
serie que combina caracteres en
v DATE v VARCHAR(100) maysculas y minsculas que contiene
v TIMESTAMP v VARCHAR(100) el nombre del da (por ejemplo,
DAYNAME en la pgina 325
viernes) de la parte correspondiente al
da del argumento, segn el entorno
local en el momento en que se emiti
db2start.

Captulo 3. Funciones 253


Funciones soportadas

Tabla 16. Funciones soportadas (continuacin)


Nombre de funcin Esquema Entrada Devuelve Descripcin
SYSFUN v VARCHAR(26) v INTEGER Esta funcin escalar devuelve el da
de la semana del argumento como un
DAYOFWEEK en la pgina 326 v DATE v INTEGER valor entero comprendido entre 1 y 7,
v TIMESTAMP v INTEGER donde 1 representa el domingo.

SYSFUN v VARCHAR(26) v INTEGER Esta funcin escalar devuelve el da


de la semana del argumento como un
DAYOFWEEK_ISO en la pgina 327 v DATE v INTEGER valor entero comprendido entre 1 y 7,
v TIMESTAMP v INTEGER donde 1 representa el lunes.

SYSFUN v VARCHAR(26) v INTEGER Esta funcin escalar devuelve el da


del ao del argumento como un valor
DAYOFYEAR en la pgina 328 v DATE v INTEGER entero comprendido entre 1 y 366.
v TIMESTAMP v INTEGER
SYSIBM v VARCHAR v INTEGER Esta funcin escalar devuelve una
representacin entera de una fecha.
DAYS en la pgina 329 v TIMESTAMP v INTEGER
v DATE v INTEGER
SYSIBM v tipo-grfico v DBCLOB Esta funcin escalar convierte del tipo
DBCLOB en la pgina 330 fuente a DBCLOB, con longitud
v tipo-grfico, INTEGER v DBCLOB opcional.
SYSIBM v cualquier-tipo v INTEGER Esta funcin escalar devuelve el
nmero de particin de base de datos
DBPARTITIONNUM en la pgina
de la fila. El argumento es cualquier
331 3
nombre de columna dentro de la
tabla.
SYSIBM v tipo-numrico v DECIMAL Esta funcin escalar devuelve una
representacin decimal de un nmero,
v tipo-numrico, v DECIMAL con precisin y escala opcionales.
DECIMAL en la pgina 333 INTEGER v DECIMAL
v tipo-numrico
INTEGER, INTEGER
SYSIBM v VARCHAR v DECIMAL Esta funcin escalar devuelve una
representacin decimal de una serie
v VARCHAR, INTEGER v DECIMAL de caracteres, con precisin, escala y
DECIMAL en la pgina 333 v VARCHAR, INTEGER, v DECIMAL carcter decimal opcionales.
INTEGER v DECIMAL
v VARCHAR, INTEGER,
INTEGER, VARCHAR
SYSIBM v VARCHAR FOR BIT v VARCHAR FOR BIT Esta funcin escalar devuelve un valor
DATA DATA que es el resultado de descifrar datos
DECRYPT_BIN y DECRYPT_CHAR
cifrados utilizando una serie de
en la pgina 337 v VARCHAR FOR BIT v VARCHAR FOR BIT contrasea.
DATA, VARCHAR DATA
SYSIBM v VARCHAR FOR BIT v VARCHAR Esta funcin escalar devuelve un valor
DATA que es el resultado de descifrar datos
DECRYPT_BIN y DECRYPT_CHAR v VARCHAR cifrados utilizando una serie de
en la pgina 337 v VARCHAR FOR BIT contrasea.
DATA, VARCHAR
SYSFUN v DOUBLE v DOUBLE Esta funcin escalar devuelve el
DEGREES en la pgina 339 nmero de grados convertidos a partir
del argumento expresado en radianes.
SYSIBM v REF(cualquier-tipo- v cualquier-tipo- Esta funcin escalar devuelve una
estructurado) con estructurado (igual que instancia del tipo de destino del
DEREF en la pgina 340 argumento del tipo de referencia.
mbito definido el tipo de destino de
entrada)
SYSFUN v VARCHAR(4000), v INTEGER Esta funcin escalar devuelve la
VARCHAR(4000) diferencia entre el sonido de las
palabras en dos series del argumento,
DIFFERENCE en la pgina 341
segn se haya determinado mediante
la funcin SOUNDEX. El valor 4
significa que las series suenan igual.
SYSIBM v DECIMAL v CHAR Esta funcin escalar devuelve la
DIGITS en la pgina 342 representacin en el formato de una
serie de caracteres de un nmero.
SYSIBM v tipo-numrico v DOUBLE Esta funcin escalar devuelve la
DOUBLE en la pgina 343 representacin en el formato de coma
flotante de un nmero.

254 Consulta de SQL - Volumen 1


Funciones soportadas

Tabla 16. Funciones soportadas (continuacin)


Nombre de funcin Esquema Entrada Devuelve Descripcin
SYSFUN v VARCHAR v DOUBLE Esta funcin escalar devuelve el
nmero de coma flotante
correspondiente a la representacin en
DOUBLE en la pgina 343
el formato de una serie de caracteres
de un nmero. Los blancos iniciales y
finales de argumento se pasan por alto.
SYSIBM v VARCHAR v VARCHAR FOR BIT Esta funcin escalar devuelve un valor
DATA que es el resultado de cifrar una
v VARCHAR, expresin de serie de datos.
ENCRYPT en la pgina 345 VARCHAR v VARCHAR FOR BIT
v VARCHAR, DATA
VARCHAR, v VARCHAR FOR BIT
VARCHAR DATA
SYSIBM v VARCHAR v INTEGER Esta funcin escalar devuelve el
EVENT_MON_STATE en la pgina
estado operativo de un determinado
347
supervisor de sucesos.
SYSFUN v DOUBLE v DOUBLE Esta funcin escalar devuelve la
EXP en la pgina 348
funcin exponencial del argumento.
SYSIBM Esta funcin escalar es igual que
FLOAT en la pgina 349
DOUBLE.
SYSIBM v SMALLINT v SMALLINT Esta funcin escalar devuelve el entero
ms grande que es menor o igual que
v INTEGER v INTEGER el argumento.
FLOOR en la pgina 350
v BIGINT v BIGINT
v DOUBLE v DOUBLE
SYSIBM v sin argumento v CHAR(13) FOR BIT Esta funcin escalar devuelve una
DATA serie de caracteres de datos de bits
GENERATE_UNIQUE en la pgina
que es exclusiva comparada con
352
cualquier otra ejecucin de la misma
funcin.
SYSIBM v VARCHAR o CLOB v VARCHAR Esta funcin escalar devuelve la
GETHINT en la pgina 351 contrasea sugerida, si se encuentra
una.
SYSIBM v tipo-grfico v GRAPHIC Esta funcin escalar convierte del tipo
GRAPHIC en la pgina 354 fuente a GRAPHIC, con longitud
v tipo-grfico, INTEGER v GRAPHIC opcional.
SYSIBM v cualquier-tipo v SMALLINT Esta funcin agregada se utiliza con
conjuntos-agrupaciones y
super-grupos para indicar el subtotal
de filas generadas por un conjunto de
agrupaciones. El valor que se
devuelve es 0 1. Si se devuelve 1, el
GROUPING en la pgina 283
valor del argumento de la fila
devuelta es nulo y se ha generado
para un conjunto de agrupaciones.
Esta fila generada proporciona un
subtotal correspondiente a un
conjunto de agrupaciones.
SYSIBM v cualquier-tipo v INTEGER Esta funcin escalar devuelve el ndice
de correlacin de distribucin (de 0 a
3
HASHEDVALUE en la pgina 356 4095) de la fila. El argumento es un
nombre de columna dentro de una
tabla.
SYSIBM v cualquier-tipo-integrado v VARCHAR Esta funcin escalar devuelve la parte
HEX en la pgina 358
hexadecimal de un valor.
SYSIBM v VARCHAR v INTEGER Esta funcin escalar devuelve la parte
correspondiente a la hora de un valor.
v TIME v INTEGER
HOUR en la pgina 360
v TIMESTAMP v INTEGER
v DECIMAL v INTEGER
SYSIBM v DECIMAL Esta funcin escalar devuelve el valor
IDENTITY_VAL_LOCAL en la
asignado ms reciente correspondiente
pgina 361
a una columna de entidad.

Captulo 3. Funciones 255


Funciones soportadas

Tabla 16. Funciones soportadas (continuacin)


Nombre de funcin Esquema Entrada Devuelve Descripcin
SYSFUN v VARCHAR(4000), v VARCHAR(4000) Esta funcin escalar devuelve una
INTEGER, INTEGER, serie en la que argumento3 bytes se
v CLOB(1M) han suprimido de argumento1
VARCHAR(4000)
v BLOB(1M) comenzando por argumento2 y en la
INSERT en la pgina 365 v CLOB(1M), INTEGER, que argumento4 bytes se han insertado
INTEGER, CLOB(1M) en argumento1 comenzando por
v BLOB(1M), INTEGER, argumento2.
INTEGER, BLOB(1M)
SYSIBM v tipo-numrico v INTEGER Esta funcin escalar devuelve la
INTEGER en la pgina 366 representacin entera de un nmero.
v VARCHAR v INTEGER
SYSFUN v VARCHAR(26) v INTEGER Esta funcin escalar devuelve un valor
entero que representa el nmero de
v DATE v INTEGER das desde el 1 de enero de 4712 A.C.
JULIAN_DAY en la pgina 368
v TIMESTAMP v INTEGER (la fecha de inicio del calendario
Juliano) hasta el valor de fecha
especificado en el argumento.
SYSFUN v VARCHAR(4000) v VARCHAR(4000) Esta funcin escalar devuelve una
serie en la que todos los caracteres se
v CLOB(1M) v CLOB(1M) han convertido a minsculas. LCASE
LCASE (esquema SYSFUN) en la slo maneja caracteres del conjunto no
pgina 370 variable. Por lo tanto,
LCASE(UCASE(serie)) no
necesariamente devuelve el mismo
resultado que LCASE(serie).
SYSIBM v CHAR v CHAR Esta funcin escalar devuelve una
LCASE o LOWER en la pgina 369 serie en la que todos los caracteres se
v VARCHAR v VARCHAR han convertido a minsculas.
SYSFUN v VARCHAR(4000), v VARCHAR(4000) Esta funcin escalar devuelve una
INTEGER serie que consta de los argumento2
LEFT en la pgina 371 v CLOB(1M) bytes situados ms a la izquierda de
v CLOB(1M), INTEGER v BLOB(1M) argumento1.
v BLOB(1M), INTEGER
SYSIBM v cualquier-tipo-integrado v INTEGER Esta funcin escalar devuelve la
longitud del operando en bytes
LENGTH en la pgina 372 v cualquier-tipo- v INTEGER (excepto para los tipos de series de
incorporado, unidad-serie doble byte, que devuelven la longitud
en caracteres de doble byte).
SYSFUN v DOUBLE v DOUBLE Esta funcin escalar devuelve el
LN en la pgina 374 logaritmo natural del argumento
(igual que LOG).
SYSIBM v tipo-serie, v INTEGER Esta funcin escalar devuelve la
tipo-serie-compatible posicin inicial de la primera
v INTEGER ocurrencia de argumento1 dentro de
v tipo-serie, v INTEGER argumento2. Si se especifica el
tipo-serie-compatible, argumento INTEGER opcional, indica
INTEGER v INTEGER
la posicin de caracteres en argument2
LOCATE en la pgina 375 v tipo-serie, en la que debe empezar la bsqueda.
tipo-serie-compatible, Si no se encuentra argumento1 dentro
de argumento2, se devuelve el valor 0.
unidad-serie
v tipo-serie,
tipo-serie-compatible,
INTEGER, unidad-serie
SYSFUN v DOUBLE v DOUBLE Esta funcin escalar devuelve el
LOG en la pgina 379 logaritmo natural del argumento
(igual que LN).
SYSFUN v DOUBLE v DOUBLE Esta funcin escalar devuelve el
LOG10 en la pgina 380
logaritmo en base 10 del argumento.
SYSIBM v tipo-carcter v LONG VARCHAR Esta funcin escalar devuelve una
LONG_VARCHAR en la pgina 381
serie larga.
LONG_VARGRAPHIC en la pgina SYSIBM v tipo-grfico v LONG VARGRAPHIC Esta funcin escalar convierte del tipo
382 fuente a LONG VARGRAPHIC.
SYSFUN v VARCHAR(4000) v VARCHAR(4000) Esta funcin escalar devuelve los
LTRIM (esquema SYSFUN) en la
caracteres del argumento con los
pgina 384 v CLOB(1M) v CLOB(1M) blancos iniciales eliminados.

256 Consulta de SQL - Volumen 1


Funciones soportadas

Tabla 16. Funciones soportadas (continuacin)


Nombre de funcin Esquema Entrada Devuelve Descripcin
SYSIBM v CHAR v VARCHAR Esta funcin escalar devuelve los
caracteres del argumento con los
v VARCHAR v VARCHAR blancos iniciales eliminados.
LTRIM en la pgina 383
v GRAPHIC v VARGRAPHIC
v VARGRAPHIC v VARGRAPHIC
SYSIBM v cualquier-tipo-integrado5 v igual que el tipo de Esta funcin agregada devuelve el
MAX en la pgina 285 entrada valor mximo de un conjunto de
valores.
SYSIBM v VARCHAR v INTEGER Esta funcin escalar devuelve la parte
correspondiente a las milsimas de
MICROSECOND en la pgina 385 v TIMESTAMP v INTEGER segundo (unidad de tiempo) de un
v DECIMAL v INTEGER valor.

SYSFUN v VARCHAR(26) v INTEGER Esta funcin escalar devuelve un valor


entero comprendido entre 0 y 86 400
MIDNIGHT_SECONDS en la pgina v TIME v INTEGER que representa el nmero de segundos
386 v TIMESTAMP v INTEGER transcurridos entre medianoche y el
valor de hora especificado en el
argumento.
SYSIBM v cualquier-tipo-integrado5 v igual que el tipo de Esta funcin agregada devuelve el
MIN en la pgina 287 entrada valor mnimo de un conjunto de
valores.
SYSIBM v VARCHAR v INTEGER Esta funcin escalar devuelve la parte
correspondiente a los minutos de un
v TIME v INTEGER valor.
MINUTE en la pgina 387
v TIMESTAMP v INTEGER
v DECIMAL v INTEGER
SYSFUN v SMALLINT, v SMALLINT Esta funcin escalar devuelve el resto
SMALLINT de argumento1 dividido entre
MOD en la pgina 388 v INTEGER argumento2. El resultado slo es
v INTEGER, INTEGER v BIGINT negativo si argumento1 es negativo.
v BIGINT, BIGINT
SYSIBM v VARCHAR v INTEGER Esta funcin escalar devuelve la parte
correspondiente al mes de un valor.
v DATE v INTEGER
MONTH en la pgina 389
v TIMESTAMP v INTEGER
v DECIMAL v INTEGER
SYSFUN v VARCHAR(26) v VARCHAR(100) Esta funcin escalar devuelve una
serie que combina caracteres en
v DATE v VARCHAR(100) maysculas y minsculas que contiene
v TIMESTAMP v VARCHAR(100) el nombre del mes (por ejemplo,
MONTHNAME en la pgina 390
enero) de la parte correspondiente al
mes del argumento, segn el entorno
local en el momento en que se inici
la base de datos.
SYSIBM v tipo-numrico-exacto, v DECIMAL Esta funcin escalar devuelve el
tipo-numrico-exacto producto de dos argumentos como un
MULTIPLY_ALT en la pgina 391 valor decimal. Esta funcin resulta til
cuando la suma de las precisiones del
argumento es mayor que 31.
SYSIBM v cualquier-tipo5, v cualquier-tipo Esta funcin escalar devuelve NULL si
NULLIF en la pgina 393 3
cualquier-tipo- los argumentos son iguales o devuelve
el primer argumento si no lo son.
comparable5
SYSIBM v tipo-serie v INTEGER Esta funcin escalar devuelve la
OCTET_LENGTH en la pgina 394 longitud de una expresin en octetos
(bytes).
SYSIBM v tipo-serie, tipo-serie, v INTEGER Esta funcin escalar devuelve la
POSITION en la pgina 395 unidad-serie posicin inicial de argument2 en
argument1.
SYSIBM v tipo-serie, v INTEGER Esta funcin escalar devuelve la
POSSTR en la pgina 398 tipo-serie-compatible posicin en la que una serie est
contenida en otra.

Captulo 3. Funciones 257


Funciones soportadas

Tabla 16. Funciones soportadas (continuacin)


Nombre de funcin Esquema Entrada Devuelve Descripcin
SYSFUN v INTEGER, INTEGER v INTEGER Esta funcin escalar devuelve el valor
de argumento1 elevado a la potencia
v BIGINT, BIGINT v BIGINT de argumento2.
POWER en la pgina 400
v DOUBLE, INTEGER v DOUBLE
v DOUBLE, DOUBLE v DOUBLE
SYSFUN v VARCHAR(26) v INTEGER Esta funcin escalar devuelve un valor
entero comprendido entre 1 y 4 que
QUARTER en la pgina 401 v DATE v INTEGER representa el trimestre del ao
v TIMESTAMP v INTEGER correspondiente a la fecha especificada
en el argumento.
SYSFUN v DOUBLE v DOUBLE Esta funcin escalar devuelve el
nmero de radianes convertidos a
RADIANS en la pgina 402
partir del argumento expresado en
grados.
SYSIBM v VARCHAR, v cualquier-tipo6 Esta funcin escalar enva un error a
VARCHAR la SQLCA. El sqlstate que se
3
RAISE_ERROR en la pgina 403 devolver se indica mediante
argumento1. El segundo argumento
contiene el texto que debe devolverse.
SYSFUN v sin argumento v DOUBLE Esta funcin escalar devuelve un valor
aleatorio de coma flotante
RAND en la pgina 404 v INTEGER v DOUBLE comprendido entre 0 y 1 utilizando el
argumento como valor generador
opcional.
SYSIBM v tipo-numrico v REAL Esta funcin escalar devuelve la
representacin en el formato de coma
REAL en la pgina 405
flotante de precisin simple de un
nmero.
SYSIBM v DECIMAL, v VARCHAR Esta funcin escalar devuelve una
VARCHAR, serie formateada codificada en XML
REC2XML en la pgina 406 que contiene nombres de columna y
VARCHAR,
datos de columna.
cualquier-tipo7
SYSIBM v tipo-numrico, v DOUBLE La funcin agregada REGR_AVGX
Funciones de regresin en la pgina tipo-numrico devuelve las cantidades utilizadas
290 para calcular las estadsticas de
diagnstico.
SYSIBM v tipo-numrico, v DOUBLE La funcin agregada REGR_AVGY
Funciones de regresin en la pgina tipo-numrico devuelve las cantidades utilizadas
290 para calcular las estadsticas de
diagnstico.
SYSIBM v tipo-numrico, v INTEGER La funcin agregada REGR_COUNT
Funciones de regresin en la pgina tipo-numrico devuelve el nmero de pares de
290 nmeros no nulos utilizados para
acomodar la lnea de regresin.
SYSIBM v tipo-numrico, v DOUBLE La funcin agregada
Funciones de regresin en la pgina tipo-numrico REGR_INTERCEPT o REGR_ICPT
290 devuelve la interseccin y de la lnea
de regresin.
SYSIBM v tipo-numrico, v DOUBLE La funcin agregada REGR_R2
Funciones de regresin en la pgina
tipo-numrico devuelve el coeficiente de
290
determinacin de la regresin.

Funciones de regresin en la pgina SYSIBM v tipo-numrico, v DOUBLE La funcin agregada REGR_SLOPE


290 tipo-numrico devuelve la inclinacin de la lnea.

SYSIBM v tipo-numrico, v DOUBLE La funcin agregada REGR_SXX


Funciones de regresin en la pgina tipo-numrico devuelve las cantidades utilizadas
290 para calcular las estadsticas de
diagnstico.
SYSIBM v tipo-numrico, v DOUBLE La funcin agregada REGR_SXY
Funciones de regresin en la pgina tipo-numrico devuelve las cantidades utilizadas
290 para calcular las estadsticas de
diagnstico.
SYSIBM v tipo-numrico, v DOUBLE La funcin agregada REGR_SYY
Funciones de regresin en la pgina tipo-numrico devuelve las cantidades utilizadas
290 para calcular las estadsticas de
diagnstico.

258 Consulta de SQL - Volumen 1


Funciones soportadas

Tabla 16. Funciones soportadas (continuacin)


Nombre de funcin Esquema Entrada Devuelve Descripcin
SYSFUN v VARCHAR(4000), v VARCHAR(4000) Esta funcin escalar devuelve una
INTEGER serie de caracteres formada por el
REPEAT en la pgina 411 v CLOB(1M) argumento1 repetido argumento2 veces.
v CLOB(1M), INTEGER v BLOB(1M)
v BLOB(1M), INTEGER
SYSFUN v VARCHAR(4000), v VARCHAR(4000) Esta funcin escalar sustituye todas
VARCHAR(4000), las ocurrencias de argumento2 en
v CLOB(1M) argumento1 por argumento3.
VARCHAR(4000)
v BLOB(1M)
REPLACE en la pgina 412 v CLOB(1M), CLOB(1M),
CLOB(1M)
v BLOB(1M), BLOB(1M),
BLOB(1M)
SYSFUN v VARCHAR(4000), v VARCHAR(4000) Esta funcin escalar devuelve una
INTEGER serie que consta de los argumento2
RIGHT en la pgina 413 v CLOB(1M) bytes situados ms a la derecha de
v CLOB(1M), INTEGER v BLOB(1M) argumento1.
v BLOB(1M), INTEGER
SYSIBM v INTEGER, INTEGER v INTEGER Esta funcin escalar devuelve el
primer argumento redondeado a
v BIGINT, INTEGER v BIGINT argumento2 posiciones a la derecha de
v DOUBLE, INTEGER v DOUBLE la coma decimal. Si argumento2 es
ROUND en la pgina 414
negativo, argumento1 se redondea al
valor absoluto de argumento2
posiciones a la izquierda de la coma
decimal.
SYSFUN v VARCHAR(4000) v VARCHAR(4000) Esta funcin escalar devuelve los
RTRIM (esquema SYSFUN) en la
caracteres del argumento con los
pgina 417 v CLOB(1M) v CLOB(1M) blancos de cola eliminados.
SYSIBM v CHAR v VARCHAR Esta funcin escalar devuelve los
caracteres del argumento con los
v VARCHAR v VARCHAR blancos de cola eliminados.
RTRIM en la pgina 416
v GRAPHIC v VARGRAPHIC
v VARGRAPHIC v VARGRAPHIC
SYSIBM v CHAR, serie con v DB2SECURITYLABEL Esta funcin escalar devuelve una
formato de serie de etiqueta de seguridad sin nombre.
etiquetas de seguridad
v VARCHAR, serie con
formato de serie de
etiquetas de seguridad
SECLABEL en la pgina 418 v GRAPHIC, serie con
formato de serie de
etiquetas de seguridad
v VARGRAPHIC, serie
con formato de serie
de etiquetas de
seguridad
SYSIBM v CHAR, v DB2SECURITYLABEL Esta funcin escalar devuelve una
DB2SECURITYLABEL etiqueta de seguridad especfica.

v VARCHAR,
SECLABEL_BY_NAME en la pgina DB2SECURITYLABEL
419 v GRAPHIC,
DB2SECURITYLABEL
v VARGRAPHIC,
DB2SECURITYLABEL
SYSIBM v CHAR, v serie con formato de Esta funcin escalar acepta una
DB2SECURITYLABEL serie de etiquetas de etiqueta de seguridad y devuelve una
serie que contiene todos los elementos
v VARCHAR, seguridad
de la etiqueta de seguridad.
SECLABEL_TO_CHAR en la pgina DB2SECURITYLABEL
420 v GRAPHIC,
DB2SECURITYLABEL
v VARGRAPHIC,
DB2SECURITYLABEL

Captulo 3. Funciones 259


Funciones soportadas

Tabla 16. Funciones soportadas (continuacin)


Nombre de funcin Esquema Entrada Devuelve Descripcin
SYSIBM v VARCHAR v INTEGER Esta funcin escalar devuelve la parte
correspondiente a los segundos
v TIME v INTEGER (unidad de tiempo) de un valor.
SECOND en la pgina 422
v TIMESTAMP v INTEGER
v DECIMAL v INTEGER
SYSFUN v SMALLINT v SMALLINT Esta funcin escalar devuelve un
indicador del signo del argumento. Si
v INTEGER v INTEGER el argumento es menor que cero, se
SIGN en la pgina 423
v BIGINT v BIGINT devuelve -1. Si el argumento es igual a
cero, se devuelve 0. Si el argumento es
v DOUBLE v DOUBLE
mayor que cero, se devuelve 1.
SYSIBM v DOUBLE v DOUBLE Esta funcin escalar devuelve el seno
SIN en la pgina 424 del argumento, donde el argumento es
un ngulo expresado en radianes.
SYSIBM v DOUBLE v DOUBLE Esta funcin escalar devuelve el seno
hiperblico del argumento, donde el
SINH SINH en la pgina 425
argumento es un ngulo expresado en
radianes.
SYSIBM v tipo-numrico v SMALLINT Esta funcin escalar devuelve la
SMALLINT en la pgina 426 representacin en el formato de un
v VARCHAR v SMALLINT entero pequeo de un nmero.
SYSFUN v VARCHAR(4000) v CHAR(4) Esta funcin escalar devuelve un
cdigo de 4 caracteres que representa
el sonido de las palabras del
SOUNDEX en la pgina 427
argumento. Este resultado se puede
comparar con el sonido de otras
series.
SYSFUN v INTEGER v VARCHAR(4000) Esta funcin escalar devuelve una
SPACE en la pgina 428 serie de caracteres formada por
argumento1 blancos.
SYSFUN v DOUBLE v DOUBLE Esta funcin escalar devuelve la raz
SQRT en la pgina 429
cuadrada del argumento.
SYSIBM v DOUBLE v DOUBLE Esta funcin agregada devuelve la
STDDEV en la pgina 293 desviacin estndar de un conjunto de
nmeros.
SYSIBM v CHAR v CHAR Esta funcin escalar elimina de una
expresin de serie, los espacios en
v VARCHAR v VARCHAR blanco iniciales o de cola o bien otros
v GRAPHIC v GRAPHIC caracteres iniciales o de cola
especificados.
v VARGRAPHIC v VARGRAPHIC
STRIP en la pgina 430
v CHAR, CHAR v CHAR
v VARCHAR, CHAR v VARCHAR
v GRAPHIC, CHAR v GRAPHIC
v VARGRAPHIC, CHAR v VARGRAPHIC
SYSIBM v tipo-serie, INTEGER v tipo-serie Esta funcin escalar devuelve una
subserie de la serie argumento1,
v tipo-serie, INTEGER, v tipo-serie empezando por argumento2. La
SUBSTR en la pgina 431 INTEGER subserie tiene una longitud de
argumento3 bytes. Si no se especifica
argumento3, se da por supuesto el
resto de la serie.
SYSIBM v tipo-serie, INTEGER, v tipo-serie Esta funcin escalar devuelve una
unidad-serie subserie de la serie argumento1,
v tipo-serie empezando por argumento2. La
v tipo-serie, INTEGER, subserie tiene una longitud de
SUBSTRING en la pgina 434 INTEGER, unidad-serie argumento3 caracteres. Si no se
especifica el otro argumento
INTEGER, se dar por supuesto el
resto de la serie.
SYSIBM v tipo-numrico4 v tipo-numrico-mx1 Esta funcin agregada devuelve la
SUM en la pgina 294
suma de un conjunto de nmeros.

260 Consulta de SQL - Volumen 1


Funciones soportadas

Tabla 16. Funciones soportadas (continuacin)


Nombre de funcin Esquema Entrada Devuelve Descripcin
SYSIBM v VARCHAR v VARCHAR(128) Esta funcin escalar devuelve un
nombre no calificado de una tabla o
v VARCHAR, v VARCHAR(128) vista basado en el nombre de objeto
VARCHAR especificado en argumento1 y en el
TABLE_NAME en la pgina 437
nombre de esquema opcional
especificado en argumento2. El valor
devuelto se utiliza para resolver los
alias.
SYSIBM v VARCHAR v VARCHAR(128) Esta funcin escalar devuelve la parte
correspondiente al nombre de
v VARCHAR, v VARCHAR(128) esquema de un nombre de tabla o de
VARCHAR vista de dos partes (especificado por
TABLE_SCHEMA en la pgina 438
el nombre del objeto en argumento1 y
por el nombre de esquema opcional
en argumento2). El valor devuelto se
utiliza para resolver los alias.
SYSIBM v DOUBLE v DOUBLE Esta funcin escalar devuelve la
tangente del argumento, donde el
TAN en la pgina 440
argumento es un ngulo expresado en
radianes.
SYSIBM v DOUBLE v DOUBLE Esta funcin escalar devuelve la
tangente hiperblica del argumento,
TANH en la pgina 441
donde el argumento es un ngulo
expresado en radianes.
SYSIBM v TIME v TIME Esta funcin escalar devuelve una
hora a partir de un valor.
TIME en la pgina 442 v TIMESTAMP v TIME
v VARCHAR v TIME
SYSIBM v TIMESTAMP v TIMESTAMP Esta funcin escalar devuelve una
indicacin de fecha y hora a partir de
v VARCHAR v TIMESTAMP un valor o de un par de valores.
v VARCHAR, v TIMESTAMP
TIMESTAMP en la pgina 443 VARCHAR v TIMESTAMP
v VARCHAR, TIME v TIMESTAMP
v DATE, VARCHAR v TIMESTAMP
v DATE, TIME
SYSIBM v VARCHAR, v TIMESTAMP Esta funcin escalar devuelve una
VARCHAR indicacin de fecha y hora a partir de
TIMESTAMP_FORMAT en la pgina
una serie de caracteres (argumento1)
444
que se ha interpretado utilizando una
plantilla de formato (argumento2).
SYSFUN v DATE v TIMESTAMP Esta funcin escalar devuelve un valor
de indicacin de fecha y hora basado
v TIME v TIMESTAMP en un argumento de fecha, de hora o
v TIMESTAMP v TIMESTAMP de indicacin de fecha y hora. Si el
argumento es una fecha, inserta cero
TIMESTAMP_ISO en la pgina 446 v VARCHAR(26) v TIMESTAMP
para todos los elementos de hora. Si el
argumento es una hora, inserta el
valor de CURRENT DATE para los
elementos de fecha y ceros para el
elemento de fraccin de hora.

Captulo 3. Funciones 261


Funciones soportadas

Tabla 16. Funciones soportadas (continuacin)


Nombre de funcin Esquema Entrada Devuelve Descripcin
SYSFUN v INTEGER, CHAR(22) v INTEGER Esta funcin escalar devuelve un
nmero estimado de intervalos de tipo
argumento1 basado en la diferencia
entre dos indicaciones de fecha y hora.
El segundo argumento es el resultado
de restar dos tipos de indicaciones de
fecha y hora y de convertir el
resultado en CHAR. Los tipos de
intervalos vlidos son los siguientes:

1 Fracciones de un segundo

2 Segundos
TIMESTAMPDIFF en la pgina 447
4 Minutos

8 Horas

16 Das

32 Semanas

64 Meses

128 Trimestres

256 Aos
SYSIBM v igual que v igual que Esta funcin escalar devuelve una
VARCHAR_FORMAT VARCHAR_FORMAT representacin en el formato de
TO_CHAR en la pgina 449
caracteres de una indicacin de fecha
y hora.
SYSIBM v igual que v igual que Esta funcin escalar devuelve una
TO_DATE en la pgina 450 TIMESTAMP_FORMAT TIMESTAMP_FORMAT indicacin de la fecha y hora a partir
de una serie de caracteres.
SYSIBM v CHAR v CHAR Esta funcin escalar devuelve una
serie en la que uno o ms caracteres
v VARCHAR v VARCHAR se pueden haber convertido a otros
v CHAR, VARCHAR, v CHAR caracteres.
VARCHAR v VARCHAR
v VARCHAR, v CHAR
VARCHAR,
VARCHAR v VARCHAR

v CHAR, VARCHAR, v GRAPHIC


VARCHAR, v VARGRAPHIC
VARCHAR v GRAPHIC
v VARCHAR, v VARGRAPHIC
VARCHAR,
VARCHAR,
TRANSLATE en la pgina 451 VARCHAR
v GRAPHIC,
VARGRAPHIC,
VARGRAPHIC
v VARGRAPHIC,
VARGRAPHIC,
VARGRAPHIC
v GRAPHIC,
VARGRAPHIC,
VARGRAPHIC,
VARGRAPHIC
v VARGRAPHIC,
VARGRAPHIC,
VARGRAPHIC,
VARGRAPHIC

262 Consulta de SQL - Volumen 1


Funciones soportadas

Tabla 16. Funciones soportadas (continuacin)


Nombre de funcin Esquema Entrada Devuelve Descripcin
SYSIBM v CHAR v CHAR Esta funcin escalar elimina de una
expresin de serie, los espacios en
v VARCHAR v VARCHAR blanco iniciales o de cola o bien otros
v GRAPHIC v GRAPHIC caracteres iniciales o de cola
especificados.
v VARGRAPHIC v VARGRAPHIC
en la pgina 453
v CHAR, CHAR v CHAR
v CHAR, VARCHAR v VARCHAR
v CHAR, GRAPHIC v GRAPHIC
v CHAR, VARGRAPHIC v VARGRAPHIC
SYSIBM v INTEGER, INTEGER v INTEGER Esta funcin escalar devuelve el
argumento1 truncado a argumento2
v BIGINT, INTEGER v BIGINT posiciones a la derecha de la coma
TRUNCATE o TRUNC en la pgina
v DOUBLE, INTEGER v DOUBLE decimal. Si argumento2 es negativo,
455
argumento1 se trunca al valor absoluto
de argumento2 posiciones a la
izquierda de la coma decimal.
SYSIBM v cualquier-tipo- v INTEGER Esta funcin escalar devuelve el
estructurado identificador de tipo de datos interno
3 del tipo de datos dinmico del
TYPE_ID en la pgina 456
argumento. Tenga en cuenta que el
resultado de esta funcin no se puede
portar entre bases de datos.
SYSIBM v cualquier-tipo- v VARCHAR(18) Esta funcin escalar devuelve el
3
TYPE_NAME en la pgina 457 estructurado nombre no calificado del tipo de datos
dinmico del argumento.
SYSIBM v cualquier-tipo- v VARCHAR(128) Esta funcin escalar devuelve el
3
TYPE_SCHEMA en la pgina 458 estructurado nombre de esquema del tipo dinmico
del argumento.
SYSFUN v VARCHAR v VARCHAR Esta funcin escalar devuelve una
UCASE o UPPER en la pgina 459 serie en la que todos los caracteres se
han convertido a maysculas.
SYSIBM v CHAR v CHAR Esta funcin escalar devuelve una
UCASE o UPPER en la pgina 459 serie en la que todos los caracteres se
v VARCHAR v VARCHAR han convertido a maysculas.

3 SYSIBM Esta funcin escalar es igual que


VALUE en la pgina 460
COALESCE.
SYSIBM v tipo-carcter v VARCHAR Esta funcin escalar devuelve una
representacin en el formato
VARCHAR en la pgina 461 v tipo-carcter, INTEGER v VARCHAR VARCHAR del primer argumento. Si
v tipo-fechahora v VARCHAR existe un segundo argumento,
especifica la longitud del resultado.
SYSIBM v TIMESTAMP, v VARCHAR Esta funcin escalar devuelve una
VARCHAR representacin en el formato de
VARCHAR_FORMAT en la pgina v VARCHAR caracteres de una indicacin de fecha
463 v VARCHAR, y hora (argumento1) con el formato
VARCHAR indicado en una plantilla (argumento2).
SYSIBM v tipo-grfico v VARGRAPHIC Esta funcin escalar devuelve una
representacin en el formato
VARGRAPHIC en la pgina 465 v tipo-grfico, INTEGER v VARGRAPHIC VARGRAPHIC del primer argumento.
v VARCHAR v VARGRAPHIC Si existe un segundo argumento,
especifica la longitud del resultado.
SYSIBM v DOUBLE v DOUBLE Esta funcin agregada devuelve la
VARIANCE en la pgina 295
varianza de un conjunto de nmeros.
SYSFUN v VARCHAR(26) v INTEGER Esta funcin escalar devuelve la
semana del ao del argumento como
WEEK en la pgina 467 v DATE v INTEGER un valor entero comprendido entre 1 y
v TIMESTAMP v INTEGER 54.

SYSFUN v VARCHAR(26) v INTEGER Esta funcin escalar devuelve la


semana del ao del argumento como
v DATE v INTEGER un valor entero comprendido entre 1 y
WEEK_ISO en la pgina 468 v TIMESTAMP v INTEGER 53. El primer da de una semana es el
lunes. La semana 1 es la primera
semana del ao que contiene un
jueves.

Captulo 3. Funciones 263


Funciones soportadas

Tabla 16. Funciones soportadas (continuacin)


Nombre de funcin Esquema Entrada Devuelve Descripcin
SYSIBM v VARCHAR v INTEGER Esta funcin escalar devuelve la parte
correspondiente al ao de un valor.
v DATE v INTEGER
YEAR en la pgina 508
v TIMESTAMP v INTEGER
v DECIMAL v INTEGER
SYSIBM v XML v XML Esta funcin agregada devuelve una
secuencia XML que contiene un
XMLAGG en la pgina 288
elemento por cada valor que no sea
nulo en un conjunto de valores XML.
SYSIBM v Cualquier expresin v XML Esta funcin escalar construye los
SQL, aunque no un atributos XML a partir de los
argumentos.
XMLATTRIBUTES en la pgina 469 tipo estructurado; no
se puede incluir una
seleccin completa
escalar.
SYSIBM v tipo-carcter v XML Esta funcin escalar devuelve un valor
XML con un nico nodo de
XMLCOMMENT en la pgina 471
comentario XQuery con el argumento
de entrada como contenido.
SYSIBM v XML v XML Esta funcin escalar devuelve una
secuencia que contiene la
XMLCONCAT en la pgina 472
concatenacin de un nmero variable
de argumentos de entrada de XML.
SYSIBM v XML v XML Esta funcin escalar devuelve un valor
XML con un nico nodo de
XMLDOCUMENT en la pgina 474
documento XQuery con ninguno o
varios nodos hijo.
SYSIBM v XML v XML Esta funcin escalar devuelve un valor
XMLELEMENT en la pgina 476 XML que es un nodo de elemento
XML.
SYSIBM v Cualquier expresin v XML Esta funcin escalar devuelve un valor
SQL, aunque no un XML que es una secuencia de nodos
de elemento XML.
XMLFOREST en la pgina 482 tipo estructurado; no
se puede incluir una
seleccin completa
escalar.
SYSIBM v tipo-carcter v XML Esta funcin escalar construye
XMLNAMESPACES en la pgina
declaraciones de espacio de nombres a
486
partir de los argumentos.
SYSIBM v tipo-carcter v XML Esta funcin escalar analiza el
argumento como si fuera un
XMLPARSE en la pgina 489 v BLOB v XML documento XML y devuelve un valor
XML.
SYSIBM v tipo-carcter v XML Esta funcin escalar devuelve un valor
XMLPI en la pgina 491 XML con un nico nodo de
instruccin de proceso XQuery.
SYSIBM v tipo-carcter v XML Esta funcin escalar devuelve un valor
XML a partir de la evaluacin de una
expresin XQuery utilizando
XMLQUERY en la pgina 493
posiblemente los argumentos de
entrada especificados como variables
de XQuery.
SYSIBM v tipo-carcter v XML Esta funcin escalar devuelve un valor
XML serializado de los tipos de datos
XMLSERIALIZE en la pgina 497 v BLOB v XML especificados, generados a partir del
argumento.
SYSIBM > Esta funcin de tabla devuelve una
tabla a partir de la evaluacin de las
expresiones de XQuery, posiblemente
utilizando los argumentos de entrada
XMLTABLE en la pgina 510 especificados como variables XQuery.
Cada elemento de la secuencia de
resultados de la expresin XQuery de
fila representa una fila de la tabla de
resultados.

264 Consulta de SQL - Volumen 1


Funciones soportadas

Tabla 16. Funciones soportadas (continuacin)


Nombre de funcin Esquema Entrada Devuelve Descripcin
SYSIBM v tipo-carcter v XML Esta funcin escalar devuelve un valor
XML con un nico nodo de texto
XMLTEXT en la pgina 500
XQuery cuyo contenido es el
argumento de entrada.
SYSIBM v XML v XML Esta funcin escalar devuelve una
copia del valor XML de entrada
aumentado con la informacin
XMLVALIDATE en la pgina 502 obtenida a partir de la validacin de
esquema XML, incluidos las
anotaciones de tipo y los valores por
omisin.
SYSIBM v XML v BIGINT Esta funcin escalar devuelve el
identificador de objeto XSR del
XMLXSROBJECTID en la pgina 507 esquema XML utilizado para validar
el documento XML especificado en el
argumento.
SYSIBM v tipo-numrico, v tipo-numrico-mx Suma dos operandos numricos.
+
tipo-numrico

+ SYSIBM v tipo-numrico v tipo-numrico Operatorio ms unario.

SYSIBM v DATE, DECIMAL(8,0) v DATE Operador ms de fecha y hora.

v TIME, DECIMAL(6,0) v TIME


v TIMESTAMP, v TIMESTAMP
DECIMAL(20,6) v DATE
v DECIMAL(8,0), DATE v TIME
+ v DECIMAL(6,0), TIME v TIMESTAMP
v DECIMAL(20,6), v tipo-fechahora
TIMESTAMP
v tipo-fechahora,
DOUBLE,
cdigo-duracin-
etiquetado
SYSIBM v tipo-numrico, v tipo-numrico-mx Resta dos operandos numricos.

tipo-numrico

SYSIBM v tipo-numrico v tipo-numrico1 Operatorio menos unario.

SYSIBM v DATE, DATE v DECIMAL(8,0) Operador menos de fecha y hora.

v TIME, TIME v DECIMAL(6,0)


v TIMESTAMP, v DECIMAL(20,6)
TIMESTAMP v DECIMAL(8,0)
v DATE, VARCHAR v DECIMAL(6,0)
v TIME, VARCHAR v DECIMAL(20,6)
v TIMESTAMP, v DECIMAL(8,0)
VARCHAR
v DECIMAL(6,0)
v VARCHAR, DATE
v DECIMAL(20,6)
v VARCHAR, TIME
v DATE
v VARCHAR,
TIMESTAMP v TIME

v DATE, DECIMAL(8,0) v TIMESTAMP

v TIME, DECIMAL(6,0) v tipo-fechahora

v TIMESTAMP,
DECIMAL(20,6)
v tipo-fechahora,
DOUBLE,
cdigo-duracin-
etiquetado
SYSIBM v tipo-numrico, v tipo-numrico-mx Multiplica dos operandos numricos.
*
tipo-numrico
SYSIBM v tipo-numrico, v tipo-numrico-mx Divide dos operandos numricos.

tipo-numrico

Captulo 3. Funciones 265


Funciones soportadas

Tabla 16. Funciones soportadas (continuacin)


Nombre de funcin Esquema Entrada Devuelve Descripcin
\ SYSIBM Igual que CONCAT.
Notas
v En las referencias a tipos de datos de serie que no estn calificados por una longitud se da por supuesto que dan soporte a la longitud mxima
correspondiente al tipo de datos.
v En las referencias a un tipo de datos DECIMAL sin precisin y escala se da por supuesto que permiten cualquier precisin y escala soportadas.
Claves de las tablas

cualquier-tipo-integrado
Cualquier tipo de datos que no es un tipo diferenciado.

cualquier-tipo Cualquier tipo definido ante la base de datos.

cualquier-tipo-estructurado
Cualquier tipo estructurado definido por el usuario ante la base de datos.

cualquier-tipo-comparable
Cualquier tipo que se puede comparar con otros tipos de argumento segn lo definido en Asignaciones y comparaciones en
la pgina 117.

cualquier-tipo-compatible-unin
Cualquier tipo que sea compatible con otros tipos de argumentos, segn lo definido en Reglas para los tipos de datos del
resultado en la pgina 129.

tipo-carcter Cualquiera de los siguientes tipos de series de caracteres: CHAR, VARCHAR, LONG VARCHAR, CLOB.

tipo-serie-compatible
Un tipo de serie que proviene de la misma agrupacin que el otro argumento (por ejemplo, si un argumento es un tipo-carcter
el otro tambin debe ser un tipo-carcter).

tipo-fechahora Cualquiera de los siguientes tipos de fecha y hora: DATE, TIME, TIMESTAMP.

tipo-numrico-exacto
Cualquiera de los tipos numricos exactos: SMALLINT, INTEGER, BIGINT, DECIMAL.

tipo-grfico Cualquiera de los siguientes tipos de series de caracteres de doble byte: GRAPHIC, VARGRAPHIC, LONG VARGRAPHIC,
DBCLOB.

cdigo-duracin-etiquetado
Como tipo es SMALLINT. Si la funcin se invoca utilizando el formato infix del operador ms o menos, se pueden utilizar las
duraciones etiquetadas segn lo definido en Expresiones. Para una funcin fuente que no utiliza el carcter del operador
ms o menos como el nombre, se deben utilizar los siguientes valores para el argumento cdigo-duracin-etiquetado cuando
se invoca la funcin.

1 YEAR o YEARS

2 MONTH o MONTHS

3 DAY o DAYS

4 HOUR o HOURS

5 MINUTE o MINUTES

6 SECOND o SECONDS

7 MICROSECOND o MICROSECONDS

tipo-LOB Cualquiera de los tipos de objetos grandes: BLOB, CLOB, DBCLOB.

tipo-numrico-mx El tipo numrico mximo de los argumentos, donde mximo es el tipo-numrico que hay ms a la derecha.

tipo-serie-mx El tipo de serie mximo de los argumentos, donde mximo es el tipo-carcter o tipo-grfico que hay ms a la derecha. Si los
argumentos son BLOB, el tipo-serie-mx es BLOB.

tipo-numrico Cualquiera de los siguientes tipos numricos: SMALLINT, INTEGER, BIGINT, DECIMAL, REAL, DOUBLE.

unidad-serie Especifica la unidad que se utilizar al determinar la longitud de una serie; puede ser OCTETS, CODEUNITS16 o
CODEUNITS32.

tipo-serie Cualquier tipo desde tipo-caracteres, tipo-grfico o BLOB.

266 Consulta de SQL - Volumen 1


Funciones soportadas

Tabla 16. Funciones soportadas (continuacin)


Nombre de funcin Esquema Entrada Devuelve Descripcin
Notas al pie de las tablas
1
Cuando el parmetro de entrada es SMALLINT, el tipo de resultado es INTEGER. Cuando el parmetro de entrada es REAL, el tipo de
resultado es DOUBLE.
2
Las palabras clave permitidas son ISO, USA, EUR, JIS y LOCAL. Esta signatura de funcin no recibe soporte como una funcin fuente.
3
Esta funcin no se puede utilizar como una funcin fuente.
4
La palabra clave ALL o DISTINCT se puede utilizar antes del primer argumento. Si se especifica DISTINCT, el uso de tipos estructurados
definidos por el usuario, tipos de series largos o el tipo DATALINK no recibe soporte.
5
El uso de tipos estructurados definidos por el usuario, tipos de series largos o de un tipo DATALINK no recibe soporte.
6
El tipo devuelto por RAISE_ERROR depende el contexto de su uso. RAISE_ERROR, si no se convierte en un determinado tipo, devolver
un tipo adecuado a su invocacin dentro de una expresin CASE.
7
El uso del tipo-grfico, del tipo-LOB, de los tipos de series largos y de los tipos DATALINK no recibe soporte.

Tabla 17. Funciones agregadas


Funcin Descripcin
AVG en la pgina 276 Devuelve el promedio de un conjunto de nmeros.
CORRELATION en la Devuelve el coeficiente de correlacin de un conjunto de
pgina 278 pares de nmeros.
COUNT en la pgina 279 Devuelve el nmero de filas o de valores de un conjunto de
filas o de valores.
COUNT_BIG en la pgina Devuelve el nmero de filas o de valores de un conjunto de
280 filas o de valores. El resultado puede ser mayor que el
valor mximo de INTEGER.
COVARIANCE en la Devuelve la covarianza de un conjunto de pares de
pgina 282 nmeros.
GROUPING en la pgina Se utiliza con conjuntos-agrupaciones y super-grupos para
283 indicar el subtotal de filas generadas por un conjunto de
agrupaciones. El valor que se devuelve es 0 1. Si se
devuelve 1, el valor del argumento de la fila devuelta es
nulo y se ha generado para un conjunto de agrupaciones.
Esta fila generada proporciona un subtotal correspondiente
a un conjunto de agrupaciones.
MAX en la pgina 285 Devuelve el valor mximo de un conjunto de valores.
MIN en la pgina 287 Devuelve el valor mnimo de un conjunto de valores.
Funciones de regresin en La funcin agregada REGR_AVGX devuelve las cantidades
la pgina 290 utilizadas para calcular las estadsticas de diagnstico.
Funciones de regresin en La funcin agregada REGR_AVGY devuelve las cantidades
la pgina 290 utilizadas para calcular las estadsticas de diagnstico.
Funciones de regresin en La funcin agregada REGR_COUNT devuelve el nmero
la pgina 290 de pares de nmeros no nulos utilizados para acomodar la
lnea de regresin.
Funciones de regresin en La funcin agregada REGR_INTERCEPT o REGR_ICPT
la pgina 290 devuelve la interseccin y de la lnea de regresin.
Funciones de regresin en La funcin agregada REGR_R2 devuelve el coeficiente de
la pgina 290 determinacin de la regresin.
Funciones de regresin en La funcin agregada REGR_SLOPE devuelve la inclinacin
la pgina 290 de la lnea.
Funciones de regresin en La funcin agregada REGR_SXX devuelve las cantidades
la pgina 290 utilizadas para calcular las estadsticas de diagnstico.

Captulo 3. Funciones 267


Funciones soportadas

Tabla 17. Funciones agregadas (continuacin)


Funcin Descripcin
Funciones de regresin en La funcin agregada REGR_SXY devuelve las cantidades
la pgina 290 utilizadas para calcular las estadsticas de diagnstico.
Funciones de regresin en La funcin agregada REGR_SYY devuelve las cantidades
la pgina 290 utilizadas para calcular las estadsticas de diagnstico.
STDDEV en la pgina 293 Devuelve la desviacin estndar de un conjunto de
nmeros.
SUM en la pgina 294 Devuelve la suma de un conjunto de nmeros.
VARIANCE en la pgina Devuelve la varianza de un conjunto de nmeros.
295

Tabla 18. Funciones escalares de difusin


Funcin Descripcin
BIGINT en la pgina 304 Devuelve una representacin en el formato de un entero de
64 bits de un nmero o una serie de caracteres en el
formato de una constante entera.
BLOB en la pgina 306 Devuelve una representacin BLOB de una serie de
cualquier tipo.
CHAR en la pgina 308 Devuelve una representacin CHARACTER de un valor.
CLOB en la pgina 316 Devuelve una representacin CLOB de un valor.
DATE en la pgina 323 Devuelve una representacin DATE de un valor.
DBCLOB en la pgina 330 Devuelve una representacin DBCLOB de una serie.
DECIMAL en la pgina 333 Devuelve una representacin DECIMAL de un nmero.
DOUBLE en la pgina 343 Devuelve una representacin DOUBLE PRECISION de un
nmero.
FLOAT en la pgina 349 Devuelve una representacin FLOAT de un nmero.
GRAPHIC en la pgina 354 Devuelve una representacin GRAPHIC de una serie.
INTEGER en la pgina 366 Devuelve una representacin INTEGER de un nmero.
LONG_VARCHAR en la Devuelve una representacin LONG VARCHAR de un
pgina 381 valor.
LONG_VARGRAPHIC en Devuelve una representacin LONG VARGRAPHIC de un
la pgina 382 valor.
REAL en la pgina 405 Devuelve una representacin REAL de un nmero.
SMALLINT en la pgina Devuelve una representacin SMALLINT de un nmero.
426
TIME en la pgina 442 Devuelve una representacin TIME de un valor.
TIMESTAMP en la pgina Devuelve una representacin TIMESTAMP a partir de un
443 valor o de un par de valores.
VARCHAR en la pgina Devuelve una representacin VARCHAR de un valor.
461
VARGRAPHIC en la Devuelve una representacin VARGRAPHIC de un valor.
pgina 465

268 Consulta de SQL - Volumen 1


Funciones soportadas

Tabla 19. Funciones escalares de particionamiento


Funcin Descripcin
DATAPARTITIONNUM en Devuelve el nmero de secuencia
la pgina 322 (SYSDATAPARTITIONS.SEQNO) de la particin de datos
donde reside la fila. El argumento es cualquier nombre de
columna dentro de la tabla.
DBPARTITIONNUM en la Devuelve el nmero de particin de base de datos de la
pgina 331 fila. El argumento es cualquier nombre de columna dentro
de la tabla.
HASHEDVALUE en la Devuelve el ndice de correlacin de distribucin (de 0 a
pgina 356 4095) de la fila. El argumento es un nombre de columna
dentro de una tabla.

Tabla 20. Funciones escalares de fecha y hora


Funcin Descripcin
DAY en la pgina 324 Devuelve la parte del da del valor.
DAYNAME en la pgina Devuelve una serie que combina caracteres en maysculas
325 y minsculas que contiene el nombre del da (por ejemplo,
viernes) de la parte correspondiente al da del argumento,
segn el entorno local en el momento en que se emiti
db2start.
DAYOFWEEK en la pgina Devuelve el da de la semana a partir de un valor, donde el
326 1 es el domingo y el 7 es el sbado.
DAYOFWEEK_ISO en la Devuelve el da de la semana a partir de un valor, donde el
pgina 327 1 es el lunes y el 7 es el domingo.
DAYOFYEAR en la pgina Devuelve el da del ao a partir de un valor.
328
DAYS en la pgina 329 Devuelve una representacin entera de una fecha.
HOUR en la pgina 360 Devuelve la parte de la hora de un valor.
JULIAN_DAY en la pgina Devuelve un valor entero que representa el nmero de das
368 desde el 1 de enero de 4712 A.C. hasta la fecha especificada
en el argumento.
MICROSECOND en la Devuelve la parte correspondiente a las milsimas de
pgina 385 segundo de un valor.
MIDNIGHT_SECONDS en Devuelve un valor entero que representa el nmero de
la pgina 386 segundos entre medianoche y un valor de hora
especificado.
MINUTE en la pgina 387 Devuelve la parte del minuto de un valor.
MONTH en la pgina 389 Devuelve la parte del mes de un valor.
MONTHNAME en la Devuelve una serie que combina caracteres en maysculas
pgina 390 y minsculas que contiene el nombre del mes (por ejemplo,
enero) de la parte correspondiente al mes del argumento,
segn el entorno local en el momento en que se inici la
base de datos.
QUARTER en la pgina 401 Devuelve un entero que representa el trimestre del ao en
el que reside una fecha.
SECOND en la pgina 422 Devuelve la segunda parte de un valor.
TIMESTAMP_FORMAT en Devuelve una indicacin de fecha y hora a partir de una
la pgina 444 serie de caracteres (argumento1) que se ha interpretado
utilizando una plantilla de formato (argumento2).

Captulo 3. Funciones 269


Funciones soportadas

Tabla 20. Funciones escalares de fecha y hora (continuacin)


Funcin Descripcin
TIMESTAMP_ISO en la Devuelve un valor de indicacin de fecha y hora basado en
pgina 446 un argumento de fecha, de hora o de indicacin de fecha y
hora. Si el argumento es una fecha, inserta cero para todos
los elementos de hora. Si el argumento es una hora, inserta
el valor de CURRENT DATE para los elementos de fecha y
ceros para el elemento de fraccin de hora.
TIMESTAMPDIFF en la Devuelve un nmero estimado de intervalos de tipo
pgina 447 argumento1 basado en la diferencia entre dos indicaciones
de fecha y hora. El segundo argumento es el resultado de
restar dos tipos de indicaciones de fecha y hora y de
convertir el resultado en CHAR.
TO_CHAR en la pgina 449 Devuelve una representacin CHARACTER de una
indicacin de fecha y hora.
TO_DATE en la pgina 450 Devuelve una indicacin de fecha y hora a partir de una
serie de caracteres.
VARCHAR_FORMAT en la Devuelve una representacin CHARACTER de una
pgina 463 indicacin de fecha y hora (argumento1) con el formato
indicado en una plantilla argumento2).
WEEK en la pgina 467 Devuelve la semana del ao a partir de un valor, donde la
semana empieza el domingo.
WEEK_ISO en la pgina Devuelve la semana del ao a partir de un valor, donde la
468 semana empieza el lunes.
YEAR en la pgina 508 Devuelve la parte del ao de un valor.

Tabla 21. Funciones escalares numricas


Funcin Descripcin
ABS o ABSVAL en la Devuelve el valor absoluto de un nmero.
pgina 297
ACOS en la pgina 298 Devuelve el coarcocoseno de un nmero, en radianes.
ASIN en la pgina 300 Devuelve el arcoseno de un nmero, en radianes.
ATAN en la pgina 301 Devuelve la arcotangente de un nmero, en radianes.
ATANH en la pgina 303 Devuelve la arcotangente hiperblica de un nmero, en
radianes.
ATAN2 en la pgina 302 Devuelve la arcotangente de las coordenadas x e y como un
ngulo expresado en radianes.
CEILING o CEIL en la Devuelve el valor del entero ms pequeo que es mayor o
pgina 307 igual que un nmero.
COS en la pgina 319 Devuelve el coseno de un nmero.
COSH en la pgina 320 Devuelve el coseno hiperblico de un nmero.
COT en la pgina 321 Devuelve la cotangente del argumento, donde el argumento
es un ngulo expresado en radianes.
DEGREES en la pgina 339 Devuelve el nmero de grados de un ngulo.
DIGITS en la pgina 342 Devuelve la representacin en el formato de una serie de
caracteres del valor absoluto de un nmero.
EXP en la pgina 348 Devuelve un valor que es la base del logaritmo natural (e)
elevada a la potencia especificada por el argumento.

270 Consulta de SQL - Volumen 1


Funciones soportadas

Tabla 21. Funciones escalares numricas (continuacin)


Funcin Descripcin
FLOOR en la pgina 350 Devuelve el valor del entero ms grande que es menor o
igual que un nmero.
LN en la pgina 374 Devuelve el logaritmo natural de un nmero.
LOG en la pgina 379 Devuelve el logaritmo natural de un nmero (igual que
LN).
LOG10 en la pgina 380 Devuelve el logaritmo comn (en base 10) de un nmero.
MOD en la pgina 388 Devuelve el resto del primer argumento dividido por el
segundo argumento.
MULTIPLY_ALT en la Devuelve el producto de dos argumentos como un valor
pgina 391 decimal. Esta funcin resulta til cuando la suma de las
precisiones del argumento es mayor que 31.
POWER en la pgina 400 Devuelve el resultado de elevar el primer argumento a la
potencia del segundo argumento.
RADIANS en la pgina 402 Devuelve el nmero de radianes de un argumento que se
expresa en grados.
RAND en la pgina 404 Devuelve un nmero aleatorio.
ROUND en la pgina 414 Devuelve un valor numrico que se ha redondeado el
nmero de posiciones decimales especificado.
SIGN en la pgina 423 Devuelve el signo de un nmero.
SIN en la pgina 424 Devuelve el seno de un nmero.
SINH SINH en la pgina Devuelve el seno hiperblico de un nmero.
425
SQRT en la pgina 429 Devuelve la raz cuadrada de un nmero.
TAN en la pgina 440 Devuelve la tangente de un nmero.
TANH en la pgina 441 Devuelve la tangente hiperblica de un nmero.
TRUNCATE o TRUNC en Devuelve un valor numrico que se ha truncado en el
la pgina 455 nmero de posiciones decimales especificado.

Tabla 22. Funciones escalares de seguridad


Funcin Descripcin
SECLABEL en la pgina Devuelve una etiqueta de seguridad sin nombre.
418
SECLABEL_BY_NAME en Devuelve una etiqueta de seguridad especfica.
la pgina 419
SECLABEL_TO_CHAR en Acepta una etiqueta de seguridad y devuelve una serie que
la pgina 420 contiene todos los elementos de la etiqueta de seguridad.

Tabla 23. Funciones XML


Funcin Descripcin
XMLAGG en la pgina 288 Devuelve una secuencia XML que contiene un elemento por
cada valor que no sea nuevo de un conjunto de valores
XML.
XMLATTRIBUTES en la Construye los atributos XML a partir de los argumentos.
pgina 469

Captulo 3. Funciones 271


Funciones soportadas

Tabla 23. Funciones XML (continuacin)


Funcin Descripcin
XMLCOMMENT en la Devuelve un valor XML con un nico nodo de comentario
pgina 471 XQuery con el argumento de entrada como contenido.
XMLCONCAT en la pgina Devuelve una secuencia que contiene la concatenacin de
472 un nmero variable de argumentos de entrada de XML.
XMLDOCUMENT en la Devuelve un valor XML con un nico nodo de documento
pgina 474 XQuery con ninguno o varios nodos hijo.
XMLELEMENT en la Devuelve un valor XML que es un nodo de elemento XML.
pgina 476
XMLFOREST en la pgina Devuelve un valor XML que es una secuencia de nodos de
482 elemento XML.
XMLNAMESPACES en la Construye las declaraciones de espacios de nombres a
pgina 486 partir de los argumentos.
XMLPARSE en la pgina Analiza el argumento como un documento XML y devuelve
489 un valor XML.
XMLPI en la pgina 491 Devuelve un valor XML con un nico nodo de instruccin
de proceso XQuery.
XMLQUERY en la pgina Devuelve un valor XML a partir de la evaluacin de una
493 expresin XQuery posiblemente utilizando los argumentos
de entrada especificados como variables XQuery.
XMLSERIALIZE en la Devuelve un valor XML serializado de los tipos de datos
pgina 497 especificados, generados a partir del argumento.
XMLTABLE en la pgina Devuelve una tabla a partir de la evaluacin de expresiones
510 XQuery, posiblemente utilizando argumentos de entrada
especificados como variables XQuery. Cada elemento de la
secuencia de resultados de la expresin XQuery de fila
representa una fila de la tabla de resultados.
XMLTEXT en la pgina 500 Devuelve un valor XML con un nico nodo de texto
XQuery cuyo contenido es el argumento de entrada.
XMLVALIDATE en la Devuelve una copia del valor XML de entrada aumentado
pgina 502 con la informacin obtenida a partir de la validacin de
esquema XML, incluidos las anotaciones de tipo y los
valores por omisin.
XMLXSROBJECTID en la Devuelve un identificador de objeto XSR del esquema XML
pgina 507 utilizado para validar el documento XML especificado en el
argumento

Tabla 24. Funciones escalares de series


Funcin Descripcin
ASCII en la pgina 299 Devuelve el valor en cdigo ASCII del carcter que hay
ms a la izquierda del argumento como un entero.
CHARACTER_LENGTH en Devuelve la longitud de una expresin en la unidad-serie
la pgina 313 especificada.
CHR en la pgina 315 Devuelve el carcter que tiene el valor de cdigo ASCII
especificado por el argumento.
CONCAT en la pgina 318 Devuelve una serie que es la concatenacin de dos series.
DECRYPT_BIN y Devuelve un valor que es el resultado de descifrar datos
DECRYPT_CHAR en la cifrados utilizando una serie de contrasea.
pgina 337

272 Consulta de SQL - Volumen 1


Funciones soportadas

Tabla 24. Funciones escalares de series (continuacin)


Funcin Descripcin
DECRYPT_BIN y Devuelve un valor que es el resultado de descifrar datos
DECRYPT_CHAR en la cifrados utilizando una serie de contrasea.
pgina 337
DIFFERENCE en la pgina Devuelve la diferencia entre el sonido de las palabras en
341 dos series de argumento segn se determine mediante la
funcin SOUNDEX. El valor 4 significa que las series
suenan igual.
ENCRYPT en la pgina 345 Devuelve un valor que es el resultado de cifrar una
expresin de serie de datos.
GENERATE_UNIQUE en la Devuelve una serie de caracteres de datos de bits que es
pgina 352 exclusivo comparado con cualquier otra ejecucin de la
misma funcin.
GETHINT en la pgina 351 Devuelve la contrasea sugerida, si se encuentra una.
INSERT en la pgina 365 Devuelve una serie en la que argumento3 bytes se han
suprimido de argumento1 (comenzando por argumento2) y
en la que argumento4 bytes se han insertado en argumento1
(comenzando por argumento2).
LCASE o LOWER en la Devuelve una serie en la que todos los caracteres se han
pgina 369 convertido a caracteres en minsculas.
LEFT en la pgina 371 Devuelve los caracteres situados ms a la izquierda de una
serie.
LOCATE en la pgina 375 Devuelve la posicin inicial de una serie contenida en otra
serie.
LTRIM en la pgina 383 Elimina los blancos del principio de una expresin de serie.
OCTET_LENGTH en la Devuelve la longitud de una expresin en octetos (bytes).
pgina 394
POSITION en la pgina 395 Devuelve la posicin inicial del argument2 en argument1.
POSSTR en la pgina 398 Devuelve la posicin inicial de una serie contenida en otra
serie.
REPEAT en la pgina 411 Devuelve una serie de caracteres compuesta por argumento1
repetido argumento2 veces.
REPLACE en la pgina 412 Sustituye todas las ocurrencias de argumento2 en argumento1
por argumento3.
RIGHT en la pgina 413 Devuelve los caracteres situados ms a la derecha de una
serie.
RTRIM en la pgina 416 Elimina los blancos del final de una expresin de serie.
SOUNDEX en la pgina Devuelve un cdigo de 4 caracteres que representa el
427 sonido de las palabras del argumento. Este resultado se
puede comparar con el sonido de otras series.
SPACE en la pgina 428 Devuelve una serie de caracteres formada por el nmero de
blancos especificado.
STRIP en la pgina 430 Elimina de una expresin de serie, los espacios en blanco
iniciales o de cola o bien otros caracteres iniciales o de cola
especificados.
SUBSTR en la pgina 431 Devuelve una subserie de una serie.
SUBSTRING en la pgina Devuelve una subserie de una serie.
434

Captulo 3. Funciones 273


Funciones soportadas

Tabla 24. Funciones escalares de series (continuacin)


Funcin Descripcin
TRANSLATE en la pgina Devuelve una serie en la que uno o ms caracteres de una
451 serie se han convertido en otros caracteres.
en la pgina 453 Elimina de una expresin de serie, los espacios en blanco
iniciales o de cola o bien otros caracteres iniciales o de cola
especificados.
UCASE o UPPER en la Devuelve una serie en la que todos los caracteres se han
pgina 459 convertido a caracteres en maysculas.

Tabla 25. Funciones escalares diversas


Funcin Descripcin
COALESCE en la pgina Devuelve el primer argumento que no es nulo.
317
DEREF en la pgina 340 Devuelve una instancia del tipo de destino del argumento
del tipo de referencia.
EVENT_MON_STATE en la Devuelve el estado operativo de un determinado supervisor
pgina 347 de sucesos.
HEX en la pgina 358 Devuelve una representacin hexadecimal de un valor.
IDENTITY_VAL_LOCAL Devuelve el valor asignado ms reciente correspondiente a
en la pgina 361 una columna de entidad.
LENGTH en la pgina 372 Devuelve la longitud de un valor.
NULLIF en la pgina 393 Devuelve un valor nulo si los argumentos son iguales; de lo
contrario, devuelve el valor del primer argumento.
RAISE_ERROR en la Emite un error a la SQLCA. El sqlstate que se devolver se
pgina 403 indica mediante argumento1. El segundo argumento
contiene el texto que debe devolverse.
REC2XML en la pgina 406 Devuelve una serie formateada codificada en XML que
contiene nombres de columna y datos de columna.
TABLE_NAME en la Devuelve un nombre no calificado de una tabla o vista,
pgina 437 basado en el nombre de objeto especificado en argumento1 y
en el nombre de esquema opcional especificado en
argumento2. El valor devuelto se utiliza para resolver los
alias.
TABLE_SCHEMA en la Devuelve la parte correspondiente al nombre de esquema
pgina 438 de un nombre de tabla o de vista de dos partes
(especificado por el nombre del objeto en argumento1 y por
el nombre de esquema opcional en argumento2). El valor
devuelto se utiliza para resolver los alias.
TYPE_ID en la pgina 456 Devuelve el identificador interno de tipo de datos del tipo
de datos dinmico del argumento. El resultado de esta
funcin no se puede transportar entre bases de datos.
TYPE_NAME en la pgina Devuelve el nombre no calificado del tipo de datos
457 dinmico del argumento.
TYPE_SCHEMA en la Devuelve el nombre del esquema del tipo de datos
pgina 458 dinmico del argumento.
VALUE en la pgina 460 Devuelve el primer argumento que no es nulo.

274 Consulta de SQL - Volumen 1


Funciones agregadas

Funciones agregadas
El argumento de una funcin de columna es un conjunto de valores derivados de
una expresin. La expresin puede incluir columnas, pero no puede incluir una
seleccin-completa-escalar, otra funcin de columna ni una expresin XMLQUERY ni
XMLEXISTS (SQLSTATE 42607). El mbito del conjunto es un grupo o una tabla
resultante intermedia.

Si se especifica una clusula GROUP BY en una consulta, y el resultado intermedio


de las clusulas FROM, WHERE, GROUP BY y HAVING es un conjunto vaco, las
funciones de columna no se aplican; el resultado de la consulta es el conjunto
vaco; SQLCODE se establece en +100; y SQLSTATE se establece en 02000.

Si no se especifica una clusula GROUP BY en una consulta, y el resultado


intermedio de las clusulas FROM, WHERE y HAVING es un conjunto vaco, las
funciones de columna se aplican al conjunto vaco.

Por ejemplo, el resultado de la siguiente sentencia SELECT es el nmero de valores


diferenciado de JOBCODE para los empleados en el departamento D01:
SELECT COUNT(DISTINCT JOBCODE)
FROM CORPDATA.EMPLOYEE
WHERE WORKDEPT = D01

La palabra clave DISTINCT no se considera un argumento de una funcin, sino


una especificacin de una operacin que se realiza antes de aplicar la funcin. Si se
especifica DISTINCT, se eliminan los valores duplicados. Si se especifica ALL
implcita o explcitamente, no se eliminan los valores duplicados.

Se pueden utilizar expresiones en las funciones de columna. Por ejemplo:


SELECT MAX(BONUS + 1000)
INTO :TOP_SALESREP_BONUS
FROM EMPLOYEE
WHERE COMM > 5000

Las funciones de columna pueden estar calificadas mediante un nombre de


esquema (por ejemplo, SYSIBM.COUNT(*)).

Informacin relacionada:
v Consultas de SQL en la pgina 529

Captulo 3. Funciones 275


AVG

AVG
ALL
 AVG ( expresin ) 
DISTINCT

El esquema es SYSIBM.

La funcin AVG devuelve el promedio de un conjunto de nmeros.

Los valores del argumento deben ser nmeros (slo tipos internos) y su suma debe
estar dentro del rango del tipo de datos del resultado, excepto para un tipo de
datos de resultado decimal. Para los resultados decimales, la suma debe estar
dentro del rango soportado por un tipo de datos decimal que tenga una precisin
de 31 y una escala idntica a la escala de los valores del argumento. El resultado
puede ser nulo.

El tipo de datos del resultado es el mismo que el tipo de datos de los valores del
argumento, excepto que:
v El resultado es un entero grande si los valores del argumento son enteros
pequeos.
v El resultado es de coma flotante de precisin doble si los valores del argumento
son de coma flotante de precisin simple.

Si el tipo de datos de los valores del argumento es decimal con la precisin p y la


escala s, la precisin del resultado es 31 y la escala es 31-p+s.

La funcin se aplica al conjunto de valores derivados de los valores del argumento


por la eliminacin de los valores nulos. Si se especifica DISTINCT, se eliminan los
valores duplicados redundantes.

Si la funcin se aplica a un conjunto vaco, el resultado es un valor nulo. De lo


contrario, el resultado es el valor promedio del conjunto.

El orden en el que los valores se aaden es indefinido, pero cada resultado


intermedio debe estar en el rango del tipo de datos del resultado.

Si el tipo del resultado es entero, se pierde la parte correspondiente a la fraccin


del promedio.

Ejemplos:
v Utilizando la tabla PROJECT, establezca la variable del lenguaje principal
AVERAGE (decimal(5,2)) en el nivel promedio de los trabajadores (PRSTAFF) de
los proyectos del departamento (DEPTNO) D11.
SELECT AVG(PRSTAFF)
INTO :AVERAGE
FROM PROJECT
WHERE DEPTNO = D11
Da como resultado que AVERAGE se establece en 4,25 (es decir 17/4) cuando se
utiliza la tabla de ejemplo.
v Utilizando la tabla PROJECT, establezca la variable del lenguaje principal
ANY_CALC (decimal(5,2)) en el promedio de cada valor de nivel exclusivo de
los trabajadores (PRSTAFF) de proyectos del departamento (DEPTNO) D11.

276 Consulta de SQL - Volumen 1


AVG

SELECT AVG(DISTINCT PRSTAFF)


INTO :ANY_CALC
FROM PROJECT
WHERE DEPTNO = D11
El resultado es que ANY_CALC se establece en 4,66 (es decir 14/3) cuando se
utiliza la tabla de ejemplo.

Captulo 3. Funciones 277


CORRELATION

CORRELATION
 CORRELATION ( expresin1 , expresin2 ) 
CORR

El esquema es SYSIBM.

La funcin CORRELATION devuelve el coeficiente de correlacin de un conjunto


de pares de nmeros.

Los valores del argumento deben ser nmeros.

El tipo de datos del resultado es de coma flotante de precisin doble. El resultado


puede ser nulo. Cuando no es nulo, el resultado est entre 1 y 1.

La funcin se aplica al conjunto de pares (expresin1, expresin2) derivado de los


valores del argumento por la eliminacin de todos los pares para los que expresin1
o expresin2 es nulo.

Si la funcin se aplica a un conjunto vaco o si STDDEV(expresin1) o


STDDEV(expresin2) es igual a cero, el resultado es un valor nulo. De lo contrario,
el resultado es el coeficiente de correlacin para los pares de valores del conjunto.
El resultado es equivalente a la expresin siguiente:
COVARIANCE(expresin1,expresin2)/
(STDDEV(expresin1)*
STDDEV(expresin2))

El orden en el que los valores se agregan no est definido, pero cada resultado
intermedio debe estar dentro del rango del tipo de datos del resultado.

Ejemplo:
v Utilizando la tabla EMPLOYEE, establezca la variable del lenguaje principal
CORRLN (coma flotante de precisin doble) en la correlacin entre salario y
bonificacin para los empleados del departamento (WORKDEPT) A00.
SELECT CORRELATION(SALARY, BONUS)
INTO :CORRLN
FROM EMPLOYEE
WHERE WORKDEPT = A00
CORRLN se establece en 9,99853953399538E-001 aproximadamente cuando se
utiliza la tabla de ejemplo.

278 Consulta de SQL - Volumen 1


COUNT

COUNT
ALL
 COUNT ( expresin ) 
DISTINCT
*

El esquema es SYSIBM.

La funcin COUNT devuelve el nmero de filas o valores de un conjunto de filas o


valores.

Si se especifica DISTINCT, el tipo de datos resultante de la expresin no puede ser


LONG VARCHAR, LONG VARGRAPHIC, BLOB, CLOB, DBCLOB, DATALINK,
XML, un tipo distinto de estos tipos ni un tipo estructurado (SQLSTATE 42907). En
caso contrario, el tipo de datos resultante de la expresin puede ser cualquier tipo
de datos.

El resultado de la funcin es un entero grande. El resultado no puede ser nulo.

El argumento de COUNT(*) es un conjunto de filas. El resultado es el nmero de


filas del conjunto. Una fila que slo incluye valores NULL se incluye en la cuenta.

El argumento de COUNT(DISTINCT expresin) es un conjunto de valores. La


funcin se aplica al conjunto de valores derivados de los valores del argumento
por la eliminacin de los valores nulos y duplicados. El resultado es el nmero de
distintos valores no nulos del conjunto.

El argumento de COUNT(expresin) o COUNT(ALL expresin) es un conjunto de


valores. La funcin se aplica al conjunto de valores derivados de los valores del
argumento por la eliminacin de los valores nulos. El resultado es el nmero de
valores no nulos del conjunto, incluyendo los duplicados.

Ejemplos:
v Utilizando la tabla EMPLOYEE, establezca la variable del lenguaje principal
FEMALE (int) en el nmero de filas en que el valor de la columna SEX es F.
SELECT COUNT(*)
INTO :FEMALE
FROM EMPLOYEE
WHERE SEX = F
El resultado es que FEMALE se establece en 13 cuando se utiliza la tabla de
ejemplo.
v Utilizando la tabla EMPLOYEE, establezca la variable del lenguaje principal
FEMALE_IN_DEPT (int) en el nmero de departamentos (WORKDEPT) que
tienen como mnimo una mujer como miembro.
SELECT COUNT(DISTINCT WORKDEPT)
INTO :FEMALE_IN_DEPT
FROM EMPLOYEE
WHERE SEX = F
El resultado es que FEMALE_IN_DEPT se establece en 5 cuando se utiliza la
tabla de ejemplo. (Hay como mnimo una mujer en los departamentos A00, C01,
D11, D21 y E11.)

Captulo 3. Funciones 279


COUNT_BIG

COUNT_BIG
ALL
 COUNT_BIG ( expresin ) 
DISTINCT
*

El esquema es SYSIBM.

La funcin COUNT_BIG devuelve el nmero de filas o valores de un conjunto de


filas o valores. Es similar a COUNT excepto que el resultado puede ser mayor que
el valor mximo de entero.

Si se especifica DISTINCT, el tipo de datos resultante de la expresin no puede ser


LONG VARCHAR, LONG VARGRAPHIC, BLOB, CLOB, DBCLOB, DATALINK,
XML, un tipo distinto de estos tipos ni un tipo estructurado (SQLSTATE 42907). En
caso contrario, el tipo de datos resultante de la expresin puede ser cualquier tipo
de datos.

El resultado de la funcin es un decimal con la precisin 31 y la escala 0. El


resultado no puede ser nulo.

El argumento de COUNT_BIG(*) es un conjunto de filas. El resultado es el nmero


de filas del conjunto. Una fila que slo incluye valores NULL se incluye en la
cuenta.

El argumento de COUNT_BIG(DISTINCT expresin) es un conjunto de valores. La


funcin se aplica al conjunto de valores derivados de los valores del argumento
por la eliminacin de los valores nulos y duplicados. El resultado es el nmero de
distintos valores no nulos del conjunto.

El argumento de COUNT_BIG(expresin) o COUNT_BIG(ALL expresin) es un


conjunto de valores. La funcin se aplica al conjunto de valores derivados de los
valores del argumento por la eliminacin de los valores nulos. El resultado es el
nmero de valores no nulos del conjunto, incluyendo los duplicados.

Ejemplos:
v Consulte los ejemplos de COUNT y sustituya COUNT_BIG por las apariciones
de COUNT. Los resultados son los mismos excepto por el tipo de datos del
resultado.
v Algunas aplicaciones pueden necesitar la utilizacin de COUNT pero necesitan
dar soporte a valores mayores que el entero ms grande. Esto se puede
conseguir mediante la utilizacin de funciones derivadas definidas por el
usuario y la definicin de la va de acceso de SQL. Las siguientes series de
sentencias muestran cmo crear una funcin derivada para dar soporte a
COUNT(*) basndose en COUNT_BIG y devolver un valor decimal con una
precisin de 15. La va de acceso de SQL se establece de manera que se utilice la
funcin derivada basada en COUNT_BIG en las sentencias subsiguientes, tal
como la consulta mostrada.
CREATE FUNCTION RICK.COUNT() RETURNS DECIMAL(15,0)
SOURCE SYSIBM.COUNT_BIG();
SET CURRENT FUNCTION PATH RICK, SYSTEM PATH;
SELECT COUNT(*) FROM EMPLOYEE;

280 Consulta de SQL - Volumen 1


COUNT_BIG

Observe que la funcin derivada se define sin parmetros para dar soporte a
COUNT(*). Esto slo es efectivo si utiliza COUNT como nombre de la funcin y
no califica la funcin con el nombre de esquema cuando se utiliza. Para
conseguir el mismo efecto que COUNT(*) con un nombre distinto de COUNT,
invoque la funcin sin parmetros. Por lo tanto, si RICK.COUNT se ha definido
como RICK.MYCOUNT, la consulta se tendra que haber escrito de la siguiente
manera:
SELECT MYCOUNT() FROM EMPLOYEE;
Si la cuenta se efecta en una columna especfica, la funcin derivada debe
especificar el tipo de columna. Las sentencias siguientes crean una funcin
derivada que tomar cualquier columna CHAR como argumento y utilizar
COUNT_BIG para realizar el contaje.
CREATE FUNCTION RICK.COUNT(CHAR()) RETURNS DOUBLE
SOURCE SYSIBM.COUNT_BIG(CHAR());
SELECT COUNT(DISTINCT WORKDEPT) FROM EMPLOYEE;

Captulo 3. Funciones 281


COVARIANCE

COVARIANCE
 COVARIANCE ( expresin1 , expresin2 ) 
COVAR

El esquema es SYSIBM.

La funcin COVARIANCE devuelve la covarianza (del contenido) de un conjunto


de pares de nmeros.

Los valores del argumento deben ser nmeros.

El tipo de datos del resultado es de coma flotante de precisin doble. El resultado


puede ser nulo.

La funcin se aplica al conjunto de pares (expresin1, expresin2) derivado de los


valores del argumento por la eliminacin de todos los pares para los que expresin1
o expresin2 es nulo.

Si la funcin se aplica a un conjunto vaco, el resultado es un valor nulo. De lo


contrario, el resultado es la covarianza de los pares de valores del conjunto. El
resultado es equivalente a lo siguiente:
1. Establezca que avgexp1 es el resultado de AVG(expresin1) y que avgexp2 es el
resultado de AVG(expresin2).
2. El resultado de COVARIANCE(expresin1, expresin2) es AVG( (expresin1 -
avgexp1) * (expresin2 - avgexp2 )

El orden en el que los valores se agregan no est definido, pero cada resultado
intermedio debe estar dentro del rango del tipo de datos del resultado.

Ejemplo:
v Utilizando la tabla EMPLOYEE, establezca la variable del lenguaje principal
COVARNCE (coma flotante de precisin doble) en la covarianza entre salario y
bonificacin para los empleados del departamento (WORKDEPT) A00.
SELECT COVARIANCE(SALARY, BONUS)
INTO :COVARNCE
FROM EMPLOYEE
WHERE WORKDEPT = A00

COVARNCE se establece en 1,68888888888889E+006 aproximadamente cuando se


utiliza la tabla de ejemplo.

282 Consulta de SQL - Volumen 1


GROUPING

GROUPING
 GROUPING ( expresin ) 

El esquema es SYSIBM.

Utilizada con conjuntos-agrupaciones y supergrupos, la funcin GROUPING


devuelve un valor que indica si una fila devuelta en un conjunto de respuestas de
GROUP BY es una fila generada por un conjunto de agrupaciones que excluye la
columna representada por la expresin o no.

El argumento puede ser de cualquier tipo, pero debe ser un elemento de una
clusula GROUP BY.

El resultado de la funcin es un entero pequeo. Se establece en uno de los valores


siguientes:
1 El valor de la expresin de la fila devuelta es un valor nulo y la fila se ha
generado por el supergrupo. Esta fila generada puede utilizarse para
proporcionar valores de subtotales para la expresin GROUP BY.
0 El valor no es el de arriba.

Ejemplo:

La siguiente consulta:
SELECT SALES_DATE, SALES_PERSON,
SUM(SALES) AS UNITS_SOLD,
GROUPING(SALES_DATE) AS DATE_GROUP,
GROUPING(SALES_PERSON) AS SALES_GROUP
FROM SALES
GROUP BY CUBE (SALES_DATE, SALES_PERSON)
ORDER BY SALES_DATE, SALES_PERSON

da como resultado:
SALES_DATE SALES_PERSON UNITS_SOLD DATE_GROUP SALES_GROUP
---------- --------------- ----------- ----------- -----------
12/31/1995 GOUNOT 1 0 0
12/31/1995 LEE 6 0 0
12/31/1995 LUCCHESSI 1 0 0
12/31/1995 - 8 0 1
03/29/1996 GOUNOT 11 0 0
03/29/1996 LEE 12 0 0
03/29/1996 LUCCHESSI 4 0 0
03/29/1996 - 27 0 1
03/30/1996 GOUNOT 21 0 0
03/30/1996 LEE 21 0 0
03/30/1996 LUCCHESSI 4 0 0
03/30/1996 - 46 0 1
03/31/1996 GOUNOT 3 0 0
03/31/1996 LEE 27 0 0
03/31/1996 LUCCHESSI 1 0 0
03/31/1996 - 31 0 1
04/01/1996 GOUNOT 14 0 0
04/01/1996 LEE 25 0 0
04/01/1996 LUCCHESSI 4 0 0
04/01/1996 - 43 0 1
- GOUNOT 50 1 0

Captulo 3. Funciones 283


GROUPING

- LEE 91 1 0
- LUCCHESSI 14 1 0
- - 155 1 1

Una aplicacin puede reconocer una fila de subtotales de SALES_DATE por el


hecho de que el valor de DATE_GROUP es 0 y el valor de SALES_GROUP es 1.
Una fila de subtotales SALES_PERSON puede reconocerse por el hecho de que el
valor de DATE_GROUP es 1 y el valor de SALES_GROUP es 0. Una fila de total
general puede reconocerse por el valor 1 de DATE_GROUP y SALES_GROUP.

Informacin relacionada:
v Subseleccin en la pgina 530

284 Consulta de SQL - Volumen 1


MAX

MAX
ALL
 MAX ( expresin ) 
DISTINCT

El esquema es SYSIBM.

La funcin MAX devuelve el valor mximo de un conjunto de valores.

Los valores del argumento pueden ser de cualquier tipo interno que no sea una
serie larga ni DATALINK.

El tipo de datos resultante de expresin no puede ser un LONG VARCHAR, LONG


VARGRAPHIC, BLOB, CLOB, DBCLOB, DATALINK, un tipo diferenciado para
cualquiera de estos tipos ni un tipo estructurado (SQLSTATE 42907).

El tipo de datos, la longitud y la pgina de cdigos del resultado son iguales que
el tipo de datos, la longitud y la pgina de cdigos de los valores del argumento.
El resultado se considera un valor derivado y puede ser nulo.

La funcin se aplica al conjunto de valores derivados de los valores del argumento


por la eliminacin de los valores nulos.

Si la funcin se aplica a un conjunto vaco, el resultado es un valor nulo. De lo


contrario, el resultado es el valor mximo del conjunto.

La especificacin de DISTINCT no tiene ningn efecto en el resultado y, por lo


tanto, no es aconsejable. Se incluye para la compatibilidad con otros sistemas
relacionados.

Ejemplos:
v Utilizando la tabla EMPLOYEE, establezca la variable del lenguaje principal
MAX_SALARY (decimal(7,2)) en el valor del salario mximo mensual
(SALARY/12).
SELECT MAX(SALARY) / 12
INTO :MAX_SALARY
FROM EMPLOYEE

El resultado es que MAX_SALARY se establece en 4395,83 cuando se utiliza esta


tabla de ejemplo.
v Utilizando la tabla PROJECT, establezca la variable del lenguaje principal
LAST_PROJ(char(24)) en el nombre de proyecto (PROJNAME) que es el ltimo
en el orden de clasificacin.
SELECT MAX(PROJNAME)
INTO :LAST_PROJ
FROM PROJECT

Da como resultado que LAST_PROJ se establece en WELD LINE PLANNING


cuando se utiliza la tabla de ejemplo.
v De manera parecida al ejemplo anterior, establezca la variable del lenguaje
principal LAST_PROJ (char(40)) en el nombre del proyecto que es el ltimo en el

Captulo 3. Funciones 285


MAX

orden de clasificacin cuando se concatena un nombre de proyecto con la


variable del lenguaje principal PROJSUPP. PROJSUPP es '_Support'; tiene un tipo
de datos char(8).
SELECT MAX(PROJNAME CONCAT PROJSUPP)
INTO :LAST_PROJ
FROM PROJECT

Da como resultado que LAST_PROJ se establece en 'WELD LINE


PLANNING_SUPPORT' cuando se utiliza la tabla de ejemplo.

286 Consulta de SQL - Volumen 1


MIN

MIN
ALL
 MIN ( expresin ) 
DISTINCT

La funcin MIN devuelve el valor mnimo de un conjunto de valores.

Los valores del argumento pueden ser de cualquier tipo interno que no sea una
serie larga ni DATALINK.

El tipo de datos resultante de expresin no puede ser un LONG VARCHAR, LONG


VARGRAPHIC, BLOB, CLOB, DBCLOB, DATALINK, un tipo diferenciado para
cualquiera de estos tipos ni un tipo estructurado (SQLSTATE 42907).

El tipo de datos, la longitud y la pgina de cdigos del resultado son iguales que
el tipo de datos, la longitud y la pgina de cdigos de los valores del argumento.
El resultado se considera un valor derivado y puede ser nulo.

La funcin se aplica al conjunto de valores derivados de los valores del argumento


por la eliminacin de los valores nulos.

Si la funcin se aplica a un conjunto vaco, el resultado de la funcin es un valor


nulo. De lo contrario, el resultado es el valor mnimo del conjunto.

La especificacin de DISTINCT no tiene ningn efecto en el resultado y, por lo


tanto, no es aconsejable. Se incluye para la compatibilidad con otros sistemas
relacionados.

Ejemplos:
v Utilizando la tabla EMPLOYEE, establezca la variable del lenguaje principal
COMM_SPREAD (decimal(7,2)) en la diferencia entre la comisin mxima y
mnima (COMM) de los miembros del departamento (WORKDEPT) D11.
SELECT MAX(COMM) - MIN(COMM)
INTO :COMM_SPREAD
FROM EMPLOYEE
WHERE WORKDEPT = D11

El resultado es que COMM_SPREAD se establece en 1118 (es decir, 2580 - 1462)


cuando se utiliza la tabla de ejemplo.
v Utilizando la tabla PROJECT, establezca la variable del lenguaje principal
(FIRST_FINISHED (char(10)) en la fecha de finalizacin estimada (PRENDATE)
del primer proyecto que se ha de terminar.
SELECT MIN(PRENDATE)
INTO :FIRST_FINISHED
FROM PROJECT

Da como resultado que FIRST_FINISHED se establece en 1982-09-15 cuando se


utiliza la tabla de ejemplo.

Captulo 3. Funciones 287


XMLAGG

XMLAGG
 XMLAGG 

 ( expresin-XML ) 
,
ASC
ORDER BY  clave-clasificacin
DESC

El esquema es SYSIBM. El nombre de la funcin no puede especificarse como un


nombre calificado.

La funcin XMLAGG devuelve una secuencia XML que contiene un elemento por
cada valor que no sea nulo en un conjunto de valores XML.
expresin-XML
Especifica una expresin de tipo de datos XML.
ORDER BY
Especifica el orden de las filas del mismo conjunto de agrupacin que se
procesan en la agregacin. Si se omite la clusula ORDER BY o si sta no
puede distinguir el orden de los datos de la columna, las filas del mismo
conjunto de agrupacin se ordenan de forma arbitraria.
clave-clasificacin
La clave de clasificacin puede ser un nombre de columna o una
expresin-clave-clasificacin. Observe que si la clave de clasificacin es una
constante, no hace referencia a la posicin de la columna de salida(como en la
clusula ORDER BY normal) sino que es simplemente una constante, que no
implica ninguna clave de clasificacin.

El tipo de datos del resultado es XML.

La funcin se aplica al conjunto de valores derivados de los valores del argumento


por la eliminacin de los valores nulos.

Si el argumento expresin-XML puede ser nulo, el resultado puede ser nulo. Si el


conjunto de valores est vaco, el resultado es el valor nulo. En cualquier otro caso,
devuelve una secuencia XML que contiene un elemento por cada valor del
conjunto.
Notas:
1. Soporte en bases de datos que no son Unicode y bases de datos de varias
particiones de base de datos: el resultado, en el nivel externo de anidamiento
de la funcin de valor XML, debe ser un argumento de la funcin
XMLSERIALIZE.
2. Soporte en expresiones OLAP: XMLAGG no puede utilizarse como funcin de
columna de una funcin agregada OLAP (SQLSTATE 42601).

Ejemplo:

Nota: XMLAGG no inserta espacios en blanco ni caracteres de nueva lnea en la


salida. Todas las salidas de los ejemplos se han formateado para mejorar la
legibilidad.
v Construir un elemento de departamento para cada departamento, con una lista
de empleados ordenados por apellido.

288 Consulta de SQL - Volumen 1


XMLAGG

SELECT XMLSERIALIZE(
CONTENT XMLELEMENT(
NAME "Department", XMLATTRIBUTES(
E.WORKDEPT AS "name"
),
XMLAGG(
XMLELEMENT(
NAME "emp", E.LASTNAME
)
ORDER BY E.LASTNAME
)
)
AS CLOB(110)
)
AS "dept_list"
FROM EMPLOYEE E
WHERE E.WORKDEPT IN (C01,E21)
GROUP BY WORKDEPT

Esta consulta produce el resultado siguiente:


dept_list
-----------------------...
<Department name="C01">
<emp>KWAN</emp>
<emp>NICHOLLS</emp>
<emp>QUINTANA</emp>
</Department>
<Department name="E21">
<emp>GOUNOT</emp>
<emp>LEE</emp>
<emp>MEHTA</emp>
<emp>SPENSER</emp>
</Department>

Conceptos relacionados:
v Publishing XML values with SQL/XML en XML Guide

Informacin relacionada:
v XMLATTRIBUTES en la pgina 469
v XMLCOMMENT en la pgina 471
v XMLCONCAT en la pgina 472
v XMLDOCUMENT en la pgina 474
v XMLELEMENT en la pgina 476
v XMLFOREST en la pgina 482
v XMLNAMESPACES en la pgina 486
v XMLPARSE en la pgina 489
v XMLPI en la pgina 491
v XMLQUERY en la pgina 493
v XMLSERIALIZE en la pgina 497
v XMLTEXT en la pgina 500
v XMLVALIDATE en la pgina 502

Captulo 3. Funciones 289


Funciones de regresin

Funciones de regresin
 REGR_AVGX ( expresin1 , expresin2 ) 
REGR_AVGY
REGR_COUNT
REGR_INTERCEPT
REGR_ICPT
REGR_R2
REGR_SLOPE
REGR_SXX
REGR_SXY
REGR_SYY

El esquema es SYSIBM.

Las funciones de regresin soportan la adecuacin de una lnea de regresin


mnimo-cuadrados-normales del formato y = a * x + b para un conjunto de pares
de nmeros. El primer elemento de cada par (expresin1) se interpreta como un
valor de la variable dependiente (es decir, un valor y). El segundo elemento de
cada par (expresin2 ) se interpreta como un valor de la variable independiente (es
decir, un valor x).

La funcin REGR_COUNT devuelve el nmero de pares de nmeros no nulos


utilizados para acomodar la lnea de regresin (vea ms abajo).

La funcin REGR_INTERCEPT (o REGR_ICPT) devuelve la interseccin y de la


lnea de regresin (b en la ecuacin anterior).

La funcin REGR_R2 devuelve el coeficiente de determinacin (cuadrado-R o


mejor-adecuacin) para la regresin.

La funcin REGR_SLOPE devuelve la inclinacin de la lnea (a en la ecuacin


anterior).

Las funciones REGR_AVGX, REGR_AVGY, REGR_SXX, REGR_SXY y REGR_SYY


devuelven cantidades que pueden utilizarse para calcular varias estadsticas de
diagnstico necesarias para la evaluacin de la calidad y la validez estadstica del
modelo de regresin (vea ms abajo).

Los valores del argumento deben ser nmeros.

El tipo de datos del resultado de REGR_COUNT es un entero. Para las dems


funciones, el tipo de datos del resultado es de coma flotante de precisin doble. El
resultado puede ser nulo. Cuando no es nulo, el resultado de REGR_R2 est
comprendido entre 0 y 1 y el resultado de REGR_SXX y REGR_SYY no es negativo.

Cada funcin se aplica al conjunto de pares (expresin1, expresin2) derivado de los


valores del argumento por la eliminacin de todos los pares para los que expresin1
o expresin2 es nulo.

Si el conjunto no est vaco y VARIANCE(expresin2) es positivo, REGR_COUNT


devuelve el nmero de pares no nulos del conjunto y las dems funciones
devuelven los resultados que se definen de la siguiente manera:
REGR_SLOPE(expresin1,expresin2) =
COVARIANCE(expresin1,expresin2)/VARIANCE(expresin2)

290 Consulta de SQL - Volumen 1


Funciones de regresin

REGR_INTERCEPT(expresin1, expresin2) =
AVG(expresin1) - REGR_SLOPE(expresin1, expresin2) * AVG(expresin2)
REGR_R2(expresin1, expresin2) =
POWER(CORRELATION(expresin1, expresin2), 2) if VARIANCE(expresin1)>0
REGR_R2(expresin1, expresin2) = 1 if VARIANCE(expresion1)=0
REGR_AVGX(expresin1, expresin2) = AVG(expresin2)
REGR_AVGY(expresin1, expresin2) = AVG(expresin1)
REGR_SXX(expresin1, expresin2) =
REGR_COUNT(expresin1, expresin2) * VARIANCE(expresin2)
REGR_SYY(expresin1, expresin2) =
REGR_COUNT(expresin1, expresin2) * VARIANCE(expresin1)
REGR_SXY(expresin1, expresin2) =
REGR_COUNT(expresin1, expresin2) * COVARIANCE(expresin1, expresin2)

Si el conjunto no est vaco y VARIANCE(expresin2) es igual a cero, la lnea de


regresin tiene una inclinacin infinita o no est definida. En este caso, las
funciones REGR_SLOPE, REGR_INTERCEPT y REGR_R2 devuelven cada una un
valor nulo y las dems funciones devuelven valores tal como se ha definido arriba.
Si el conjunto est vaco, REGR_COUNT devuelve cero y las dems funciones
devuelven un valor nulo.

El orden en el que los valores se agregan no est definido, pero cada resultado
intermedio debe estar dentro del rango del tipo de datos del resultado.

Las funciones de regresin se calculan simultneamente durante un solo paso a


travs de los datos. En general, es ms eficaz utilizar las funciones de regresin
para calcular las estadsticas necesarias para un anlisis de regresin que realizar
clculos equivalentes utilizando las funciones normales de columna como
AVERAGE, VARIANCE, COVARIANCE, etctera.

Las estadsticas de diagnstico normales que acompaan a un anlisis de


regresin-lineal se pueden calcular en trminos de las funciones anteriores. Por
ejemplo:
R2 ajustada
1 - ( (1 - REGR_R2) * ((REGR_COUNT - 1) / (REGR_COUNT - 2)) )
Error estndar
SQRT( (REGR_SYY-(POWER(REGR_SXY,2)/REGR_SXX))/
(REGR_COUNT-2) )
Suma total de cuadrados
REGR_SYY
Suma de cuadrados de regresin
POWER(REGR_SXY,2) / REGR_SXX
Suma de cuadrados residuales
(Suma total de cuadrados)-(Suma de cuadrados de regresin)
t estadstica de inclinacin
REGR_SLOPE * SQRT(REGR_SXX) / (Error estndar)
t estadstica para interseccin y
REGR_INTERCEPT/((Error estndar)*SQRT((1/REGR_COUNT)+
(POWER(REGR_AVGX,2)/REGR_SXX))

Ejemplo:

Captulo 3. Funciones 291


Funciones de regresin

v Utilizando la tabla EMPLOYEE, calcule la lnea de regresin de


cuadrados-mnimos-normales que expresa la bonificacin de un empleado del
departamento (WORKDEPT) A00 como una funcin lineal del salario del
empleado. Establezca las variables del lenguaje principal SLOPE, ICPT, RSQR
(coma flotante de precisin doble) en la inclinacin, interseccin y coeficiente de
determinacin de la lnea de regresin, respectivamente. Establezca tambin las
variables del lenguaje principal AVGSAL y AVGBONUS en el salario medio y la
bonificacin media, respectivamente, de los empleados del departamento A00,
y establezca la variable del lenguaje principal CNT (entero) en el nmero de
empleados del departamento A00 para los que estn disponibles los datos de
salario y de bonificacin. Almacene las dems estadsticas de regresin en las
variables del lenguaje principal SXX, SYY y SXY.
SELECT REGR_SLOPE(BONUS,SALARY), REGR_INTERCEPT(BONUS,SALARY),
REGR_R2(BONUS,SALARY), REGR_COUNT(BONUS,SALARY),
REGR_AVGX(BONUS,SALARY), REGR_AVGY(BONUS,SALARY),
REGR_SXX(BONUS,SALARY), REGR_SYY(BONUS,SALARY),
REGR_SXY(BONUS,SALARY)
INTO :SLOPE, :ICPT,
:RSQR, :CNT,
:AVGSAL, :AVGBONUS,
:SXX, :SYY,
:SXY
FROM EMPLOYEE
WHERE WORKDEPT = A00
Al utilizar la tabla de ejemplo, las variables del lenguaje principal se establecen
en los siguientes valores aproximados:
SLOPE: +1.71002671916749E-002
ICPT: +1.00871888623260E+002
RSQR: +9.99707928128685E-001
CNT: 3
AVGSAL: +4.28333333333333E+004
AVGBONUS: +8.33333333333333E+002
SXX: +2.96291666666667E+008
SYY: +8.66666666666667E+004
SXY: +5.06666666666667E+006

292 Consulta de SQL - Volumen 1


STDDEV

STDDEV
ALL
 STDDEV ( expresin ) 
DISTINCT

El esquema es SYSIBM.

La funcin STDDEV devuelve la desviacin estndar (/n) de un conjunto de


nmeros. La frmula que se utiliza para calcular STDDEV es:
STDDEV = SQRT(VARIANCE)

donde SQRT(VARIANCE) es la raz cuadrada de la varianza.

Los valores del argumento deben ser nmeros.

El tipo de datos del resultado es de coma flotante de precisin doble. El resultado


puede ser nulo.

La funcin se aplica al conjunto de valores derivados de los valores del argumento


por la eliminacin de los valores nulos. Si se especifica DISTINCT, se eliminan los
valores duplicados redundantes.

Si la funcin se aplica a un conjunto vaco, el resultado es un valor nulo. De lo


contrario, el resultado es la desviacin estndar de los valores del conjunto.

El orden en el que los valores se agregan no est definido, pero cada resultado
intermedio debe estar dentro del rango del tipo de datos del resultado.

Ejemplo:
v Utilizando la tabla EMPLOYEE, establecer la variable de lenguaje principal en
DEV (coma flotante de doble precisin) en la desviacin estndar de los sueldos
de los empleados del departamento (WORKDEPT) A00.
SELECT STDDEV(SALARY)
INTO :DEV
FROM EMPLOYEE
WHERE WORKDEPT = A00

DEV se establece en un nmero con un valor aproximado de 9938.00.

Captulo 3. Funciones 293


SUM

SUM
ALL
 SUM ( expresin ) 
DISTINCT

El esquema es SYSIBM.

La funcin SUM devuelve la suma de un conjunto de nmeros.

Los valores del argumento deben ser nmeros (slo tipos internos) y su suma debe
estar dentro del rango del tipo de datos del resultado.

El tipo de datos del resultado es el mismo que el tipo de datos de los valores del
argumento excepto que:
v El resultado es un entero grande si los valores del argumento son enteros
pequeos.
v El resultado es de coma flotante de precisin doble si los valores del argumento
son de coma flotante de precisin simple.

Si el tipo de datos de los valores del argumento es decimal, la precisin del


resultado es 31 y la escala es la misma que la de los valores del argumento. El
resultado puede ser nulo.

La funcin se aplica al conjunto de valores derivados de los valores del argumento


por la eliminacin de los valores nulos. Si se especifica DISTINCT, tambin se
eliminan los valores duplicados redundantes.

Si la funcin se aplica a un conjunto vaco, el resultado es un valor nulo. De lo


contrario, el resultado es la suma de los valores del conjunto.

Ejemplo:
v Utilizando la tabla EMPLOYEE, establezca la variable del lenguaje principal
JOB_BONUS (decimal(9,2)) en el total de bonificaciones (BONUS) pagadas a los
conserjes (JOB=CLERK).
SELECT SUM(BONUS)
INTO :JOB_BONUS
FROM EMPLOYEE
WHERE JOB = CLERK

El resultado es que JOB_BONUS se establece en 2800 cuando se utiliza la tabla


de ejemplo.

294 Consulta de SQL - Volumen 1


VARIANCE

VARIANCE
ALL
 VARIANCE ( expresin ) 
VAR DISTINCT

El esquema es SYSIBM.

La funcin VARIANCE devuelve la varianza de un conjunto de nmeros.

Los valores del argumento deben ser nmeros.

El tipo de datos del resultado es de coma flotante de precisin doble. El resultado


puede ser nulo.

La funcin se aplica al conjunto de valores derivados de los valores del argumento


por la eliminacin de los valores nulos. Si se especifica DISTINCT, se eliminan los
valores duplicados redundantes.

Si la funcin se aplica a un conjunto vaco, el resultado es un valor nulo. De lo


contrario, el resultado es la varianza de los valores del conjunto.

El orden en el que los valores se aaden es indefinido, pero cada resultado


intermedio debe estar en el rango del tipo de datos del resultado.

Ejemplo:
v Utilizando la tabla EMPLOYEE, establezca la variable del lenguaje principal
VARNCE (coma flotante de precisin doble) en la varianza de los salarios para
los empleados del departamento (WORKDEPT) A00.
SELECT VARIANCE(SALARY)
INTO :VARNCE
FROM EMPLOYEE
WHERE WORKDEPT = A00

Da como resultado que VARNCE se establece en 98763888,88 aproximadamente


cuando se utiliza la tabla de ejemplo.

Captulo 3. Funciones 295


Funciones escalares

Funciones escalares
Una funcin escalar se puede utilizar siempre que se pueda utilizar una expresin.
Sin embargo, las restricciones que se aplican a la utilizacin de expresiones y a las
funciones de columna tambin se aplican cuando se utiliza una expresin o una
funcin de columna en una funcin escalar. Por ejemplo, el argumento de una
funcin escalar slo puede ser una funcin de columna si est permitida una
funcin de columna en el contexto en el que se utiliza la funcin escalar.

Las restricciones en la utilizacin de funciones de columna no se aplican a las


funciones escalares, porque una funcin escalar se aplica a un solo valor en lugar
de a un conjunto de valores.

El resultado de la siguiente sentencia SELECT contiene un mismo nmero de filas


igual al nmero de empleados que hay en el departamento D01:
SELECT EMPNO, LASTNAME, YEAR(CURRENT DATE - BRTHDATE)
FROM EMPLOYEE
WHERE WORKDEPT = D01

Las funciones escalares puede esta calificadas mediante un nombre de esquema


(por ejemplo, SYSIBM.CHAR(123)).

En una base de datos Unicode, todas las funciones escalares que acepten una serie
de caracteres o grfica aceptarn todos los tipos de serie para los que se soporte la
conversin.

296 Consulta de SQL - Volumen 1


ABS o ABSVAL

ABS o ABSVAL
 ABS ( expresin ) 
ABSVAL

El esquema es SYSIBM.

Esta funcin est disponible por primera vez en el FixPak 2 de la Versin 7.1. La
versin SYSFUN de la funcin ABS (o ABSVAL) contina estando disponible.

Devuelve el valor absoluto del argumento. El argumento puede ser de cualquier


tipo de datos numrico interno.

El resultado tiene el mismo tipo de datos y el mismo atributo de longitud que el


argumento. El resultado puede ser nulo; si el argumento es nulo, el resultado es el
valor nulo. Si el argumento es el valor negativo mximo para SMALLINT,
INTEGER o BIGINT, el resultado es un error de desbordamiento.

Ejemplo:
ABS(-51234)

devuelve un INTEGER con un valor de 51234.

Captulo 3. Funciones 297


ACOS

ACOS
 ACOS ( expresin ) 

El esquema es SYSIBM. (La versin SYSFUN de la funcin ACOS contina estando


disponible).

Devuelve el arcocoseno del argumento como un ngulo expresado en radianes.

El argumento puede ser de cualquier tipo de datos interno. Se convierte a un


nmero de coma flotante de precisin doble para que lo procese la funcin.

El resultado de la funcin es un nmero de coma flotante de precisin doble. El


resultado puede ser nulo si el argumento puede ser nulo o la base de datos est
configurada con DFT_SQLMATHWARN establecido en YES; el resultado es el
valor nulo si el argumento es nulo.

Ejemplo:

Supongamos que la variable del lenguaje principal ACOSINE es una variable del
lenguaje principal DECIMAL(10,9) con un valor de 0,070737202.
SELECT ACOS(:ACOSINE)
FROM SYSIBM.SYSDUMMY1

Esta sentencia devuelve el valor aproximado 1,49.

298 Consulta de SQL - Volumen 1


ASCII

ASCII
 ASCII ( expresin ) 

El esquema es SYSFUN.

Devuelve el valor en cdigo ASCII del carcter que hay ms a la izquierda del
argumento como un entero.

El argumento puede ser de cualquier tipo de serie de caracteres interno. En una


base de datos Unicode, si un argumento proporcionado es una serie grfica, se
convertir a una serie de caracteres antes de que se ejecute la funcin. Para un
VARCHAR la longitud mxima es de 4.000 bytes y para un CLOB la longitud
mxima es de 1.048.576 bytes. LONG VARCHAR se convierte a CLOB para que lo
procese la funcin.

El resultado de la funcin siempre es INTEGER.

El resultado puede ser nulo; si el argumento es nulo, el resultado es el valor nulo.

Captulo 3. Funciones 299


ASIN

ASIN
 ASIN ( expresin ) 

El esquema es SYSIBM. (La versin SYSFUN de la funcin ASIN contina estando


disponible).

Devuelve el arcoseno del argumento como un ngulo expresado en radianes.

El argumento puede ser de cualquier tipo numrico interno. Se convierte a un


nmero de coma flotante de precisin doble para que lo procese la funcin.

El resultado de la funcin es un nmero de coma flotante de precisin doble. El


resultado puede ser nulo si el argumento puede ser nulo o la base de datos est
configurada con DFT_SQLMATHWARN establecido en YES; el resultado es el
valor nulo si el argumento es nulo.

300 Consulta de SQL - Volumen 1


ATAN

ATAN
 ATAN ( expresin ) 

El esquema es SYSIBM. (La versin SYSFUN de la funcin ATAN contina estando


disponible).

Devuelve la tangente del arco del argumento como un ngulo expresado en


radianes.

El argumento puede ser de cualquier tipo de datos interno. Se convierte a un


nmero de coma flotante de precisin doble para que lo procese la funcin.

El resultado de la funcin es un nmero de coma flotante de precisin doble. El


resultado puede ser nulo si el argumento puede ser nulo o la base de datos est
configurada con DFT_SQLMATHWARN establecido en YES; el resultado es el
valor nulo si el argumento es nulo.

Captulo 3. Funciones 301


ATAN2

ATAN2
 ATAN2 ( expresin , expresin ) 

El esquema es SYSIBM. (La versin SYSFUN de la funcin ATAN2 contina


estando disponible).

Devuelve la tangente del arco de las coordenadas x e y como un ngulo expresado


en radianes. Las coordenadas x e y se especifican por el primer y el segundo
argumento, respectivamente.

El primer argumento y el segundo pueden ser de cualquier tipo de datos numrico


interno. Los dos se convierten a un nmero de coma flotante de precisin doble
para que lo procese la funcin.

El resultado de la funcin es un nmero de coma flotante de precisin doble. El


resultado puede ser nulo si el argumento puede ser nulo o la base de datos est
configurada con DFT_SQLMATHWARN establecido en YES; el resultado es el
valor nulo si el argumento es nulo.

302 Consulta de SQL - Volumen 1


ATANH

ATANH
 ATANH ( expresin ) 

El esquema es SYSIBM.

Devuelve la arcotangente hiperblica del argumento, donde el argumento es un


ngulo expresado en radianes.

El argumento puede ser de cualquier tipo de datos interno. Se convierte a un


nmero de coma flotante de precisin doble para que lo procese la funcin.

El resultado de la funcin es un nmero de coma flotante de precisin doble. El


resultado puede ser nulo si el argumento puede ser nulo o la base de datos est
configurada con DFT_SQLMATHWARN establecido en YES; el resultado es el
valor nulo si el argumento es nulo.

Captulo 3. Funciones 303


BIGINT

BIGINT
 BIGINT ( expresin-numrica ) 
expresin-caracteres
expresin-fechahora

El esquema es SYSIBM.

La funcin BIGINT devuelve una representacin entera de 64 bits de un nmero,


serie de caracteres, fecha, hora o indicacin de fecha y hora en forma de una
constante entera. En una base de datos Unicode, si un argumento proporcionado es
una serie grfica, se convertir a una serie de caracteres antes de que se ejecute la
funcin.
expresin-numrica
Una expresin que devuelve un valor de cualquier tipo de datos numrico
interno.
Si el argumento es una expresin-numrica, el resultado es el mismo nmero que
sera si el argumento se asignase a una columna o variable de enteros
superiores. Si la parte correspondiente a los enteros del argumento no est
dentro del rango de enteros, se produce un error. La parte correspondiente a
los decimales del argumento se trunca si est presente.
expresin-caracteres
Una expresin que devuelve un valor de serie de caracteres de longitud no
mayor que la longitud mxima de una constante de caracteres. Se eliminan los
blancos iniciales y de cola y la serie resultante debe ajustarse a las reglas para
la formacin de una constante de enteros SQL (SQLSTATE 22018). La serie de
caracteres no puede ser una serie larga.
Si el argumento es una expresin-caracteres, el resultado es el mismo nmero
que sera si la constante de enteros correspondiente se asignase a una columna
o variable de enteros superiores.
expresin-fechahora
Una expresin que sea uno de los tipos de datos siguientes:
v DATE. El resultado es un valor BIGINT que representa la fecha como
aaaammdd.
v TIME. El resultado es un valor BIGINT que representa la hora como hhmmss.
v TIMESTAMP. El resultado es un valor BIGINT que representa la indicacin
de fecha y hora como aaaammddhhmmss. La parte de los microsegundos del
valor de indicacin de fecha y hora no se incluye en el resultado.

El resultado de la funcin es un entero superior. Si el argumento puede ser nulo, el


resultado puede ser nulo; si el argumento es nulo, el resultado es el valor nulo.

Ejemplos:
v En la tabla ORDERS_HISTORY, cuente el nmero de rdenes y devuelva el
resultado como un valor de entero superior.
SELECT BIGINT (COUNT_BIG(*))
FROM ORDERS_HISTORY
v Utilizando la tabla EMPLOYEE, seleccione la columna EMPNO en el formato de
enteros superiores para procesarla ms en la aplicacin.
SELECT BIGINT (EMPNO) FROM EMPLOYEE

304 Consulta de SQL - Volumen 1


BIGINT

v Supongamos que la columna RECEIVED (indicacin de fecha y hora) tiene un


valor interno equivalente a 1988-12-22-14.07.21.136421.
BIGINT(RECEIVED)

da como resultado el valor 19 881 222 140 721.


v Supongamos que la columna STARTTIME (hora) tiene un valor interno
equivalente a 12:03:04.
BIGINT(STARTTIME)

da como resultado el valor 120 304.

Captulo 3. Funciones 305


BLOB

BLOB
 BLOB ( expresin-serie ) 
, entero

El esquema es SYSIBM.

La funcin BLOB devuelve una representacin BLOB de una serie de cualquier


tipo.
expresin-serie
Una expresin-serie cuyo valor puede ser una serie de caracteres, una serie
grfica o una serie binaria.
entero
Un valor entero que especifica el atributo de longitud del tipo de datos BLOB
resultante. Si no se especifica entero, el atributo de longitud del resultado es el
mismo que la longitud de la entrada, excepto cuando la entrada es grfica. En
este caso, el atributo de longitud del resultado es el doble de la longitud de la
entrada.

El resultado de la funcin es un BLOB. Si el argumento puede ser nulo, el


resultado puede ser nulo; si el argumento es nulo, el resultado es el valor nulo.

Ejemplos
v Suponiendo una tabla con una columna BLOB denominada
TOPOGRAPHIC_MAP y una columna VARCHAR denominada MAP_NAME,
localice los mapas que contienen la serie Pellow Island y devuelva una sola
serie binaria con el nombre del mapa concatenado delante del mapa real.
SELECT BLOB(MAP_NAME CONCAT : ) CONCAT TOPOGRAPHIC_MAP
FROM ONTARIO_SERIES_4
WHERE TOPOGRAPHIC_MAP LIKE BLOB(%Pellow Island%)

306 Consulta de SQL - Volumen 1


CEILING o CEIL

CEILING o CEIL
 CEILING ( expresin ) 
CEIL

El esquema es SYSIBM. (La versin SYSFUN de la funcin CEILING o CEIL


contina estando disponible).

Devuelve el valor del entero ms pequeo que es mayor o igual que el argumento.

El argumento puede ser de cualquier tipo numrico interno. El resultado de la


funcin tiene el mismo tipo de datos y el mismo atributo de longitud que el
argumento, con la excepcin de que la escala es 0 si el argumento es DECIMAL.
Por ejemplo, un argumento con un tipo de datos de DECIMAL(5,5) devuelve
DECIMAL(5,0).

El resultado puede ser nulo si el argumento puede ser nulo o la base de datos est
configurada con DFT_SQLMATHWARN establecido en YES; el resultado es el
valor nulo si el argumento es nulo.

Captulo 3. Funciones 307


CHAR

CHAR
De caracteres a caracteres:

 CHAR ( expresin-caracteres ) 
, entero

De fecha y hora a caracteres:

 CHAR ( expresin-fechahora ) 
, ISO
USA
EUR
JIS
LOCAL

De entero a caracteres:

 CHAR ( expresin-entero ) 

De decimal a caracteres:

 CHAR ( expresin-decimal ) 
, carcter-decimal

De coma flotante a caracteres:

 CHAR ( expresin-coma-flotante ) 
, carcter-decimal

El esquema es SYSIBM. El nombre de la funcin no puede especificarse como


nombre calificado si se utilizan palabras clave en la signatura de la funcin. La
signatura SYSFUN.CHAR(expresin-coma-flotante) contina estando disponible. En
este caso, el carcter decimal es sensible la configuracin local y, por lo tanto,
devuelve un punto o una coma, dependiendo del idioma del servidor de la base
de datos.

La funcin CHAR devuelve una representacin de serie de caracteres de longitud


fija de:
v Una serie de caracteres, si el primer argumento es cualquier tipo de serie de
caracteres
v Un valor de fecha y hora, si el primer argumento es una fecha, una hora o una
indicacin de fecha y hora
v Un nmero entero, si el primer argumento es SMALLINT, INTEGER o BIGINT
v Un nmero decimal, si el primer argumento es un nmero decimal
v Un nmero de coma flotante de precisin doble, si el primer argumento es
DOUBLE o REAL

308 Consulta de SQL - Volumen 1


CHAR

El primer argumento debe ser de un tipo de datos interno. En una base de datos
Unicode, si un argumento proporcionado es una serie grfica, se convertir a una
serie de caracteres antes de que se ejecute la funcin.

Nota: La expresin CAST tambin se puede utilizar para devolver una expresin
de serie.

El resultado de la funcin es una serie de caracteres de longitud fija. Si el primer


argumento puede ser nulo, el resultado puede ser nulo. Si el primer argumento es
nulo, el resultado es el valor nulo.
De caracteres a caracteres
expresin-caracteres
Una expresin que devuelve un valor que es del tipo de datos CHAR,
VARCHAR, LONG VARCHAR o CLOB.
entero
El atributo de longitud de la serie de caracteres de longitud fija
resultante. El valor debe estar entre 0 y 254.

Si la longitud de la expresin de caracteres es menor que el atributo de


longitud del resultado, el resultado se rellena con blancos hasta la longitud
del resultado. Si la longitud de la expresin de caracteres es mayor que el
atributo de longitud del resultado, el resultado se trunca. Se devuelve un
aviso (SQLSTATE 01004) a menos que los caracteres truncados fuesen todos
blancos y la expresin de caracteres no fuese una serie larga (LONG
VARCHAR o CLOB).
De fecha y hora a caracteres
expresin-fechahora
Una expresin que sea uno de los tres tipos de datos siguientes:
fecha El resultado es la representacin de serie de caracteres de la
fecha en el formato especificado por el segundo argumento. La
longitud del resultado es 10. Se devuelve un error si se
especifica el segundo argumento y no es un valor vlido
(SQLSTATE 42703).
hora El resultado es la representacin de serie de caracteres de la
hora en el formato especificado por el segundo argumento. La
longitud del resultado es 8. Se devuelve un error si se
especifica el segundo argumento y no es un valor vlido
(SQLSTATE 42703).
indicacin de fecha y hora
El resultado es la representacin de serie de caracteres de la
indicacin de fecha y hora. La longitud del resultado es 26. El
segundo argumento no es aplicable y no se debe especificar
(SQLSTATE 42815).
La pgina de cdigos de la serie es la pgina de cdigos de la base de
datos en el servidor de aplicaciones.
De entero a carcter
expresin-entero
Una expresin que devuelve un valor que es de un tipo de datos
entero (SMALLINT, INTEGER o BIGINT).

Captulo 3. Funciones 309


CHAR

El resultado es la representacin de serie de caracteres del argumento en el


formato de una constante de enteros de SQL. El resultado consta de n
caracteres, que representan los dgitos significativos del argumento,
precedido por un signo menos si el argumento es negativo. El resultado
est justificado por la izquierda.
v Si el primer argumento es un entero pequeo, la longitud del resultado
es de 6.
v Si el primer argumento es un entero grande, la longitud del resultado es
de 11.
v Si el primer argumento es un entero superior, la longitud del resultado
es de 20.
Si el nmero de bytes del resultado es menor que la longitud definida del
resultado, el resultado se rellena por la derecha con blancos.

La pgina de cdigos de la serie es la pgina de cdigos de la base de


datos en el servidor de aplicaciones.
De decimal a carcter
expresin-decimal
Una expresin que devuelve un valor que es de un tipo de datos
decimal. Si se necesita una precisin y escala diferentes, puede
utilizarse primero la funcin escalar DECIMAL para realizar el cambio.
carcter-decimal
Especifica la constante de caracteres de un solo byte que se utiliza para
delimitar los dgitos decimales en la serie de caracteres del resultado.
La constante de caracteres no puede ser un dgito, el signo ms (+), el
signo menos () ni un espacio en blanco (SQLSTATE 42815). El valor
por omisin es el carcter punto (.).

El resultado es la representacin en el formato de una serie de caracteres


de longitud fija del argumento. El resultado incluye un carcter decimal y
p dgitos, donde p es la precisin de la expresin-decimal precedida por un
signo menos si el argumento es negativo. La longitud del resultado es 2 +p,
donde p es la precisin de la expresin-decimal. Esto significa que un valor
positivo siempre incluir un blanco de cola.

La pgina de cdigos de la serie es la pgina de cdigos de la base de


datos en el servidor de aplicaciones.
De coma flotante a caracteres
expresin-coma-flotante
Una expresin que devuelve un valor que es de un tipo de datos de
coma flotante (DOUBLE o REAL).
carcter-decimal
Especifica la constante de caracteres de un solo byte que se utiliza para
delimitar los dgitos decimales en la serie de caracteres del resultado.
La constante de caracteres no puede ser un dgito, el signo ms (+), el
signo menos () ni un espacio en blanco (SQLSTATE 42815). El valor
por omisin es el carcter punto (.).

El resultado es la representacin en el formato de una serie de caracteres


de longitud fija del argumento en la forma de una constante de coma
flotante. La longitud del resultado es 24. Si el argumento es negativo, el
primer carcter del resultado es un signo menos; de lo contrario, el primer

310 Consulta de SQL - Volumen 1


CHAR

carcter es un dgito. Si el valor del argumento es cero, el resultado es 0E0.


De lo contrario, el resultado incluye el nmero ms pequeo de caracteres
que puedan representar el valor del argumento de tal modo que la mantisa
conste de un solo dgito distinto de cero seguido del carcter-decimal y una
secuencia de dgitos. Si el nmero de bytes del resultado es menor que 24,
el resultado se rellena por la derecha con blancos.

La pgina de cdigos de la serie es la pgina de cdigos de la base de


datos en el servidor de aplicaciones.

Ejemplos:
v Supongamos que la columna PRSTDATE tiene un valor interno equivalente a
1988-12-25. La funcin siguiente devuelve el valor 12/25/1988.
CHAR(PRSTDATE, USA)
v Supongamos que la columna STARTING tiene un valor interno equivalente a
17:12:30 y que la variable del lenguaje principal HOUR_DUR (decimal(6,0)) es
una duracin en horas con un valor de 050000 (es decir, 5 horas). La funcin
siguiente devuelve el valor 5:12 PM.
CHAR(STARTING, USA)

La funcin siguiente devuelve el valor10:12 PM.


CHAR(STARTING + :HOUR_DUR, USA)
v Supongamos que la columna RECEIVED (TIMESTAMP) tiene un valor interno
equivalente a la combinacin de las columnas PRSTDATE y STARTING. La
funcin siguiente devuelve el valor 1988-12-25-17.12.30.000000.
CHAR(RECEIVED)
v La columna LASTNAME est definida como VARCHAR(15). La funcin
siguiente devuelve los valores de esta columna como series de caracteres de
longitud fija de 10 bytes de longitud. Los valores de LASTNAME con una
longitud superior a los 10 bytes (excluidos los blancos de cola) se truncan y se
devuelve un aviso.
SELECT CHAR(LASTNAME,10) FROM EMPLOYEE
v La columna EDLEVEL est definida como SMALLINT. La funcin siguiente
devuelve los valores de esta columna como series de caracteres de longitud fija.
El valor 18 de EDLEVEL se devuelve como el valor CHAR(6) 18 (18 seguido
de cuatro blancos).
SELECT CHAR(EDLEVEL) FROM EMPLOYEE
v La columna SALARY se define como DECIMAL con una precisin de 9 y una
escala de 2. El valor actual (18357.50) debe visualizarse con una coma como
separador decimal (18357,50). La funcin siguiente devuelve el valor
00018357,50.
CHAR(SALARY, ,)
v Los valores de la columna SALARY deben restarse de 20000.25 y visualizarse
con el carcter decimal por omisin. La funcin siguiente devuelve el valor
-0001642.75.
CHAR(20000.25 - SALARY)
v Supongamos que la variable del lenguaje principal SEASONS_TICKETS est
definida como INTEGER y tiene un valor de 10000. La funcin siguiente
devuelve el valor 10000.00.
CHAR(DECIMAL(:SEASONS_TICKETS,7,2))
v Supongamos que la variable del lenguaje principal DOUBLE_NUM est definida
como DOUBLE y tiene un valor de -987.654321E-35. La funcin siguiente

Captulo 3. Funciones 311


CHAR

devuelve el valor -9.87654321E-33. Como el tipo de datos del resultado es


CHAR(24), hay nueve blancos de cola en el resultado.
CHAR(:DOUBLE_NUM)

Informacin relacionada:
v Expresiones en la pgina 189
v VARCHAR en la pgina 461

312 Consulta de SQL - Volumen 1


CHARACTER_LENGTH

CHARACTER_LENGTH
 CHARACTER_LENGTH ( expresin USING CODEUNITS16 ) 
CHAR_LENGTH CODEUNITS32
OCTETS
, CODEUNITS16
CODEUNITS32
OCTETS

El esquema es SYSIBM.

La funcin CHARACTER_LENGTH devuelve la longitud de la expresin en la


unidad de la serie especificada.
expresin
Una expresin que devuelve un valor de un carcter incorporado o serie
grfica.
CODEUNITS16, CODEUNITS32, u OCTETS
Especifica la unidad de la serie del resultado. CODEUNITS16 especifica que el
resultado debe expresarse en unidades de cdigo UTF-16 de 16 bits.
CODEUNITS32 especifica que el resultado debe expresarse en unidades de
cdigo UTF-32 de 32 bits. OCTETS especifica que el resultado debe expresarse
en bytes.
Si la unidad de la serie se especifica como CODEUNITS16 o CODEUNITS32 y
la expresin es una serie binaria o datos de bits, se devuelve un error
(SQLSTATE 428GC). Si la unidad de la serie se especifica como OCTETS y la
expresin es una serie binaria, se devuelve un error (SQLSTATE 42815). Para
obtener ms informacin acerca de CODEUNITS16, CODEUNITS32 y OCTETS,
consulte Unidades de serie en funciones incorporadas en Series de
caracteres.

El resultado de la funcin es un entero grande. Si el argumento puede ser nulo, el


resultado puede ser nulo; si el argumento es nulo, el resultado es el valor nulo.

La longitud de las series de caracteres y de grficos incluye espacios en blanco


finales. La longitud de las series binarias incluye ceros binarios. La longitud de las
series de longitud variable es la longitud real y no la longitud mxima.

Ejemplos:
v Supongamos que NAME es una columna VARCHAR(128) codificada en Unicode
UTF-8 que contiene el valor Jrgen. Las dos consultas siguientes devuelven el
valor 6:
SELECT CHARACTER_LENGTH(NAME, CODEUNITS32)
FROM T1 WHERE NAME = Jrgen

SELECT CHARACTER_LENGTH(NAME, CODEUNITS16)


FROM T1 WHERE NAME = Jrgen

Las dos consultas siguientes devuelven el valor 7:


SELECT CHARACTER_LENGTH(NAME, OCTETS)
FROM T1 WHERE NAME = Jrgen

SELECT LENGTH(NAME)
FROM T1 WHERE NAME = Jrgen

Captulo 3. Funciones 313


CHARACTER_LENGTH

v Los ejemplos siguientes funcionan con la serie Unicode &N~AB, siendo & el
carcter de clave G de smbolo musical y ~ el carcter de tilde de combinacin.
A continuacin se muestra esta cadena en distintos formatos de codificacin
Unicode:

& N ~ A B
UTF-8 X'F09D849E' X'4E' X'CC83' X'41' X'42'
UTF-16BE X'D834DD1E' X'004E' X'0303' X'0041' X'0042'
UTF-32BE X'0001D11E' X'0000004E' X'00000303' X'00000041' X'00000042'

Supongamos que la variable UTF8_VAR contiene la representacin UTF-8 de la


serie.
SELECT CHARACTER_LENGTH(UTF8_VAR, CODEUNITS16),
CHARACTER_LENGTH(UTF8_VAR, CODEUNITS32),
CHARACTER_LENGTH(UTF8_VAR, OCTETS)
FROM SYSIBM.SYSDUMMY1

devuelve los valores 6, 5 y 9, respectivamente.


Supongamos que la variable UTF16_VAR contiene la representacin UTF-16BE
de la serie.
SELECT CHARACTER_LENGTH(UTF16_VAR, CODEUNITS16),
CHARACTER_LENGTH(UTF16_VAR, CODEUNITS32),
CHARACTER_LENGTH(UTF16_VAR, OCTETS)
FROM SYSIBM.SYSDUMMY1

devuelve los valores 6, 5 y 12, respectivamente.

Informacin relacionada:
v Series de caracteres en la pgina 91
v LENGTH en la pgina 372
v OCTET_LENGTH en la pgina 394
v POSITION en la pgina 395
v SUBSTRING en la pgina 434

314 Consulta de SQL - Volumen 1


CHR

CHR
 CHR ( expresin ) 

El esquema es SYSFUN.

Devuelve el carcter que tiene el valor del cdigo ASCII especificado por el
argumento. Si el valor de expresin es 0, el resultado es el carcter en blanco (X20).

El argumento puede ser INTEGER o SMALLINT. El valor del argumento debe


estar comprendido entre 0 y 255; de lo contrario, el valor devuelto es nulo.

El resultado de la funcin es CHAR(1). El resultado puede ser nulo; si el


argumento es nulo, el resultado es el valor nulo.

Captulo 3. Funciones 315


CLOB

CLOB
 CLOB ( expresin-serie-caracteres ) 
, entero

El esquema es SYSIBM.

La funcin CLOB devuelve una representacin CLOB de un tipo de serie de


caracteres. En una base de datos Unicode, si un argumento proporcionado es una
serie grfica, se convertir a una serie de caracteres antes de que se ejecute la
funcin.
expresin-serie-caracteres
Expresin que devuelve un valor que es una serie de caracteres. La expresin
no puede ser una serie de caracteres definida como FOR BIT DATA
(SQLSTATE 42846).
entero
Un valor entero que especifica el atributo de longitud del tipo de datos CLOB
resultante. El valor debe ser entre 0 y 2 147 483 647. Si no se especifica ningn
valor para entero, la longitud del resultado es la misma que la longitud el
primer argumento.

El resultado de la funcin es CLOB. Si el argumento puede ser nulo, el resultado


puede ser nulo; si el argumento es nulo, el resultado es el valor nulo.

316 Consulta de SQL - Volumen 1


COALESCE

COALESCE

(1)
 COALESCE ( expresin  , expresin ) 

Notas:
1 VALUE es sinnimo de COALESCE.

El esquema es SYSIBM.

COALESCE devuelve el primer argumento que no es nulo.

Los argumentos se evalan en el orden en que se especifican, y el resultado de la


funcin es el primer argumento que no es nulo. El resultado slo puede ser nulo si
todos los argumentos pueden ser nulos, y el resultado slo es nulo si todos los
argumentos son nulos. El argumento seleccionado se convierte, si es necesario, a
los atributos del resultado.

Los argumentos deben ser compatibles. Puede ser de un tipo de datos interno o
definido por el usuario. (Esta funcin no puede utilizarse como una funcin fuente
cuando se crea una funcin definida por el usuario. Como esta funcin acepta
cualquier tipo de datos compatible como argumento, no es necesario crear
signaturas adicionales para dar soporte a los tipos de datos diferenciados definidos
por el usuario).

Ejemplos:
v Cuando se seleccionan todos los valores de todas las filas de la tabla
DEPARTMENT, si falta el director del departamento (MGRNO) (es decir, es
nulo), se ha de devolver un valor de ABSENT.
SELECT DEPTNO, DEPTNAME, COALESCE(MGRNO, ABSENT), ADMRDEPT
FROM DEPARTMENT
v Cuando se selecciona el nmero de empleado (EMPNO) y el salario (SALARY)
de todas las filas de la tabla EMPLOYEE, si falta el salario (es decir, es nulo), se
ha de devolver un valor de cero.
SELECT EMPNO, COALESCE(SALARY, 0)
FROM EMPLOYEE

Informacin relacionada:
v Reglas para los tipos de datos del resultado en la pgina 129

Captulo 3. Funciones 317


CONCAT

CONCAT
(1)
 CONCAT ( expresin1 , expresin2 ) 

Notas:
1 || puede utilizarse como sinnimo de CONCAT.

El esquema es SYSIBM.

Devuelve la concatenacin de dos argumentos de serie. Los dos argumentos deben


ser de tipos compatibles.

El resultado de la funcin es una serie cuya longitud es la suma de las longitudes


de los dos argumentos. Si el argumento puede ser nulo, el resultado puede ser
nulo; si cualquier argumento es nulo, el resultado es el valor nulo.

Informacin relacionada:
v Expresiones en la pgina 189

318 Consulta de SQL - Volumen 1


COS

COS
 COS ( expresin ) 

El esquema es SYSIBM. (La versin SYSFUN de la funcin COS contina estando


disponible).

Devuelve el coseno del argumento, donde el argumento es un ngulo expresado en


radianes.

El argumento puede ser de cualquier tipo numrico interno. Se convierte a un


nmero de coma flotante de precisin doble para que lo procese la funcin.

El resultado de la funcin es un nmero de coma flotante de precisin doble. El


resultado puede ser nulo si el argumento puede ser nulo o la base de datos est
configurada con DFT_SQLMATHWARN establecido en YES; el resultado es el
valor nulo si el argumento es nulo.

Captulo 3. Funciones 319


COSH

COSH
 COSH ( expresin ) 

El esquema es SYSIBM.

Devuelve el coseno hiperblico del argumento, donde el argumento es un ngulo


expresado en radianes.

El argumento puede ser de cualquier tipo de datos interno. Se convierte a un


nmero de coma flotante de precisin doble para que lo procese la funcin.

El resultado de la funcin es un nmero de coma flotante de precisin doble. El


resultado puede ser nulo si el argumento puede ser nulo o la base de datos est
configurada con DFT_SQLMATHWARN establecido en YES; el resultado es el
valor nulo si el argumento es nulo.

320 Consulta de SQL - Volumen 1


COT

COT
 COT ( expresin ) 

El esquema es SYSIBM. (La versin SYSFUN de la funcin COT contina estando


disponible).

Devuelve la cotangente del argumento, donde el argumento es un ngulo


expresado en radianes.

El argumento puede ser de cualquier tipo numrico interno. Se convierte a un


nmero de coma flotante de precisin doble para que lo procese la funcin.

El resultado de la funcin es un nmero de coma flotante de precisin doble. El


resultado puede ser nulo si el argumento puede ser nulo o la base de datos est
configurada con DFT_SQLMATHWARN establecido en YES; el resultado es el
valor nulo si el argumento es nulo.

Captulo 3. Funciones 321


DATAPARTITIONNUM

DATAPARTITIONNUM
 DATAPARTITIONNUM ( nombre-columna ) 

El esquema es SYSIBM.

La funcin DATAPARTITIONNUM devuelve el nmero de secuencia


(SYSDATAPARTITIONS.SEQNO) de la particin de datos donde reside la fila. Las
particiones de datos se clasifican por rango y los nmeros de secuencia empiezan
en 0. Por ejemplo, la funcin DATAPARTITIONNUM devuelve 0 para una fila que
resida en la particin de datos con el rango ms bajo.

El argumento debe ser el nombre calificado o no calificado de cualquier columna


de la tabla. Puesto que se devuelve informacin a nivel de fila, el resultado es el
mismo, sin tener en cuenta qu columna se especifica. La columna puede tener
cualquier tipo de datos.

Si nombre-columna hace referencia a una columna de una vista, la expresin de la


vista para la columna debe hacer referencia a una columna de la tabla base
principal y la vista debe ser suprimible. Una expresin de tabla anidada o comn
sigue las mismas normas que una vista.

El tipo de datos del resultado es INTEGER y nunca es nulo. Si no hay ningn


archivo db2nodes.cfg, el resultado es 0.

Esta funcin no puede utilizarse como una funcin fuente cuando se crea una
funcin definida por el usuario. Ya que la funcin acepta cualquier tipo de datos
como argumento, no es necesario crear signaturas adicionales para dar soporte a
los tipos diferentes definidos por el usuario.

La funcin DATAPARTITIONNUM no se puede utilizar en las restricciones de


comprobacin ni en la definicin de columnas generadas (SQLSTATE 42881). No se
puede utilizar la funcin DATAPARTITIONNUM en la definicin de una tabla de
consultas materializadas (MQT) (SQLSTATE 428EC).

Ejemplo:
v SELECT DATAPARTITIONNUM (EMPNO, EMPNAME)
FROM EMPLOYEE
Para convertir un nmero de secuencia (por ejemplo, 0) en un nombre de
particin de datos que se pueda utilizar en otras sentencias SQL (como por
ejemplo, ALTER TABLE...DETACH PARTITION), puede consultar el catlogo del
sistema.
SELECT DATAPARTITIONNAME
FROM SYSCAT.DATAPARTITIONS
WHERE TABNAME = EMPLOYEE AND SEQNO = 0

genera el valor PART0.

322 Consulta de SQL - Volumen 1


DATE

DATE
 DATE ( expresin ) 

El esquema es SYSIBM.

La funcin DATE devuelve una fecha de un valor.

El argumento debe ser una fecha, indicacin de fecha y hora, nmero positivo
menor o igual que 3 652 059, representacin de serie vlida de una fecha o una
indicacin de fecha y hora o una serie de longitud 7 que no sea CLOB, LONG
VARCHAR ni LONG VARGRAPHIC.

Slo las bases de datos Unicode dan soporte a un argumento que es una
representacin de serie grfica de una fecha o una indicacin de fecha y hora. En
una base de datos Unicode, si un argumento proporcionado es una serie grfica, se
convertir a una serie de caracteres antes de que se ejecute la funcin.

Si el argumento es una serie de longitud 7, debe representar una fecha vlida en el


formato aaaannn, donde aaaa son los dgitos que indican el ao y nnn los son
dgitos entre 001 y 366, que indican un da de dicho ao.

El resultado de la funcin es una fecha. Si el argumento puede ser nulo, el


resultado puede ser nulo; si el argumento es nulo, el resultado es el valor nulo.

Las dems reglas dependen del tipo de datos del argumento:


v Si el argumento es una fecha, una indicacin de fecha y hora o una
representacin vlida en el formato de una serie de una fecha o indicacin de
fecha y hora:
El resultado es la parte correspondiente a la fecha del valor.
v Si el argumento es un nmero:
El resultado es la fecha de n-1 das despus de 1 de enero de 0001, donde n es
la parte integral del nmero.
v Si el argumento es una serie con una longitud de 7:
El resultado es la fecha representada por la serie.

Ejemplos:

Supongamos que la columna RECEIVED (indicacin de fecha y hora) tiene un


valor interno equivalente a 1988-12-25-17.12.30.000000.
v Este ejemplo da como resultado una representacin interna de 1988-12-25.
DATE(RECEIVED)
v Este ejemplo da como resultado una representacin interna de 1988-12-25.
DATE(1988-12-25)
v Este ejemplo da como resultado una representacin interna de 1988-12-25.
DATE(25.12.1988)
v Este ejemplo da como resultado una representacin interna de 0001-02-04.
DATE(35)

Captulo 3. Funciones 323


DAY

DAY
 DAY ( expresin ) 

El esquema es SYSIBM.

La funcin DAY devuelve la parte correspondiente al da de un valor.

El argumento debe ser una fecha, una indicacin de fecha y hora, una duracin de
fecha, una duracin de una indicacin de fecha y hora o una representacin de
serie de caracteres vlida de una fecha o una indicacin de fecha y hora que no sea
CLOB ni LONG VARCHAR. En una base de datos Unicode, si un argumento
proporcionado es una serie grfica, se convertir a una serie de caracteres antes de
que se ejecute la funcin.

El resultado de la funcin es un entero grande. Si el argumento puede ser nulo, el


resultado puede ser nulo; si el argumento es nulo, el resultado es el valor nulo.

Las dems reglas dependen del tipo de datos del argumento:


v Si el argumento es una fecha, una indicacin de fecha y hora o una
representacin vlida de una fecha o indicacin de fecha y hora en forma de
serie:
El resultado es la parte correspondiente al da del valor, que es un entero
entre 1 y 31.
v Si el argumento es una duracin de fecha o duracin de la indicacin de fecha y
hora:
El resultado es la parte correspondiente al da del valor, que es un entero
entre 99 y 99. El resultado que no es cero tiene el mismo signo que el
argumento.

Ejemplos:
v Utilizando la tabla PROJECT, establezca la variable del lenguaje principal
END_DAY (smallint) en el da en que est planificado que el proyecto WELD
LINE PLANNING (PROJNAME) finalice (PRENDATE).
SELECT DAY(PRENDATE)
INTO :END_DAY
FROM PROJECT
WHERE PROJNAME = WELD LINE PLANNING

Da como resultado que END_DAY se establece en 15 cuando se utiliza la tabla


de ejemplo.
v Supongamos que la columna DATE1 (fecha) tiene un valor interno equivalente a
2000-03-15 y la columna DATE2 (fecha) tiene un valor interno equivalente a
1999-12-31.
DAY(DATE1 - DATE2)

Da como resultado el valor 15.

324 Consulta de SQL - Volumen 1


DAYNAME

DAYNAME
 DAYNAME ( expresin ) 

El esquema es SYSFUN.

Devuelve una serie que combina caracteres en maysculas y minsculas que


contiene el nombre del da (por ejemplo, viernes) correspondiente a la parte del da
del argumento, segn el entorno local en el momento en que se inici la base de
datos.

El argumento debe ser una fecha, una indicacin de fecha y hora o una
representacin de serie de caracteres vlida de una fecha o de una indicacin de
fecha y hora que no sea CLOB ni LONG VARCHAR. En una base de datos
Unicode, si un argumento proporcionado es una serie grfica, se convertir a una
serie de caracteres antes de que se ejecute la funcin.

El resultado de la funcin es VARCHAR(100). El resultado puede ser nulo; si el


argumento es nulo, el resultado es el valor nulo.

Captulo 3. Funciones 325


DAYOFWEEK

DAYOFWEEK
 DAYOFWEEK ( expresin ) 

Devuelve el da de la semana del argumento como un valor entero en el rango de


1 a 7, donde 1 representa el Domingo.

El argumento debe ser una fecha, una indicacin de fecha y hora o una
representacin de serie de caracteres vlida de una fecha o de una indicacin de
fecha y hora que no sea CLOB ni LONG VARCHAR. En una base de datos
Unicode, si un argumento proporcionado es una serie grfica, se convertir a una
serie de caracteres antes de que se ejecute la funcin.

El resultado de la funcin es INTEGER. El resultado puede ser nulo; si el


argumento es nulo, el resultado es el valor nulo.

326 Consulta de SQL - Volumen 1


DAYOFWEEK_ISO

DAYOFWEEK_ISO
 DAYOFWEEK_ISO ( expresin ) 

El esquema es SYSFUN.

Devuelve el da de la semana del argumento, en forma de valor entero


comprendido dentro del rango 1-7, donde 1 representa el lunes.

El argumento debe ser una fecha, una indicacin de fecha y hora o una
representacin de serie de caracteres vlida de una fecha o de una indicacin de
fecha y hora que no sea CLOB ni LONG VARCHAR. En una base de datos
Unicode, si un argumento proporcionado es una serie grfica, se convertir a una
serie de caracteres antes de que se ejecute la funcin.

El resultado de la funcin es INTEGER. El resultado puede ser nulo; si el


argumento es nulo, el resultado es el valor nulo.

Captulo 3. Funciones 327


DAYOFYEAR

DAYOFYEAR
 DAYOFYEAR ( expresin ) 

El esquema es SYSFUN.

Devuelve el da del ao del argumento como un valor entero en el rango de 1 a


366.

El argumento debe ser una fecha, una indicacin de fecha y hora o una
representacin de serie de caracteres vlida de una fecha o de una indicacin de
fecha y hora que no sea CLOB ni LONG VARCHAR. En una base de datos
Unicode, si un argumento proporcionado es una serie grfica, se convertir a una
serie de caracteres antes de que se ejecute la funcin.

El resultado de la funcin es INTEGER. El resultado puede ser nulo; si el


argumento es nulo, el resultado es el valor nulo.

328 Consulta de SQL - Volumen 1


DAYS

DAYS
 DAYS ( expresin ) 

El esquema es SYSIBM.

La funcin DAYS devuelve una representacin de entero de una fecha.

El argumento debe ser una fecha, una indicacin de fecha y hora o una
representacin de serie de caracteres vlida de una fecha o de una indicacin de
fecha y hora que no sea CLOB ni LONG VARCHAR. En una base de datos
Unicode, si un argumento proporcionado es una serie grfica, se convertir a una
serie de caracteres antes de que se ejecute la funcin.

El resultado de la funcin es un entero grande. Si el argumento puede ser nulo, el


resultado puede ser nulo; si el argumento es nulo, el resultado es el valor nulo.

El resultado es 1 ms que el nmero de das desde el 1 de enero de 0001 hasta D,


donde D es la fecha que podra darse si se aplicase la funcin DATE al argumento.

Ejemplos:
v Utilizando la tabla PROJECT, establezca la variable del lenguaje principal
EDUCATION_DAYS (int) en el nmero de das transcurridos (PRENDATE -
PRSTDATE) estimados para el proyecto (PROJNO) IF2000.
SELECT DAYS(PRENDATE) - DAYS(PRSTDATE)
INTO :EDUCATION_DAYS
FROM PROJECT
WHERE PROJNO = IF2000

El resultado de EDUCATION_DAYS se define en 396.


v Utilizando la tabla PROJECT, establezca la variable del lenguaje principal
TOTAL_DAYS (int) en la suma de los das transcurridos (PRENDATE -
PRSTDATE) estimados para todos los proyectos del departamento (DEPTNO)
E21.
SELECT SUM(DAYS(PRENDATE) DAYS(PRSTDATE))
INTO :TOTAL_DAYS
FROM PROJECT
WHERE DEPTNO = E21

Da como resultado que TOTAL_DAYS se establece en 1584 cuando se utiliza la


tabla de ejemplo.

Captulo 3. Funciones 329


DBCLOB

DBCLOB
 DBCLOB ( expresin-grfica ) 
, entero

El esquema es SYSIBM.

La funcin DBCLOB devuelve una representacin DBCLOB de un tipo de serie


grfica.

En una base de datos Unicode, si un argumento proporcionado es una serie de


caracteres, se convertir a una serie grfica antes de que se ejecute la funcin.
Cuando la serie de salida se trunca, de forma que el ltimo carcter es un carcter
de sustitucin elevado, dicho carcter:
v Se deja tal cual, si el argumento proporcionado es una serie de caracteres
v O se convierte al carcter en blanco (X0020), si el argumento proporcionado es
una serie grfica
No confe en estos comportamientos, porque podran cambiar en los releases
futuros.

El resultado de la funcin es DBCLOB. Si el argumento puede ser nulo, el


resultado puede ser nulo; si el argumento es nulo, el resultado es el valor nulo.
expresin-grfica
Una expresin que devuelve un valor que es una serie grfica.
entero
Un valor entero que especifica el atributo de longitud del tipo de datos
DBCLOB resultante. El valor debe estar comprendido entre 0 y 1 073 741 823. Si
no se especifica entero, la longitud del resultado es la misma que la longitud
del primer argumento.

330 Consulta de SQL - Volumen 1


DBPARTITIONNUM

DBPARTITIONNUM
 DBPARTITIONNUM ( nombre-columna ) 

El esquema es SYSIBM.

La funcin DBPARTITIONNUM devuelve el nmero de particin de base de datos


para una fila. Por ejemplo, si se utiliza en una clusula SELECT, devuelve el
nmero de particin de la base de datos para cada fila del conjunto de resultados.

El argumento debe ser el nombre calificado o no calificado de cualquier columna


de la tabla. Puesto que se devuelve informacin a nivel de fila, el resultado es el
mismo, sin tener en cuenta qu columna se especifica. La columna puede tener
cualquier tipo de datos.

Si nombre-columna hace referencia a una columna de una vista, la expresin de la


vista para la columna debe hacer referencia a una columna de la tabla base
principal y la vista debe ser suprimible. Una expresin de tabla anidada o comn
sigue las mismas normas que una vista.

La fila (y la tabla) especfica para la que la funcin DBPARTITIONNUM devuelve


el nmero de particin de base de datos se determina a partir del contexto de la
sentencia SQL que utiliza la funcin.

El nmero de particin de base de datos devuelto en las variables y las tablas de


particin se deriva de los valores de transicin actuales de las columnas de claves
de distribucin. Por ejemplo, en un activador BEFORE INSERT, la funcin
devuelve el nmero de particin de base de datos proyectado que corresponda a
los valores actuales de las nuevas variables de transicin. No obstante, es posible
que los valores de las columnas de claves de distribucin se modifiquen mediante
un activador BEFORE INSERT subsiguiente. Por lo tanto, el nmero de particin
de base de datos final de la fila cuando se inserta en la base de datos puede ser
distinto del valor proyectado.

El tipo de datos del resultado es INTEGER y nunca es nulo. Si no hay ningn


archivo db2nodes.cfg, el resultado es 0.

Esta funcin no puede utilizarse como una funcin fuente cuando se crea una
funcin definida por el usuario. Ya que la funcin acepta cualquier tipo de datos
como argumento, no es necesario crear signaturas adicionales para dar soporte a
los tipos diferentes definidos por el usuario.

La funcin DBPARTITIONNUM no puede utilizarse en tablas duplicadas, dentro


de restricciones de comprobacin ni en la definicin de columnas generadas
(SQLSTATE 42881).

Para mantener la compatibilidad con las versiones anteriores de DB2,


NODENUMBER puede especificarse en lugar de DBPARTITIONNUM.

Ejemplos:
v Cuente el nmero de instancias en las que la fila para un empleado de la tabla
EMPLOYEE est en una particin de base de datos distinta a la descripcin del
departamento del empleado de la tabla DEPARTMENT.

Captulo 3. Funciones 331


DBPARTITIONNUM

SELECT COUNT(*) FROM DEPARTMENT D, EMPLOYEE E


WHERE D.DEPTNO=E.WORKDEPT
AND DBPARTITIONNUM(E.LASTNAME) <> DBPARTITIONNUM(D.DEPTNO)
v Unir las tablas EMPLOYEE y DEPARTMENT de manera que las filas de las dos
tablas se encuentren en la misma particin de base de datos.
SELECT * FROM DEPARTMENT D, EMPLOYEE E
WHERE DBPARTITIONNUM(E.LASTNAME) = DBPARTITIONNUM(D.DEPTNO)
v Utilizando un activador anterior en la tabla EMPLOYEE, registrar el nmero de
empleado y el nmero de particin de base de datos proyectado de cualquier
fila nueva de la tabla EMPLOYEE en una tabla denominada EMPINSERTLOG1.
CREATE TRIGGER EMPINSLOGTRIG1
BEFORE INSERT ON EMPLOYEE
REFERENCING NEW AW NEWTABLE
FOR EACH ROW
INSERT INTO EMPINSERTLOG1
VALUES(NEWTABLE.EMPNO, DBPARTITIONNUM
(NEWTABLE.EMPNO))

Informacin relacionada:
v Sentencia CREATE VIEW en Consulta de SQL, Volumen 2

332 Consulta de SQL - Volumen 1


DECIMAL

DECIMAL
De numrico a decimal :

 DECIMAL ( expresin-numrica 
DEC

 ) 
, entero-precisin
, entero-escala

De carcter a decimal:

 DECIMAL ( expresin-caracteres 
DEC

 ) 
, entero-precisin
, entero-escala
, carcter-decimal

De fecha y hora a decimal:

 DECIMAL ( expresin-fechahora 
DEC

 ) 
, entero-precisin
, entero-escala

El esquema es SYSIBM.

La funcin DECIMAL devuelve una representacin decimal de:


v Un nmero
v Una representacin de serie de caracteres de un nmero decimal
v Una representacin de serie de caracteres de un nmero entero
v Una representacin de serie de caracteres de un nmero de coma flotante
v Un valor de fecha y hora, si el argumento es una fecha, una hora o una
indicacin de fecha y hora
En una base de datos Unicode, si un argumento proporcionado es una serie
grfica, se convertir a una serie de caracteres antes de que se ejecute la funcin.

El resultado de la funcin es un nmero decimal con precisin p y escala s, donde


p y s son el segundo y el tercer argumento, respectivamente. Si el primer
argumento puede ser nulo, el resultado puede ser nulo; si el primer argumento es
nulo, el resultado es el valor nulo.
De numrico a decimal
expresin-numrica
Una expresin que devuelve un valor de cualquier tipo de datos
numrico.

Captulo 3. Funciones 333


DECIMAL

entero-precisin
Una constante de enteros con un valor en el rango de 1 a 31.
El valor por omisin para entero-precisin depende del tipo de datos de
expresin-numrica:
v 15 para coma flotante y decimal
v 19 para entero superior
v 11 para entero grande
v 5 para entero pequeo.
entero-escala
Una constante de enteros en el rango de 0 al valor de entero-precisin.
El valor por omisin es cero.

El resultado es el mismo nmero que sera si se asignase el primer


argumento a una columna o variable decimal con precisin p y escala s,
donde p y s son el segundo y el tercer argumento, respectivamente. Se
produce un error si el nmero de dgitos decimales significativos
necesarios para representar la parte correspondiente a los enteros es mayor
que ps.
De carcter a decimal
expresin-caracteres
Una expresin que devuelve un valor que es una serie de caracteres con
una longitud no mayor que la longitud mxima de una constante de
caracteres (4.000 bytes). No puede tener un tipo de datos CLOB ni
LONG VARCHAR. Los blancos iniciales o de cola se eliminan de la
serie. La subserie resultante debe ajustarse a las reglas para formar una
constante decimal o de entero SQL (SQLSTATE 22018).
La expresin-caracteres se convierte a la pgina de cdigos de la base de
datos si es necesario que coincida con la pgina de cdigos de la
constante carcter-decimal.
entero-precisin
Una constante de enteros con un valor en el rango de 1 a 31 que
especifica la precisin del resultado. Si no se especifica, el valor por
omisin es 15.
entero-escala
Una constante de enteros con un valor en el rango entre 0 y
entero-precisin que especifica la escala del resultado. Si no se especifica,
el valor por omisin es 0.
carcter-decimal
Especifica la constante de caracteres de un solo byte utilizada para
delimitar los dgitos decimales en expresin-caracteres de la parte
correspondiente a los enteros del nmero. El carcter no puede ser un
dgito, el signo ms (+), el signo menos () ni un blanco y puede
aparecer como mximo una vez en expresin-caracteres (SQLSTATE
42815).

El resultado es un nmero decimal con la precisin p y la escala s, donde p


y s son el segundo y el tercer argumento, respectivamente. Los dgitos se
truncan por el final del nmero decimal si el nmero de dgitos a la
derecha del carcter decimal es mayor que la escala. Se produce un error si
el nmero de dgitos significativos a la izquierda del carcter decimal (la
parte correspondiente a los enteros del nmero) de expresin-caracteres es

334 Consulta de SQL - Volumen 1


DECIMAL

mayor que ps (SQLSTATE 22003). El carcter decimal por omisin no es


vlido en la subserie si se especifica un valor diferente para el argumento
carcter-decimal (SQLSTATE 22018).
De fecha y hora a decimal
expresin-fechahora
Una expresin que sea uno de los tipos de datos siguientes:
v DATE. El resultado es un valor DECIMAL(8,0) que representa la
fecha como aaaammdd.
v TIME. El resultado es un valor DECIMAL(6,0) que representa la hora
como hhmmss.
v TIMESTAMP. El resultado es un valor DECIMAL(20,6) que
representa la indicacin de fecha y hora como aaaammddhhmmss.

Este funcin permite que el usuario especifique una precisin o una


precisin y una escala. Sin embargo, una escala no puede especificarse sin
especificar una precisin. El valor por omisin para (precisin,escala) es
(8,0) para DATE, (6,0) para TIME y (20,6) para TIMESTAMP.

El resultado es un nmero decimal con la precisin p y la escala s, donde p


y s son el segundo y el tercer argumento, respectivamente. Los dgitos se
truncan por el final si el nmero de dgitos a la derecha del carcter
decimal es mayor que la escala. Se produce un error si el nmero de
dgitos significativos a la izquierda del carcter decimal (la parte
correspondiente a los enteros del nmero) de expresin-fechahora es mayor
que ps (SQLSTATE 22003).

Ejemplos:
v Utilice la funcin DECIMAL para forzar a que se devuelva un tipo de datos
DECIMAL (con una precisin de 5 y una escala de 2) en una lista-seleccin para
la columna EDLEVEL (tipo de datos = SMALLINT) en la tabla EMPLOYEE. La
columna EMPNO debe aparecer tambin en la lista de seleccin.
SELECT EMPNO, DECIMAL(EDLEVEL,5,2)
FROM EMPLOYEE
v Supongamos que la variable del lenguaje principal PERIOD es de tipo
INTEGER. En este caso, para utilizar su valor como duracin de fecha debe
convertirse a decimal(8,0).
SELECT PRSTDATE + DECIMAL(:PERIOD,8)
FROM PROJECT
v Supongamos que las actualizaciones en la columna SALARY se entran mediante
una ventana como una serie de caracteres que utiliza la coma como carcter
decimal (por ejemplo, el usuario entra 21400,50). Cuando se ha validado por la
aplicacin, se asigna a la variable del lenguaje principal newsalary definida
como CHAR(10).
UPDATE STAFF
SET SALARY = DECIMAL(:newsalary, 9, 2, ,)
WHERE ID = :empid;

El valor de newsalary se convierte en 21400.50.


v Aada el carcter decimal por omisin (.) al valor.
DECIMAL(21400,50, 9, 2, .)

Falla porque se especifica un punto (.) como el carcter decimal, pero aparece
una coma (,) en el primer argumento como delimitador.

Captulo 3. Funciones 335


DECIMAL

v Supongamos que la columna STARTING (hora) tiene un valor interno


equivalente a 12:10:00.
DECIMAL(STARTING)

da como resultado el valor 121 000.


v Supongamos que la columna RECEIVED (indicacin de fecha y hora) tiene un
valor interno equivalente a 1988-12-22-14.07.21.136421.
DECIMAL(RECEIVED)

da como resultado el valor 19 881 222 140 721.136421.


v La tabla siguiente muestra el resultado decimal y la precisin y la escala
resultante para varios valores de entrada de fecha y hora.

Precisin y
DECIMAL(argumentos) escala Resultado
DECIMAL(2000-03-21) (8,0) 20000321
DECIMAL(2000-03-21, 10) (10,0) 20000321
DECIMAL(2000-03-21, 12, 2) (12,2) 20000321.00
DECIMAL(12:02:21) (6,0) 120221
DECIMAL(12:02:21, 10) (10,0) 120221
DECIMAL(12:02:21, 10, 2) (10,2) 120221.00
DECIMAL(2000-03-21- (20, 6) 20000321120221.123456
12.02.21.123456)
DECIMAL(2000-03-21- (23, 6) 20000321120221.123456
12.02.21.123456, 23)
DECIMAL(2000-03-21- (23, 4) 20000321120221.1234
12.02.21.123456, 23, 4)

336 Consulta de SQL - Volumen 1


DECRYPT_BIN y DECRYPT_CHAR

DECRYPT_BIN y DECRYPT_CHAR
 DECRYPT_BIN ( datos-cifrados ) 
DECRYPT_CHAR , expresin-serie-contrasea

El esquema es SYSIBM.

Tanto la funcin DECRYPT_BIN como la funcin DECRYPT_CHAR devuelven un


valor obtenido tras descifrar datos-cifrados. La contrasea que se utiliza para
descifrar es el valor expresin-serie-contrasea o el valor de la contrasea de cifrado
asignada por la sentencia SET ENCRYPTION PASSWORD. Las funciones
DECRYPT_BIN y DECRYPT_CHAR slo pueden descifrar valores que se han
cifrado mediante la funcin ENCRYPT (SQLSTATE 428FE).
datos-cifrados
Una expresin que devuelve un valor CHAR FOR BIT DATA o VARCHAR
FOR BIT DATA como una serie de datos cifrada completa. La serie de datos se
tiene que haber cifrado utilizando la funcin ENCRYPT.
expresin-serie-contrasea
Una expresin que devuelve un valor CHAR o VARCHAR con un mnimo de
6 bytes y no ms de 127 bytes (SQLSTATE 428FC). Esta expresin tiene que ser
la misma contrasea que se utiliza para cifrar los datos (SQLSTATE 428FD). Si
no se ha proporcionado un valor para el argumento de la contrasea o bien
dicho valor es nulo, los datos se cifrarn utilizando el valor de la contrasea de
cifrado asignado para la sesin mediante la sentencia SET ENCRYPTION
PASSWORD (SQLSTATE 51039).

El resultado de la funcin DECRYPT_BIN es VARCHAR FOR BIT DATA. El


resultado de la funcin DECRYPT_CHAR es VARCHAR. Si datos-cifrados inclua
una sugerencia, la funcin no la devolver. El atributo de longitud del resultado
corresponde a la longitud del tipo de datos de datos-cifrados menos 8 bytes. La
longitud real del valor devuelto por la funcin coincidir con la longitud de la
serie original que se ha cifrado. Si datos-cifrados incluye bytes ms all de la serie
cifrada, la funcin no los devolver.

Si el primer argumento puede ser nulo, el resultado puede ser nulo. Si el primer
argumento es nulo, el resultado es el valor nulo.

Si los datos se descifran en un sistema diferente que utiliza una pgina de cdigos
que es diferente de la pgina de cdigos en la que se cifraron los datos, puede
producirse una expansin al convertir el valor descifrado a la pgina de cdigos de
la base de datos. En dichas situaciones, el valor datos-cifrados debe calcularse en
una serie VARCHAR con un nmero mayor de bytes.

Ejemplos:
v Utilizar la sentencia SET ENCRYPTION PASSWORD para establecer una
contrasea de cifrado para la sesin.
CREATE TABLE EMP (SSN VARCHAR(24) FOR BIT DATA);
SET ENCRYPTION PASSWORD = Ben123;
INSERT INTO EMP(SSN) VALUES ENCRYPT(289-46-8832);
SELECT DECRYPT_CHAR(SSN)
FROM EMP;

Esta consulta devuelve el valor 289-46-8832.

Captulo 3. Funciones 337


DECRYPT_BIN y DECRYPT_CHAR

v Pasar la contrasea de cifrado explcitamente.


INSERT INTO EMP (SSN) VALUES ENCRYPT(289-46-8832,Ben123,);
SELECT DECRYPT_CHAR(SSN,Ben123)
FROM EMP;

Esta consulta devuelve el valor 289-46-8832.

Informacin relacionada:
v ENCRYPT en la pgina 345
v GETHINT en la pgina 351
v Sentencia SET ENCRYPTION PASSWORD en Consulta de SQL, Volumen 2

338 Consulta de SQL - Volumen 1


DEGREES

DEGREES
 DEGREES ( expresin ) 

El esquema es SYSFUN.

Devuelve el nmero de grados convertidos del argumento expresado en radianes.

El argumento puede ser de cualquier tipo numrico interno. Se convierte a un


nmero de coma flotante de precisin doble para que lo procese la funcin.

El resultado de la funcin es un nmero de coma flotante de precisin doble. El


resultado puede ser nulo; si el argumento es nulo, el resultado es el valor nulo.

Captulo 3. Funciones 339


DEREF

DEREF
 DEREF ( expresin ) 

La funcin DEREF devuelve una instancia del tipo de destino del argumento.

El argumento puede ser cualquier valor con un tipo de datos de referencia que
tenga un mbito definido (SQLSTATE 428DT).

El tipo de datos esttico del resultado es el tipo de destino del argumento. El tipo
de datos dinmico del resultado es un subtipo del tipo de destino del argumento.
El resultado puede ser nulo. El resultado es un valor nulo si expresin es un valor
nulo o si expresin es una referencia que no tiene un OID correspondiente en la
tabla de destino.

El resultado es una instancia del subtipo del tipo de destino de la referencia. El


resultado se determina buscando la fila de la tabla de destino o vista de destino de
la referencia que tenga un identificador de objeto que se corresponda con el valor
de la referencia. El tipo de esta fila determina el tipo dinmico del resultado.
Puesto que el tipo del resultado puede estar basado en una fila de una subtabla o
subvista de la tabla de destino o vista de destino, el ID de autorizacin de la
sentencia debe tener un privilegio SELECT sobre la tabla de destino y todas sus
subtablas o sobre la vista de destino y todas sus subvistas (SQLSTATE 42501).

Ejemplos:

Supongamos que EMPLOYEE es una tabla de tipo EMP, y que su columna de


identificador de objeto se llama EMPID. En este caso, la consulta siguiente
devuelve un objeto de tipo EMP (o uno de sus subtipos) para cada fila de la tabla
EMPLOYEE (y de sus subtablas). Para ejecutar esta consulta es necesario tener
privilegio SELECT sobre EMPLOYEE y todas sus subtablas.
SELECT DEREF(EMPID) FROM EMPLOYEE

Informacin relacionada:
v TYPE_NAME en la pgina 457

340 Consulta de SQL - Volumen 1


DIFFERENCE

DIFFERENCE
 DIFFERENCE ( expresin , expresin ) 

El esquema es SYSFUN.

Devuelve un valor de 0 a 4 que representa la diferencia entre los sonidos de dos


series basndose en la aplicacin de la funcin SOUNDEX en las series. El valor 4
es la mejor coincidencia de sonido posible.

Los argumentos pueden ser series de caracteres que sean CHAR o VARCHAR de
un mximo de 4.000 bytes. En una base de datos Unicode, si un argumento
proporcionado es una serie grfica, se convertir a una serie de caracteres antes de
que se ejecute la funcin.

El resultado de la funcin es INTEGER. El resultado puede ser nulo; si el


argumento es nulo, el resultado es el valor nulo.

Ejemplo:
VALUES (DIFFERENCE(CONSTRAINT,CONSTANT),SOUNDEX(CONSTRAINT),
SOUNDEX(CONSTANT)),
(DIFFERENCE(CONSTRAINT,CONTRITE),SOUNDEX(CONSTRAINT),
SOUNDEX(CONTRITE))

Este ejemplo devuelve lo siguiente.


1 2 3
----------- ---- ----
4 C523 C523
2 C523 C536

En la primera fila, las palabras tienen el mismo resultado de SOUNDEX, mientras


que en la segunda fila las palabras slo tienen algn parecido.

Informacin relacionada:
v SOUNDEX en la pgina 427

Captulo 3. Funciones 341


DIGITS

DIGITS
 DIGITS ( expresin ) 

El esquema es SYSIBM.

La funcin DIGITS devuelve una representacin de serie de caracteres de un


nmero.

El argumento debe ser una expresin que devuelva un valor con el tipo
SMALLINT, INTEGER, BIGINT o DECIMAL.

Si el argumento puede ser nulo, el resultado puede ser nulo; si el argumento es


nulo, el resultado es el valor nulo.

El resultado de la funcin es una serie de caracteres de longitud fija que representa


el valor absoluto del argumento sin tener en cuenta su escala. El resultado no
incluye el signo ni el carcter decimal. En su lugar, consta exclusivamente de
dgitos, incluyendo, si es necesario, ceros iniciales para rellenar la serie. La
longitud de la serie es:
v 5 si el argumento es un entero pequeo
v 10 si el argumento es un entero grande
v 19 si el argumento es un entero superior
v p si el argumento es un nmero decimal con una precisin de p.

Ejemplos:
v Supongamos que una tabla llamada TABLEX contiene una columna INTEGER
llamada INTCOL que contiene nmeros de 10 dgitos. Liste las cuatro
combinaciones de dgitos de los cuatro primeros dgitos de la columna INTCOL.
SELECT DISTINCT SUBSTR(DIGITS(INTCOL),1,4)
FROM TABLEX
v Supongamos que la columna COLUMNX tiene el tipo de datos DECIMAL(6,2) y
que uno de sus valores es -6.28. Entonces, para este valor:
DIGITS(COLUMNX)

devuelve el valor '000628'.


El resultado es una serie de longitud seis (la precisin de la columna) con ceros
iniciales que rellenan la serie hasta esta longitud. No aparecen ni el signo ni la
coma decimal en el resultado.

342 Consulta de SQL - Volumen 1


DOUBLE

DOUBLE
De numrico a doble :

 DOUBLE ( expresin-numrica ) 
FLOAT
DOUBLE_PRECISION

De serie de caracteres a doble :

 DOUBLE ( expresin-serie ) 

El esquema es SYSIBM. Sin embargo, el esquema de DOUBLE(expresin-serie) es


SYSFUN.

La funcin DOUBLE devuelve un nmero de coma flotante correspondiente a:


v un nmero si el argumento es una expresin numrica
v una representacin de serie de caracteres de un nmero si el argumento es una
expresin de serie.
En una base de datos Unicode, si un argumento proporcionado es una serie
grfica, se convertir a una serie de caracteres antes de que se ejecute la funcin.
De numrico a doble
expresin-numrica
El argumento es una expresin que devuelve un valor de cualquier
tipo de datos numrico interno.
El resultado de la funcin es un nmero de coma flotante de precisin
doble. Si el argumento puede ser nulo, el resultado puede ser nulo; si
el argumento es nulo, el resultado es el valor nulo.
El resultado es el mismo nmero que sera si el argumento se hubiese
asignado a una columna o variable de coma flotante de precisin
doble.
De serie de caracteres a doble
expresin-serie
El argumento puede ser de tipo CHAR o VARCHAR en el formato de
una constante numrica. Se ignoran los blancos iniciales y de cola.
El resultado de la funcin es un nmero de coma flotante de precisin
doble. El resultado puede ser nulo; si el argumento es nulo, el
resultado es el valor nulo.
El resultado es el mismo nmero que sera si la serie se considerase
una constante y se asignase a una columna o variable de coma flotante
de precisin doble.

Ejemplo:

Utilizando la tabla EMPLOYEE, busque la proporcin de salario y comisiones para


los empleados cuya comisin no sea cero. Las columnas implicadas (SALARY y

Captulo 3. Funciones 343


DOUBLE

COMM) tienen tipos de datos DECIMAL. Para eliminar la posibilidad de


resultados fuera de rango, se aplica DOUBLE a SALARY para que la divisin se
lleve a cabo en coma flotante:
SELECT EMPNO, DOUBLE(SALARY)/COMM
FROM EMPLOYEE
WHERE COMM > 0

344 Consulta de SQL - Volumen 1


ENCRYPT

ENCRYPT
 ENCRYPT 

 ( expresin-serie-datos ) 
, expresin-serie-contrasea
, expresin-serie-indicacin

El esquema es SYSIBM.

La funcin ENCRYPT devuelve un valor que es el resultado del cifrado de


expresin-serie-datos. La contrasea que se utiliza para cifrar es el valor
expresin-serie-contrasea o el valor de la contrasea de cifrado asignado por la
sentencia SET ENCRYPTION PASSWORD. En una base de datos Unicode, si un
argumento proporcionado es una serie grfica, se convertir a una serie de
caracteres antes de que se ejecute la funcin.
expresin-serie-datos
Una expresin que devuelve el valor CHAR o VARCHAR que debe cifrarse. El
atributo de longitud del tipo de datos de expresin-serie-datos est limitado a
32663 sin ningn argumento expresin-serie-sugerencia y a 32631 cuando se
especifica el argumento expresin-serie-sugerencia (SQLSTATE 42815).
expresin-serie-contrasea
Una expresin que devuelve un valor CHAR o VARCHAR con un mnimo de
6 bytes y no ms de 127 bytes (SQLSTATE 428FC). El valor representa la
contrasea utilizada para cifrar expresin-serie-datos. Si no se ha proporcionado
un valor para el argumento de la contrasea o bien dicho valor es nulo, los
datos se cifrarn utilizando el valor de la contrasea de cifrado asignado para
la sesin por la sentencia SET ENCRYPTION PASSWORD (SQLSTATE 51039).
expresin-serie-indicacin
Una expresin que devuelve un valor CHAR o VARCHAR de un mximo de
32 bytes que ayudar a los propietarios de datos a recordar las contraseas
(por ejemplo, Ocano puede ser una sugerencia para recordar Pacfico). Si se
proporciona un valor de indicacin, la indicacin se incorpora en el resultado y
puede recuperarse utilizando la funcin GETHINT. Si este argumento es nulo o
no se proporciona, no se incorporar ninguna indicacin en el resultado.

El tipo de datos de resultado de la funcin es VARCHAR FOR BIT DATA.


v Cuando se especifica el parmetro de sugerencia opcional, el atributo de
longitud del resultado es igual al atributo de longitud de los datos no cifrados +
8 bytes + el nmero de bytes hasta el siguiente lmite de 8 bytes + 32 bytes para
la longitud de la sugerencia.
v Si no se ha especificado el parmetro de sugerencia opcional, el atributo de
longitud del resultado es igual al atributo de longitud de los datos no cifrados +
8 bytes + el nmero de bytes hasta el siguiente lmite de 8 bytes.

Si el primer argumento puede ser nulo, el resultado puede ser nulo. Si el primer
argumento es nulo, el resultado es el valor nulo.

Tenga en cuenta que el resultado cifrado tiene una longitud mayor que la del valor
expresin-serie-datos. Por consiguiente, al asignar valores cifrados, asegrese de que
el destino se declara con un tamao suficiente para contener el valor cifrado
entero.

Notas:

Captulo 3. Funciones 345


ENCRYPT

v Algoritmo de cifrado: el algoritmo de cifrado interno utilizado es la cifra de


bloque RC2 con relleno; la clave secreta de 128 bits se deriva de la contrasea
utilizando una conversin de mensaje MD5.
v Contraseas y datos de cifrado: la gestin de contraseas es responsabilidad del
usuario. Una vez que se han cifrado los datos, slo se puede utilizar para
descifrarlos la contrasea utilizada para cifrarlos (SQLSTATE 428FD).
El resultado cifrado puede contener el terminador nulo y otros caracteres no
imprimibles. Cualquier asignacin o conversin a una longitud inferior a la
longitud de datos sugerida puede producir un descifrado anmalo en el futuro y
hacer que se pierdan datos. Los espacios en blanco son valores de datos cifrados
vlidos que se pueden truncar al almacenarse en una columna demasiado
pequea.
v Administracin de datos cifrados: los datos cifrados slo se pueden descifrar en
servidores que soporten las funciones de descifrado que corresponden a la
funcin ENCRYP. Por lo tanto, la duplicacin de columnas con datos cifrados
slo se debe realizar en servidores que soporten la funcin DECRYPT_BIN o
DECRYPT_CHAR.

Ejemplos:
v Utilizar la sentencia SET ENCRYPTION PASSWORD para establecer una
contrasea de cifrado para la sesin.
CREATE TABLE EMP (SSN VARCHAR(24) FOR BIT DATA);
SET ENCRYPTION PASSWORD = Ben123;
INSERT INTO EMP(SSN) VALUES ENCRYPT(289-46-8832);
v Pasar la contrasea de cifrado explcitamente.
INSERT INTO EMP(SSN) VALUES ENCRYPT(289-46-8832,Ben123);
v Definir una sugerencia de contrasea.
INSERT INTO EMP(SSN) VALUES ENCRYPT(289-46-8832,Pacfico,Ocano);

Informacin relacionada:
v DECRYPT_BIN y DECRYPT_CHAR en la pgina 337
v GETHINT en la pgina 351
v Sentencia SET ENCRYPTION PASSWORD en Consulta de SQL, Volumen 2

346 Consulta de SQL - Volumen 1


EVENT_MON_STATE

EVENT_MON_STATE
 EVENT_MON_STATE ( expresin-serie ) 

El esquema es SYSIBM.

La funcin EVENT_MON_STATE devuelve el estado actual de un supervisor de


sucesos.

El argumento es una expresin de serie con un tipo resultante de CHAR o


VARCHAR y un valor que es el nombre de un supervisor de sucesos. Si el
supervisor de sucesos nombrado no existe en la tabla del catlogo
SYSCAT.EVENTMONITORS, se devolver SQLSTATE 42704. En una base de datos
Unicode, si un argumento proporcionado es una serie grfica, se convertir a una
serie de caracteres antes de que se ejecute la funcin.

El resultado es un entero con uno de los valores siguientes:


0 El supervisor de sucesos est inactivo.
1 El supervisor de sucesos est activo.

Si el argumento puede ser nulo, el resultado puede ser nulo; si el argumento es


nulo, el resultado es el valor nulo.

Ejemplo:

El siguiente ejemplo selecciona todos los supervisores de sucesos definidos e indica


si cada uno est activo o inactivo:
SELECT EVMONNAME,
CASE
WHEN EVENT_MON_STATE(EVMONNAME) = 0 THEN Inactive
WHEN EVENT_MON_STATE(EVMONNAME) = 1 THEN Active
END
FROM SYSCAT.EVENTMONITORS

Captulo 3. Funciones 347


EXP

EXP
 EXP ( expresin ) 

El esquema es SYSFUN.

Devuelve la funcin exponencial del argumento.

El argumento puede ser de cualquier tipo de datos interno. Se convierte a un


nmero de coma flotante de precisin doble para que lo procese la funcin.

El resultado de la funcin es un nmero de coma flotante de precisin doble. El


resultado puede ser nulo; si el argumento es nulo, el resultado es el valor nulo.

348 Consulta de SQL - Volumen 1


FLOAT

FLOAT
 FLOAT ( expresin-numrica ) 

El esquema es SYSIBM.

La funcin FLOAT devuelve una representacin de coma flotante de un nmero.


FLOAT es sinnimo de DOUBLE.

Informacin relacionada:
v DOUBLE en la pgina 343

Captulo 3. Funciones 349


FLOOR

FLOOR
 FLOOR ( expresin ) 

El esquema es SYSIBM. (La versin SYSFUN de la funcin FLOOR contina


estando disponible).

Devuelve el valor del entero ms grande que es menor o igual que el argumento.

El resultado de la funcin tiene el mismo tipo de datos y el mismo atributo de


longitud que el argumento, con la excepcin de que la escala es 0 si el argumento
es DECIMAL. Por ejemplo, un argumento con un tipo de datos de DECIMAL(5,5)
devuelve DECIMAL(5,0).

El resultado puede ser nulo si el argumento puede ser nulo o la base de datos est
configurada con DFT_SQLMATHWARN establecido en YES; el resultado es el
valor nulo si el argumento es nulo.

350 Consulta de SQL - Volumen 1


GETHINT

GETHINT
 GETHINT ( datos-cifrados ) 

El esquema es SYSIBM.

La funcin GETHINT devolver la indicacin de contrasea si se encuentra alguna


en datos-cifrados. Una indicacin de contrasea es una expresin que ayuda a los
propietarios de datos a recordar las contraseas; por ejemplo, Ocano como
indicacin para recordar Pacfico. En una base de datos Unicode, si un argumento
proporcionado es una serie grfica, se convertir a una serie de caracteres antes de
que se ejecute la funcin.
datos-cifrados
Una expresin que devuelve un valor CHAR FOR BIT DATA o VARCHAR
FOR BIT DATA que es una serie de datos cifrada completa. La serie de datos
se tiene que haber cifrado utilizando la funcin ENCRYPT (SQLSTATE 428FE).

El resultado de la funcin es VARCHAR(32). El resultado puede ser nulo; si la


funcin ENCRYPT no ha aadido el parmetro de indicacin a los datos-cifrados o
el primer argumento es nulo, el resultado ser el valor nulo.

Ejemplo:

En este ejemplo se almacena la indicacin Ocano para ayudar al usuario a


recordar la contrasea de cifrado Pacfico.
INSERT INTO EMP (SSN) VALUES ENCRYPT(289-46-8832, Pacfico,Ocano);
SELECT GETHINT(SSN)
FROM EMP;

El valor devuelto es Ocano.

Informacin relacionada:
v DECRYPT_BIN y DECRYPT_CHAR en la pgina 337
v ENCRYPT en la pgina 345

Captulo 3. Funciones 351


GENERATE_UNIQUE

GENERATE_UNIQUE
 GENERATE_UNIQUE ( ) 

El esquema es SYSIBM.

La funcin GENERATE_UNIQUE devuelve una serie de caracteres de datos de bits


de 13 bytes de longitud (CHAR(13) FOR BIT DATA) que es exclusiva comparada
con cualquier otra ejecucin de la misma funcin. (El reloj del sistema se utiliza
para generar la indicacin de la hora UTC (Hora universal coordinada) interna
junto con el nmero de la particin de base de datos en la que se ejecuta la
funcin. Los ajustes que retrasan el reloj del sistema real podran generar valores
duplicados). La funcin se define como no determinista.

No hay ningn argumento para esta funcin (se han de especificar los parntesis
vacos).

El resultado de la funcin es un valor exclusivo que incluye el formato interno de


la hora UTC y el nmero de la particin de base de datos en la que se ha
procesado la funcin. El resultado no puede ser nulo.

El resultado de esta funcin se puede utilizar para proporcionar valores exclusivos


en una tabla. Cada valor sucesivo ser mayor que el valor anterior, proporcionando
una secuencia que se puede utilizar en una tabla. El valor incluye el nmero de la
particin de base de datos en la que se ejecuta la funcin de modo que una tabla
particionada en varias particiones de bases de datos tambin tiene valores
exclusivos en alguna secuencia. La secuencia se basa en la hora en que se ha
ejecutado la funcin.

Esta funcin difiere de la utilizacin del registro especial CURRENT TIMESTAMP


en que se genera un valor exclusivo para cada fila de una sentencia de insercin de
mltiples filas o en una sentencia de insercin con una seleccin completa.

El valor de indicacin de fecha y hora que forma parte del resultado de esta
funcin puede determinarse utilizando la funcin escalar TIMESTAMP con el
resultado de GENERATE_UNIQUE como argumento.

Ejemplos:
v Cree una tabla que incluya una columna que sea exclusiva para cada fila. Llene
esta columna utilizando la funcin GENERATE_UNIQUE. Tenga en cuenta que
la columna UNIQUE_ID tiene especificado FOR BIT DATA para identificar la
columna como una serie de caracteres de datos de bits.
CREATE TABLE EMP_UPDATE
(UNIQUE_ID CHAR(13) FOR BIT DATA,
EMPNO CHAR(6),
TEXT VARCHAR(1000))
INSERT INTO EMP_UPDATE
VALUES (GENERATE_UNIQUE(), 000020, Actualizar entrada...),
(GENERATE_UNIQUE(), 000050, Update entry...)

Esta tabla tendr un identificador exclusivo para cada fila siempre que la
columna UNIQUE_ID se establezca siempre utilizando GENERATE_UNIQUE.
Esto se puede realizar introduciendo un activador en la tabla.

352 Consulta de SQL - Volumen 1


GENERATE_UNIQUE

CREATE TRIGGER EMP_UPDATE_UNIQUE


NO CASCADE BEFORE INSERT ON EMP_UPDATE
REFERENCING NEW AS NEW_UPD
FOR EACH ROW
SNEW_UPD.UNIQUE_ID = GENERATE_UNIQUE()

Con este activador definido, la sentencia INSERT anterior se emitira sin la


primera columna, tal como se indica a continuacin.
INSERT INTO EMP_UPDATE (EMPNO, TEXT)
VALUES (000020, Actualizar entrada 1...),
(000050, Update entry 2...)

Puede devolverse la indicacin de fecha y hora (en UTC) para el momento en


que se ha aadido una fila a EMP_UPDATE utilizando:
SELECT TIMESTAMP (UNIQUE_ID), EMPNO, TEXT
FROM EMP_UPDATE

Por lo tanto, no hay necesidad de tener una columna de indicacin de fecha y


hora en la tabla para registrar el momento en que se ha insertado una fila.

Captulo 3. Funciones 353


GRAPHIC

GRAPHIC
De grfico a grfico:

 GRAPHIC ( expresin-grfica ) 
, entero

De carcter a grfico:

 GRAPHIC ( expresin-caracteres ) 

De fecha y hora a grfico:

 GRAPHIC ( expresin-fechahora ) 
, ISO
USA
EUR
JIS
LOCAL

El esquema es SYSIBM. El nombre de la funcin no puede especificarse como


nombre calificado si se utilizan palabras clave en la signatura de la funcin.

La funcin GRAPHIC devuelve una representacin de serie grfica de longitud fija


de:
v Una serie grfica, si el primer argumento es cualquier tipo de serie grfica
v Un valor de fecha y hora (slo para bases de datos Unicode), si el primer
argumento es una fecha, una hora o una indicacin de fecha y hora

En una base de datos Unicode, si un argumento proporcionado es una serie de


caracteres, se convertir a una serie grfica antes de que se ejecute la funcin.
Cuando la serie de salida se trunca, de forma que el ltimo carcter es un carcter
de sustitucin elevado, dicho carcter se convierte en un carcter en blanco
(X0020). No confe en este comportamiento, porque podra cambiar en los releases
futuros.

El resultado de la funcin es una serie grfica de longitud fija (tipo de datos


GRAPHIC). Si el primer argumento puede ser nulo, el resultado puede ser nulo; si
el primer argumento es nulo, el resultado es el valor nulo.
De grfico a grfico
expresin-grfica
Una expresin que devuelve un valor que es una serie grfica.
entero
Un valor entero que especifica el atributo de longitud del tipo de datos
GRAPHIC resultante. El valor debe estar entre 1 y 127. Si no se
especifica ningn valor, el atributo de longitud del resultado es igual al
atributo de longitud del primer argumento.
De carcter a grfico

354 Consulta de SQL - Volumen 1


GRAPHIC

expresin-caracteres
Una expresin cuyo valor debe ser de tipo de datos de serie de
caracteres distinto de LONG VARCHAR o CLOB y cuya longitud
mxima es de 16 336 bytes.

El atributo de longitud del resultado es igual al atributo de longitud del


argumento.
De fecha y hora a grfico
expresin-fechahora
Una expresin que sea uno de los tres tipos de datos siguientes:
fecha El resultado es la representacin de serie grfica de la fecha en
el formato especificado por el segundo argumento. La longitud
del resultado es 10. Se devuelve un error si se especifica el
segundo argumento y no es un valor vlido (SQLSTATE
42703).
hora El resultado es la representacin de serie grfica de la hora en
el formato especificado por el segundo argumento. La longitud
del resultado es 8. Se devuelve un error si se especifica el
segundo argumento y no es un valor vlido (SQLSTATE
42703).
indicacin de fecha y hora
El resultado es la representacin de serie grfica de la
indicacin de fecha y hora. La longitud del resultado es 26. El
segundo argumento no es aplicable y no se debe especificar
(SQLSTATE 42815).
La pgina de cdigos de la serie es la pgina de cdigos de la base de
datos en el servidor de aplicaciones.

Informacin relacionada:
v VARGRAPHIC en la pgina 465

Captulo 3. Funciones 355


HASHEDVALUE

HASHEDVALUE
 HASHEDVALUE ( nombre-columna ) 

El esquema es SYSIBM.

La funcin HASHEDVALUE devuelve el ndice del mapa de distribucin de la fila


que se obtiene al aplicar la funcin de particionamiento en el valor de la clave de
distribucin de la fila. Por ejemplo, si se utiliza en una clusula SELECT, devuelve
el ndice de mapa de distribucin de cada fila de la tabla que se ha utilizado para
formar el resultado de la sentencia SELECT.

El ndice del mapa de distribucin devuelto en las variables y las tablas de


transicin se deriva de los valores de transicin actuales de las columnas de claves
de distribucin. Por ejemplo, en un activador BEFORE INSERT, la funcin
devolver el ndice del mapa de distribucin proyectado que corresponda a los
valores actuales de las variables de transicin nuevas. No obstante, es posible que
los valores de las columnas de claves de distribucin se modifiquen mediante un
activador BEFORE INSERT subsiguiente. Por lo tanto, el ndice del mapa de
distribucin de la fila cuando se inserta en la base de datos puede ser distinto del
valor proyectado.

El argumento debe ser el nombre calificado o no calificado de una columna de una


tabla. La columna puede tener cualquier tipo de datos. (Esta funcin no puede
utilizarse como una funcin fuente cuando se crea una funcin definida por el
usuario. Como acepta cualquier tipo de datos como argumento, no es necesario
crear signaturas adicionales para dar soporte a los tipos diferenciados definidos
por el usuario). Si nombre-columna hace referencia a una columna de una vista, la
expresin de la vista para la columna debe hacer referencia a una columna de la
tabla base principal y la vista debe ser suprimible. Una expresin de tabla anidada
o comn sigue las mismas normas que una vista.

La fila (y la tabla) especfica para la que la funcin HASHEDVALUE devuelve el


ndice del mapa de distribucin se determina a partir del contexto de la sentencia
SQL que utiliza la funcin.

El tipo de datos del resultado es INTEGER en el rango de 0 a 4095. Para una tabla
que no tiene clave de distribucin, el resultado siempre es 0. Nunca se devuelve un
valor nulo. Puesto que se devuelve informacin a nivel de fila, los resultados son
los mismos, sin tener en cuenta las columnas que se especifican para la tabla.

La funcin HASHEDVALUE no puede utilizarse en tablas duplicadas, dentro de


restricciones de comprobacin ni en la definicin de columnas generadas
(SQLSTATE 42881).

Para compatibilidad con versiones anteriores a la Versin 8, el nombre de funcin


PARTITION puede sustituirse por HASHEDVALUE.

Ejemplo:
v Lista de nmeros de empleados (EMPNO) de la tabla EMPLOYEE para todas las
filas cuyo ndice de mapa de distribucin es 100.
SELECT EMPNO FROM EMPLOYEE
WHERE HASHEDVALUE(PHONENO) = 100

356 Consulta de SQL - Volumen 1


HASHEDVALUE

v Registrar el nmero de empleado y el ndice del mapa de distribucin


proyectado de la nueva fila en una tabla denominada EMPINSERTLOG2 para
cualquier insercin de empleados creando un activador BEFORE en la tabla
EMPLOYEE.
CREATE TRIGGER EMPINSLOGTRIG2
BEFORE INSERT ON EMPLOYEE
REFERENCING NEW AW NEWTABLE
FOR EACH ROW
INSERT INTO EMPINSERTLOG2
VALUES(NEWTABLE.EMPNO, HASHEDVALUE(NEWTABLE.EMPNO))

Informacin relacionada:
v Sentencia CREATE VIEW en Consulta de SQL, Volumen 2

Captulo 3. Funciones 357


HEX

HEX
 HEX ( expresin ) 

El esquema es SYSIBM.

La funcin HEX devuelve una representacin hexadecimal de un valor como una


serie de caracteres.

El argumento puede ser una expresin que sea un valor de cualquier tipo de datos
interno, con una longitud mxima de 16.336 bytes.

El resultado de la funcin es una serie de caracteres. Si el argumento puede ser


nulo, el resultado puede ser nulo; si el argumento es nulo, el resultado es el valor
nulo.

La pgina de cdigos es la pgina de cdigos de la base de datos.

El resultado es una serie de dgitos hexadecimales. Los dos primeros bytes


representan el primer byte del argumento, los dos siguientes el segundo byte del
argumento, etctera. Si el argumento es un valor de indicacin de fecha y hora o
un valor numrico el resultado es la representacin hexadecimal del formato
interno del argumento. La representacin hexadecimal que se devuelve puede ser
diferente segn el servidor de aplicaciones donde se ejecuta la funcin. Los casos
en que las diferencias pueden ser evidentes son:
v Los argumentos de serie de caracteres cuando se ejecuta la funcin HEX en un
cliente ASCII con un servidor EBCDIC o en un cliente EBCDIC con un servidor
ASCII.
v Los argumentos numricos (en algunos casos) cuando se ejecuta la funcin HEX
donde los sistemas cliente y servidor tienen distintas clasificaciones de bytes
para los valores numricos.

El tipo y la longitud del resultado varan basndose en el tipo y la longitud de los


argumentos de serie de caracteres.
v Serie de caracteres
Longitud fija no mayor que 127
- El resultado es una serie de caracteres de longitud fija el doble de la
longitud definida del argumento.
Longitud fija mayor que 127
- El resultado es una serie de caracteres de longitud variable el doble de la
longitud definida del argumento.
Longitud variable
- El resultado es una serie de caracteres de longitud variable con una
longitud mxima el doble de la longitud mxima definida del argumento.
v Serie grfica
Longitud fija no mayor que 63
- El resultado es una serie de caracteres de longitud fija cuatro veces la
longitud definida del argumento.
v Longitud fija mayor que 63
El resultado es una serie de caracteres de longitud variable cuatro veces la
longitud definida del argumento.

358 Consulta de SQL - Volumen 1


HEX

v Longitud variable
El resultado es una serie de caracteres de longitud variable con una longitud
mxima cuatro veces la longitud mxima definida del argumento.

Ejemplos:

Supongamos que utiliza un servidor de aplicaciones DB2 para AIX para los
ejemplos siguientes.
v Utilizando la tabla DEPARTMENT establezca la variable del lenguaje principal
HEX_MGRNO (char(12)) en la representacin hexadecimal del nmero del
director (MGRNO) para el departamento PLANNING (DEPTNAME).
SELECT HEX(MGRNO)
INTO :HEX_MGRNO
FROM DEPARTMENT
WHERE DEPTNAME = PLANNING

HEX_MGRNO se establecer en 303030303230 cuando se utilice la tabla de


ejemplo (el valor de caracteres es 000020).
v Supongamos que COL_1 es una columna con un tipo de datos de char(1) y un
valor de 'B'. La representacin hexadecimal de la letra 'B' es X'42'. HEX(COL_1)
devuelve una serie de dos bytes '42'.
v Supongamos que COL_3 es una columna con un tipo de datos de decimal(6,2) y
un valor de 40,1. Una serie de ocho bytes '0004010C' es el resultado de aplicar la
funcin HEX a la representacin interna del valor decimal 40,1.

Captulo 3. Funciones 359


HOUR

HOUR
 HOUR ( expresin ) 

El esquema es SYSIBM.

La funcin HOUR devuelve la parte correspondiente a la hora de un valor.

El argumento debe ser una hora, una indicacin de fecha y hora, una duracin de
la hora, una duracin de la indicacin de fecha y hora o una representacin de
serie de caracteres vlida de una hora o de una fecha y hora que no sea CLOB ni
LONG VARCHAR. En una base de datos Unicode, si un argumento proporcionado
es una serie grfica, se convertir a una serie de caracteres antes de que se ejecute
la funcin.

El resultado de la funcin es un entero grande. Si el argumento puede ser nulo, el


resultado puede ser nulo; si el argumento es nulo, el resultado es el valor nulo.

Las dems reglas dependen del tipo de datos del argumento:


v Si el argumento es una hora, una indicacin de fecha y hora o una
representacin de serie vlida de una hora o de una fecha y hora:
El resultado es la parte correspondiente a la hora del valor, que es un entero
entre 0 y 24.
v Si el argumento es una duracin de hora o una duracin de indicacin de fecha
y hora:
El resultado es la parte correspondiente a la hora del valor, que es un entero
entre 99 y 99. El resultado que no es cero tiene el mismo signo que el
argumento.

Ejemplo:

Utilizando la tabla de ejemplo CL_SCHED, seleccione todas las clases que


empiezan por la tarde.
SELECT * FROM CL_SCHED
WHERE HOUR(STARTING) BETWEEN 12 AND 17

360 Consulta de SQL - Volumen 1


IDENTITY_VAL_LOCAL

IDENTITY_VAL_LOCAL
 IDENTITY_VAL_LOCAL ( ) 

El esquema es SYSIBM.

La funcin IDENTITY_VAL_LOCAL es una funcin no determinista que devuelve


el valor asignado ms recientemente de una columna de identidad, donde la
asignacin se ha producido como resultado de una sentencia de insercin (INSERT)
de fila individual utilizando una clusula VALUES. La funcin no tiene parmetros
de entrada.

El resultado es un DECIMAL(31,0), independientemente del tipo de datos real de


la columna de identidad correspondiente.

El valor devuelto por la funcin es el valor asignado a la columna de identidad de


la tabla identificada en la sentencia INSERT de fila individual ms reciente. La
sentencia INSERT debe contener una clusula VALUES en una tabla que contenga
una columna de identidad. La sentencia INSERT tambin debe ejecutarse al mismo
nivel; es decir, el valor debe estar disponible localmente en el nivel al que se ha
asignado, hasta que se sustituya por el siguiente valor asignado. (Se inicia un nivel
nuevo cada vez que se invoca un activador o una rutina).

El valor asignado es un valor proporcionado por el usuario (si la columna de


identidad est definida como GENERATED BY DEFAULT) o un valor de identidad
generado por el gestor de bases de datos.

La funcin devuelve un valor nulo si no se ha emitido una sentencia INSERT de


fila individual con una clusula VALUES en el nivel de proceso actual para una
tabla que contiene una columna de identidad.

El resultado de la funcin no queda afectado por lo siguiente:


v Una sentencia INSERT de fila individual con una clusula VALUES para una
tabla sin columna de identidad
v Una sentencia INSERT de mltiples filas con una clusula VALUES
v Una sentencia INSERT con una seleccin completa
v Una sentencia ROLLBACK TO SAVEPOINT

Notas:
v Las expresiones de la clusula VALUES de una sentencia INSERT se evalan
antes que las asignaciones para las columnas de destino de la sentencia INSERT.
Por consiguiente, una invocacin de una funcin IDENTITY_VAL_LOCAL en la
clusula VALUES de una sentencia INSERT utilizar el valor asignado ms
recientemente de una columna de identidad de una sentencia INSERT anterior.
La funcin devuelve el valor nulo si no se ha ejecutado ninguna sentencia
INSERT de fila individual anterior con una clusula VALUES para una tabla que
contiene una columna de identidad dentro del mismo nivel que la funcin
IDENTITY_VAL_LOCAL.
v El valor de la columna de identidad de la tabla para la que se define el
activador puede determinarse dentro de un activador, haciendo referencia a la
variable de transicin activador para la columna de identidad.

Captulo 3. Funciones 361


IDENTITY_VAL_LOCAL

v El resultado de la invocacin de la funcin IDENTITY_VAL_LOCAL desde


dentro de la condicin activador de un activador de insercin es un valor nulo.
v Es posible que existan mltiples activadores de insercin anteriores o posteriores
para una tabla. En este caso, cada activador se procesa por separado y los
valores de identidad asignados por una accin activada no estn disponibles
para las dems acciones activadas utilizando la funcin
IDENTITY_VAL_LOCAL. Esto es vlido incluso aunque las mltiples acciones
activadas estn definidas conceptualmente al mismo nivel.
v Generalmente no es recomendable utilizar la funcin IDENTITY_VAL_LOCAL
en el cuerpo de un activador anterior (before) de insercin. El resultado de la
invocacin de la funcin IDENTITY_VAL_LOCAL desde dentro de la accin
activada de un activador de insercin anterior es el valor nulo. El valor de la
columna de identidad de la tabla para la que se ha definido el activador no se
puede obtener invocando la funcin IDENTITY_VAL_LOCAL en la accin
activada de un activador de insercin anterior. Sin embargo, el valor de la
columna de identidad puede obtenerse en la accin activada, haciendo referencia
a la variable de transicin activador para la columna de identidad.
v El resultado de invocar la funcin IDENTITY_VAL_LOCAL desde la accin
activada de un activador posterior (after) de insercin es el valor asignado a una
columna de identidad de la tabla identificada en la sentencia INSERT de fila
individual ms reciente invocada en la misma accin activada que tena una
clusula VALUES para una tabla que contena una columna de identidad. (Esto
se aplica a los activadores posteriores (after) de insercin FOR EACH ROW y
FOR EACH STATEMENT). Si una sentencia INSERT de una sola fila con una
clusula VALUES para la tabla que contiene una columna de identidad no se ha
ejecutado dentro de la misma accin activada antes de la invocacin de la
funcin IDENTITY_VAL_LOCAL, la funcin devolver un valor nulo.
v Dado que la funcin IDENTITY_VAL_LOCAL no es determinista, el resultado de
invocar esta funcin dentro de la sentencia SELECT de un cursor puede variar
para cada sentencia FETCH.
v El valor asignado es el valor realmente asignado a la columna de identidad (es
decir, el valor que se devolver en una sentencia SELECT subsiguiente). Este
valor no es necesariamente el valor proporcionado en la clusula VALUES de la
sentencia INSERT o un valor generado por el gestor de bases de datos. El valor
asignado puede ser un valor especificado en una sentencia de variable de
transicin SET, dentro del cuerpo de un activador de insercin anterior, para una
variable de transicin activador asociada con la columna de identidad.
v El valor devuelto por la funcin es imprevisible despus de una sentencia
INSERT de fila individual anmala con una clusula VALUES en una tabla con
una columna de identidad. Puede ser el valor que la funcin habra devuelto si
sta se hubiera invocado antes de la operacin de insercin anmala o bien el
valor que se hubiese asignado si la operacin de insercin hubiera sido
satisfactoria. El valor real devuelto depende del punto de anomala y, por
consiguiente, es imprevisible.

Ejemplos:

Ejemplo 1: Crear dos tablas, T1 y T2, cada una con una columna de identidad
llamada C1. Iniciar la secuencia de identificacin para la tabla T2 en 10. Insertar
algunos valores para C2 en T1.
CREATE TABLE T1
(C1 INTEGER GENERATED ALWAYS AS IDENTITY,
C2 INTEGER)

CREATE TABLE T2

362 Consulta de SQL - Volumen 1


IDENTITY_VAL_LOCAL

(C1 DECIMAL(15,0) GENERATED BY DEFAULT AS IDENTITY (START WITH 10),


C2 INTEGER)

INSERT INTO T1 (C2) VALUES (5)

INSERT INTO T1 (C2) VALUES (6)

SELECT * FROM T1

Esta consulta devuelve:


C1 C2
----------- -----------
1 5
2 6

Insertar una nica fila en la tabla T2, donde la columna C2 obtiene un valor de la
funcin IDENTITY_VAL_LOCAL.
INSERT INTO T2 (C2) VALUES (IDENTITY_VAL_LOCAL())

SELECT * FROM T2

Esta consulta devuelve:


C1 C2
----------------- -----------
10. 2

Ejemplo 2: En un entorno anidado que incluya un activador, utilice la funcin


IDENTITY_VAL_LOCAL para recuperar el valor de identidad asignado en un nivel
determinado, incluso aunque puedan haber valores de identidad asignados en
niveles inferiores. Supongamos que existen tres tablas, EMPLOYEE, EMP_ACT y
ACCT_LOG. Hay un activador de insercin posterior definido en EMPLOYEE que
produce inserciones adicionales en las tablas EMP_ACT y ACCT_LOG.
CREATE TABLE EMPLOYEE
(EMPNO SMALLINT GENERATED ALWAYS AS IDENTITY (START WITH 1000),
NAME CHAR(30),
SALARY DECIMAL(5,2),
DEPTNO SMALLINT)

CREATE TABLE EMP_ACT


(ACNT_NUM SMALLINT GENERATED ALWAYS AS IDENTITY (START WITH 1),
EMPNO SMALLINT)

CREATE TABLE ACCT_LOG


(ID SMALLINT GENERATED ALWAYS AS IDENTITY (START WITH 100),
ACNT_NUM SMALLINT,
EMPNO SMALLINT)

CREATE TRIGGER NEW_HIRE


AFTER INSERT ON EMPLOYEE
REFERENCING NEW AS NEW_EMP
FOR EACH ROW
BEGIN ATOMIC
INSERT INTO EMP_ACT (EMPNO) VALUES (NEW_EMP.EMPNO);
INSERT INTO ACCT_LOG (ACNT_NUM, EMPNO)
VALUES (IDENTITY_VAL_LOCAL(), NEW_EMP.EMPNO);
END

La primera sentencia INSERT activada inserta una fila en la tabla EMP_ACT. Esta
sentencia utiliza una variable de transicin activador para la columna EMPNO de
la tabla EMPLOYEE para indicar que el valor de identidad para la columna
EMPNO de la tabla EMPLOYEE debe copiarse en la columna EMPNO de la tabla
EMP_ACT. La funcin IDENTITY_VAL_LOCAL no se ha podido utilizar para
Captulo 3. Funciones 363
IDENTITY_VAL_LOCAL

obtener el valor asignado a la columna EMPNO de la tabla EMPLOYEE, ya que no


se ha emitido una sentencia INSERT en este nivel de anidamiento. Si se hubiera
invocado la funcin IDENTITY_VAL_LOCAL en la clusula VALUES de la
sentencia INSERT para la tabla EMP_ACT, se hubiera devuelto un valor nulo. La
sentencia INSERT para la tabla EMP_ACT tambin hace que se genere un nuevo
valor de identidad para la columna ACNT_NUM.

La segunda sentencia INSERT activada inserta una fila en la tabla ACCT_LOG.


Esta sentencia invoca la funcin IDENTITY_VAL_LOCAL para indicar que el valor
de identidad asignado a la columna ACNT_NUM de la tabla EMP_ACT en la
sentencia INSERT anterior de la accin activada debe copiarse en la columna
ACNT_NUM de la tabla ACCT_LOG. A la columna EMPNO se le asigna el mismo
valor que a la columna EMPNO de la tabla EMPLOYEE.

Despus de que se hayan procesado la sentencia INSERT siguiente y todas las


acciones activadas:
INSERT INTO EMPLOYEE (NAME, SALARY, DEPTNO)
VALUES (Rupert, 989.99, 50)

el contenido de las tres tablas ser el siguiente:


SELECT EMPNO, SUBSTR(NAME,1,10) AS NAME, SALARY, DEPTNO
FROM EMPLOYEE

EMPNO NAME SALARY DEPTNO


------ ---------- ------- ------
1000 Rupert 989.99 50

SELECT ACNT_NUM, EMPNO


FROM EMP_ACT

ACNT_NUM EMPNO
-------- ------
1 1000

SELECT * FROM ACCT_LOG

ID ACNT_NUM EMPNO
------ -------- ------
100 1 1000

El resultado de la funcin IDENTITY_VAL_LOCAL es el valor asignado ms


recientemente para una columna de identidad en el mismo nivel de anidamiento.
Despus de procesar la sentencia INSERT original y todas las acciones activadas, la
funcin IDENTITY_VAL_LOCAL devuelve un valor de 1000, porque ste es el
valor asignado a la columna EMPNO de la tabla EMPLOYEE.

Ejemplos relacionados:
v fnuse.out -- HOW TO USE BUILT-IN SQL FUNCTIONS (C)
v fnuse.sqc -- How to use built-in SQL functions (C)
v fnuse.out -- HOW TO USE FUNCTIONS (C++)
v fnuse.sqC -- How to use built-in SQL functions (C++)

364 Consulta de SQL - Volumen 1


INSERT

INSERT
 INSERT ( expresin1 , expresin2 , expresin3 , expresin4 ) 

El esquema es SYSFUN.

Devuelve una serie en la que se han suprimido expresin3 bytes de expresin1,


empezando en la expresin2 y donde se ha insertado la expresin4 en la expresin1
empezando en la expresin2. Si la longitud de la serie del resultado excede el
mximo para el tipo de retorno, se devuelve un error (SQLSTATE 38552).

El primer argumento es una serie de caracteres o un tipo de serie binaria. En una


base de datos Unicode, si un argumento proporcionado es una serie grfica, se
convertir a una serie de caracteres antes de que se ejecute la funcin. El segundo
argumento y el tercero deben ser un valor numrico con un tipo de datos
SMALLINT o INTEGER. Si el primer argumento es una serie de caracteres,
entonces el cuarto argumento tambin ha de ser una serie de caracteres. Si el
primer argumento es una serie binaria, entonces el cuarto argumento tambin ha
de ser una serie binaria. Para un VARCHAR la longitud mxima es de 4.000 bytes
y para un CLOB o serie binaria la longitud mxima es de 1.048.576 bytes. Para el
primer y cuarto argumentos, CHAR se convierte a VARCHAR y LONG VARCHAR
a CLOB(1M); para el segundo y tercer argumentos, SMALLINT se convierte a
INTEGER para que lo procese la funcin.

El resultado se basa en los tipos de argumentos tal como sigue:


v VARCHAR(4000) si el primer argumento y el cuarto son VARCHAR (no exceden
de 4.000 bytes) o CHAR
v CLOB(1M) si el primer argumento o el cuarto es CLOB o LONG VARCHAR
v BLOB(1M) si el primer argumento y el cuarto son BLOB.

El resultado puede ser nulo; si cualquier argumento es nulo, el resultado es el


valor nulo.

Ejemplo:
v Suprima un carcter de la palabra DINING e inserte VID, empezando en el
tercer carcter.
VALUES CHAR(INSERT(DINING, 3, 1, VID), 10)

Este ejemplo devuelve lo siguiente:


1
----------
DIVIDING
Tal como se menciona, el resultado de la funcin INSERT es VARCHAR(4000).
En este ejemplo, se ha utilizado la funcin CHAR para limitar la salida de
INSERT a 10 bytes. La ubicacin inicial de una serie en particular se puede
encontrar utilizando la funcin LOCATE.

Informacin relacionada:
v LOCATE en la pgina 375

Captulo 3. Funciones 365


INTEGER

INTEGER
 INTEGER ( expresin-numrica ) 
INT expresin-caracteres
expresin-fecha
expresin-hora

El esquema es SYSIBM.

La funcin INTEGER devuelve una representacin entera de un nmero, serie de


caracteres, fecha u hora en forma de una constante entera. En una base de datos
Unicode, si un argumento proporcionado es una serie grfica, se convertir a una
serie de caracteres antes de que se ejecute la funcin.
expresin-numrica
Una expresin que devuelve un valor de cualquier tipo de datos numrico
interno.
Si el argumento es una expresin-numrica, el resultado es el mismo nmero que
sera si el argumento se asignase a una columna o variable de enteros grandes.
Si la parte correspondiente a los enteros del argumento no est dentro del
rango de enteros, se produce un error. La parte correspondiente a los decimales
del argumento se trunca si est presente.
expresin-caracteres
Una expresin que devuelve un valor de serie de caracteres de longitud no
mayor que la longitud mxima de una constante de caracteres. Se eliminan los
blancos iniciales y de cola y la serie resultante debe ajustarse a las reglas para
la formacin de una constante de enteros SQL (SQLSTATE 22018). La serie de
caracteres no puede ser una serie larga.
Si el argumento es una expresin-caracteres, el resultado es el mismo nmero
que sera si la constante de enteros correspondiente se asignase a una columna
o variable de enteros grandes.
expresin-fecha
Una expresin que devuelve un valor del tipo de datos DATE. El resultado es
un valor INTEGER que representa la fecha como aaaammdd.
expresin-hora
Una expresin que devuelve un valor del tipo de datos TIME. El resultado es
un valor INTEGER que representa la hora como hhmmss.

El resultado de la funcin es un entero grande. Si el argumento puede ser nulo, el


resultado puede ser nulo; si el argumento es nulo, el resultado es el valor nulo.

Ejemplos:
v Utilizando la tabla EMPLOYEE, seleccione una lista que contenga el salario
(SALARY) dividido por el nivel de formacin (EDLEVEL). Trunque cualquier
decimal en el clculo. La lista tambin debe contener los valores utilizados en el
clculo y el nmero de empleado (EMPNO). La lista debe estar en orden
descendente del valor calculado.
SELECT INTEGER (SALARY / EDLEVEL), SALARY, EDLEVEL, EMPNO
FROM EMPLOYEE
ORDER BY 1 DESC
v Utilizando la tabla EMPLOYEE, seleccione la columna EMPNO en el formato de
enteros para procesarla ms en la aplicacin.

366 Consulta de SQL - Volumen 1


INTEGER

SELECT INTEGER(EMPNO) FROM EMPLOYEE


v Supongamos que la columna BIRTHDATE (fecha) tiene un valor interno
equivalente a 1964-07-20.
INTEGER(BIRTHDATE)

da como resultado el valor 19 640 720.


v Supongamos que la columna STARTTIME (hora) tiene un valor interno
equivalente a 12:03:04.
INTEGER(STARTTIME)

da como resultado el valor 120 304.

Captulo 3. Funciones 367


JULIAN_DAY

JULIAN_DAY
 JULIAN_DAY ( expresin ) 

El esquema es SYSFUN.

Devuelve una representacin de un valor entero del nmero de das desde el uno
de enero de 4713 A.C. (la fecha de inicio del calendario juliano) hasta el valor de
fecha especificado en el argumento.

El argumento debe ser una fecha, una indicacin de fecha y hora o una
representacin de serie de caracteres vlida de una fecha o de una indicacin de
fecha y hora que no sea CLOB ni LONG VARCHAR. En una base de datos
Unicode, si un argumento proporcionado es una serie grfica, se convertir a una
serie de caracteres antes de que se ejecute la funcin.

El resultado de la funcin es INTEGER. El resultado puede ser nulo; si el


argumento es nulo, el resultado es el valor nulo.

368 Consulta de SQL - Volumen 1


LCASE o LOWER

LCASE o LOWER
 LCASE ( expresin-serie ) 
LOWER

El esquema es SYSIBM. (La versin SYSFUN de esta funcin contina estando


disponible con el soporte para los argumentos LONG VARCHAR y CLOB).

La funcin LCASE o LOWER devuelve una serie en la que todos los caracteres
SBCS se han convertido a minsculas. Es decir, los caracteres de la A a la Z se
convertirn en los caracteres de la a a la z y el resto de caracteres se convertirn en
sus minsculas equivalentes, si existen. Por ejemplo, en la pgina de cdigos 850,
se correlaciona con . Si la longitud del punto de cdigo del carcter del resultado
no es la misma que la longitud de punto de cdigo del carcter fuente, este ltimo
no se convierte. Puesto que no se convierten todos los caracteres,
LCASE(UCASE(expresin-serie)) no devuelve necesariamente el mismo resultado
que LCASE(expresin-serie).

El argumento debe ser una expresin cuyo valor sea un tipo de datos CHAR o
VARCHAR.

El resultado de la funcin tiene el mismo tipo de datos y el mismo atributo de


longitud que el argumento. Si el argumento puede ser nulo, el resultado puede ser
nulo; si el argumento es nulo, el resultado es el valor nulo.

En una base de datos Unicode, si un argumento proporcionado es una serie


grfica, se convertir a una serie de caracteres antes de que se ejecute la funcin.

Ejemplo:

Asegrese de que los caracteres del valor de la columna JOB de la tabla


EMPLOYEE se devuelvan en minsculas.
SELECT LCASE(JOB)
FROM EMPLOYEE
WHERE EMPNO = 000020;

El resultado es el valor director.

Informacin relacionada:
v LCASE (esquema SYSFUN) en la pgina 370

Captulo 3. Funciones 369


LCASE (esquema SYSFUN)

LCASE (esquema SYSFUN)


 LCASE ( expresin ) 

El esquema es SYSFUN.

Devuelve una serie en la que todos los caracteres de la A a la Z se han convertido


en caracteres de la a a la z (caracteres con signos diacrticos no convertidos). Tenga
en cuenta que, por lo tanto, LCASE(UCASE(serie)) no devolver necesariamente el
mismo resultado que LCASE(serie).

El argumento puede ser de cualquier tipo de serie de caracteres interno. Para un


VARCHAR la longitud mxima es de 4.000 bytes y para un CLOB la longitud
mxima es de 1.048.576 bytes.

El resultado de la funcin es:


v VARCHAR(4000) si el argumento es VARCHAR (no excede de 4.000 bytes) o
CHAR
v CLOB(1 M) si el argumento es CLOB o LONG VARCHAR

El resultado puede ser nulo; si el argumento es nulo, el resultado es el valor nulo.

En una base de datos Unicode, si un argumento proporcionado es una serie


grfica, se convertir a una serie de caracteres antes de que se ejecute la funcin.

370 Consulta de SQL - Volumen 1


LEFT

LEFT
 LEFT ( expresin1 , expresin2 ) 

El esquema es SYSFUN.

Devuelve una serie que consta de los expresin2 bytes situados ms a la izquierda
de expresin1. El valor expresin1 se rellena con blancos por la derecha para que la
subserie especificada de expresin1 exista siempre.

El primer argumento es una serie de caracteres o un tipo de serie binaria. En una


base de datos Unicode, si un argumento proporcionado es una serie grfica, se
convertir a una serie de caracteres antes de que se ejecute la funcin. Para un
VARCHAR la longitud mxima es de 4.000 bytes y para un CLOB o serie binaria la
longitud mxima es de 1.048.576 bytes. El segundo argumento debe ser del tipo de
datos INTEGER o SMALLINT.

El resultado de la funcin es:


v VARCHAR(4000) si el argumento es VARCHAR (no excede de 4.000 bytes) o
CHAR
v CLOB(1 M) si el argumento es CLOB o LONG VARCHAR
v BLOB(1 M) si el argumento es BLOB.

El resultado puede ser nulo; si cualquier argumento es nulo, el resultado es el


valor nulo.

Captulo 3. Funciones 371


LENGTH

LENGTH
 LENGTH ( expresin ) 
, CODEUNITS16
CODEUNITS32
OCTETS

El esquema es SYSIBM.

La funcin LENGTH devuelve la longitud de la expresin en la unidad de la serie


implcita o explcita.
expresin
Expresin que devuelve un valor que es un tipo de datos incorporado. Si
expresin puede tener un valor nulo, el resultado puede ser nulo; si expresin
tiene un valor nulo, el resultado es el valor nulo.
CODEUNITS16, CODEUNITS32, u OCTETS
Especifica la unidad de la serie del resultado. CODEUNITS16 especifica que el
resultado debe expresarse en unidades de cdigo UTF-16 de 16 bits.
CODEUNITS32 especifica que el resultado debe expresarse en unidades de
cdigo UTF-32 de 32 bits. OCTETS especifica que el resultado debe expresarse
en bytes.
Si una unidad de la serie se especifica de forma explcita, y si la expresin no
son datos de serie, se devuelve un error (SQLSTATE 428GC). Si la unidad de la
serie se especifica como CODEUNITS16 o CODEUNITS32 y la expresin es una
serie binaria o datos de bits, se devuelve un error (SQLSTATE 428GC). Si la
unidad de la serie se especifica como OCTETS y la expresin es una serie
binaria, se devuelve un error (SQLSTATE 42815). Para obtener ms informacin
acerca de CODEUNITS16, CODEUNITS32 y OCTETS, consulte Unidades de
serie en funciones incorporadas en Series de caracteres.

Si la unidad de la serie no se especifica de forma explcita, el tipo de datos del


resultado determina la unidad que se utiliza. Si el resultado son datos de grfico,
el valor devuelto especifica la longitud en unidades de 2 bytes. En caso contrario,
el valor devuelto especifica la longitud en bytes.

El resultado de la funcin es un entero grande. Si el argumento puede ser nulo, el


resultado puede ser nulo; si el argumento es nulo, el resultado es el valor nulo.

La longitud de las series de caracteres y de grficos incluye espacios en blanco


finales. La longitud de las series binarias incluye ceros binarios. La longitud de las
series de longitud variable es la longitud real y no la longitud mxima. La longitud
de todos los dems valores es el nmero de bytes utilizados para representar el
valor:
v 2 para entero pequeo
v 4 para entero grande
v (p/2)+1 para nmeros decimales con una precisin p
v La longitud de la serie para series binarias
v La longitud de la serie para series de caracteres
v 4 para coma flotante de precisin simple
v 8 para coma flotante de precisin doble
v 4 para fecha

372 Consulta de SQL - Volumen 1


LENGTH

v 3 para hora
v 10 para fecha y hora

Ejemplos:
v Supongamos que la variable de lenguaje principal es una serie de caracteres de
longitud variable cuyo valor es 895 Don Mills Road.
LENGTH(:ADDRESS)

devuelve el valor 18.


v Supongamos que START_DATE es una columna de tipo DATE.
LENGTH(START_DATE)

devuelve el valor 4.
v LENGTH(CHAR(START_DATE, EUR))

devuelve el valor 10.


v Los ejemplos siguientes funcionan con la serie Unicode &N~AB, siendo & el
carcter de clave G de smbolo musical y ~ el carcter de tilde de combinacin.
A continuacin se muestra esta cadena en distintos formatos de codificacin
Unicode:

& N ~ A B
UTF-8 X'F09D849E' X'4E' X'CC83' X'41' X'42'
UTF-16BE X'D834DD1E' X'004E' X'0303' X'0041' X'0042'
UTF-32BE X'0001D11E' X'0000004E' X'00000303' X'00000041' X'00000042'

Supongamos que la variable UTF8_VAR contiene la representacin UTF-8 de la


serie.
SELECT LENGTH(UTF8_VAR, CODEUNITS16),
LENGTH(UTF8_VAR, CODEUNITS32),
LENGTH(UTF8_VAR, OCTETS)
FROM SYSIBM.SYSDUMMY1

devuelve los valores 6, 5 y 9, respectivamente.


Supongamos que la variable UTF16_VAR contiene la representacin UTF-16BE
de la serie.
SELECT LENGTH(UTF16_VAR, CODEUNITS16),
LENGTH(UTF16_VAR, CODEUNITS32),
LENGTH(UTF16_VAR, OCTETS)
FROM SYSIBM.SYSDUMMY1

devuelve los valores 6, 5 y 12, respectivamente.

Informacin relacionada:
v Series de caracteres en la pgina 91
v CHARACTER_LENGTH en la pgina 313
v OCTET_LENGTH en la pgina 394

Captulo 3. Funciones 373


LN

LN
 LN ( expresin ) 

El esquema es SYSFUN.

Devuelve el logaritmo natural del argumento (igual que LOG).

El argumento puede ser de cualquier tipo de datos interno. Se convierte a un


nmero de coma flotante de precisin doble para que lo procese la funcin.

El resultado de la funcin es un nmero de coma flotante de precisin doble. El


resultado puede ser nulo; si el argumento es nulo, el resultado es el valor nulo.

374 Consulta de SQL - Volumen 1


LOCATE

LOCATE
 LOCATE ( serie-bsqueda , serie-fuente ) 
, inicio , CODEUNITS16
CODEUNITS32
OCTETS

El esquema es SYSIBM. La versin SYSFUN de la funcin LOCATE continua


estando disponible.

La funcin LOCATE devuelve la posicin inicial de la primera aparicin de una


serie (denominada serie-bsqueda) dentro de otra serie (denominada serie-fuente). Si
el argumento serie-bsqueda no se encuentra y ningn argumento es nulo, el
resultado es cero. Si el argumento serie-bsqueda se encuentra, el resultado es un
nmero de 1 la longitud real del argumento serie-fuente. Si se especifica el
argumento opcional inicio, ste indica la posicin del carcter en el argumento
serie-fuente en el que debe iniciarse la bsqueda. Puede especificarse una unidad de
la serie opcional para indicar en qu unidades se expresan el argumento inicio y el
resultado de la funcin.

Si el argumento serie-bsqueda tiene una longitud cero, el resultado devuelto por la


funcin es 1. En caso contrario, si la longitud del argumento serie-fuente es cero, el
resultado devuelto por la funcin es 0. En otro caso:
v Si el valor del argumento serie-bsqueda es igual a una longitud idntica de
subserie de posiciones contiguas dentro del valor de serie-bsqueda, el resultado
que devuelve la funcin es la posicin inicial de la subserie de este tipo dentro
del valor serie-fuente.
v De lo contrario, el resultado que devuelve la funcin es 0.
serie-bsqueda
Expresin que especifica la serie que es objeto de la bsqueda. La expresin
debe devolver un valor que se encuentre en un tipo de datos de serie de
caracteres incorporado, un tipo de datos de serie grfica o un tipo de datos de
serie binaria con una longitud real que no sea superior a 4000 bytes. Ningn
elemento de la expresin puede ser de tipo LONG VARCHAR, CLOB, LONG
VARGRAPHIC ni DBCLOB. Adems, no puede ser una variable de referencia a
archivos BLOB. La expresin puede especificarse mediante lo siguiente:
v Una constante
v Un registro especial
v Una variable del lenguaje principal
v Una funcin escalar cuyos operandos seas cualquiera de los anteriores
v Una expresin que concatene (mediante CONCAT o ||) cualquiera de los
elementos anteriores
v Un parmetro de procedimiento SQL
Estas normas son parecidas a las que se describen para expresin-patrn para el
predicado LIKE.
serie-fuente
Expresin que especifica la serie en la que debe realizarse la bsqueda. La
expresin debe devolver un valor que se encuentre en un tipo de datos de
serie de caracteres incorporado, un tipo de datos de serie grfica o un tipo de
datos de serie binaria. La expresin puede especificarse mediante lo siguiente:
v Una constante

Captulo 3. Funciones 375


LOCATE

v Un registro especial
v Una variable del lenguaje principal (incluida una variable localizadora o una
variable de referencia de archivo)
v Una funcin escalar
v Un localizador de objeto grande
v Un nombre de columna
v Una expresin que concatene (mediante CONCAT o ||) cualquiera de los
elementos anteriores
inicio
Expresin que especifica la posicin entro de serie-fuente en la que debe
iniciarse la bsqueda. La expresin debe ser un entero que sea mayor o igual
que cero. Si se especifica inicio, la funcin LOCATE es parecida a la siguiente:
POSITION(serie-bsqueda,
SUBSTRING(serie-fuente, inicio,
unidad-serie),
unidad-serie) + inicio - 1

donde unidad-serie es CODEUNITS16, CODEUNTIS32 u OCTETS.

Si no se especifica inicio, la bsqueda empieza en la primera posicin de la


serie fuente, y la funcin LOCATE es parecida a la siguiente:
POSITION(serie-bsqueda, serie-fuente, unidad-serie)
CODEUNITS16, CODEUNITS32, u OCTETS
Especifica la unidad de la serie de inicio y del resultado. CODEUNITS16
especifica que inicio y el resultado deben expresarse en unidades de cdigo
UTF-16 de 16 bits. CODEUNITS32 especifica que inicio y el resultado deben
expresarse en unidades de cdigo UTF-32 de 32 bits. OCTETS especifica que
inicio y el resultado deben expresarse en bytes.
Si una unidad de la serie se especifica como CODEUNITS16 o CODEUNITS32,
y serie-bsqueda o serie-fuente son una serie binaria o datos de bits, se devuelve
un error (SQLSTATE 428GC). Si se especifica una unidad de la serie como
OCTETS, serie-bsqueda se convierte en la pgina de cdigos de la serie-fuente si
tiene una pgina de cdigos distinta. En este caso la operacin se realiza en la
pgina de cdigos de la serie-fuente. Si se especifica una unidad de la serie
como OCTETS y serie-bsqueda y serie-fuente son series binarias, se devuelve un
error (SQLSTATE 42815).
Si la unidad de la serie no se especifica de forma explcita, el tipo de datos del
resultado determina la unidad que se utiliza. Si el resultado son datos grficos,
inicio y la posicin devuelta se expresan en unidades de dos bytes; en caso
contrario, se expresan en bytes.
Para obtener ms informacin acerca de CODEUNITS16, CODEUNITS32 y
OCTETS, consulte Unidades de serie en funciones incorporadas en Series de
caracteres.

El primer y segundo argumento deben tener tipos de serie compatibles. Para


obtener ms informacin sobre la compatibilidad, consulte Reglas para
conversiones de series.

El resultado de la funcin es un entero grande. Si cualquiera de los argumentos


puede ser nulo, el resultado puede ser nulo; si alguno de los argumentos es nulo,
el resultado es el valor NULL.

376 Consulta de SQL - Volumen 1


LOCATE

Ejemplos:
v Buscar la ubicacin de la primera aparicin del carcter 'N' en la serie 'DINING'.
SELECT LOCATE(N, DINING)
FROM SYSIBM.SYSDUMMY1

El resultado es el valor 3.
v Para todas las filas de la tabla denominada IN_TRAY, seleccionar la columna
RECEIVED, la columna SUBJECT y la posicin de inicio de la serie 'GOOD'
dentro de la columna NOTE_TEXT.
SELECT RECEIVED, SUBJECT, LOCATE(GOOD, NOTE_TEXT)
FROM IN_TRAY
WHERE LOCATE(GOOD, NOTE_TEXT) <> 0
v Localizar el carcter '' en la serie 'Jrgen lives on Hegelstrae', y definir la
variable de lenguaje principal LOCATION con la posicin, segn se mide en
unidades CODEUNITS32, dentro de la serie.
SET :LOCATION = LOCATE(, Jrgen lives on Hegelstrae, 1, CODEUNITS32)

El valor de la variable de lenguaje principal LOCATION se establece en 27.


v Localizar el carcter '' en la serie 'Jrgen lives on Hegelstrae', y establecer la
variable de lenguaje principal LOCATION con la posicin, segn se mide en
unidades CODEUNITS16, dentro de la serie.
SET :LOCATION = LOCATE(, Jrgen lives on Hegelstrae, 1, CODEUNITS16)

El valor de la variable de lenguaje principal LOCATION se establece en 27.


v Localizar el carcter '' en la serie 'Jrgen lives on Hegelstrae', y definir la
variable de lenguaje principal LOCATION con la posicin, segn se mide en
OCTETS, dentro de la serie.
SET :LOCATION = LOCATE(, Jrgen lives on Hegelstrae, 1, OCTETS)

El valor de la variable de lenguaje principal LOCATION se establece en 28.


v Los ejemplos siguientes funcionan con la serie Unicode &N~AB, siendo & el
carcter de clave G de smbolo musical y ~ el carcter de tilde de combinacin.
A continuacin se muestra esta cadena en distintos formatos de codificacin
Unicode:

& N ~ A B
UTF-8 X'F09D849E' X'4E' X'CC83' X'41' X'42'
UTF-16BE X'D834DD1E' X'004E' X'0303' X'0041' X'0042'

Supongamos que la variable UTF8_VAR contiene la representacin UTF-8 de la


serie.
SELECT LOCATE(~, UTF8_VAR, CODEUNITS16),
LOCATE(~, UTF8_VAR, CODEUNITS32),
LOCATE(~, UTF8_VAR, OCTETS)
FROM SYSIBM.SYSDUMMY1

devuelve los valores 4, 3 y 6, respectivamente.


Supongamos que la variable UTF16_VAR contiene la representacin UTF-16BE
de la serie.
SELECT LOCATE(~, UTF16_VAR, CODEUNITS16),
LOCATE(~, UTF16_VAR, CODEUNITS32),
LOCATE(~, UTF16_VAR, OCTETS)
FROM SYSIBM.SYSDUMMY1

Captulo 3. Funciones 377


LOCATE

devuelve los valores 4, 3 y 7, respectivamente.

Informacin relacionada:
v Series de caracteres en la pgina 91
v POSITION en la pgina 395
v Reglas para la conversin de series en la pgina 133

378 Consulta de SQL - Volumen 1


LOG

LOG
 LOG ( expresin ) 

El esquema es SYSFUN.

Devuelve el logaritmo natural del argumento (igual que LN).

El argumento puede ser de cualquier tipo de datos interno. Se convierte a un


nmero de coma flotante de precisin doble para que lo procese la funcin.

El resultado de la funcin es un nmero de coma flotante de precisin doble. El


resultado puede ser nulo; si el argumento es nulo, el resultado es el valor nulo.

Captulo 3. Funciones 379


LOG10

LOG10
 LOG10 ( expresin ) 

El esquema es SYSFUN.

Devuelve el logaritmo de base 10 del argumento.

El argumento puede ser de cualquier tipo numrico interno. Se convierte a un


nmero de coma flotante de precisin doble para que lo procese la funcin.

El resultado de la funcin es un nmero de coma flotante de precisin doble. El


resultado puede ser nulo; si el argumento es nulo, el resultado es el valor nulo.

380 Consulta de SQL - Volumen 1


LONG_VARCHAR

LONG_VARCHAR
 LONG_VARCHAR ( expresin-serie-caracteres ) 

El esquema es SYSIBM.

La funcin LONG_VARCHAR devuelve una representacin LONG VARCHAR de


un tipo de datos de serie de caracteres. En una base de datos Unicode, si un
argumento proporcionado es una serie grfica, se convertir a una serie de
caracteres antes de que se ejecute la funcin.
expresin-serie-caracteres
Una expresin que devuelve un valor que es una serie de caracteres con una
longitud mxima de 32 700 bytes.

El resultado de la funcin es LONG VARCHAR. Si el argumento puede ser nulo, el


resultado puede ser nulo; si el argumento es nulo, el resultado es el valor nulo.

Captulo 3. Funciones 381


LONG_VARGRAPHIC

LONG_VARGRAPHIC
 LONG_VARGRAPHIC ( expresin-grfica ) 

El esquema es SYSIBM.

La funcin LONG_VARGRAPHIC devuelve una representacin LONG


VARGRAPHIC de una serie de caracteres de doble byte.
expresin-grfica
Una expresin que devuelve un valor que es una serie grfica con una longitud
mxima de 16 350 caracteres de doble byte.

El resultado de la funcin es LONG VARGRAPHIC. Si el argumento puede ser


nulo, el resultado puede ser nulo; si el argumento es nulo, el resultado es el valor
nulo.

382 Consulta de SQL - Volumen 1


LTRIM

LTRIM
 LTRIM ( expresin-serie ) 

El esquema es SYSIBM. (La versin SYSFUN de esta funcin contina estando


disponible con el soporte para los argumentos LONG VARCHAR y CLOB).

La funcin LTRIM elimina los blancos del principio de la expresin-serie.

El argumento puede ser un tipo de datos CHAR, VARCHAR, GRAPHIC o


VARGRAPHIC.
v Si el argumento es una serie grfica de una base de datos DBCS o EUC, se
eliminan los blancos de doble byte iniciales.
v Si el argumento es una serie grfica de una base de datos Unicode, se eliminan
los blancos UCS-2 iniciales.
v De lo contrario, se eliminan los blancos de un solo byte iniciales.

El tipo de datos del resultado de la funcin es:


v VARCHAR si el tipo de datos de expresin-serie es VARCHAR o CHAR
v VARGRAPHIC si el tipo de datos de expresin-serie es VARGRAPHIC o
GRAPHIC

El parmetro de longitud del tipo devuelto es el mismo que el parmetro de


longitud del tipo de datos del argumento.

La longitud real del resultado para las series de caracteres es la de expresin-serie


menos el nmero de bytes eliminados debido a caracteres en blanco. La longitud
real del resultado para series grficas es la longitud (en nmero de caracteres de
doble byte) de expresin-serie menos el nmero de caracteres en blanco de doble
byte eliminados. Si elimina todos los caracteres se obtiene una serie vaca de
longitud variable (longitud de cero).

Si el argumento puede ser nulo, el resultado puede ser nulo; si el argumento es


nulo, el resultado es el valor nulo.

Ejemplo:

Supongamos que la variable del lenguaje principal HELLO est definida como
CHAR(9) y tiene el valor de Hola.
VALUES LTRIM(:HELLO)

El resultado es Hola.

Informacin relacionada:
v LTRIM (esquema SYSFUN) en la pgina 384

Captulo 3. Funciones 383


LTRIM (esquema SYSFUN)

LTRIM (esquema SYSFUN)


 LTRIM ( expresin ) 

El esquema es SYSFUN.

Devuelve los caracteres del argumento con los blancos iniciales eliminados.

El argumento puede ser de cualquier tipo de serie de caracteres interno. Para un


VARCHAR la longitud mxima es de 4.000 bytes y para un CLOB la longitud
mxima es de 1.048.576 bytes.

El resultado de la funcin es:


v VARCHAR(4000) si el argumento es VARCHAR (no excede de 4.000 bytes) o
CHAR
v CLOB(1 M) si el argumento es CLOB o LONG VARCHAR.

El resultado puede ser nulo; si el argumento es nulo, el resultado es el valor nulo.

384 Consulta de SQL - Volumen 1


MICROSECOND

MICROSECOND
 MICROSECOND ( expresin ) 

El esquema es SYSIBM.

La funcin MICROSECOND devuelve la parte correspondiente a los


microsegundos de un valor.

El argumento debe ser una indicacin de fecha y hora, una duracin de la


indicacin de fecha y hora o una representacin de serie de caracteres vlida de
una indicacin de fecha y hora que no sea CLOB ni LONG VARCHAR. En una
base de datos Unicode, si un argumento proporcionado es una serie grfica, se
convertir a una serie de caracteres antes de que se ejecute la funcin.

El resultado de la funcin es un entero grande. Si el argumento puede ser nulo, el


resultado puede ser nulo; si el argumento es nulo, el resultado es el valor nulo.

Las dems reglas dependen del tipo de datos del argumento:


v Si el argumento es una indicacin de fecha y hora o una representacin de serie
vlida de una indicacin de fecha y hora:
El entero est en el rango de 0 a 999 999.
v Si el argumento es una duracin:
El resultado refleja la parte correspondiente a los microsegundos del valor
que es un entero entre 999 999 y 999 999. El resultado que no es cero tiene el
mismo signo que el argumento.

Ejemplo:
v Supongamos que una tabla TABLEA contiene dos columnas, TS1 y TS2, del tipo
TIMESTAMP. Seleccione todas las filas cuya parte correspondiente a los
microsegundos de TS1 no sea cero y las partes correspondientes a los segundos
de TS1 y TS2 sean idnticas.
SELECT * FROM TABLEA
WHERE MICROSECOND(TS1) <> 0
AND
SECOND(TS1) = SECOND(TS2)

Captulo 3. Funciones 385


MIDNIGHT_SECONDS

MIDNIGHT_SECONDS
 MIDNIGHT_SECONDS ( expresin ) 

El esquema es SYSFUN.

Devuelve un valor entero comprendido entre 0 y 86 400 que representa el nmero


de segundos entre medianoche y el valor de la hora especificado en el argumento.

El argumento debe ser una hora, una indicacin de fecha y hora o una
representacin de serie de caracteres vlida de una hora o indicacin de fecha y
hora que no sea CLOB ni LONG VARCHAR. En una base de datos Unicode, si un
argumento proporcionado es una serie grfica, se convertir a una serie de
caracteres antes de que se ejecute la funcin.

El resultado de la funcin es INTEGER. El resultado puede ser nulo; si el


argumento es nulo, el resultado es el valor nulo.

Ejemplos:
v Encuentre el nmero de segundos entre la medianoche y 00:10:10 y la
medianoche y 13:10:10.
VALUES (MIDNIGHT_SECONDS(00:10:10), MIDNIGHT_SECONDS(13:10:10))

Este ejemplo devuelve lo siguiente:


1 2
----------- -----------
610 47410
Puesto que un minuto es 60 segundos, hay 610 segundos entre la medianoche y
la hora especificada. Es lo mismo para el segundo ejemplo. Hay 3600 segundos
en una hora y 60 segundos en un minuto, dando como resultado 47410
segundos entre la hora especificada y la medianoche.
v Encuentre el nmero de segundos entre la medianoche y 24:00:00, y la
medianoche y 00:00:00.
VALUES (MIDNIGHT_SECONDS(24:00:00), MIDNIGHT_SECONDS(00:00:00))

Este ejemplo devuelve lo siguiente:


1 2
----------- -----------
86400 0
Observe que estos dos valores representan el mismo momento en el tiempo,
pero devuelven distintos valores MIDNIGHT_SECONDS.

386 Consulta de SQL - Volumen 1


MINUTE

MINUTE
 MINUTE ( expresin ) 

El esquema es SYSIBM.

La funcin MINUTE devuelve la parte correspondiente a los minutos de un valor.

El argumento debe ser una hora, una indicacin de fecha y hora, una duracin de
la hora, una duracin de la indicacin de fecha y hora o una representacin de
serie de caracteres vlida de una hora o de una fecha y hora que no sea CLOB ni
LONG VARCHAR. En una base de datos Unicode, si un argumento proporcionado
es una serie grfica, se convertir a una serie de caracteres antes de que se ejecute
la funcin.

El resultado de la funcin es un entero grande. Si el argumento puede ser nulo, el


resultado puede ser nulo; si el argumento es nulo, el resultado es el valor nulo.

Las dems reglas dependen del tipo de datos del argumento:


v Si el argumento es una hora, una indicacin de fecha y hora o una
representacin de serie vlida de una hora o de una fecha y hora:
El resultado es la parte correspondiente a los minutos de un valor, que es un
entero entre 0 y 59.
v Si el argumento es una duracin de hora o una duracin de indicacin de fecha
y hora:
El resultado es la parte correspondiente a los minutos del valor, que es un
entero entre 99 y 99. El resultado que no es cero tiene el mismo signo que el
argumento.

Ejemplo:
v Utilizando la tabla de ejemplo CL_SCHED, seleccione todas las clases con una
duracin inferior a 50 minutos.
SELECT * FROM CL_SCHED
WHERE HOUR(ENDING - STARTING) = 0
AND
MINUTE(ENDING - STARTING) < 50

Captulo 3. Funciones 387


MOD

MOD
 MOD ( expresin , expresin ) 

El esquema es SYSFUN.

Devuelve el resto del primer argumento dividido por el segundo argumento. El


resultado slo es negativo si el primer argumento es negativo.

El resultado de la funcin es:


v SMALLINT si ambos argumentos son SMALLINT
v INTEGER si un argumento es INTEGER y el otro es INTEGER o SMALLINT
v BIGINT si un argumento es BIGINT y el otro argumento es BIGINT, INTEGER o
SMALLINT.

El resultado puede ser nulo; si cualquier argumento es nulo, el resultado es el


valor nulo.

388 Consulta de SQL - Volumen 1


MONTH

MONTH
 MONTH ( expresin ) 

El esquema es SYSIBM.

La funcin MONTH devuelve la parte correspondiente al mes de un valor.

El argumento debe ser una fecha, una indicacin de fecha y hora, una duracin de
fecha, una duracin de indicacin de fecha y hora o una representacin de serie de
caracteres vlida de una fecha o indicacin de fecha y hora que no sea CLOB ni
LONG VARCHAR. En una base de datos Unicode, si un argumento proporcionado
es una serie grfica, se convertir a una serie de caracteres antes de que se ejecute
la funcin.

El resultado de la funcin es un entero grande. Si el argumento puede ser nulo, el


resultado puede ser nulo; si el argumento es nulo, el resultado es el valor nulo.

Las dems reglas dependen del tipo de datos del argumento:


v Si el argumento es una fecha, una indicacin de fecha y hora o una
representacin de serie vlida de una fecha o indicacin de fecha y hora:
El resultado es la parte correspondiente al mes del valor, que es un entero
entre 1 y 12.
v Si el argumento es una duracin de fecha o duracin de indicacin de fecha y
hora:
El resultado es la parte correspondiente al mes del valor, que es un entero
entre 99 y 99. El resultado que no es cero tiene el mismo signo que el
argumento.

Ejemplo:
v Seleccione todas las filas de la tabla EMPLOYEE de las personas que han nacido
(BIRTHDATE) en diciembre (DECEMBER).
SELECT * FROM EMPLOYEE
WHERE MONTH(BIRTHDATE) = 12

Captulo 3. Funciones 389


MONTHNAME

MONTHNAME
 MONTHNAME ( expresin ) 

El esquema es SYSFUN.

Devuelve una serie que combina caracteres en maysculas y minsculas que


contiene el nombre del mes (por ejemplo, enero) correspondiente a la parte del mes
del argumento, segn el entorno local en el momento en que se inici la base de
datos.

El argumento debe ser una fecha, una indicacin de fecha y hora o una
representacin de serie de caracteres vlida de una fecha o de una indicacin de
fecha y hora que no sea CLOB ni LONG VARCHAR. En una base de datos
Unicode, si un argumento proporcionado es una serie grfica, se convertir a una
serie de caracteres antes de que se ejecute la funcin.

El resultado de la funcin es VARCHAR(100). El resultado puede ser nulo; si el


argumento es nulo, el resultado es el valor nulo.

390 Consulta de SQL - Volumen 1


MULTIPLY_ALT

MULTIPLY_ALT
 MULTIPLY_ALT ( expresin_numrica_exacta , 

 expresin_numrica_exacta ) 

El esquema es SYSIBM.

La funcin escalar MULTIPLY_ALT devuelve el producto de los dos argumentos


como un valor decimal. Se proporciona como alternativa al operador de
multiplicacin, especialmente cuando la suma de las precisiones de los argumentos
excede de 31.

Los argumentos pueden ser cualquier tipo de datos numricos exactos interno
(DECIMAL, BIGINT, INTEGER o SMALLINT).

El resultado de la funcin es un DECIMAL. La precisin y la escala del resultado


se determinan del modo siguiente, utilizando los smbolos p y s para indicar la
precisin y la escala del primer argumento y los smbolos p' y s' para indicar la
precisin y la escala del segundo argumento.
La precisin es MIN(31, p + p')
La escala es:
0 si la escala de ambos argumentos es 0
MIN(31, s + s') si p + p' es inferior o igual a 31
MAX(MIN(3, s + s'), 31 - (p - s + p' - s') ) si p + p' es superior a 31.

el resultado puede ser nulo si al menos un argumento puede ser nulo o si la base
de datos se configura con DFT_SQLMATHWARN establecido en YES; el resultado
es el valor nulo si uno de los argumentos es nulo.

Es mejor elegir la funcin MULTIPLY_ALT que el operador de multiplicacin


cuando se realizan operaciones aritmticas decimales donde se necesita como
mnimo una escala de 3 y la suma de las precisiones excede de 31. En estos casos,
se realiza el clculo interno a fin de evitar desbordamientos. Entonces se asigna el
resultado final al tipo de datos de resultado, utilizando el truncamiento donde sea
necesario para coincidir con la escala. Tenga en cuenta que el desbordamiento del
resultado final sigue siendo posible cuando la escala es 3.

A continuacin se proporciona un ejemplo en el que se comparan los tipos de


resultado utilizando MULTIPLY_ALT y el operador de multiplicacin.

Tipo de argumento 1 Tipo de argumento 2 Resultado utilizando Resultado utilizando


MULTIPLY_ALT el operador de
multiplicacin
DECIMAL(31,3) DECIMAL(15,8) DECIMAL(31,3) DECIMAL(31,11)
DECIMAL(26,23) DECIMAL(10,1) DECIMAL(31,19) DECIMAL(31,24)
DECIMAL(18,17) DECIMAL(20,19) DECIMAL(31,29) DECIMAL(31,31)
DECIMAL(16,3) DECIMAL(17,8) DECIMAL(31,9) DECIMAL(31,11)
DECIMAL(26,5) DECIMAL(11,0) DECIMAL(31,3) DECIMAL(31,5)
DECIMAL(21,1) DECIMAL(15,1) DECIMAL(31,2) DECIMAL(31,2)

Captulo 3. Funciones 391


MULTIPLY_ALT

Ejemplo:

Multiplique dos valores donde el tipo de datos del primer argumento es


DECIMAL(26,3) y el tipo de datos del segundo argumento es DECIMAL(9,8). El
tipo de datos del resultado es DECIMAL(31,7).
values multiply_alt(98765432109876543210987.654,5.43210987)
1
---------------------------------
536504678578875294857887.5277415

Observe que el producto completo de estos dos nmeros es


536504678578875294857887.52774154498, pero los 4 ltimos dgitos estn truncados
para coincidir con la escala del tipo de datos de resultado. Si se utiliza el operador
de multiplicacin con los mismos valores se producir un desbordamiento
aritmtico, dado que el tipo de datos de resultado es DECIMAL(31,11) y el valor
de resultado tiene 24 dgitos a la izquierda del decimal, pero el tipo de datos de
resultado slo soporta 20 dgitos.

392 Consulta de SQL - Volumen 1


NULLIF

NULLIF
 NULLIF ( expresin , expresin ) 

El esquema es SYSIBM.

La funcin NULLIF devuelve un valor nulo si los argumentos son iguales, de lo


contrario, devuelve el valor del primer argumento.

Los argumentos deben poderse comparar. Pueden ser de un tipo de datos interno
(que no sea una serie larga ni DATALINK)o de un tipo de datos diferenciado (que
no est basado en una serie larga ni en DATALINK). (Esta funcin no puede
utilizarse como una funcin fuente cuando se crea una funcin definida por el
usuario. Como esta funcin acepta cualquier tipo de datos compatible como
argumento, no es necesario crear signaturas adicionales para dar soporte a los tipos
de datos diferenciados definidos por el usuario). Los atributos del resultado son los
atributos del primer argumento.

El resultado de utilizar NULLIF(e1,e2) es igual a utilizar la expresin


CASE WHEN e1=e2 THEN NULL ELSE e1 END

Observe que cuando e1=e2 se evala como desconocido (porque uno o los dos
argumentos son NULL), las expresiones CASE lo consideran como no verdadero.
Por lo tanto, en esta situacin, NULLIF devuelve el valor del primer argumento.

Ejemplo:
v Supongamos que las variables del lenguaje principal PROFIT, CASH y LOSSES
tienen tipos de datos DECIMAL con los valores 4500.00, 500.00 y 5000.00
respectivamente:
NULLIF (:PROFIT + :CASH , :LOSSES )
Devuelve un valor nulo.

Informacin relacionada:
v Asignaciones y comparaciones en la pgina 117

Captulo 3. Funciones 393


OCTET_LENGTH

OCTET_LENGTH
 OCTET_LENGTH ( expresin ) 

El esquema es SYSIBM.

La funcin OCTET_LENGTH devuelve la longitud de expresin en octetos (bytes).


expresin
Expresin que devuelve un valor que es un tipo de datos de serie incorporado.

El resultado de la funcin es INTEGER. Si el argumento puede ser nulo, el


resultado puede ser nulo; si el argumento es nulo, el resultado es el valor nulo.

La longitud de las series de caracteres o de grficos incluye espacios en blanco


finales. La longitud de las series binarias incluye ceros binarios. La longitud de las
series de longitud variable es la longitud real y no la longitud mxima.

Para una portabilidad mayor, codifique la aplicacin para que sea capaz de aceptar
un resultado de tipo de datos DECIMAL(31).

Ejemplos:
v Supongamos que la tabla T1 tiene una columna GRAPHIC(10) denominada C1.
SELECT OCTET_LENGTH(C1) FROM T1

devuelve el valor 20.


v El ejemplo siguiente funciona con la serie Unicode &N~AB, siendo & el
carcter de clave G de smbolo musical y ~ el carcter de tilde de combinacin.
A continuacin se muestra esta cadena en distintos formatos de codificacin
Unicode:

& N ~ A B
UTF-8 X'F09D849E' X'4E' X'CC83' X'41' X'42'
UTF-16BE X'D834DD1E' X'004E' X'0303' X'0041' X'0042'

Supongamos que las variables UTF8_VAR y UTF16_VAR contienen las


representaciones de la serie en UTF-8 y UTF-16BE respectivamente.
SELECT OCTET_LENGTH(UTF8_VAR),
OCTET_LENGTH(UTF16_VAR)
FROM SYSIBM.SYSDUMMY1

devuelve los valores 9 y 12 respectivamente.

Informacin relacionada:
v CHARACTER_LENGTH en la pgina 313
v LENGTH en la pgina 372

394 Consulta de SQL - Volumen 1


POSITION

POSITION
 POSITION 

 ( serie-bsqueda IN serie-fuente USING CODEUNITS16 ) 


CODEUNITS32
OCTETS
serie-bsqueda , serie-fuente , CODEUNITS16
CODEUNITS32
OCTETS

El esquema es SYSIBM.

La funcin POSITION devuelve la posicin inicial de la primera aparicin de una


serie (denominada serie-bsqueda) dentro de otra serie (denominada serie-fuente). Si
el argumento serie-bsqueda no se encuentra y ningn argumento es nulo, el
resultado es cero. Si se encuentra el argumento serie-bsqueda, el resultado es un
nmero de 1 a la longitud real del argumento serie-fuente, expresado en la unidad
de serie que se especifique explcitamente.

Si el argumento serie-fuente tiene una longitud real de 0, el resultado de la funcin


es 0. Si el argumento serie-bsqueda tiene una longitud real de 0 y el argumento
serie-fuente no es nulo, el resultado de la funcin es 1.
serie-bsqueda
Expresin que especifica la serie que es objeto de la bsqueda. La expresin
debe devolver un valor que se encuentre en un tipo de datos de serie de
caracteres incorporado, un tipo de datos de serie grfica o un tipo de datos de
serie binaria con una longitud real que no sea superior a 4000 bytes. Ningn
elemento de la expresin puede ser de tipo LONG VARCHAR, CLOB, LONG
VARGRAPHIC ni DBCLOB. Adems, no puede ser una variable de referencia a
archivos BLOB. La expresin puede especificarse mediante lo siguiente:
v Una constante
v Un registro especial
v Una variable del lenguaje principal
v Una funcin escalar cuyos operandos seas cualquiera de los anteriores
v Una expresin que concatene (mediante CONCAT o ||) cualquiera de los
elementos anteriores
v Un parmetro de procedimiento SQL
Estas normas son parecidas a las que se describen para expresin-patrn para el
predicado LIKE.
serie-fuente
Expresin que especifica la serie en la que debe realizarse la bsqueda. La
expresin debe devolver un valor que se encuentre en un tipo de datos de
serie de caracteres incorporado, un tipo de datos de serie grfica o un tipo de
datos de serie binaria. La expresin puede especificarse mediante lo siguiente:
v Una constante
v Un registro especial
v Una variable del lenguaje principal (incluida una variable localizadora o una
variable de referencia de archivo)
v Una funcin escalar
v Un localizador de objeto grande
Captulo 3. Funciones 395
POSITION

v Un nombre de columna
v Una expresin que concatene (mediante CONCAT o ||) cualquiera de los
elementos anteriores
CODEUNITS16, CODEUNITS32, u OCTETS
Especifica la unidad de la serie del resultado. CODEUNITS16 especifica que el
resultado debe expresarse en unidades de cdigo UTF-16 de 16 bits.
CODEUNITS32 especifica que el resultado debe expresarse en unidades de
cdigo UTF-32 de 32 bits. OCTETS especifica que el resultado debe expresarse
en bytes.
Si una unidad de la serie se especifica como CODEUNITS16 o CODEUNITS32,
y serie-bsqueda o serie-fuente son una serie binaria o datos de bits, se devuelve
un error (SQLSTATE 428GC). Si se especifica una unidad de la serie como
OCTETS, serie-bsqueda se convierte en la pgina de cdigos de la serie-fuente si
tiene una pgina de cdigos distinta. En este caso, la operacin se realiza en la
pgina de cdigos de la serie-fuente. Si se especifica una unidad de la serie
como OCTETS y serie-bsqueda y serie-fuente son series binarias, se devuelve un
error (SQLSTATE 42815).
Para obtener ms informacin acerca de CODEUNITS16, CODEUNITS32 y
OCTETS, consulte Unidades de serie en funciones incorporadas en Series de
caracteres.

El primer y segundo argumento deben tener tipos de serie compatibles. Para


obtener ms informacin sobre la compatibilidad, consulte Reglas para
conversiones de series.

El resultado de la funcin es un entero grande. Si cualquiera de los argumentos


puede ser nulo, el resultado puede ser nulo; si alguno de los argumentos es nulo,
el resultado es el valor NULL.

Ejemplos:
v Seleccione la columna RECEIVED, la columna SUBJECT y la posicin de inicio
de la serie GOOD BEER en la columna NOTE_TEXT para todas las filas de la
tabla IN_TRAY que contengan esa serie.
SELECT RECEIVED, SUBJECT, POSITION(GOOD BEER, NOTE_TEXT, OCTETS)
FROM IN_TRAY
WHERE POSITION(GOOD BEER, NOTE_TEXT, OCTETS) <> 0
v Localizar el carcter en la serie Jrgen lives on Hegelstrae y definir la
variable de lenguaje principal LOCATION con la posicin, segn se mide en
unidades CODEUNITS32, dentro de la serie.
SET :LOCATION = POSITION(
, Jrgen lives on Hegelstrae, CODEUNITS32
)

El valor de la variable de lenguaje principal LOCATION se establece en 27.


v Localizar el carcter en la serie Jrgen lives on Hegelstrae y definir la
variable de lenguaje principal LOCATION con la posicin, segn se mide en
unidades OCTETS, dentro de la serie.
SET :LOCATION = POSITION(
, Jrgen lives on Hegelstrae, OCTETS
)

El valor de la variable de lenguaje principal LOCATION se establece en 28.


v Los ejemplos siguientes funcionan con la serie Unicode &N~AB, siendo & el
carcter de clave G de smbolo musical y ~ el carcter de tilde de combinacin.

396 Consulta de SQL - Volumen 1


POSITION

A continuacin se muestra esta cadena en distintos formatos de codificacin


Unicode:

& N ~ A B
UTF-8 X'F09D849E' X'4E' X'CC83' X'41' X'42'
UTF-16BE X'D834DD1E' X'004E' X'0303' X'0041' X'0042'

Supongamos que la variable UTF8_VAR contiene la representacin UTF-8 de la


serie.
SELECT POSITION(N, UTF8_VAR, CODEUNITS16),
POSITION(N, UTF8_VAR, CODEUNITS32),
POSITION(N, UTF8_VAR, OCTETS)
FROM SYSIBM.SYSDUMMY1

devuelve los valores 3, 2 y 5, respectivamente.


Supongamos que la variable UTF16_VAR contiene la representacin UTF-16BE
de la serie.
SELECT POSITION(B, UTF16_VAR, CODEUNITS16),
POSITION(B, UTF16_VAR, CODEUNITS32),
POSITION(B, UTF16_VAR, OCTETS)
FROM SYSIBM.SYSDUMMY1

devuelve los valores 6, 5 y 11, respectivamente.

Informacin relacionada:
v Series de caracteres en la pgina 91
v LOCATE en la pgina 375
v Reglas para la conversin de series en la pgina 133

Captulo 3. Funciones 397


POSSTR

POSSTR
 POSSTR ( serie-fuente , serie-bsqueda ) 

El esquema es SYSIBM.

La funcin POSSTR devuelve la posicin inicial de la primera ocurrencia de una


serie (llamada la serie-bsqueda) en otra serie (llamada la serie-fuente). Los nmeros
para la posicin de serie-bsqueda empiezan en 1 (no en 0).

El resultado de la funcin es un entero grande. Si alguno de los argumentos puede


ser nulo, el resultado puede ser nulo; si alguno de los argumentos es nulo, el
resultado es el valor nulo.
serie-fuente
Una expresin que especifica la serie fuente en la que se ha de llevar a cabo la
bsqueda.
La expresin se puede especificar mediante:
v Una constante
v Un registro especial
v Una variable del lenguaje principal (incluida una variable localizadora o una
variable de referencia de archivo)
v Una funcin escalar
v Un localizador de objeto grande
v Un nombre de columna
v Una expresin que concatene cualquiera de las anteriores
serie-bsqueda
Una expresin que especifica la serie que se ha de buscar.
La expresin se puede especificar mediante:
v Una constante
v Un registro especial
v Una variable del lenguaje principal
v Una funcin escalar cuyos operandos seas cualquiera de los anteriores
v Una expresin que concatene cualquiera de las anteriores
v Un parmetro de procedimiento SQL

teniendo en cuenta las siguientes restricciones:


v Ningn elemento de la expresin puede ser de tipo LONG VARCHAR,
CLOB, LONG VARGRAPHIC o DBCLOB. Adems, no puede ser una
variable de referencia a archivos BLOB.
v La longitud real de serie-bsqueda no puede tener ms de 4.000 bytes.

A continuacin se muestran ejemplos de expresiones de serie o series vlidas:


v Parmetros de funcin SQL definidos por el usuario
v Variables de transicin activadores
v Variables locales en sentencias compuestas dinmicas

398 Consulta de SQL - Volumen 1


POSSTR

Tanto la serie-bsqueda como la serie-fuente tienen cero o ms posiciones continuas.


Si las series son series de caracteres o binarias, una posicin es un byte. Si las
series son series grficas, una posicin es un carcter grfico (DBCS).

La funcin POSSTR acepta las series de datos mixtos. Sin embargo, POSSTR opera
sobre la base de un nmero de bytes estricto, ajeno a los cambios entre caracteres
de un solo byte o de mltiples bytes.

Se aplican las siguientes reglas:


v Los tipos de datos de la serie-fuente y la serie-bsqueda deben ser compatibles, de
lo contrario se genera un error (SQLSTATE 42884).
Si serie-fuente es una serie de caracteres, entonces serie-bsqueda ha de ser una
serie de caracteres, pero no una CLOB ni LONG VARCHAR, con una
longitud real de 32 672 bytes o menos.
Si serie-fuente es una serie grfica, entonces serie-bsqueda ha de ser una serie
grfica, pero no una DBCLOB ni LONG VARGRAPHIC, con una longitud real
de 16 336 caracteres de doble byte o menos.
Si serie-fuente es una serie binaria, entonces serie-bsqueda ha de ser una serie
binaria con una longitud real de 32 672 bytes o menos.
v Si la serie-bsqueda tiene una longitud de cero, el resultado que devuelve la
funcin es 1.
v De lo contrario:
Si la serie-fuente tiene una longitud de cero, el resultado que devuelve la
funcin es cero.
De lo contrario:
- Si el valor de la serie-bsqueda es igual a una subserie de longitud idntica
de posiciones continuas del valor de la serie-fuente, el resultado devuelto
por la funcin es la posicin inicial de la primera de dicha subserie en el
valor serie-fuente.
- De lo contrario, el resultado que devuelve la funcin es 0.

Ejemplo
v Seleccione las columnas RECEIVED y SUBJECT as como la posicin inicial de
las palabras GOOD BEER de la columna NOTE_TEXT para todas las entradas
de la tabla IN_TRAY que contienen estas palabras.
SELECT RECEIVED, SUBJECT, POSSTR(NOTE_TEXT, GOOD BEER)
FROM IN_TRAY
WHERE POSSTR(NOTE_TEXT, GOOD BEER) <> 0

Captulo 3. Funciones 399


POWER

POWER
 POWER ( expresin1 , expresin2 ) 

El esquema es SYSFUN.

Devuelve el valor de expresin1 elevado a la potencia de expresin2.

Los argumentos pueden ser de cualquier tipo de datos numrico interno. Los
argumentos DECIMAL y REAL se convierten a un nmero de coma flotante de
precisin doble.

El resultado de la funcin es:


v INTEGER si ambos argumentos son INTEGER o SMALLINT
v BIGINT si un argumento es BIGINT y el otro argumento es BIGINT, INTEGER o
SMALLINT
v de lo contrario, DOUBLE.

El resultado puede ser nulo; si cualquier argumento es nulo, el resultado es el


valor nulo.

400 Consulta de SQL - Volumen 1


QUARTER

QUARTER
 QUARTER ( expresin ) 

El esquema es SYSFUN.

Devuelve un valor entero comprendido entre 1 y 4 que representa el trimestre del


ao para la fecha especificada en el argumento.

El argumento debe ser una fecha, una indicacin de fecha y hora o una
representacin de serie de caracteres vlida de una fecha o de una indicacin de
fecha y hora que no sea CLOB ni LONG VARCHAR. En una base de datos
Unicode, si un argumento proporcionado es una serie grfica, se convertir a una
serie de caracteres antes de que se ejecute la funcin.

El resultado de la funcin es INTEGER. El resultado puede ser nulo; si el


argumento es nulo, el resultado es el valor nulo.

Captulo 3. Funciones 401


RADIANS

RADIANS
 RADIANS ( expresin ) 

El esquema es SYSFUN.

Devuelve el nmero de radianes convertidos del argumento que se expresa en


grados.

El argumento puede ser de cualquier tipo de datos interno. Se convierte a un


nmero de coma flotante de precisin doble para que lo procese la funcin.

El resultado de la funcin es un nmero de coma flotante de precisin doble. El


resultado puede ser nulo; si el argumento es nulo, el resultado es el valor nulo.

402 Consulta de SQL - Volumen 1


RAISE_ERROR

RAISE_ERROR
 RAISE_ERROR ( sqlstate , serie-diagnstico ) 

El esquema es SYSIBM.

La funcin RAISE_ERROR hace que la sentencia que incluye la funcin devuelva


un error especificando SQLSTATE, SQLCODE -438 y la serie-diagnstico. La funcin
RAISE_ERROR siempre devuelve NULL con un tipo de datos no definido. En una
base de datos Unicode, si un argumento proporcionado es una serie grfica, se
convertir a una serie de caracteres antes de que se ejecute la funcin.
sqlstate
Una serie de caracteres que contiene 5 bytes exactamente. Debe ser de tipo
CHAR definido con una longitud de 5 o un tipo VARCHAR definido con una
longitud de 5 o mayor. El valor de sqlstate debe seguir las reglas de los
SQLSTATE definidos por la aplicacin, de la siguiente manera:
v Cada carcter debe pertenecer al conjunto de dgitos (del 0 al 9) o de
letras maysculas no acentuadas (de la A a la Z)
v La clase SQLSTATE (primeros dos caracteres) no puede ser 00, 01 ni 02,
pues no son clases de error.
v Si la clase SQLSTATE (primeros dos caracteres) empieza por un carcter de
los rangos 0-6 o A-H, la subclase (tres ltimos caracteres) debe empezar por
una letra del rango I-Z
v Si la clase SQLSTATE (primeros dos caracteres) empieza por un carcter de
los rangos 7-9 o I-Z, la subclase (tres ltimos caracteres) puede ser un valor
cualquiera de 0-9 o A-Z.
Si SQLSTATE no se ajusta a estas reglas se produce un error (SQLSTATE
428B3).
serie-diagnstico
Una expresin de tipo CHAR o VARCHAR que devuelve una serie de
caracteres de un mximo de 70 bytes que describe la condicin de error. Si la
serie tiene ms de 70 bytes de longitud, se truncar.

Para utilizar esta funcin en un contexto en el que las reglas para los tipos de
datos del resultado no se aplican (por ejemplo, solo en una lista de seleccin), se
debe utilizar una especificacin de conversin (cast) para dar un tipo de datos al
valor nulo devuelto. La funcin RAISE_ERROR resultar ms til en una expresin
CASE.

Ejemplo:

Liste los nmeros de empleados y los niveles de formacin como, por ejemplo,
Postgraduado, Graduado y Diplomado. Si el nivel de formacin es mayor que 20,
genere un error.
SELECT EMPNO,
CASE WHEN EDUCLVL < 16 THEN Diplomado
WHEN EDUCLVL < 18 THEN Graduado
WHEN EDUCLVL < 21 THEN Postgraduado
ELSE RAISE_ERROR(70001,
EDUCLVL tiene un valor mayor que 20)
END
FROM EMPLOYEE

Captulo 3. Funciones 403


RAND

RAND
 RAND ( ) 
expresin

El esquema es SYSFUN.

La funcin RAND devuelve un valor de coma flotante comprendido entre 0 y 1.

Si se especifica una expresin, sta se utiliza como el valor raz. La expresin debe
ser un tipo de datos SMALLINT o INTEGER incorporado con un valor
comprendido entre 0 y 2 147 483 647.

El tipo de datos del resultado es de coma flotante de precisin doble. Si el


argumento es nulo, el resultado es el valor nulo.

Un valor raz concreto generar la misma secuencia de nmeros aleatorios para


una instancia determinada de una funcin RAND de una consulta cada vez que se
ejecute la consulta. Si no se especifica ningn valor raz, se genera una secuencia
de nmeros aleatorios distinta cada vez que se ejecuta la consulta en la misma
sesin. Para generar un conjunto de nmeros aleatorios que vare de una sesin a
otra, debe especificarse un valor raz aleatorio como, por ejemplo, uno que se base
en la hora actual.

RAND es una funcin no determinante.

404 Consulta de SQL - Volumen 1


REAL

REAL
 REAL ( expresin-numrica ) 

El esquema es SYSIBM.

La funcin REAL devuelve la representacin de coma flotante de precisin simple


correspondiente a un nmero.

El argumento es una expresin que devuelve un valor de cualquier tipo de datos


numrico interno.

El resultado de la funcin es un nmero de coma flotante de precisin simple. Si el


argumento puede ser nulo, el resultado puede ser nulo; si el argumento es nulo, el
resultado es el valor nulo.

El resultado es el mismo nmero que sera si el argumento se hubiese asignado a


una columna o variable de coma flotante de precisin simple.

Ejemplo:

Utilizando la tabla EMPLOYEE, busque la proporcin de salario y comisiones para


los empleados cuya comisin no sea cero. Las columnas implicadas (SALARY y
COMM) tienen tipos de datos DECIMAL. El resultado se desea en coma flotante
de precisin simple. Por consiguiente, se aplica REAL a SALARY para que la
divisin se lleve a cabo en coma flotante (en realidad en precisin doble) y despus
se aplica REAL a la expresin completa para devolver el resultado en coma
flotante de precisin simple.
SELECT EMPNO, REAL(REAL(SALARY)/COMM)
FROM EMPLOYEE
WHERE COMM > 0

Captulo 3. Funciones 405


REC2XML

REC2XML
 REC2XML ( constante-decimal , serie-formato , serie-cdigo-fila 

  , nombre-columna ) 

El esquema es SYSIBM.

La funcin REC2XML devuelve una serie formateada codificada en XML que


contiene nombres de columna y datos de columna. En una base de datos Unicode,
si un argumento proporcionado es una serie grfica, se convertir a una serie de
caracteres antes de que se ejecute la funcin.
constante-decimal
Factor de expansin para sustituir caracteres de datos de columna. El valor
decimal debe ser mayor que 0.0 y menor que o igual a 6.0. (SQLSTATE 42820).
El valor constante-decimal se utiliza para calcular la longitud de resultado de la
funcin. Para cada columna con un tipo de datos de tipo carcter, el atributo
de longitud de la columna se multiplica por este factor de expansin antes de
que se sume a la longitud de resultado.
Para especificar que no haya expansin, utilice un valor de 1.0. Si se especifica
un valor menor que 1.0, se reducir la longitud de resultado calculada. Si la
longitud real de la serie de resultado es mayor que la longitud de resultado
calculada de la funcin, se producir un error (SQLSTATE 22001).
serie-formato
Constante de serie que especifica qu formato debe utilizar la funcin durante
la ejecucin.
La serie-formato es sensible a las maysculas y minsculas, de modo que los
valores siguientes deben especificarse en maysculas para que se reconozcan.
COLATTVAL o COLATTVAL_XML
Estos formatos devuelven una serie con columnas como valores de
atributo.

 < serie-cdigo-fila > 

  < nombre-columna = "nombre-columna" > valor-columna </ columna > 


null="true" />

 </ serie-cdigo-fila > 

Los nombres de columna pueden ser valores de atributo XML vlidos o


pueden no serlo. Para los nombres de columna que no son valores de atributo
XML vlidos, se realiza la sustitucin de caracteres en el nombre de columna
antes de incluirlo en la serie de resultado.

406 Consulta de SQL - Volumen 1


REC2XML

Los valores de columna pueden ser nombres de elemento XML vlidos o


pueden no serlo. Si se especifica la serie-formato COLATTVAL, para los nombres
de columna que no son valores de elemento XML vlidos, se realiza la
sustitucin de caracteres en el valor de columna antes de incluirlo en la serie
de resultado. Si se especifica la serie-formato COLATTVAL_XML, no se realiza la
sustitucin de caracteres en los valores de columna (aunque la sustitucin de
caracteres se realiza de todas formas en los nombres de columna).
serie-cdigo-fila
Constante de serie que especifica el cdigo utilizado para cada fila. Si se
especifica una serie vaca, se supone un valor de row.
Si se especifica una serie de uno o ms caracteres en blanco, no aparecer
ninguna serie-cdigo-fila inicial o serie-cdigo-fila final (incluidos los
delimitadores de signo mayor que y menor que) en la serie de resultado.
nombre-columna
Nombre calificado o no calificado de una columna de tabla. La columna debe
tener uno de los tipos de datos siguientes (SQLSTATE 42815):
v numrico (SMALLINT, INTEGER, BIGINT, DECIMAL, REAL, DOUBLE)
v serie de caracteres (CHAR, VARCHAR; no se permite una serie de caracteres
con un subtipo de BIT DATA)
v fecha y hora (DATE, TIME, TIMESTAMP)
v un tipo definido por el usuario basado en uno de los tipos anteriores
No se puede especificar ms de una vez el mismo nombre de columna
(SQLSTATE 42734).

El resultado de la funcin es VARCHAR. La longitud mxima es de 32.672 bytes


(SQLSTATE 54006).

Examine la invocacin siguiente:


REC2XML (dc, fs, rt, c1, c2, ..., cn)

Si el valor de fs es COLATTVAL o COLATTVAL_XML, el resultado ser igual


que esta expresin:
'<' CONCAT rt CONCAT '>' CONCAT y1 CONCAT y2
CONCAT ... CONCAT yn CONCAT '</' CONCAT rt CONCAT '>'

donde yn es equivalente a:
'<column name="' CONCAT xvcn CONCAT vn

y vn es equivalente a:
'">' CONCAT rn CONCAT
'</column>'

si la columna no es nula y
'" null="true"/>'

si el valor de columna es nulo.

xvcn es equivalente a una representacin de serie del nombre de columna de cn,


donde cualquier carcter que aparezca en la Tabla 27 en la pgina 408 se sustituye
por la representacin correspondiente. Esto asegura que la serie resultante sea un
smbolo de valor de elemento o atributo XML vlido.

Captulo 3. Funciones 407


REC2XML

rn es equivalente a una representacin de serie como se indica en la Tabla 26


Tabla 26. Resultado de serie de valores de columna
Tipo de datos de cn rn
CHAR, VARCHAR El valor es una serie. Si la serie-formato no
termina con los caracteres _XML, cada
carcter de cn se sustituye por la
representacin de sustitucin
correspondiente de la Tabla 27, como se
indica. El atributo de longitud es: dc * el
atributo de longitud de cn.
SMALLINT, INTEGER, BIGINT, DECIMAL, El valor es LTRIM(RTRIM(CHAR(cn))). El
NUMERIC, REAL, DOUBLE atributo de longitud es la longitud de
resultado de CHAR(cn). El carcter decimal
es siempre el carcter de punto (.).
DATE El valor es CHAR(cn,ISO). El atributo de
longitud es la longitud de resultado de
CHAR(cn,ISO).
TIME El valor es CHAR(cn,JIS). El atributo de
longitud es la longitud de resultado de
CHAR(cn,JIS)
TIMESTAMP El valor es CHAR(cn). El atributo de
longitud es la longitud de resultado de
CHAR(cn).

Sustitucin de caracteres:

En funcin del valor especificado para la serie-formato, se sustituirn determinados


caracteres en los nombres de columna y en los valores de columna para asegurar
que los nombres de columna formen valores de atributo XML vlidos y que los
valores de columna formen valores de elemento XML vlidos.
Tabla 27. Sustituciones de caracteres para valores de atributo y valores de elemento XML
Carcter Sustitucin
< &lt;
> &gt;
" &quot;
& &amp;
&apos;

Ejemplos:

Nota: REC2XML no inserta espacios en blanco ni caracteres de nueva lnea en la


salida. Todas las salidas de los ejemplos se han formateado para mejorar la
legibilidad.
v Utilizando la tabla DEPARTMENT de la base de datos de ejemplo, formatee la
fila de tabla del departamento, excepto las columnas DEPTNAME y LOCATION,
para el departamento D01 en una serie XML. Dado que los datos no contienen
ninguno de los caracteres que necesitan sustituirse, el factor de expansin ser
1.0 (sin expansin). Observe tambin que el valor MGRNO es nulo para esta fila.

408 Consulta de SQL - Volumen 1


REC2XML

SELECT REC2XML (1.0, COLATTVAL, , DEPTNO, MGRNO, ADMRDEPT)


FROM DEPARTMENT
WHERE DEPTNO = D01
Este ejemplo devuelve la serie VARCHAR(117) siguiente:
<row>
<column name="DEPTNO">D01</column>
<column name="MGRNO" null="true"/>
<column name="ADMRDEPT">A00</column>
</row>
v Una planificacin universitaria de 5 das introduce una clase llamada &43<FIE
en una tabla llamada CL_SCHED, con un formato nuevo para la columna
CLASS_CODE. Utilizando la funcin REC2XML, este ejemplo formatea una serie
XML con estos datos de clase nuevos, exceptuando la hora final de clase.
El atributo de longitud para la llamada REC2XML (vea ms abajo) con un factor
de expansin de 1.0 ser 128 (11 para la actividad general de <row> y
</row>, 21 para los nombres de columna, 75 para <column name=, >,
</column> y las comillas dobles, 7 para los datos CLASS_CODE, 6 para los
datos DAY y 8 para los datos STARTING). Dado que los caracteres & y < se
sustituirn, no ser suficiente un factor de expansin de 1.0. El atributo de
longitud de la funcin necesitar soportar un incremento de 7 a 14 bytes para
los datos CLASS_CODE de formato nuevo.
Sin embargo, puesto que se sabe que el valor DAY no tendr nunca ms de 1
dgito de longitud, se aaden al total 5 unidades adicionales no utilizadas de
longitud. Por lo tanto, la expansin slo necesita gestionar un incremento de 2.
Dado que CLASS_CODE es la nica columna de serie de caracteres de la lista de
argumentos, stos son los nicos datos de columna a los que se aplica el factor
de expansin. Para obtener un incremento de 2 para la longitud, sera necesario
un factor de expansin de 9/7 (1.2857 aproximadamente). Se utilizar un factor
de expansin de 1.3.
SELECT REC2XML (1.3, COLATTVAL, record, CLASS_CODE, DAY, STARTING)
FROM CL_SCHED
WHERE CLASS_CODE = &43<FIE

Este ejemplo devuelve la serie VARCHAR(167) siguiente:


<record>
<column name="CLASS_CODE">&amp;43&lt;FIE</column>
<column name="DAY">5</column>
<column name="STARTING">06:45:00</column>
</record>
v Supongamos que se han aadido filas nuevas a la tabla EMP_RESUME de la
base de datos de ejemplo. Las nuevas filas almacenan los resmenes como series
de XML vlido. Se utiliza la serie-formato COLATTVAL_XML para que no se lleve
a cabo la sustitucin de caracteres. Ninguno de los resmenes tiene ms de 3500
bytes de longitud. Se utiliza la consulta siguiente para seleccionar la versin
XML de los resmenes de la tabla EMP_RESUME y formatearla en un fragmento
de documento XML.
SELECT REC2XML (1.0, COLATTVAL_XML, row, EMPNO, RESUME_XML)
FROM (SELECT EMPNO, CAST(RESUME AS VARCHAR(3500)) AS RESUME_XML
FROM EMP_RESUME
WHERE RESUME_FORMAT = XML)
AS EMP_RESUME_XML

Este ejemplo devuelve una fila para cada empleado que tiene un resumen en
formato XML. Cada fila devuelta ser una serie con el formato siguiente:

Captulo 3. Funciones 409


REC2XML

<row>
<column name="EMPNO">{nmero de empleado}</column>
<column name="RESUME_XML">{resumen en XML}</column>
</row>

Donde {nmero de empleado} es el valor EMPNO real para la columna y


{resumen en XML} es el valor de serie de fragmento XML real que constituye
el resumen.

410 Consulta de SQL - Volumen 1


REPEAT

REPEAT
 REPEAT ( expresin , expresin ) 

El esquema es SYSFUN.

Devuelve una serie de caracteres compuesta por el primer argumento repetido el


nmero de veces especificado por el segundo argumento. En una base de datos
Unicode, si un argumento proporcionado es una serie grfica, se convertir a una
serie de caracteres antes de que se ejecute la funcin.

El primer argumento es una serie de caracteres o un tipo de serie binaria. Para un


VARCHAR la longitud mxima es de 4.000 bytes y para un CLOB o serie binaria la
longitud mxima es de 1.048.576 bytes. El segundo argumento puede ser
SMALLINT o INTEGER.

El resultado de la funcin es:


v VARCHAR(4000) si el primer argumento es VARCHAR (no excede de 4.000
bytes) o CHAR
v CLOB(1 M) si el primer argumento es CLOB o LONG VARCHAR
v BLOB(1 M) si el primer argumento es BLOB.

El resultado puede ser nulo; si cualquier argumento es nulo, el resultado es el


valor nulo.

Ejemplo:
v Liste la frase REPITA ESTO cinco veces.
VALUES CHAR(REPEAT(REPEAT THIS, 5), 60)

Este ejemplo produce lo siguiente:


1
------------------------------------------------------------
REPITA ESTOREPITA ESTOREPITA ESTOREPITA ESTOREPITA ESTO
Tal como se ha mencionado, el resultado de la funcin REPEAT es
VARCHAR(4000). En este ejemplo, se ha utilizado la funcin CHAR para limitar
el resultado de REPEAT a 60 bytes.

Captulo 3. Funciones 411


REPLACE

REPLACE
 REPLACE ( expresin1 , expresin2 , expresin3 ) 

El esquema es SYSFUN.

Sustituye todas las ocurrencias de expresin2 en la expresin1 por la expresin3.

El primer argumento puede ser de cualquier tipo de serie binaria o serie de


caracteres interno. En una base de datos Unicode, si un argumento proporcionado
es una serie grfica, se convertir a una serie de caracteres antes de que se ejecute
la funcin. Para un VARCHAR la longitud mxima es de 4.000 bytes y para un
CLOB o serie binaria la longitud mxima es de 1.048.576 bytes. CHAR se convierte
a VARCHAR y LONG VARCHAR se convierte a CLOB(1 M). El tipo del segundo y
del tercer argumento es idntico al del primer argumento.

El resultado de la funcin es:


v VARCHAR(4000) si el primer, segundo y tercer argumento son VARCHAR o
CHAR
v CLOB(1M) si el primer, segundo y tercer argumento son CLOB o LONG
VARCHAR
v BLOB(1M) si el primer, segundo y tercer argumento son BLOB.

El resultado puede ser nulo; si cualquier argumento es nulo, el resultado es el


valor nulo.

Ejemplo:

Sustituya todas las ocurrencias de la letra N en la palabra DINING por VID.


VALUES CHAR (REPLACE (DINING, N, VID), 10)

Este ejemplo devuelve lo siguiente:


1
----------
DIVIDIVIDG

Tal como se ha mencionado, el resultado de la funcin REPLACE es


VARCHAR(4000). En este ejemplo, se ha utilizado la funcin CHAR para limitar el
resultado de REPLACE a 10 bytes.

412 Consulta de SQL - Volumen 1


RIGHT

RIGHT
 RIGHT ( expresin1 , expresin2 ) 

Devuelve una serie que consta de los expresin2 bytes ms a la derecha de


expresin1. El valor expresin1 se rellena con blancos por la derecha para que la
subserie especificada de expresin1 exista siempre.

El primer argumento es una serie de caracteres o un tipo de serie binaria. En una


base de datos Unicode, si un argumento proporcionado es una serie grfica, se
convertir a una serie de caracteres antes de que se ejecute la funcin. Para un
VARCHAR la longitud mxima es de 4.000 bytes y para un CLOB o serie binaria la
longitud mxima es de 1.048.576 bytes. El segundo argumento puede ser INTEGER
o SMALLINT.

El resultado de la funcin es:


v VARCHAR(4000) si el primer argumento es VARCHAR (no excede de 4.000
bytes) o CHAR
v CLOB(1 M) si el primer argumento es CLOB o LONG VARCHAR
v BLOB(1 M) si el primer argumento es BLOB.

El resultado puede ser nulo; si cualquier argumento es nulo, el resultado es el


valor nulo.

Captulo 3. Funciones 413


ROUND

ROUND
 ROUND ( expresin1 , expresin2 ) 

El esquema es SYSIBM. (La versin SYSFUN de la funcin ROUND contina


estando disponible).

La funcin ROUND devuelve expresin1 redondeada a expresin2 posiciones a la


derecha de la coma decimal si expresin2 es positiva o a la izquierda de la coma
decimal si expresin2 es cero o negativa.

Si expresin1 es positiva, un valor de dgito de 5 o mayor es una indicacin para


redondear al siguiente nmero positivo ms alto. Por ejemplo, ROUND(3.5,0) = 4.
Si expresin1 es negativa, un valor de dgito de 5 o mayor es una indicacin para
redondear al siguiente nmero negativo ms bajo. Por ejemplo, ROUND(-3.5,0) =
-4.
expresin1
Una expresin que devuelve un valor de cualquier tipo de datos numrico
interno.
expresin2
Una expresin que devuelve un entero pequeo o grande. Cuando el valor de
expresin2 no es negativo, especifica redondear a ese nmero de posiciones a la
derecha del separador decimal. Cuando el valor de expresin2 es negativo,
especifica redondear al valor absoluto de expresin2 posiciones a la izquierda
del separador decimal.
Si expresin2 no es negativa, expresin1 se redondea al valor absoluto del
nmero de expresin2 de posiciones a la derecha de la coma decimal. Si el valor
de expresin2 es mayor que la escala de expresin1, el valor no se modifica
excepto si el valor de resultado tiene una precisin que es mayor por 1. Por
ejemplo, ROUND(748.58,5) = 748.58 donde la precisin es ahora 6 y la escala
sigue siendo 2.
Si expresin2 es negativa, expresin1 se redondea al valor absoluto de
expresin2+1 nmero de posiciones a la izquierda de la coma decimal.
Si el valor absoluto de una expresin2 negativa es mayor que el nmero de
dgitos que hay a la izquierda de la coma decimal, el resultado es 0. Por
ejemplo, ROUND(748.58,-4) = 0.

El tipo de datos y el atributo de longitud del resultado son iguales que el tipo de
datos y el atributo de longitud del primer argumento, excepto en que la precisin
se incrementa en uno si la expresin1 es DECIMAL y la precisin es inferior a 31.

Por ejemplo, un argumento con un tipo de datos de DECIMAL(5,2) da como


resultado DECIMAL(6,2). Un argumento con un tipo de datos de DECIMAL(31,2)
da como resultado DECIMAL(31,2). La escala es igual que la escala del primer
argumento.

Si cualquiera de los argumentos puede ser nulo o la base de datos est configurada
con DFT_SQLMATHWARN establecido en YES, el resultado puede ser nulo. Si
cualquiera de los argumentos es nulo, el resultado es el valor nulo.

Ejemplos:

414 Consulta de SQL - Volumen 1


ROUND

Calcule el valor de 873.726, redondeado a 2, 1, 0, -1, -2, -3 y -4 posiciones


decimales, respectivamente.
VALUES (
ROUND(873.726, 2),
ROUND(873.726, 1),
ROUND(873.726, 0),
ROUND(873.726,-1),
ROUND(873.726,-2),
ROUND(873.726,-3),
ROUND(873.726,-4) )

Este ejemplo devuelve:


1 2 3 4 5 6 7
--------- --------- --------- --------- --------- --------- ---------
873.730 873.700 874.000 870.000 900.000 1000.000 0.000

Realice el clculo utilizando los nmeros positivos y negativos.


VALUES (
ROUND(3.5, 0),
ROUND(3.1, 0),
ROUNDROUND(-3.1, 0),
ROUND(-3.5,0) )

Este ejemplo devuelve:


1 2 3 4
---- ---- ---- ----
4.0 3.0 -3.0 -4.0

Captulo 3. Funciones 415


RTRIM

RTRIM
 RTRIM ( expresin-serie ) 

El esquema es SYSIBM. (La versin SYSFUN de esta funcin contina estando


disponible con el soporte para los argumentos LONG VARCHAR y CLOB).

La funcin RTRIM elimina los blancos del final de la expresin-serie.

El argumento puede ser un tipo de datos CHAR, VARCHAR, GRAPHIC o


VARGRAPHIC.
v Si el argumento es una serie grfica de una base de datos DBCS o EUC, se
eliminan los blancos de doble byte de cola.
v Si el argumento es una serie grfica de una base de datos Unicode, se eliminan
los blancos UCS-2 de cola.
v De lo contrario, se eliminan los blancos de un solo byte de cola.

El tipo de datos del resultado de la funcin es:


v VARCHAR si el tipo de datos de expresin-serie es VARCHAR o CHAR
v VARGRAPHIC si el tipo de datos de expresin-serie es VARGRAPHIC o
GRAPHIC

El parmetro de longitud del tipo devuelto es el mismo que el parmetro de


longitud del tipo de datos del argumento.

La longitud real del resultado para las series de caracteres es la de expresin-serie


menos el nmero de bytes eliminados debido a caracteres en blanco. La longitud
real del resultado para series grficas es la longitud (en nmero de caracteres de
doble byte) de expresin-serie menos el nmero de caracteres en blanco de doble
byte eliminados. Si elimina todos los caracteres se obtiene una serie vaca de
longitud variable (longitud de cero).

Si el argumento puede ser nulo, el resultado puede ser nulo; si el argumento es


nulo, el resultado es el valor nulo.

Ejemplo: Supongamos que la variable del lenguaje principal HELLO est definida
como CHAR(9) y tiene el valor Hola.
VALUES RTRIM(:HELLO)

El resultado es Hola.

Informacin relacionada:
v RTRIM (esquema SYSFUN) en la pgina 417

416 Consulta de SQL - Volumen 1


RTRIM (esquema SYSFUN)

RTRIM (esquema SYSFUN)


 RTRIM ( expresin ) 

El esquema es SYSFUN.

Devuelve los caracteres del argumento con los blancos de cola eliminados.

El argumento puede ser de cualquier tipo de datos de serie de caracteres interno.


Para un VARCHAR la longitud mxima es de 4.000 bytes y para un CLOB la
longitud mxima es de 1.048.576 bytes.

El resultado de la funcin es:


v VARCHAR(4000) si el argumento es VARCHAR (no excede de 4.000 bytes) o
CHAR
v CLOB(1 M) si el argumento es CLOB o LONG VARCHAR.

El resultado puede ser nulo; si el argumento es nulo, el resultado es nulo.

Captulo 3. Funciones 417


SECLABEL

SECLABEL
 SECLABEL ( nombre-poltica-seguridad , constante-serie ) 

El esquema es SYSIBM.

La funcin SECLABEL devuelve una etiqueta de seguridad sin nombre, con un


tipo de datos de DB2SECURITYLABEL. Utilice la funcin SECLABEL para insertar
una etiqueta de seguridad con los valores de los componentes proporcionados sin
tener que crear una etiqueta de seguridad con nombre.
nombre-poltica-seguridad
Expresin que devuelve un valor CHAR, VARCHAR, GRAPHIC o
VARGRAPHIC. Esta expresin debe ser el nombre de una poltica de
seguridad que exista en el servidor actual (SQLSTATE 42704).
constante-serie
Constante de caracteres que contiene una representacin vlida de una etiqueta
de seguridad para la poltica de seguridad nombrada por nombre-poltica-
seguridad (SQLSTATE 4274I).

Ejemplos:
v La sentencia siguiente inserta una fila en la tabla REGIONS que est protegida
por la poltica de seguridad CONTRIBUTIONS. SECLABEL proporciona la
etiqueta de seguridad para la fila que se debe insertar. La poltica de seguridad
CONTRIBUTIONS tiene dos componentes. La etiqueta de seguridad
proporcionada tiene el elemento LIFE MEMBER para el primer componente y
los elementos BLUE y YELLOW para el segundo componente.
INSERT INTO REGIONS
VALUES (SECLABEL(CONTRIBUTIONS, LIFE MEMBER:(BLUE,YELLOW)),
1, Northeast)
v La sentencia siguiente inserta una fila en la tabla CASE_IDS que est protegida
por la poltica de seguridad TS_SECPOLICY, que tiene tres componentes. La
funcin SECLABEL proporciona la etiqueta de seguridad. La etiqueta de
seguridad insertada tiene el elemento HIGH PROFILE para el primer
componente, el valor vaco para el segundo componente y el elemento G19 para
el tercer componente.
INSERT INTO CASE_IDS
VALUES (SECLABEL(TS_SECPOLICY,
HIGH PROFILE:():G19) , 3, KLB)

Conceptos relacionados:
v Built-in functions for dealing with LBAC security labels en Administration
Guide: Implementation
v LBAC security labels en Administration Guide: Implementation
v LBAC security policies en Administration Guide: Implementation

Informacin relacionada:
v Format for security label values en Administration Guide: Implementation
v SECLABEL_BY_NAME en la pgina 419
v SECLABEL_TO_CHAR en la pgina 420

418 Consulta de SQL - Volumen 1


SECLABEL_BY_NAME

SECLABEL_BY_NAME
 SECLABEL_BY_NAME ( nombre-poltica-seguridad , nombre-etiqueta-seguridad ) 

El esquema es SYSIBM.

La funcin SECLABEL_BY_NAME devuelve la etiqueta de seguridad especificada.


La etiqueta de seguridad devuelta tiene un tipo de datos de DB2SECURITYLABEL.
Utilice esta funcin para insertar una etiqueta de seguridad con nombre.
nombre-poltica-seguridad
Expresin de serie con un tipo resultante de CHAR, VARCHAR, GRAPHIC o
VARGRAPHIC y un valor que es el nombre de una poltica de seguridad que
existe en el servidor actual (SQLSTATE 42704).
nombre-etiqueta-seguridad
Expresin de serie con un tipo resultante de CHAR, VARCHAR, GRAPHIC o
VARGRAPHIC y un valor que es el nombre de una etiqueta de seguridad para
la poltica de seguridad nombrada por nombre-poltica-seguridad (SQLSTATE
4274I).

Ejemplos:
v La usuaria Tina intenta insertar una fila en la tabla REGIONS, protegida por la
poltica de seguridad CONTRIBUTIONS. Tina desea que la etiqueta de
seguridad EMPLOYEESECLABEL proteja a la fila. Esta sentencia falla porque
CONTRIBUTIONS.EMPLOYEESECLABEL es un identificador desconocido:
INSERT INTO REGIONS
VALUES (CONTRIBUTIONS.EMPLOYEESECLABEL, 1, Southwest) -- incorrecto

Esta sentencia falla porque el primer valor es una serie; no tiene un tipo de
datos de DB2SECURITYLABEL:
INSERT INTO REGIONS
VALUES (CONTRIBUTIONS.EMPLOYEESECLABEL, 1, Southwest) -- incorrecto

Esta sentencia es satisfactoria porque la funcin SECLABEL_BY_NAME


devuelve una etiqueta de seguridad que tiene un tipo de datos de
DB2SECURITYLABEL:
INSERT INTO REGIONS
VALUES (SECLABEL_BY_NAME(CONTRIBUTIONS, EMPLOYEESECLABEL),
1, Southwest) -- correcto

Conceptos relacionados:
v Built-in functions for dealing with LBAC security labels en Administration
Guide: Implementation
v LBAC security labels en Administration Guide: Implementation
v LBAC security policies en Administration Guide: Implementation

Informacin relacionada:
v SECLABEL en la pgina 418
v SECLABEL_TO_CHAR en la pgina 420
v Format for security label values en Administration Guide: Implementation

Captulo 3. Funciones 419


SECLABEL_TO_CHAR

SECLABEL_TO_CHAR
 SECLABEL_TO_CHAR ( nombre-poltica-seguridad , etiqueta-seguridad ) 

El esquema es SYSIBM.

La funcin SECLABEL_TO_CHAR acepta una etiqueta de seguridad y devuelve


una serie que contiene todos los elementos de la etiqueta de seguridad. La serie
tiene el formato de la serie de la etiqueta de seguridad.
nombre-poltica-seguridad
Expresin que devuelve un valor CHAR, VARCHAR, GRAPHIC o
VARGRAPHIC. Esta expresin debe ser el nombre de una poltica de
seguridad que exista en el servidor actual (SQLSTATE 42704).
etiqueta-seguridad
Expresin que devuelve un valor de etiqueta de seguridad vlido para la
poltica de seguridad nombrada por nombre-poltica-seguridad (SQLSTATE
4274I).

Notas:
v Si el ID de autorizacin de la sentencia ejecuta esta funcin en una etiqueta de
seguridad que se lee desde una columna con un tipo de datos de
DB2SECURITYLABEL, entonces las credenciales LBAC de los ID de autorizacin
pueden afectar a la salida de la funcin. En tal caso no se incluye un elemento
en la salida si el ID de autorizacin no dispone de acceso de lectura a ese
elemento. Un ID de autorizacin tiene acceso de lectura a un elemento si sus
credenciales LBAC permitiesen leer datos protegidos por una etiqueta de
seguridad que slo contiene ese elemento, y no otros.
Para el conjunto de normas DB2LBACRULES, slo los componentes del tipo
TREE pueden contener elementos para los que no tenga acceso de lectura. Para
otros tipos de componentes, si alguno de los elementos bloquea el acceso de
lectura, el usuario no podr leer la fila. De este modo, slo los componentes de
tipo rbol tendrn elementos excluidos.

Ejemplo:
v La tabla EMP tiene dos columnas: RECORDNUM y LABEL. RECORDNUM
tiene tipo de datos INTEGER y LABEL tiene tipo de datos
DB2SECURITYLABEL. La tabla EMP est protegida por la poltica de seguridad
DATA_ACCESSPOLICY, que utiliza el conjunto de normas DB2LBACRULES y
que tiene un nico componente (GROUPS, de tipo TREE). GROUPS tiene cinco
elementos: PROJECT, TEST, DEVELOPMENT, CURRENT y FIELD. El diagrama
siguiente muestra la relacin de estos elementos entre s:
PROJECT
________|________
| |
TEST DEVELOPMENT
______|______
| |
CURRENT FIELD
La tabla EMP contiene los datos siguientes:
RECORDNUM LABEL
--------- ----------------
1 PROJECT
2 (TEST, FIELD)
3 (CURRENT, FIELD)

420 Consulta de SQL - Volumen 1


SECLABEL_TO_CHAR

Djavan tiene una etiqueta de seguridad para lectura que slo contiene el
elemento DEVELOPMENT. Esto significa que Djavan tiene acceso de lectura
para los elementos DEVELOPMENT, CURRENT y FIELD:
SELECT RECORDNUM, SECLABEL_TO_CHAR(DATA_ACCESSPOLICY, LABEL) FROM EMP

devuelve:
RECORDNUM LABEL
--------- ----------------
2 FIELD
3 (CURRENT, FIELD)
La fila con un valor de 1 para RECORDNUM no est incluida en la salida,
porque las credenciales LBAC de Djavan no le permiten leer esta fila. En la fila
con un valor de 2 para RECORDNUM, el elemento TEST no est incluido en la
salida, porque Djavan no tiene acceso de lectura a ese elemento; Djavan no
podra haber accedido a la fila si TEST fuera el nico elemento en la etiqueta de
seguridad. Los elementos CURRENT y FIELD aparecen en la salida, porque
Djavan tiene acceso de lectura a ellos.
Ahora Djavan tiene otorgada una exencin para la norma DB2LBACREADTREE.
Esto significa que ningn elemento de un componente de tipo TREE bloquear
el acceso de lectura. La misma consulta devuelve:
RECORDNUM LABEL
--------- ----------------
1 PROJECT
2 (TEST, FIELD)
3 (CURRENT, FIELD)

Esta vez la salida contiene todas las filas y todos los elementos, porque la
exencin concede a Djavan el acceso de lectura para todos los elementos.

Conceptos relacionados:
v Built-in functions for dealing with LBAC security labels en Administration
Guide: Implementation
v LBAC security labels en Administration Guide: Implementation
v LBAC security policies en Administration Guide: Implementation

Informacin relacionada:
v SECLABEL en la pgina 418
v SECLABEL_BY_NAME en la pgina 419
v Format for security label values en Administration Guide: Implementation

Captulo 3. Funciones 421


SECOND

SECOND
 SECOND ( expresin ) 

El esquema es SYSIBM.

La funcin SECOND devuelve la parte correspondiente a los segundos de un valor.

El argumento debe ser una hora, una indicacin de fecha y hora, una duracin de
la hora, una duracin de la indicacin de fecha y hora o una representacin de
serie de caracteres vlida de una hora o de una fecha y hora que no sea CLOB ni
LONG VARCHAR. En una base de datos Unicode, si un argumento proporcionado
es una serie grfica, se convertir a una serie de caracteres antes de que se ejecute
la funcin.

El resultado de la funcin es un entero grande. Si el argumento puede ser nulo, el


resultado puede ser nulo; si el argumento es nulo, el resultado es el valor nulo.

Las dems reglas dependen del tipo de datos del argumento:


v Si el argumento es una hora, una indicacin de fecha y hora o una
representacin de serie vlida de una hora o de una fecha y hora:
El resultado es la parte correspondiente a los segundos del valor, que es un
entero entre 0 y 59.
v Si el argumento es una duracin de hora o una duracin de indicacin de fecha
y hora:
El resultado es la parte correspondiente a los segundos del valor, que es un
entero entre 99 y 99. El resultado que no es cero tiene el mismo signo que el
argumento.

Ejemplos:
v Supongamos que la variable del lenguaje principal TIME_DUR (decimal(6,0))
tiene el valor 153045.
SECOND(:TIME_DUR)
Devuelve el valor 45.
v Supongamos que la columna RECEIVED (indicacin de fecha y hora) tiene un
valor interno equivalente a 1988-12-25-17.12.30.000000.
SECOND(RECEIVED)
Devuelve el valor 30.

422 Consulta de SQL - Volumen 1


SIGN

SIGN
 SIGN ( expresin ) 

Devuelve un indicador del signo del argumento. Si el argumento es menor que


cero, devuelve 1. Si el argumento es igual a cero, devuelve 0. Si el argumento es
mayor que cero, devuelve 1.

El argumento puede ser de cualquier tipo de datos interno. Los valores


DECIMALES y REALES se convierten a nmeros de coma flotante de precisin
doble para que los procese la funcin.

El resultado de la funcin es:


v SMALLINT si el argumento es SMALLINT
v INTEGER si el argumento es INTEGER
v BIGINT si el argumento es BIGINT
v de lo contrario, DOUBLE.

El resultado puede ser nulo; si el argumento es nulo, el resultado es el valor nulo.

Captulo 3. Funciones 423


SIN

SIN
 SIN ( expresin ) 

El esquema es SYSIBM. (La versin SYSFUN de la funcin SIN contina estando


disponible).

Devuelve el seno del argumento, donde el argumento es un ngulo expresado en


radianes.

El argumento puede ser de cualquier tipo de datos interno. Se convierte a un


nmero de coma flotante de precisin doble para que lo procese la funcin.

El resultado de la funcin es un nmero de coma flotante de precisin doble. El


resultado puede ser nulo si el argumento puede ser nulo o la base de datos est
configurada con DFT_SQLMATHWARN establecido en YES; el resultado es el
valor nulo si el argumento es nulo.

424 Consulta de SQL - Volumen 1


SINH

SINH SINH
 SINH ( expresin ) 

El esquema es SYSIBM.

Devuelve el seno hiperblico del argumento, donde el argumento es un ngulo


expresado en radianes.

El argumento puede ser de cualquier tipo de datos interno. Se convierte a un


nmero de coma flotante de precisin doble para que lo procese la funcin.

El resultado de la funcin es un nmero de coma flotante de precisin doble. El


resultado puede ser nulo si el argumento puede ser nulo o la base de datos est
configurada con DFT_SQLMATHWARN establecido en YES; el resultado es el
valor nulo si el argumento es nulo.

Captulo 3. Funciones 425


SMALLINT

SMALLINT
 SMALLINT ( expresin-numrica ) 
expresin-caracteres

El esquema es SYSIBM.

La funcin SMALLINT devuelve una representacin de entero pequeo de un


nmero o serie de caracteres en el formato de una constante de enteros pequeos.
En una base de datos Unicode, si un argumento proporcionado es una serie
grfica, se convertir a una serie de caracteres antes de que se ejecute la funcin.
expresin-numrica
Una expresin que devuelve un valor de cualquier tipo de datos numrico
interno.
Si el argumento es una expresin-numrica, el resultado es el mismo nmero que
sera si el argumento se asignase a una columna o variable de enteros
pequeos. Si la parte correspondiente a los enteros del argumento no est
dentro del rango de enteros pequeos, se produce un error. La parte
correspondiente a los decimales del argumento se trunca si est presente.
expresin-caracteres
Una expresin que devuelve un valor de serie de caracteres de longitud no
mayor que la longitud mxima de una constante de caracteres. Se eliminan los
blancos iniciales y de cola y la serie resultante debe ajustarse a las reglas para
la formacin de una constante de enteros SQL (SQLSTATE 22018). Sin
embargo, el valor de la constante debe estar en el rango de enteros pequeos
(SQLSTATE 22003). La serie de caracteres no puede ser una serie larga.
Si el argumento es una expresin-caracteres, el resultado es el mismo nmero
que sera si la constante de enteros correspondiente se asignase a una columna
o variable de enteros pequeos.

El resultado de la funcin es un entero pequeo. Si el argumento puede ser nulo,


el resultado puede ser nulo; si el argumento es nulo, el resultado es el valor nulo.

426 Consulta de SQL - Volumen 1


SOUNDEX

SOUNDEX
 SOUNDEX ( expresin ) 

El esquema es SYSFUN.

Devuelve un cdigo de 4 caracteres que representa el sonido de las palabras del


argumento. El resultado se puede utilizar para compararlo con el sonido de otras
series.

El argumento puede ser una serie de caracteres de tipo CHAR o VARCHAR, cuya
longitud no sea mayor que 4.000 bytes. En una base de datos Unicode, si un
argumento proporcionado es una serie grfica, se convertir a una serie de
caracteres antes de que se ejecute la funcin.

El resultado de la funcin es CHAR(4). El resultado puede ser nulo; si el


argumento es nulo, el resultado es el valor nulo.

La funcin SOUNDEX es til para buscar series de las que se conoce el sonido
pero no su ortografa exacta. Realiza suposiciones de la manera en que el sonido
de las letras y de la combinacin de letras puede ayudar a buscar palabras con
sonidos similares. La comparacin puede realizarse directamente o pasando las
series como argumentos a la funcin DIFFERENCE.

Ejemplo:

Utilizando la tabla EMPLOYEE, busque el EMPNO y el LASTNAME del empleado


cuyo apodo suena como Loucesy.
SELECT EMPNO, LASTNAME FROM EMPLOYEE
WHERE SOUNDEX(LASTNAME) = SOUNDEX(Loucesy)

Este ejemplo devuelve lo siguiente:


EMPNO LASTNAME
------ ---------------
000110 LUCCHESSI

Informacin relacionada:
v DIFFERENCE en la pgina 341

Captulo 3. Funciones 427


SPACE

SPACE
 SPACE ( expresin ) 

El esquema es SYSFUN.

Devuelve una serie de caracteres que consta de blancos con la longitud


especificada por el segundo argumento.

El argumento puede ser SMALLINT o INTEGER.

El resultado de la funcin es VARCHAR(4000). El resultado puede ser nulo; si el


argumento es nulo, el resultado es el valor nulo.

428 Consulta de SQL - Volumen 1


SQRT

SQRT
 SQRT ( expresin ) 

El esquema es SYSFUN.

Devuelve la raz cuadrada del argumento.

El argumento puede ser de cualquier tipo de datos numrico interno. Se convierte


a un nmero de coma flotante de precisin doble para que lo procese la funcin.

El resultado de la funcin es un nmero de coma flotante de precisin doble. El


resultado puede ser nulo; si el argumento es nulo, el resultado es el valor nulo.

Captulo 3. Funciones 429


STRIP

STRIP
 STRIP ( expresin-serie ) 
, BOTH
B , carcter-supresin
LEADING
L
TRAILING
T

El esquema es SYSIBM. El nombre de la funcin no puede especificarse como


nombre calificado si se utilizan palabras clave en la signatura de la funcin.

La funcin STRIP suprime blancos o las apariciones de otro carcter especificado


del final o del principio de una expresin de serie.

La funcin STRIP es idntica a la funcin escalar TRIM.


expresin-serie
Una expresin que devuelve un valor que es del tipo de datos CHAR,
VARCHAR, GRAPHIC o VARGRAPHIC.
BOTH, LEADING o TRAILING
Especifica si se suprimen los caracteres del principio, del final o de ambos
extremos de la expresin de serie. Si no se especifica este argumento, se
suprimen los caracteres del final y del principio de la serie.
carcter-supresin
Una constante de un slo carcter que especifica el carcter que se ha de
suprimir. Si no se especifica el carcter-supresin y:
v Si la expresin-serie es una serie de grficos DBCS, el valor por omisin para
carcter-supresin es un blanco DBCS, cuyo punto de cdigo depende de la
pgina de cdigos de base de datos
v Si la expresin-serie es una serie de grficos UCS-2, el valor por omisin para
carcter-supresin es un blanco UCS-2 (X'0020')
v De lo contrario, el valor por omisin para carcter-supresin es un blanco
SBCS (X'20')

El resultado es una serie de longitud variable con la misma longitud mxima que
el atributo de longitud de la expresin-serie. La longitud real del resultado es la
longitud de la expresin-serie menos el nmero de bytes que se ha de suprimir. Si se
suprimen todos los caracteres, el resultado es una serie de longitud variable vaca.
La pgina de cdigos del resultado es la misma que la pgina de cdigos de la
expresin-serie.

Ejemplo:
v Supongamos que la variable BALANCE de sistema principal de tipo CHAR(9)
tiene un valor 000345.50.
SELECT STRIP(:BALANCE, LEADING, 0),
FROM SYSIBM.SYSDUMMY1

devuelve el valor 345.50.

Informacin relacionada:
v en la pgina 453

430 Consulta de SQL - Volumen 1


SUBSTR

SUBSTR
 SUBSTR ( serie , inicio ) 
, longitud

La funcin SUBSTR devuelve una subserie de una serie.

Si la serie es una serie de caracteres, el resultado de la funcin es una serie de


caracteres representada en la pgina de cdigos del primer argumento. Si es una
serie binaria, el resultado de la funcin es una serie binaria. Si es una serie grfica,
el resultado de la funcin es una serie grfica representada en la pgina de cdigos
del primer argumento. Si el primer argumento es una variable de lenguaje
principal, la pgina de cdigos del resultado es una pgina de cdigos la base de
datos. Si cualquier argumento de la funcin SUBSTR puede ser nulo, el resultado
puede ser nulo; si el argumento es nulo, el resultado es el valor nulo.
serie
Una expresin que especifica la serie de la que se deriva el resultado.
Si la serie es una serie de caracteres o una serie binaria, una subserie de serie es
cero o ms bytes contiguos de la serie. Si la serie es una serie grfica, una
subserie de serie es cero o ms caracteres de doble byte contiguos de serie.
inicio
Una expresin que especifica la posicin del primer byte del resultado de una
serie de caracteres o de una serie binaria o la posicin del primer carcter del
resultado de una serie grfica. inicio debe ser un entero entre 1 y la longitud o
la longitud mxima de la serie, segn si la serie es de longitud fija o de
longitud variable (SQLSTATE 22011, si est fuera de rango). Se debe especificar
como nmero de bytes en el contexto de la pgina de cdigos de la base de
datos, no de la pgina de cdigos de la aplicacin.
longitud
Una expresin que especifica la longitud del resultado. Si se especifica, la
longitud debe ser un entero binario en el rango de 0 a n, donde n es igual (el
atributo de longitud de la serie) inicio + 1 (SQLSTATE 22011, si est fuera de
rango).
Si longitud se especifica explcitamente, serie se rellena por la derecha con el
nmero necesario de caracteres en blanco (de un solo byte para series de
caracteres; de doble byte para series grficas) o caracteres cero hexadecimales
(para las series BLOB) para que la subserie especificada de serie exista siempre.
El valor por omisin para la longitud es el nmero de bytes desde el byte
especificado por el inicio hasta el ltimo byte de la serie en el caso de la serie
de caracteres o la serie binaria o el nmero de caracteres de doble byte del
carcter especificado por el inicio al ltimo carcter de la serie en el caso de una
serie grfica. Sin embargo, si la serie es una serie de longitud variable con una
longitud menor que el inicio, el valor por omisin es cero y el resultado es la
serie vaca. Se debe especificar como nmero de bytes en el contexto de la
pgina de cdigos de la base de datos, no de la pgina de cdigos de la
aplicacin. (Por ejemplo, la columna NAME con un tipo de datos de
VARCHAR(18) y un valor de 'MCKNIGHT' dar una serie vaca con
SUBSTR(NAME,10).)

La Tabla 28 en la pgina 432 muestra que el tipo del resultado y la longitud de la


funcin SUBSTR depende del tipo y los atributos de sus entradas.

Captulo 3. Funciones 431


SUBSTR

Tabla 28. Tipo de datos y longitud del resultado de SUBSTR


Tipo de datos del Tipo de datos del
argumento de la serie Argumento de la longitud resultado
CHAR(A) constant (l<255) CHAR(l)
CHAR(A) no especificado pero el argumento inicio CHAR(A-inicio+1)
es una constante
CHAR(A) no es una constante VARCHAR(A)

VARCHAR(A) constant (l<255) CHAR(l)


VARCHAR(A) constant (254<l<32673) VARCHAR(l)
VARCHAR(A) no es una constante o no se especifica VARCHAR(A)

LONG VARCHAR constant (l<255) CHAR(l)

LONG VARCHAR constant (254<l<4001) VARCHAR(l)


LONG VARCHAR constant (l>4000) LONG VARCHAR
LONG VARCHAR no es una constante o no se especifica LONG VARCHAR

CLOB(A) constant (l) CLOB(l)


CLOB(A) no es una constante o no se especifica CLOB(A)

GRAPHIC(A) constant (l<128) GRAPHIC(l)


GRAPHIC(A) no especificado pero el argumento inicio GRAPHIC(A-inicio+1)
es una constante
GRAPHIC(A) no es una constante VARGRAPHIC(A)

VARGRAPHIC(A) constant (l<128) GRAPHIC(l)


VARGRAPHIC(A) constant (127<l<16337) VARGRAPHIC(l)
VARGRAPHIC(A) no es una constante VARGRAPHIC(A)

LONG VARGRAPHIC constant (l<128) GRAPHIC(l)


LONG VARGRAPHIC constant (127<l<2001) VARGRAPHIC(l)
LONG VARGRAPHIC constant (l>2000) LONG VARGRAPHIC
LONG VARGRAPHIC no es una constante o no se especifica LONG VARGRAPHIC

DBCLOB(A) constant (l) DBCLOB(l)


DBCLOB(A) no es una constante o no se especifica DBCLOB(A)

BLOB(A) constant (l) BLOB(l)


BLOB(A) no es una constante o no se especifica BLOB(A)

432 Consulta de SQL - Volumen 1


SUBSTR

Si la serie es una serie de longitud fija, la omisin de la longitud equivale


implcitamente a especificar LENGTH(serie) - inicio + 1. Si la serie es una serie de
longitud variable, la omisin de la longitud equivale implcitamente a especificar 0
o LENGTH(serie) - inicio + 1, lo que sea mayor.

Ejemplos:
v Supongamos que la variable del lenguaje principal NAME (VARCHAR(50)) tiene
un valor de BLUE JAY y la variable del lenguaje principal SURNAME_POS
(int) tiene un valor de 6.
SUBSTR(:NAME, :SURNAME_POS)

Devuelve el valor 'JAY'


SUBSTR(:NAME, :SURNAME_POS,1)

Devuelve el valor 'J'.


v Seleccione todas las filas de la tabla PROJECT para las que el nombre del
proyecto (PROJNAME) empiece por la palabra OPERATION .
SELECT * FROM PROJECT
WHERE SUBSTR(PROJNAME,1,10) = OPERATION

El espacio al final de la constante es necesario como preludio de las palabras


iniciales como OPERATIONS.
Notas:
1. En SQL dinmico, serie, inicio y longitud pueden estar representados por un
marcador de parmetros (?). Si se utiliza un marcador de parmetros para la
serie, el tipo de datos del operando ser VARCHAR y el operando podr
contener nulos.
2. Aunque no se indique explcitamente en las definiciones del resultado
anteriores, se deriva de esta semntica que si la serie es una serie de caracteres
mixtos de un solo byte y de mltiples bytes, el resultado puede contener
fragmentos de caracteres de mltiples bytes, segn los valores de inicio y
longitud. Es decir, posiblemente el resultado podra empezar en el segundo byte
de un carcter de doble byte y/o finalizar en el primer byte de un carcter de
doble byte. La funcin SUBSTR no detecta dichos fragmentos, ni proporciona
ningn proceso especial si se producen.

Informacin relacionada:
v Series de caracteres en la pgina 91

Captulo 3. Funciones 433


SUBSTRING

SUBSTRING
 SUBSTRING ( 

 expresin FROM inicio USING CODEUNITS16 ) 


FOR longitud CODEUNITS32
OCTETS
expresin , inicio , CODEUNITS16
, longitud CODEUNITS32
OCTETS

El esquema es SYSIBM.

La funcin SUBSTRING devuelve una subserie de una serie.


expresin
Una expresin que devuelve un valor de cualquier tipo de datos de serie
interno. Si la expresin es una serie de caracteres, el resultado es una serie de
caracteres. Si la expresin es una serie grfica, el resultado de la funcin es una
serie grfica. Si la expresin es una serie binaria, el resultado de la funcin es
una serie binaria.
Una subserie de la expresin son cero o ms unidades de la serie de caracteres
contiguas de la expresin.
inicio
Una expresin que especifica la posicin dentro de la expresin que ha de ser la
primera unidad de la serie del resultado; inicio, que se expresa en la unidad de
la serie de caracteres especificada, debe devolver un entero. El valor de inicio
puede ser un valor positivo, negativo o cero. El valor 1 indica que la primera
unidad de la serie de caracteres es la primera unidad de la serie de caracteres
de la expresin. Si se especifica OCTETS y la expresin son date grficos, inicio
debe ser impar, de lo contrario, se devuelve un error (SQLSTATE 428GC).
longitud
Una expresin que especifica la longitud de la subserie deseada.
Si la expresin es una serie de longitud fija, la omisin de longitud ser una
especificacin implcita de expresin USING unidad-serie) - inicio + 1, que es el
nmero de unidades-serie (CODEUNITS16, CODEUNITS32 o OCTETS) desde el
inicio hasta la ltima posicin de la expresin. Si expresin es una serie de
caracteres de longitud variable, la omisin de longitud ser una especificacin
implcita de cero o CHARACTER_LENGTH(expresin USING unidad-serie) -
inicio + 1, el que sea mayor. Si la longitud deseada es cero, el resultado es una
serie de caracteres vaca.
Si se especifica la longitud debe ser una expresin que devuelve un valor que
es un tipo de datos entero interno. El valor debe ser mayor o igual a cero y
menor o igual a n, donde n es el (atributo de longitud de la expresin) - inicio +
1; la longitud se expresa en las unidades que se especifican explcitamente. Si se
especifica OCTETS y la expresin son datos grficos, la longituddebe ser un
nmero par (SQLSTATE 428GC).
CODEUNITS16, CODEUNITS32 u OCTETS
Especifica la unidad de la serie de inicio y longitud. CODEUNITS16 especifica
que inicio y longitud deben expresarse en unidades de cdigo UFT-16 de 16 bits.

434 Consulta de SQL - Volumen 1


SUBSTRING

CODEUNITS32 especifica que el inicio y la longitud se han de expresar en


unidades de cdigo UTF-32 de 32 bits. OCTETS especifica que inicio y longitud
deben expresarse en bytes.
Si la unidad de la serie se especifica como CODEUNITS16 o CODEUNITS32 y
la expresin es una serie binaria o datos de bits, se devuelve un error
(SQLSTATE 428GC). Si la unidad de la serie se especifica como OCTETS y la
expresin es una serie binaria, se devuelve un error (SQLSTATE 42815).
Para obtener ms informacin acerca de CODEUNITS16, CODEUNITS32 y
OCTETS, consulte Unidades de serie en funciones incorporadas en Series de
caracteres.
Cuando se invoca la funcin SUBSTRING utilizando OCTETS, y la serie-origen
se codifica en una pgina de cdigos que requiere ms de un byte por punto
de cdigo (combinados o MBCS), la operacin SUBSTRING debe dividir un
punto de cdigo de varios bytes y la subserie resultante puede comenzar o
finalizar con un punto de cdigo parcial. Si sucede esto, la funcin sustituye
los bytes de los puntos de cdigo parciales iniciales o de cola por blancos de
modo que no se modifique la longitud de bytes del resultado. Consulte, a
continuacin, un ejemplo relacionado.

El atributo de longitud del resultado es igual al atributo de longitud de la


expresin. Si cualquier argumento de la funcin puede ser nulo, el resultado puede
ser nulo; si el argumento es nulo, el resultado es el valor nulo. El resultado no se
rellena con ningn carcter. Si la expresin tiene la longitud real 0, el resultado
tambin tiene la longitud real 0.

Notas:
v El atributo de longitud del resultado es igual al atributo de longitud de la
expresin de la serie de entrada. Este comportamiento es diferente del
comportamiento de la funcin SUBSTR, donde el atributo de longitud se obtiene
a partir de los argumentos inicio y longitud de la funcin.

Ejemplos:
v Seleccione todas las filas de la tabla PROJECT para las que el nombre del
proyecto (PROJNAME) empiece por la palabra OPERATION . El espacio al
final de la constante es necesario como preludio de las palabras iniciales como
OPERATIONS.
SELECT * FROM PROJECT
WHERE SUBSTRING(PROJNAME, 1, 10) = OPERATION
v FIRSTNAME es una columna VARCHAR(12) de la tabla T1. Uno de sus valores
es la serie de 6 caracteres Jrgen. Cuanto FIRSTNAME tiene este valor:
Funcin ... Devuelve ...
------------------------------------ ------------------------------------
SUBSTRING(FIRSTNAME,1,2,CODEUNITS32) J -- x4AC3BC
SUBSTRING(FIRSTNAME,1,2,CODEUNITS16) J -- x4AC3BC
SUBSTRING(FIRSTNAME,1,2,OCTETS) J -- x4A20 (una serie truncada)
SUBSTRING(FIRSTNAME,8,CODEUNITS16) una serie de longitud cero
SUBSTRING(FIRSTNAME,8,4,OCTETS) una serie de longitud cero
v C1 es una columna VARCHAR(12) de la tabla T1. Uno de sus valores es la serie
de caracteres ABCDEFG. Cuando C1 tiene este valor:
Funcin ... Devuelve ...
------------------------- --------------------
SUBSTRING(C1,-2,2,OCTETS) una serie de longitud cero
SUBSTRING(C1,-2,4,OCTETS) A
SUBSTRING(C1,-2,OCTETS) ABCDEFG
SUBSTRING(C1,0,1,OCTETS) una serie de longitud de cero

Captulo 3. Funciones 435


SUBSTRING

v El ejemplo siguiente ilustra cmo SUBSTRING sustituye los bytes de los puntos
de cdigo de mltiples bytes parciales iniciales o de cola con blancos cuando la
unidad de longitud de la serie de caracteres es OCTETS. Presupone que
UTF8_VAR contiene la representacin UTF-8 de la serie Unicode &N~AB,
donde & es el smbolo musical de la clave de sol y ~ es el carcter de tilde de
combinacin.
SUBSTRING(UTF8_VAR, 2, 5, OCTETS)

Tres bytes en blanco preceden la N y un byte en blanco sigue a la N.

Informacin relacionada:
v CHARACTER_LENGTH en la pgina 313
v OCTET_LENGTH en la pgina 394
v POSITION en la pgina 395
v SUBSTR en la pgina 431

436 Consulta de SQL - Volumen 1


TABLE_NAME

TABLE_NAME
 TABLE_NAME ( nombreobjeto ) 
, esquemaobjeto

El esquema es SYSIBM.

La funcin TABLE_NAME devuelve un nombre no calificado del objeto encontrado


despus de que se haya resuelto cualquier cadena de seudnimos. El nombreobjeto
especificado (y el esquemaobjeto) se utilizan como el punto de inicio de la
resolucin. Si el punto de inicio no hace referencia a un seudnimo, se devuelve el
nombre no calificado del punto de inicio. El nombre resultante puede ser de una
tabla, de una vista o de un objeto no definido. En una base de datos Unicode, si un
argumento proporcionado es una serie grfica, se convertir a una serie de
caracteres antes de que se ejecute la funcin.
nombreobjeto
Una expresin de caracteres que representa el nombre no calificado
(normalmente de un seudnimo existente) que se ha de resolver. El tipo de
datos de nombreobjeto debe ser CHAR o VARCHAR y su longitud ser mayor
que 0 y menor que 129 bytes.
esquemaobjeto
Una expresin de caracteres que representa el esquema utilizado para calificar
el valor del nombreobjeto suministrado antes de la resolucin. El tipo de datos
de esquemaobjeto debe ser CHAR o VARCHAR y su longitud ser mayor que 0 y
menor que 129 bytes.
Si no se suministra el esquemaobjeto, se utiliza el esquema por omisin para el
calificador.

El tipo de datos del resultado de la funcin es VARCHAR(128). Si nombreobjeto


puede ser nulo, el resultado puede ser nulo; si nombreobjeto es nulo, el resultado es
el valor nulo. Si esquemaobjeto es el valor nulo, se utiliza el nombre de esquema por
omisin. El resultado es la serie de caracteres que representa un nombre no
calificado. El nombre del resultado puede representar uno de los siguientes
elementos:
tabla El valor para el nombreobjeto era un nombre de tabla (se devuelve el valor
de entrada) o un seudnimo que se ha resuelto en la tabla cuyo nombre se
devuelve.
vista El valor para el nombreobjeto era un nombre de vista (se devuelve el valor
de entrada) o un seudnimo que se ha resuelto en la vista cuyo nombre se
devuelve.
objeto no definido
El valor para el nombreobjeto era un objeto no definido (se devuelve el valor
de entrada) o un seudnimo que se ha resuelto en el objeto no definido
cuyo nombre se devuelve.

Por lo tanto, si se da un valor no nulo a esta funcin, siempre se devuelve un


valor, incluso si no existe ningn objeto con el nombre del resultado.

Captulo 3. Funciones 437


TABLE_SCHEMA

TABLE_SCHEMA
 TABLE_SCHEMA ( nombreobjeto ) 
, esquemaobjeto

El esquema es SYSIBM.

La funcin TABLE_SCHEMA devuelve el nombre de esquema del objeto


encontrado despus de que se haya resuelto cualquier cadena de seudnimos. El
nombreobjeto especificado (y el esquemaobjeto) se utilizan como el punto de inicio de
la resolucin. Si el punto de inicio no hace referencia a un seudnimo, se devuelve
el nombre de esquema del punto de inicio. El nombre de esquema resultante
puede ser de una tabla, de una vista o de un objeto no definido. En una base de
datos Unicode, si un argumento proporcionado es una serie grfica, se convertir a
una serie de caracteres antes de que se ejecute la funcin.
nombreobjeto
Una expresin de caracteres que representa el nombre no calificado
(normalmente de un seudnimo existente) que se ha de resolver. El tipo de
datos de nombreobjeto debe ser CHAR o VARCHAR y su longitud ser mayor
que 0 y menor que 129 bytes.
esquemaobjeto
Una expresin de caracteres que representa el esquema utilizado para calificar
el valor del nombreobjeto suministrado antes de la resolucin. El tipo de datos
de esquemaobjeto debe ser CHAR o VARCHAR y su longitud ser mayor que 0 y
menor que 129 bytes.
Si no se suministra el esquemaobjeto, se utiliza el esquema por omisin para el
calificador.

El tipo de datos del resultado de la funcin es VARCHAR(128). Si nombreobjeto


puede ser nulo, el resultado puede ser nulo; si nombreobjeto es nulo, el resultado es
el valor nulo. Si esquemaobjeto es el valor nulo, se utiliza el nombre de esquema por
omisin. El resultado es la serie de caracteres que representa un nombre de
esquema. El esquema del resultado puede representar el nombre de esquema para
uno de los siguientes elementos:
tabla El valor para el nombreobjeto era un nombre de tabla (se devuelve la
entrada o el valor por omisin de esquemaobjeto) o un seudnimo que se ha
resuelto en una tabla para la que se devuelve el nombre de esquema.
vista El valor para el nombreobjeto era un nombre de vista (se devuelve la
entrada o el valor por omisin de esquemaobjeto) o un seudnimo que se ha
resuelto en una vista para la que se devuelve el nombre de esquema.
objeto no definido
El valor para el nombreobjeto era un objeto no definido (se devuelve la
entrada o el valor por omisin de esquemaobjeto) o un seudnimo que se ha
resuelto en un objeto no definido para el que se devuelve el nombre de
esquema.

Por lo tanto, si se da a esta funcin un valor de nombreobjeto que no es nulo,


siempre se devuelve un valor, incluso si el nombre de objeto con el nombre de
esquema del resultado no existe. Por ejemplo, TABLE_SCHEMA(DEPT, PEOPLE)
devuelve 'PEOPLE ' si no se encuentra la entrada del catlogo.

438 Consulta de SQL - Volumen 1


TABLE_SCHEMA

Ejemplos:
v PBIRD intenta seleccionar las estadsticas para una tabla determinada de
SYSCAT.TABLES utilizando un seudnimo PBIRD.A1 definido en la tabla
HEDGES.T1.
SELECT NPAGES, CARD FROM SYSCAT.TABLES
WHERE TABNAME = TABLE_NAME (A1)
AND TABSCHEMA = TABLE_SCHEMA (A1)
Las estadsticas solicitadas para HEDGES.T1 se recuperan del catlogo.
v Seleccione las estadsticas para un objeto llamado HEDGES.X1 de
SYSCAT.TABLES utilizando HEDGES.X1. Utilice TABLE_NAME y
TABLE_SCHEMA ya que no se conoce si HEDGES.X1 es un seudnimo o una
tabla.
SELECT NPAGES, CARD FROM SYSCAT.TABLES
WHERE TABNAME = TABLE_NAME (X1,HEDGES)
AND TABSCHEMA = TABLE_SCHEMA (X1,HEDGES)
Suponiendo que HEDGES.X1 sea una tabla, las estadsticas solicitadas para
HEDGES.X1 se recuperan del catlogo.
v Seleccione las estadsticas para una tabla determinada de SYSCAT.TABLES
utilizando un seudnimo PBIRD.A2 definido en HEDGES.T2 donde HEDGES.T2
no existe.
SELECT NPAGES, CARD FROM SYSCAT.TABLES
WHERE TABNAME = TABLE_NAME (A2,PBIRD)
AND TABSCHEMA = TABLE_SCHEMA (A2,PBIRD)
La sentencia devuelve 0 registros ya que no se encuentra ninguna entrada en
SYSCAT.TABLES que coincida donde TABNAME = T2 y TABSCHEMA =
HEDGES.
v Seleccione el nombre calificado de cada entrada en SYSCAT.TABLES junto con el
nombre de referencia final para cualquier entrada de seudnimo.
SELECT TABSCHEMA AS SCHEMA, TABNAME AS NAME,
TABLE_SCHEMA (BASE_TABNAME, BASE_TABSCHEMA) AS REAL_SCHEMA,
TABLE_NAME (BASE_TABNAME, BASE_TABSCHEMA) AS REAL_NAME
FROM SYSCAT.TABLES
La sentencia devuelve el nombre calificado para cada objeto en el catlogo y el
nombre de referencia final (despus de haberse resuelto el seudnimo) para
cualquier entrada de seudnimo. Para todas las entradas que no son
seudnimos, BASE_TABNAME y BASE_TABSCHEMA son nulos, por lo tanto
las columnas REAL_SCHEMA y REAL_NAME contendrn nulos.

Captulo 3. Funciones 439


TAN

TAN
 TAN ( expresin ) 

El esquema es SYSIBM. (La versin SYSFUN de la funcin TAN contina estando


disponible).

Devuelve la tangente del argumento, donde el argumento es un ngulo expresado


en radianes.

El argumento puede ser de cualquier tipo de datos numrico interno. Se convierte


a un nmero de coma flotante de precisin doble para que lo procese la funcin.

El resultado de la funcin es un nmero de coma flotante de precisin doble. El


resultado puede ser nulo si el argumento puede ser nulo o la base de datos est
configurada con DFT_SQLMATHWARN establecido en YES; el resultado es el
valor nulo si el argumento es nulo.

440 Consulta de SQL - Volumen 1


TANH

TANH
 TANH ( expresin ) 

El esquema es SYSIBM.

Devuelve la tangente hiperblica del argumento, donde el argumento es un ngulo


expresado en radianes.

El argumento puede ser de cualquier tipo de datos interno. Se convierte a un


nmero de coma flotante de precisin doble para que lo procese la funcin.

El resultado de la funcin es un nmero de coma flotante de precisin doble. El


resultado puede ser nulo si el argumento puede ser nulo o la base de datos est
configurada con DFT_SQLMATHWARN establecido en YES; el resultado es el
valor nulo si el argumento es nulo.

Captulo 3. Funciones 441


TIME

TIME
 TIME ( expresin ) 

El esquema es SYSIBM.

La funcin TIME devuelve una hora de un valor.

El argumento debe ser una hora, una indicacin de fecha y hora o una
representacin de serie vlida de una hora o de una indicacin de fecha y hora que
no sea CLOB, LONG VARCHAR, DBCLOB ni LONG VARGRAPHIC.

Slo las bases de datos Unicode dan soporte a un argumento que sea una
representacin de serie grfica de una hora o una indicacin de fecha y hora. En
una base de datos Unicode, si un argumento proporcionado es una serie grfica, se
convertir a una serie de caracteres antes de que se ejecute la funcin.

El resultado de la funcin es una hora. Si el argumento puede ser nulo, el


resultado puede ser nulo; si el argumento es nulo, el resultado es el valor nulo.

Las dems reglas dependen del tipo de datos del argumento:


v Si el argumento es una hora:
El resultado es dicha hora.
v Si el argumento es una indicacin de fecha y hora:
El resultado es la parte correspondiente a la hora de la indicacin de fecha y
hora.
v Si el argumento es una serie:
El resultado es la hora representada por la serie.

Ejemplo:
v Seleccione todas las notas de la tabla de ejemplo IN_TRAY que se hayan recibido
como mnimo una hora ms tarde (de cualquier da) que la hora actual.
SELECT * FROM IN_TRAY
WHERE TIME(RECEIVED) >= CURRENT TIME + 1 HOUR

442 Consulta de SQL - Volumen 1


TIMESTAMP

TIMESTAMP
 TIMESTAMP ( expresin ) 
,expresin

El esquema es SYSIBM.

La funcin TIMESTAMP devuelve una indicacin de fecha y hora a partir de un


valor o par de valores.

Slo las bases de datos Unicode dan soporte a un argumento que es una
representacin de serie grfica de una fecha, una hora o una indicacin de fecha y
hora. En una base de datos Unicode, si un argumento proporcionado es una serie
grfica, se convertir a una serie de caracteres antes de que se ejecute la funcin.

Las reglas para los argumentos dependen de si se especifica el segundo argumento.


v Si slo se especifica un argumento:
Debe ser una indicacin de fecha y hora, una representacin de serie vlida
de una indicacin de fecha y hora o una serie de longitud 14 que no sea
CLOB, LONG VARCHAR, DBCLOB ni LONG VARGRAPHIC.
Una serie de longitud 14 debe ser una serie de dgitos que represente una
fecha y hora vlidas con el formato aaaaxxddhhmmss, donde aaaa es el ao, xx
es el mes, dd es el da, hh es la hora, mm es el minuto y ss es los segundos.
v Si se especifican ambos argumentos:
El primer argumento debe ser una fecha o una representacin de serie vlida
de una fecha y el segundo argumento debe ser una hora o una representacin
de serie vlida de una hora.

El resultado de la funcin es una indicacin de fecha y hora. Si el argumento


puede ser nulo, el resultado puede ser nulo; si cualquier argumento es nulo, el
resultado es el valor nulo.

Las dems reglas dependen de si se especifica el segundo argumento:


v Si se especifican ambos argumentos:
El resultado es una indicacin de fecha y hora, en la que el primer argumento
especifica la fecha y el segundo argumento especifica la hora. La parte
correspondiente a los microsegundos de la indicacin de fecha y hora es cero.
v Si slo se especifica un argumento y es una indicacin de fecha y hora:
El resultado es esa indicacin de fecha y hora.
v Si slo se especifica un argumento y es una serie:
El resultado es la indicacin de fecha y hora representada por dicha serie. Si
el argumento es una serie de longitud 14, la parte correspondiente a los
microsegundos de la indicacin de fecha y hora es cero.

Ejemplo:
v Supongamos que la columna START_DATE (fecha) tiene un valor equivalente a
1988-12-25 y la columna START_TIME (hora) tiene un valor equivalente a
17.12.30.
TIMESTAMP(START_DATE, START_TIME)
Devuelve el valor 1988-12-25-17.12.30.000000.

Captulo 3. Funciones 443


TIMESTAMP_FORMAT

TIMESTAMP_FORMAT
 TIMESTAMP_FORMAT ( expresin-serie serie-formato ) 

El esquema es SYSIBM.

La funcin TIMESTAMP_FORMAT devuelve una indicacin de fecha y hora a


partir de una serie de caracteres que se ha interpretado utilizando una plantilla de
caracteres. En una base de datos Unicode, si un argumento proporcionado es una
serie grfica, se convertir a una serie de caracteres antes de que se ejecute la
funcin.
expresin-serie
Una expresin de caracteres que representa un valor de indicacin de fecha y
hora en el formato especificado por serie-formato. (Si expresin-serie es un
marcador de parmetros sin tipo, se supone que el tipo es VARCHAR con una
longitud mxima de 254.) La expresin de serie devuelve un valor CHAR o
VARCHAR cuya longitud mxima no es mayor que 254 (SQLSTATE 42815).
Los blancos iniciales y de cola se elimina de la expresin-serie y la subserie
resultante se interpreta como una indicacin de fecha y hora utilizando el
formato especificado por la serie-formato. Los ceros iniciales pueden omitirse de
todos los componentes de indicacin de fecha y hora, con excepcin del ao.
Es posible utilizar blancos en vez de los ceros iniciales para estos componentes.
Por ejemplo, para una serie con el formato AAAA-MM-DD HH24:MI:SS, todas las
series siguientes constituyen una especificacin aceptable de las 9 de la
maana del 1 de enero de 2000:
2000-1-01 09:00:00 (un solo dgito para el mes)
2000-1-01 09:00:00 (un solo dgito - precedido por un blanco -
para el mes)
2000-1-1 09:00:00 (un solo dgito para el mes y el da)
2000-01-01 9:00:00 (un solo dgito para la hora)
2000-01-01 09:0:0 (un solo dgito para los minutos y los
segundos)
2000- 1- 1 09: 0: 0 (un solo dgito - precedido por un blanco -
para el mes, el da, los minutos y los
segundos)
2000-01-01 09:00:00 (nmero mximo de dgitos para cada elemento)
serie-formato
Una constante de caracteres que contiene una plantilla para cmo debe
interpretarse la expresin de serie como un valor de indicacin de fecha y
hora. La longitud de la serie de formato no debe ser mayor que 254
(SQLSTATE 42815). Los blancos iniciales y de cola se elimina de la
expresin-formato y la subserie resultante debe ser una plantilla vlida para un
valor de indicacin de fecha y hora (SQLSTATE 42815). El contenido de
serie-formato puede especificarse de forma mixta.
Las series de formato vlidas son:
AAAA-MM-DD HH24:MI:SS

donde AAAA representa un valor de ao de 4 dgitos; MM representa un valor


de mes de 2 dgitos (01-12; enero=01); DD representa un valor de da del mes
de 2 dgitos (01-31); HH24 representa un valor de hora del da de 2 dgitos
(00-24); Si la hora es 24, el valor de los minutos y de los segundos es cero.); MI
representa un valor de minutos de 2 dgitos (00-59); y SS representa un valor
de segundos 2 dgitos (00-59).

444 Consulta de SQL - Volumen 1


TIMESTAMP_FORMAT

El resultado de la funcin es una indicacin de fecha y hora. Si el primer


argumento puede ser nulo, el resultado puede ser nulo; si el primer argumento es
nulo, el resultado es el valor nulo.

Ejemplo:
v Inserte una fila en la tabla in_tray con una indicacin de fecha y hora de
recepcin que sea igual a un segundo antes del comienzo del ao 2000 (31 de
diciembre de 1999 a las 23:59:59).
INSERT INTO in_tray (recepcin)
VALUES (TIMESTAMP_FORMAT(1999-12-31 23:59:59,
AAAA-MM-DD HH24:MI:SS))

Captulo 3. Funciones 445


TIMESTAMP_ISO

TIMESTAMP_ISO
 TIMESTAMP_ISO ( expresin ) 

El esquema es SYSFUN.

Devuelve un valor de indicacin de fecha y hora basado en un argumento de


fecha, de hora o de indicacin de fecha y hora. Si el argumento es una fecha,
inserta ceros para todos los elementos de hora. Si el argumento es una hora, inserta
el valor del registro especial CURRENT DATE para los elementos de fecha y ceros
para el elemento de fraccin de hora.

El argumento debe ser una fecha, una hora, una indicacin de fecha y hora o una
representacin de serie de caracteres vlida de una fecha, una hora o una
indicacin de fecha y hora que no sea ni CLOB ni LONG VARCHAR. En una base
de datos Unicode, si un argumento proporcionado es una serie grfica, se
convertir a una serie de caracteres antes de que se ejecute la funcin.

El resultado de la funcin es TIMESTAMP. El resultado puede ser nulo; si el


argumento es nulo, el resultado es el valor nulo.

446 Consulta de SQL - Volumen 1


TIMESTAMPDIFF

TIMESTAMPDIFF
 TIMESTAMPDIFF ( expresin , expresin ) 

El esquema es SYSFUN.

Devuelve un nmero estimado de intervalos del tipo definido por el primer


argumento, basndose en la diferencia entre dos indicaciones de la hora.

El primer argumento puede ser INTEGER o SMALLINT. Los valores vlidos de


intervalo (el primer argumento) son:
1 Fracciones de segundo
2 Segundos
4 Minutos
8 Horas
16 Das
32 Semanas
64 Meses
128 Trimestres
256 Aos

El segundo argumento es el resultado de restar dos indicaciones de fecha y hora y


convertir el resultado a CHAR(22). En una base de datos Unicode, si un argumento
proporcionado es una serie grfica, se convertir a una serie de caracteres antes de
que se ejecute la funcin.

El resultado de la funcin es INTEGER. El resultado puede ser nulo; si el


argumento es nulo, el resultado es el valor nulo.

Se pueden utilizar las suposiciones siguientes al estimar una diferencia:


v Hay 365 das en un ao.
v Hay 30 das en un mes.
v Hay 24 horas en un da.
v Hay 60 minutos en una hora.
v Hay 60 segundos en un minuto.

Estas suposiciones se utilizan al convertir la informacin del segundo argumento,


que es una duracin de indicacin de fecha y hora, al tipo de intervalo
especificado en el primer argumento. La estimacin que se devuelve puede variar
en unos das. Por ejemplo, si se pide el nmero de das (intervalo 16) para la
diferencia entre 1997-03-01-00.00.00 y 1997-02-01-00.00.00, el resultado es 30. Esto
es debido a que la diferencia entre las indicaciones de fecha y hora es de 1 mes y
se aplica la suposicin de que hay 30 das en un mes.

Ejemplo:

El ejemplo siguiente devuelve 4277, el nmero de minutos entre dos indicaciones


de fecha y hora:

Captulo 3. Funciones 447


TIMESTAMPDIFF

TIMESTAMPDIFF(4,CHAR(TIMESTAMP(2001-09-29-11.25.42.483219) -
TIMESTAMP(2001-09-26-12.07.58.065497)))

448 Consulta de SQL - Volumen 1


TO_CHAR

TO_CHAR
 TO_CHAR ( expresin-indicacinfechahora serie-formato ) 

El esquema es SYSIBM.

La funcin TO_CHAR devuelve una representacin de caracteres de una indicacin


de fecha y hora a la que se ha dado formato utilizando una plantilla de caracteres.

TO_CHAR es un sinnimo de VARCHAR_FORMAT.

Informacin relacionada:
v VARCHAR_FORMAT en la pgina 463

Captulo 3. Funciones 449


TO_DATE

TO_DATE
 TO_DATE ( expresin-serie serie-formato ) 

El esquema es SYSIBM.

La funcin TO_DATE devuelve una indicacin de fecha y hora a partir de una


serie de caracteres que se ha interpretado utilizando una plantilla de caracteres.

TO_DATE es un sinnimo de TIMESTAMP_FORMAT.

Informacin relacionada:
v TIMESTAMP_FORMAT en la pgina 444

450 Consulta de SQL - Volumen 1


TRANSLATE

TRANSLATE
expresin de serie de caracteres:

 TRANSLATE ( exp-serie-car 

 ) 
,
, a-exp-serie , de-exp-serie
, car-relleno

expresin de serie de grficos:

 TRANSLATE ( exp-serie-grfica , a-exp-serie , de-exp-serie 

,
 ) 
, car-relleno

El esquema es SYSIBM.

La funcin TRANSLATE devuelve un valor ene l que uno o ms caracteres de una


expresin de serie es posible que se hayan convertido a otros caracteres.

La funcin convierte todos los caracteres de exp-serie-car o exp-serie-grfica que


tambin se producen en de-exp-serie en los caracteres correspondientes en a-exp-serie
o, si no existen caracteres correspondientes, los convierte en el carcter de relleno
especificado por exp-car-relleno.

El resultado de la funcin tiene el mismo tipo de datos y la misma pgina de


cdigos que el primer argumento. Si el primer argumento es una variable de
lenguaje principal, la pgina de cdigos del resultado es una pgina de cdigos la
base de datos. El atributo de longitud del resultado es el mismo que el del primer
argumento. Si cualquier expresin especificada puede ser NULL, el resultado
puede ser NULL. Si cualquier expresin especificada es NULL, el resultado ser
NULL.
exp-serie-car o exp-serie-grfica
Especifica la serie que debe convertirse.
a-exp-serie
Especifica una serie de caracteres a la que se convertirn determinados
caracteres de exp-serie-car.
Si no se especifica ningn valor para a-exp-serie, y el tipo de datos no es
grfico, todos los caracteres de exp-serie-car se pasarn a maysculas; es decir,
todos los caracteres a-z se convertirn en los caracteres A-Z, y los dems
caracteres se convertirn en sus equivalentes en maysculas, si existen. Por
ejemplo, en la pgina de cdigos 850, se correlaciona con pero no se
correlaciona, porque la pgina de cdigos 850 no incluye . Si la longitud del
punto de cdigo del carcter del resultado no es la misma que la longitud de
punto de cdigo del carcter fuente, ste no se convierte.
de-exp-serie
Especifica una serie de caracteres que, si se encuentra en exp-serie-car, se

Captulo 3. Funciones 451


TRANSLATE

convertir en el carcter correspondiente en a-exp-serie. Si de-exp-serie contiene


caracteres duplicados, se utilizar el primero que se encuentre y los duplicados
se omitirn. Si la longitud de a-exp-serie es superior a la de a-exp-serie, los
caracteres excedentes se omitirn. Si se especifica a-exp-serie, tambin debe
espcificarse de-exp-serie.
exp-car-relleno
Especifica un nico carcter que se utilizar para rellenar a-exp-serie si la
longitud de a-exp-serie es inferior a la de de-exp-serie. El argumento
exp-car-relleno debe tener un atributo de longitud uno. Si no se especifica
ningn valor, se presupone el carcter en blanco de un nico byte.

Los argumentos pueden ser series de caracteres de tipo CHAR o VARCHAR, o


series grficas de datos de tipo GRAPHIC o VARGRAPHIC. No pueden ser datos
de tipo LONG VARCHAR, LONG VARGRAPHIC, BLOB, CLOB ni DBCLOB.

Con exp-serie-grfica, slo exp-car-relleno es opcional (si no se especifica ningn


valor, se presupone el carcter en blanco de doble byte), y cada argumento,
incluido el carcter de relleno, debe corresponder al tipo de datos grfico.

La pgina de cdigos del resultado es la misma que la del primer operando. Para
la Versin 8, si el primer operando es una variable del lenguaje principal, la pgina
de cdigos del resultado es la pgina de cdigos de la base de datos. Cada uno de
los dems operandos se convierte a la pgina de cdigos resultante, a menos que
sta o el primer operando se defina como FOR BIT DATA (en cuyo caso no se
realiza ninguna conversin).

Si los argumentos so tipos de datos CHAR o VARCHAR, los caracteres


correspondientes en a-exp-serie y de-exp-serie deben tener el mismo nmero de
bytes. Por ejemplo, no es vlido convertir un carcter de un nico byte en un
carcter de mltiples bytes, ni a la inversa. El argumento exp-car-relleno no puede
ser el primer byte de un carcter de mltiples bytes (SQLSTATE 42815).

Si slo se especifica exp-serie-car, los caracteres de un nico byte se convertirn a


maysculas, y los caracteres de mltiples bytes no sufrirn ningn cambio.

Ejemplos:
v Supongamos que la variable de lenguaje principal SITE (VARCHAR(30)) tiene el
valor Hanauma Bay.
TRANSLATE(:SITE)

Devuelve el valor HANAUMA BAY.


TRANSLATE(:SITE j,B)

Devuelve el valor Hanauma jay.


TRANSLATE(:SITE,ei,aa)

Devuelve el valor Heneume Bey.


TRANSLATE(:SITE,bA,Bay,%)

Devuelve el valor HAnAumA bA%.


TRANSLATE(:SITE,r,Bu)

Devuelve el valor Hana ma ray.

452 Consulta de SQL - Volumen 1


TRIM

 TRIM ( expresin-serie ) 
BOTH
FROM
B carcter-supresin
LEADING
L
TRAILING
T

El esquema es SYSIBM. El nombre de la funcin no puede especificarse como


nombre calificado si se utilizan palabras clave en la signatura de la funcin.

La funcin TRIM suprime blancos o las apariciones de otro carcter especificado


del final o del principio de una expresin de serie.
BOTH, LEADING o TRAILING
Especifica si se suprimen los caracteres del principio, del final o de ambos
extremos de la expresin de serie. Si no se especifica este argumento, se
suprimen los caracteres del final y del principio de la serie.
carcter-supresin
Una constante de un slo carcter que especifica el carcter que se ha de
suprimir. Si no se especifica el carcter-supresin y:
v Si la expresin-serie es una serie de grficos DBCS, el valor por omisin para
carcter-supresin es un blanco DBCS, cuyo punto de cdigo depende de la
pgina de cdigos de base de datos
v Si la expresin-serie es una serie de grficos UCS-2, el valor por omisin para
carcter-supresin es un blanco UCS-2 (X'0020')
v De lo contrario, el valor por omisin para carcter-supresin es un blanco
SBCS (X'20')
FROM expresin-serie
Una expresin que devuelve un valor que es del tipo de datos CHAR,
VARCHAR, GRAPHIC o VARGRAPHIC.

El resultado es una serie de longitud variable con la misma longitud mxima que
el atributo de longitud de la expresin-serie. La longitud real del resultado es la
longitud de la expresin-serie menos el nmero de bytes que se ha de suprimir. Si se
suprimen todos los caracteres, el resultado es una serie de longitud variable vaca.
La pgina de cdigos del resultado es la misma que la pgina de cdigos de la
expresin-serie.

Ejemplos:
v Supongamos que la variable HELLO de sistema principal de tipo CHAR(9) tiene
un valor Hello.
SELECT TRIM(:HELLO),
TRIM(TRAILING FROM :HELLO)
FROM SYSIBM.SYSDUMMY1

devuelve los valores Hello y Hello, respectivamente.


v Supongamos que la variable BALANCE de sistema principal de tipo CHAR(9)
tiene un valor 000345.50.
SELECT TRIM(L 0 FROM :BALANCE),
FROM SYSIBM.SYSDUMMY1

devuelve el valor 345.50.

Captulo 3. Funciones 453


TRIM

Informacin relacionada:
v STRIP en la pgina 430

454 Consulta de SQL - Volumen 1


TRUNCATE o TRUNC

TRUNCATE o TRUNC
 TRUNCATE ( expresin1 , expresin2 ) 
TRUNC

El esquema es SYSIBM. (La versin SYSFUN de la funcin TRUNCATE o TRUNC


contina estando disponible).

Devuelve expresin1 truncada a expresin2 posiciones a la derecha de la coma


decimal si expresin2 es positiva o a la izquierda de la coma decimal si expresin2 es
cero o negativa.
expresin1
Una expresin que devuelve un valor de cualquier tipo de datos numrico
interno.
expresin2
Una expresin que devuelve un entero pequeo o un entero grande. El valor
absoluto del entero especifica el nmero de posiciones a la derecha de la coma
decimal para el resultado si expresin2 no es negativa o a la izquierda de la
coma decimal si expresin2 es negativa.
Si el valor absoluto de la expresin2 es mayor que el nmero de dgitos que
aparecen a la izquierda de la coma decimal, el resultado es 0. Por ejemplo:
TRUNCATE(748.58,-4) = 0

El tipo de datos y el atributo de longitud del resultado de la funcin tiene el


mismo que el tipo de datos y el atributo de longitud del primer argumento.

El resultado puede ser nulo si el argumento puede ser nulo o la base de datos est
configurada con DFT_SQLMATHWARN establecido en YES; el resultado es el
valor nulo si el argumento es nulo.

Ejemplos:
v Utilizando la tabla EMPLOYEE, calcule el salario medio mensual del empleado
mejor pagado. Trunque el resultado dos posiciones a la derecha de la coma
decimal.
SELECT TRUNCATE(MAX(SALARY)/12,2)
FROM EMPLOYEE;

Como el empleado mejor pagado gana $52750,00 al ao, el ejemplo devuelve


4395,83.
v Muestre el nmero 873,726 truncado 2, 1, 0, -1 y -2 posiciones decimales,
respectivamente.
VALUES (
TRUNC(873.726,2),
TRUNC(873.726,1),
TRUNC(873.726,0),
TRUNC(873.726,-1),
TRUNC(873.726,-2),
TRUNC(873.726,-3) );

Este ejemplo devuelve 873.720, 873.700, 873.000, 870.000, 800.000 y 0.000.

Captulo 3. Funciones 455


TYPE_ID

TYPE_ID
 TYPE_ID ( expresin ) 

El esquema es SYSIBM.

La funcin TYPE_ID devuelve el identificador de tipo interno del tipo de datos


dinmico de la expresin.

El argumento debe ser un tipo estructurado definido por el usuario. (Esta funcin
no puede utilizarse como una funcin fuente cuando se crea una funcin definida
por el usuario. Como acepta cualquier tipo de datos estructurado como argumento,
no es necesario crear signaturas adicionales para dar soporte a los diferentes tipos
definidos por el usuario).

El tipo de datos del resultado de la funcin es INTEGER. Si expresin puede tener


un valor nulo, el resultado puede ser nulo; si expresin tiene un valor nulo, el
resultado es el valor nulo.

El valor devuelto por la funcin TYPE_ID no es porttil a travs de las bases de


datos. El valor puede ser diferente aunque el esquema de tipo y el nombre de tipo
del tipo de datos dinmico sean iguales. Cuando especifique el cdigo para
permitir la portabilidad, utilice las funciones TYPE_SCHEMA y TYPE_NAME para
determinar el esquema de tipo y el nombre de tipo.

Ejemplos:
v Existe una jerarqua de tablas que tiene una tabla raz EMPLOYEE de tipo EMP
y una subtabla MANAGER de tipo MGR. Otra tabla ACTIVITIES incluye una
columna denominada WHO_RESPONSIBLE que se define como REF(EMP)
SCOPE EMPLOYEE. Para cada referencia de ACTIVITIES, visualice el
identificador de tipo interno de la fila que corresponda a la referencia.
SELECT TASK, WHO_RESPONSIBLE>NAME,
TYPE_ID(DEREF(WHO_RESPONSIBLE))
FROM ACTIVITIES
La funcin DEREF se utiliza para devolver el objeto correspondiente a la fila.

456 Consulta de SQL - Volumen 1


TYPE_NAME

TYPE_NAME
 TYPE_NAME ( expresin ) 

El esquema es SYSIBM.

La funcin TYPE_NAME devuelve el nombre no calificado del tipo de datos


dinmico de la expresin.

El argumento debe ser un tipo estructurado definido por el usuario. (Esta funcin
no puede utilizarse como una funcin fuente cuando se crea una funcin definida
por el usuario. Como acepta cualquier tipo de datos estructurado como argumento,
no es necesario crear signaturas adicionales para dar soporte a los diferentes tipos
definidos por el usuario).

El tipo de datos del resultado de la funcin es VARCHAR(18). Si expresin puede


tener un valor nulo, el resultado puede ser nulo; si expresin tiene un valor nulo, el
resultado es el valor nulo. Utilice la funcin TYPE_SCHEMA para determinar el
nombre de esquema del nombre de tipo devuelto por TYPE_NAME.

Ejemplos:
v Existe una jerarqua de tablas que tiene una tabla raz EMPLOYEE de tipo EMP
y una subtabla MANAGER de tipo MGR. Otra tabla ACTIVITIES incluye una
columna denominada WHO_RESPONSIBLE que se define como REF(EMP)
SCOPE EMPLOYEE. Para cada referencia de ACTIVITIES, visualice el tipo de la
fila que corresponda a la referencia.
SELECT TASK, WHO_RESPONSIBLE>NAME,
TYPE_NAME(DEREF(WHO_RESPONSIBLE)),
TYPE_SCHEMA(DEREF(WHO_RESPONSIBLE))
FROM ACTIVITIES
La funcin DEREF se utiliza para devolver el objeto correspondiente a la fila.

Captulo 3. Funciones 457


TYPE_SCHEMA

TYPE_SCHEMA
 TYPE_SCHEMA ( expresin ) 

El esquema es SYSIBM.

La funcin TYPE_SCHEMA devuelve el nombre de esquema del tipo de datos


dinmico de la expresin.

El argumento debe ser un tipo estructurado definido por el usuario. Esta funcin
no puede utilizarse como una funcin fuente cuando se crea una funcin definida
por el usuario. Como acepta cualquier tipo de datos estructurado como argumento,
no es necesario crear signaturas adicionales para dar soporte a los diferentes tipos
definidos por el usuario.

El tipo de datos del resultado de la funcin es VARCHAR(128). Si expresin puede


tener un valor nulo, el resultado puede ser nulo; si expresin tiene un valor nulo, el
resultado es el valor nulo. Utilice la funcin TYPE_NAME para determinar el
nombre de tipo asociado con el nombre de esquema devuelto por TYPE_SCHEMA.

Informacin relacionada:
v TYPE_NAME en la pgina 457

458 Consulta de SQL - Volumen 1


UCASE o UPPER

UCASE o UPPER
 UCASE ( expresin ) 
UPPER

El esquema es SYSIBM. (La versin SYSFUN de esta funcin sigue estando


disponible para la compatibilidad con versiones superiores. Para obtener una
descripcin, consulte la documentacin de la Versin 5.

La funcin UCASE o UPPER es idntica a la funcin TRANSLATE, excepto que


slo se especifica el primer argumento (exp-serie-car).

En una base de datos Unicode, si un argumento proporcionado es una serie


grfica, se convertir a una serie de caracteres antes de que se ejecute la funcin.

Informacin relacionada:
v TRANSLATE en la pgina 451

Captulo 3. Funciones 459


VALUE

VALUE

 VALUE ( expresin  ,expresin ) 

El esquema es SYSIBM.

La funcin VALUE devuelve el primer argumento que no es nulo.

VALUE es sinnimo de COALESCE.

Informacin relacionada:
v COALESCE en la pgina 317

460 Consulta de SQL - Volumen 1


VARCHAR

VARCHAR
De caracteres a varchar:

 VARCHAR ( expresin-caracteres ) 
, entero

De grfico a varchar:

 VARCHAR ( expresin-grfica ) 
, entero

De fecha y hora a varchar:

 VARCHAR ( expresin-fechahora ) 

El esquema es SYSIBM.

La funcin VARCHAR devuelve una representacin de serie de caracteres de


longitud variable de:
v Una serie de caracteres, si el primer argumento es cualquier tipo de serie de
caracteres
v Una serie grfica (slo para bases de datos Unicode), si el primer argumento es
cualquier tipo de serie grfica
v Un valor de fecha y hora, si el argumento es una fecha, una hora o una
indicacin de fecha y hora
En una base de datos Unicode, cuando en la serie de salida un carcter de varios
bytes aparece truncado en parte:
v Si la salida era una serie de caracteres, el carcter parcial se sustituye por uno o
varios blancos
v Si la salida era una serie grfica, el carcter parcial se sustituye por una serie
vaca
No confe en ninguno de estos comportamientos, porque podran cambiar en los
releases futuros.

El resultado de la funcin es una serie de caracteres de longitud variable. Si el


primer argumento puede ser nulo, el resultado puede ser nulo. Si el primer
argumento es nulo, el resultado es el valor nulo.
De caracteres a varchar
expresin-caracteres
Una expresin cuyo valor debe ser de tipo de datos de serie de
caracteres, con una longitud mxima de 32 672 bytes.
entero
El atributo de longitud de la serie de caracteres de longitud variable
resultante. El valor debe estar entre 0 y 32 672. Si no se especifica este
argumento, el atributo de longitud del resultado es igual al atributo de
longitud del argumento.
De grfico a varchar

Captulo 3. Funciones 461


VARCHAR

expresin-grfica
Una expresin cuyo valor debe ser de tipo de datos de serie grfica
distinto de LONG VARGRAPHIC o DBCLOB y cuya longitud mxima
es de 16 336 caracteres de doble byte.
entero
El atributo de longitud de la serie de caracteres de longitud variable
resultante. El valor debe estar entre 0 y 32 672. Si no se especifica este
argumento, el atributo de longitud del resultado es igual al atributo de
longitud del argumento.
De fecha y hora a varchar
expresin-fechahora
Una expresin cuyo valor debe ser del tipo de datos DATE, TIME o
TIMESTAMP.

Ejemplo:
v Establezca la variable del lenguaje principal JOB_DESC, definida como
VARCHAR(8), en el equivalente VARCHAR de la descripcin del trabajo (que es
el valor de la columna JOB), definido como CHAR(8), para la empleada Dolores
Quintana.
SELECT VARCHAR(JOB)
INTO :JOB_DESC
FROM EMPLOYEE
WHERE LASTNAME = QUINTANA

Informacin relacionada:
v CHAR en la pgina 308

462 Consulta de SQL - Volumen 1


VARCHAR_FORMAT

VARCHAR_FORMAT
 VARCHAR_FORMAT ( expresin-indicacinfechahora serie-formato ) 

El esquema es SYSIBM.

La funcin VARCHAR_FORMAT devuelve una representacin de caracteres de una


indicacin de fecha y hora a la que se ha dado formato utilizando una plantilla de
caracteres. En una base de datos Unicode, si un argumento proporcionado es una
serie grfica, se convertir a una serie de caracteres antes de que se ejecute la
funcin.
expresin-indicacinfechahora
Una expresin que da como resultado una indicacin de fecha y hora. El
argumento debe ser una indicacin de fecha y hora o una representacin de
serie de una indicacin de fecha y hora que no sea ni CLOB ni LONG
VARCHAR. (Si expresin-serie es un marcador de parmetros sin tipo, se supone
que el tipo es TIMESTAMP). La expresin de serie devuelve un valor CHAR o
VARCHAR cuya longitud mxima no es mayor que 254 (SQLSTATE 42815).
Los blancos iniciales y de cola se elimina de la expresin-serie y la subserie
resultante se interpreta como una indicacin de fecha y hora utilizando el
formato especificado por la serie-formato. Los ceros iniciales pueden omitirse de
todos los componentes de indicacin de fecha y hora, con excepcin del ao.
Es posible utilizar blancos en vez de los ceros iniciales para estos componentes.
Por ejemplo, para una serie con el formato AAAA-MM-DD HH24:MI:SS, todas las
series siguientes constituyen una especificacin aceptable de las 9 de la
maana del 1 de enero de 2000:
2000-1-01 09:00:00 (un solo dgito para el mes)
2000-1-01 09:00:00 (un solo dgito - precedido por un blanco -
2000-1-1 09:00:00 (un solo dgito para el mes y el da)
2000-01-01 9:00:00 (un solo dgito para la hora)
2000-01-01 09:0:0 (un solo dgito para los minutos y los
segundos)
2000- 1- 1 09: 0: 0 (un solo dgito - precedido por un blanco -
para el mes, el da, los minutos y los
segundos)
2000-01-01 09:00:00 (nmero mximo de dgitos para cada elemento)
serie-formato
Una constante de caracteres que contiene una plantilla para el formato que
deben darse al resultado. La longitud de la serie de formato no debe ser mayor
que 254 (SQLSTATE 42815). Los blancos iniciales y de cola se elimina de la
expresin-formato y la subserie resultante debe ser una plantilla vlida para un
valor de indicacin de fecha y hora (SQLSTATE 42815). El contenido de
serie-formato puede especificarse de forma mixta.
Las series de formato vlidas son:
AAAA-MM-DD HH24:MI:SS

donde AAAA representa un valor de ao de 4 dgitos; MM representa un valor


de mes de 2 dgitos (01-12; enero=01); DD representa un valor de da del mes
de 2 dgitos (01-31); HH24 representa un valor de hora del da de 2 dgitos
(00-24); Si la hora es 24, el valor de los minutos y de los segundos es cero.); MI
representa un valor de minutos de 2 dgitos (00-59); y SS representa un valor
de segundos 2 dgitos (00-59).

Captulo 3. Funciones 463


VARCHAR_FORMAT

El resultado de la funcin es una serie de caracteres de longitud variable que


contiene una expresin de indicacin de fecha y hora formateada. La serie de
formato tambin determina el atributo de longitud y la longitud real del resultado.
Si la serie-formato es AAAA-MM-DD HH24:MI:SS, el atributo de longitud es 19.
El resultado lo forman 19 caracteres de la forma siguiente:
AAAA-MM-DD HH:MI:SS

Por ejemplo, con el formato AAAA-MM-DD HH24:MI:SS y una hora y fecha de las 10
de la maana del 1 de enero de 2000, se devuelve lo siguiente:
2000-01-01 10:00:00

Aunque los valores para el mes y el da slo requieren un solo dgito, en este
ejemplo, cada dgito significativo va precedido de un cero inicial. Y, aunque el
valor tanto para los minutos como para los segundos sea cero, se utiliza el nmero
mximo de dgitos para cada uno y se devuelve 00 para cada una de estas partes
en el resultado.

Si el primer argumento puede ser nulo, el resultado puede ser nulo; si el primer
argumento es nulo, el resultado es el valor nulo. La pgina de cdigos del
resultado es la pgina de cdigos SBCS del sistema.

Ejemplo:
v Visualice los nombres de tabla y la indicacin de fecha y hora de creacin de
todas las tablas del sistema cuyo nombres empiece por SYSU.
SELECT VARCHAR(name, 20) AS TABLE_NAME,
VARCHAR_FORMAT(ctime, AAAA-MM-DD HH24:MI:SS) AS CREATION_TIME
FROM SYSCAT.TABLES
WHERE name LIKE SYSU%

Este ejemplo devuelve lo siguiente:


TABLE_NAME CREATION_TIME
-------------------- -------------------
SYSUSERAUTH 2000-05-19 08:18:56
SYSUSEROPTIONS 2000-05-19 08:18:56

464 Consulta de SQL - Volumen 1


VARGRAPHIC

VARGRAPHIC
De grfico a vargraphic:

 VARGRAPHIC ( expresin-grfica ) 
, entero

De caracteres a vargraphic:

 VARGRAPHIC ( expresin-caracteres ) 

De fecha y hora a vargraphic:

 VARGRAPHIC ( expresin-fechahora ) 

El esquema es SYSIBM.

La funcin VARGRAPHIC devuelve una representacin de serie grfica de


longitud variable de:
v Una serie grfica, si el primer argumento es cualquier tipo de serie grfica
v Una serie de caracteres, convirtiendo los caracteres de un solo byte en caracteres
de doble byte, si el primer argumento es cualquier tipo de serie de caracteres
v Un valor de fecha y hora (slo para bases de datos Unicode), si el argumento es
una fecha, una hora o una indicacin de fecha y hora

En una base de datos Unicode, si un argumento proporcionado es una serie de


caracteres, se convertir a una serie grfica antes de que se ejecute la funcin.
Cuando la serie de salida se trunca, de forma que el ltimo carcter es un carcter
de sustitucin elevado, dicho carcter se convierte en un carcter en blanco
(X0020). No confe en este comportamiento, porque podra cambiar en los releases
futuros.

El resultado de la funcin es una serie grfica de longitud variable (tipo de datos


VARGRAPHIC). Si el primer argumento puede ser nulo, el resultado puede ser
nulo; si el primer argumento es nulo, el resultado es el valor nulo.
De grfico a vargraphic
expresin-grfica
Una expresin que devuelve un valor que es una serie grfica.
entero
Un valor entero que especifica el atributo de longitud del tipo de datos
VARGRAPHIC resultante. El valor debe estar entre 0 y 16 336. Si no se
especifica ningn valor, el atributo de longitud del resultado es igual al
atributo de longitud del primer argumento.

Si la longitud de la expresin grfica es mayor que el atributo de longitud


del resultado, el resultado se trunca. Se devuelve un aviso (SQLSTATE
01004) a menos que los caracteres truncados fuesen todos blancos y la
expresin grfica no fuese una serie larga (LONG VARGRAPHIC o
DBCLOB).

Captulo 3. Funciones 465


VARGRAPHIC

De carcter a vargraphic
expresin-caracteres
Una expresin cuyo valor debe ser de tipo de datos de serie de
caracteres distinto de LONG VARCHAR o CLOB y cuya longitud
mxima es de 16 336 bytes.

El atributo de longitud del resultado es igual al atributo de longitud del


argumento.

En el resultado, todos los caracteres de un solo byte de la


expresin-caracteres se convierten en su representacin de doble byte
equivalente o en el carcter de sustitucin de doble byte. Todos los
caracteres de doble byte de la expresin-caracteres se correlacionan sin
ninguna conversin adicional. Si el primer byte de un carcter de doble
byte aparece como el ltimo byte de la expresin-caracteres, ste se convierte
en el carcter de sustitucin de doble byte. El orden secuencial de los
caracteres de la expresin-caracteres se conserva.

En una base de datos Unicode, esta funcin convierte la serie de caracteres


de la pgina de cdigos del operando a UCS-2. Se convierte cada carcter
del operando, incluidos los caracteres de doble byte. Si se proporciona un
valor para el segundo argumento, ste especifica la longitud necesaria de la
serie resultante (en caracteres UCS-2).

La conversin a elementos de cdigo de doble byte por la funcin


VARGRAPHIC se basa en la pgina de cdigos del operando.

Los caracteres de doble byte del operando no se convierten. El resto de


caracteres se convierten a sus equivalentes de doble byte correspondientes.
Si no existe un equivalente de doble byte correspondiente, se utiliza el
carcter de sustitucin de doble byte para la pgina de cdigos.

No se genera ningn aviso ni cdigo de error si se devuelven uno o varios


caracteres de sustitucin de doble byte en el resultado.
De fecha y hora a vargraphic
expresin-fechahora
Una expresin cuyo valor debe ser del tipo de datos DATE, TIME o
TIMESTAMP.

Informacin relacionada:
v GRAPHIC en la pgina 354
v Apndice N, Consideraciones sobre el cdigo UNIX ampliado (EUC) en japons
y chino tradicional, en la pgina 893

466 Consulta de SQL - Volumen 1


WEEK

WEEK
 WEEK ( expresin ) 

Devuelve la semana del ao del argumento como un valor entero en el rango de 1


a 54. La semana empieza en domingo.

El argumento debe ser una fecha, una indicacin de fecha y hora o una
representacin de serie de caracteres vlida de una fecha o de una indicacin de
fecha y hora que no sea CLOB ni LONG VARCHAR. En una base de datos
Unicode, si un argumento proporcionado es una serie grfica, se convertir a una
serie de caracteres antes de que se ejecute la funcin.

El resultado de la funcin es INTEGER. El resultado puede ser nulo; si el


argumento es nulo, el resultado es el valor nulo.

Captulo 3. Funciones 467


WEEK_ISO

WEEK_ISO
 WEEK_ISO ( expresin ) 

El esquema es SYSFUN.

Devuelve la semana del ao del argumento como un valor entero en el rango de 1


a 53. La semana empieza en lunes e incluye siempre 7 das. La semana 1 es la
primera semana del ao que contenga un jueves, que equivale a la primera semana
que contenga el 4 de enero. Por consiguiente, es posible hacer que aparezca un
mximo de 3 das del principio de un ao en la ltima semana del ao anterior. Y,
a la inversa, pueden aparecer un mximo de 3 das del final de un ao en la
primera semana del ao siguiente.

El argumento debe ser una fecha, una indicacin de fecha y hora o una
representacin de serie de caracteres vlida de una fecha o de una indicacin de
fecha y hora que no sea CLOB ni LONG VARCHAR. En una base de datos
Unicode, si un argumento proporcionado es una serie grfica, se convertir a una
serie de caracteres antes de que se ejecute la funcin.

El resultado de la funcin es INTEGER. El resultado puede ser nulo; si el


argumento es nulo, el resultado es el valor nulo.

Ejemplo:

La lista siguiente muestra ejemplos del resultado de WEEK_ISO y


DAYOFWEEK_ISO.
DATE WEEK_ISO DAYOFWEEK_ISO
---------- ----------- -------------
1997-12-28 52 7
1997-12-31 1 3
1998-01-01 1 4
1999-01-01 53 5
1999-01-04 1 1
1999-12-31 52 5
2000-01-01 52 6
2000-01-03 1 1

468 Consulta de SQL - Volumen 1


XMLATTRIBUTES

XMLATTRIBUTES
,

 XMLATTRIBUTES (  expresin-valor-atributo ) 
AS nombre-atributo

El esquema es SYSIBM. El nombre de la funcin no puede especificarse como un


nombre calificado.

La funcin XMLATTRIBUTES construye los atributos XML a partir de los


argumentos. Esta funcin slo se puede utilizar como argumento de la funcin
XMLELEMENT. El resultado es una secuencia XML que contiene un nodo de
atributo XQuery para cada valor de entrada que no sea nulo.
expresin-valor-atributo
Expresin cuyo resultado es el valor de atributo. El tipo de datos de
expresin-valor-atributo no puede ser un tipo estructurado (SQLSTATE 42884). La
expresin puede ser cualquier expresin SQL. Si la expresin no es una
referencia de columna simple, debe especificarse un nombre de atributo.
nombre-atributo
Especifica un nombre de atributo. El nombre es un identificador de SQL cuyo
formato debe corresponder al de un nombre calificado XML o QName
(SQLSTATE 42634). Para obtener ms informacin sobre los nombres vlidos,
vea las especificaciones sobre espacios de nombres W3C XML. El nombre del
atributo no puede ser xmlns ni llevar el prefijo xmlns:. Para declarar un espacio
de nombres, debe utilizarse la funcin XMLNAMESPACES. No se permiten los
nombres de atributos duplicados, tanto si son implcitos como explcitos
(SQLSTATE 42713).
Si no se especifica nombre-atributo, expresin-valor-atributo debe ser un nombre
de columna (SQLSTATE 42703). El nombre de atributo se crea a partir del
nombre de columna, utilizando la correlacin con elusin de caracteres (fully
escaped) desde un nombre de columna a un nombre de atributo XML.

El tipo de datos del resultado es XML. Si el resultado de la expresin-valor-atributo


puede ser nulo, el resultado puede ser nulo; si el resultado de cada
expresin-valor-atributo es nulo, el resultado es el valor nulo.
Notas:
1. Soporte en bases de datos que no son Unicode y bases de datos de varias
particiones de base de datos: El tipo de datos BLOB y los datos de serie de
caracteres definidos como FOR BIT DATA no estn soportados (SQLSTATE
42884).

Ejemplos:

Nota: XMLATTRIBUTES no inserta espacios en blanco ni caracteres de nueva lnea


en la salida. Todas las salidas de los ejemplos se han formateado para
mejorar la legibilidad.
v Generar un elemento con atributos.
SELECT E.EMPNO, XMLELEMENT(
NAME "Emp",
XMLATTRIBUTES(
E.EMPNO, E.FIRSTNME || || E.LASTNAME AS "name"

Captulo 3. Funciones 469


XMLATTRIBUTES

)
)
AS "Result"
FROM EMPLOYEE E WHERE E.EDLEVEL = 12

Esta consulta genera el resultado siguiente:


EMPNO Result
000290 <Emp EMPNO="000290" name="JOHN PARKER"></Emp>
000310 <Emp EMPNO="000310" name="MAUDE SETRIGHT"></Emp>
200310 <Emp EMPNO="200310" name="MICHELLE SPRINGER"></Emp>
v Generar un elemento con una declaracin de espacio de nombres que no se
utiliza en ningn QName. El prefijo se utiliza en un valor de atributo.
VALUES XMLELEMENT(
NAME "size",
XMLNAMESPACES(
http://www.w3.org/2001/XMLSchema-instance AS "xsi",
http://www.w3.org/2001/XMLSchema AS "xsd"
),
XMLATTRIBUTES(
xsd:string AS "xsi:type"
), 1
)
FROM EMPLOYEE

Esta consulta genera el resultado siguiente:


<size xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
xmlns:xsd="http://www.w3.org/2001/XMLSchema"
xsi:type="xsd:string">1</size>

Conceptos relacionados:
v Publishing XML values with SQL/XML en XML Guide

Informacin relacionada:
v XMLCOMMENT en la pgina 471
v XMLCONCAT en la pgina 472
v XMLDOCUMENT en la pgina 474
v XMLELEMENT en la pgina 476
v XMLFOREST en la pgina 482
v XMLNAMESPACES en la pgina 486
v XMLPARSE en la pgina 489
v XMLPI en la pgina 491
v XMLQUERY en la pgina 493
v XMLSERIALIZE en la pgina 497
v XMLTEXT en la pgina 500
v XMLVALIDATE en la pgina 502
v XMLAGG en la pgina 288

470 Consulta de SQL - Volumen 1


XMLCOMMENT

XMLCOMMENT
 XMLCOMMENT ( expresin-serie ) 

El esquema es SYSIBM. El nombre de la funcin no puede especificarse como un


nombre calificado.

La funcin XMLCOMMENT devuelve un valor XML con un nico nodo de


comentario XQuery con el argumento de entrada como contenido.
expresin-serie
Una expresin cuyo valor tiene un tipo de serie de caracteres: CHAR,
VARCHAR o CLOB. El resultado de la expresin-serie se analiza para
comprobar si se ajusta a los requisitos de los comentarios XML, como se
especifica en las normas de XML 1.0. El resultado de la expresin-serie debe
ajustarse a la expresin regular siguiente:
((Char - -) | (- (Char - -)))*

donde Char se define como cualquier carcter Unicode excepto los bloques de
sustitucin XFFFE y XFFFF. Bsicamente, el comentario XML no puede
contener dos guiones adyacentes y no puede acabar con un guin (SQLSTATE
2200S).

El tipo de datos del resultado es XML. Si el resultado de la expresin-serie puede ser


nulo, el resultado puede ser nulo; si el valor de entrada es nulo, el resultado es el
valor nulo.
Notas:
1. Soporte en bases de datos que no son Unicode y bases de datos de varias
particiones de base de datos: XMLCOMMENT no est permitido (SQLSTATE
42997).

Conceptos relacionados:
v Publishing XML values with SQL/XML en XML Guide

Informacin relacionada:
v XMLATTRIBUTES en la pgina 469
v XMLCONCAT en la pgina 472
v XMLDOCUMENT en la pgina 474
v XMLELEMENT en la pgina 476
v XMLFOREST en la pgina 482
v XMLNAMESPACES en la pgina 486
v XMLPARSE en la pgina 489
v XMLPI en la pgina 491
v XMLQUERY en la pgina 493
v XMLSERIALIZE en la pgina 497
v XMLTEXT en la pgina 500
v XMLVALIDATE en la pgina 502
v XMLAGG en la pgina 288

Captulo 3. Funciones 471


XMLCONCAT

XMLCONCAT

 XMLCONCAT ( expresin-XML  , expresin-XML ) 

El esquema es SYSIBM. El nombre de la funcin no puede especificarse como un


nombre calificado.

La funcin XMLCONCAT devuelve una secuencia que contiene la concatenacin


de un nmero variable de argumentos de entrada de XML.
expresin-XML
Especifica una expresin de tipo de datos XML.

El tipo de datos del resultado es XML. El resultado es una secuencia XML que
contiene la concatenacin de los valores XML de entrada que no son nulos. Los
valores nulos de la entrada se pasan por alto. Si el resultado de cualquier
expresin-XML puede ser nulo, el resultado puede ser nulo; si el resultado de cada
valor de entrada es nulo, el resultado es el valor nulo.
Notas:
1. Soporte en bases de datos que no son Unicode y bases de datos de varias
particiones de base de datos: el resultado, en el nivel externo de anidamiento
de la funcin XML, debe ser un argumento de la funcin XMLSERIALIZE
(SQLSTATE 42997).

Ejemplo:

Nota: XMLCONCAT no inserta espacios en blanco ni caracteres de nueva lnea en


la salida. Todas las salidas de los ejemplos se han formateado para mejorar
la legibilidad.
v Construir un elemento de departamento para los departamentos A00 y B01, con
una lista de empleados ordenados por nombre. Incluir un comentario preliminar
inmediatamente antes del nombre del departamento.
SELECT XMLCONCAT(
XMLCOMMENT(
Confirm these employees are on track for their product schedule
),
XMLELEMENT(
NAME "Department",
XMLATTRIBUTES(
E.WORKDEPT AS "name"
),
XMLAGG(
XMLELEMENT(
NAME "emp", E.FIRSTNME
)
ORDER BY E.FIRSTNME
)
)
)
FROM EMPLOYEE E
WHERE E.WORKDEPT IN (A00, B01)
GROUP BY E.WORKDEPT

Esta consulta genera el resultado siguiente:

472 Consulta de SQL - Volumen 1


XMLCONCAT

<!--Confirm these employees are on track for their product schedule-->


<Department name="A00">
<emp>CHRISTINE</emp>
<emp>DIAN</emp>
<emp>GREG</emp>
<emp>SEAN</emp>
<emp>VINCENZO</emp>
</Department>
<!--Confirm these employees are on track for their product schedule-->
<Department name="B01">
<emp>MICHAEL</emp>
</Department>

Conceptos relacionados:
v Publishing XML values with SQL/XML en XML Guide

Informacin relacionada:
v XMLATTRIBUTES en la pgina 469
v XMLCOMMENT en la pgina 471
v XMLDOCUMENT en la pgina 474
v XMLELEMENT en la pgina 476
v XMLFOREST en la pgina 482
v XMLNAMESPACES en la pgina 486
v XMLPARSE en la pgina 489
v XMLPI en la pgina 491
v XMLQUERY en la pgina 493
v XMLSERIALIZE en la pgina 497
v XMLTEXT en la pgina 500
v XMLVALIDATE en la pgina 502
v XMLAGG en la pgina 288

Captulo 3. Funciones 473


XMLDOCUMENT

XMLDOCUMENT
 XMLDOCUMENT ( expresin-XML ) 

El esquema es SYSIBM. El nombre de la funcin no puede especificarse como un


nombre calificado.

La funcin XMLDOCUMENT devuelve un valor XML con un nico nodo de


documento XQuery con ninguno o varios nodos hijo.
expresin-XML
Una expresin que devuelve un valor XML. Un elemento de secuencia en el
valor XML no debe ser un nodo de atributo (SQLSTATE 10507).

El tipo de datos del resultado es XML. Si el resultado de la expresin-XML puede


ser nulo, el resultado puede ser nulo; si el valor de entrada es nulo, el resultado es
el valor nulo.

Los hijos del nodo de documento resultante se construyen como se describe en los
pasos siguientes. La expresin de entrada es una secuencia de nodos o valores
atmicos, a la que se hace referencia en estos pasos como secuencia de contenido.
1. Si la secuencia de contenido contiene un nodo de documento, este nodo se
sustituye en la secuencia de contenido por sus hijos.
2. Cada secuencia adyacente de uno o ms valores atmicos en la secuencia de
contenido se sustituye por un nodo de texto que contiene el resultado de la
conversin de cada valor atmico en una serie, insertndose un nico carcter
en blanco entre los valores adyacentes.
3. Para cada nodo de la secuencia de contenido, se construye una nueva copia en
profundidad del nodo. Una copia en profundidad de un nodo es una copia de
todo el subrbol cuya raz se encuentra en ese nodo, e incluye el propio nodo y
sus descendientes. Cada nodo copiado tiene una nueva identidad de nodo. Los
nodos de atributos y elementos copiados conservan su anotacin de tipo.
4. Los nodos de la secuencia de contenido se convierten en hijos del nuevo nodo
de documento.

La funcin XMLDOCUMENT ejecuta el constructor de documentos calculados


XQuery. El resultado de
XMLQUERY(document {$E} PASSING BY REF expresin-XML AS "E")

es equivalente a
XMLDOCUMENT( expresin-XML )

con la excepcin del caso en el que expresin-XML es nula y XMLQUERY devuelve


la secuencia vaca, en comparacin con XMLDOCUMENT, que devuelve el valor
nulo.
Notas:
1. Soporte en bases de datos que no son Unicode y bases de datos de varias
particiones de base de datos: XMLDOCUMENT no est permitido (SQLSTATE
42997).

Ejemplo:
v Insertar un documento construido en una columna XML.

474 Consulta de SQL - Volumen 1


XMLDOCUMENT

INSERT INTO T1 VALUES(


123, (
SELECT XMLDOCUMENT(
XMLELEMENT(
NAME "Emp", E.FIRSTNME || || E.LASTNAME, XMLCOMMENT(
This is just a simple example
)
)
)
FROM EMPLOYEE E
WHERE E.EMPNO = 000120
)
)

Conceptos relacionados:
v Publishing XML values with SQL/XML en XML Guide

Informacin relacionada:
v XMLATTRIBUTES en la pgina 469
v XMLCOMMENT en la pgina 471
v XMLCONCAT en la pgina 472
v XMLELEMENT en la pgina 476
v XMLFOREST en la pgina 482
v XMLNAMESPACES en la pgina 486
v XMLPARSE en la pgina 489
v XMLPI en la pgina 491
v XMLQUERY en la pgina 493
v XMLSERIALIZE en la pgina 497
v XMLTEXT en la pgina 500
v XMLVALIDATE en la pgina 502
v XMLAGG en la pgina 288

Captulo 3. Funciones 475


XMLELEMENT

XMLELEMENT
 XMLELEMENT ( NAME nombre-elemento 
, declaracin-xmlnamespaces

 
, funcin-xmlattributes

 , expresin-contenido-elemento

 ) 

(1) EMPTY ON NULL (2) (3)


OPTION  NULL ON NULL
USING
XMLBINARY BASE64
USING
XMLBINARY HEX

Notas:
1 La clusula OPTION slo puede especificarse si, como mnimo, se ha
especificado una funcin-xmlattributes o una expresin-contenido-elemento.
2 NULL ON NULL o EMPTY ON NULL slo puede especificarse si, como
mnimo, se ha especificado una expresin-contenido-elemento.
3 Una misma clusula no se debe especificar ms de una vez.

El esquema es SYSIBM. El nombre de la funcin no puede especificarse como un


nombre calificado.

La funcin XMLELEMENT devuelve un valor XML que es un nodo de elemento


XQuery.
NAME nombre-elemento
Especifica el nombre de un elemento XML. El nombre es un identificador de
SQL cuyo formato debe corresponder al de un nombre calificado XML o
QName (SQLSTATE 42634). Para obtener ms informacin sobre los nombres
vlidos, vea las especificaciones sobre espacios de nombres W3C XML. Si el
nombre est calificado, el prefijo de espacio de nombres deber declararse
dentro del mbito (SQLSTATE 42635).
declaracin-xmlnamespaces
Especifica las declaraciones de espacios de nombres XML que son el resultado
de la declaracin XMLNAMESPACES. Los espacios de nombres que se
declaran se encuentran en el mbito de la funcin XMLELEMENT. Los
nombres de espacios se aplican a cualquiera de las funciones XML anidadas
que se encuentran dentro de la funcin XMLELEMENT, con independencia de
si aparecen o no dentro de otra subseleccin.
Si no se especifica declaracin-xmlnamespaces, las declaraciones de espacio de
nombres no se asocian al elemento construido.
funcin-xmlattributes
Especifica los atributos XML del elemento. Los atributos son el resultado de la
funcin XMLATTRIBUTES.
expresin-contenido-elemento
El contenido del nodo de elemento XML generado se especifica mediante una

476 Consulta de SQL - Volumen 1


XMLELEMENT

expresin o una lista de expresiones. El tipo de datos de expresin-contenido-


elemento no puede ser un tipo estructurado (SQLSTATE 42884). La expresin
puede ser cualquier expresin SQL.
Si no se especifica expresin-contenido-elemento, se utiliza una serie vaca como
contenido del elemento y no debe especificarse OPTION NULL ON NULL o
EMPTY ON NULL.
OPTION
Especifica opciones adicionales para construir el elemento XML. Si no se
especifica ninguna clusula OPTION, el valor por omisin es EMPTY ON
NULL XMLBINARY USING BASE64. Esta clusula no afectar a las
invocaciones de XMLELEMENT anidadas que se han especificado en
expresin-contenido-elemento.
EMPTY ON NULL o NULL ON NULL
Especifica si ha de devolverse un valor nulo o un elemento nulo en caso de
que los valores de cada expresin-contenido-elemento sean un valor nulo. Esta
opcin slo afecta al manejo de nulos del contenido del elemento, no a los
valores de atributo. El valor por omisin es EMPTY ON NULL.
EMPTY ON NULL
Si el valor de cada expresin-contenido-elemento es nulo, se devuelve un
elemento vaco.
NULL ON NULL
Si el valor de cada elemento expresin-contenido-elemento es nulo, se
devuelve un valor nulo.
XMLBINARY USING BASE64 o XMLBINARY USING HEX
Especifica la codificacin de datos binarios de entrada que se da por
supuesta, los datos de serie de caracteres con el atributo FOR BIT DATA o
un tipo diferenciado que se basa en uno de estos tipos. La codificacin se
aplica a los valores de atributo o contenido del elemento. El valor por
omisin es XMLBINARY USING BASE64.
XMLBINARY USING BASE64
Especifica que se da por supuesta la codificacin de caracteres base64,
tal como define la codificacin xs:base64Binary para el tipo de esquema
XML. La codificacin base64 utiliza un subconjunto de US-ASCII de 65
caracteres (10 dgitos, 26 caracteres en minsculas, 26 caracteres en
maysculas, + y /) para representar cada seis bits de los datos
binarios o de bits con un carcter imprimible del subconjunto. Estos
caracteres son una seleccin concebida especialmente para permitir su
representacin universal. Mediante la utilizacin de este mtodo, el
tamao de los datos codificados es un 33% ms grande que los datos
binarios o de bits originales.
XMLBINARY USING HEX
Especifica que se da por supuesta la codificacin de caracteres
hexadecimales, tal como define la codificacin xs:hexBinary para el tipo
de esquema XML. La codificacin hexadecimal representa cada byte (8
bits) con dos caracteres hexadecimales. Mediante la utilizacin de este
mtodo, los datos codificados doblan el tamao de los datos binarios o
de bits originales.

Esta funcin toma un nombre de elemento, un conjunto opcional de declaraciones


de espacios de nombres, un conjunto opcional de atributos y cero o ms
argumentos que forman parte del contenido del elemento XML. El resultado es
una secuencia XML que contiene un nodo de elemento XML o el valor nulo.

Captulo 3. Funciones 477


XMLELEMENT

El tipo de datos del resultado es XML. Si cualquiera de los argumentos


expresin-contenido-elemento puede ser nulo, el resultado puede ser nulo; si todos los
valores del argumento expresin-contenido-elemento son nulos y la opcin NULL ON
NULL est en vigor, el resultado es el valor nulo.
Notas:
1. Soporte en bases de datos que no son Unicode y en bases de datos de varias
particiones de base de datos: La funcin slo recibe el soporte que reciba en la
Versin 8. Por lo tanto, en el nivel externo de anidamiento de la funcin de
valor XML, debe existir un argumento de la funcin XMLSERIALIZE. Las
opciones de manejo de nulos y de codificacin binaria no pueden especificarse
(SQLSTATE 42997). Los datos BLOB y de serie de caracteres definidos como
FOR BIT DATA no pueden especificarse (SQLSTATE 42884).
Cuando se construyen elementos que se copiarn como contenido de otro
elemento que define espacios de nombres por omisin, los espacios de nombres
por omisin deben estar no declarados explcitamente en el elemento copiado
para evitar posibles errores que podran resultar del hecho de heredar el
espacio de nombres por omisin del nuevo elemento padre. Los prefijos de
espacio de nombres predefinidos (xs, xsi, xml y sqlxml) tambin se deben
declarar explcitamente cuando se utilizan.
2. Construccin de un nodo de elemento: El nodo de elemento resultante se
construye como se indica a continuacin:
a. La declaracin-xmlnamespaces aade un conjunto de espacios de nombres con
mbito para el elemento construido. Cada espacio de nombres con mbito
asocia un prefijo de espacio de nombres (o el espacio de nombres por
omisin) a un URI de espacio de nombres. Los espacios de nombres con
mbito definen el conjunto de prefijos de espacio de nombres que estn
disponibles para interpretar los QName que se encuentran dentro del
mbito del elemento.
b. Si se especifica la funcin-xmlattributes, se evala, y el resultado es una
secuencia de nodos de atributos.
c. Cada expresin-contenido-elemento se evala y el resultado se convierte en una
secuencia de nodos, tal como se indica a continuacin:
v Si el tipo de resultado no es XML, se convierte en un nodo de texto XML
cuyo contenido es el resultado de expresin-contenido-elemento
correlacionado con XML en funcin de las normas de correlacin de
valores de datos SQL con valores de datos XML (vea la tabla en la que se
describen las conversiones soportadas de valores que no son XML en
valores XML en Conversiones entre tipos de datos).
v Si el tipo de resultado es XML, el resultado es, en general, una secuencia
de elementos. Puede que algunos de los elementos de esa secuencia sean
nodos de documentos. Cada nodo de documento de la secuencia se
sustituye por la secuencia de sus hijos de nivel superior. A continuacin,
para cada nodo de la secuencia resultante, se construye una nueva copia
en profundidad del nodo, incluidos sus hijos y atributos. Cada nodo
copiado tiene una nueva identidad de nodo. Los nodos de atributos y
elementos copiados conservan su anotacin de tipo. Para cada secuencia
adyacente de uno o ms valores atmicos devueltos en la secuencia se
construye un nuevo nodo de texto, que contiene el resultado de la
conversin de cada valor atmico en una serie, insertndose un nico
carcter en blanco entre los valores adyacentes. Los nodos de texto
adyacentes de la secuencia de contenido se fusionan en un nico nodo de
texto mediante la concatenacin de su contenido, sin la intervencin de

478 Consulta de SQL - Volumen 1


XMLELEMENT

caracteres en blanco. Despus de la concatenacin, cualquier nodo de


texto cuyo contenido sea una serie de longitud cero se suprimir de la
secuencia de contenido.
d. La secuencia resultante de atributos XML y las secuencias resultantes de
todas las especificaciones expresin-contenido-elemento se concatenan en una
nica secuencia, que se denomina secuencia de contenido. Cualquier
secuencia de nodos de texto adyacentes de la secuencia de contenido se
fusiona en un nico nodo de texto. Si todos los argumentos
expresin-contenido-elemento son series vacas, o si no se ha especificado un
argumento expresin-contenido-elemento, se devuelve un elemento vaco.
e. La secuencia de contenido no debe contener un nodo de atributo a
continuacin de un nodo que no sea un nodo de atributo (SQLSTATE
10507). Los nodos de atributos que se producen en la secuencia de
contenido se convierten en atributos del nuevo nodo de elemento. No deben
tener el mismo nombre dos o ms de estos nodos de atributos (SQLSTATE
10503). Se crea una declaracin de espacio de nombres correspondiente a
cualquier espacio de nombres utilizado en los nombres de los nodos de
atributos si el URI de espacio de nombres no se encuentra en los espacios
de nombres con mbito del elemento construido.
f. Los nodos de elementos, texto, comentarios e instrucciones de proceso de la
secuencia de contenido se convierten en los hijos del nodo de elemento
construido.
g. El nodo de elemento construido recibe una anotacin de tipo xs:anyType y
cada uno de sus atributos recibe una anotacin de tipo xdt:untypedAtomic.
El nombre de nodo del nodo de elemento construido es el nombre-elemento
que se ha especificado despus de la palabra clave NAME.
3. Normas para utilizar espacios de nombres dentro de XMLELEMENT:
Examine las siguientes normas relacionadas con el mbito de los espacios de
nombres:
v Los espacios de nombres declarados en la declaracin XMLNAMESPACES
son los espacios de nombres con mbito del nodo de elemento que ha
construido la funcin XMLELEMENT. Si el nodo de elemento est
serializado, cada uno de sus espacios de nombres con mbito se serializar
como un atributo de espacio de nombres a menos que sea un espacio de
nombres con mbito del padre del nodo de elemento y el elemento padre
tambin est serializado.
v Si existe una expresin XMLQUERY o XMLEXISTS es una
expresin-contenido-elemento, los espacios de nombres se convierten en los
nombres de espacios estticamente conocidos de la expresin XQuery de
XMLQUERY o XMLEXISTS. Los espacios de nombres estticamente
conocidos se utilizan para resolver los QName de la expresin XQuery. Si el
prlogo XQuery declara un espacio de nombres con el mismo prefijo, dentro
del mbito de la expresin XQuery, el espacio de nombres declarado en el
prlogo alterar temporalmente los espacios de nombres declarados en la
declaracin XMLNAMESPACES.
v Si un atributo del elemento construido procede de una expresin-contenido-
elemento, puede que su espacio de nombres todava no se haya declarado
como un espacio de nombres con mbito del elemento construido y, en este
caso, se crea un nuevo espacio de nombres para ste. Si esto puede generar
un conflicto, lo que significa que el prefijo del nombre de atributo ya se han
vinculado a un URI distinto mediante un espacio de nombres con mbito,
DB2 genera un prefijo que no causa ningn conflicto y el prefijo utilizado en
el nombre de atributo se cambia por el nuevo prefijo y se crea un espacio de
nombres para este nuevo prefijo. El nuevo prefijo generado sigue el patrn

Captulo 3. Funciones 479


XMLELEMENT

siguiente: db2ns-xx, donde x es un carcter seleccionado en el juego de


caracteres [A a Z, a a z, 0 a 9]. Por ejemplo:
VALUES XMLELEMENT(
NAME "c", XMLQUERY(
declare namespace ipo="www.ipo.com"; $m/ipo:a/@ipo:b PASSING XMLPARSE(
DOCUMENT <tst:a xmlns:tst="www.ipo.com" tst:b="2"/>
) AS "m"
)
)

devuelve:
<c xmlns:tst="www.ipo.com" tst:b="2"/>

Un segundo ejemplo:
VALUES XMLELEMENT(
NAME "tst:c", XMLNAMESPACES(
www.tst.com AS "tst"
),
XMLQUERY(
declare namespace ipo="www.ipo.com"; $m/ipo:a/@ipo:b PASSING XMLPARSE(
DOCUMENT <tst:a xmlns:tst="www.ipo.com" tst:b="2"/>
) AS "m"
)
)

devuelve:
<tst:c xmlns:tst="www.tst.com" xmlns:db2ns-a1="www.ipo.com" db2ns-a1:b="2"/>

Ejemplos:

Nota: XMLELEMENT no inserta espacios en blanco ni caracteres de nueva lnea en


la salida. Todas las salidas de los ejemplos se han formateado para mejorar
la legibilidad.
v Construir un elemento con la opcin NULL ON NULL.
SELECT E.FIRSTNME, E.LASTNAME, XMLELEMENT(
NAME "Emp", XMLELEMENT(
NAME "firstname", E.FIRSTNME
),
XMLELEMENT(
NAME "lastname", E.LASTNAME
)
OPTION NULL ON NULL
)
AS "Result"
FROM EMPLOYEE E
WHERE E.EDLEVEL = 12

Esta consulta genera el resultado siguiente:


FIRSTNME LASTNAME Emp
JOHN PARKER <Emp><firstname>JOHN</firstname>
<lastname>PARKER</lastname></Emp>
MAUDE SETRIGHT <Emp><firstname>MAUDE</firstname>
<lastname>SETRIGHT</lastname></Emp>
MICHELLE SPRINGER <Emp><firstname>MICHELLE</firstname>
<lastname>SPRINGER</lastname></Emp>
v Producir un elemento con una lista de elementos anidados como elementos
hijos.
SELECT XMLELEMENT(
NAME "Department", XMLATTRIBUTES(
E.WORKDEPT AS "name"

480 Consulta de SQL - Volumen 1


XMLELEMENT

),
XMLAGG(
XMLELEMENT(
NAME "emp", E.FIRSTNME
)
ORDER BY E.FIRSTNME
)
)
AS "dept_list"
FROM EMPLOYEE E
WHERE E.WORKDEPT IN (A00, B01)
GROUP BY WORKDEPT

Esta consulta genera el resultado siguiente:


dept_list
<Department name="A00">
<emp>CHRISTINE</emp>
<emp>SEAN</emp>
<emp>VINCENZO</emp>
</Department>
<Department name="B01">
<emp>MICHAEL</emp>
</Department>

Conceptos relacionados:
v Publishing XML values with SQL/XML en XML Guide

Informacin relacionada:
v XMLPI en la pgina 491
v XMLQUERY en la pgina 493
v XMLAGG en la pgina 288
v XMLATTRIBUTES en la pgina 469
v XMLCOMMENT en la pgina 471
v XMLCONCAT en la pgina 472
v XMLDOCUMENT en la pgina 474
v XMLFOREST en la pgina 482
v XMLNAMESPACES en la pgina 486
v XMLPARSE en la pgina 489
v XMLSERIALIZE en la pgina 497
v XMLTEXT en la pgina 500
v XMLVALIDATE en la pgina 502

Captulo 3. Funciones 481


XMLFOREST

XMLFOREST
 XMLFOREST ( 
declaracin-xmlnamespaces ,

  expresin-contenido-elemento 
AS nombre-elemento

 ) 

NULL ON NULL (1)


OPTION  EMPTY ON NULL
USING
XMLBINARY BASE64
USING
XMLBINARY HEX

Notas:
1 Una misma clusula no se debe especificar ms de una vez.

El esquema es SYSIBM. El nombre de la funcin no puede especificarse como un


nombre calificado.

La funcin XMLFOREST devuelve un valor XML que es una secuencia de nodos


de elemento XQuery.
declaracin-xmlnamespaces
Especifica las declaraciones de espacios de nombres XML que son el resultado
de la declaracin XMLNAMESPACES. Los espacios de nombres que se
declaran se encuentran en el mbito de la funcin XMLFOREST. Los nombres
de espacios se aplican a cualquiera de las funciones XML anidadas que se
encuentran dentro de la funcin XMLFOREST, con independencia de si
aparecen o no dentro de otra subseleccin.
Si no se especifica declaracin-xmlnamespaces, las declaraciones de espacio de
nombres no se asocian a los elementos construidos.
expresin-contenido-elemento
El contenido del nodo de elemento XML generado se especifica mediante una
expresin. El tipo de datos de expresin-contenido-elemento no puede ser un tipo
estructurado (SQLSTATE 42884). La expresin puede ser cualquier expresin
SQL. Si la expresin no es una referencia de columna simple, debe especificarse
un nombre de elemento.
AS nombre-elemento
Especifica el nombre de elemento XML como identificador SQL. El nombre del
elemento debe tener el formato de un nombre calificado XML o QName
(SQLSTATE 42634). Para obtener ms informacin sobre los nombres vlidos,
vea las especificaciones sobre espacios de nombres W3C XML. Si el nombre
est calificado, el prefijo de espacio de nombres deber declararse dentro del
mbito (SQLSTATE 42635). Si no se especifica nombre-elemento,
expresin-contenido-elemento debe ser un nombre de columna (SQLSTATE 42703,

482 Consulta de SQL - Volumen 1


XMLFOREST

SQLCODE -206). El nombre de elemento se crea a partir del nombre de


columna, utilizando la correlacin con elusin de caracteres (fully escaped)
desde un nombre de columna a un QName.
OPTION
Especifica opciones adicionales para construir el elemento XML. Si no se
especifica ninguna clusula OPTION, el valor por omisin es NULL ON NULL
XMLBINARY USING BASE64. Esta clusula no afectar a las invocaciones de
XMLELEMENT anidadas que se han especificado en expresin-contenido-
elemento.
EMPTY ON NULL o NULL ON NULL
Especifica si ha de devolverse un valor nulo o un elemento nulo en caso de
que los valores de cada expresin-contenido-elemento sean un valor nulo. Esta
opcin slo afecta al manejo de nulos del contenido del elemento, no a los
valores de atributo. El valor por omisin es NULL ON NULL.
EMPTY ON NULL
Si el valor de cada expresin-contenido-elemento es nulo, se devuelve un
elemento vaco.
NULL ON NULL
Si el valor de cada elemento expresin-contenido-elemento es nulo, se
devuelve un valor nulo.
XMLBINARY USING BASE64 o XMLBINARY USING HEX
Especifica la codificacin de datos binarios de entrada que se da por
supuesta, los datos de serie de caracteres con el atributo FOR BIT DATA o
un tipo diferenciado que se basa en uno de estos tipos. La codificacin se
aplica a los valores de atributo o contenido del elemento. El valor por
omisin es XMLBINARY USING BASE64.
XMLBINARY USING BASE64
Especifica que se da por supuesta la codificacin de caracteres base64,
tal como define la codificacin xs:base64Binary para el tipo de esquema
XML. La codificacin base64 utiliza un subconjunto de US-ASCII de 65
caracteres (10 dgitos, 26 caracteres en minsculas, 26 caracteres en
maysculas, + y /) para representar cada seis bits de los datos
binarios o de bits con un carcter imprimible del subconjunto. Estos
caracteres son una seleccin concebida especialmente para permitir su
representacin universal. Mediante la utilizacin de este mtodo, el
tamao de los datos codificados es un 33% ms grande que los datos
binarios o de bits originales.
XMLBINARY USING HEX
Especifica que se da por supuesta la codificacin de caracteres
hexadecimales, tal como define la codificacin xs:hexBinary para el tipo
de esquema XML. La codificacin hexadecimal representa cada byte (8
bits) con dos caracteres hexadecimales. Mediante la utilizacin de este
mtodo, los datos codificados doblan el tamao de los datos binarios o
de bits originales.

Esta funcin toma un conjunto opcional de declaraciones de espacios de nombres y


uno o varios argumentos que forman el contenido de nombre y elemento para uno
o varios nodos de elemento. El resultado es una secuencia XML que contiene una
secuencia de nodos de elemento XQuery o el valor nulo.

El tipo de datos del resultado es XML. Si cualquiera de los argumentos


expresin-contenido-elemento puede ser nulo, el resultado puede ser nulo; si todos los

Captulo 3. Funciones 483


XMLFOREST

valores del argumento expresin-contenido-elemento son nulos y la opcin NULL ON


NULL est en vigor, el resultado es el valor nulo.

La funcin XMLFOREST se puede expresar mediante XMLCONCAT y


XMLELEMENT. Por ejemplo, las dos expresiones siguientes son equivalentes desde
el punto de vista semntico.
XMLFOREST(declaracin-xmlnamespaces, arg1 AS name1, arg2 AS name2 ...)
XMLCONCAT(
XMLELEMENT(
NAME name1, declaracin-xmlnamespaces, arg1
),
XMLELEMENT(
NAME name2, declaracin-xmlnamespaces, arg2
)
...
)
Notas:
1. Soporte en bases de datos que no son Unicode y en bases de datos de varias
particiones de base de datos: La funcin slo recibe el soporte que reciba en la
Versin 8. Por lo tanto, en el nivel externo de anidamiento de la funcin de
valor XML, debe existir un argumento de la funcin XMLSERIALIZE. Las
opciones de manejo de nulos y de codificacin binaria no pueden especificarse
(SQLSTATE 42997). Los datos BLOB y de serie de caracteres definidos como
FOR BIT DATA no pueden especificarse (SQLSTATE 42884).
Cuando se construyen elementos que se copiarn como contenido de otro
elemento que define espacios de nombres por omisin, los espacios de nombres
por omisin deben estar no declarados explcitamente en el elemento copiado
para evitar posibles errores que podran resultar del hecho de heredar el
espacio de nombres por omisin del nuevo elemento padre. Los prefijos de
espacio de nombres predefinidos (xs, xsi, xml y sqlxml) tambin se deben
declarar explcitamente cuando se utilizan.

Ejemplo:

Nota: XMLFOREST no inserta espacios en blanco ni caracteres de nueva lnea en


la salida. Todas las salidas de los ejemplos se han formateado para mejorar
la legibilidad.
v Construir un bosque de elementos con un espacio de nombres por omisin.
SELECT EMPNO,
XMLFOREST(
XMLNAMESPACES(
DEFAULT http://hr.org, http://fed.gov AS "d"
),
LASTNAME, JOB AS "d:job"
)
AS "Result"
FROM EMPLOYEE
WHERE EDLEVEL = 12

Esta consulta produce el resultado siguiente:


EMPNO Result
000290 <LASTNAME xmlns="http://hr.org" xmlns:d="http://fed.gov">PARKER</LASTNAME>
<d:job xmlns="http://hr.org" xmlns:d="http://fed.gov">OPERATOR</d:job>

000310 <LASTNAME xmlns="http://hr.org" xmlns:d="http://fed.gov">SETRIGHT</LASTNAME>


<d:job xmlns="http://hr.org" xmlns:d="http://fed.gov">OPERATOR</d:job>

484 Consulta de SQL - Volumen 1


XMLFOREST

200310 <LASTNAME xmlns="http://hr.org" xmlns:d="http://fed.gov">SPRINGER</LASTNAME>


<d:job xmlns="http://hr.org" xmlns:d="http://fed.gov">OPERATOR</d:job>

Conceptos relacionados:
v Publishing XML values with SQL/XML en XML Guide

Informacin relacionada:
v XMLATTRIBUTES en la pgina 469
v XMLCOMMENT en la pgina 471
v XMLCONCAT en la pgina 472
v XMLDOCUMENT en la pgina 474
v XMLELEMENT en la pgina 476
v XMLNAMESPACES en la pgina 486
v XMLPARSE en la pgina 489
v XMLPI en la pgina 491
v XMLQUERY en la pgina 493
v XMLSERIALIZE en la pgina 497
v XMLTEXT en la pgina 500
v XMLVALIDATE en la pgina 502
v XMLAGG en la pgina 288

Captulo 3. Funciones 485


XMLNAMESPACES

XMLNAMESPACES
declaracin-xmlnamespaces:

XMLNAMESPACES 

 (  uri-espacio-nombres AS prefijo-espacio-nombres )
(1)
DEFAULT uri-espacio-nombres
NO DEFAULT

Notas:
1 Slo puede especificarse DEFAULT o NO DEFAULT una vez en los
argumentos de XMLNAMESPACES.

El esquema es SYSIBM. El nombre de la declaracin no puede especificarse como


un nombre calificado.

La declaracin XMLNAMESPACES construye las declaraciones de espacios de


nombres a partir de los argumentos. Esta declaracin nicamente puede emplearse
como argumento de funciones especficas como XMLELEMENT, XMLFOREST y
XMLTABLE. El resultado es una o varias declaraciones de espacios de nombres
XML que contienen espacios de nombres con mbito para cada uno de los valores
de entrada no nulos.
uri-espacio-nombres
Especifica el identificador de recursos universal (URI) de espacio de nombres
como una constante de serie de caracteres de SQL. Esta constante de serie de
caracteres no puede estar vaca si se utiliza con un prefijo-espacio-nombres
(SQLSTATE 42815).
prefijo-espacio-nombres
Especifica un prefijo de espacio de nombres. El prefijo es un identificador de
SQL que debe tener el formato de un nombre XML NCName (SQLSTATE
42634). Para obtener ms informacin sobre los nombres vlidos, consulte las
especificaciones sobre espacios de nombres W3C XML. El prefijo no puede ser
xml ni xmlns y el prefijo debe ser exclusivo dentro de la lista de declaraciones
de espacios de nombres (SQLSTATE 42635).
DEFAULT uri-espacio-nombres
Especifica el espacio de nombres por omisin que debe utilizarse en el mbito
de esta declaracin de espacio de nombres. El uri-espacio-nombres es vlido para
los nombres no calificados del mbito salvo que otra declaracin DEFAULT o
una declaracin NO DEFAULT altere temporalmente este valor en un mbito
anidado.
NO DEFAULT
Especifica que no se utilizar ningn espacio de nombres por omisin en el
mbito de esta declaracin de espacio de nombres. No existe ningn espacio
de nombres por omisin en el mbito salvo que una declaracin DEFAULT
altere temporalmente este valor en un mbito anidado.

486 Consulta de SQL - Volumen 1


XMLNAMESPACES

El tipo de datos del resultado es XML. El resultado es una declaracin de espacio


de nombres XML para cada uno de los espacios de nombres indicados. El
resultado no puede ser nulo.

Ejemplos:

Nota: XMLNAMESPACES no inserta espacios en blanco ni caracteres de nueva


lnea en la salida. Todas las salidas de los ejemplos se han formateado para
mejorar la legibilidad.
v Genere un elemento XML denominado adm:employee y un atributo XML
adm:department, ambos asociados con un espacio de nombres cuyo prefijo es
adm.
SELECT EMPNO, XMLELEMENT(
NAME "adm:employee", XMLNAMESPACES(
http://www.adm.com AS "adm"
),
XMLATTRIBUTES(
WORKDEPT AS "adm:department"
),
LASTNAME
)
FROM EMPLOYEE
WHERE JOB = ANALYST

Esta consulta produce el resultado siguiente:


000130 <adm:employee xmlns:adm="http://www.adm.com" adm:department="C01">
QUINTANA</adm:employee>
000140 <adm:employee xmlns:adm="http://www.adm.com" adm:department="C01">
NICHOLLS</adm:employee>
200140 <adm:employee xmlns:adm="http://www.adm.com" adm:department="C01">
NATZ</adm:employee>
v Genere un elemento XML denominado employee asociado con un espacio de
nombres por omisin y un subelemento denominado job que no utilice un
espacio de nombres por omisin y cuyo subelemento department utilice un
espacio de nombres por omisin.
SELECT EMP.EMPNO, XMLELEMENT(
NAME "employee", XMLNAMESPACES(
DEFAULT http://hr.org
),
EMP.LASTNAME, XMLELEMENT(
NAME "job", XMLNAMESPACES(
NO DEFAULT
),
EMP.JOB, XMLELEMENT(
NAME "department", XMLNAMESPACES(
DEFAULT http://adm.org
),
EMP.WORKDEPT
)
)
)
FROM EMPLOYEE EMP
WHERE EMP.EDLEVEL = 12

Esta consulta produce el resultado siguiente:


000290 <employee xmlns="http://hr.org">PARKER<job xmlns="">OPERATOR
<department xmlns="http://adm.org">E11</department></job></employee>
000310 <employee xmlns="http://hr.org">SETRIGHT<job xmlns="">OPERATOR
<department xmlns="http://adm.org">E11</department></job></employee>
200310 <employee xmlns="http://hr.org">SPRINGER<job xmlns="">OPERATOR
<department xmlns="http://adm.org">E11</department></job></employee>

Captulo 3. Funciones 487


XMLNAMESPACES

Conceptos relacionados:
v Publishing XML values with SQL/XML en XML Guide

Informacin relacionada:
v XMLATTRIBUTES en la pgina 469
v XMLCOMMENT en la pgina 471
v XMLCONCAT en la pgina 472
v XMLDOCUMENT en la pgina 474
v XMLELEMENT en la pgina 476
v XMLFOREST en la pgina 482
v XMLPARSE en la pgina 489
v XMLPI en la pgina 491
v XMLQUERY en la pgina 493
v XMLSERIALIZE en la pgina 497
v XMLTEXT en la pgina 500
v XMLVALIDATE en la pgina 502
v XMLAGG en la pgina 288

488 Consulta de SQL - Volumen 1


XMLPARSE

XMLPARSE
STRIP WHITESPACE
 XMLPARSE ( DOCUMENT expresin-serie ) 
PRESERVE WHITESPACE

El esquema es SYSIBM. El nombre de la funcin no puede especificarse como un


nombre calificado.

La funcin XMLPARSE analiza el argumento como un documento XML y devuelve


un valor XML.
DOCUMENT
Especifica que la expresin de serie de caracteres que se analizar debe
evaluarse como un documento XML con el formato correcto conforme a la
especificacin XML 1.0, segn la modificacin de la recomendacin de espacios
de nombres XML (SQLSTATE 2200M).
expresin-serie
Especifica una expresin que devuelve una serie de caracteres o un valor
BLOB. Si se utiliza un marcador de parmetros, debe convertirse
explcitamente en uno de los tipos de datos soportados.
STRIP WHITESPACE o PRESERVE WHITESPACE
Especifica si deben conservarse o no los espacios en blanco del argumento de
entrada. Si no se especifica ningn valor, el valor por omisin es STRIP
WHITESPACE.
STRIP WHITESPACE
Especifica que los nodos de texto que contengan nicamente caracteres de
espacio en blanco hasta 1000 bytes de longitud se eliminarn, salvo que el
elemento continente ms prximo tenga el atributo xml:space=preserve. Si
algn nodo de texto empieza con ms de 1000 bytes de espacios en blanco,
se devuelve un error (SQLSTATE 54059).
Esta opcin tambin afecta a los caracteres de espacio en blanco de la
seccin CDATA. Las definiciones DTD pueden tener declaraciones
DOCTYPE de elementos, pero los modelos de contenido de los elementos
no se utilizan para determinar si se eliminan o no los espacios en blanco.
PRESERVE WHITESPACE
Especifica que deben conservarse todos los espacios en blanco, aun cuando
el elemento continente ms prximo tenga el atributo xml:space=default.

El tipo de datos del resultado es XML. Si el resultado de la expresin-serie puede ser


nulo, el resultado puede ser nulo; si el resultado de la expresin-serie es nulo, el
resultado es el valor nulo.
Notas:
1. Soporte en bases de datos que no son Unicode y bases de datos de varias
particiones de base de datos: XMLPARSE no est permitido (SQLSTATE
42997).
2. Codificacin de la serie de entrada: La serie de entrada puede contener una
declaracin XML que identifica la codificacin de los caracteres del documento
XML. Si se pasa la serie a la funcin XMLPARSE como una serie de caracteres,
se convertir en la pgina de cdigos en el servidor de base de datos. Esta

Captulo 3. Funciones 489


XMLPARSE

pgina de cdigos puede ser distinta de la pgina de cdigos de origen y la


codificacin identificada en la declaracin XML.
Por consiguiente, las aplicaciones deben evitar la utilizacin directa de
XMLPARSE con entrada de serie de caracteres y deben enviar series con
documentos XML directamente utilizando variable del lenguaje principal para
mantener la coincidencia entre la pgina de cdigos externa y la codificacin de
la declaracin XML. Si debe utilizarse XMLPARSE en esta situacin, debe
especificarse un tipo BLOB como argumento para evitar la conversin de la
pgina de cdigos.
3. Manejo de las DTD: Las definiciones de tipo de documento externas (DTD) y
las entidades externas deben estar registradas en una base de datos. Se
comprueba que tanto las DTD internas como las externas tienen una sintaxis
vlida. Durante el proceso de anlisis tambin se realizan las acciones
siguientes:
v Se aplican los valores por omisin definidos por las DTD internas y externas.
v Las referencias de entidad y las entidades de parmetro se sustituyen por sus
formas expandidas.
v Si una DTD interna y una DTD externa definen el mismo elemento, se
devuelve un error (SQLSTATE 2200M).
v Si una DTD interna y una DTD externa definen la misma entidad o el mismo
atributo, se elige la definicin interna.
Despus del anlisis, las DTD y las entidades internas, as como las referencias
a las DTD y entidades externas, no se conservan en la representacin del valor
almacenada.

Conceptos relacionados:
v XML parsing en XML Guide

Informacin relacionada:
v XMLAGG en la pgina 288
v XMLATTRIBUTES en la pgina 469
v XMLCOMMENT en la pgina 471
v XMLCONCAT en la pgina 472
v XMLDOCUMENT en la pgina 474
v XMLELEMENT en la pgina 476
v XMLFOREST en la pgina 482
v XMLNAMESPACES en la pgina 486
v XMLPI en la pgina 491
v XMLQUERY en la pgina 493
v XMLSERIALIZE en la pgina 497
v XMLTEXT en la pgina 500
v XMLVALIDATE en la pgina 502

490 Consulta de SQL - Volumen 1


XMLPI

XMLPI
 XMLPI ( NAME nombre-ip ) 
, expresin-serie

El esquema es SYSIBM. El nombre de la funcin no puede especificarse como un


nombre calificado.

La funcin XMLPI devuelve un valor XML con un nodo de instruccin de proceso


XQuery.
NAME nombre-ip
Especifica el nombre de una instruccin de proceso. El nombre es un
identificador de SQL que debe tener el formato de un nombre XML NCName
(SQLSTATE 42634). Para obtener ms informacin sobre los nombres vlidos,
consulte las especificaciones sobre espacios de nombres W3C XML. El nombre
no puede ser xml en ninguna combinacin de maysculas y minsculas
(SQLSTATE 42634).
expresin-serie
Expresin que devuelve un valor que es una serie de caracteres. La serie
obtenida se convierte a UTF-8 y debe ajustarse al contenido de una instruccin
de proceso XML conforme a la especificacin de las normas de XML 1.0
(SQLSTATE 2200T):
v La serie no puede contener la subserie ?> ya que esta subserie termina una
instruccin de proceso.
v Cada uno de los caracteres de la serie puede ser cualquier carcter Unicode
excepto los bloques de sustitucin, XFFFE y XFFFF.
La serie obtenida pasa a ser el contenido del nodo de instruccin de proceso
construido.

El tipo de datos del resultado es XML. Si el resultado de la expresin-serie puede ser


nulo, el resultado puede ser nulo; si el resultado de la expresin-serie es nulo, el
resultado es el valor nulo. Si la expresin-serie es una serie vaca o no se especifica,
se devuelve un nodo de instruccin de proceso vaco.
Notas:
1. Soporte en bases de datos que no son Unicode y bases de datos de varias
particiones de base de datos: XMLPI no est permitido (SQLSTATE 42997).

Ejemplos:
v Generar un nodo de instruccin de proceso XML.
SELECT XMLPI(
NAME "Instruction", Push the red button
)
FROM SYSIBM.SYSDUMMY1

Esta consulta produce el resultado siguiente:


<?Instruction Push the red button?>
v Generar un nodo de instruccin de proceso XML vaco.
SELECT XMLPI(
NAME "Warning"
)
FROM SYSIBM.SYSDUMMY1

Captulo 3. Funciones 491


XMLPI

Esta consulta produce el resultado siguiente:


<?Warning ?>

Conceptos relacionados:
v Publishing XML values with SQL/XML en XML Guide

Informacin relacionada:
v XMLATTRIBUTES en la pgina 469
v XMLCOMMENT en la pgina 471
v XMLCONCAT en la pgina 472
v XMLDOCUMENT en la pgina 474
v XMLELEMENT en la pgina 476
v XMLFOREST en la pgina 482
v XMLNAMESPACES en la pgina 486
v XMLPARSE en la pgina 489
v XMLTEXT en la pgina 500
v XMLVALIDATE en la pgina 502
v XMLAGG en la pgina 288
v XMLQUERY en la pgina 493
v XMLSERIALIZE en la pgina 497

492 Consulta de SQL - Volumen 1


XMLQUERY

XMLQUERY
 XMLQUERY ( constante-expresin-xquery 

 
,
BY REF
PASSING  argumento-xquery

BY REF
RETURNING SEQUENCE EMPTY ON EMPTY
 ) 

argumento-xquery:

expresin-variable-xquery AS identificador
BY REF

El esquema es SYSIBM. El nombre de la funcin no puede especificarse como un


nombre calificado.

La funcin XMLQUERY devuelve un valor XML a partir de la evaluacin de una


expresin XQuery utilizando posiblemente los argumentos de entrada especificados
como variables XQuery.
constante-expresin-xquery
Especifica una constante de serie de caracteres de SQL que se interpreta como
una expresin XQuery mediante la sintaxis del lenguaje XQuery soportada. La
serie de la constante se convierte directamente a UTF-8 sin la conversin a la
base de datos o la pgina de cdigos de la seccin. La expresin XQuery se
ejecuta utilizando un conjunto opcional de valores XML de entrada y devuelve
una secuencia de salida que tambin se devuelve como valor de la expresin
XMLQUERY. El valor para la constante-expresin-xquery no debe ser una serie
vaca o un serie de caracteres en blanco (SQLSTATE 10505).
PASSING
Especifica los valores de entrada y el modo en que pasan a la expresin
XQuery especificada por la constante-expresin-xquery.
BY REF
Especifica que el mecanismo de pase por omisin es por referencia para
cualquier expresin-variable-xquery de tipo de datos XML y para el valor
devuelto. Cuando los valores XML se pasan por referencia, la evaluacin
de XQuery utiliza los rboles de nodos de entrada, si los hay, directamente
desde las expresiones de entrada especificadas, con lo que se conservan
todas las propiedades, incluyendo las identidades de nodo originales y el
orden del documento. Si dos argumentos pasan el mismo valor XML, las
comparaciones de identidad de nodo y orden de documento en que
intervienen algunos nodos incluidos entre los dos argumentos de entrada
pueden hacer referencia a nodos del mismo rbol de nodos XML.

Captulo 3. Funciones 493


XMLQUERY

Esta clusula no afectar al modo en que se pasan los valores que no son
XML. Los valores que no son XML crean una copia nueva del valor
durante la conversin a XML.
argumento-xquery
Especifica un argumento que se pasar a la expresin XQuery especificada
por constante-expresin-xquery. Un argumento especifica un valor y la forma
en que ese valor se debe pasar. El argumento contiene una expresin SQL
que se evala.
v Si el valor del resultado es del tipo XML, se convierte en un
valor-xml-entrada. Un valor XML nulo se convierte en una secuencia XML
vaca.
v Si el valor del resultado no es del tipo XML, debe ser convertible al tipo
de datos XML. Un valor nulo se convierte en una secuencia XML vaca.
El valor convertido se transforma en un valor-xml-entrada.
Cuando se evala la constante-expresin-xquery, se presenta un valor igual a
valor-xml-entrada a una variable XQuery y la clusula AS especifica un
nombre.
expresin-variable-xquery
Especifica una expresin SQL cuyo valor est disponible para la
expresin XQuery especificada por constante-expresin-xquery durante la
ejecucin. La expresin no puede contener una referencia de secuencia
(SQLSTATE 428F9) ni una funcin OLAP (SQLSTATE 42903).
AS identificador
Especifica que el valor generado por expresin-variable-xquery se pasar
a constante-expresin-xquery como una variable XQuery. El nombre de la
variable ser identificador. El smbolo de dlar inicial ($) que precede a
los nombres de variables en el lenguaje XQuery no se incluye en el
identificador. El identificador debe ser un nombre de variable XQuery
vlido y debe tener el formato de un nombre XML NCName
(SQLSTATE 42634). El identificador no debe tener ms de 128 bytes de
longitud. Dos argumentos de la misma clusula PASSING no pueden
emplear el mismo identificador (SQLSTATE 42711).
BY REF
Indica que un valor de entrada XML se debe pasar por referencia.
Cuando los valores XML se pasan por referencia, la evaluacin de
XQuery utiliza los rboles de nodos de entrada, si los hay,
directamente desde las expresiones de entrada especificadas, con lo que
se conservan todas las propiedades, incluyendo las identidades de
nodo originales y el orden del documento. Si dos argumentos pasan el
mismo valor XML, las comparaciones de identidad de nodo y orden de
documento en que intervienen algunos nodos incluidos entre los dos
argumentos de entrada pueden hacer referencia a nodos del mismo
rbol de nodos XML. Si no se especifica BY REF a continuacin de una
expresin-variable-xquery, los argumentos XML se pasan mediante el
mecanismo de pase por omisin que se proporciona mediante la
sintaxis situada tras la palabra clave PASSING. Esta opcin no puede
especificarse para valores que no son XML. Cuando se pasa un valor
que no es XML, el valor se convierte a XML; este proceso crea una
copia.
RETURNING SEQUENCE
Indica que la expresin XMLQUERY devuelve una secuencia.

494 Consulta de SQL - Volumen 1


XMLQUERY

BY REF
Indica que el resultado de la expresin XQuery se devuelve por referencia. Si
este valor contiene nodos, toda expresin que utilice el valor de retorno de la
expresin XQuery recibir directamente las referencias de nodo, con lo que se
conservan todas las propiedades de los nodos, como las identidades de nodo
originales y el orden del documento. Los nodos a los que se haga referencia
seguirn conectados dentro de sus rboles de nodos. Si no se especifica la
clusula BY REF y se especifica PASSING, se utiliza el mecanismo de pase por
omisin. Si no se especifica BY REF y no se especifica PASSING, el mecanismo
de retorno por omisin es BY REF.
EMPTY ON EMPTY
Especifica un resultado de secuencia vaca obtenido del proceso de la expresin
XQuery se devuelve como una secuencia vaca.

El tipo de datos del resultado es XML; no puede ser nulo.

Si la evaluacin de la expresin XQuery genera un error, la funcin XMLQUERY


devuelve el error de XQuery (clase de SQLSTATE 10).
Notas:
1. Restricciones de uso de XMLQUERY: La funcin XMLQUERY no puede
formar parte de los elementos siguientes:
v La clusula ON asociada a un operador JOIN o una sentencia MERGE
(SQLSTATE 42972)
v La clusula GENERATE KEY USING o RANGE THROUGH de la sentencia
CREATE INDEX EXTENSION (SQLSTATE 428E3)
v La clusula FILTER USING de la sentencia CREATE FUNCTION (Escalar
externa), ni la clusula FILTER USING de la sentencia CREATE INDEX
EXTENSION (SQLSTATE 428E4)
v Una restriccin de comprobacin ni una expresin de generacin de
columnas (SQLSTATE 42621)
v Una clusula-group-by (SQLSTATE 42822)
v Un argumento de una funcin-columna (SQLSTATE 42607)
2. XMLQUERY como subconsulta: Una expresin XMLQUERY que acta como
subconsulta puede estar limitada por sentencias que restringen las
subconsultas.
3. Soporte en bases de datos que no son Unicode y bases de datos de varias
particiones de base de datos: XMLQUERY no est permitido (SQLSTATE
42997).

Conceptos relacionados:
v XMLQUERY overview en XML Guide

Informacin relacionada:
v XMLNAMESPACES en la pgina 486
v XMLATTRIBUTES en la pgina 469
v XMLCOMMENT en la pgina 471
v XMLCONCAT en la pgina 472
v XMLDOCUMENT en la pgina 474
v XMLELEMENT en la pgina 476
v XMLFOREST en la pgina 482

Captulo 3. Funciones 495


XMLQUERY

v XMLPARSE en la pgina 489


v XMLPI en la pgina 491
v XMLSERIALIZE en la pgina 497
v XMLTEXT en la pgina 500
v XMLVALIDATE en la pgina 502
v XMLAGG en la pgina 288

496 Consulta de SQL - Volumen 1


XMLSERIALIZE

XMLSERIALIZE
CONTENT
 XMLSERIALIZE ( expresin-XML AS tipo-datos 

VERSION 1,0 (1)


  ) 
EXCLUDING XMLDECLARATION
INCLUDING XMLDECLARATION

tipo-datos:

(1)
CHARACTER
CHAR ( entero )
VARCHAR ( entero )
CHARACTER VARYING
CHAR
(1M)
CLOB
CHARACTER LARGE OBJECT ( entero )
CHAR K
M
G
(1M)
BLOB
BINARY LARGE OBJECT ( entero )
K
M
G

Notas:
1 Una misma clusula no se debe especificar ms de una vez.

El esquema es SYSIBM. El nombre de la funcin no puede especificarse como un


nombre calificado.

La funcin XMLSERIALIZE devuelve un valor XML serializado de los tipos de


datos especificados, generados a partir del argumento expresin-XML.
CONTENT
Indica que se puede especificar cualquier valor XML y el resultado de la
serializacin se basa en este valor de entrada.
expresin-XML
Especifica una expresin que devuelve un valor del tipo de datos XML. El
valor de la secuencia XML no debe contener un elemento que sea un nodo de
atributo (SQLSTATE 2200W). sta es la entrada al proceso de serializacin.
AS tipo-datos
Especifica el tipo de resultado. El atributo de longitud implcito o explcito del
tipo especificado de datos de resultados debe ser suficiente para contener la
salida serializada (SQLSTATE 22001).

Captulo 3. Funciones 497


XMLSERIALIZE

VERSION 1.0
Especifica la versin XML del valor serializado. La nica versin soportada es
1.0, que se debe especificar como constante de tipo serie (SQLSTATE 42815).
EXCLUDING XMLDECLARATION o INCLUDING XMLDECLARATION
Especifica si se incluye una declaracin XML en el resultado. El valor por
omisin es EXCLUDING XMLDECLARATION.
EXCLUDING XMLDECLARATION
Especifica que una declaracin XML no est incluida en el resultado.
INCLUDING XMLDECLARATION
Especifica que una declaracin XML est incluida en el resultado. La
declaracin XML es la serie <?xml version=1.0 encoding=UTF-8?>.

El resultado tiene el tipo de datos especificado por el usuario. Una secuencia XML
se convierte efectivamente para tener un nico nodo de documento, aplicando
XMLDOCUMENT a la expresin-XML antes de serializar los nodos XML
resultantes. Si el resultado de la expresin-XML puede ser nulo, el resultado puede
ser nulo; si el resultado de la expresin-XML es nulo, el resultado es el valor nulo.
Notas:
1. Soporte en bases de datos que no son Unicode y en bases de datos de varias
particiones de base de datos: La funcin slo recibe el soporte que reciba en la
Versin 8. Se debe especificar la palabra clave CONTENT; no se puede
especificar un tipo de datos BLOB, y tampoco se puede especificar una opcin
XMLDECLARATION (SQLSTATE 42997).
2. Codificacin en el resultado serializado: El resultado serializado est
codificado con UTF-8. Si se utiliza XMLSERIALIZE con un tipo de datos de
caracteres, y se especifica la clusula INCLUDING XMLDECLARATION, es
posible que la serie de caracteres resultante que contiene XML serializado tenga
una declaracin de codificacin XML que no coincida con la pgina de cdigos
de la serie de caracteres. Despus de la serializacin, que utiliza codificacin
UTF-8, la serie de caracteres que se devuelve del servidor al cliente se convierte
en la pgina de cdigos del cliente, y es posible que esa pgina de cdigos sea
diferente de UTF-8.
Por consiguiente, las aplicaciones deben evitar la utilizacin directa de
XMLSERIALIZE INCLUDING XMLDECLARATION que devuelven tipos de
series caracteres y deben recuperar valores XML directamente en variables del
lenguaje principal para mantener la coincidencia entre la pgina de cdigos
externa y la codificacin de la declaracin XML. Si debe utilizarse
XMLSERIALIZE en esta situacin, debe especificarse un tipo BLOB para evitar
la conversin de la pgina de cdigos.
3. Sintaxis alternativa: se puede especificar XMLCLOB(expresin-XML) en lugar
de XMLSERIALIZE(expresin-XML AS CLOB(2G)). Recibe soporte solamente
para la compatibilidad con versiones anteriores de DB2.

Conceptos relacionados:
v XML serialization en XML Guide

Informacin relacionada:
v XMLATTRIBUTES en la pgina 469
v XMLCOMMENT en la pgina 471
v XMLCONCAT en la pgina 472
v XMLDOCUMENT en la pgina 474

498 Consulta de SQL - Volumen 1


XMLSERIALIZE

v XMLELEMENT en la pgina 476


v XMLFOREST en la pgina 482
v XMLNAMESPACES en la pgina 486
v XMLPARSE en la pgina 489
v XMLPI en la pgina 491
v XMLQUERY en la pgina 493
v XMLTEXT en la pgina 500
v XMLVALIDATE en la pgina 502
v XMLAGG en la pgina 288

Captulo 3. Funciones 499


XMLTEXT

XMLTEXT
 XMLTEXT ( expresin-serie ) 

El esquema es SYSIBM. El nombre de la funcin no puede especificarse como un


nombre calificado.

La funcin XMLTEXT devuelve un valor XML con un nico nodo de texto XQuery
cuyo contenido es el argumento de entrada.
expresin-serie
Una expresin cuyo valor tiene un tipo de serie de caracteres: CHAR,
VARCHAR o CLOB.

El tipo de datos del resultado es XML. Si el resultado de la expresin-serie puede ser


nulo, el resultado puede ser nulo; si el valor de entrada es nulo, el resultado es el
valor nulo. Si el resultado de la expresin-serie es una serie vaca, el valor del
resultado es un nodo de texto vaco.
Notas:
1. Soporte en bases de datos que no son Unicode y bases de datos de varias
particiones de base de datos: XMLTEXT no est permitido (SQLSTATE 42997).

Ejemplos:
v Crear una consulta XMLTEXT simple.
VALUES (
XMLTEXT(
El smbolo para las acciones de Johnson&Johnson es JNJ.
)
)

Esta consulta genera el siguiente resultado serializado:


1
-----------------------------------------------------------
El smbolo para las acciones de Johnson&amp;Johnson es JNJ.

Tenga en cuenta que el signo & se correlaciona con &amp; cuando se serializa
un nodo de texto.
v Utilice XMLTEXT con XMLAGG para construir contenido mixto. Supongamos
que el contenido de la tabla T es como sigue:
seqno plaintext emphtext
------ ----------------------------------------------------------- -------------
1 Esta consulta muestra cmo construir contenido mixto
2 utilizando XMLAGG y XMLTEXT. Sin XMLTEXT
3 XMLAGG no tendr nodos de texto para agrupar con otros contenido mixto
nodos, por lo tanto, no puede generar
SELECT XMLELEMENT(
NAME "para", XMLAGG(
XMLCONCAT(
XMLTEXT(
PLAINTEXT
),
XMLELEMENT(
NAME "emphasis", EMPHTEXT
)
)

500 Consulta de SQL - Volumen 1


XMLTEXT

ORDER BY SEQNO
), .
) AS "result"
FROM T

Esta consulta produce el resultado siguiente:


resultado
-------------------------------------------------------------------------------
<para>Esta consulta muestra cmo construir <emphasis>contenido mixto</emphasis>
utilizando XMLAGG y XMLTEXT. Sin <emphasis>XMLTEXT</emphasis> , XMLAGG
no tendr nodos de texto para agrupar con otros nodos; por consiguiente,
no puede generar <emphasis>contenido mixto</emphasis>.</para>

Conceptos relacionados:
v Publishing XML values with SQL/XML en XML Guide

Informacin relacionada:
v XMLATTRIBUTES en la pgina 469
v XMLCOMMENT en la pgina 471
v XMLCONCAT en la pgina 472
v XMLDOCUMENT en la pgina 474
v XMLELEMENT en la pgina 476
v XMLFOREST en la pgina 482
v XMLNAMESPACES en la pgina 486
v XMLPARSE en la pgina 489
v XMLPI en la pgina 491
v XMLQUERY en la pgina 493
v XMLSERIALIZE en la pgina 497
v XMLVALIDATE en la pgina 502
v XMLAGG en la pgina 288

Captulo 3. Funciones 501


XMLVALIDATE

XMLVALIDATE
DOCUMENT
 XMLVALIDATE ( expresin-XML ) 
validar-XML-segn-clusula

Validar-XML-segn-clusula:

ACCORDING TO XMLSCHEMA ID nombre-esquema-XML-registrado 


URI uri1-XML
NO NAMESPACE LOCATION uri2-XML


clusula-elemento-vlido-XML

clusula-elemento-vlido-XML:

ELEMENT nombre-elemento-XML
NAMESPACE uri3-XML
NO NAMESPACE

El esquema es SYSIBM. El nombre de la funcin no puede especificarse como un


nombre calificado.

La funcin XMLVALIDATE devuelve una copia del valor de entrada XML


aumentado con la informacin obtenida a partir de la validacin de esquema XML,
incluidos las anotaciones de tipo y los valores por omisin.
DOCUMENT
Especifica que el valor XML resultante de la expresin-XML debe ser un
documento XML con el formato correcto conforme a XML Versin 1.0
(SQLSTATE 2200M).
expresin-XML
Una expresin que devuelve un valor del tipo de datos XML. Si la
expresin-XML es una variable del sistema principal XML o un marcador de
parmetros escrito implcita o explcitamente, la funcin ejecuta un anlisis de
validacin que elimina espacios en blanco que se pueden ignorar y el valor
CURRENT IMPLICIT XMLPARSE OPTION no se tiene en cuenta.
validar-XML-segn-clusula
Especifica la informacin que se usar al validar el valor de entrada XML.
ACCORDING TO XMLSCHEMA
Indica que la informacin del esquema XML para la validacin se
especifica de forma explcita. Si no se incluye esta clusula, se debe
proporcionar la informacin del esquema XML en el contenido del valor
expresin-XML.
ID nombre-esquema-XML-registrado
Especifica un identificador de SQL para el esquema XML que se
utilizar para la validacin. El nombre (incluido el calificador de
esquema de SQL implcito o explcito) debe designar de forma
exclusiva un esquema XML existente en el depsito de esquema XML

502 Consulta de SQL - Volumen 1


XMLVALIDATE

en el servidor actual. Si no existe un esquema XML con este nombre en


el esquema de SQL especificado explcita o implcitamente, se devuelve
un error (SQLSTATE 42704).
URI uri1-XML
Especifica el URI del espacio de nombres de destino del esquema XML
que se utilizar para la validacin. El valor de XML-uri1 especifica un
URI como constante de serie de caracteres que no est vaca. El URI
debe ser el espacio de nombres de destino de un esquema XML
registrado (SQLSTATE 4274A) y, si no se ha especificado una clusula
LOCATION, debe identificar exclusivamente el esquema XML
registrado (SQLSTATE 4274B).
NO NAMESPACE
Especifica que el esquema XML para la validacin no tenga espacio de
nombres de destino. El URI del espacio de nombres de destino es
equivalente a una serie de caracteres vaca que no se puede especificar
como URI de espacio de nombres de destino explcito.
LOCATION XML-uri2
Especifica el URI de ubicacin del esquema XML que se utilizar para
la validacin. El valor de XML-uri2 especifica un URI como constante
de serie de caracteres que no est vaca. El URI de ubicacin del
esquema XML, combinado con el URI del espacio de nombres de
destino, debe identificar un esquema XML registrado (SQLSTATE
4274A), y slo debe existir ese esquema XML registrado (SQLSTATE
4274B).
clusula-elemento-vlido-XML
Especifica que el valor XML en la expresin-XML debe tener el nombre del
elemento especificado como elemento raz del documento XML.
NAMESPACE XML-uri3 o NO NAMESPACE
Especifica el espacio de nombres de destino para el elemento que se deba
validar. Si no se especifica clusula alguna, se presupone que el elemento
especificado se encuentra en el mismo espacio de nombres que el espacio
de nombres de destino del esquema XML registrado que se utilizar para
la validacin.
NAMESPACE XML-uri3
Especifica el URI del espacio de nombres para el elemento que se debe
validar. El valor de XML-uri3 especifica un URI como constante de
serie de caracteres que no est vaca. ste se puede utilizar cuando el
esquema XML registrado que se utilizar para la validacin tiene ms
de un espacio de nombres.
NO NAMESPACE
Especifica que el elemento para la validacin no tiene espacio de
nombres de destino. El URI del espacio de nombres de destino es
equivalente a una serie de caracteres vaca que no se puede especificar
como URI de espacio de nombres de destino explcito.
ELEMENT nombre-elemento-xml
Especifica el nombre de un elemento global en el esquema XML que se
utilizar para la validacin. El elemento especificado, con espacio de
nombres implcito o explcito, debe coincidir con el elemento raz del
valor de expresin-XML (SQLSTATE 22535 o 22536).

Captulo 3. Funciones 503


XMLVALIDATE

El tipo de datos del resultado es XML. Si el valor de la expresin-XML puede ser


nulo, el resultado puede ser nulo; si el valor de la expresin-XML es nulo, el
resultado es el valor nulo.

El proceso de validacin XML se lleva a cabo en un valor XML serializado. Debido


a que XMLVALIDATE se invoca como argumento de tipo XML, este valor se
serializa automticamente antes del proceso de la validacin con las dos
excepciones siguientes.
v Si el argumento para XMLVALIDATE es una variable del sistema principal XML
o un marcador de parmetros escrito implcita o explcitamente, se ejecuta una
operacin de anlisis de validacin en el valor de entrada (no se lleva a cabo
ningn anlisis implcito que no sea de validacin y no se tiene en cuenta el
valor CURRENT IMPLICIT XMLPARSE OPTION).
v Si el argumento para XMLVALIDATE es una invocacin XMLPARSE que utiliza
la opcin PRESERVE WHITESPACE, el anlisis XML y la validacin XML del
documento se pueden combinar en una nica operacin de anlisis de
validacin.
Si un valor XML se ha validado anteriormente, el proceso de serializacin elimina
la informacin del tipo anotado de la validacin anterior. Sin embargo, los valores
por omisin y las expansiones de entidades de la validacin anterior permanecen
sin cambios. Si la validacin es satisfactoria, todos los caracteres de espacio en
blanco que se puedan ignorar se eliminan del resultado.

Para validar un documento cuyo elemento raz no tiene un espacio de nombres,


debe existir un atributo xsi:noNamespaceSchemaLocation en el elemento raz.
Notas:
1. Soporte en bases de datos que no son Unicode y bases de datos de varias
particiones de base de datos: XMLVALIDATE no est permitido (SQLSTATE
42997).
2. Determinacin del esquema XML: se puede especificar el esquema XML
explcitamente como parte de la invocacin XMLVALIDATE, o bien se puede
determinar a partir de la informacin del esquema XML en el valor de entrada
XML. Si no se especifica durante la invocacin la informacin del esquema
XML, el espacio de nombres de destino y la ubicacin del esquema en el valor
de entrada XML se utilizan para identificar el esquema registrado para la
validacin. Si no se especifica un esquema XML explcito, el valor de entrada
XML debe contener una sugerencia de informacin del esquema XML
(SQLSTATE 2200M). La informacin del esquema XML explcita o implcita
debe identificar un esquema XML registrado (SQLSTATE 42704, 4274A o 22532),
y slo debe existir ese esquema XML registrado (SQLSTATE 4274B o 22533).
3. Autorizacin del esquema XML: el esquema XML que se utiliza para la
validacin se debe registrar en el depsito del esquema XML antes de utilizarlo.
El ID de autorizacin de la sentencia debe tener al menos uno de los privilegios
siguientes:
v Privilegio USAGE en el esquema XML que se debe utilizar durante la
validacin
v Autorizacin SYSADM o DBADM

Ejemplos:
v Validar utilizando el esquema XML identificado por la sugerencia del esquema
XML en el documento de instancia XML.
INSERT INTO T1(XMLCOL)
VALUES (XMLVALIDATE(?))

504 Consulta de SQL - Volumen 1


XMLVALIDATE

Se presupone que el marcador de parmetro de entrada est vinculado a un


valor XML que contiene la informacin del esquema XML.
<po:order
xmlns:po=http://my.world.com
xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
xsi:schemaLocation="http://my.world.com/world.xsd" >
...
</po:order>

Asimismo, se presupone que el esquema XML que est asociado con el espacio
de nombres de destino http://my.world.com y por la sugerencia
schemaLocation http://my.world.com/world.xsd se encuentra en el depsito
del esquema XML.
Basndose en estas suposiciones, se validar el valor de entrada XML y el tipo
anotado de acuerdo con ese esquema XML.
v Validar utilizando el esquema XML identificado por el nombre de SQL
PODOCS.WORLDPO.
INSERT INTO T1(XMLCOL)
VALUES (
XMLVALIDATE(
? ACCORDING TO XMLSCHEMA ID PODOCS.WORLDPO
)
)
Asumiendo que el esquema XML que est asociado con el nombre de SQL
FOO.WORLDPO se encuentre en el depsito XML, se validar el valor de
entrada XML y el tipo anotado de acuerdo con ese esquema XML.
v Validar un elemento especificado del valor XML.

INSERT INTO T1(XMLCOL)


VALUES (
XMLVALIDATE(
? ACCORDING TO XMLSCHEMA ID FOO.WORLDPO
NAMESPACE http://my.world.com/Mary
ELEMENT "po"
)
)
Asumiendo que el esquema XML que est asociado con el nombre de SQL
FOO.WORLDPO se encuentre en el depsito XML, se validar el esquema XML
en relacin al elemento po, cuyo espacio de nombres es http://
my.world.com/Mary.
v El esquema XML se identifica por el espacio de nombres de destino y la
ubicacin del esquema.
INSERT INTO T1(XMLCOL)
VALUES (
XMLVALIDATE(
? ACCORDING TO XMLSCHEMA URI http://my.world.com
LOCATION http://my.world.com/world.xsd
)
)
Asumiendo que un esquema XML asociado con el espacio de nombres de
destino http://my.world.com y por la sugerencia schemaLocation
http://my.world.com/world.xsd se encuentre en el depsito del esquema
XML, el valor de entrada XML se validar y el tipo se anotar de acuerdo con
ese esquema.

Conceptos relacionados:
v XML validation en XML Guide

Captulo 3. Funciones 505


XMLVALIDATE

Informacin relacionada:
v XMLATTRIBUTES en la pgina 469
v XMLCOMMENT en la pgina 471
v XMLCONCAT en la pgina 472
v XMLDOCUMENT en la pgina 474
v XMLELEMENT en la pgina 476
v XMLFOREST en la pgina 482
v XMLNAMESPACES en la pgina 486
v XMLPARSE en la pgina 489
v XMLPI en la pgina 491
v XMLQUERY en la pgina 493
v XMLSERIALIZE en la pgina 497
v XMLTEXT en la pgina 500
v XMLAGG en la pgina 288

506 Consulta de SQL - Volumen 1


XMLXSROBJECTID

XMLXSROBJECTID
 XMLXSROBJECTID ( expresin-valor-xml ) 

El esquema es SYSIBM.

La funcin XMLXSROBJECTID devuelve el identificador de objeto XSR del


esquema utilizado para validar el documento XML especificado en el argumento.
El identificador de objeto XSR se devuelve como un valor BIGINT y proporciona la
clave de una fila nica de SYSCAT.XSROBJECTS.
expresin-valor-xml
Especifica una expresin que da como resultado un valor con un tipo de datos
XML. El valor XML obtenido debe ser una secuencia XML con un nico
elemento que es un documento XML o el valor nulo (SQLSTATE 42815). Si el
argumento es nulo, la funcin devolver nulo. Si expresin-valor-xml no
especifica un documento XML validado, la funcin devolver 0.
Notas:
1. Soporte en bases de datos que no son Unicode y bases de datos de varias
particiones de base de datos: XMLXSROBJECTID no est permitido
(SQLSTATE 42997).
2. Es posible que el esquema XML correspondiente a un ID de objeto XSR
devuelto por la funcin ya no exista, ya que un esquema XML se puede
eliminar sin que ello repercuta sobre los valores XML validados mediante dicho
esquema. Por consiguiente, las consultas que utilicen el ID de objeto XSR para
obtener ms informacin del esquema XML a partir de las vistas de catlogo,
pueden devolver un conjunto vaco.
3. Las aplicaciones pueden utilizar el identificador de objeto XSR para recuperar
informacin adicional acerca del esquema XML. Por ejemplo, el identificador de
objeto XSR puede utilizarse para devolver los documentos de esquema XML
individuales que forman el esquema XML registrado de
SYSCAT.SYSXSROBJECTCOMPONENTS y la jerarqua de documentos del
esquema XML de SYSCAT.XSROBJECTHIERARCHIES.

Ejemplos:
v Recuperar el identificador de esquema XML para el documento XML XMLDOC
almacenado en la tabla MYTABLE.
SELECT XMLXSROBJECTID(XMLDOC) FROM MYTABLE
v Recuperar los documentos del esquema XML asociados al documento XML que
tiene un ID especfico (en este caso donde DOCKEY=1) en la tabla MYTABLE,
incluida la jerarqua de los documentos de esquema XML que forman el
esquema XML.
SELECT H.HTYPE, C.TARGETNAMESPACE, C.COMPONENT
FROM SYSCAT.XSROBJECTCOMPONENTS C, SYSCAT.XSROBJECTHIERARCHIES H
WHERE C.OBJECTID =
(SELECT XMLXSROBJECTID(XMLDOC) FROM MYTABLE
WHERE DOCKEY = 1)
AND C.OBJECTID = H.XSROBJECTID

Captulo 3. Funciones 507


YEAR

YEAR
 YEAR ( expresin ) 

El esquema es SYSIBM.

La funcin YEAR devuelve la parte correspondiente al ao de un valor.

El argumento debe ser una fecha, una indicacin de fecha y hora, una duracin de
fecha, una duracin de indicacin de fecha y hora o una representacin de serie de
caracteres vlida de una fecha o indicacin de fecha y hora que no sea CLOB ni
LONG VARCHAR. En una base de datos Unicode, si un argumento proporcionado
es una serie grfica, se convertir a una serie de caracteres antes de que se ejecute
la funcin.

El resultado de la funcin es un entero grande. Si el argumento puede ser nulo, el


resultado puede ser nulo; si el argumento es nulo, el resultado es el valor nulo.

Las dems reglas dependen del tipo de datos del argumento especificado:
v Si el argumento es una fecha, una indicacin de fecha y hora o una
representacin vlida de una fecha o de una fecha y hora en forma de serie:
El resultado es la parte correspondiente al ao del valor, que es un entero
entre 1 y 9.999.
v Si el argumento es una duracin de fecha o duracin de indicacin de fecha y
hora:
El resultado es la parte correspondiente al ao del valor, que es un entero
entre 9.999 y 9.999. El resultado que no es cero tiene el mismo signo que el
argumento.

Ejemplos:
v Seleccione todos los proyectos de la tabla PROJECT que se han planificado para
empezar (PRSTDATE) y finalizar (PRENDATE) en el mismo ao.
SELECT * FROM PROJECT
WHERE YEAR(PRSTDATE) = YEAR(PRENDATE)
v Seleccione todos los proyectos de la tabla PROJECT que se haya planificado que
finalizasen en menos de un ao.
SELECT * FROM PROJECT
WHERE YEAR(PRENDATE - PRSTDATE) < 1

508 Consulta de SQL - Volumen 1


Funciones de tabla

Funciones de tabla
Slo se puede utilizar una funcin de tabla en la clusula FROM de una sentencia.
Las funciones de tabla devuelven columnas de una tabla, de aspecto parecido a
una tabla creada mediante una sentencia CREATE TABLE simple. Las funciones de
tabla pueden calificarse con un nombre de esquema.

Captulo 3. Funciones 509


XMLTABLE

XMLTABLE
 XMLTABLE ( constante-expresin-xquery-fila 
declaracin-xmlnamespaces ,

 
,
BY REF
PASSING  argumento-xquery-fila

 COLUMNS  definicin-columna-normal-tabla-xml ) 

argumento-xquery-fila:

expresin-variable-xquery AS identificador
BY REF

definicin-columna-normal-tabla-xml:

nombre-columna tipo-datos
BY REF clusula-predefinida PATH constante-expresin-xquery-columna

El esquema es SYSIBM. El nombre de la funcin no puede especificarse como un


nombre calificado.

La funcin XMLTABLE devuelve una tabla de resultados a partir de la evaluacin


de las expresiones de XQuery, posiblemente utilizando los argumentos de entrada
especificados como variables XQuery. Cada elemento de la secuencia de resultados
de la expresin XQuery de fila representa una fila de la tabla de resultados.
declaracin-xmlnamespaces
Especifica una o ms declaraciones de espacios de nombre XML que se
convierten en parte del contexto esttico de la constante-expresin-xquery-fila y la
constante-expresin-xquery-columna. El conjunto de los espacios de nombres
estticamente conocidos para las expresiones XQuery que son argumentos de
XMLTABLE es la combinacin del conjunto establecido previamente de
espacios de nombres estticamente conocidos y las declaraciones de espacios
de nombres especificados en esta clusula. El prlogo XQuery dentro de una
expresin XQuery puede alterar temporalmente estos espacios de nombres.
Si no se ha especificado la declaracin-xmlnamespaces, slo el conjunto
establecido previamente de espacios de nombres estticamente conocidos se
aplica a las expresiones XQuery.
constante-expresin-xquery-fila
Especifica una constante de serie de caracteres de SQL que se interpreta como
una expresin XQuery mediante la sintaxis del lenguaje XQuery soportada. La
serie de la constante se convierte directamente a UTF-8 sin la conversin a la
base de datos o la pgina de cdigos de la seccin. La expresin XQuery se
ejecuta utilizando un conjunto opcional de valores de entrada XML, y devuelve
una secuencia XQuery de salida donde se genera una fila para cada elemento
de la secuencia. El valor de constante-expresin-xquery-fila no debe ser una serie
vaca o una serie de espacios en blanco (SQLSTATE 10505).
510 Consulta de SQL - Volumen 1
XMLTABLE

PASSING
Especifica valores de entrada y la manera en que estos valores se pasan a la
expresin XQuery especificada por la constante-expresin-xquery-fila.
BY REF
Especifica que cualquier argumento de entrada XML pasan por referencia
por omisin. Cuando los valores XML se pasan por referencia, la
evaluacin de XQuery utiliza los rboles de nodos de entrada, si los hay,
directamente desde las expresiones de entrada especificadas, con lo que se
conservan todas las propiedades, incluyendo las identidades de nodo
originales y el orden del documento. Si dos argumentos pasan el mismo
valor XML, las comparaciones de identidad de nodo y orden de
documento en que intervienen algunos nodos incluidos entre los dos
argumentos de entrada pueden hacer referencia a nodos del mismo rbol
de nodos XML.
Esta clusula no afectar al modo en que se pasan los valores que no son
XML. Los valores que no son XML crean una copia nueva del valor
durante la conversin a XML.
argumento-xquery-fila
Especifica un argumento que se debe pasar a la expresin XQuery
especificada por la constante-expresin-xquery-fila. Un argumento especifica
un valor y la forma en que ese valor se debe pasar. El argumento incluye
una expresin SQL que se evala antes de pasar el resultado a la expresin
XQuery.
v Si el valor del resultado es del tipo XML, pasa a ser un valor-xml-entrada.
Un valor XML nulo se convierte en una secuencia XML vaca.
v Si el valor del resultado no es del tipo XML, debe ser convertible al tipo
de datos XML. Un valor nulo se convierte en una secuencia XML vaca.
El valor convertido se transforma en un valor-xml-entrada.
Cuando se evala la constante-expresin-xquery-fila, se presenta una variable
XQuery con un valor equivalente al valor-xml-entrada y un nombre
especificado por la clusula AS.
expresin-variable-xquery
Especifica una expresin SQL cuyo valor est disponible para la
expresin XQuery especificada por la constante-expresin-xquery-fila
durante la ejecucin. La expresin no puede contener una expresin
NEXT VALUE, PREVIOUS VALUE (SQLSTATE 428F9) ni una funcin
OLAP (SQLSTATE 42903).
AS identificador
Especifica que el valor generado por la expresin-variable-xquery pasar
a la constante-expresin-xquery-fila como variable XQuery. El nombre de
la variable ser identificador. El smbolo de dlar inicial ($) que precede
a los nombres de variables en el lenguaje XQuery no se incluye en el
identificador. El identificador debe ser un nombre vlido de variable
XQuery y est restringido a un nombre XML NCName. El identificador
no debe tener ms de 128 bytes de longitud. Dos argumentos de la
misma clusula PASSING no pueden emplear el mismo identificador
(SQLSTATE 42711).
BY REF
Indica que un valor de entrada XML se debe pasar por referencia.
Cuando los valores XML se pasan por referencia, la evaluacin de
XQuery utiliza los rboles de nodos de entrada, si los hay,
directamente desde las expresiones de entrada especificadas, con lo que

Captulo 3. Funciones 511


XMLTABLE

se conservan todas las propiedades, incluyendo las identidades de


nodo originales y el orden del documento. Si dos argumentos pasan el
mismo valor XML, las comparaciones de identidad de nodo y orden de
documento en que intervienen algunos nodos incluidos entre los dos
argumentos de entrada pueden hacer referencia a nodos del mismo
rbol de nodos XML. Si no se especifica BY REF a continuacin de una
variable-expresin-xquery, los argumentos XML se pasan mediante el
mecanismo de pase por omisin que se ofrece mediante la sintaxis
situada tras la palabra clave PASSING. Esta opcin no se puede
especificar para valores que no sean XML (SQLSTATE 42636). Cuando
se pasa un valor que no es XML, el valor se convierte a XML; este
proceso crea una copia.
COLUMNS definicin-columna-normal-tabla-xml
Especifica las columnas de salida de la tabla de resultados, incluido el nombre
de la columna, el tipo de datos, el mecanismo de pase XML y una expresin
XQuery para extraer el valor del elemento de la secuencia para la fila.
nombre-columna
Especifica el nombre de la columna en la tabla de resultados. El nombre no
puede estar calificado y no puede utilizarse el mismo nombre para ms de
una columna de la tabla (SQLSTATE 42711).
tipo-datos
Especifica el tipo de datos de la columna. Consulte CREATE TABLE para
la sintaxis y una descripcin de los tipos disponibles. Se puede utilizar un
tipo-datos en XMLTable si hay un XMLCAST soportado del tipo de datos
XML al tipo-datos especificado.
BY REF
Especifica que los valores XML se devuelven por referencia para columnas
del tipo de datos XML. Por omisin, BY REF devuelve los valores XML.
Cuando los valores XML se devuelven por referencia, el valor XML incluye
los rboles de nodos de entrada, si los hay, directamente desde los valores
de resultados, y conserva todas las propiedades, incluidas las identidades
de nodo originales y el orden del documento. Esta opcin no se puede
especificar para las columnas que no sean XML (SQLSTATE 42636).
Cuando se procesa una columna que no es XML, el valor se convierte
desde XML; este proceso crea una copia.
clusula-predefinida
Especifica un valor por omisin para la columna. Consulte CREATE
TABLE para la sintaxis y una descripcin de la clusula-predefinida. Para las
columnas resultado XMLTABLE, se aplica el valor por omisin cuando el
proceso de la expresin XQuery incluida en la constante-expresin-xquery-
columna devuelve una secuencia vaca.
PATH constante-expresin-xquery-columna
Especifica una constante de serie de caracteres de SQL que se interpreta
como una expresin XQuery mediante la sintaxis del lenguaje XQuery
soportada. La serie de la constante se convierte directamente a UTF-8 sin la
conversin a la base de datos o la pgina de cdigos de la seccin. La
constante-expresin-xquery-columna especifica una expresin XQuery que
determina el valor de la columna en relacin a un elemento que es el
resultado de evaluar la expresin XQuery en la constante-expresin-xquery-
fila. Dado un elemento del resultado de procesar la constante-expresin-
xquery-fila como elemento de contexto proporcionado exteriormente, se

512 Consulta de SQL - Volumen 1


XMLTABLE

evala la constante-expresin-xquery-columna, y se devuelve una secuencia de


salida. El valor de la columna est determinado por esta secuencia de
salida, como sigue.
v Si la secuencia de salida no contiene elementos, la clusula-predefinida
proporciona el valor de la columna.
v Si se devuelve una secuencia vaca y no se especifica ninguna
clusula-predefinida, se asignar un valor nulo a la columna.
v Si se devuelve una secuencia que no est vaca, el valor es XMLCAST
para el tipo-datos especificado para la columna. El proceso de este
XMLCAST podra devolver un error.
El valor de constante-expresin-xquery-columna no debe ser una serie vaca o
una serie de espacios en blanco (SQLSTATE 10505). Si no se especifica esta
clusula, la expresin XQuery por omisin es simplemente nombre-columna.

Si la evaluacin de cualquiera de las expresiones XQuery produce un error, la


funcin XMLTABLE devuelve un error de XQuery (clase de SQLSTATE 10).
Notas:
1. Soporte en bases de datos que no son Unicode y bases de datos de varias
particiones de base de datos: XMLTABLE no est permitido (SQLSTATE
42997).

Ejemplos:
v Listar como un resultado de tabla los elementos de la orden de compra para las
rdenes con un estado de NEW.
SELECT U."PO ID", U."Part #", U."Product Name",
U."Quantity", U."Price", U."Order Date"
FROM PURCHASEORDER P,
XMLTABLE(XMLNAMESPACES(http://podemo.org AS "pod"),
$po/PurchaseOrder/itemlist/item PASSING P.PORDER AS "po"
COLUMNS "PO ID" INTEGER PATH ../../@POid,
"Part #" CHAR(6) PATH product/@pid,
"Product Name" CHAR(50) PATH product/pod:name,
"Quantity" INTEGER PATH quantity,
"Price" DECIMAL(9,2) PATH product/pod:price,
"Order Date" TIMESTAMP PATH ../../dateTime
) AS U
WHERE P.STATUS = NEW

Conceptos relacionados:
v XMLTABLE overview en XML Guide

Captulo 3. Funciones 513


Funciones definidas por el usuario

Funciones definidas por el usuario


 nombre-funcin ( ) 
,

 expresin

Las funciones definidas por el usuario (UDF) son extensiones o adiciones a las
funciones incorporadas existentes del lenguaje SQL. Una funcin definida por el
usuario puede ser una funcin escalar, que devuelve un solo valor cada vez que se
invoca; una funcin de columna, a la que se pasa un conjunto de valores similares
y devuelve un solo valor para el conjunto; una funcin de fila, que devuelve una
fila o una funcin de tabla, que devuelve una tabla.

En los esquemas SYSFUN y SYSPROC se proporcionan varias funciones definidas


por el usuario.

Una UDF puede ser una funcin de columna slo si se deriva de una funcin de
columna existente. Se hace referencia a una UDF mediante un nombre de funcin
calificado o no calificado, seguido de parntesis que encierran los argumentos de la
funcin (si los hay). Una funcin de columna escalar definida por el usuario
registrada con la base de datos puede aludirse en los mismos contextos en que
pueda aparecer cualquier funcin incorporada. Una funcin de fila definida por el
usuario slo puede aludirse implcitamente cuando est registrada como funcin
de transformacin para un tipo definido por el usuario. Una funcin de tabla
definida por el usuario registrada en la base de datos slo puede aludirse en la
clusula FROM de una sentencia SELECT.

Los argumentos de la funcin deben corresponderse en nmero y posicin con los


parmetros especificados para la funcin definida por el usuario cuando se registr
con la base de datos. Adems, los argumentos deben ser de tipos de datos que
sean promocionables a los tipos de datos de los parmetros definidos
correspondientes.

El resultado de la funcin es el especificado en la clusula RETURNS. La clusula


RETURNS, definida cuando se registr la UDF, determina si una funcin es una
funcin de tabla o no lo es. Si se especifica (o se toma como valor por omisin) la
clusula RETURNS NULL ON NULL INPUT al registrar la funcin, el resultado es
nulo si algn argumento es nulo. En el caso de las funciones de tabla, esto se
interpreta como una tabla de retorno sin filas (es decir, una tabla vaca).

A continuacin se muestran algunos ejemplos de funciones definidas por el


usuario:
v Una UDF escalar denominada ADDRESS extrae la direccin de inicio de los
resmenes almacenados en formato script. La funcin ADDRESS espera un
argumento CLOB y devuelve VARCHAR(4000):
SELECT EMPNO, ADDRESS(RESUME) FROM EMP_RESUME
WHERE RESUME_FORMAT = SCRIPT
v La tabla T2 tiene una columna numrica A. Al invocar el UDF escalar
denominado ADDRESS del ejemplo anterior:
SELECT ADDRESS(A) FROM T2

se genera un error (SQLSTATE 42884), ya que no existe ninguna funcin con un


nombre que coincida y con un parmetro promocionable del argumento.

514 Consulta de SQL - Volumen 1


Funciones definidas por el usuario

v Una UDF de tabla denominada WHO devuelve informacin acerca de las


sesiones de la mquina servidora que estaban activas en el momento de ejecutar
la sentencia. La funcin WHO se invoca desde una clusula FROM que incluye
la palabra clave TABLE y una variable de correlacin obligatoria. Los nombres
de columna de la tabla WHO() se han definido en la sentencia CREATE
FUNCTION.
SELECT ID, START_DATE, ORIG_MACHINE
FROM TABLE( WHO() ) AS QQ
WHERE START_DATE LIKE MAY%

Informacin relacionada:
v Subseleccin en la pgina 530
v Sentencia CREATE FUNCTION en Consulta de SQL, Volumen 2

Captulo 3. Funciones 515


Funciones definidas por el usuario

516 Consulta de SQL - Volumen 1


Captulo 4. Procedimientos
Visin general de los procedimientos
Un procedimiento es un programa de aplicacin que se puede iniciar mediante la
sentencia CALL de SQL. El procedimiento se especifica mediante un nombre de
procedimiento, que puede ir seguido por argumentos, incluidos entre parntesis.

El argumento o los argumentos de un procedimiento son valores escalares


individuales, que pueden ser de tipos diferentes y pueden tener significados
diferentes. Los argumentos pueden utilizarse para pasar valores en el
procedimiento y recibir y/o devolver valores del procedimiento.

Los procedimientos definidos por el usuario son procedimientos que se registran


en una base de datos en SYSCAT.ROUTINES, utilizando la sentencia CREATE
PROCEDURE. Con el gestor de bases de datos se proporciona un conjunto de
funciones de este tipo, en un esquema llamado SYSFUN y otro en un esquema
llamado SYSPROC.

Los procedimientos pueden calificarse con el nombre de esquema.

Copyright IBM Corp. 1993, 2006 517


XSR_ADDSCHEMADOC

procedimiento XSR_ADDSCHEMADOC
 XSR_ADDSCHEMADOC ( rschema , nombre , ubicacin-esquema , 

 contenido , propiedad-doc ) 

El esquema es SYSPROC.

Cada esquema XML del depsito de esquemas XML (XSR) puede constar de uno o
ms documentos de esquema XML. Cuando un esquema XML consta de mltiples
documentos, se utiliza el procedimiento almacenado XSR_ADDSCHEMADOC para
aadir cada esquema XML en lugar del documento de esquema XML primario.

Autorizacin:

El ID de usuario de quien realiza la llamada del procedimiento debe ser el


propietario del objeto de XSR, como aparece en la vista de catlogo
SYSCAT.XSROBJECTS.
rschema
Argumento de entrada de tipo VARCHAR (128) que especifica el esquema de
SQL para el esquema XML. El esquema de SQL es una parte del identificador
de SQL utilizado para identificar este esquema XML en el XSR, el cual debe
moverse al estado completo. (La otra parte del identificador de SQL viene
suministrada por el argumento de nombre.) Este argumento puede tener un
valor NULL, que indica que el esquema de SQL por omisin se utiliza, tal
como se define en el registro especial CURRENT SCHEMA. Las normas para
caracteres y delimitadores vlidos que se aplican a cualquier identificador de
SQL tambin se aplican a este argumento. Los objetos de XSR no
experimentarn colisiones de nombres con objetos de base de datos que existan
fuera del XSR, ya que los objetos de XSR aparecen en un espacio de nombres
diferente de los objetos que estn fuera del depsito de esquemas XML.
nombre
Argumento de entrada de tipo VARCHAR (128) que especifica el nombre del
esquema XML. El identificador de SQL completo para el esquema XML es
rschema.name. El esquema XML ya debe existir como resultado de llamar el
procedimiento almacenado XSR_REGISTER y el registro del esquema XML no
puede se puede completar todava. Este argumento no puede tener un valor
NULL. Las normas para caracteres y delimitadores vlidos que se aplican a
cualquier identificador de SQL tambin se aplican a este argumento.
ubicacin-esquema
Argumento de entrada de tipo VARCHAR (1000), que puede tener un valor
NULL, que indica la ubicacin de esquema del documento de esquema XML
primario al que se aade el documento de esquema XML. Este argumento es el
nombre externo del esquema XML, es decir, el documento primario se puede
identificar con el atributo xsi:schemaLocation en los documentos de instancia
XML.
contenido
Parmetro de entrada de tipo BLOB (30M) que contiene el contenido del
documento de esquema XML que se aade. Este argumento no puede tener un
valor NULL; se debe proporcionar un documento de esquema XML.
propiedad-doc
Parmetro de entrada de tipo BLOB (5M) que indica las propiedades para el

518 Consulta de SQL - Volumen 1


XSR_ADDSCHEMADOC

documento de esquema XML que se aade. Este parmetro puede tener un


valor NULL; en caso contrario, el valor es un documento XML.

Ejemplo:
CALL SYSPROC.XSR_ADDSCHEMADOC(
user1,
POschema,
http://myPOschema/address.xsd,
:content_host_var,
0)

Captulo 4. Procedimientos 519


XSR_COMPLETE

procedimiento XSR_COMPLETE
 XSR_COMPLETE ( rschema , nombre , propiedades-esquema , 

 utilizado-para-descomposicin ) 

El esquema es SYSPROC.

El procedimiento XSR_COMPLETE es el ltimo procedimiento almacenado al que


se llama como parte del proceso de registro del esquema XML, que registra
esquemas XML con el depsito de esquemas XML (XSR). Un esquema XML no est
disponible para ser validado hasta que se completa el registro del esquema
mediante una llamada a este procedimiento almacenado.

Autorizacin::

El ID de usuario de quien realiza la llamada del procedimiento debe ser el


propietario del objeto de XSR, como aparece en la vista de catlogo
SYSCAT.XSROBJECTS.
rschema
Argumento de entrada de tipo VARCHAR (128) que especifica el esquema de
SQL para el esquema XML. El esquema de SQL es una parte del identificador
de SQL utilizado para identificar este esquema XML en el XSR, el cual debe
moverse al estado completo. (La otra parte del identificador de SQL viene
suministrada por el argumento de nombre.) Este argumento puede tener un
valor NULL, que indica que el esquema de SQL por omisin se utiliza, tal
como se define en el registro especial CURRENT SCHEMA. Las normas para
caracteres y delimitadores vlidos que se aplican a cualquier identificador de
SQL tambin se aplican a este argumento. Los objetos de XSR no
experimentarn colisiones de nombres con objetos de base de datos que existan
fuera del XSR, ya que los objetos de XSR aparecen en un espacio de nombres
diferente de los objetos que estn fuera del depsito de esquemas XML.
nombre
Argumento de entrada de tipo VARCHAR (128) que especifica el nombre del
esquema XML. El identificador de SQL completo para el esquema XML, para
el que se debe realizar una comprobacin de finalizacin, es rschema.name. El
esquema XML ya debe existir como resultado de llamar el procedimiento
almacenado XSR_REGISTER y el registro del esquema XML no puede se puede
completar todava. Este argumento no puede tener un valor NULL. Las normas
para caracteres y delimitadores vlidos que se aplican a cualquier identificador
de SQL tambin se aplican a este argumento.
propiedades-esquema
Argumento de entrada de tipo BLOB (5M) que especifica las propiedades, si
las hay, asociadas al esquema XML. El valor para este argumento puede ser
NULL, si no hay propiedades asociadas, o bien un documento XML que
represente las propiedades para el esquema XML.
utilizado-para-descomposicin
Parmetro de entrada de tipo entero que indica si un esquema XML se va a
utilizar para la descomposicin. Si un esquema XML se va a utilizar para
descomposicin, este valor debe establecerse en 1; de lo contrario, debe
establecerse en cero.

520 Consulta de SQL - Volumen 1


XSR_COMPLETE

Ejemplo:
CALL SYSPROC.XSR_COMPLETE(
user1,
POschema,
:schemaproperty_host_var,
0)

Captulo 4. Procedimientos 521


XSR_DTD

Procedimiento XSR_DTD
 XSR_DTD ( rschema , nombre , systemid , publicid , contenido ) 

El esquema es SYSPROC.

El procedimiento XSR_DTD registra una declaracin de tipo de documento (DTD)


con el depsito de esquemas XML (XSR).

Autorizacin:

El ID de usuario de quien realiza la llamada del procedimiento debe tener como


mnimo uno de los siguientes:
v Autorizacin SYSADM o DBADM.
v Autorizacin de base de datos IMPLICIT_SCHEMA si no existe el esquema de
SQL.
v Privilegio CREATEIN si existe el esquema de SQL.
rschema
Argumento de entrada de tipo VARCHAR (128) que especifica el esquema de
SQL para el DTD. El esquema de SQL es una parte del identificador de SQL
utilizado para identificar este DTD en el XSR. (La otra parte del identificador
de SQL viene suministrada por el argumento de nombre.) Este argumento
puede tener un valor NULL, que indica que el esquema de SQL por omisin se
utiliza, tal como se define en el registro especial CURRENT SCHEMA. Las
normas para caracteres y delimitadores vlidos que se aplican a cualquier
identificador de SQL tambin se aplican a este argumento. Los esquemas
relacionales que comienzan con la serie SYS no se deben utilizar para este
valor. Los objetos de XSR no experimentarn colisiones de nombres con objetos
de base de datos que existan fuera del XSR, ya que los objetos de XSR
aparecen en un espacio de nombres diferente de los objetos que estn fuera del
depsito de esquemas XML.
nombre
Argumento de entrada y de salida de tipo VARCHAR (128) que especifica el
nombre del DTD. El identificador de SQL completo para el DTD es
rschema.name y debe ser exclusivo entre todos los objetos del XSR. Este
argumento acepta un valor NULL. Cuando se proporciona un valor NULL
para este argumento, se genera un valor exclusivo y se almacena dentro del
XSR. Las normas para caracteres y delimitadores vlidos que se aplican a
cualquier identificador de SQL tambin se aplican a este argumento.
systemid
Parmetro de entrada de tipo VARCHAR (1000) que especifica el identificador
del sistema del DTD. El ID del sistema del DTD debera corresponderse con el
identificador de recursos uniforme del DTD de la declaracin de DOCTYPE del
documento de instancia XML o de una declaracin de ENTITY (con la palabra
clave SYSTEM como prefijo, en el caso de que se utilice). Este argumento no
puede tener un valor NULL. El ID del sistema puede especificarse
conjuntamente con un ID pblico.
publicid
Parmetro de entrada de tipo VARCHAR (1000) que especifica el identificador
pblico del DTD. El ID pblico de un DTD debera corresponderse con el
identificador de recursos uniforme del DTD de la declaracin de DOCTYPE del

522 Consulta de SQL - Volumen 1


XSR_DTD

documento de instancia XML o de una declaracin de ENTITY (con la palabra


clave PUBLIC como prefijo, en el caso de que se utilice). Este argumento
acepta un valor NULL y slo debera utilizarse si tambin se especifica en la
declaracin de DOCTYPE del documento de instancia XML o en una
declaracin de ENTITY.
contenido
Parmetro de entrada de tipo BLOB (30M) que contiene el contenido del
documento DTD. Este argumento no puede tener un valor NULL.

Ejemplo: Registre el DTD identificado por medio del ID de sistema


http://www.test.com/person.dtd y del ID pblico http://www.test.com/person:

CALL SYSPROC.XSR_DTD ( MYDEPT ,


PERSONDTD ,
http://www.test.com/person.dtd ,
http://www.test.com/person,
:content_host_variable
)

Conceptos relacionados:
v Registering XSR objects through stored procedures en XML Guide
v XML schema, DTD, and external entity management using the XML schema
repository (XSR) en XML Guide

Captulo 4. Procedimientos 523


XSR_EXTENTITY

Procedimiento XSR_EXTENTITY
 XSR_EXTENTITY ( rschema , nombre , systemid , publicid , 

 contenido ) 

El esquema es SYSPROC.

El procedimiento XSR_EXTENTITY registra una entidad externa con el depsito de


esquemas XML (XSR).

Autorizacin:

El ID de usuario de quien realiza la llamada del procedimiento debe tener como


mnimo uno de los siguientes:
v Autorizacin SYSADM o DBADM.
v Autorizacin de base de datos IMPLICIT_SCHEMA si no existe el esquema de
SQL.
v Privilegio CREATEIN si existe el esquema de SQL.
rschema
Argumento de entrada de tipo VARCHAR (128) que especifica el esquema de
SQL para la entidad externa. El esquema de SQL es una parte del identificador
de SQL utilizado para identificar esta entidad externa en el XSR. (La otra parte
del identificador de SQL viene suministrada por el argumento de nombre.) Este
argumento puede tener un valor NULL, que indica que el esquema de SQL por
omisin se utiliza, tal como se define en el registro especial CURRENT
SCHEMA. Las normas para caracteres y delimitadores vlidos que se aplican a
cualquier identificador de SQL tambin se aplican a este argumento. Los
esquemas relacionales que comienzan con la serie SYS no se deben utilizar
para este valor. Los objetos de XSR no experimentarn colisiones de nombres
con objetos de base de datos que existan fuera del XSR, ya que los objetos de
XSR aparecen en un espacio de nombres diferente de los objetos que estn
fuera del depsito de esquemas XML.
nombre
Argumento de entrada y de salida de tipo VARCHAR (128) que especifica el
nombre de la entidad externa. El identificador de SQL completo para la
entidad externa es rschema.name y debe ser exclusivo entre todos los objetos del
XSR. Este argumento acepta un valor NULL. Cuando se proporciona un valor
NULL para este argumento, se genera un valor exclusivo y se almacena dentro
del XSR. Las normas para caracteres y delimitadores vlidos que se aplican a
cualquier identificador de SQL tambin se aplican a este argumento.
systemid
Parmetro de entrada de tipo VARCHAR (1000) que especifica el identificador
de la entidad externa. El ID del sistema de la entidad externa debera
corresponderse con el identificador de recursos uniforme de la entidad externa
de la declaracin de ENTITY (con la palabra clave SYSTEM como prefijo, en el
caso de que se utilice). Este argumento no puede tener un valor NULL. El ID
del sistema puede especificarse conjuntamente con un ID pblico.
publicid
Parmetro de entrada de tipo VARCHAR (1000) que especifica el identificador
pblico de la entidad externa. El ID pblico de una entidad externa debera
corresponderse con el identificador de recursos uniforme de la entidad externa

524 Consulta de SQL - Volumen 1


XSR_EXTENTITY

de la declaracin de ENTITY (con la palabra clave PUBLIC como prefijo, en el


caso de que se utilice). Este argumento acepta un valor NULL y slo debera
utilizarse si tambin se especifica en la declaracin de DOCTYPE del
documento de instancia XML o en una declaracin de ENTITY.
contenido
Parmetro de entrada de tipo BLOB (30M) que contiene el contenido del
documento de la entidad externa. Este argumento no puede tener un valor
NULL.

Ejemplo: Registre las entidades externas identificadas mediante los identificadores


del sistema http://www.test.com/food/chocolate.txt y http://www.test.com/food/cookie.txt:

CALL SYSPROC.XSR_EXTENTITY ( FOOD ,


CHOCLATE ,
http://www.test.com/food/chocolate.txt ,
NULL ,
:content_of_chocolate.txt_as_a_host_variable
)

CALL SYSPROC.XSR_EXTENTITY ( FOOD ,


COOKIE ,
http://www.test.com/food/cookie.txt ,
NULL ,
:content_of_cookie.txt_as_a_host_variable
)

Conceptos relacionados:
v Registering XSR objects through stored procedures en XML Guide
v XML schema, DTD, and external entity management using the XML schema
repository (XSR) en XML Guide

Captulo 4. Procedimientos 525


XSR_REGISTER

procedimiento XSR_REGISTER
 XSR_REGISTER ( rschema , nombre , ubicacin-esquema , contenido , 

 propiedad-doc ) 

El esquema es SYSPROC.

El procedimiento XSR_REGISTER es el primer procedimiento almacenado al que se


llama como parte del proceso de registro del esquema XML, que registra esquemas
XML con el depsito de esquemas XML (XSR).

Autorizacin:

El ID de usuario de quien realiza la llamada del procedimiento debe tener como


mnimo uno de los siguientes:
v Autorizacin SYSADM o DBADM.
v Autorizacin de base de datos IMPLICIT_SCHEMA si no existe el esquema de
SQL.
v Privilegio CREATEIN si existe el esquema de SQL.
rschema
Argumento de entrada de tipo VARCHAR (128) que especifica el esquema de
SQL para el esquema XML. El esquema de SQL es una parte del identificador
de SQL utilizado para identificar este esquema XML en el XSR. (La otra parte
del identificador de SQL viene suministrada por el argumento de nombre.)
Este argumento puede tener un valor NULL, que indica que el esquema de
SQL por omisin se utiliza, tal como se define en el registro especial
CURRENT SCHEMA. Las normas para caracteres y delimitadores vlidos que
se aplican a cualquier identificador de SQL tambin se aplican a este
argumento. Los esquemas relacionales que comienzan con la serie SYS no se
deben utilizar para este valor. Los objetos de XSR no experimentarn colisiones
de nombres con objetos de base de datos que existan fuera del XSR, ya que los
objetos de XSR aparecen en un espacio de nombres diferente de los objetos que
estn fuera del depsito de esquemas XML.
nombre
Argumento de entrada y de salida de tipo VARCHAR (128) que especifica el
nombre del esquema XML. El identificador de SQL completo para el esquema
XML es rschema.name y debe ser exclusivo entre todos los objetos del XSR. Este
argumento acepta un valor NULL. Cuando se proporciona un valor NULL
para este argumento, se genera un valor exclusivo y se almacena dentro del
XSR. Las normas para caracteres y delimitadores vlidos que se aplican a
cualquier identificador de SQL tambin se aplican a este argumento.
ubicacin-esquema
Argumento de entrada de tipo VARCHAR (1000), que puede tener un valor
NULL, que indica la ubicacin de esquema del documento de esquema XML
primario. Este argumento es el nombre externo del esquema XML, es decir, el
documento primario se puede identificar con el atributo xsi:schemaLocation en
los documentos de instancia XML.
contenido
Parmetro de entrada de tipo BLOB (30M) que contiene el contenido del
documento de esquema XML primario. Este argumento no puede tener un
valor NULL; se debe proporcionar un documento de esquema XML.

526 Consulta de SQL - Volumen 1


XSR_REGISTER

propiedad-doc
Parmetro de entrada de tipo BLOB (5M) que indica las propiedades para el
documento de esquema XML primario. Este parmetro puede tener un valor
NULL; en caso contrario, el valor es un documento XML.

Ejemplo:
CALL SYSPROC.XSR_REGISTER(
user1,
POschema,
http://myPOschema/PO.xsd,
:content_host_var,
:docproperty_host_var)

Captulo 4. Procedimientos 527


XSR_REGISTER

528 Consulta de SQL - Volumen 1


Captulo 5. Consultas
Consultas de SQL
Una consulta especifica una tabla resultante. Una consulta es un componente de
algunas sentencias de SQL. Las tres formas de una consulta son:
v subseleccin
v seleccin completa
v sentencia-select.

Autorizacin

El ID de autorizacin de la sentencia debe tener como mnimo uno de los


siguientes privilegios o autorizaciones para cada tabla, vista o apodo al que la
consulta haga referencia:
v Autorizacin SYSADM o DBADM
v Privilegio CONTROL
v Privilegio SELECT.

Los privilegios de grupo, con excepcin de PUBLIC, no se comprueban para las


consultas contenidas en sentencias de SQL esttico.

Para los apodos, los requisitos de autorizacin de la fuente de datos para el objeto
al que el apodo hace referencia se aplican cuando se procesa la consulta. El ID de
autorizacin de la sentencia puede estar correlacionado con un ID de autorizacin
diferente en la fuente de datos.

Informacin relacionada:
v Sentencia SELECT INTO en Consulta de SQL, Volumen 2

Copyright IBM Corp. 1993, 2006 529


Subseleccin

Subseleccin
 clusula-select clusula-from 
clusula-where clusula-group-by

 
clusula-having clusula-order-by clusula-fetch-first

La subseleccin es un componente de la seleccin completa.

Una subseleccin especifica una tabla resultante que deriva de las tablas, vistas o
apodos identificados en la clusula FROM. La derivacin puede describirse como
una secuencia de operaciones en las que el resultado de cada operacin es la
entrada de la siguiente. (Es la nica manera de describir la subseleccin. El mtodo
utilizado para realizar la derivacin puede ser bastante distinto del que aqu se
describe. Si existe alguna parte de la subseleccin que en realidad no es necesario
ejecutar para obtener el resultado correcto, es posible que no se ejecute.)

Las clusulas de la subseleccin se procesan en el orden siguiente:


1. clusula FROM
2. clusula WHERE
3. clusula GROUP BY
4. clusula HAVING
5. clusula SELECT
6. clusula ORDER BY
7. Clusula FETCH FIRST

Una subseleccin que contenga una clusula ORDER BY o FETCH FIRST no puede
especificarse:
v En la seleccin completa ms exterior de una vista.
v En una tabla de consultas materializadas.
v A menos que la subseleccin est entre parntesis.
Por ejemplo, lo siguiente no es vlido (SQLSTATE 428FJ):
SELECT * FROM T1
ORDER BY C1
UNION
SELECT * FROM T2
ORDER BY C1

El ejemplo siguiente s es vlido:


(SELECT * FROM T1
ORDER BY C1)
UNION
(SELECT * FROM T2
ORDER BY C1)

Nota: Una clusula ORDER BY en una subseleccin no afecta el orden de las filas
que una consulta devuelve. Una clusula ORDER BY slo afecta el orden de
las filas devueltas si se especifica en la seleccin completa ms externa.

530 Consulta de SQL - Volumen 1


clusula-select

clusula-select
ALL
 SELECT 
DISTINCT

 * 
,

 expresin
AS
nombre-nueva-columna
nombre-expuesto.*

La clusula SELECT especifica las columnas de la tabla resultante final. Los valores
de columna los genera la aplicacin de la lista de seleccin a R. La lista de seleccin
son los nombres o expresiones especificados en la clusula SELECT y R es el
resultado de la operacin anterior de la subseleccin. Por ejemplo, si las nicas
clusulas especificadas con SELECT, FROM y WHERE, R es el resultado de la
clusula WHERE.
ALL
Retiene todas las filas de la tabla resultante final y no elimina los duplicados
redundantes. Este es el valor por omisin.
DISTINCT
Elimina todas las filas excepto una de los juegos de filas duplicadas de la tabla
resultante final. Si se utiliza DISTINCT, ninguna columna de tipo serie de la
tabla resultante puede ser un tipo LONG VARCHAR, LONG VARGRAPHIC,
DATALINK o LOB, un tipo diferenciado de cualquiera de estos tipos ni un tipo
estructurado. DISTINCT puede utilizarse ms de una vez en una subseleccin.
Esto incluye SELECT DISTINCT, la utilizacin de DISTINCT en una funcin de
columna de la lista de seleccin o la clusula HAVING y las subconsultas de la
subseleccin.
Dos filas slo son duplicadas una de la otra si cada valor de la primera es
igual al valor correspondiente de la segunda. Para la determinacin de
duplicados, dos valores nulos se consideran iguales.

Notacin de lista de seleccin:


* Representa una lista de nombres que identifican las columnas de la tabla R. El
primer nombre de la lista identifica la primera columna de R, el segundo
nombre identifica la segunda columna de R y as sucesivamente.
La lista de nombres se establece cuando se vincula el programa que contiene la
clusula SELECT. Por lo tanto, * (el asterisco) no identifica ninguna columna
que se haya aadido a la tabla despus de vincular la sentencia que contiene la
referencia a la tabla.
expresin
Especifica los valores de una columna del resultado. Puede ser cualquier
expresin que sea un elemento vlido en el lenguaje SQL pero normalmente
incluye nombres de columnas. Cada nombre de columna utilizado en la lista
de seleccin debe identificar sin ambigedades una columna R.
nuevo-nombre-columna o AS nuevo-nombre-columna
Nombra o cambia el nombre de la columna del resultado. El nombre no

Captulo 5. Consultas 531


Notacin de lista de seleccin:

debe estar calificado y no tiene que ser exclusivo. El uso subsiguiente del
nombre-columna est limitado en lo siguiente:
v Un nuevo-nombre-columna especificado en la clusula AS se puede
utilizar en la clusula-order-by, siempre que sea exclusivo.
v Un nuevo-nombre-columna especificado en la clusula AS de la lista de
seleccin no se puede utilizar en ninguna otra clusula de la
subseleccin (clusula-where, clusula-group-by o clusula-having).
v Un nuevo-nombre-columna especificado en la clusula AS no se puede
utilizar en la clusula-update.
v Un nuevo-nombre-columna especificado en la clusula AS se conoce
fuera de la seleccin completa de las expresiones de tabla anidadas, las
expresiones de tablas comunes y CREATE VIEW.
nombre.*
Representa la lista de nombres que identifican las columnas de la tabla
resultante identificada por nombre-expuesto. El nombre-expuesto puede ser un
nombre de tabla, un nombre de vista, un apodo o un nombre de correlacin, y
debe designar una tabla, una vista o un apodo especificado en la clusula
FROM. El primer nombre de la lista identifica la primera columna de la tabla,
vista o apodo, el segundo nombre de la lista identifica la segunda columna de
la tabla, vista o apodo, y as sucesivamente.
La lista de nombres se establece cuando se vincula la sentencia que contiene la
clusula SELECT. Por lo tanto, * no identifica ninguna columna que se haya
aadido a la tabla despus de vincular la sentencia.
El nmero de columnas del resultado de SELECT es igual al nmero de
expresiones de la forma operativa de la lista de seleccin (es decir, la lista
establecida cuando se ha preparado la sentencia) y no puede exceder de 500
para una pgina de 4K de tamao o de 1012 para una pgina de 8K, 16K o
32K de tamao.

Lmites en las columnas de una serie


Para ver las limitaciones en la lista de seleccin, consulte Restricciones al utilizar
series de caracteres de longitud variable.

Aplicacin de la lista de seleccin


Algunos resultados de aplicar la lista de seleccin en R dependen de si se utiliza
GROUP BY o HAVING o no. Los resultados se describen en dos listas separadas:

Si se utiliza GROUP BY o HAVING:


v Una expresin X (no una funcin de columna) utilizada en la lista de seleccin
debe contener una clusula GROUP BY con:
una expresin-agrupacin en la cual cada nombre-columna identifique sin
ambigedades una columna de R (consulte el apartado Clusula group-by
en la pgina 546), o bien,
cada columna de R a la que X haga referencia como una expresin-agrupacin
separada.
v La lista de seleccin se aplica a cada grupo de R y el resultado contiene tantas
filas como grupos haya en R. Cuando la lista de seleccin se aplica a un grupo
de R, este grupo es la fuente de los argumentos de las funciones de columna de
la lista de seleccin.

Si no se utilizan ni GROUP BY ni HAVING:

532 Consulta de SQL - Volumen 1


Si no se utiliza GROUP BY ni HAVING

v La lista de seleccin no debe incluir ninguna funcin de columna o cada


nombre-columna de la lista de seleccin debe estar especificado en una funcin de
columna o debe ser una referencia de columna correlacionada.
v Si la seleccin no incluye funciones de columna, la lista de seleccin se aplica a
cada fila de R y el resultado contiene tantas filas como el nmero de filas en R.
v Si la lista de seleccin es una lista de funciones de columna, R es la fuente de los
argumentos de las funciones y el resultado de aplicar la lista de seleccin es una
fila.

En cualquier caso la columna n del resultado contiene los valores especificados por
la aplicacin de la expresin n en la forma operativa de la lista de seleccin.

Atributos nulos de las columnas del resultado: Las columnas del resultado no
permiten valores nulos si se derivan de:
v Una columna que no permite valores nulos
v Una constante
v La funcin COUNT o COUNT_BIG
v Una variable del lenguaje principal que no tiene una variable indicadora
v Una funcin o expresin escalar no incluye un operando que permita nulos

Las columnas del resultado permiten valores nulos si se derivan de:


v Cualquier funcin de columna excepto COUNT o COUNT_BIG
v Una columna que permite valores nulos
v Una funcin o expresin escalar que incluye un operando que permite nulos
v Una funcin NULLIF con argumentos que contienen valores iguales
v Una variable de lenguaje principal que tiene una variable de indicador
v Un resultado de una operacin de conjunto si como mnimo uno de los
elementos correspondientes de la lista de seleccin puede ser nulo
v Una expresin aritmtica o una columna de vista que se deriva de una expresin
aritmtica y la base de datos est configurada con DFT_SQLMATHWARN
establecido en Yes
v Una subseleccin escalar
v Una operacin de desreferencia

Nombres de las columnas del resultado:


v Si se especifica la clusula AS, el nombre de la columna del resultado es el
nombre especificado en esta clusula.
v Si no se especifica la clusula AS y la columna del resultado se deriva de una
columna, el nombre de columna del resultado es el nombre no calificado de
dicha columna.
v Si no se especifica la clusula AS y la columna del resultado se deriva mediante
una operacin de desreferencia, el nombre de columna del resultado es el
nombre no calificado de la columna de destino de la operacin de desreferencia.
v Todos los dems nombres de columnas del resultado carecen de nombre. El
sistema asigna nmeros temporales (como series de caracteres) a estas columnas.

Tipos de datos de las columnas del resultado: Cada columna del resultado de
SELECT adquiere un tipo de datos de la expresin de la que se deriva.

Captulo 5. Consultas 533


Tipos de datos de las columnas del resultado

El tipo de datos de la columna del resultado


Cuando la expresin es ... es ...
el nombre de cualquier columna numrica el mismo que el tipo de datos de la columna,
con la misma precisin y escala que para las
columnas DECIMAL.
una constante de enteros INTEGER.
una constante decimal DECIMAL, con la precisin y la escala de la
constante.
una constante de coma flotante DOUBLE.
el nombre de cualquier variable numrica el mismo que el tipo de datos de la variable,
con la misma precisin y escala que para las
variables DECIMAL.
una constante hexadecimal que representa n VARCHAR(n); la pgina de cdigos es la
bytes pgina de cdigos de la base de datos.
el nombre de cualquier columna de serie el mismo que el tipo de datos de la columna,
con el mismo atributo de longitud.
el nombre de cualquier variable de serie. el mismo que el tipo de datos de la variable,
con el mismo atributo de longitud; si el tipo
de datos de la variable no es idntico a un
tipo de datos SQL (por ejemplo, una serie
terminada en NUL en C), la columna del
resultado es una serie de longitud variable.
una constante de serie de caracteres de VARCHAR(n).
longitud n
una constante de serie grfica de longitud n VARGRAPHIC(n).
el nombre de una columna de indicacin de el mismo tipo de datos de la columna.
fecha y hora
el nombre de una columna de tipo definido el mismo tipo de datos de la columna.
por el usuario
el nombre de una columna de tipo de el mismo tipo de datos de la columna.
referencia

clusula-from
,

 FROM  referencia-tabla 

La clusula FROM especifica una tabla resultante intermedia.

Si se especifica una referencia-tabla, la tabla resultante intermedia es simplemente


el resultado de dicha referencia-tabla. Si se especifica ms de una referencia-tabla,
la tabla resultante intermedia consta de todas las combinaciones posibles de las
filas de las referencias-tabla especificadas (el producto cartesiano). Cada fila del
resultado es una fila de la primera referencia-tabla concatenada con una fila de la
segunda referencia-tabla concatenada a su vez con una fila de la tercera, etctera.
El nmero de filas del resultado es el producto del nmero de filas de todas las
referencias-tabla individuales. Para obtener una descripcin de referencia-tabla,
consulte referencia-tabla en la pgina 535.

534 Consulta de SQL - Volumen 1


referencia-tabla

referencia-tabla
 nombre-tabla 
clusula-correlacin clusula-tablesample
apodo
nombre-vista clusula-correlacin
ONLY ( nombre-tabla )
OUTER nombre-vista
TABLE ( nombre-funcin ( ) ) clusula-correlacin
,
 expresin
(1)
expresin-xmltable clusula-correlacin
expresin-tabla-anidada
referencia-tabla-cambio-datos
clusula-correlacin
tabla-unida

clusula-correlacin:

AS
nombre-correlacin
,

(  nombre-columna )

clusula-tablesample:

TABLESAMPLE BERNOULLI ( expresin-numrica1 ) 


SYSTEM


REPEATABLE ( expresin-numrica2 )

expresin-tabla-anidada:

(seleccin completa) clusula-correlacin


(2)
LATERAL
manejador-continuo WITHIN

manejador-continuo:

RETURN DATA UNTIL  valor-condicin-especfica

valor-condicin-especfica:

VALUE
FEDERATED SQLSTATE constante-serie
,

SQLCODE  constante-entera

Captulo 5. Consultas 535


referencia-tabla

referencia-tabla-cambio-datos:

FINAL TABLE ( sentencia-insert )


NEW
FINAL TABLE ( sentencia-update-buscada )
NEW
OLD
OLD TABLE ( sentencia-delete-buscada )

Notas:
1 Una expresin XMLTABLE puede formar parte de una referencia de tabla. En
este caso, las subexpresiones de la expresin XMLTABLE se encuentran en el
mbito de variables de un rango anterior de la clusula FROM. Para obtener
ms informacin, consulte la descripcin de XMLTABLE.
2 Puede especificarse TABLE en lugar de LATERAL.

Cada nombre-tabla, nombre-vista o apodo especificado como referencia-tabla debe


identificar una tabla, vista o apodo existente del servidor de aplicaciones o el
nombre-tabla de una expresin de tabla comn definida antes de la seleccin
completa que contiene la referencia-tabla. Si nombre-tabla hace referencia a una tabla
con tipo, el nombre indica UNION ALL de la tabla con todas sus subtablas y
solamente con las columnas de nombre-tabla. De manera similar, si nombre-vista hace
referencia a una vista con tipo, el nombre indica UNION ALL de la vista con todas
sus subvistas y solamente con las columnas de nombre-vista.

El uso de ONLY(nombre-tabla) u ONLY(nombre-vista) significa que no se incluyen las


filas de las subtablas o subvistas correspondientes. Si el nombre-tabla utilizado con
ONLY no tiene subtablas, ONLY(nombre-tabla) equivale a especificar nombre-tabla. Si
el nombre-vista utilizado con ONLY no tiene subvistas, ONLY(nombre-vista) equivale
a especificar nombre-vista.

El uso de OUTER(nombre-tabla) u OUTER(nombre-vista) representa una tabla virtual.


Si el nombre-tabla o el nombre-vista que se utilice con OUTER no tiene subtablas o
subvistas, especificar OUTER equivale a no especificar OUTER.
OUTER(nombre-tabla) se deriva de nombre-tabla de la manera siguiente:
v En las columnas, se incluyen las columnas de nombre-tabla seguidas de las
columnas adicionales que ha introducido cada una de sus subtablas (si existen).
Las columnas adicionales se aaden a la derecha atravesando la jerarqua de las
subtablas por orden de importancia. Se atraviesan las subtablas que tienen un
padre comn en el orden de creacin de sus tipos.
v En las filas, se incluyen todas las filas de nombre-tabla y todas las filas de sus
subtablas. Se devuelven valores nulos para las columnas que no estn en la
subtabla para la fila.

Los puntos anteriores tambin se aplican a OUTER(nombre-vista) si se sustituye


nombre-tabla por nombre-vista y subtabla por subvista.

El uso de ONLY o OUTER requiere el privilegio SELECT en cada subtabla de


nombre-tabla o subvista de nombre-vista.

Cada nombre-funcin, junto con los tipos de sus argumentos, especificado como una
referencia a tabla, debe resolverse en una funcin de tabla existente en el servidor
de aplicaciones.

536 Consulta de SQL - Volumen 1


referencia-tabla

Una seleccin completa entre parntesis seguida por un nombre de correlacin se


conoce como expresin de tabla anidada.

Una tabla-unida especifica un conjunto resultante intermedio que es el resultado de


una o varias operaciones de unin. Para obtener informacin, vea tabla-unida en
la pgina 543.

Los nombres expuestos de todas las referencias a tabla deben ser exclusivos. Un
nombre expuesto es:
v Un nombre-correlacin,
v Un nombre-tabla que no va seguido de un nombre-correlacin,
v Un nombre-vista que no va seguido de un nombre-correlacin,
v Un apodo que no va seguido de un nombre-correlacin,
v Un nombre-seudnimo que no va seguido de un nombre-correlacin.

Cada nombre-correlacin se define como un designador de la referencia


inmediatamente precedente de nombre-tabla, nombre-vista, apodo, nombre-funcin o
expresin de tabla anidada. Una referencia calificada a una columna para una
tabla, vista, funcin de tabla o expresin de tabla anidada debe utilizar el nombre
expuesto. Si se especifica dos veces el mismo nombre de tabla, vista o apodo, como
mnimo una especificacin debe ir seguida de un nombre-correlacin. El
nombre-correlacin se utiliza para calificar las referencias a las columnas de la tabla,
vista o apodo. Cuando se especifica un nombre-correlacin, tambin se pueden
especificar nombres-columna para asignar nombres a las columnas de la referencia a
nombre-tabla, nombre-vista, apodo, nombre-funcin o expresin de tabla anidada.

En general, las funciones de tabla y las expresiones de tabla anidadas pueden


especificarse en cualquier clusula-from. Las columnas de las funciones de tabla y
las expresiones de tabla anidadas pueden hacerse referencia en la lista de seleccin
y en el resto de la subseleccin utilizando el nombre de correlacin que debe
especificarse. El mbito de este nombre de correlacin es el mismo que los
nombres de correlacin para otros nombres de tabla, vista o apodo de la clusula
FROM. Una expresin de tabla anidada puede utilizarse:
v En el lugar de una vista para evitar la creacin de la vista (cuando no es
necesario el uso general de la vista)
v Cuando la tabla resultante deseada se basa en variables del lenguaje principal

Una expresin de la lista de seleccin de una expresin de tabla anidada a la que


se hace referencia dentro, o que representa el destino de, una sentencia de cambio
de datos dentro de una seleccin completa slo es vlida cuando no incluye:
v Una funcin que lee o modifica datos de SQL
v Una funcin que no es determinante
v Una funcin que tiene accin externa
v Una funcin OLAP

Si se hace referencia directamente a una vista en, o es el destino de, una expresin
de tabla anidada de una sentencia de cambio de datos dentro de una clusula
FROM, la vista debe ser simtrica (debe tener especificado WITH CHECK
OPTION) o debe satisfacer la restriccin correspondiente a una vista WITH
CHECK OPTION.

Si el destino de una sentencia de cambio de datos dentro de una clusula FROM es


una expresin de tabla anidada, las filas modificadas no se vuelven a calificar, los

Captulo 5. Consultas 537


referencia-tabla

predicados de la clusula WHERE no se vuelven a evaluar y las operaciones


ORDER BY o FETCH FIRST no se vuelven a realizar.

La clusula-tablesample opcional se puede utilizar para obtener un subconjunto


aleatorio (un ejemplo) de las filas a partir del nombre-tabla especificado, en lugar
del contenido completo de dicho nombre-tabla, para esta consulta. Este muestreo se
aade a cualquier predicado especificado en la clusula-where. A no ser que se
especifique la clusula REPEATABLE opcional, cada ejecucin de la consulta
generar un ejemplo distinto, excepto en casos en los que la tabla sea tan pequea
en relacin al tamao del ejemplo que cualquier ejemplo deba devolver las mismas
filas. El tamao del ejemplo se controla mediante expresin-numrica1 entre
parntesis, que representa un porcentaje aproximado (P) de la tabla que se va a
devolver. El mtodo por el que se obtiene el ejemplo se especifica tras la palabra
clave TABLESAMPLE y puede ser BERNOULLI o SYSTEM. Para ambos mtodos,
el nmero exacto de filas del ejemplo puede ser distinto para cada ejecucin de la
consulta, pero en promedio debe ser aproximadamente P por ciento de la tabla,
antes de que los predicados reduzcan el nmero de filas.

El nombre-tabla debe ser una tabla almacenada. Puede ser un nombre de tabla de
consultas materializadas (MQT), pero no una subseleccin o expresin de tabla
para la que se haya definido una MQT, porque no hay ninguna garanta de que el
gestor de bases de datos vaya a direccionar a la MQT para dicha subseleccin.

Semnticamente, el muestreo de una tabla se produce antes de cualquier otro


proceso de consulta, como por ejemplo aplicar predicados o realizar uniones. Los
accesos repetidos de una tabla de muestreo dentro de una sola ejecucin de una
consulta (como en una unin de bucle anidado o una subconsulta correlacionada)
devolvern el mismo ejemplo. Se pueden obtener ejemplos de ms de una tabla en
una consulta.

El muestreo BERNOULLI considera cada fila de forma individual. Incluye cada fila
en el ejemplo con la probabilidad P/100 (donde P es el valor de
expresin-numrica1) y ejecuta cada fila con la probabilidad 1 - P/100,
independientemente de las dems filas. De modo que si expresin-numrica1 tiene el
valor 10, lo que significa un ejemplo del diez por ciento, cada fila se incluira con
la probabilidad 0,1 y se excluira con la probabilidad 0,9.

El muestreo SYSTEM permite al gestor de bases de datos determinar la forma ms


eficiente de realizar el muestreo. En la mayora de los casos, el muestreo SYSTEM
aplicado a nombre-tabla significa que cada pgina de nombre-tabla se incluye en el
ejemplo con una probabilidad de P/100 y se excluye con una probabilidad de 1 -
P/100. Todas las filas de cada pgina que se incluye estn cualificadas para el
ejemplo. El muestreo SYSTEM de nombre-tabla generalmente se ejecuta con mayor
rapidez que el muestreo BERNOULLI porque se tienen que recuperar menos
pginas de datos; sin embargo, a menudo puede dar lugar a estimaciones menos
precisas para las funciones de agregacin (SUM(SALES), por ejemplo),
especialmente si las filas de nombre-tabla estn en clster en cualquier columna a la
que se haga referencia en dicha consulta. En determinadas circunstancias, el
optimizador puede decidir que es ms eficiente realizar un muestreo SYSTEM
como si fuera un muestreo BERNOULLI, por ejemplo cuando un ndice puede
aplicar un predicado en nombre-tabla y es mucho ms selectivo que la tasa de
muestreo P.

expresin-numrica1 especifica el tamao del ejemplo que se obtendr de


nombre-tabla, expresado como un porcentaje. Debe ser una expresin numrica
constante que no puede contener columnas, marcadores de parmetro ni variables

538 Consulta de SQL - Volumen 1


referencia-tabla

del lenguaje principal. La expresin se debe evaluar en un nmero positivo que sea
inferior o igual a 100, pero puede ser entre 1 y 0. Por ejemplo, un valor 0,01
representa una centsima de un porcentaje, lo que significa que se tomar un
muestreo de 1 fila entre 10.000 como promedio. Una expresin-numrica1 que se
evale en 100 se maneja como si no se hubiera especificado la
clusula-tablesample. Si expresin-numrica1 se evala en un valor nulo o en un
valor mayor que 100 o menor que 0, se devuelve un error (SQLSTATE 2202H).

A veces resulta recomendable que el muestreo se repita de una ejecucin de la


consulta a la siguiente; por ejemplo, durante una prueba de regresin o
depuracin de la consulta. Esto se puede conseguir especificando la clusula
REPEATABLE. La clusula REPEATABLE necesita la especificacin de una
expresin-numrica2 entre parntesis, que desempea la misma funcin que el valor
raz de un generador de nmeros aleatorios. La adicin de la clusula
REPEATABLE a la clusula-tablesample de cualquier nombre-tabla asegura que las
ejecuciones repetidas de dicha consulta (utilizando el mismo valor para
expresin-numrica2) devuelven el mismo ejemplo, dando por supuesto que los
datos no se han actualizado, reorganizado ni reparticionado. Para garantizar que se
utiliza el mismo ejemplo de nombre-tabla entre diversas consultas, se recomienza
utilizar una tabla temporal global. Como alternativa, se pueden combinar varias
consultas en una consulta, con varias referencias a un ejemplo definido mediante la
clusula WITH.

A continuacin se muestran algunos ejemplos:

Ejemplo 1: Solicitar un ejemplo Bernoulli del 10% de la tabla Sales por motivos de
auditora.
SELECT * FROM Sales
TABLESAMPLE BERNOULLI(10)

Ejemplo 2: Calculas los ingresos totales por ventas de la regin Northeast para cada
categora de producto, utilizando un ejemplo aleatorio SYSTEM del 1% de la tabla
Sales. La semntica de SUM corresponde a la propia muestra, de modo que para
extrapolar las ventas a la tabla Sales completa, la consulta debe dividir ducha SUM
por la tasa de muestreo (0,01).
SELECT SUM(Sales.Revenue) / (0.01)
FROM Sales TABLESAMPLE SYSTEM(1)
WHERE Sales.RegionName = Northeast
GROUP BY Sales.ProductCategory

Ejemplo 3: Utilizando la clusula REPEATABLE, modificar la consulta anterior para


asegurar que se obtiene el mismo resultado (aleatorio) cada vez que se ejecuta la
consulta. (El valor de la constante especificada entre parntesis es arbitrario.)
SELECT SUM(Sales.Revenue) / (0.01)
FROM Sales TABLESAMPLE SYSTEM(1) REPEATABLE(3578231)
WHERE Sales.RegionName = Northeast
GROUP BY Sales.ProductCategory

Referencias a las funciones de tabla


En general, se puede hacer referencia a una funcin de tabla, junto a los valores de
sus argumentos en la clusula FROM de una sentencia SELECT, exactamente de la
misma manera que una tabla o una vista. Sin embargo, se aplican algunas
consideraciones especiales.
v Nombres de columna de funcin de tabla
A menos que se proporcionen nombres de columna alternativos a continuacin
del nombre-correlacin, los nombres de columna de la funcin de tabla son los

Captulo 5. Consultas 539


Referencias a las funciones de tabla

especificados en la clusula RETURNS de la sentencia CREATE FUNCTION. Es


anlogo a los nombres de las columnas de una tabla, que se definen en la
sentencia CREATE TABLE.
v Resolucin de una funcin de tabla
Los argumentos especificados en una referencia de funcin de tabla, junto con el
nombre de la funcin, se utilizan por un algoritmo llamado resolucin de funcin
para determinar la funcin exacta que se va a utilizar. Esta operacin no es
diferente de lo que ocurre con las dems funciones (por ejemplo, en las
funciones escalares) utilizadas en una sentencia.
v Argumentos de funcin de tabla
Como en los argumentos de funciones escalares, los argumentos de funcin de
tabla pueden ser en general cualquier expresin SQL vlida. Los siguientes
ejemplos contienen sintaxis vlida:
Ejemplo 1: SELECT c1
FROM TABLE( tf1(Zachary) ) AS z
WHERE c2 = FLORIDA;

Ejemplo 2: SELECT c1
FROM TABLE( tf2 (:hostvar1, CURRENT DATE) ) AS z;

Ejemplo 3: SELECT c1
FROM t
WHERE c2 IN
(SELECT c3 FROM
TABLE( tf5(t.c4) ) AS z -- referencia correlacionada
) -- a clusula FROM ant.
v Funciones de tabla que modifican datos de SQL
Las funciones de tabla que se especifican con la opcin MODIFIES SQL DATA
slo se pueden utilizar como la ltima referencia de tabla de una sentencia-select,
expresin-tabla-comn o sentencia RETURN que sea una subseleccin, una funcin
SELECT INTO o una seleccin completa de fila de una sentencia SET. Slo se
permite una funcin de tabla en una clusula FROM y los argumentos de la
funcin de tabla deben estar correlacionados con las dems referencias de tabla
de la subseleccin (SQLSTATE 429BL). Los siguientes ejemplos contienen sintaxis
vlida para una funcin de tabla con la propiedad MODIFIES SQL DATA:
Ejemplo 1: SELECT c1
FROM TABLE( tfmod(Jones) ) AS z

Ejemplo 2: SELECT c1
FROM t1, t2, TABLE( tfmod(t1.c1, t2.c1) ) AS z

Ejemplo 3: SET var =


(SELECT c1
FROM TABLE( tfmod(Jones) ) AS z

Ejemplo 4: RETURN SELECT c1


FROM TABLE( tfmod(Jones) ) AS z

Ejemplo 5: WITH v1(c1) AS


(SELECT c1
FROM TABLE( tfmod(:hostvar1) ) AS z)
SELECT c1
FROM v1, t1 WHERE v1.c1 = t1.c1

Expresin-tabla-anidada tolerante a errores


Determinados errores que se producen en una expresin-tabla-anidada pueden
tolerarse y, en lugar de devolver u error, la consulta puede continuar y devolver
un resultado.

540 Consulta de SQL - Volumen 1


Expresin-tabla-anidada tolerante a errores

Si se especifica la clusula RETURN DATA UNTIL, las filas que se devuelvan de la


seleccin completa antes de que se detecte la condicin indicada formarn el
conjunto de resultados de la seleccin completa. Esto significa que un conjunto de
resultados parcial (que tambin puede ser un conjunto de resultados nulo) de la
seleccin completa puede aceptarse como resultado para la expresin-tabla-anidada.

La palabra clave FEDERATED limita la condicin para gestionar slo los errores
que se producen en una fuente de datos remota.

La condicin puede especificarse como un valor SQLSTATE, con una longitud de


constante-serie de 5. Si lo desea, puede especificar un valor SQLCODE para cada
valor SQLSTATE especificado. Para las aplicaciones portables, especifique valores
SQLSTATE siempre que pueda, ya que los valores SQLCODE generalmente no
pueden utilizarse en todas las plataformas y no forman parte del estndar SQL.

Slo pueden tolerarse determinados errores. Los errores que no permiten que se
ejecute el resto de la consulta no pueden tolerarse y se de vuelve un error para
toda la consulta. El valor-condicin-especfica puede especificar condiciones que en
realidad el gestor de bases de datos no tolere, aun cuando se especifique un valor
SQLSTATE o SQLCODE, y, en estos casos, se devuelve un error.

Si se especifican, es posible que el gestor de bases de datos tolere los valores


SQLSTATE y SQLCODE siguientes:
v SQLSTATE 08001; SQLCODEs -1336, -30080, -30081, -30082
v SQLSTATE 08004
v SQLSTATE 42501
v SQLSTATE 42704; SQLCODE -204
v SQLSTATE 42720
v SQLSTATE 28000

Una consulta o una vista que tiene una expresin-tabla-anidada tolerante a errores es
de slo lectura.

La seleccin completa de una expresin-tabla-anidada tolerante a errores no se


optimiza utilizando tablas de consultas materializadas.

Referencias correlacionadas en referencias-tabla


Las referencias correlacionadas se pueden utilizar en expresiones de tabla anidadas
o como argumentos para funciones de tabla. La regla bsica que se aplica para
ambos casos es que la referencia correlacionada debe ser de una referencia-tabla de
un nivel superior en la jerarqua de subconsultas. Esta jerarqua incluye las
referencias-tabla que ya se han resuelto en el proceso de izquierda a derecha de la
clusula FROM. En las expresiones de tabla anidadas, la palabra clave TABLE debe
aparecer antes de la seleccin completa. Por lo tanto, los ejemplos siguientes son de
sintaxis vlida:
Ejemplo 1: SELECT t.c1, z.c5
FROM t, TABLE( tf3(t.c2) ) AS z -- t precede tf3
WHERE t.c3 = z.c4; -- en FROM, por lo que t.c2
-- se conoce

Ejemplo 2: SELECT t.c1, z.c5


FROM t, TABLE( tf4(2 * t.c2) ) AS z -- t precede tf4
WHERE t.c3 = z.c4; -- en FROM, por lo que t.c2
-- se conoce

Ejemplo 3: SELECT d.deptno, d.deptname,

Captulo 5. Consultas 541


Referencias correlacionadas en referencias-tabla

empinfo.avgsal, empinfo.empcount
FROM department d,
LATERAL (SELECT AVG(e.salary) AS avgsal,
COUNT(*) AS empcount
FROM employee e -- departamento precede
WHERE e.workdept=d.deptno -- y TABLE se ha
) AS empinfo; -- especificado, por lo que
-- d.deptno se conoce

Pero los ejemplos siguientes no son vlidos:


Ejemplo 4: SELECT t.c1, z.c5
FROM TABLE( tf6(t.c2) ) AS z, t -- no se puede resolver
t en t.c2!
WHERE t.c3 = z.c4; -- comprese con el Ejemplo 1.

Ejemplo 5: SELECT a.c1, b.c5


FROM TABLE( tf7a(b.c2) ) AS a, TABLE( tf7b(a.c6) ) AS b
WHERE a.c3 = b.c4; -- no se puede resolver b en
-- b.c2!

Ejemplo 6: SELECT d.deptno, d.deptname,


empinfo.avgsal, empinfo.empcount
FROM department d,
(SELECT AVG(e.salary) AS avgsal,
COUNT(*) AS empcount
FROM employee e -- departamento precede
WHERE e.workdept=d.deptno -- pero TABLE no se ha
) AS empinfo; -- especificado, por lo que
-- d.deptno no se conoce

Referencias de tabla de cambio de datos


Una clusula referencia-tabla-cambio-datos especifica una tabla de resultados
intermedia. Esta tabla se basa en las filas que cambia directamente la sentencia
UPDATE buscada, DELETE buscada o INSERT que se incluye en la clusula. Una
referencia-tabla-cambio-datos se puede especificar como la nica referencia-tabla de la
clusula FROM de la seleccin completa externa que se utiliza en una
sentencia-select, una sentencia SELECT INTO o una expresin de tabla comn.
Tambin se puede especificar una referencia-tabla-cambio-datos como la nica
referencia de tabla en la nica seleccin completa de una sentencia SET Variable
(SQLSTATE 428FL). Se considera que la tabla o vista de destino de la sentencia de
cambio de datos es una tabla o vista a la que se hace referencia en la consulta; por
lo tanto, el ID de autorizacin de la consulta debe tener privilegio SELECT sobre la
tabla o vista de destino. Una clusula referencia-tabla-cambio-datos no puede
especificarse en una definicin de vista, en una definicin de tabla de consultas
materializadas ni en una sentencia FOR (SQLSTATE 428FL).

El destino de la sentencia UPDATE, DELETE o INSERT no puede ser una vista


temporal definida en una expresin de tabla comn (SQLSTATE 42807).
FINAL TABLE
Especifica que las filas de la tabla de resultados intermedia representan el
conjunto de filas que cambia la sentencia de cambio de datos de SQL tal como
aparecen al final de la sentencia de cambio de datos. Si hay activadores AFTER
o restricciones de referencia que dan lugar a ms operaciones sobre la tabla
que es el destino de la sentencia de cambio de datos de SQL, se devuelve un
error (SQLSTATE 57058, SQLSTATE 560C6). Si el destino de la sentencia de
cambio de datos de SQL es una vista que est definida con un activador
INSTEAD OF para el tipo de cambio de datos, se devuelve un error
(SQLSTATE 428G3).

542 Consulta de SQL - Volumen 1


Referencias de tabla de cambio de datos

NEW TABLE
Especifica que las filas de la tabla de resultados intermedia representan el
conjunto de filas que cambia la sentencia de cambio de datos de SQL antes de
la aplicacin de restricciones de referencia y de activadores AFTER. Es posible
que los datos de la tabla de destino al final de la sentencia no coincidan con
los datos de la tabla de resultados intermedia debido al proceso adicional de
restricciones de referencia y activadores AFTER.
OLD TABLE
Especifica que las filas de la tabla de resultados intermedia representan el
conjunto de filas que cambia la sentencia de cambio de datos de SQL tal como
aparecan antes de la aplicacin de lasentencia de cambio de datos.
(sentencia-update-buscada)
Especifica una sentencia UPDATE buscada. Una clusula WHERE o una
clusula SET en la sentencia UPDATE no puede contener referencias
correlacionadas a columnas fuera de la sentencia UPDATE.
(sentencia-delete-buscada)
Especifica una sentencia DELETE buscada. Una clusula WHERE en la
sentencia DELETE no puede contener referencias correlacionadas a columnas
fuera de la sentencia DELETE.
(sentencia-insert)
Especifica una sentencia INSERT. Una seleccin completa en la sentencia
INSERT no puede contener referencias correlacionadas a columnas fuera de la
seleccin completa de la sentencia INSERT.

El contenido de la tabla de resultados intermedia correspondiente a


referencia-tabla-cambio-datos se determina cuando se abre el cursor. La tabla de
resultados intermedia contiene todas las filas manipuladas, incluidas todas las
columnas de la tabla o vista de destino especificada. Todas las columnas de la tabla
o vista de destino correspondiente a una sentencia de cambio de datos SQL
resultan accesibles utilizando los nombres de columnas de la tabla o vista de
destino. Si se ha especificado una clusula INCLUDE dentro de una sentencia de
cambio de datos, la tabla de resultados intermedia contendr estas columnas
adicionales.

tabla-unida
INNER
 referencia-tabla JOIN referencia-tabla ON condicin-unin 
unin externa
( tabla-unida )

unin externa:

OUTER
LEFT
RIGHT
FULL

Una tabla unida especifica una tabla resultante intermedia que es el resultado de
una unin interna o una unin externa. La tabla se deriva de aplicar uno de los
operadores de unin: INNER, LEFT OUTER, RIGHT OUTER o FULL OUTER a sus
operandos.

Captulo 5. Consultas 543


tabla-unida

Se puede decir que las uniones internas son el producto cruzado de las tablas
(combinacin de cada fila de la tabla izquierda con cada fila de la tabla derecha),
conservando slo las filas en que la condicin de unin es verdadera. Es posible
que a la tabla resultante le falten filas de una o ambas tablas unidas. Las uniones
externas incluyen la unin interna y conservan las filas que faltan. Hay tres tipos
de uniones externas:
v unin externa izquierda incluye las filas de la tabla de la izquierda que faltaban
en la unin interna.
v unin externa derecha incluye las filas de la tabla de la derecha que faltaban en
la unin interna.
v unin externa completa incluye las filas las tabla de la izquierda y de la derecha
que faltaban en la unin interna.

Si no se especifica ningn operador-unin, el implcito es INNER. El orden en que


se realizan mltiples uniones puede afectar al resultado. Las uniones pueden estar
anidadas en otras uniones. El orden del proceso de uniones es generalmente de
izquierda a derecha, pero se basa en la posicin de la condicin-unin necesaria. Es
aconsejable utilizar parntesis para que se pueda leer mejor el orden de las uniones
anidadas. Por ejemplo:
TB1 LEFT JOIN TB2 ON TB1.C1=TB2.C1
RIGHT JOIN TB3 LEFT JOIN TB4 ON TB3.C1=TB4.C1
ON TB1.C1=TB3.C1

es igual a:
(TB1 LEFT JOIN TB2 ON TB1.C1=TB2.C1)
RIGHT JOIN (TB3 LEFT JOIN TB4 ON TB3.C1=TB4.C1)
ON TB1.C1=TB3.C1

Una tabla unida se puede utilizar en cualquier contexto en el que se utilice


cualquier forma de la sentencia SELECT. Una vista o un cursor es de slo lectura si
su sentencia SELECT incluye una tabla unida.

Una condicin-unin es una condicin-bsqueda, excepto que:


v No puede contener ninguna subconsulta, escalar ni de cualquier otra clase
v No puede incluir ninguna operacin de desreferencia ni la funcin DEREF,
donde el valor de referencia es distinto de la columna de identificadores de
objeto
v No puede incluir una funcin SQL
v Las columnas a las que se hace referencia en una expresin de condicin-unin
deben ser columnas de las tablas de operandos de la unin asociada (en el
mbito de la misma clusula tabla-unida)
v Las funciones a las que se haga referencia en una expresin de condicin-unin de
una unin externa completa deben ser deterministas y no deben tener acciones
externas
v No puede incluir una expresin XMLQUERY ni XMLEXISTS

Se produce un error si la condicin de unin no cumple estas reglas (SQLSTATE


42972).

Las referencias a columnas se resuelven utilizando las reglas para la resolucin de


calificadores de nombres de columna. Las mismas reglas que se aplican a los
predicados se aplican a las condiciones de unin.

544 Consulta de SQL - Volumen 1


Operaciones de unin

Operaciones de unin
Una condicin-unin especifica emparejamientos de T1 y T2, donde T1 y T2 son
tablas de los operandos izquierdo y derecho del operador JOIN de la
condicin-unin. En todas las combinaciones posibles de filas de T1 y T2, una fila de
T1 se empareja con una fila de T2 si la condicin-unin es verdadera. Cuando una
fila de T1 se une con una fila de T2, una fila del resultado consta de los valores de
dicha fila de T1 concatenada con los valores de dicha fila de T2. La ejecucin
puede implicar la generacin de una fila nula. La fila nula de una tabla consta de
un valor nulo para cada columna de la tabla, sin tener en cuenta si las columnas
permiten valores nulos.

A continuacin encontrar un resumen del resultado de las operaciones de unin:


v El resultado de T1 INNER JOIN T2 consta de sus filas emparejadas cuando la
condicin-unin es verdadera.
v El resultado de T1 LEFT OUTER JOIN T2 consta de sus filas emparejadas
cuando la condicin-unin es verdadera y, para cada fila no emparejada de T1,
la concatenacin de dicha fila con la fila nula de T2. Todas las columnas
derivadas de T2 permiten valores nulos.
v El resultado de T1 RIGHT OUTER JOIN T2 consta de sus filas emparejadas
cuando la condicin-unin es verdadera y, para cada fila de T2 no emparejada,
la concatenacin de dicha fila con la fila nula de T1. Todas las columnas
derivadas de T1 permiten valores nulos.
v El resultado de T1 FULL OUTER JOIN T2 consta de sus filas emparejadas y,
para cada fila de T2 no emparejada, la concatenacin de dicha fila con la fila
nula de T1 y, para cada fila de T1 no emparejada, la concatenacin de dicha fila
con la fila nula de T2. Todas las columnas derivadas de T1 y T2 permiten
valores nulos.

clusula-where
 WHERE condicin-bsqueda 

La clusula WHERE especifica una tabla resultante intermedia que consta de


aquellas filas de R para las que se cumple la condicin-bsqueda. R es el resultado
de la clusula FROM de la subseleccin.

La condicin-bsqueda debe ajustarse a las reglas siguientes:


v Cada nombre-columna debe identificar sin ambigedades una columna de R o ser
una referencia correlacionada. Un nombre-columna es una referencia
correlacionada si identifica una columna de una referencia-tabla en una
subseleccin externa.
v No debe especificarse una funcin de columna a menos que se especifique la
clusula WHERE en una subconsulta de una clusula HAVING y el argumento
de la funcin es una referencia correlacionada para un grupo.

Cualquier subconsulta de condicin-bsqueda se ejecuta de forma efectiva para cada


fila de R y los resultados se utilizan en la aplicacin de la condicin-bsqueda en la
fila dada de R. Una subconsulta slo se ejecuta en realidad para cada fila de R si
incluye una referencia correlacionada. De hecho, una subconsulta sin referencias
correlacionadas slo se puede ejecutar una vez, mientras que una subconsulta con
una referencia correlacionada puede tener que ejecutarse una vez para cada fila.

Captulo 5. Consultas 545


clusula-group-by

Clusula group-by
,

 GROUP BY  expresin-agrupacin 
conjuntos-agrupacin
supergrupos

La clusula GROUP BY especifica una tabla intermedia de resultados que est


formada por una agrupacin de las filas de R, que es el resultado de la clusula
anterior de la subseleccin.

En su forma ms simple, una clusula GROUP BY contiene una expresin de


agrupacin. Una expresin de agrupacin es una expresin que se utiliza al definir la
agrupacin de R. Cada nombre de columna incluido en la expresin-agrupacin debe
identificar de forma unvoca una columna de R (SQLSTATE 42702 o 42703). Una
expresin de agrupacin no puede incluir una seleccin completa escalar. ni una
expresin XMLQUERY o XMLEXISTS (SQLSTATE 42822), ni ninguna funcin que
sea una variante o tenga una accin externa (SQLSTATE 42845).

Las formas ms complejas de la clusula GROUP BY son los conjuntos-agrupacin y


los supergrupos. Para ver una descripcin de estas formas, consulte los apartados
conjuntos-agrupacin en la pgina 547 y supergrupos en la pgina 548,
respectivamente.

El resultado de GROUP BY es un conjunto de grupos de filas. Cada fila del


resultado representa el conjunto de filas para el que la expresin-agrupacin es igual.
En la agrupacin, todos los valores nulos de una expresin-agrupacin se consideran
iguales.

Una expresin-agrupacin se puede utilizar en una condicin de bsqueda de una


clusula HAVING, en una expresin de una clusula SELECT o en una
expresin-clave-clasificacin de una clusula ORDER BY (consulte el apartado
clusula-order-by en la pgina 553 para ver los detalles). En cada caso, la
referencia slo especifica un valor para cada grupo. Por ejemplo, si la
expresin-agrupacin es col1+col2, una expresin permitida en la lista de seleccin
sera col1+col2+3. Las reglas de asociacin para expresiones rechazaran la
expresin parecida 3+col1+col2, a menos que se utilicen parntesis para asegurar
que la expresin correspondiente se evale en el mismo orden. Por lo tanto,
3+(col1+col2) tambin se permitira en la lista de seleccin. Si se utiliza el operador
de concatenacin, la expresin-agrupacin debe utilizarse exactamente como se ha
especificado la expresin en la lista de seleccin.

Si la expresin-agrupacin contiene series de longitud variable con blancos de cola,


los valores del grupo pueden diferir en el nmero de blancos de cola y puede que
no todos tengan la misma longitud. En dicho caso, la referencia a la
expresin-agrupacin contina especificando slo un valor para cada grupo, pero el
valor para un grupo se elige arbitrariamente entre el conjunto de valores
disponibles. Por lo tanto, la longitud real del valor del resultado es imprevisible.

Tal como se ha apuntado, existen casos en los que la clusula GROUP BY no


puede hacer referencia directamente a una columna que est especificada en la
clusula SELECT como una expresin (seleccin completa-escalar, variante o
funciones de accin externa). Para agrupar utilizando una expresin como sta,
utilice una expresin de tabla anidada o una expresin de tabla comn para

546 Consulta de SQL - Volumen 1


clusula-group-by

proporcionar primero una tabla resultante con la expresin como una columna del
resultado. Para ver un ejemplo de la utilizacin de expresiones de tabla anidadas,
consulte el Ejemplo A9 en la pgina 558.

conjuntos-agrupacin
,

 GROUPING SETS (  expresin-agrupacin ) 


supergrupos
,

(  expresin-agrupacin )
supergrupos

Una especificacin de conjuntos-agrupacin permite especificar mltiples clusulas


de agrupacin en una sola sentencia. Se puede decir que es la unin de dos o ms
grupos de filas en un solo conjunto resultante. Es lgicamente equivalente a la
unin de mltiples subselecciones con la clusula group by en cada subseleccin
correspondiente a un conjunto de agrupacin. Un conjunto de agrupacin puede
ser un solo elemento o puede ser una lista de elementos delimitados por
parntesis, donde un elemento es una expresin-agrupacin o un supergrupo. La
utilizacin de conjuntos-agrupacin permite calcular los grupos con una sola pasada
por la tabla base.

La especificacin de conjuntos-agrupacin permite utilizar una expresin-agrupacin


simple o las formas ms complejas de supergrupos. Para ver una descripcin de
supergrupos, consulte el apartado supergrupos en la pgina 548.

Tenga en cuenta que los conjuntos de agrupacin son los bloques fundamentales
para la creacin de operaciones GROUP BY. Una operacin GROUP BY simple con
una sola columna puede considerarse un conjunto de agrupacin con un elemento.
Por ejemplo:
GROUP BY a

es igual a
GROUP BY GROUPING SETS((a))

y
GROUP BY a,b,c

es igual a
GROUP BY GROUPING SETS((a,b,c))

Las columnas de no agregacin de la lista de seleccin de la subseleccin que se


excluyen de un conjunto de agrupacin devolvern un nulo para dichas columnas
para cada fila generada para dicho conjunto de agrupacin. Esto refleja el hecho
que la agregacin se ha realizado sin tener en cuenta los valores para dichas
columnas.

Desde el Ejemplo C2 en la pgina 561 al Ejemplo C7 en la pgina 565 se


ilustra la utilizacin de los conjuntos de agrupacin.

Captulo 5. Consultas 547


supergrupos

supergrupos
(1)
 ROLLUP ( lista-expresiones-agrupacin ) 
(2)
CUBE ( lista-expresiones-agrupacin )
total

lista-expresiones-agrupacin:

 expresin-agrupacin
,

(  expresin-agrupacin )

total:

( )

Notas:
1 Una especificacin alternativa cuando se utiliza sola en la clusula Group By
es: lista-expresiones-agrupacin WITH ROLLUP.
2 Una especificacin alternativa cuando se utiliza sola en la clusula Group By
es: lista-expresiones-agrupacin WITH CUBE.
ROLLUP ( lista-expresiones-agrupacin )
Una agrupacin ROLLUP es una extensin de la clusula GROUP BY que
produce un conjunto resultante que contiene filas de subtotales adems de las
filas agrupadas normales. Las filas de subtotales son filas superagregadas
que contienen ms agregrados cuyos valores se obtienen al aplicar las mismas
funciones de columna que se han utilizado para obtener las filas agrupadas.
Esta filas se llaman filas de subtotales porque sta es su utilizacin ms
frecuente; sin embargo, puede utilizarse cualquier funcin de columna para la
agregacin. Por ejemplo, MAX y AVG se utilizan en Ejemplo C8 en la pgina
567.
Una agrupacin ROLLUP es una serie de conjuntos-agrupacin. La especificacin
general de ROLLUP con n elementos
GROUP BY ROLLUP(C1,C2,...,Cn-1,Cn)

es equivalente a
GROUP BY GROUPING SETS((C1,C2,...,Cn-1,Cn)
(C1,C2,...,Cn-1)
...
(C1,C2)
(C1)
() )

Observe que los n elementos de ROLLUP se convierten en n+1 conjuntos de


agrupacin. Tenga en cuenta tambin que el orden en el que se especifican las
expresiones-agrupacin es importante para ROLLUP. Por ejemplo:
GROUP BY ROLLUP(a,b)

548 Consulta de SQL - Volumen 1


supergrupos

es equivalente a
GROUP BY GROUPING SETS((a,b)
(a)
() )

mientras que
GROUP BY ROLLUP(b,a)

es igual a
GROUP BY GROUPING SETS((b,a)
(b)
() )

La clusula ORDER BY es la nica manera de garantizar el orden de las filas


en el conjunto resultante. El Ejemplo C3 en la pgina 562 ilustra la
utilizacin de ROLLUP.
CUBE ( lista-expresiones-agrupacin )
Una agrupacin CUBE es una extensin a la clusula GROUP BY que produce
un conjunto resultante que contiene todas las filas de la agregacin ROLLUP y,
adems, contiene filas de tabulacin cruzada. Las filas de tabulacin cruzada
son filas superagregadas adicionales que no forman parte de una agregacin
con subtotales.
Igual que ROLLUP, una agrupacin CUBE tambin puede decirse que es una
serie de conjuntos-agrupacin. En el caso de CUBE, todas las permutaciones de
la lista-expresiones-agregacin al cubo se calcula junto con el total. Por lo tanto,
los n elementos de CUBE se convierten en 2**n (2 elevado a la potencia n)
conjuntos-agrupacin. Por ejemplo, una especificacin de
GROUP BY CUBE(a,b,c)

es equivalente a
GROUP BY GROUPING SETS((a,b,c)
(a,b)
(a,c)
(b,c)
(a)
(b)
(c)
() )

Observe que los 3 elementos de CUBE se convierten en 8 conjuntos de


agrupaciones.

El orden de especificacin de los elementos no importa para CUBE.CUBE


(DayOfYear, Sales_Person) y CUBE (Sales_Person, DayOfYear) dan los
mismos conjuntos del resultado. La utilizacin de la palabra mismos se aplica
al contenido del conjunto resultante, no a su orden. La clusula ORDER BY es
la nica manera de garantizar el orden de las filas en el conjunto resultante. El
Ejemplo C4 en la pgina 562 ilustra la utilizacin de CUBE.
lista-expresiones-agrupacin
Una lista-expresiones-agrupacin se utiliza en la clusula CUBE o ROLLUP para
definir el nmero de elementos de la operacin CUBE o ROLLUP. Se controla
utilizando los parntesis para delimitar los elementos con mltiples
expresiones-agrupacin.
Las reglas para la expresin-agrupacin se describen en el apartado Clusula
group-by en la pgina 546. Por ejemplo, supongamos que una consulta tiene

Captulo 5. Consultas 549


supergrupos

que devolver los gastos totales para ROLLUP de City dentro de una Province
pero no de un County. Sin embargo la clusula:
GROUP BY ROLLUP(Province, County, City)

da como resultado filas de subtotales que no se desean para County. En la


clusula
GROUP BY ROLLUP(Province, (County, City))

el compuesto (County, City) forma un elemento de ROLLUP y, por lo tanto,


una consulta que utiliza esta clusula dar el resultado deseado. En otras
palabras, ROLLUP de dos elementos
GROUP BY ROLLUP(Province, (County, City))

genera
GROUP BY GROUPING SETS((Province, County, City)
(Province)
() )

mientras que ROLLUP de 3 elementos generara


GROUP BY GROUPING SETS((Province, County, City)
(Province, County)
(Province)
() )

El Ejemplo C2 en la pgina 561 tambin utiliza valores de columna


compuestos.
total
Tanto CUBE como ROLLUP devuelven una fila que es la agregacin global
(total). Esto se puede especificar por separado mediante parntesis vacos
dentro de la clusula GROUPING SET. Tambin puede especificarse
directamente en la clusula GROUP BY, aunque no surte ningn efecto en el
resultado de la consulta. El Ejemplo C4 en la pgina 562 utiliza la sintaxis
del total.

Combinacin de conjuntos de agrupaciones


Se puede utilizar para combinar cualquier tipo de clusula GROUP BY. Cuando se
combinan los campos de una expresin-agrupacin simple con otros grupos, se
aaden al principio de los conjuntos de agrupacin resultantes. Cuando se
combinan las expresiones ROLLUP o CUBE, funcionan como multiplicadores en
el resto de la expresin, formando entradas de un conjunto de agrupacin
adicional segn la definicin de ROLLUP o CUBE.

Por ejemplo, la combinacin de elementos de expresin-agrupacin acta de la


siguiente manera:
GROUP BY a, ROLLUP(b,c)

es equivalente a
GROUP BY GROUPING SETS((a,b,c)
(a,b)
(a) )

O de manera parecida,
GROUP BY a, b, ROLLUP(c,d)

es equivalente a

550 Consulta de SQL - Volumen 1


Combinacin de conjuntos de agrupaciones

GROUP BY GROUPING SETS((a,b,c,d)


(a,b,c)
(a,b) )

La combinacin de elementos de ROLLUP acta de la siguiente manera:


GROUP BY ROLLUP(a), ROLLUP(b,c)

es equivalente a
GROUP BY GROUPING SETS((a,b,c)
(a,b)
(a)
(b,c)
(b)
() )

De manera similar,
GROUP BY ROLLUP(a), CUBE(b,c)

es equivalente a
GROUP BY GROUPING SETS((a,b,c)
(a,b)
(a,c)
(a)
(b,c)
(b)
(c)
() )

La combinacin de elementos de CUBE y de ROLLUP acta de la siguiente


manera:
GROUP BY CUBE(a,b), ROLLUP(c,d)

es equivalente a
GROUP BY GROUPING SETS((a,b,c,d)
(a,b,c)
(a,b)
(a,c,d)
(a,c)
(a)
(b,c,d)
(b,c)
(b)
(c,d)
(c)
() )

Igual que una expresin-agrupacin simple, la combinacin de conjuntos de


agrupacin elimina tambin los duplicados dentro de cada conjunto de agrupacin.
Por ejemplo,
GROUP BY a, ROLLUP(a,b)

es equivalente a
GROUP BY GROUPING SETS((a,b)
(a) )

Un ejemplo ms completo de la combinacin de conjuntos de agrupacin es crear


un conjunto resultante que elimine ciertas filas que se devolveran para una
agregacin CUBE completa.

Captulo 5. Consultas 551


Combinacin de conjuntos de agrupaciones

Por ejemplo, considere la siguiente clusula GROUP BY:


GROUP BY Region,
ROLLUP(Sales_Person, WEEK(Sales_Date)),
CUBE(YEAR(Sales_Date), MONTH (Sales_Date))

La columna listada inmediatamente a la derecha de GROUP BY est agrupada


simplemente, las que estn entre parntesis a continuacin de ROLLUP se han
avanzado y las que estn entre parntesis a continuacin de CUBE se han elevado
al cubo. Por lo tanto, la clusula anterior da como resultado el cubo de MONTH
en YEAR que despus avanza en WEEK en Sales_Person en la agregacin Region.
No da como resultado una fila del total ni ninguna fila de tabulacin cruzada en
Region, Sales_Person o WEEK(Sales_Date), por lo que produce menos filas que la
clusula siguiente:
GROUP BY ROLLUP (Region, Sales_Person, WEEK(Sales_Date),
YEAR(Sales_Date), MONTH(Sales_Date) )

clusula-having
 HAVING condicin-bsqueda 

La clusula HAVING especifica una tabla resultante intermedia que consta de


aquellos grupos de R para los que se cumple la condicin-bsqueda. R es el
resultado de la clusula anterior de la subseleccin. Si esta clusula no es GROUP
BY, R se considera un solo grupo sin columnas de agrupacin.

Cada nombre-columna de la condicin de bsqueda debe realizar una de las


acciones siguientes:
v Identificar sin ambigedades una columna de agrupacin de R.
v Estar especificado dentro de la funcin de columna.
v Ser una referencia correlacionada. Un nombre-columna es una referencia
correlacionada si identifica una columna de una referencia-tabla en una
subseleccin externa.

Un grupo de R al que se aplica la condicin de bsqueda suministra el argumento


para cada funcin de columna en la condicin de bsqueda, excepto para cualquier
funcin cuyo argumento sea una referencia correlacionada.

Si la condicin de bsqueda contiene una subconsulta, puede considerarse que la


subconsulta se ejecuta cada vez que se aplica la condicin de bsqueda a un grupo
de R y los resultados se utilizan en la aplicacin de la condicin de bsqueda. En
realidad, la subconsulta slo se ejecuta para cada grupo si contiene una referencia
correlacionada. Para ver una ilustracin de la diferencia, consulte el Ejemplo A6
en la pgina 557 y el Ejemplo A7 en la pgina 557.

Una referencia correlacionada a un grupo de R debe identificar una columna de


agrupacin o estar contenida en una funcin de columna.

Cuando se utiliza HAVING sin GROUP BY, la lista de seleccin slo puede ser un
nombre de columna dentro de una funcin de columna, una referencia
correlacionada a columna, un literal o un registro especial.

552 Consulta de SQL - Volumen 1


clusula-order-by

clusula-order-by
,
ASC
 ORDER BY  clave-clasificacin 
DESC
ORDER OF diseador-tabla
INPUT SEQUENCE

clave-clasificacin:

nombre-columna-simple
entero-simple
expresin-clave-clasificacin

La clusula ORDER BY especifica una ordenacin de las filas de la tabla resultante.


Si se identifica una especificacin de clasificacin individual (una clave-clasificacin
con una direccin asociada), las filas se ordenan por los valores de dicha
especificacin de clasificacin. Si se indica ms de una especificacin de
clasificacin, las filas se ordenan por los valores de la primera especificacin de
clasificacin identificada, despus por los valores de la segunda especificacin de
clasificacin identificada, y as sucesivamente. Ninguna clave-clasificacin puede
tener el tipo de LONG VARCHAR, CLOB, LONG VARGRAPHIC, DBCLOB, BLOB
o DATALINK, un tipo diferenciado de cualquiera de estos tipos o un tipo
estructurado (SQLSTATE 42907).

Una columna con nombre de la lista de seleccin se puede identificar mediante


una clave-clasificacin que sea un entero-simple o un nombre-columna-simple. Una
columna sin nombre de la lista de seleccin debe identificarse por un entero-simple
o, en algunos casos, por una expresin-clave-clasificacin que coincida con la
expresin de la lista de seleccin (consulte los detalles de expresin-clave-
clasificacin). Una columna no tiene nombre si no se especifica la clusula AS y se
obtiene a partir de una constante, una expresin con operadores o una funcin.

La ordenacin se realiza de acuerdo con las reglas de comparacin. El valor nulo


es superior a cualquier otro valor. Si la clusula ORDER BY no ordena por
completo las filas, se visualizan las filas con valores duplicados de todas las
columnas identificadas en un orden arbitrario.
nombre-columna-simple
Normalmente identifica una columna de la tabla resultante. En este caso,
nombre-columna-simple debe ser el nombre de columna de una columna con
nombre de la lista de seleccin.
El nombre-columna-simple tambin puede identificar un nombre de columna de
una tabla, vista o tabla anidada identificada en la clusula FROM si la consulta
es una subseleccin. Se produce un error si la subseleccin:
v Especifica DISTINCT en la clusula de seleccin (SQLSTATE 42822)
v Genera un resultado agrupado y el nombre-columna-simple no es una
expresin-agrupacin (SQLSTATE 42803).

La determinacin de qu columna se utiliza para ordenar el resultado se


describe ms abajo en el apartado Nombre de las columnas en claves de
clasificacin.

Captulo 5. Consultas 553


clusula-order-by

entero-simple
Debe ser mayor que 0 y no ser superior al nmero de columnas de la tabla
resultante (SQLSTATE 42805). El entero n identifica la columna n de la tabla
resultante.
expresin-clave-clasificacin
Una expresin que no es simplemente un nombre de columna ni una constante
de enteros sin signo. La consulta a la que se aplica la ordenacin debe ser una
subseleccin para utilizar esta forma de clave-clasificacin. La
expresin-clave-clasificacin no puede incluir ninguna seleccin completa escalar
correlacionada (SQLSTATE 42703), ninguna expresin XMLQUERY ni
XMLEXISTS (SQLSTATE 42822), ni ninguna funcin con una accin externa
(SQLSTATE 42845).
Cualquier nombre-columna de una expresin-clave-clasificacin debe ajustarse a
las reglas descritas bajo Nombre de las columnas en claves de clasificacin.
Existen unos cuantos casos especiales que restringen ms las expresiones que
se pueden especificar.
v DISTINCT se especifica en la clusula SELECT de la subseleccin
(SQLSTATE 42822).
La expresin-clave-clasificacin debe coincidir exactamente con una
expresin de la lista de seleccin de la subseleccin (las selecciones
completas-escalares nunca se emparejan).
v La subseleccin est agrupada (SQLSTATE 42803).
La expresin-clave-clasificacin puede:
ser una expresin en la lista de seleccin de la subseleccin,
incluir una expresin-agrupacin de la clusula GROUP BY de la
subseleccin
incluir una funcin de columna, constante o variable del lenguaje
principal.
ASC
Utiliza los valores de la columna en orden ascendente. ste es el valor por
omisin.
DESC
Utiliza los valores de la columna en orden descendente.
ORDER OF diseador-tabla
Especifica que debe aplicarse el mismo orden utilizado en diseador-tabla a la
tabla resultante de la subseleccin. Debe haber una referencia de tabla que se
corresponda con diseador-tabla en la clusula FROM de la subseleccin que
especifica esta clusula (SQLSTATE 42703). La subseleccin (o seleccin
completa) correspondiente al diseador-tabla especificado debe incluir una
clusula ORDER BY que dependa de los datos (SQLSTATE 428FI). El orden
que se aplica es el mismo que si las columnas de la clusula ORDER BY de la
subseleccin anidada (o seleccin completa) se incluyeran en la subseleccin
exterior (o seleccin completa) y estas columnas se especificaran en lugar de la
clusula ORDER OF.
Observe que este formato no se permite en una seleccin completa(excepto
para el formato degenerativo de una seleccin completa). Por ejemplo, el
ejemplo siguiente no es vlido:

554 Consulta de SQL - Volumen 1


clusula-order-by

(SELECT C1 FROM T1
ORDER BY C1)
UNION
SELECT C1 FROM T2
ORDER BY ORDER OF T1

El ejemplo siguiente s es vlido:


SELECT C1 FROM
(SELECT C1 FROM T1
UNION
SELECT C1 FROM T2
ORDER BY C1 ) AS UTABLE
ORDER BY ORDER OF UTABLE
INPUT SEQUENCE
Especifica que, para una sentencia INSERT, la tabla de resultados reflejar el
orden de entrada de filas de datos ordenadas. El orden INPUT SEQUENCE
slo se puede especificar si se utiliza una sentencia INSERT en una clusula
FROM (SQLSTATE 428G4). Vase referencia-tabla en la pgina 535. Si se
especifica INPUT SEQUENCE y los datos de entrada no estn ordenados, la
clusula INPUT SEQUENCE se pasa por alto.

Notas:
v Nombres de columna en claves de clasificacin:
El nombre de columna est calificado.
La consulta debe ser una subseleccin (SQLSTATE 42877). El nombre de
columna debe identificar sin ambigedades una columna de alguna tabla,
vista o tabla anidada en la clusula FROM de la subseleccin(SQLSTATE
42702). El valor de la columna se utiliza para calcular el valor de la
especificacin de clasificacin.
El nombre de columna no est calificado.
- La consulta es una subseleccin.
Si el nombre de columna es idntico al nombre de ms de una columna de
la tabla resultante, el nombre de columna debe identificar sin
ambigedades una columna de alguna tabla, vista o tabla anidada en la
clusula FROM de la subseleccin de orden (SQLSTATE 42702). Si el
nombre de columna es idntico a una columna, dicha columna se utiliza
para calcular el valor de la especificacin de clasificacin. Si el nombre de
columna no es idntico a una columna de la tabla resultante, debe
identificar sin ambigedades una columna de alguna tabla, vista o tabla
anidada en la clusula FROM de la seleccin completa de la
sentencia-select (SQLSTATE 42702).
- La consulta no es una subseleccin (incluye operaciones de conjuntos como
la unin, excepcin o interseccin).
El nombre de columna no debe ser idntico al nombre de ms de una
columna de la tabla resultante (SQLSTATE 42702). El nombre de columna
debe ser idntico a exactamente una columna de la tabla resultante
(SQLSTATE 42707) y esta columna se utiliza para calcular el valor de la
especificacin de clasificacin.
v Lmites: La utilizacin de una expresin-clave-clasificacin o un
nombre-columna-simple donde la columna no est en la lista de seleccin puede
dar como resultado la adicin de la columna o expresin a la tabla temporal
utilizada para clasificacin. Esto puede dar como resultado que se alcance el
lmite del nmero de columnas de una tabla o el lmite en el tamao de una fila
de una tabla. Si se exceden estos lmites se producir un error si es necesaria una
tabla temporal para realizar la operacin de clasificacin.

Captulo 5. Consultas 555


clusula-fetch-first

clusula-fetch-first
1
 FETCH FIRST ROW ONLY 
entero ROWS

La clusula-fetch-first establece el nmero mximo de filas que pueden recuperarse.


Indica al gestor de bases de datos que la aplicacin no recuperar ms de entero
filas, cualquiera que sea el nmero de filas que pueda haber en la tabla resultante
cuando no se especifica esta clusula. Cualquier intento de recuperar ms filas que
el nmero indicado por entero se trata de la misma manera que un fin de datos
normal (SQLSTATE 02000). El valor de entero debe ser un entero positivo, distinto
de cero.

Limitar la tabla resultante a las primeras entero filas puede mejorar el rendimiento.
El gestor de bases de datos detendr el proceso de la consulta una vez que haya
determinado las entero primeras filas. Si se especifican la clusula-fetch-first y la
clusula-optimize-for, se utiliza el valor entero ms bajo de estas clusulas para
determinar el tamao del almacenamiento intermedio de comunicaciones. Los
valores se tienen en cuenta de forma independiente por motivos de optimizacin.

Si la seleccin completa contiene una sentencia de cambio de datos de SQL en la


clusula FROM, todas las filas se modifican, independientemente del lmite del
nmero de filas que hay que recuperar.

Ejemplos de subselecciones
Ejemplo A1: Seleccione todas las columnas y filas de la tabla EMPLOYEE.
SELECT * FROM EMPLOYEE

Ejemplo A2: Una las tablas EMP_ACT y EMPLOYEE, seleccione todas las
columnas de la tabla EMP_ACT y aada el apellido del empleado (LASTNAME)
de la tabla EMPLOYEE a cada fila del resultado.
SELECT EMP_ACT.*, LASTNAME
FROM EMP_ACT, EMPLOYEE
WHERE EMP_ACT.EMPNO = EMPLOYEE.EMPNO

Ejemplo A3: Una las tablas EMPLOYEE y DEPARTMENT, seleccione el nmero del
empleado (EMPNO), el apellido del empleado (LASTNAME), el nmero del
departamento (WORKDEPT en la tabla EMPLOYEE y DEPTNO en la tabla
DEPARTMENT) y el nombre del departamento (DEPTNAME) de todos los
empleados que han nacido (BIRTHDATE) con anterioridad a 1930.
SELECT EMPNO, LASTNAME, WORKDEPT, DEPTNAME
FROM EMPLOYEE, DEPARTMENT
WHERE WORKDEPT = DEPTNO
AND YEAR(BIRTHDATE) < 1930

Ejemplo A4: Seleccione el trabajo (JOB) y los salarios mximo y mnimo (SALARY)
de cada grupo de filas con el mismo cdigo de trabajo en la tabla EMPLOYEE,
pero slo para los grupos con ms de una fila y con un salario mximo mayor o
igual que 27000.
SELECT JOB, MIN(SALARY), MAX(SALARY)
FROM EMPLOYEE
GROUP BY JOB
HAVING COUNT(*) > 1
AND MAX(SALARY) >= 27000

556 Consulta de SQL - Volumen 1


Ejemplos de subselecciones

Ejemplo A5: Seleccione todas las filas de la tabla EMP_ACT para los empleados
(EMPNO) del departamento (WORKDEPT) E11. (Los nmeros del departamento
del empleado se muestran en la tabla EMPLOYEE.)
SELECT *
FROM EMP_ACT
WHERE EMPNO IN
(SELECT EMPNO
FROM EMPLOYEE
WHERE WORKDEPT = E11)

Ejemplo A6: En la tabla EMPLOYEE, seleccione el nmero de departamento


(WORKDEPT) y el salario (SALARY) mximo del departamento para todos los
departamentos cuyo salario mximo sea menor que el salario medio de todos los
empleados.
SELECT WORKDEPT, MAX(SALARY)
FROM EMPLOYEE
GROUP BY WORKDEPT
HAVING MAX(SALARY) < (SELECT AVG(SALARY)
FROM EMPLOYEE)

La subconsulta de la clusula HAVING slo se ejecutar una vez en este ejemplo.

Ejemplo A7: Utilizando la tabla EMPLOYEE, seleccione el nmero de


departamento (WORKDEPT) y el salario (SALARY) mximo del departamento
para todos los departamentos cuyo salario mximo sea menor que el salario medio
de los dems departamentos.
SELECT WORKDEPT, MAX(SALARY)
FROM EMPLOYEE EMP_COR
GROUP BY WORKDEPT
HAVING MAX(SALARY) < (SELECT AVG(SALARY)
FROM EMPLOYEE
WHERE NOT WORKDEPT = EMP_COR.WORKDEPT)

A diferencia del Ejemplo A6, la subconsulta de la clusula HAVING se habr de


ejecutar para cada grupo.

Ejemplo A8: Determine el nmero de empleado y el salario de los representantes


de ventas junto con el salario medio y cuenta punta de sus departamentos.

Esta consulta primero debe crear una expresin de tabla anidada (DINFO) para
obtener las columnas AVGSALARY y EMPCOUNT, as como la columna DEPTNO
que se utiliza en la clusula WHERE.
SELECT THIS_EMP.EMPNO, THIS_EMP.SALARY, DINFO.AVGSALARY, DINFO.EMPCOUNT
FROM EMPLOYEE THIS_EMP,
(SELECT OTHERS.WORKDEPT AS DEPTNO,
AVG(OTHERS.SALARY) AS AVGSALARY,
COUNT(*) AS EMPCOUNT
FROM EMPLOYEE OTHERS
GROUP BY OTHERS.WORKDEPT
) AS DINFO
WHERE THIS_EMP.JOB = SALESREP
AND THIS_EMP.WORKDEPT = DINFO.DEPTNO

Utilizar una expresin de tabla anidada para este caso ahorra la actividad general
de crear la vista DIFO como una vista normal. Durante la preparacin de la
sentencia, se evita el acceso al catlogo para la vista y, debido al contexto del resto
de la consulta, slo se han de tener en cuenta las filas para el departamento de
representantes de ventas para la vista.

Captulo 5. Consultas 557


Ejemplos de subselecciones

Ejemplo A9: Visualice el nivel de formacin medio y el salario de 5 grupos de


empleados al azar.

Esta consulta necesita la utilizacin de una expresin de tabla anidada para


establecer el valor aleatorio de cada empleado para que pueda utilizarse
posteriormente en la clusula GROUP BY.
SELECT RANDID , AVG(EDLEVEL), AVG(SALARY)
FROM ( SELECT EDLEVEL, SALARY, INTEGER(RAND()*5) AS RANDID
FROM EMPLOYEE
) AS EMPRAND
GROUP BY RANDID

Ejemplo A10: Consultar la tabla EMP_ACT y devolver el nmero de los proyectos


que tengan un empleado cuyo salario se encuentre entre los 10 ms altos de todos
los empleados.
SELECT EMP_ACT.EMPNO,PROJNO
FROM EMP_ACT
WHERE EMP_ACT.EMPNO IN
(SELECT EMPLOYEE.EMPNO
FROM EMPLOYEE
ORDER BY SALARY DESC
FETCH FIRST 10 ROWS ONLY)

Ejemplos de uniones
Ejemplo B1: Este ejemplo ilustra el resultado de varias uniones utilizando las
tablas J1 y J2. Estas tablas contienen las filas que se muestran.
SELECT * FROM J1

W X
--- ------
A 11
B 12
C 13

SELECT * FROM J2

Y Z
--- ------
A 21
C 22
D 23

La siguiente consulta realiza una unin interna de J1 y J2, emparejando la primera


columna de ambas tablas.
SELECT * FROM J1 INNER JOIN J2 ON W=Y

W X Y Z
--- ------ --- ------
A 11 A 21
C 13 C 22

En este ejemplo de unin interna, la fila con la columna W=C de J1 y la fila con
la columna Y=D de J2 no se incluyen en el resultado porque no tienen una
coincidencia en la otra tabla. Observe que la forma alternativa siguiente de una
consulta de unin interna genera el mismo resultado.
SELECT * FROM J1, J2 WHERE W=Y

La unin externa izquierda siguiente recuperar la fila que falta de J1 con nulos
para las columnas de J2. Se incluyen todas las filas de J1.

558 Consulta de SQL - Volumen 1


Ejemplos de uniones

SELECT * FROM J1 LEFT OUTER JOIN J2 ON W=Y

W X Y Z
--- ------ --- ------
A 11 A 21
B 12 - -
C 13 C 22

La siguiente unin externa derecha recuperar la fila que falta de J2 con nulos para
las columnas de J1. Se incluyen todas la filas de J2.
SELECT * FROM J1 RIGHT OUTER JOIN J2 ON W=Y

W X Y Z
--- ------ --- ------
A 11 A 21
C 13 C 22
- - D 23

La siguiente unin externa completa recuperar las filas que faltan de las dos
tablas J1 y J2, con nulos cuando sea adecuado. Se incluyen todas las filas de las
tablas J1 y J2.
SELECT * FROM J1 FULL OUTER JOIN J2 ON W=Y

W X Y Z
--- ------ --- ------
A 11 A 21
C 13 C 22
- - D 23
B 12 - -

Ejemplo B2: Utilizando las tablas J1 y J2 del ejemplo anterior, examine lo que pasa
cuando se aade un predicado adicional a la condicin de bsqueda.
SELECT * FROM J1 INNER JOIN J2 ON W=Y AND X=13

W X Y Z
--- ------ --- ------
C 13 C 22

La condicin adicional ha provocado que la unin interna slo seleccionase 1 fila


en comparacin con la unin interna del Ejemplo B1 en la pgina 558.

Observe el impacto que tiene en la unin externa completa.


SELECT * FROM J1 FULL OUTER JOIN J2 ON W=Y AND X=13

W X Y Z
--- ------ --- ------
- - A 21
C 13 C 22
- - D 23
A 11 - -
B 12 - -

Ahora el resultado tiene 5 filas (a diferencia de 4 sin el predicado adicional) ya que


slo haba 1 fila en la unin interna y tienen que devolverse todas las filas de
ambas tablas.

La siguiente consulta ilustra que la colocacin del mismo predicado adicional en la


clusula WHERE provoca resultados completamente diferentes.

Captulo 5. Consultas 559


Ejemplos de uniones

SELECT * FROM J1 FULL OUTER JOIN J2 ON W=Y


WHERE X=13

W X Y Z
--- ------ --- ------
C 13 C 22

La clusula WHERE se aplica despus del resultado intermedio de la unin


externa completa. Este resultado intermedio sera el mismo que el resultado de la
consulta de unin externa completa del Ejemplo B1 en la pgina 558. La clusula
WHERE se aplica a este resultado intermedio y elimina todas las filas excepto la
que contiene X=13. La eleccin de la ubicacin de un predicado cuando se realizan
uniones externas puede afectar significativamente a los resultados. Examine lo que
pasa si el predicado es X=12 en lugar de X=13. La siguiente unin interna no
devuelve ninguna fila.
SELECT * FROM J1 INNER JOIN J2 ON W=Y AND X=12

Por lo tanto, la unin externa completa devolvera 6 filas: 3 filas de J1 con nulos
para las columnas de J2, y 3 filas de J2 con nulos para las columnas de J1.
SELECT * FROM J1 FULL OUTER JOIN J2 ON W=Y AND X=12

W X Y Z
--- ------ --- ------
- - A 21
- - C 22
- - D 23
A 11 - -
B 12 - -
C 13 - -

En cambio, si el predicado adicional est en la clusula WHERE, se devuelve la fila


1.
SELECT * FROM J1 FULL OUTER JOIN J2 ON W=Y
WHERE X=12

W X Y Z
--- ------ --- ------
B 12 - -

Ejemplo B3: Liste todos los departamentos con el nmero de empleado y el


apellido del director, incluyendo los departamentos sin director.
SELECT DEPTNO, DEPTNAME, EMPNO, LASTNAME
FROM DEPARTMENT LEFT OUTER JOIN EMPLOYEE
ON MGRNO = EMPNO

Ejemplo B4: Liste todos los nmeros de empleado y el apellido con el nmero de
empleado y el apellido de su director, incluyendo los empleados sin director.
SELECT E.EMPNO, E.LASTNAME, M.EMPNO, M.LASTNAME
FROM EMPLOYEE E LEFT OUTER JOIN
DEPARTMENT INNER JOIN EMPLOYEE M
ON MGRNO = M.EMPNO
ON E.WORKDEPT = DEPTNO

La unin interna determina el apellido de cualquier director identificado en la


tabla DEPARTMENT y la unin externa izquierda garantiza que se listen todos los
empleados incluso si no se encuentra un departamento correspondiente en
DEPARTMENT.

560 Consulta de SQL - Volumen 1


Ejemplos de conjuntos de agrupaciones, cube y rollup

Ejemplos de conjuntos de agrupaciones, cube y rollup


Las consultas del Ejemplo C1 al Ejemplo C4 en la pgina 562 utilizan un
subconjunto de filas de las tablas SALES basadas en el predicado
WEEK(SALES_DATE) = 13.
SELECT WEEK(SALES_DATE) AS WEEK,
DAYOFWEEK(SALES_DATE) AS DAY_WEEK,
SALES_PERSON, SALES AS UNITS_SOLD
FROM SALES
WHERE WEEK(SALES_DATE) = 13

lo que da como resultado:


WEEK DAY_WEEK SALES_PERSON UNITS_SOLD
----------- ----------- --------------- -----------
13 6 LUCCHESSI 3
13 6 LUCCHESSI 1
13 6 LEE 2
13 6 LEE 2
13 6 LEE 3
13 6 LEE 5
13 6 GOUNOT 3
13 6 GOUNOT 1
13 6 GOUNOT 7
13 7 LUCCHESSI 1
13 7 LUCCHESSI 2
13 7 LUCCHESSI 1
13 7 LEE 7
13 7 LEE 3
13 7 LEE 7
13 7 LEE 4
13 7 GOUNOT 2
13 7 GOUNOT 18
13 7 GOUNOT 1

Ejemplo C1: Esta es una consulta con una clusula GROUP BY bsica en 3
columnas:
SELECT WEEK(SALES_DATE) AS WEEK,
DAYOFWEEK(SALES_DATE) AS DAY_WEEK,
SALES_PERSON, SUM(SALES) AS UNITS_SOLD
FROM SALES
WHERE WEEK(SALES_DATE) = 13
GROUP BY WEEK(SALES_DATE), DAYOFWEEK(SALES_DATE), SALES_PERSON
ORDER BY WEEK, DAY_WEEK, SALES_PERSON

Da como resultado:
WEEK DAY_WEEK SALES_PERSON UNITS_SOLD
----------- ----------- --------------- -----------
13 6 GOUNOT 11
13 6 LEE 12
13 6 LUCCHESSI 4
13 7 GOUNOT 21
13 7 LEE 21
13 7 LUCCHESSI 4

Ejemplo C2: Genere el resultado basndose en dos conjuntos de agrupacin


diferentes de las filas de la tabla SALES.
SELECT WEEK(SALES_DATE) AS WEEK,
DAYOFWEEK(SALES_DATE) AS DAY_WEEK,
SALES_PERSON, SUM(SALES) AS UNITS_SOLD
FROM SALES

Captulo 5. Consultas 561


Ejemplos de conjuntos de agrupaciones, cube y rollup

WHERE WEEK(SALES_DATE) = 13
GROUP BY GROUPING SETS ( (WEEK(SALES_DATE), SALES_PERSON),
(DAYOFWEEK(SALES_DATE), SALES_PERSON))
ORDER BY WEEK, DAY_WEEK, SALES_PERSON

Esto da como resultado:


WEEK DAY_WEEK SALES_PERSON UNITS_SOLD
----------- ----------- --------------- -----------
13 - GOUNOT 32
13 - LEE 33
13 - LUCCHESSI 8
- 6 GOUNOT 11
- 6 LEE 12
- 6 LUCCHESSI 4
- 7 GOUNOT 21
- 7 LEE 21
- 7 LUCCHESSI 4

Las filas con WEEK 13 son del primer conjunto de agrupacin y las dems filas
son del segundo conjunto de agrupacin.

Ejemplo C3: Si utiliza las 3 columnas diferenciadas implicadas en los conjuntos de


agrupacin del Ejemplo C2 en la pgina 561 y lleva a cabo ROLLUP, puede ver
los conjuntos de agrupacin para (WEEK,DAY_WEEK,SALES_PERSON), (WEEK,
DAY_WEEK), (WEEK) y el total.
SELECT WEEK(SALES_DATE) AS WEEK,
DAYOFWEEK(SALES_DATE) AS DAY_WEEK,
SALES_PERSON, SUM(SALES) AS UNITS_SOLD
FROM SALES
WHERE WEEK(SALES_DATE) = 13
GROUP BY ROLLUP ( WEEK(SALES_DATE), DAYOFWEEK(SALES_DATE), SALES_PERSON )
ORDER BY WEEK, DAY_WEEK, SALES_PERSON

Esto da como resultado:


WEEK DAY_WEEK SALES_PERSON UNITS_SOLD
----------- ----------- --------------- -----------
13 6 GOUNOT 11
13 6 LEE 12
13 6 LUCCHESSI 4
13 6 - 27
13 7 GOUNOT 21
13 7 LEE 21
13 7 LUCCHESSI 4
13 7 - 46
13 - - 73
- - - 73

Ejemplo C4: Si ejecuta la misma consulta que el Ejemplo C3 sustituyendo slo


ROLLUP por CUBE, podr ver conjuntos de agrupacin adicionales para
(WEEK,SALES_PERSON), (DAY_WEEK,SALES_PERSON), (DAY_WEEK),
(SALES_PERSON) en el resultado.
SELECT WEEK(SALES_DATE) AS WEEK,
DAYOFWEEK(SALES_DATE) AS DAY_WEEK,
SALES_PERSON, SUM(SALES) AS UNITS_SOLD
FROM SALES
WHERE WEEK(SALES_DATE) = 13
GROUP BY CUBE ( WEEK(SALES_DATE), DAYOFWEEK(SALES_DATE), SALES_PERSON )
ORDER BY WEEK, DAY_WEEK, SALES_PERSON

Da como resultado:

562 Consulta de SQL - Volumen 1


Ejemplos de conjuntos de agrupaciones, cube y rollup

WEEK DAY_WEEK SALES_PERSON UNITS_SOLD


----------- ----------- --------------- -----------
13 6 GOUNOT 11
13 6 LEE 12
13 6 LUCCHESSI 4
13 6 - 27
13 7 GOUNOT 21
13 7 LEE 21
13 7 LUCCHESSI 4
13 7 - 46
13 - GOUNOT 32
13 - LEE 33
13 - LUCCHESSI 8
13 - - 73
- 6 GOUNOT 11
- 6 LEE 12
- 6 LUCCHESSI 4
- 6 - 27
- 7 GOUNOT 21
- 7 LEE 21
- 7 LUCCHESSI 4
- 7 - 46
- - GOUNOT 32
- - LEE 33
- - LUCCHESSI 8
- - - 73

Ejemplo C5: Obtenga un conjunto resultante que incluya un total de filas


seleccionadas de la tabla SALES junto con un grupo de filas agregadas por
SALES_PERSON y MONTH.
SELECT SALES_PERSON,
MONTH(SALES_DATE) AS MONTH,
SUM(SALES) AS UNITS_SOLD
FROM SALES
GROUP BY GROUPING SETS ( (SALES_PERSON, MONTH(SALES_DATE)),
()
)
ORDER BY SALES_PERSON, MONTH

Esto da como resultado:


SALES_PERSON MONTH UNITS_SOLD
--------------- ----------- -----------
GOUNOT 3 35
GOUNOT 4 14
GOUNOT 12 1
LEE 3 60
LEE 4 25
LEE 12 6
LUCCHESSI 3 9
LUCCHESSI 4 4
LUCCHESSI 12 1
- - 155

Ejemplo C6: Este ejemplo muestra dos consultas ROLLUP simples seguidas de una
consulta que trata los dos ROLLUP como conjuntos de agrupacin en un slo
conjunto resultante y especifica el orden de filas para cada columna implicada en
los conjuntos de agrupacin.

Ejemplo C6-1:

Captulo 5. Consultas 563


Ejemplos de conjuntos de agrupaciones, cube y rollup

SELECT WEEK(SALES_DATE) AS WEEK,


DAYOFWEEK(SALES_DATE) AS DAY_WEEK,
SUM(SALES) AS UNITS_SOLD
FROM SALES
GROUP BY ROLLUP ( WEEK(SALES_DATE), DAYOFWEEK(SALES_DATE) )
ORDER BY WEEK, DAY_WEEK

da como resultado:
WEEK DAY_WEEK UNITS_SOLD
----------- ----------- -----------
13 6 27
13 7 46
13 - 73
14 1 31
14 2 43
14 - 74
53 1 8
53 - 8
- - 155

Ejemplo C6-2:
SELECT MONTH(SALES_DATE) AS MONTH,
REGION,
SUM(SALES) AS UNITS_SOLD
FROM SALES
GROUP BY ROLLUP ( MONTH(SALES_DATE), REGION );
ORDER BY MONTH, REGION

da como resultado:
MONTH REGION UNITS_SOLD
----------- --------------- -----------
3 Manitoba 22
3 Ontario-North 8
3 Ontario-South 34
3 Quebec 40
3 - 104
4 Manitoba 17
4 Ontario-North 1
4 Ontario-South 14
4 Quebec 11
4 - 43
12 Manitoba 2
12 Ontario-South 4
12 Quebec 2
12 - 8
- - 155

Ejemplo C6-3:
SELECT WEEK(SALES_DATE) AS WEEK,
DAYOFWEEK(SALES_DATE) AS DAY_WEEK,
MONTH(SALES_DATE) AS MONTH,
REGION,
SUM(SALES) AS UNITS_SOLD
FROM SALES
GROUP BY GROUPING SETS ( ROLLUP( WEEK(SALES_DATE), DAYOFWEEK(SALES_DATE) ),
ROLLUP( MONTH(SALES_DATE), REGION ) )
ORDER BY WEEK, DAY_WEEK, MONTH, REGION

da como resultado:
WEEK DAY_WEEK MONTH REGION UNITS_SOLD
----------- ----------- ----------- --------------- -----------
13 6 - - 27
13 7 - - 46

564 Consulta de SQL - Volumen 1


Ejemplos de conjuntos de agrupaciones, cube y rollup

13 - - - 73
14 1 - - 31
14 2 - - 43
14 - - - 74
53 1 - - 8
53 - - - 8
- - 3 Manitoba 22
- - 3 Ontario-North 8
- - 3 Ontario-South 34
- - 3 Quebec 40
- - 3 - 104
- - 4 Manitoba 17
- - 4 Ontario-North 1
- - 4 Ontario-South 14
- - 4 Quebec 11
- - 4 - 43
- - 12 Manitoba 2
- - 12 Ontario-South 4
- - 12 Quebec 2
- - 12 - 8
- - - - 155
- - - - 155

La utilizacin de los dos ROLLUP como conjuntos de agrupacin hace que el


resultado incluya filas duplicadas. Incluso hay dos filas del total.

Observe cmo la utilizacin de ORDER BY ha afectado al resultado:


v En el primer conjunto agrupado, la semana 53 se ha cambiado a la posicin
final.
v En el segundo conjunto agrupado, el mes 12 se ha puesto al final y las regiones
aparecen por orden alfabtico.
v Los valores nulos se clasifican arriba.

Ejemplo C7: En las consultas que realizan varios ROLLUP en una sola pasada
(como por ejemplo, Ejemplo C6-3 en la pgina 564) tiene la posibilidad de
indicar, si lo desea, qu conjunto de agrupacin ha producido cada fila. Los pasos
siguientes demuestran cmo proporcionar una columna (denominada GROUP) que
indica el origen de cada fila del conjunto resultante. Por origen se quiere decir cual
de los dos conjuntos de agrupacin ha producido la fila del conjunto resultante.

Paso 1: Introduzca una manera de generar los nuevos valores de datos, utilizando
una consulta que los selecciona en la clusula VALUES (que es una forma
alternativa de una seleccin completa). Esta consulta muestra cmo se puede
derivar una tabla llamada X que tienen 2 columnas R1 y R2 y 1 fila de datos.
SELECT R1,R2
FROM (VALUES(GROUP 1,GROUP 2)) AS X(R1,R2);

da como resultado:
R1 R2
------- -------
GROUP 1 GROUP 2

Paso 2: Forme el producto cruzado de esta tabla X con la tabla SALES. Esto aade
las columnas R1 y R2 a cada fila.
SELECT R1, R2, WEEK(SALES_DATE) AS WEEK,
DAYOFWEEK(SALES_DATE) AS DAY_WEEK,
MONTH(SALES_DATE) AS MONTH,
REGION,
SALES AS UNITS_SOLD
FROM SALES,(VALUES(GROUP 1,GROUP 2)) AS X(R1,R2)

Captulo 5. Consultas 565


Ejemplos de conjuntos de agrupaciones, cube y rollup

Esto aade las columnas R1 y R2 a cada fila.

Paso 3: Ahora se pueden combinar estas columnas con los conjuntos de agrupacin
para que incluyan estas columnas en el anlisis de avance.
SELECT R1, R2,
WEEK(SALES_DATE) AS WEEK,
DAYOFWEEK(SALES_DATE) AS DAY_WEEK,
MONTH(SALES_DATE) AS MONTH,
REGION, SUM(SALES) AS UNITS_SOLD
FROM SALES,(VALUES(GROUP 1,GROUP 2)) AS X(R1,R2)
GROUP BY GROUPING SETS ((R1, ROLLUP(WEEK(SALES_DATE),
DAYOFWEEK(SALES_DATE))),
(R2,ROLLUP( MONTH(SALES_DATE), REGION ) ) )
ORDER BY WEEK, DAY_WEEK, MONTH, REGION

da como resultado:
R1 R2 WEEK DAY_WEEK MONTH REGION UNITS_SOLD
------- ------- -------- --------- --------- --------------- -----------
GROUP 1 - 13 6 - - 27
GROUP 1 - 13 7 - - 46
GROUP 1 - 13 - - - 73
GROUP 1 - 14 1 - - 31
GROUP 1 - 14 2 - - 43
GROUP 1 - 14 - - - 74
GROUP 1 - 53 1 - - 8
GROUP 1 - 53 - - - 8
- GROUP 2 - - 3 Manitoba 22
- GROUP 2 - - 3 Ontario-North 8
- GROUP 2 - - 3 Ontario-South 34
- GROUP 2 - - 3 Quebec 40
- GROUP 2 - - 3 - 104
- GROUP 2 - - 4 Manitoba 17
- GROUP 2 - - 4 Ontario-North 1
- GROUP 2 - - 4 Ontario-South 14
- GROUP 2 - - 4 Quebec 11
- GROUP 2 - - 4 - 43
- GROUP 2 - - 12 Manitoba 2
- GROUP 2 - - 12 Ontario-South 4
- GROUP 2 - - 12 Quebec 2
- GROUP 2 - - 12 - 8
- GROUP 2 - - - - 155
GROUP 1 - - - - - 155

Paso 4: Tenga en cuenta que puesto que R1 y R2 se utilizan en conjuntos de


agrupacin diferentes, siempre que R1 no sea nulo en el resultado, R2 es nulo y
siempre que R2 sea no nulo en el resultado, R1 es nulo. Esto significa que puede
consolidar estas columnas en una sola utilizando la funcin COALESCE. Tambin
puede utilizar esta columna en la clusula ORDER BY para conservar el resultado
de los dos conjuntos de agrupacin juntos.
SELECT COALESCE(R1,R2) AS GROUP,
WEEK(SALES_DATE) AS WEEK,
DAYOFWEEK(SALES_DATE) AS DAY_WEEK,
MONTH(SALES_DATE) AS MONTH,
REGION, SUM(SALES) AS UNITS_SOLD
FROM SALES,(VALUES(GROUP 1,GROUP 2)) AS X(R1,R2)
GROUP BY GROUPING SETS ((R1, ROLLUP(WEEK(SALES_DATE),
DAYOFWEEK(SALES_DATE))),
(R2,ROLLUP( MONTH(SALES_DATE), REGION ) ) )
ORDER BY GROUP, WEEK, DAY_WEEK, MONTH, REGION;

da como resultado:

566 Consulta de SQL - Volumen 1


Ejemplos de conjuntos de agrupaciones, cube y rollup

GROUP WEEK DAY_WEEK MONTH REGION UNITS_SOLD


------- ----------- ----------- ----------- --------------- -----------
GROUP 1 13 6 - - 27
GROUP 1 13 7 - - 46
GROUP 1 13 - - - 73
GROUP 1 14 1 - - 31
GROUP 1 14 2 - - 43
GROUP 1 14 - - - 74
GROUP 1 53 1 - - 8
GROUP 1 53 - - - 8
GROUP 1 - - - - 155
GROUP 2 - - 3 Manitoba 22
GROUP 2 - - 3 Ontario-North 8
GROUP 2 - - 3 Ontario-South 34
GROUP 2 - - 3 Quebec 40
GROUP 2 - - 3 - 104
GROUP 2 - - 4 Manitoba 17
GROUP 2 - - 4 Ontario-North 1
GROUP 2 - - 4 Ontario-South 14
GROUP 2 - - 4 Quebec 11
GROUP 2 - - 4 - 43
GROUP 2 - - 12 Manitoba 2
GROUP 2 - - 12 Ontario-South 4
GROUP 2 - - 12 Quebec 2
GROUP 2 - - 12 - 8
GROUP 2 - - - - 155

Ejemplo C8: El ejemplo siguiente ilustra la utilizacin de varias funciones de


columna cuando se realiza un CUBE. El ejemplo tambin utiliza funciones de
conversin del tipo de datos y el redondeo para producir resultados decimales con
una precisin y escala razonables.
SELECT MONTH(SALES_DATE) AS MONTH,
REGION,
SUM(SALES) AS UNITS_SOLD,
MAX(SALES) AS BEST_SALE,
CAST(ROUND(AVG(DECIMAL(SALES)),2) AS DECIMAL(5,2)) AS AVG_UNITS_SOLD
FROM SALES
GROUP BY CUBE(MONTH(SALES_DATE),REGION)
ORDER BY MONTH, REGION

Da como resultado:
MONTH REGION UNITS_SOLD BEST_SALE AVG_UNITS_SOLD
----------- --------------- ----------- ----------- --------------
3 Manitoba 22 7 3.14
3 Ontario-North 8 3 2.67
3 Ontario-South 34 14 4.25
3 Quebec 40 18 5.00
3 - 104 18 4.00
4 Manitoba 17 9 5.67
4 Ontario-North 1 1 1.00
4 Ontario-South 14 8 4.67
4 Quebec 11 8 5.50
4 - 43 9 4.78
12 Manitoba 2 2 2.00
12 Ontario-South 4 3 2.00
12 Quebec 2 1 1.00
12 - 8 3 1.60
- Manitoba 41 9 3.73
- Ontario-North 9 3 2.25
- Ontario-South 52 14 4.00
- Quebec 53 18 4.42
- - 155 18 3.87

Informacin relacionada:

Captulo 5. Consultas 567


Ejemplos de conjuntos de agrupaciones, cube y rollup

v Asignaciones y comparaciones en la pgina 117


v Series de caracteres en la pgina 91
v Seleccin completa en la pgina 569
v Funciones en la pgina 172
v GROUPING en la pgina 283
v Identificadores en la pgina 65
v Predicados en la pgina 224
v Sentencia select en la pgina 574
v XMLTABLE en la pgina 510
v Sentencia CREATE FUNCTION (Tabla externa) en Consulta de SQL, Volumen 2
v Sentencia CREATE FUNCTION (Escalar de SQL, tabla o fila) en Consulta de
SQL, Volumen 2
v Sentencia DELETE en Consulta de SQL, Volumen 2
v Sentencia INSERT en Consulta de SQL, Volumen 2
v Sentencia UPDATE en Consulta de SQL, Volumen 2

568 Consulta de SQL - Volumen 1


Seleccin completa

Seleccin completa
 subseleccin 
(seleccin completa)
clusula-values

  
UNION subseleccin clusula-order-by
UNION ALL (seleccin completa)
EXCEPT clusula-values
EXCEPT ALL
INTERSECT
INTERSECT ALL

 
clusula-fetch-first

clusula-values:

VALUES  fila-valores

fila-valores:

expresin
NULL
,

(  expresin )
NULL

La seleccin completa es un componente de la sentencia select, la sentencia INSERT y


la sentencia CREATE VIEW. Tambin es un componente de ciertos predicados que,
a su vez, son componentes de una sentencia. Una seleccin completa que es un
componente de un predicado se denomina subconsulta, y una seleccin completa
que se especifica entre parntesis a veces se denomina subconsulta.

Los operadores de conjuntos UNION, EXCEPT e INTERSECT se corresponden a


los operadores relacionales de unin, diferencia e interseccin.

Una seleccin completa especifica una tabla resultante. Si no se utiliza un operador


de conjunto, el resultado de la seleccin completa es el resultado de la subseleccin
especificada o la clusula-values.
clusula-values
Obtiene una tabla resultante especificando los valores reales, utilizando
expresiones, para cada columna de una fila de la tabla resultante. Pueden
especificarse mltiples filas.

Captulo 5. Consultas 569


Seleccin completa

NULL slo se puede utilizar con mltiples especificaciones de fila-valores y


como mnimo una fila de la misma columna no debe ser NULL (SQLSTATE
42826).
Una fila-valores se especifica por:
v Una sola expresin para una tabla resultante de una sola columna o
v n expresiones (o NULL) separadas por comas y encerradas entre parntesis,
donde n es el nmero de columnas de la tabla resultante.

La clusula VALUES de mltiples filas deben tener el mismo nmero de


expresiones en cada fila-valores (SQLSTATE 42826).

A continuacin encontrar ejemplos de clusulas-values y su significado.


VALUES (1),(2),(3) - 3 filas de 1 columna
VALUES 1, 2, 3 - 3 filas de 1 columna
VALUES (1, 2, 3) - 1 fila de 3 columnas
VALUES (1,21),(2,22),(3,23) - 3 filas de 2 columnas

Una clusula-values que est compuesta de n especificaciones de fila-valores,


RE1 a REn, donde n es mayor que 1, es equivalente a:
RE1 UNION ALL RE2 ... UNION ALL REn

Esto significa que las expresiones correspondientes de cada fila-valores deben


ser comparables (SQLSTATE 42825).
UNION o UNION ALL
Obtiene una tabla resultante combinando las otras dos tablas resultantes (R1 y
R2). Si se ha especificado UNION ALL, el resultado consta de todas las filas de
R1 y de R2. Si se especifica UNION sin la opcin ALL, el resultado consta de
todas las filas de R1 o R2, con las filas duplicadas eliminadas. Sin embargo, en
cualquier caso, todas las filas de la tabla UNION es una fila de R1 o una fila
de R2.
EXCEPT o EXCEPT ALL
Obtiene una tabla resultante combinando las otras dos tablas resultantes (R1 y
R2). Si se especifica EXCEPT ALL, el resultado consta de todas las filas que no
tienen una fila correspondiente en R2, donde las filas duplicadas son
significativas. Si se especifica EXCEPT sin la opcin ALL, el resultado consta
de todas las filas que estn slo en R1, y las filas duplicadas se eliminan del
resultado de esta operacin.
INTERSECT o INTERSECT ALL
Obtiene una tabla resultante combinando las otras dos tablas resultantes (R1 y
R2). Si se especifica INTERSECT ALL, el resultado consta de todas las filas que
estn en R1 y en R2. Si se especifica INTERSECT sin la opcin ALL, el
resultado consta de todas las filas que estn en R1 y en R2, con las filas
duplicadas eliminadas.
clusula-order-by
Una seleccin completa que contenga una clusula ORDER BY o FETCH FIRST
no puede especificarse en:
v Una tabla de consultas materializadas
v La seleccin completa ms externa de una vista (SQLSTATE 428FJ).

Nota: Una clusula ORDER BY en una seleccin completa no afecta el orden


de las filas que una consulta devuelve. Una clusula ORDER BY slo
afecta el orden de las filas devueltas si se especifica en la seleccin
completa ms externa.

570 Consulta de SQL - Volumen 1


Seleccin completa

El nmero de columnas de las tablas resultantes R1 y R2 han de ser iguales


(SQLSTATE 42826). Si no se especifica la palabra clave ALL, R1 y R2 no deben
contener ninguna columna que tenga el tipo de datos LONG VARCHAR, CLOB,
LONG VARGRAPHIC, DBCLOB, BLOB, DATALINK, un tipo diferenciado de estos
tipos o un tipo estructurado (SQLSTATE 42907).

Las columnas del resultado tienen estos nombres:


v Si las columnas n de R1 y n de R2 tienen el mismo nombre de columna del
resultado, la columna n de R tiene el nombre de la columna del resultado.
v Si la columna n de R1 y la columna n de R2 tienen nombres de columna del
resultado diferente, se genera un nombre. Este nombre no se puede utilizar
como nombre de columna en una clusula ORDER BY o UPDATE.

El nombre generado se puede determinar ejecutando DESCRIBE de la sentencia de


SQL y consultando el campo SQLNAME.

Dos filas se consideran duplicadas si cada valor de la primera es igual al valor


correspondiente de la segunda. (Para la determinacin de duplicados, dos valores
nulos se consideran iguales.)

Cuando se combinan mltiples operaciones en una expresin, las operaciones entre


parntesis se llevan a cabo primero. Si no hay parntesis, las operaciones se llevan
a cabo de izquierda a derecha a excepcin de que todas las operaciones
INTERSECT se efectan antes que las operaciones UNION o EXCEPT.

En el ejemplo siguiente, los valores de las tablas R1 y R2 se muestran en la


izquierda. Las otras cabeceras listadas muestran los valores como resultado de
varias operaciones de conjunto en R1 y en R2.

INTER-
UNION EXCEPT SECT INTER-
R1 R2 ALL UNION ALL EXCEPT ALL SECT
1 1 1 1 1 2 1 1
1 1 1 2 2 5 1 3
1 3 1 3 2 3 4
2 3 1 4 2 4
2 3 1 5 4
2 3 2 5
3 4 2
4 2
4 3
5 3
3
3
3
4
4
4
5

Captulo 5. Consultas 571


Ejemplos de una seleccin completa

Ejemplos de una seleccin completa


Ejemplo 1: Seleccin de todas las columnas y filas de la tabla EMPLOYEE.
SELECT * FROM EMPLOYEE

Ejemplo 2: Liste los nmeros de empleado (EMPNO) de todos los empleados de la


tabla EMPLOYEE cuyo nmero de departamento (WORKDEPT) empiece por 'E' o
que estn asignados a proyectos de la tabla EMP_ACT cuyo nmero de proyecto
(PROJNO) sea igual a 'MA2100', 'MA2110' o 'MA2112'.
SELECT EMPNO
FROM EMPLOYEE
WHERE WORKDEPT LIKE E%
UNION
SELECT EMPNO
FROM EMP_ACT
WHERE PROJNO IN(MA2100, MA2110, MA2112)

Ejemplo 3: Haga la misma consulta que en el ejemplo 2 y, adems, identifique


las filas de la tabla EMPLOYEE con 'emp' y las filas de la tabla EMP_ACT con
'emp_act'. A diferencia del resultado del ejemplo 2, esta consulta puede devolver el
mismo EMPNO ms de una vez, identificando la tabla del que proviene mediante
el identificador asociado.
SELECT EMPNO, emp
FROM EMPLOYEE
WHERE WORKDEPT LIKE E%
UNION
SELECT EMPNO, emp_act FROM EMP_ACT
WHERE PROJNO IN(MA2100, MA2110, MA2112)

Ejemplo 4: Realice la misma consulta que en el ejemplo 2, slo que utilice UNION
ALL para que no se elimine ninguna fila duplicada.
SELECT EMPNO
FROM EMPLOYEE
WHERE WORKDEPT LIKE E%
UNION ALL
SELECT EMPNO
FROM EMP_ACT
WHERE PROJNO IN(MA2100, MA2110, MA2112)

Ejemplo 5: Realice la misma consulta que en el ejemplo 3, slo que esta vez
incluya dos empleados adicionales que no estn actualmente en ninguna tabla e
identifquelos como new.
SELECT EMPNO, emp
FROM EMPLOYEE
WHEREWORKDEPTLIKE E%
UNION
SELECT EMPNO, emp_act
FROM EMP_ACT
WHERE PROJNO IN(MA2100, MA2110, MA2112)
UNION
VALUES (NEWAAA, new), (NEWBBB, new)

Ejemplo 6: Este ejemplo de EXCEPT genera todas las filas que estn en T1 pero no
en T2.
(SELECT * FROM T1)
EXCEPT ALL
(SELECT * FROM T2)

Si no hay ningn valor NULL implicado, este ejemplo devuelve los mismos
resultados que

572 Consulta de SQL - Volumen 1


Ejemplos de una seleccin completa

SELECT ALL *
FROM T1
WHERE NOT EXISTS (SELECT * FROM T2
WHERE T1.C1 = T2.C1 AND T1.C2 = T2.C2 AND...)

Ejemplo 7: Este ejemplo de INTERSECT genera todas las filas que estn en ambas
tablas, T1 y T2, eliminando los duplicados.
(SELECT * FROM T1)
INTERSECT
(SELECT * FROM T2)

Si no hay valores NULL implicados, este ejemplo devuelve el mismo resultado que
SELECT DISTINCT * FROM T1
WHERE EXISTS (SELECT * FROM T2
WHERE T1.C1 = T2.C1 AND T1.C2 = T2.C2 AND...)

donde C1, C2, etctera representan las columnas de T1 y T2.

Informacin relacionada:
v Reglas para los tipos de datos del resultado en la pgina 129
v Reglas para la conversin de series en la pgina 133

Captulo 5. Consultas 573


Sentencia select

Sentencia select
 seleccin-completa * 
,

WITH  expresin-tabla-comn

 * * 
clusula-read-only clusula-optimize-for
clusula-update

 
clusula-isolation

La sentencia-select es la forma de una consulta que puede especificarse directamente


en una sentencia DECLARE CURSOR o prepararse y despus hacerse referencia en
una sentencia DECLARE CURSOR. Tambin puede emitirse mediante sentencias
de SQL dinmico utilizando el procesador de la lnea de mandatos (o herramientas
similares) haciendo que se visualice una tabla resultante en la pantalla del usuario.
En cualquier caso, la tabla especificada por una sentencia-select es el resultado de la
seleccin completa.

expresin-comn-tabla
 nombre-tabla 
,
(1)
(  nombre-columna )

 AS ( seleccin-completa ) 

Notas:
1 Si una expresin de tabla comn es recursiva o si la seleccin completa da
como resultado nombres de columna duplicados, deben especificarse los
nombres de columna.

Una expresin de tabla comn permite la definicin de una tabla resultante con un
nombre-tabla que puede especificarse como un nombre de tabla en cualquier
clusula FROM de la seleccin completa que sigue. Se pueden especificar mltiples
expresiones de tabla comunes a continuacin de una sola palabra clave WITH.
Cada expresin de tabla comn especificada tambin puede referirse por nombre
en la clusula FROM de expresiones de tabla comunes subsiguientes.

Si se especifica una lista de columnas, debe constar de tantos nombres como el


nmero de columnas de la tabla resultante de la seleccin completa. Cada
nombre-columna debe ser exclusivo y no calificado. Si no se especifican estos
nombres de columna, los nombres se obtienen de la lista de seleccin de la
seleccin completa utilizada para definir la expresin de tabla comn.

El nombre-tabla de una expresin de tabla comn debe ser diferente de cualquier


otro nombre-tabla de una expresin de tabla comn de la misma sentencia
(SQLSTATE 42726). Si se especifica la expresin de tabla comn en una sentencia
INSERT, el nombre-tabla no puede ser el mismo que el nombre de tabla o vista que
es el objeto de la insercin (SQLSTATE 42726). Un nombre-tabla de una expresin de

574 Consulta de SQL - Volumen 1


expresin-tabla-comn

tabla comn puede especificarse como nombre de tabla en cualquier clusula


FROM de toda la seleccin completa. Un nombre-tabla de una expresin de tabla
comn prevalece sobre cualquier tabla, vista o seudnimo existentes (en el
catlogo) que tenga el mismo nombre calificado.

Si se define ms de una expresin de tabla comn en la misma sentencia, no estn


permitidas las referencias cclicas entre las expresiones de tabla comunes
(SQLSTATE 42835). Una referencia cclica se produce cuando dos expresiones de
tabla comunes dt1 y dt2 estn creadas de tal manera que dt1 hace referencia a dt2 y
dt2 hace referencia a dt1.

Si una seleccin completa de una expresin de tabla comn contiene una referencia
a tabla de cambio de datos en la clusula FROM, se dice que la expresin de tabla
comn modifica los datos. Una expresin de tabla comn que modifica datos
siempre se evala cuando se procesa la sentencia, independientemente de si la
expresin de tabla comn se utiliza en cualquier otro lugar de la sentencia. Si hay
al menos una expresin de tabla comn que lee o modifica datos, todas las
expresiones de tabla comn se procesan en el orden en el que aparecen, y cada
expresin de tabla comn que lee o modifica datos se ejecuta por completo,
incluidas todas las restricciones y activadores, antes de que se ejecuten las
expresiones de tabla comn siguientes.

La expresin de tabla comn tambin es opcional antes de la seleccin completa en


las sentencias CREATE VIEW e INSERT.

Una expresin de tabla comn puede utilizarse:


v En lugar de una vista para evitar crear la vista (cuando no sea necesaria la
utilizacin general de la vista y no se utilicen actualizaciones ni supresiones
colocadas)
v Para permitir la agrupacin por una columna que se obtiene de una subseleccin
o funcin escalar que no es determinista o tiene una accin externa
v Cuando la tabla resultante deseada se basa en variables del lenguaje principal
v Cuando la misma tabla resultante necesite compartirse en una seleccin
completa
v Cuando el resultado necesita obtenerse mediante recurrencia
v Cuando se tienen que procesar varias sentencias de cambio de datos SQL dentro
de la consulta

Si la seleccin completa de una expresin de tabla comn contiene una referencia a


s misma en una clusula FROM, la expresin de tabla comn es recursiva. Las
consultas que utilizan la recurrencia son tiles en las aplicaciones que permiten su
uso, tales como la lista de material (BOM), sistemas de reservas y planificacin de
la red.

Deben cumplirse las condiciones siguientes en una expresin de tabla comn


recursiva:
v Cada seleccin completa que forma parte del ciclo de repeticin debe empezar
por SELECT o SELECT ALL. La utilizacin de SELECT DISTINCT no est
permitida (SQLSTATE 42925). Adems, las uniones deben utilizar UNION ALL
(SQLSTATE 42925).
v Los nombres de columna deben especificarse a continuacin del nombre-tabla de
la expresin de tabla comn (SQLSTATE 42908).

Captulo 5. Consultas 575


expresin-tabla-comn

v La primera seleccin completa de la primera unin (la seleccin completa de


inicializacin) no debe incluir ninguna referencia a ninguna columna de la
expresin de tabla comn de cualquier clusula FROM (SQLSTATE 42836).
v Si se hace referencia a un nombre de columna de la expresin de tabla comn en
la seleccin completa repetida, el tipo de datos, longitud y pgina de cdigos
para la columna se determinan basndose en la seleccin completa de
inicializacin. La columna correspondiente de la seleccin completa recursiva
debe tener el mismo tipo de datos y longitud que el tipo de datos y longitud
determinados en base a la seleccin completa de inicializacin y la pgina de
cdigos debe coincidir (SQLSTATE 42825). Sin embargo, para los tipos de serie
de caracteres, la longitud de los dos tipos de datos puede diferir. En este caso, la
columna de la seleccin completa recursiva debe tener una longitud que podra
asignarse siempre a la longitud determinada de la seleccin completa de
inicializacin.
v Cada seleccin completa que forma parte del ciclo de repeticin no debe incluir
ninguna funcin de columna, clusula-group-by ni clusula-having (SQLSTATE
42836).
Las clusulas FROM de estas selecciones completas pueden incluir como
mximo una referencia a una expresin de tabla comn que forme parte de un
ciclo de repeticin (SQLSTATE 42836).
v Ni la seleccin completa iterativa ni la seleccin completa recursiva global puede
incluir una clusula-order-by (SQLSTATE 42836).
v Las subconsultas (escalares o cuantificadas) no deben formar parte de ciclos de
repeticin (SQLSTATE 42836).

Cuando desarrolle expresiones de tabla comunes recursivas, recuerde que se puede


crear un ciclo de repeticin infinito (bucle). Compruebe que los ciclos de repeticin
terminen. Es muy importante si los datos implicados son cclicos. Se espera que
una expresin de tabla comn recursiva incluya un predicado que impida un bucle
infinito. Se espera que la expresin de tabla comn recursiva incluya:
v Una seleccin completa recursiva, una columna de enteros incrementada por una
constante.
v Un predicado en la clusula where de la seleccin completa recursiva con el
formato col_contador < constante o col_contador < :var_lengpral.

Se emite un aviso si no se encuentra esta sintaxis en la expresin de tabla comn


recursiva (SQLSTATE 01605).

Ejemplo de recurrencia: Lista de material:

Las aplicaciones de tipo Lista de material (BOM) son una necesidad habitual en
muchos entornos comerciales. Para ilustrar la capacidad de una expresin de tabla
comn recursiva para aplicaciones BOM, considere una tabla de piezas con
subpiezas asociadas y la cantidad de subpiezas que se precisan en la pieza. Para
este ejemplo, cree la tabla como se muestra a continuacin:
CREATE TABLE PARTLIST
(PIEZA VARCHAR(8),
SUBPIEZA VARCHAR(8),
CANTIDAD INTEGER);

Para obtener resultados de consulta en este ejemplo, supongamos que la tabla


LISTA DE PIEZAS contiene los siguientes valores:
PIEZA SUBPIEZA CANTIDAD
-------- -------- -----------
00 01 5

576 Consulta de SQL - Volumen 1


expresin-tabla-comn

00 05 3
01 02 2
01 03 3
01 04 4
01 06 3
02 05 7
02 06 6
03 07 6
04 08 10
04 09 11
05 10 10
05 11 10
06 12 10
06 13 10
07 14 8
07 12 8

Ejemplo 1: Explosin de primer nivel

El primer ejemplo se denomina explosin de primer nivel. Responde a la pregunta


Qu piezas son necesarias para crear la pieza identificada mediante 01?. La lista
incluir las subpiezas directas, subpiezas de subpiezas, etc. Sin embargo, si una
pieza se utiliza varias veces, las subpiezas correspondientes slo aparecern en la
lista una vez.
WITH RPL (PART, SUBPART, QUANTITY) AS
( SELECT PIEZA.RAIZ, SUBPIEZA.RAIZ, CANTIDAD.RAIZ
FROM LISTA DE PIEZAS RAIZ
WHERE PIEZA.RAIZ = 01
UNION ALL
SELECT PIEZA.HIJA, SUBPIEZA.HIJA, CANTIDAD.HIJA
FROM RPL PADRE, LISTA DE PIEZAS HIJA
WHERE SUBPIEZA.PADRE = PIEZA.HIJA
)
SELECT DISTINCT PIEZA, SUBPIEZA, CANTIDAD
FROM RPL
ORDER BY PIEZA, SUBPIEZA, CANTIDAD;

La consulta anterior incluye una expresin de tabla comn, identificada mediante


el nombre RPL, que expresa la pieza repetitiva de esta consulta. Ilustra los
elementos bsicos de una expresin de tabla comn recursiva.

El primer operando (seleccin completa) de la UNION, al que se hace referencia


como la seleccin completa de inicializacin, obtiene los hijos directos de la pieza 01.
La clusula FROM de esta seleccin completa hace referencia a la tabla fuente y
nunca se har referencia a s misma (RPL en este caso). El resultado de la primera
seleccin completa va a la expresin de tabla comn RPL (LISTA DE PIEZAS
recursiva). Como en este ejemplo, UNION debe ser siempre UNION ALL.

El segundo operando (seleccin completa) de UNION utiliza RPL para calcular las
subpiezas de subpiezas haciendo que la clusula FROM har referencia a la
expresin de tabla comn RPL y la tabla fuente con una unin de una pieza de la
tabla fuente (hija) a una subpieza del resultado actual contenido en RPL (padre). El
resultado vuelve a RPL de nuevo. El segundo operando de UNION se utiliza
entonces repetidamente hasta que ya no existan ms hijas.

SELECT DISTINCT de la seleccin completa principal de esta consulta, garantiza


que no aparezca en la lista la misma pieza/subpieza ms de una vez.

El resultado de la consulta es el siguiente:

Captulo 5. Consultas 577


expresin-tabla-comn

PIEZA SUBPIEZA CANTIDAD


-------- -------- -----------
01 02 2
01 03 3
01 04 4
01 06 3
02 05 7
02 06 6
03 07 6
04 08 10
04 09 11
05 10 10
05 11 10
06 12 10
06 13 10
07 12 8
07 14 8

Observe, en el resultado, que de la pieza 01 se pasa a la pieza 02, que a su vez


pasa a la 06, etc. Observe tambin que la pieza 06 se alcanza dos veces, una a
travs de 01 directamente y otra a travs de 02. En el resultado, sin embargo, los
subcomponentes slo aparecen una vez en la lista (es el resultado de utilizar
SELECT DISTINCT), tal como se requiere.

Es importante recordar que con las expresiones de tabla comunes recursivas puede
generarse un bucle infinito. En este ejemplo, se producira un bucle infinito si la
condicin de bsqueda del segundo operando que une las tablas madre e hija
tuviera esta codificacin:
SUBPIEZA.PADRE = SUBPIEZA.HIJA

Este ejemplo de bucle infinito es consecuencia de no codificar lo que se intenta


codificar. Sin embargo, debe extremar la precaucin al determinar qu es lo que se
ha de codificar, de forma que se consiga un final definitivo del ciclo de recurrencia.

El resultado de esta consulta de ejemplo puede producirse en un programa de


aplicacin sin utilizar una expresin de tabla comn recursiva. Sin embargo, ello
requerira iniciar una nueva consulta para cada nivel de repeticin. Adems, la
aplicacin necesita colocar de nuevo todos los resultados en la base de datos para
ordenar el resultado. Todo ello hace que la lgica de la aplicacin se complique y
que el funcionamiento no sea el esperado. La lgica de la aplicacin resulta an
ms complicada e ineficaz para consultas de otras listas de material, tales como
consultas resumidas y de explosin.

Ejemplo 2: Explosin resumida

El segundo ejemplo es una explosin resumida. La cuestin que se plantea aqu es


la cantidad total de cada pieza que se requiere para crear la pieza 01. La
diferencia principal de la explosin de un solo nivel es la necesidad de agregar las
cantidades. El primer ejemplo indica la cantidad de subpiezas necesarias para la
pieza siempre que se requiera. No indica cuntas de las subpiezas se necesitan
para crear la pieza 01.
WITH RPL (PART, SUBPART, QUANTITY) AS
(
SELECT PIEZA.RAIZ, SUBPIEZA.RAIZ, CANTIDAD.RAIZ
FROM LISTA DE PIEZAS RAIZ
WHERE PIEZA.RAIZ = 01
UNION ALL
SELECT PIEZA.PADRE, SUBPIEZA.HIJA, CANTIDAD.PADRE*CANTIDAD.HIJA
FROM RPL PADRE, LISTA DE PIEZAS HIJA
WHERE SUBPIEZA.PADRE = PIEZA.HIJA

578 Consulta de SQL - Volumen 1


expresin-tabla-comn

)
SELECT PIEZA, SUBPIEZA, SUM(CANTIDAD) AS "Cantidad total utilizada"
FROM RPL
GROUP BY PIEZA, SUBPIEZA
ORDER BY PIEZA, SUBPIEZA;

En la consulta anterior, la lista de seleccin del segundo operando de UNION en la


expresin de tabla comn recursiva, identificada mediante el nombre RPL, muestra
la agregacin de la cantidad. Para averiguar qu porcentaje de subpieza se utiliza,
la cantidad del elemento madre se multiplica por la cantidad por madre de una
hija. Si una pieza se utiliza varias veces en lugares diferentes, requerir otra
agregacin final. Esto se realiza por la agrupacin por la expresin de tabla comn
RPL y utilizando la funcin de columna SUM en la lista de seleccin de la
seleccin completa.

El resultado de la consulta es el siguiente:


PIEZA SUBPIEZA Cant tot usada
-------- -------- --------------
01 02 2
01 03 3
01 04 4
01 05 14
01 06 15
01 07 18
01 08 40
01 09 44
01 10 140
01 11 140
01 12 294
01 13 150
01 14 144

A la vista del resultado, considere la lnea de la subpieza 06. La cantidad total


utilizada, con valor 15, deriva de la cantidad de 3 directamente para la pieza 01 y
la cantidad de 6 para la pieza 02, que se necesita 2 veces en la pieza 01.

Ejemplo 3: Control de profundidad

Puede surgir la cuestin de qu es lo que ocurre cuando existen ms niveles de


piezas en la tabla de los que est interesado para su consulta. Es decir, cmo se
escribe una consulta para responder a la pregunta Cules son los dos primeros
niveles de piezas necesarias para crear la pieza identificada como 01? Por
cuestiones de claridad en el ejemplo, el nivel se incluye en el resultado.
WITH RPL (NIVEL, PIEZA, SUBPIEZA, CANTIDAD) AS
(
SELECT 1, PIEZA.RAIZ SUBPIEZA.RAIZ, CANTIDAD.RAIZ
FROM LISTA DE PIEZAS RAIZ
WHERE PIEZA.RAIZ = 01
UNION ALL
SELECT NIVEL+1.PADRE, PIEZA.HIJA, SUBPIEZA.HIJA, CANTIDAD.HIJA
FROM RPL PADRE, LISTA DE PIEZAS HIJA
WHERE SUBPIEZA.PADRE = PIEZA.HIJA
AND NIVEL.PADRE < 2
)
SELECT PIEZA, NIVEL, SUBPIEZA, CANTIDAD
FROM RPL;

Esta consulta es similar al ejemplo 1. La columna NIVEL se ha introducido para


contar los niveles desde la pieza original. En la seleccin completa de
inicializacin, el valor de la columna NIVEL se inicializa en 1. En la seleccin
completa subsiguiente, el nivel padre se incrementa en 1. A continuacin, para

Captulo 5. Consultas 579


expresin-tabla-comn

controlar el nmero de niveles del resultado, la segunda seleccin completa incluye


la condicin de que el nivel padre debe ser menor que 2. Esto garantiza que la
segunda seleccin completa slo procesar hijos en el segundo nivel.

El resultado de la consulta es como sigue:


PIEZA NIVEL SUBPIEZA CANTIDAD
-------- ----------- -------- -----------
01 1 02 2
01 1 03 3
01 1 04 4
01 1 06 3
02 2 05 7
02 2 06 6
03 2 07 6
04 2 08 10
04 2 09 11
06 2 12 10
06 2 13 10

clusula-update
 FOR UPDATE 
,

OF  nombre-columna

La clusula FOR UPDATE identifica las columnas que se pueden actualizar en una
sentencia UPDATE con posicin posterior. Cada nombre-columna debe estar sin
calificar y debe identificar una columna de la tabla o vista identificada en la
primera clusula FROM de la seleccin completa. Si la clusula FOR UPDATE se
especifica sin nombres de columna, se incluyen todas las columnas actualizables de
la tabla o vista identificadas en la primera clusula FROM de la seleccin
completa.

La clusula FOR UPDATE no puede utilizarse si es verdadera una de las siguientes


situaciones:
v El cursor asociado con la sentencia select no se puede suprimir .
v Una de las columnas seleccionadas no es una columna actualizable de una tabla
del catlogo y la clusula FOR UPDATE no se ha utilizado para excluir dicha
columna.

clusula-read-only
 FOR READ ONLY 
FETCH

La clusula FOR READ ONLY indica que la tabla resultante es de slo lectura y
que, por lo tanto, no se puede hacer referencia al cursor en las sentencias UPDATE
con posicin y DELETE. FOR FETCH ONLY tiene el mismo significado.

Algunas tablas resultantes son de slo lectura por naturaleza. (Por ejemplo, una
tabla basada en una vista de slo lectura.) Se puede seguir especificando FOR
READ ONLY para dichas tablas, pero la especificacin no surtir efecto.

580 Consulta de SQL - Volumen 1


clusula-read-only

Para las tablas resultantes en las que estn permitidas las actualizaciones y las
supresiones, la especificacin de FOR READ ONLY (o FOR FETCH ONLY)
posiblemente mejorar el rendimiento de las operaciones FETCH, ya que permite
al gestor de bases de datos realizar el bloqueo. Por ejemplo, en los programas que
contienen sentencias de SQL dinmico sin la clusula FOR READ ONLY ni ORDER
BY, el gestor de bases de datos puede abrir cursores como si hubiese especificado
la clusula FOR UPDATE. Por lo tanto, se recomienda utilizar la clusula FOR
READ ONLY para mejorar el rendimiento, excepto en los casos en que se utilizarn
las consultas en sentencias UPDATE o DELETE.

No se debe hacer referencia a una tabla resultante de slo lectura en una sentencia
UPDATE con posicin o DELETE, ya sea de slo lectura por naturaleza o
especificada como FOR READ ONLY (FOR FETCH ONLY).

clusula-optimize-for
 OPTIMIZE FOR entero ROWS 
ROW

La clusula OPTIMIZE FOR pide el proceso especial de la sentencia select. Si se


omite la clusula, se supone que se recuperarn todas las filas de la tabla
resultante; si se especifica, se supone que el nmero de filas recuperado
probablemente no exceder de n donde n es el valor de entero. El valor de n debe
ser un entero positivo. La utilizacin de la clusula OPTIMIZE FOR influye en la
optimizacin de la consulta basndose en la suposicin de que se recuperarn n
filas. Adems, cuando los cursores estn bloqueados, esta clusula afecta al nmero
de filas que se devuelven en cada bloque (es decir, no se devolvern ms de n filas
en cada bloque). Si se especifican la clusula-fetch-first y la clusula-optimize-for, se
utilizar el valor entero menor de estas clusulas para determinar el tamao del
almacenamiento intermedio de comunicaciones. Los valores se tienen en cuenta de
forma independiente por motivos de optimizacin.

Esta clusula no limita el nmero de filas que se pueden recuperar ni afecta al


resultado de ninguna otra manera que no sea en el rendimiento. La utilizacin de
OPTIMIZE FOR n ROWS puede mejorar el rendimiento si no se recuperan ms de
n filas, pero puede reducir el rendimiento si se recuperan ms de n filas.

Si el valor de n multiplicado por el tamao de la fila sobrepasa el tamao del


almacenamiento intermedio de comunicaciones, la clusula OPTIMIZE FOR no
tendr ningn efecto sobre los almacenamientos intermedios de los datos. El
tamao del almacenamiento intermedio de comunicaciones est definido por el
parmetro de configuracin RQRIOBLK o ASLHEAPSZ.

clusula-isolation
 
WITH RR
clusula-lock-request
RS
clusula-lock-request
CS
UR

Captulo 5. Consultas 581


clusula-isolation

La clusula-isolation, opcional, especifica el nivel de aislamiento en el que se ejecuta


la sentencia y si debe obtenerse un tipo de bloqueo determinado.
v RR - Lectura repetible
v RS - Estabilidad de lectura
v CS - Estabilidad del cursor
v UR - Lectura no confirmada
El nivel de aislamiento por omisin de la sentencia es el nivel de aislamiento del
paquete en el que est enlazada la sentencia. Cuando se utiliza un apodo en una
sentencia-seleccin para acceder a datos de fuentes de datos de la familia DB2 y de
Microsoft SQL Server, puede incluirse la clusula-isolation en la sentencia para
especificar el nivel de aislamiento de la misma. Si la clusula-isolation se incluye en
sentencias que acceden a otras fuentes de datos, el nivel de aislamiento
especificado se omite. El nivel de aislamiento actual del servidor federado se
correlaciona con el nivel de aislamiento correspondiente en la fuente de datos de
cada conexin a la fuente de datos. Tras establecer una conexin con una fuente de
datos, el nivel de aislamiento no puede modificarse a lo largo de la conexin.

clusula-lock-request
 USE AND KEEP SHARE LOCKS 
UPDATE
EXCLUSIVE

La clusula-lock-request, opcional, especifica el tipo de bloqueo que el gestor de


bases de datos debe conseguir y retener:
SHARE Los procesos simultneos pueden conseguir bloqueos SHARE o
UPDATE sobre los datos.
UPDATE Los procesos simultneos pueden conseguir bloqueos SHARE sobre
los datos pero ningn proceso simultneo puede conseguir un
bloqueo UPDATE o EXCLUSIVE.
EXCLUSIVE Los procesos simultneos no pueden conseguir un bloqueo sobre
los datos.

La clusula-lock-request se aplica a todas las exploraciones bsicas de tabla y de


ndice que la consulta necesita, incluidas aquellas contenidas en subconsultas,
funciones de SQL y mtodos de SQL. No tiene ningn efecto sobre los bloqueos
realizados por procedimientos, funciones externas o mtodos externos. Todas las
funciones de SQL o los mtodos de SQL invocados (directa o indirectamente) por
la sentencia deben crearse con INHERIT ISOLATION LEVEL WITH LOCK
REQUEST (SQLSTATE 42601). La clusula-lock-request no puede utilizarse con una
consulta de modificacin que pueda invocar a activadores o que necesite
comprobaciones de la integridad referencial (SQLSTATE 42601).

Ejemplos de una sentencia-select


Ejemplo 1: Seleccin de todas las columnas y filas de la tabla EMPLOYEE.
SELECT * FROM EMPLOYEE

Ejemplo 2: Seleccin del nombre del proyecto (PROJNAME), la fecha de inicio


(PRSTDATE) y la fecha de finalizacin (PRENDATE) de la tabla PROJECT.
Ordenacin de la tabla resultante por la fecha de finalizacin con las fechas ms
recientes primero.

582 Consulta de SQL - Volumen 1


Ejemplos de sentencia-select

SELECT PROJNAME, PRSTDATE, PRENDATE


FROM PROJECT
ORDER BY PRENDATE DESC

Ejemplo 3: Seleccin del nmero de departamento (WORKDEPT) y el salario


medio del departamento (SALARY) para todos los departamentos de la tabla
EMPLOYEE. Ordenacin la tabla resultante por orden ascendente por el salario
medio del departamento.
SELECT WORKDEPT, AVG(SALARY)
FROM EMPLOYEE
GROUP BY WORKDEPT
ORDER BY 2

Ejemplo 4: Declaracin de un cursor llamado UP_CUR para utilizarlo en un


programa C para actualizar las columnas de fecha de inicio (PRSTDATE) y de
fecha de finalizacin (PRENDATE) en la tabla PROJECT. El programa debe recibir
los dos valores junto con el valor de nmero del proyecto (PROJNO) para cada
fila.
EXEC SQL DECLARE UP_CUR CURSOR FOR
SELECT PROJNO, PRSTDATE, PRENDATE
FROM PROJECT
FOR UPDATE OF PRSTDATE, PRENDATE;

Ejemplo 5: Este ejemplo denomina a la expresin SAL+BONUS+COMM como


TOTAL_PAY
SELECT SALARY+BONUS+COMM AS TOTAL_PAY
FROM EMPLOYEE
ORDER BY TOTAL_PAY

Ejemplo 6: Determinacin del nmero de empleado y el salario de los


representantes de ventas junto con el salario medio y el nmero total de
empleados de sus departamentos. Tambin, listado del salario medio del
departamento con el salario medio ms alto.

La utilizacin de una expresin de tabla comn para este caso ahorra la actividad
de crear una vista DINFO como una vista normal. Durante la preparacin de la
sentencia, se evita el acceso al catlogo para la vista y, debido al contexto del resto
de la seleccin completa, slo se han de tener en cuenta las filas para el
departamento de representantes de ventas para la vista.
WITH
DINFO (DEPTNO, AVGSALARY, EMPCOUNT) AS
(SELECT OTHERS.WORKDEPT, AVG(OTHERS.SALARY), COUNT(*)
FROM EMPLOYEE OTHERS
GROUP BY OTHERS.WORKDEPT
),
DINFOMAX AS
(SELECT MAX(AVGSALARY) AS AVGMAX FROM DINFO)
SELECT THIS_EMP.EMPNO, THIS_EMP.SALARY,
DINFO.AVGSALARY, DINFO.EMPCOUNT, DINFOMAX.AVGMAX
FROM EMPLOYEE THIS_EMP, DINFO, DINFOMAX
WHERE THIS_EMP.JOB = SALESREP
AND THIS_EMP.WORKDEPT = DINFO.DEPTNO

Ejemplo 7: Dadas dos tablas, EMPLOYEE y PROJECT, sustitucin del empleado


SALLY por el nuevo empleado GEORGE, asignacin de todos los proyectos
controlados por SALLY a GEORGE y devolucin de los nombres de los proyectos
actualizados.

Captulo 5. Consultas 583


Ejemplos de sentencia-select

WITH
NEWEMP AS (SELECT EMPNO FROM NEW TABLE
(INSERT INTO EMPLOYEE(EMPNO, FIRSTNME)
VALUES(NEXT VALUE FOR EMPNO_SEQ, GEORGE))),
OLDEMP AS (SELECT EMPNO FROM EMPLOYEE WHERE FIRSTNME = SALLY),
UPPROJ AS (SELECT PROJNAME FROM NEW TABLE
(UPDATE PROJECT
SET RESPEMP = (SELECT EMPNO FROM NEWEMP)
WHERE RESPEMP = (SELECT EMPNO FROM OLDEMP))),
DELEMP AS (SELECT EMPNO FROM OLD TABLE
(DELETE FROM EMPLOYEE
WHERE EMPNO = (SELECT EMPNO FROM OLDEMP)))
SELECT PROJNAME FROM UPPROJ;

Ejemplo 8: Recuperacin de los datos de la tabla DEPT. Estos datos se actualizarn


ms tarde con una actualizacin buscada y deben estar bloqueados cuando se
ejecute la consulta.
SELECT DEPTNO, DEPTNAME, MGRNO
FROM DEPT
WHERE ADMRDEPT =A00
FOR READ ONLY WITH RS USE AND KEEP EXCLUSIVE LOCKS

Informacin relacionada:
v Sentencia DECLARE CURSOR en Consulta de SQL, Volumen 2
v Subseleccin en la pgina 530

584 Consulta de SQL - Volumen 1


Apndice A. Lmites de SQL y XQuery
Las tablas siguientes describen algunos lmites de SQL y XQuery. Si se ajusta al
caso ms restrictivo le servir de ayuda para disear programas de aplicacin que
sean porttiles.
Tabla 29. Lmites de longitud del identificador
Descripcin Mximo en bytes
Nombre de autorizacin (slo puede ser de caracteres de 30
un solo byte)
Nombre de restriccin 18
Nombre de correlacin 128
Nombre de cursor 18
Nombre de particin de datos 128
Nombre de fuente de datos 128
Nombre de programa externo 8
Nombre de correlacin de funciones 128
1
Identificador de sistema principal 255
Identificador de un usuario de fuente de datos 30
(nombre-autorizacin-remota)
Identificador en un procedimiento SQL (nombre de 128
condicin, para identificador de bucle, etiqueta, localizador
de conjunto de resultados, nombre de sentencia, nombre de
variable)
Nombre de etiqueta 128
Identificador de recursos uniforme (URI) de espacios de 1000
nombre
ID de versin del paquete 64
Nombre de parmetro 128
Contrasea para acceder a una fuente de datos 32
Nombre de punto de salvaguarda 128
Identificador de recursos uniforme (URI) de ubicacin de 1000
esquema XML
Nombre de esquema SQL2 30
Nombre de componente de etiqueta de seguridad 128
Nombre de etiqueta de seguridad 128
Nombre de poltica de seguridad 128
Nombre de servidor (alias de base de datos) 8
Nombre de condicin SQL 128
Nombre de variable SQL 128
Nombre de sentencia 18
Nombre del grupo de transformacin 18
Nombre de correlacin de tipos 18
Nombre de columna no calificado 30

Copyright IBM Corp. 1993, 2006 585


Lmites de SQL

Tabla 29. Lmites de longitud del identificador (continuacin)


Descripcin Mximo en bytes
Nombre de columna de fuente de datos no calificado 255
Nombre de ndice de fuente de datos no calificado 128
Nombre de tabla de fuente de datos no calificado 128
(nombre-tabla-remota)
Nombre de paquete no calificado 8
Nombre de alias no calificado, nombre de funcin, nombre 128
de ndice, nombre de mtodo, apodo, nombre de
procedimiento, nombre de secuencia, nombre especfico,
nombre de tabla o nombre de vista
Nombre de agrupacin de almacenamientos intermedios no 18
calificado, nombre de grupo de particiones de base de
datos, nombre de espacio de tabla, nombre de activador o
nombre de tipo
Nombre de derivador 128
Nombre de elemento XML, nombre de atributo o nombre 1000
de prefijo

Notas:
1. Los compiladores de lenguaje principal individuales pueden aplicar lmites ms
restrictivos a los nombres de variables.
2. El nombre de esquema SQL para un tipo definido por el usuario est limitado a 8
bytes.

Tabla 30. Lmites numricos


Descripcin Lmite
Valor SMALLINT mnimo 32 768
Valor SMALLINT mximo +32 767
Valor INTEGER ms pequeo 2 147 483 648
Valor INTEGER mximo +2 147 483 647
Valor BIGINT ms pequeo 9 223 372 036 854 775 808
Valor BIGINT mximo +9 223 372 036 854 775 807
Precisin decimal mxima 31
Valor DOUBLE mnimo 1,79769E+308
Valor DOUBLE mximo +1,79769E+308
Valor DOUBLE positivo mnimo +2,225E307
Valor DOUBLE negativo mximo 2,225E307
Valor REAL mnimo 3,402E+38
Valor REAL mximo +3,402E+38
Valor REAL positivo mnimo +1,175E37
Valor REAL negativo mximo 1,175E37

Tabla 31. Lmites de series


Descripcin Lmite
Longitud mxima de CHAR (en bytes) 254

586 Consulta de SQL - Volumen 1


Lmites de SQL

Tabla 31. Lmites de series (continuacin)


Descripcin Lmite
Longitud mxima de VARCHAR (en bytes) 32 672
Longitud mxima de LONG VARCHAR (en bytes) 32 700
Longitud mxima de CLOB (en bytes) 2 147 483 647
Longitud mxima de XML serializado (en bytes) 2 147 483 647
Longitud mxima de GRAPHIC (en caracteres de doble 127
byte)
Longitud mxima de VARGRAPHIC (en caracteres de 16 336
doble byte)
Longitud mxima de LONG VARGRAPHIC (en caracteres 16 350
de doble byte)
Longitud mxima de DBCLOB (en caracteres de doble byte) 1 073 741 823
Longitud mxima de BLOB (en bytes) 2 147 483 647
Longitud mxima de constante de caracteres 32 672
Longitud mxima de constante grfica 16 336
Longitud mxima de series de caracteres concatenadas 2 147 483 647
Longitud mxima de series grficas concatenadas 1 073 741 823
Longitud mxima de series binarias concatenadas 2 147 483 647
El nmero mximo de dgitos de constante hexadecimal 32 672
Instancia mayor de un objeto de una columna de tipo 1
estructurado durante la ejecucin (en gigabytes)
Tamao mximo de un comentario del catlogo (en bytes) 254

Tabla 32. Lmites de XML


Descripcin Lmite
Profundidad mxima de un documento XML (en niveles) 125
Tamao mximo de un documento de esquema XML (en 31.457.280
bytes)

Tabla 33. Lmites de fecha y hora


Descripcin Lmite
Valor DATE mnimo 0001-01-01
Valor DATE mximo 9999-12-31
Valor TIME mnimo 00:00:00
Valor TIME mximo 24:00:00
Valor TIMESTAMP mnimo 0001-01-01-00.00.00.000000
Valor TIMESTAMP mximo 9999-12-31-24.00.00.000000

Tabla 34. Lmites del gestor de bases de datos


Descripcin Lmite
Tablas y vistas
7
Nmero mximo de columnas en una tabla 1.012
1
Nmero mximo de columnas en una vista 5.000

Apndice A. Lmites de SQL y XQuery 587


Lmites de SQL

Tabla 34. Lmites del gestor de bases de datos (continuacin)


Descripcin Lmite
El nmero mximo de columnas en una vista o tabla de 5.000
fuente de datos a la que se hace referencia mediante un
apodo
Nmero mximo de columnas en una clave de distribucin5 500
Longitud mxima de una fila que incluye toda la actividad 32 677
general2 7
Nmero mximo de filas en una tabla no particionada por 128 x 1010
particin de base de datos
Nmero mximo de filas en una particin de datos por 128 x 1010
particin de base de datos
Tamao mximo de una tabla por particin de base de 512
datos en un espacio de tablas normal (en gigabytes)3 7
Tamao mximo de una tabla por particin de base de 16.384
datos en un espacio de tablas DMS grande (en gigabytes)7
Nmero mximo de particiones de datos para una sola 32 767
tabla
Nmero mximo de columnas de particionamiento de 16
tablas
Restricciones
El nmero mximo de restricciones en una tabla almacenamiento
Nmero mximo de columnas en una restriccin UNIQUE 64
(soportado a travs de un ndice UNIQUE)
Longitud mxima combinada de las columnas en una 8192
restriccin UNIQUE (soportada a travs de un ndice
UNIQUE, en bytes)9
Nmero mximo de columnas de referencia en una clave 64
fornea
Longitud mxima combinada de columnas de referencia en 8192
una clave fornea (en bytes)9
Longitud mxima de una especificacin de restriccin de 65 535
comprobacin (en bytes)
Activadores
Profundidad mxima en tiempo de ejecucin de activadores 16
en cascada
Tipos definidos por el usuario
El nmero mximo de atributos en un tipo estructurado 4082
ndices
Nmero mximo de ndices en una tabla 32 767 o almacenamiento
Nmero mximo de columnas en una clave de ndice 64
Longitud mxima de una clave de ndice que incluye toda tamaopginandice/4
la actividad general7 9
Longitud mxima de una parte de clave de ndice variable 1022 o almacenamiento
(en bytes)8
Tamao mximo de un ndice por particin de base de 16.384
datos en un espacio de tablas SMS (en gigabytes)7

588 Consulta de SQL - Volumen 1


Lmites de SQL

Tabla 34. Lmites del gestor de bases de datos (continuacin)


Descripcin Lmite
Tamao mximo de un ndice por particin de base de 512
datos en un espacio de tablas DMS normal (en gigabytes)7
Tamao mximo de un ndice por particin de base de 16.384
datos en un espacio de tablas DMS grande (en gigabytes)7
Tamao mximo de un ndice sobre datos XML por 2
particin de base de datos (en terabytes)
Longitud mxima de una parte de clave de ndice variable tamaopgina/4 - 207
de un ndice sobre datos XML (en bytes)7
SQL
Longitud total mxima de una sentencia de SQL (en bytes) 2 097 152
Nmero mximo de tablas de referencia en una sentencia almacenamiento
de SQL o una vista
Nmero mximo de referencias de variables del lenguaje 32 767
principal en una sentencia de SQL
Nmero mximo de constantes en una sentencia almacenamiento
7
Nmero mximo de elementos en una lista de seleccin 1.012
Nmero mximo de predicados en una clusula WHERE o almacenamiento
HAVING
Nmero mximo de columnas en una clusula GROUP BY7 1.012
Longitud total mxima de las columnas en una clusula 32 677
GROUP BY (en bytes)7
Nmero mximo de columnas en una clusula ORDER BY7 1.012
Longitud total mxima de las columnas en una clusula 32 677
ORDER BY (en bytes)7
Nivel mximo de anidamiento de subconsultas almacenamiento
El nmero mximo de subconsultas en una sola sentencia almacenamiento
7
Nmero mximo de valores en una operacin de insercin 1.012
Nmero mximo de clusulas SET en una sola operacin 1.012
de actualizacin7
Rutinas
Nmero mximo de parmetros en un procedimiento 32 767
Nmero mximo de parmetros en una funcin definida 90
por el usuario
Nmero mximo de niveles de anidamiento para rutinas 64
Aplicaciones
Nmero mximo de declaraciones de variables del lenguaje almacenamiento
principal en un programa precompilado3
Longitud mxima del valor de la variable del lenguaje 2 147 483 647
principal (en bytes)
Nmero mximo de cursores declarados en un programa almacenamiento
El nmero mximo de filas cambiadas en una unidad de almacenamiento
trabajo
El nmero mximo de cursores abiertos a la vez almacenamiento

Apndice A. Lmites de SQL y XQuery 589


Lmites de SQL

Tabla 34. Lmites del gestor de bases de datos (continuacin)


Descripcin Lmite
El nmero mximo de conexiones por proceso dentro de un 512
cliente DB2
El nmero mximo de localizadores LOB abiertos 32 100
simultneamente en una transaccin
Tamao mximo de una SQLDA (en bytes) almacenamiento
El nmero mximo de sentencias preparadas almacenamiento
Simultaneidad
Nmero mximo de usuarios simultneos de un servidor4 64 000
El nmero mximo de usuarios simultneos por instancia 64 000
El nmero mximo de aplicaciones simultneas por base de 60 000
datos
El nmero mximo de bases de datos por instancia en uso 256
simultneo
Supervisin
El nmero mximo de supervisores de sucesos activos 32
simultneamente
Seguridad
Nmero mximo de elementos en un componente de una 64
etiqueta de seguridad de conjunto de tipo o rbol
Nmero mximo de elementos en un componente de una 65 535
etiqueta de seguridad de matriz de tipos
Nmero mximo de componentes de etiqueta de seguridad 16
en una poltica de seguridad
Bases de datos
Nmero de particin de base de datos mximo 999
Espacios de tablas
El nmero mximo de espacios de tablas en una base de 32 768
datos
Nmero mximo de tablas en un espacio de tablas SMS 65 534
Tamao mximo de un espacio de tablas DMS normal (en 512
gigabytes) 3 7
Tamao mximo de un espacio de tablas DMS grande (en 16
terabytes) 3 7
Tamao mximo de un espacio de tablas DMS temporal (en 16
terabytes) 3
Nmero mximo de objetos de tabla en un espacio de 51 000
tablas DMS6
Nmero mximo de vas de acceso de almacenamiento en 128
una base de datos de almacenamiento automtica
Longitud mxima de una va de acceso de almacenamiento 175
que se asocia con una base de datos de almacenamiento
automtica (en bytes)
Agrupaciones de almacenamientos intermedios
Valor mximo de NPAGES en una agrupacin de 1 048 576
almacenamientos intermedios para emisiones de 32 bits

590 Consulta de SQL - Volumen 1


Lmites de SQL

Tabla 34. Lmites del gestor de bases de datos (continuacin)


Descripcin Lmite
Valor mximo de NPAGES en una agrupacin de 2 147 483 647
almacenamientos intermedios para emisiones de 64 bits
Tamao total mximo de todas las ranuras de 2 147 483 646
almacenamientos intermedios de memoria (4K)

Notas:
1. Este mximo puede conseguirse utilizando una unin en la sentencia CREATE VIEW.
La seleccin de dicha vista est sujeta al lmite del nmero mximo de elementos de
una lista de seleccin.
2. Los datos reales para las columnas BLOB, CLOB, LONG VARCHAR, DBCLOB y LONG
VARGRAPHIC no se incluyen en esta cuenta. Sin embargo, la informacin acerca de la
ubicacin de los datos ocupa espacio en la fila.
3. Los nmeros mostrados son lmites y aproximaciones arquitectnicos. En la prctica los
lmites pueden ser menores.
4. El valor real ser el valor del parmetro de configuracin MAXAGENTS.
5. Es un lmite de arquitectura. El lmite en la mayora de las columnas de una clave de
ndice debe utilizarse como el lmite prctico.
6. Los objetos de tabla incluyen datos, ndices, columnas LONG VARCHAR o
VARGRAPHIC y columnas LOB. Los objetos de tabla que estn en el mismo espacio de
tablas que los datos de tabla no cuentan como adicionales respecto al lmite. No
obstante, cada objeto de tabla que est en un espacio de tablas diferente de los datos de
tabla representa uno respecto al lmite para cada tipo de objeto de tabla por tabla en el
espacio de tablas en que reside el objeto de tabla.
7. Para ver los valores relativos al tamao, consulte la Tabla 35.
8. Est limitado solamente por la clave de ndice ms larga que incluye toda la actividad
general (en bytes). A medida que aumenta el nmero de partes de claves de ndice,
disminuye la longitud mxima de cada parte de clave.
9. El mximo puede ser inferior, segn las opciones del ndice.

Tabla 35. Lmites especficos de tamao de pgina del gestor de bases de datos
Lmite de Lmite de
Lmite de Lmite de tamao de tamao de
tamao de tamao de pgina de pgina de
Descripcin pgina de 4K pgina de 8K 16K 32K
Nmero mximo de 500 1.012 1.012 1.012
columnas en una tabla
Longitud mxima de una 4.005 8.101 16 293 32 677
fila que incluye toda la
actividad general
Tamao mximo de una 64 128 256 512
tabla por particin de base
de datos en un espacio de
tablas normal (en gigabytes)
Tamao mximo de una 2048 4096 8192 16.384
tabla por particin de base
de datos en un espacio de
tablas grande (en gigabytes)
Longitud mxima de la 1024 2048 4096 8192
clave de ndice que incluye
toda la actividad general (en
bytes)

Apndice A. Lmites de SQL y XQuery 591


Lmites de SQL

Tabla 35. Lmites especficos de tamao de pgina del gestor de bases de


datos (continuacin)
Lmite de Lmite de
Lmite de Lmite de tamao de tamao de
tamao de tamao de pgina de pgina de
Descripcin pgina de 4K pgina de 8K 16K 32K
Tamao mximo de un 2048 4096 8192 16.384
ndice por particin de base
de datos en un espacio de
tablas SMS (en gigabytes)
Tamao mximo de un 64 128 256 512
ndice por particin de base
de datos en un espacio de
tablas DMS normal (en
gigabytes)
Tamao mximo de un 2048 4096 8192 16.384
ndice por particin de base
de datos en un espacio de
tablas DMS grande (en
gigabytes)
Tamao mximo de un 2 2 2 2
ndice sobre datos XML por
particin de base de datos
(en terabytes)
Tamao mximo de un 64 128 256 512
espacio de tablas DMS
normal (en gigabytes)
Tamao mximo de un 2048 4096 8192 16.384
espacio de tablas DMS
grande (en gigabytes)
Nmero mximo de 500 1.012 1.012 1.012
elementos en una lista de
seleccin
El nmero mximo de 500 1.012 1.012 1.012
columnas en una clusula
GROUP BY
Longitud total mxima de 4.005 8.101 16 293 32 677
las columnas en una
clusula GROUP BY (en
bytes)
El nmero mximo de 500 1.012 1.012 1.012
columnas en una clusula
ORDER BY
Longitud total mxima de 4.005 8.101 16 293 32 677
las columnas en una
clusula ORDER BY (en
bytes)
Nmero mximo de valores 500 1.012 1.012 1.012
de una operacin de
insercin
Nmero mximo de 500 1.012 1.012 1.012
clusulas SET en una sola
sentencia de actualizacin

592 Consulta de SQL - Volumen 1


Lmites de SQL

Informacin relacionada:
v maxagents - Maximum number of agents configuration parameter en
Performance Guide

Apndice A. Lmites de SQL y XQuery 593


Lmites de SQL

594 Consulta de SQL - Volumen 1


Apndice B. SQLCA (rea de comunicaciones SQL)
Una SQLCA es un conjunto de variables que se actualiza al final de la ejecucin de
cada sentencia de SQL. Un programa que contiene sentencias de SQL ejecutables y
se precompila con la opcin LANGLEVEL SAA1 (el valor por omisin) o MIA
debe proporcionar exactamente una SQLCA, aunque es posible que exista ms de
una SQLCA por paso en una aplicacin de mltiples pasos.

Cuando se precompila un programa con la opcin LANGLEVEL SQL92E, puede


declararse una variable SQLCODE o SQLSTATE en la seccin de declaracin SQL o
se puede declarar una variable SQLCODE en algn otro lugar del programa.

No se debe proporcionar ninguna SQLCA cuando se utiliza LANGLEVEL SQL92E.


La sentencia de SQL INCLUDE puede utilizarse para proporcionar la declaracin
de la SQLCA en todos los lenguajes excepto en REXX. La SQLCA se proporciona
automticamente en REXX.

Para visualizar la SQLCA despus de cada mandato ejecutado a travs del


procesador de lnea de mandatos, utilice el mandato db2 -a. La SQLCA se
proporciona como parte de la salida para los mandatos posteriores. La SQLCA
tambin se vuelca en el archivo db2diag.log.

Descripcin de los campos de la SQLCA


Tabla 36. Campos de la SQLCA. Los nombres de los campos que se muestran son aquellos
presentes en una SQLCA obtenida mediante una sentencia INCLUDE.
Nombre Tipo de datos Valores de campos
sqlcaid CHAR(8) Una indicacin visual para los vuelcos de almacenamiento
que contienen la 'SQLCA'. El sexto byte es 'L' si el nmero
de lnea devuelto procede del anlisis sintctico del cuerpo
de un procedimiento SQL.
sqlcabc INTEGER Contiene la longitud de la SQLCA, 136.
sqlcode INTEGER Contiene el cdigo de retorno SQL.
Cdigo Significado
0 Ejecucin satisfactoria (aunque pueden haberse
establecido uno o varios indicadores SQLWARN).
positivo
Ejecucin satisfactoria, pero con una condicin de
aviso.
negativo
Condicin de error.
sqlerrml SMALLINT Indicador de longitud para sqlerrmc, en el rango de 0 a 70.
0 significa que el valor de sqlerrmc no es relevante.

Copyright IBM Corp. 1993, 2006 595


Descripciones de los campos de la SQLCA

Tabla 36. Campos de la SQLCA (continuacin). Los nombres de los campos que se
muestran son aquellos presentes en una SQLCA obtenida mediante una sentencia
INCLUDE.
Nombre Tipo de datos Valores de campos
sqlerrmc VARCHAR Contiene uno o ms smbolos, separados por X'FF', que
(70) sustituyen a las variables en las descripciones de las
condiciones de error.

Este campo tambin se utiliza cuando se establece una


conexin satisfactoria.

Cuando se emite una sentencia de SQL compuesta NOT


ATOMIC, puede contener informacin acerca de un
mximo de siete errores.

El ltimo smbolo puede ir seguido de X'FF'. El valor


sqlerrml incluir los X'FF' de cola existentes.
sqlerrp CHAR(8) Empieza con un identificador de tres letras que indica el
producto, seguido de cinco dgitos indicando la versin,
release y nivel de modificacin del producto. Por ejemplo,
SQL09010 significa DB2 V9.1 (versin 9, release 1, nivel de
modificacin 0).

Si SQLCODE indica una condicin de error, este campo


identifica el mdulo que ha devuelto el error.

Este campo tambin se utiliza cuando se establece una


conexin satisfactoria.
sqlerrd ARRAY Seis variables INTEGER que proporcionan informacin de
diagnstico. Generalmente, estos valores estn vacos si no
hay errores, excepto sqlerrd(6) de una base de datos
particionada.
sqlerrd(1) INTEGER Si se invoca la conexin y es satisfactoria, contiene la
diferencia mxima esperada en la longitud de los datos de
caracteres mixtos (tipos de datos CHAR) cuando se
convierten a la pgina de cdigos de la base de datos de la
pgina de cdigos de la aplicacin. Un valor de 0 1
indica sin expansin; un valor mayor que 1 indica una
posible expansin en longitud; un valor negativo indica
una posible contraccin.

Cuando un procedimiento SQL termina satisfactoriamente


su ejecucin, este campo contiene el valor del estado de
retorno del procedimiento SQL.
sqlerrd(2) INTEGER Si se invoca la conexin y es satisfactoria, contiene la
diferencia mxima esperada en la longitud de datos de
caracteres mixtos (tipos de datos CHAR) cuando se
convierten a la pgina de cdigos de la aplicacin de la
pgina de cdigos de la base de datos. Un valor de 0 1
indica sin expansin; un valor mayor que 1 indica una
posible expansin en longitud; un valor negativo indica
una posible contraccin. Si la SQLCA es el resultado de una
sentencia de SQL compuesta NOT ATOMIC que ha
encontrado uno o varios errores, el valor se establece en el
nmero de sentencias que han fallado.

596 Consulta de SQL - Volumen 1


Descripciones de los campos de la SQLCA

Tabla 36. Campos de la SQLCA (continuacin). Los nombres de los campos que se
muestran son aquellos presentes en una SQLCA obtenida mediante una sentencia
INCLUDE.
Nombre Tipo de datos Valores de campos
sqlerrd(3) INTEGER Si se invoca PREPARE y la operacin es satisfactoria,
contiene una estimacin del nmero de filas que se
devolvern. Despus de INSERT, UPDATE, DELETE o
MERGE, contiene el nmero real de filas que estaban
cualificadas para la operacin. Si se invoca SQL compuesto,
contiene una acumulacin de todas las filas de
subsentencia. Si se invoca CONNECT, contiene 1 si la base
de datos se puede actualizar, o 2 si la base de datos es de
slo lectura.

Si se invoca la sentencia OPEN y el cursor contiene


sentencias de cambio de datos de SQL, este campo contiene
la suma del nmero de filas cualificadas para las
operaciones incorporadas de insercin, actualizacin,
supresin o fusin.

Si se invoca CREATE PROCEDURE para un procedimiento


SQL y se detecta un error durante el anlisis del cuerpo del
procedimiento SQL, contiene el nmero de lnea donde se
encontr el error. El sexto byte de sqlcaid debe ser L para
que este valor sea un nmero de lnea vlido.
sqlerrd(4) INTEGER Si se invoca PREPARE y es satisfactoria, contiene una
estimacin del coste relativo de los recursos necesarios para
procesar la sentencia. Si se invoca SQL compuesto, contiene
una cuenta del nmero de subsentencias satisfactorias. Si se
invoca CONNECT, contiene 0 para una confirmacin en
una fase de un cliente de nivel inferior; 1 para una
confirmacin de una fase; 2 para confirmacin de slo
lectura de una fase; y 3 para una confirmacin de dos fases.
sqlerrd(5) INTEGER Contiene el nmero total de filas suprimidas, insertadas o
actualizadas como resultado de:
v La imposicin de las restricciones despus de una
operacin de supresin satisfactoria
v El proceso de sentencias de SQL activadas por
activadores activados.
Si se invoca SQL compuesto, contiene una acumulacin del
nmero de dichas filas para todas las subsentencias. En
algunos casos cuando se encuentra un error, este campo
contiene un valor negativo que es un puntero de un error
interno. Si se invoca CONNECT, contiene el valor de tipo
de autentificacin 0 para una autentificacin de servidor; 1
para la autentificacin de cliente; 2 para la autentificacin
utilizando DB2 Connect; 4 para autentificacin
SERVER_ENCRYPT; 5 para autentificacin utilizando DB2
Connect con cifrado; 7 para autentificacin KERBEROS; 9
para autentificacin GSSPLUGIN; 11 para autentificacin
DATA_ENCRYPT, y 255 para autentificacin sin especificar.

Apndice B. SQLCA (rea de comunicaciones SQL) 597


Descripciones de los campos de la SQLCA

Tabla 36. Campos de la SQLCA (continuacin). Los nombres de los campos que se
muestran son aquellos presentes en una SQLCA obtenida mediante una sentencia
INCLUDE.
Nombre Tipo de datos Valores de campos
sqlerrd(6) INTEGER Para una base de datos particionada, contiene el nmero de
particin de la particin de base de datos que ha
encontrado el error o aviso. Si no se han encontrado errores
ni avisos, este campo contiene el nmero de particin del
coordinador. El nmero de este campo es igual al
especificado para la particin de base de datos del archivo
db2nodes.cfg.
sqlwarn Matriz Un conjunto de indicadores de aviso, que contiene cada
uno un blanco o W. Si se invoca SQL compuesto, contiene
una acumulacin de indicadores de aviso establecidos para
todas las subsentencias.
sqlwarn0 CHAR(1) Espacio en blanco si todos los dems indicadores estn en
blanco; contiene una W si como mnimo otro indicador no
est en blanco.
sqlwarn1 CHAR(1) Contiene una W si el valor de una columna de serie se ha
truncado cuando se ha asignado a una variable del
lenguaje principal. Contiene una N si el terminador nulo
se ha truncado. Contiene una A si la operacin
CONNECT o ATTACH se realiza satisfactoriamente y el
nombre de autorizacin de la conexin tiene ms de 8
bytes. Contiene una P si el coste estimado relativo de la
sentencia PREPARE de sqlerrd(4) sobrepasaba el valor que
poda almacenarse en un INTEGER o era menor que 1 y el
registro especial CURRENT EXPLAIN MODE o CURRENT
EXPLAIN SNAPSHOT se ha establecido en un valor
distinto de NO.
sqlwarn2 CHAR(1) Contiene una W si los valores nulos se han eliminado del
argumento de una funcin de columna. a

Si se invoca CONNECT y se ejecuta satisfactoriamente,


contiene una D si la base de datos se encuentra
inmovilizada o I si la instancia se encuentra inmovilizada.
sqlwarn3 CHAR(1) Contiene una W si el nmero de columnas no es igual al
nmero de variables del lenguaje principal. Contiene una
Z si el nmero de localizadores del conjunto de resultados
especificado en la sentencia ASSOCIATE LOCATORS es
menor que el nmero de conjuntos de resultados devuelto
por un procedimiento.
sqlwarn4 CHAR(1) Contiene una W si una sentencia UPDATE o DELETE
preparada no incluye una clusula WHERE.
sqlwarn5 CHAR(1) Contiene una E si se ha tolerado un error durante la
ejecucin de la sentencia de SQL.
sqlwarn6 CHAR(1) Contiene una W si se ha ajustado el resultado del clculo
de una fecha para evitar una fecha imposible.
sqlwarn7 CHAR(1) Reservado para su utilizacin en el futuro.

Si se invoca CONNECT y se ejecuta satisfactoriamente,


contiene una E si el parmetro de configuracin
DYN_QUERY_MGMT de la base de datos est habilitado.
sqlwarn8 CHAR(1) Contiene una W si el carcter que no se ha podido
convertir se ha sustituido por un carcter de sustitucin.

598 Consulta de SQL - Volumen 1


Descripciones de los campos de la SQLCA

Tabla 36. Campos de la SQLCA (continuacin). Los nombres de los campos que se
muestran son aquellos presentes en una SQLCA obtenida mediante una sentencia
INCLUDE.
Nombre Tipo de datos Valores de campos
sqlwarn9 CHAR(1) Contiene una W si se han pasado por alto las expresiones
aritmticas que contienen errores durante el proceso de
funcin de columna.
sqlwarn10 CHAR(1) Contiene una W si ha habido un error de conversin al
convertir un valor de datos de caracteres de uno de los
campos de la SQLCA.
sqlstate CHAR(5) Un cdigo de retorno que indica el resultado de la
sentencia de SQL ejecutada ms recientemente.
a
Es posible que algunas funciones no establezcan SQLWARN2 en W aunque se hayan
eliminado los valores nulos, porque el resultado no dependa de la eliminacin de dichos
valores.

Informe de errores
El orden en que se informa de los errores es el siguiente:
1. Las condiciones de error graves siempre se informan. Cuando se informa de un
error grave, no hay ninguna adicin a la SQLCA.
2. Si no se produce ningn error grave, un error de punto muerto tiene prioridad
sobre los dems errores.
3. En el resto de errores, se devuelve la SQLCA para el primer cdigo SQL
negativo.
4. Si no se detecta ningn cdigo SQL negativo, se devuelve la SQLCA para el
primer aviso (es decir, cdigo SQL positivo).
En un sistema de base de datos particionada, se produce una excepcin a esta
norma si se invoca una operacin de manipulacin de datos en una tabla que
est vaca en una particin de base de datos, pero que tiene datos en otras
particiones de base de datos. Slo se devuelve SQLCODE +100 a la aplicacin
si los agentes de todas las particiones devuelven SQL0100W, porque la tabla
est vaca en todas las particiones de base de datos o porque no hay ms filas
que cumplan la clusula WHERE de una sentencia UPDATE.

Utilizacin de SQLCA en sistemas de bases de datos particionadas


En sistemas de bases de datos particionadas, una sentencia de SQL pueden
ejecutarla varios agentes de distintas particiones de base de datos y cada agente
puede devolver una SQLCA distinta para diferentes errores o avisos. El agente
coordinador tambin tiene su propia SQLCA.

Para proporcionar una vista coherente para las aplicaciones, todos los valores de
SQLCA se fusionan en una estructura y los campos de SQLCA indican cuentas
globales como, por ejemplo:
v Para todos los errores y avisos, el campo sqlwarn contiene los distintivos de
aviso recibidos de todos los agentes.
v Los valores de los campos sqlerrd que indican cuentas de fila son acumulaciones
de todos los agentes.

Observe que es posible que no se devuelva SQLSTATE 09000 cada vez que se
produzca un error durante el proceso de una sentencia de SQL activada.

Apndice B. SQLCA (rea de comunicaciones SQL) 599


600 Consulta de SQL - Volumen 1
Apndice C. SQLDA (rea de descriptores de SQL)
Una SQLDA es un conjunto de variables que son necesarias para la ejecucin de la
sentencia de SQL DESCRIBE. Las variables SQLDA son opciones que las sentencias
PREPARE, OPEN, FETCH y EXECUTE pueden utilizar. Una SQLDA se comunica
con SQL dinmico; puede utilizarse en una sentencia DESCRIBE, modificarse con
las direcciones de las variables del lenguaje principal y despus volverse a utilizar
en una sentencia FETCH o EXECUTE.

Se da soporte a SQLDA para todos los lenguajes, pero slo se proporcionan


declaraciones predefinidas para C, REXX, FORTRAN y COBOL.

El significado de la informacin de una SQLDA depende de su utilizacin. En


PREPARE y DESCRIBE, una SQLDA proporciona informacin para un programa
de aplicacin acerca de una sentencia preparada. En OPEN, EXECUTE y FETCH,
una SQLDA describe las variables del lenguaje principal.

En DESCRIBE y PREPARE, si cualquiera de las columnas que se describen es de


tipo LOB (los localizadores de LOB y las variables de referencia de archivo no
necesitan doblar las SQLDA), de tipo de referencia o un tipo definido por el
usuario, el nmero de entradas de SQLVAR para la SQLDA completa se doblar.
Por ejemplo:
v Cuando se describe una tabla con 3 columnas VARCHAR y 1 columna
INTEGER, habrn 4 entradas SQLVAR
v Cuando se describe una tabla con 2 columnas VARCHAR, 1 columna CLOB y 1
columna de enteros, habrn 8 entradas SQLVAR

En EXECUTE, FETCH y OPEN, si cualquiera de las variables que se describen es


de tipo LOB (los localizadores de LOB y las variables de referencia de archivos no
necesitan doblar las SQLDA), de tipo estructurado, el nmero de entradas de
SQLVAR para la SQLDA completa debe doblarse. (Estos casos no son aplicables a
los tipos diferenciados ni a los tipos de referencia, porque la base de datos no
necesita la informacin adicional que proporcionan las entradas dobles).

Descripcin de los campos de la SQLDA


Una SQLDA consta de cuatro variables seguidas de un nmero arbitrario de
ocurrencias de una secuencia de variables llamadas en conjunto SQLVAR. En
OPEN, FETCH y EXECUTE, cada ocurrencia de SQLVAR describe una variable del
lenguaje principal. En DESCRIBE y PREPARE, cada ocurrencia de SQLVAR
describe una columna de una tabla resultante o un marcador de parmetros. Hay
dos tipos de entradas SQLVAR:
v SQLVAR base: Estas entradas siempre estn presentes. Contienen la informacin
base acerca de la columna, el marcador de parmetros o la variable del lenguaje
principal como, por ejemplo, el cdigo del tipo de datos, el atributo de longitud,
el nombre de la columna, la direccin de la variable del lenguaje principal y la
direccin de la variable indicadora.
v SQLVAR secundarias: Estas entradas slo estn presentes si el nmero de
entradas SQLVAR se dobla por las reglas indicadas arriba. Para los tipos
definidos por el usuario (diferenciado o estructurado), contienen el nombre del
tipo definido por el usuario. Para los tipos de referencia, contienen el tipo de
destino de la referencia. Para los LOB, contienen el atributo de longitud de la

Copyright IBM Corp. 1993, 2006 601


Descripcin de los campos de la SQLDA

variable del lenguaje principal y un puntero que indica el almacenamiento


intermedio que contiene la longitud real. (La informacin de tipo diferenciado y
de LOB no se solapa, por lo que los tipos diferenciados pueden estar basados en
LOB sin hacer que se triplique el nmero de entradas de SQLVAR en
DESCRIBE). Si se utilizan localizadores o variables de referencia a archivos para
representar los LOB, estas entradas no son necesarias.
En las SQLDA que contienen ambos tipos de entradas, las SQLVAR base estn en
un bloque antes del bloque de SQLVAR secundarias. En cada una, el nmero de
entradas es igual al valor de SQLD (incluso aunque muchas de las entradas
SQLVAR secundarias pueden estar sin utilizar).

Las circunstancias bajo las que DESCRIBE establece las entradas SQLVAR se
detallan en el apartado Efecto de DESCRIBE en la SQLDA en la pgina 606.

Campos en la cabecera SQLDA


Tabla 37. Campos en la cabecera SQLDA
Uso en DESCRIBE y PREPARE Uso en FETCH, OPEN y EXECUTE
Tipo de datos (establecido por el gestor de bases de (establecido por la aplicacin antes de
Nombre C SQL datos excepto para SQLN) ejecutar la sentencia)
sqldaid CHAR(8) El sptimo byte de este campo es un byte El sptimo byte de este campo se utiliza
de distintivo llamado SQLDOUBLED. El cuando se dobla el nmero de SQLVAR.
gestor de bases de datos establece Se denomina SQLDOUBLED. Si alguna de
SQLDOUBLED en el carcter 2 si se han las variables del lenguaje principal que se
creado dos entradas SQLVAR para cada describen es un tipo estructurado, BLOB,
columna; de lo contrario, se establece en CLOB o DBCLOB, el sptimo byte debe
un blanco (X'20' en ASCII, X'40' en establecerse en el carcter 2; en otro caso
EBCDIC). Consulte el apartado Efecto de puede establecerse en cualquier carcter,
DESCRIBE en la SQLDA en la pgina pero es aconsejable utilizar un espacio en
606 para ver los detalles de cundo se blanco.
establece SQLDOUBLED.
sqldabc INTEGER Para 32 bits, la longitud de la SQLDA, Para 32 bits, la longitud de la SQLDA,
que es igual a SQLN*44+16. Para 64 bits, que es >= SQLN*44+16. Para 64 bits, la
la longitud de la SQLDA, que es igual a longitud de la SQLDA, que es >=
SQLN*56+16 SQLN*56+16.
sqln SMALLINT Sin cambiar por el gestor de bases de El nmero total de ocurrencias de
datos. Debe estar establecido en un valor SQLVAR proporcionadas en la SQLDA.
mayor o igual que cero antes de que se SQLN debe estar establecido en un valor
ejecute la sentencia DESCRIBE. Indica el mayor o igual que cero.
nmero total de ocurrencias de SQLVAR.
sqld SMALLINT Establecido por el gestor de bases de El nmero de variables del lenguaje
datos en el nmero de columnas de la principal descritas por las ocurrencias de
tabla resultante o en el nmero de SQLVAR.
marcadores de parmetros.

602 Consulta de SQL - Volumen 1


Campos de una ocurrencia de una SQLVAR base

Campos de una ocurrencia de una SQLVAR base


Tabla 38. Campos en una SQLVAR base
Nombre Tipo de datos Uso en DESCRIBE y PREPARE Uso en FETCH, OPEN y EXECUTE
sqltype SMALLINT Indica el tipo de datos de la columna o el Igual que para la variable del lenguaje
marcador de parmetros y si puede principal. Las variables del lenguaje
contener nulos. (Los marcadores de principal para los valores de fecha y hora
parmetros siempre se consideran deben ser variables de serie de caracteres.
anulables.) Tabla 40 en la pgina 607 lista Para FETCH, un cdigo de tipo de fecha y
todos los valores permitidos y sus hora significa una serie de caracteres de
significados. longitud fija. Si sqltype es un valor de
nmero par, se ignora el campo sqlind.
Observe que para un tipo de referencia
diferenciado, el tipo de datos del tipo base
se coloca en este campo. Para un tipo
estructurado, el tipo de datos del
resultado de la funcin de transformacin
FROM SQL del grupo de transformacin
(basado en el registro especial CURRENT
DEFAULT TRANSFORM GROUP) se
coloca en este campo. No existe ninguna
indicacin en la SQLVAR base de que
forma parte de la descripcin de un tipo
definido por el usuario o tipo de
referencia.
sqllen SMALLINT El atributo de longitud de la columna o el El atributo de longitud de la variable del
marcador de parmetros. Para columnas y lenguaje principal. Vase Tabla 40 en la
marcadores de parmetros de fecha y pgina 607.
hora, la longitud de la representacin de
serie de los valores. Vase Tabla 40 en la Observe que el gestor de bases de datos
pgina 607. ignora el valor para las columnas CLOB,
DBCLOB y BLOB. Se utiliza el campo
Observe que el valor est establecido en 0 len.sqllonglen de la SQLVAR secundaria
para las series de objeto grande (incluso en su lugar.
para aquellas cuyo atributo de longitud
sea lo suficientemente pequeo como para
caber en un entero de dos bytes).
sqldata puntero En las SQLVAR de series, sqldata contiene Contiene la direccin de la variable del
la pgina de cdigos. En las SQLVAR de lenguaje principal (donde se almacenarn
serie-caracteres, si la columna est los datos ledos).
definida con el atributo FOR BIT DATA,
sqldata contiene 0. En otras SQLVAR de
series-caracteres, sqldata contiene la
pgina de cdigos SBCS, para datos SBCS,
o la pgina de cdigos SBCS asociada a la
pgina de cdigos MBCS compuesta, para
datos MBCS. Para las SQLVAR de series
de caracteres de japons EUC, chino
tradicional EUC e Unicode UTF-8,sqldata
contiene 954, 964 y 1208, respectivamente.

Para todos los tipos de columna, sqldata


es indefinido.

Apndice C. SQLDA (rea de descriptores de SQL) 603


Campos de una ocurrencia de una SQLVAR base

Tabla 38. Campos en una SQLVAR base (continuacin)


Nombre Tipo de datos Uso en DESCRIBE y PREPARE Uso en FETCH, OPEN y EXECUTE
sqlind puntero En las SQLVAR de series-caracteres, sqlind Contiene la direccin de una variable
contiene 0, excepto para los datos MBCS, indicadora asociada si existe una; de lo
si sqlind contiene la pgina de cdigos contrario, no se utiliza. Si sqltype es un
DBCS asociada con la pgina de cdigos valor de nmero par, se ignora el campo
MBCS compuesta. sqlind.

Para el resto de tipos, sqlind no est


definido.
sqlname VARCHAR Contiene el nombre no calificado de la Cuando se conecta a una base de datos
(30) columna o el marcador de parmetros. del sistema principal, se puede establecer
sqlname para que indique una serie FOR
Para columnas y marcadores de BIT DATA de la forma siguiente:
parmetros que tengan el nombre
v El sexto byte del SQLDAID en la
generado por el sistema, el byte nmero
cabecera SQLDA se ha establecido en
trece se establece en X'FF'. Para los
+
nombres de columna especificados por la
clusula AS, el byte es X'00'. v La longitud de sqlname es 8
v Los dos primeros bytes de sqlname son
X'0000'
v El tercer y cuarto byte de sqlname son
X'0000'
v Los cuatro bytes restantes de sqlname
estn reservados y deben establecerse
en X'00000000'

Cuando se trabaja con datos XML, se


puede establecer sqlname para que
indique un subtipo XML de la forma
siguiente:
v La longitud de sqlname es 8
v Los dos primeros bytes de sqlname son
X'0000'
v El tercer y cuarto byte de sqlname son
X'0000'
v El quinto byte de sqlname es X'01'
v Los tres bytes restantes de sqlname
estn reservados y deben establecerse
en X'000000'

Campos de una ocurrencia de una SQLVAR secundaria


Tabla 39. Campos en una SQLVAR secundaria
Uso en DESCRIBE y
Nombre Tipo de datos PREPARE Uso en FETCH, OPEN y EXECUTE
len.sqllonglen INTEGER El atributo de longitud de El atributo de longitud de una
una columna o marcador de variable del lenguaje principal BLOB,
parmetros de BLOB, CLOB CLOB o DBCLOB. El gestor de bases
o DBCLOB. de datos pasa por alto el campo
SQLLEN de la SQLVAR base para los
tipos de datos. El atributo de
longitud almacena el nmero de
bytes para BLOB o CLOB y el
nmero de caracteres de doble byte
para DBCLOB.

604 Consulta de SQL - Volumen 1


Campos de una ocurrencia de una SQLVAR secundaria

Tabla 39. Campos en una SQLVAR secundaria (continuacin)


Uso en DESCRIBE y
Nombre Tipo de datos PREPARE Uso en FETCH, OPEN y EXECUTE
reservado2 CHAR(3) para 32 No utilizado. No utilizado.
bits, y CHAR(11)
para 64 bits.
sqlflag4 CHAR(1) El valor es X01 si la Se establece en X01 si la SQLVAR
SQLVAR representa un tipo representa un tipo de referencia con
de referencia con un tipo de un tipo de destino mencionado en
destino denominado en nombre_tipodatosSQL. El valor es
sqldatatype_name. El valor X12 si SQLVAR representa un tipo
es X12 si SQLVAR estructurado, y
representa un tipo nombre_tipodatosSQL contiene el
estructurado, y nombre del tipo definido por el
nombre_tipodatosSQL usuario. En otro caso, el valor es
contiene el nombre del tipo X00.
definido por el usuario. En
otro caso, el valor es X00.
sqldatalen puntero No utilizado. Utilizado solamente para las
variables del lenguaje principal
BLOB, CLOB y DBCLOB.

Si este campo es NULL, entonces la


longitud real (en caracteres de doble
byte) debe almacenarse en los 4 bytes
inmediatamente antes del inicio de
los datos y SQLDATA debe apuntar
al primer byte de la longitud de
campo.

Si este campo no es NULL, contiene


un puntero que indica un
almacenamiento intermedio de 4
bytes de longitud que contiene la
longitud real en bytes (incluso para
DBCLOB) de los datos del
almacenamiento intermedio al que
apunta el campo de SQLDATA de la
SQLVAR base coincidente.

Observe que, sin tener en cuenta si


este campo se utiliza o no, debe
establecerse el campo len.sqllonglen.
nombre_sqldatatype VARCHAR(27) Para un tipo definido por el Para los tipos estructurados, se
usuario, el gestor de bases establece en el nombre del tipo
de datos establece este definido por el usuario, calificado al
campo en el nombre del completo, con el formato indicado en
tipo definido por el usuario, la nota de la tabla.1
calificado al completo.1 Para
un tipo de referencia, el
gestor de bases de datos
establece este campo en el
nombre del tipo calificado
al completo del tipo de
destino de la referencia.
reservado CHAR(3) No utilizado. No utilizado.

Apndice C. SQLDA (rea de descriptores de SQL) 605


Campos de una ocurrencia de una SQLVAR secundaria

Tabla 39. Campos en una SQLVAR secundaria (continuacin)


Uso en DESCRIBE y
Nombre Tipo de datos PREPARE Uso en FETCH, OPEN y EXECUTE
1
Los 8 primeros bytes contienen el nombre de esquema del tipo (ampliado por la derecha con espacios, si es
necesario). El byte 9 contiene un punto (.). Los bytes del 10 al 27 contienen la parte de orden inferior del nombre de
tipo, que no se extiende por la derecha con espacios.

Tenga en cuenta que, aunque el principal propsito de este campo es para el nombre de los tipos definidos por el
usuario, el campo tambin se establece para los tipos de datos predefinidos por IBM. En este caso, el nombre de
esquema es SYSIBM y la parte de orden inferior del nombre es el nombre almacenado en la columna TYPENAME de
la vista de catlogo DATATYPES. Por ejemplo:
Nombre tipo longitud nombre_sqldatatype
--------- ------ ----------------
A.B 10 A .B
INTEGER 16 SYSIBM .INTEGER
"Franks".SMINT 13 Franks .SMINT
MY."type " 15 MY .type

Efecto de DESCRIBE en la SQLDA


Para una sentencia DESCRIBE OUTPUT o PREPARE OUTPUT INTO, el gestor de
bases de datos siempre establece SQLD en el nmero de columnas del conjunto
resultante o en el nmero de marcadores de parmetro de la salida. Para una
sentencia DESCRIBE INPUT o PREPARE INPUT INTO, el gestor de bases de datos
siempre establece SQLD en el nmero de marcadores de parmetros de entrada de
la sentencia. Observe que un marcador de parmetros que se corresponda con un
parmetro INOUT en una sentencia CALL se describe en los descriptores tanto de
entrada como de salida.

Las SQLVAR de la SQLDA se establecen en los casos siguientes:


v SQLN >= SQLD y ninguna entrada es un LOB, un tipo definido por el usuario o
un tipo de referencia
Se establecen las primeras entradas SQLD SQLVAR y SQLDOUBLED se
establece en blanco.
v SQLN >= 2*SQLD y como mnimo una entrada es un LOB, un tipo definido por
el usuario o un tipo de referencia
Las entradas SQLD SQLVAR se establecen dos veces y SQLDOUBLED se
establece en 2.
v SQLD <= SQLN < 2*SQLD y como mnimo una entrada es un tipo diferenciado
o un tipo de referencia, pero no hay entradas LOB ni entradas de tipo
estructurado
Se establecen las primeras entradas SQLD SQLVAR y SQLDOUBLED se
establece en blanco. Si la opcin SQLWARN es YES, se emite un aviso
SQLCODE +237 (SQLSTATE 01594).

Las SQLVAR de la SQLDA NO se establecen (es necesaria la asignacin de espacio


adicional y otra DESCRIBE) en los casos siguientes:
v SQLN < SQLD y ninguna entrada es un LOB, un tipo definido por el usuario o
un tipo de referencia
No se establece ninguna entrada SQLVAR y SQLDOUBLED se establece en
blanco. Si la opcin SQLWARN es YES, se emite un aviso SQLCODE +236
(SQLSTATE 01005).
Asigne las SQLD SQLVAR para una operacin DESCRIBE satisfactoria.

606 Consulta de SQL - Volumen 1


Efecto de DESCRIBE en la SQLDA

v SQLN < SQLD y como mnimo una entrada es un tipo diferenciado o un tipo de
referencia, pero no hay entradas LOB ni entradas de tipo estructurado
No se establece ninguna entrada SQLVAR y SQLDOUBLED se establece en
blanco. Si la opcin SQLWARN es YES, se emite un aviso SQLCODE +239
(SQLSTATE 01005).
Asigne un nmero de estructuras SQLVAR igual a 2*SQLD para lograr una
operacin DESCRIBE satisfactoria que incluya los nombres de los tipos
diferenciados y tipos destino de tipos de referencia.
v SQLN < 2*SQLD y como mnimo una entrada es un LOB o un tipo estructurado
No se establece ninguna entrada SQLVAR y SQLDOUBLED se establece en
blanco. Se emite un aviso SQLCODE +238 (SQLSTATE 01005) (sin tener en
cuenta el valor de la opcin de vinculacin SQLWARN).
Asigne las 2*SQLD SQLVAR para una operacin DESCRIBE satisfactoria.

Las referencias de las listas anteriores a entradas LOB incluyen las entradas de tipo
diferenciado cuyo tipo fuente es un tipo LOB.

La opcin SQLWARN del mandato BIND o PREP se utiliza para controlar si


DESCRIBE (o PREPARE INTO) devolver los SQLCODE de aviso +236, +237, +239.
Se recomienda que el cdigo de la aplicacin tenga siempre en cuenta que podran
devolverse estos SQLCODE. El SQLCODE de aviso +238 siempre se devuelve
cuando hay entradas LOB o de tipo estructurado en la lista de seleccin y no hay
suficientes SQLVAR en la SQLDA. Es la nica manera de que la aplicacin pueda
saber el nmero de estructuras SQLVAR que deben doblarse debido a que la
existencia de una entrada LOB o de tipo estructurado en el conjunto resultante.

Si se est describiendo una entrada de tipo estructurado, pero no se define


ninguna transformacin FROM SQL (porque no se especific ningn TRANSFORM
GROUP utilizando el registro especial CURRENT DEFAULT TRANSFORM
GROUP (SQLSTATE 42741), o porque el grupo mencionado no tiene una funcin
de transformacin FROM SQL definida (SQLSTATE 42744), DESCRIBE emitir un
error. Este error es el mismo que se devuelve para una estructura DESCRIBE de
una tabla con una entrada de tipo estructurado.

SQLTYPE y SQLLEN
La Tabla 40 muestra los valores que pueden aparecer en los campos SQLTYPE y
SQLLEN de la SQLDA. En DESCRIBE y PREPARE INTO, un valor par de
SQLTYPE significa que la columna no permite nulos y un valor impar significa que
la columna permite nulos. En FETCH, OPEN y EXECUTE, un valor par de
SQLTYPE significa que no se proporciona una variable indicadora y un valor
impar significa que SQLIND contiene la direccin de una variable indicadora.
Tabla 40. Valores SQLTYPE y SQLLEN para DESCRIBE, FETCH, OPEN y EXECUTE
Para DESCRIBE y PREPARE INTO Para FETCH, OPEN y EXECUTE
Tipo de datos de
Tipo de datos de variable del lenguaje
SQLTYPE columna SQLLEN principal SQLLEN
384/385 date 10 representacin de una atributo de longitud
fecha en serie de de la variable del
caracteres de longitud lenguaje principal
fija

Apndice C. SQLDA (rea de descriptores de SQL) 607


SQLTYPE y SQLLEN

Tabla 40. Valores SQLTYPE y SQLLEN para DESCRIBE, FETCH, OPEN y EXECUTE (continuacin)
Para DESCRIBE y PREPARE INTO Para FETCH, OPEN y EXECUTE
Tipo de datos de
Tipo de datos de variable del lenguaje
SQLTYPE columna SQLLEN principal SQLLEN
388/389 hora 8 representacin de una atributo de longitud
hora en serie de de la variable del
caracteres de longitud lenguaje principal
fija
392/393 timestamp 26 representacin de una atributo de longitud
indicacin de fecha y de la variable del
hora en serie de lenguaje principal
caracteres de longitud
fija
396/397 DATALINK atributo de longitud DATALINK atributo de longitud
de la columna de la variable del
lenguaje principal
400/401 N/D N/D serie grfica atributo de longitud
terminada en NUL de la variable del
lenguaje principal
* *
404/405 BLOB 0 BLOB No utilizado.
* *
408/409 CLOB 0 CLOB No utilizado.
* *
412/413 DBCLOB 0 DBCLOB No utilizado.
448/449 serie de caracteres de atributo de longitud serie de caracteres de atributo de longitud
longitud variable de la columna longitud variable de la variable del
lenguaje principal
452/453 serie de caracteres de atributo de longitud serie de caracteres de atributo de longitud
longitud fija de la columna longitud fija de la variable del
lenguaje principal
456/457 serie larga de atributo de longitud serie larga de atributo de longitud
caracteres de longitud de la columna caracteres de longitud de la variable del
variable variable lenguaje principal
460/461 N/D N/D serie de caracteres atributo de longitud
terminada en NUL de la variable del
lenguaje principal
464/465 serie grfica de atributo de longitud serie grfica de atributo de longitud
longitud variable de la columna longitud variable de la variable del
lenguaje principal
468/469 serie grfica de atributo de longitud serie grfica de atributo de longitud
longitud fija de la columna longitud fija de la variable del
lenguaje principal
472/473 serie grfica de atributo de longitud serie grfica larga atributo de longitud
longitud variable de la columna de la variable del
larga lenguaje principal
480/481 coma flotante 8 para precisin coma flotante 8 para precisin
doble, 4 para doble, 4 para
precisin simple precisin simple
484/485 decimal empaquetado precisin en byte 1; decimal empaquetado precisin en byte 1;
escala en byte 2 escala en byte 2
492/493 entero superior 8 entero superior 8
496/497 entero grande 4 entero grande 4

608 Consulta de SQL - Volumen 1


SQLTYPE y SQLLEN

Tabla 40. Valores SQLTYPE y SQLLEN para DESCRIBE, FETCH, OPEN y EXECUTE (continuacin)
Para DESCRIBE y PREPARE INTO Para FETCH, OPEN y EXECUTE
Tipo de datos de
Tipo de datos de variable del lenguaje
SQLTYPE columna SQLLEN principal SQLLEN
500/501 entero pequeo 2 entero pequeo 2
916/917 No aplicable No aplicable variable de referencia 267
a archivos BLOB.
920/921 No aplicable No aplicable variable de referencia 267
a archivos CLOB.
924/925 No aplicable No aplicable variable de referencia 267
a archivos DBCLOB.
960/961 No aplicable No aplicable localizador de BLOB 4
964/965 No aplicable No aplicable localizador de CLOB 4
968/969 No aplicable No aplicable localizador de 4
DBCLOB
988/989 XML 0 Ninguno aplicable. En No utilizado.
su lugar, utilice una
variable del lenguaje
principal XML AS
<serie o binaria de
tipo LOB>.
Nota:
v El campo len.sqllonglen de la SQLVAR secundaria contiene el atributo de longitud de la columna.
v SQLTYPE se ha modificado desde la versin anterior para portabilidad en DB2. Los valores de las versiones
anteriores (consulte Referencia SQL de la versin anterior) seguirn siendo soportados.

SQLTYPE no reconocidos y no soportados


Los valores que aparecen en el campo SQLTYPE de SQLDA dependen del nivel de
soporte de tipo de datos disponible en el encargado de enviar los datos as como
en el que los recibe. Esto es especialmente importante cuando se aaden nuevos
tipos de datos al producto.

Los tipos de datos nuevos pueden recibir o no soporte del que enva los datos o
del que los recibe y pueden estar reconocidos o incluso no estarlo por el que enva
los datos o el que los recibe. Segn la situacin, puede devolverse el tipo de datos
nuevo o puede devolverse un tipo de datos compatible con el acuerdo del que
enva los datos y del que los recibe o bien puede dar como resultado un error.

Cuando el que enva los datos y el que los recibe se ponen de acuerdo para utilizar
un tipo de datos compatible, la indicacin siguiente expresa la correlacin que
tendr lugar. Esta correlacin tendr lugar cuando, como mnimo, o el que enva
los datos o el que los recibe no d soporte al tipo de datos proporcionado. Tanto la
aplicacin como el gestor de bases de datos pueden proporcionar el tipo de datos
no soportado.

Tipo de datos Tipo de datos compatible


BIGINT DECIMAL(19, 0)
1
ROWID VARCHAR(40) FOR BIT DATA
1
DB2 Universal Database para z/OS Versin 8 da soporte a ROWID.

Apndice C. SQLDA (rea de descriptores de SQL) 609


SQLTYPE no reconocidos y no soportados

Tenga en cuenta que en SQLDA no se proporciona ninguna indicacin de que se


sustituya el tipo de datos.

Nmeros decimales empaquetados


Los nmeros decimales empaquetados se almacenan en una variacin de la
notacin Decimal codificado en binario (BCD). En BCD, cada nybble (cuatro bits)
representa un dgito decimal. Por ejemplo, 0001 0111 1001 representa 179. Por lo
tanto, se lee un valor decimal empaquetado nybble a nybble. Se almacena el valor
en bytes y despus se lee estos bytes en representacin hexadecimal para volver a
decimal. Por ejemplo, 0001 0111 1001 se convierte en 00000001 01111001 en la
representacin binaria. Leyendo este nmero como hexadecimal, se convierte en
0179.

La coma decimal se determina por la escala. En el caso de una columna DEC(12,5),


por ejemplo, los 5 dgitos ms a la derecha estn a la derecha de la coma decimal.

El signo lo indica un nybble a la derecha de los nybbles que representa los dgitos.
Un signo positivo o negativo se indica de la siguiente manera:
Tabla 41. Valores para el indicador de signo de un nmero decimal empaquetado
Representacin
Signo Binaria Decimal Hexadecimal
Positivo (+) 1100 12 C
Negativo (-) 1101 13 D

En resumen:
v Para almacenar cualquier valor, asigne p/2+1 bytes, donde p es la precisin.
v Asigne los nybbles de izquierda a derecha para representar el valor. Si un
nmero tiene una precisin par, se aade un nybble de cero inicial. Esta
asignacin incluye los dgitos cero iniciales (sin significado) y de cola
(significativos).
v El nybble de signo ser el segundo nybble del ltimo byte.

Por ejemplo:

Columna Valor Nybbles en hexadecimal agrupados por bytes


DEC(8,3) 6574,23 00 65 74 23 0C
DEC(6,2) -334,02 00 33 40 2D
DEC(7,5) 5,2323 05 23 23 0C
DEC(5,2) -23,5 02 35 0D

Campo SQLLEN para decimales


El campo SQLLEN contiene la precisin (primer byte) y la escala (segundo byte)
de la columna decimal. Al escribir una aplicacin porttil, los bytes de la precisin
y de la escala se deben establecer individualmente, en lugar de establecerlos
conjuntamente como un entero corto. Esto evitar los problemas en la inversin de
bytes de enteros.

Por ejemplo, en C:
((char *)&(sqlda->sqlvar[i].sqllen))[0] = precision;
((char *)&(sqlda->sqlvar[i].sqllen))[1] = scale;

610 Consulta de SQL - Volumen 1


Campo SQLLEN para decimales

Informacin relacionada:
v CHAR en la pgina 308

Apndice C. SQLDA (rea de descriptores de SQL) 611


Campo SQLLEN para decimales

612 Consulta de SQL - Volumen 1


Apndice D. Vistas de catlogo
Este apndice contiene una descripcin de cada vista de catlogo del sistema,
incluyendo los nombres de columna y los tipos de datos.

Vistas de catlogo del sistema


El gestor de bases de datos crea y mantiene dos conjuntos de vistas de catlogo del
sistema que se definen adems de las tablas base de catlogo del sistema.
v Las vistas SYSCAT son vistas de catlogo de slo lectura que se encuentran en el
esquema SYSCAT. Por omisin, se otorga a PUBLIC el privilegio SELECT sobre
estas vistas.
v Las vistas SYSSTAT son vistas de catlogo actualizables que se encuentran en el
esquema SYSSTAT. Las vistas actualizables contienen informacin estadstica
utilizada por el optimizador. Es posible cambiar los valores de algunas de las
columnas de estas vistas para comprobar el rendimiento. (Antes de cambiar
algn dato estadstico, se recomienda invocar el mandato RUNSTATS para que
toda la informacin estadstica refleje el estado actual.)

Las aplicaciones deben grabarse en las vistas SYSCAT y SYSSTAT en lugar de en


las tablas base de catlogo.

Todas las vistas de catlogo del sistema se crean durante la creacin de la base de
datos. Las vistas de catlogo no pueden crearse ni eliminarse explcitamente. Las
vistas se actualizan durante la actividad normal, en respuesta a sentencias de
definicin de datos SQL, rutinas de entorno y determinados programas de utilidad.
Los datos de las vistas de catlogo del sistema estn disponibles mediante las
funciones de la consulta SQL normal. Las vistas de catlogo del sistema (a
excepcin de algunas vistas de catlogo que se puedan actualizar) no se pueden
modificar utilizando sentencias de manipulacin de datos SQL normales.

Un objeto (tabla, columna, funcin o ndice) slo aparecer en la vista de catlogo


actualizable de un usuario si dicho usuario ha creado el objeto, posee el privilegio
CONTROL sobre el objeto o posee la autoridad DBADM explcita.

El orden de las columnas en las vistas puede cambiar de un release a otro. Para
evitar que esto afecte a la lgica de programacin, las columnas deben especificarse
en una lista de seleccin explcitamente y debe evitarse la utilizacin de SELECT *.
Las columnas tienen nombres coherentes basados en los tipos de objetos que
describen.
Objeto descrito Nombres de columna
Tabla TABSCHEMA, TABNAME
ndice INDSCHEMA, INDNAME
Vista VIEWSCHEMA, VIEWNAME
Restriccin CONSTSCHEMA, CONSTNAME
Activador TRIGSCHEMA, TRIGNAME
Paquete PKGSCHEMA, PKGNAME
Tipo TYPESCHEMA, TYPENAME, TYPEID

Copyright IBM Corp. 1993, 2006 613


Vistas de catlogo del sistema

Funcin ROUTINESCHEMA, ROUTINENAME,


ROUTINEID
Mtodo ROUTINESCHEMA, ROUTINENAME,
ROUTINEID
Procedimiento ROUTINESCHEMA, ROUTINENAME,
ROUTINEID
Columna COLNAME
Esquema SCHEMANAME
Espacio de tablas TBSPACE
Grupo de particiones de base de datos
NGNAME
Agrupacin de almacenamientos intermedios
BPNAME
Supervisor de sucesos EVMONNAME
Indicacin de la fecha y hora de creacin
CREATE_TIME

614 Consulta de SQL - Volumen 1


Gua bsica para las vistas de catlogo

Gua bsica para las vistas de catlogo


Tabla 42. Gua bsica para las vistas de catlogo de slo lectura
Descripcin Vista de catlogo
atributos de tipos de datos estructurados SYSCAT.ATTRIBUTES en la pgina 620
autorizaciones en base de datos SYSCAT.DBAUTH en la pgina 649
configuracin de agrupacin de almacenamientos SYSCAT.BUFFERPOOLS en la pgina 623
intermedios en grupo de particiones de base de datos
tamao de agrupacin de almacenamientos intermedios SYSCAT.BUFFERPOOLDBPARTITIONS en la pgina
en particin de base de datos 622
funciones de conversin SYSCAT.CASTFUNCTIONS en la pgina 624
restricciones de comprobacin SYSCAT.CHECKS en la pgina 625
privilegios de columna SYSCAT.COLAUTH en la pgina 627
columnas SYSCAT.COLUMNS en la pgina 636
columnas referenciadas por restricciones de comprobacin SYSCAT.COLCHECKS en la pgina 628
columnas utilizadas en dimensiones SYSCAT.COLUSE en la pgina 642
columnas utilizadas en claves SYSCAT.KEYCOLUSE en la pgina 678
dependencias de restriccin SYSCAT.CONSTDEP en la pgina 643
particiones de base de datos de grupo de particiones de SYSCAT.DBPARTITIONGROUPDEF en la pgina 651
base de datos
definiciones de grupo de particiones de base de datos SYSCAT.DBPARTITIONGROUPS en la pgina 652
particiones de datos SYSCAT.DATAPARTITIONEXPRESSION en la pgina
644
SYSCAT.DATAPARTITIONS en la pgina 645
tipos de datos SYSCAT.DATATYPES en la pgina 647
estadsticas detalladas de grupo de columnas SYSCAT.COLGROUPCOLS en la pgina 630
SYSCAT.COLGROUPDIST en la pgina 631
SYSCAT.COLGROUPDISTCOUNTS en la pgina 632
SYSCAT.COLGROUPS en la pgina 633
opciones de columna detalladas SYSCAT.COLOPTIONS en la pgina 635
estadsticas detalladas de columna SYSCAT.COLDIST en la pgina 629
correlaciones de distribucin SYSCAT.PARTITIONMAPS en la pgina 692
definiciones de supervisor de sucesos SYSCAT.EVENTMONITORS en la pgina 653
sucesos supervisados actualmente SYSCAT.EVENTS en la pgina 655
SYSCAT.EVENTS en la pgina 656
1
dependencias de funcin SYSCAT.ROUTINEDEP en la pgina 697
correlacin de funciones SYSCAT.FUNCMAPPINGS en la pgina 660
opciones de correlacin de funciones SYSCAT.FUNCMAPOPTIONS en la pgina 658
opciones de correlacin de parmetros de funcin SYSCAT.FUNCMAPPARMOPTIONS en la pgina 659
1
parmetros de funcin SYSCAT.ROUTINEPARMS en la pgina 700
1
funciones SYSCAT.ROUTINES en la pgina 702
jerarquas (tipos, tablas, vistas) SYSCAT.HIERARCHIES en la pgina 661
SYSCAT.FULLHIERARCHIES en la pgina 657

Apndice D. Vistas de catlogo 615


Gua bsica para las vistas de catlogo

Tabla 42. Gua bsica para las vistas de catlogo de slo lectura (continuacin)
Descripcin Vista de catlogo
columnas de identidad SYSCAT.COLIDENTATTRIBUTES en la pgina 634
columnas de ndice SYSCAT.INDEXCOLUSE en la pgina 663
dependencias de ndice SYSCAT.INDEXDEP en la pgina 664
explotacin del ndice SYSCAT.INDEXEXPLOITRULES en la pgina 671
dependencias de extensin de ndice SYSCAT.INDEXEXTENSIONDEP en la pgina 672
parmetros de extensin de ndice SYSCAT.INDEXEXTENSIONPARMS en la pgina 674
mtodos de bsqueda de extensiones de ndice SYSCAT.INDEXEXTENSIONMETHODS en la pgina
673
extensiones de ndice SYSCAT.INDEXEXTENSIONS en la pgina 675
opciones de ndice SYSCAT.INDEXOPTIONS en la pgina 676
privilegios de ndice SYSCAT.INDEXAUTH en la pgina 662
ndices SYSCAT.INDEXES en la pgina 665
1
dependencias de mtodo SYSCAT.ROUTINEDEP en la pgina 697
1
parmetros de mtodo SYSCAT.ROUTINES en la pgina 702
1
mtodos SYSCAT.ROUTINES en la pgina 702
apodos SYSCAT.NICKNAMES en la pgina 680
correlacin de objeto SYSCAT.NAMEMAPPINGS en la pgina 679
dependencias de paquete SYSCAT.PACKAGEDEP en la pgina 684
privilegios de paquete SYSCAT.PACKAGEAUTH en la pgina 683
paquetes SYSCAT.PACKAGES en la pgina 686
tablas particionadas SYSCAT.TABDETACHEDDEP en la pgina 734
privilegios de paso a travs SYSCAT.PASSTHRUAUTH en la pgina 693
especificaciones de predicado SYSCAT.PREDICATESPECS en la pgina 694
opciones de procedimiento SYSCAT.ROUTINEOPTIONS en la pgina 698
opciones de parmetro de procedimiento SYSCAT.ROUTINEPARMOPTIONS en la pgina 699
1
parmetros de procedimiento SYSCAT.ROUTINEPARMS en la pgina 700
1
procedimientos SYSCAT.ROUTINES en la pgina 702
tablas protegidas SYSCAT.SECURITYLABELACCESS en la pgina 715
SYSCAT.SECURITYLABELCOMPONENTELEMENTS
en la pgina 716
SYSCAT.SECURITYLABELCOMPONENTS en la pgina
717
SYSCAT.SECURITYLABELS en la pgina 718
SYSCAT.SECURITYPOLICIES en la pgina 719
SYSCAT.SECURITYPOLICYCOMPONENTRULES en la
pgina 720
SYSCAT.SECURITYPOLICYEXEMPTIONS en la pgina
721
SYSCAT.SURROGATEAUTHIDS en la pgina 722
proporciona DB2 Universal Database para compatibilidad SYSIBM.SYSDUMMY1 en la pgina 619
con z/OS y OS/390
restricciones de referencia SYSCAT.REFERENCES en la pgina 695

616 Consulta de SQL - Volumen 1


Gua bsica para las vistas de catlogo

Tabla 42. Gua bsica para las vistas de catlogo de slo lectura (continuacin)
Descripcin Vista de catlogo
opciones de tabla remota SYSCAT.TABOPTIONS en la pgina 744
dependencias de rutina SYSCAT.ROUTINEDEP en la pgina 697
1
parmetros de rutina SYSCAT.ROUTINEPARMS en la pgina 700
privilegios de rutina SYSCAT.ROUTINEAUTH en la pgina 696
1
rutinas SYSCAT.ROUTINES en la pgina 702
SYSCAT.ROUTINESFEDERATED en la pgina 711
privilegios de esquema SYSCAT.SCHEMAAUTH en la pgina 713
esquemas SYSCAT.SCHEMATA en la pgina 714
privilegios de secuencia SYSCAT.SEQUENCEAUTH en la pgina 723
secuencias SYSCAT.SEQUENCES en la pgina 724
opciones de servidor SYSCAT.SERVEROPTIONS en la pgina 726
valores de opciones de servidor SYSCAT.USEROPTIONS en la pgina 753
sentencias en paquetes SYSCAT.STATEMENTS en la pgina 728
procedimientos almacenados SYSCAT.ROUTINES en la pgina 702
servidores del sistema SYSCAT.SERVERS en la pgina 727
restricciones de tabla SYSCAT.TABCONST en la pgina 731
dependencias de tabla SYSCAT.TABDEP en la pgina 732
privilegios de tabla SYSCAT.TABAUTH en la pgina 729
privilegios de uso de espacios de tablas SYSCAT.TBSPACEAUTH en la pgina 745
espacios de tablas SYSCAT.TABLESPACES en la pgina 742
tablas SYSCAT.TABLES en la pgina 735
transformaciones SYSCAT.TRANSFORMS en la pgina 746
dependencias de activador SYSCAT.TRIGDEP en la pgina 747
activadores SYSCAT.TRIGGERS en la pgina 748
correlacin de tipos SYSCAT.TYPEMAPPINGS en la pgina 750
funciones definidas por el usuario SYSCAT.ROUTINES en la pgina 702
dependencias de vista SYSCAT.TABDEP en la pgina 732
vistas SYSCAT.TABLES en la pgina 735
SYSCAT.VIEWS en la pgina 754
opciones de derivador SYSCAT.WRAPOPTIONS en la pgina 755
derivadores SYSCAT.WRAPPERS en la pgina 756
ndice de valores XML SYSCAT.INDEXXMLPATTERNS en la pgina 677
objetos XSR SYSCAT.XDBMAPGRAPHS en la pgina 757
SYSCAT.XDBMAPSHREDTREES en la pgina 758
SYSCAT.XSROBJECTAUTH en la pgina 759
SYSCAT.XSROBJECTCOMPONENTS en la pgina 760
SYSCAT.XSROBJECTDEP en la pgina 761
SYSCAT.XSROBJECTHIERARCHIES en la pgina 762
SYSCAT.XSROBJECTS en la pgina 763

Apndice D. Vistas de catlogo 617


Gua bsica para las vistas de catlogo

Tabla 42. Gua bsica para las vistas de catlogo de slo lectura (continuacin)
Descripcin Vista de catlogo
1
Todava existen las vistas de catlogo para funciones, mtodos y procedimientos de DB2 Versin 7.1 y anterior. Sin
embargo, estas vistas no reflejan ningn cambio desde DB2 Versin 7.1. Las vistas son las siguientes:
Funciones: SYSCAT.FUNCTIONS, SYSCAT.FUNCDEP, SYSCAT.FUNCPARMS
Mtodos: SYSCAT.FUNCTIONS, SYSCAT.FUNCDEP, SYSCAT.FUNCPARMS
Procedimientos: SYSCAT.PROCEDURES, SYSCAT.PROCPARMS

Tabla 43. Gua bsica para las vistas de catlogo actualizables


Descripcin Vista de catlogo
columnas SYSSTAT.COLUMNS en la pgina 768
estadsticas detalladas de grupo de columnas SYSSTAT.COLGROUPDIST en la pgina 765
SYSSTAT.COLGROUPDISTCOUNTS en la pgina 766
SYSSTAT.COLGROUPS en la pgina 767
estadsticas detalladas de columna SYSSTAT.COLDIST en la pgina 764
ndices SYSSTAT.INDEXES en la pgina 769
1
rutinas SYSSTAT.ROUTINES en la pgina 773
tablas SYSSTAT.TABLES en la pgina 774
1
La vista de catlogo SYSSTAT.FUNCTIONS todava existe para actualizar los datos estadsticos de funciones y
mtodos. Sin embargo, esta vista no refleja ningn cambio desde DB2 Versin 7.1.

618 Consulta de SQL - Volumen 1


SYSIBM.SYSDUMMY1

SYSIBM.SYSDUMMY1
Contiene una fila. Esta vista est disponible para las aplicaciones que necesitan
compatibilidad con DB2 Universal Database para z/OS.
Tabla 44. Vista de catlogo SYSIBM.SYSDUMMY1
Posibili-
dad de
Nombre de columna Tipo de datos nulos Descripcin
IBMREQD CHAR(1) Y

Apndice D. Vistas de catlogo 619


SYSCAT.ATTRIBUTES

SYSCAT.ATTRIBUTES
Cada fila representa un atributo que est definido para un tipo de datos
estructurado definido por el usuario. Incluye atributos heredados de subtipos.
Tabla 45. Vista de catlogo SYSCAT.ATTRIBUTES
Posibili-
dad de
Nombre de columna Tipo de datos nulos Descripcin
TYPESCHEMA VARCHAR(128) Nombre de esquema del tipo de datos
estructurado que incluye el atributo.
TYPENAME VARCHAR(128) Nombre no calificado del tipo de datos
estructurado que incluye el atributo.
ATTR_NAME VARCHAR(128) Nombre del atributo.
ATTR_TYPESCHEMA VARCHAR(128) Nombre de esquema del tipo de datos de un
atributo.
ATTR_TYPENAME VARCHAR(128) Nombre no calificado del tipo de datos de
un atributo.
TARGET_TYPESCHEMA VARCHAR(128) Y Nombre de esquema del tipo de fila de
destino. Slo se aplica a los tipos de
referencia; valor nulo en caso contrario.
TARGET_TYPENAME VARCHAR(128) Y Nombre no calificado del tipo de fila de
destino. Slo se aplica a los tipos de
referencia; valor nulo en caso contrario.
SOURCE_TYPESCHEMA VARCHAR(128) Para atributos heredados, el nombre de
esquema del tipo de datos con el que se ha
definido el atributo en primer lugar. Para
atributos no heredados, esta columna es
igual que TYPESCHEMA.
SOURCE_TYPENAME VARCHAR(128) Para atributos heredados, el nombre no
calificado del tipo de datos con el que se ha
definido el atributo en primer lugar. Para
atributos no heredados, esta columna es
igual que TYPENAME.
ORDINAL SMALLINT Posicin del atributo en la definicin del tipo
de datos estructurado, empezando por 0.
LENGTH INTEGER Para tipos de serie, contiene la longitud
mxima. Para el tipo decimal, contiene la
precisin (nmero de dgitos); 0 en caso
contrario.
SCALE SMALLINT Para el tipo decimal, contiene la escala
(nmero de dgitos a la derecha de la coma
decimal); 0 en caso contrario.
CODEPAGE SMALLINT Para tipos de serie, indica la pgina de
cdigos; 0 indica FOR BIT DATA; 0 para
tipos que no sean de serie.
LOGGED CHAR(1) Slo se aplica a los tipos LOB; blanco en caso
contrario.
N = Los cambios no se anotan
cronolgicamente
Y = Los cambios se anotan
cronolgicamente

620 Consulta de SQL - Volumen 1


SYSCAT.ATTRIBUTES

Tabla 45. Vista de catlogo SYSCAT.ATTRIBUTES (continuacin)


Posibili-
dad de
Nombre de columna Tipo de datos nulos Descripcin
COMPACT CHAR(1) Slo se aplica a los tipos LOB; blanco en caso
contrario.
N = Se almacena en formato no compacto
Y = Se almacena en formato compacto
DL_FEATURES CHAR(10) Slo se aplica al tipo DATALINK; blancos en
caso contrario. Codifica varias funciones de
enlace de datos como propiedades de tipo de
enlace, modalidad de control, recuperacin y
desenlace.
JAVA_FIELDNAME VARCHAR(256) Y Reservado para su utilizacin en el futuro.

Apndice D. Vistas de catlogo 621


SYSCAT.BUFFERPOOLDBPARTITIONS

SYSCAT.BUFFERPOOLDBPARTITIONS
Cada fila representa una combinacin de una agrupacin de almacenamientos
intermedios y una particin de base de datos, en la que el tamao de la agrupacin
de almacenamientos intermedios de dicha particin es distinto del tamao por
omisin correspondiente a otras particiones del mismo grupo de particiones de
base de datos (representado en SYSCAT.BUFFERPOOLS).
Tabla 46. Vista de catlogo SYSCAT.BUFFERPOOLDBPARTITIONS
Posibili-
dad de
Nombre de columna Tipo de datos nulos Descripcin
BUFFERPOOLID INTEGER Identificador interno de la agrupacin de
almacenamientos intermedios.
DBPARTITIONNUM SMALLINT Nmero de particin de base de datos.
NPAGES INTEGER Nmero de pginas de esta agrupacin de
almacenamientos intermedios en esta
particin de base de datos.

622 Consulta de SQL - Volumen 1


SYSCAT.BUFFERPOOLS

SYSCAT.BUFFERPOOLS
Cada fila representa la configuracin de una agrupacin de almacenamientos
intermedios de un grupo de particiones de base de datos de una base de datos o
de todas las particiones de base de datos de una base de datos.
Tabla 47. Vista de catlogo SYSCAT.BUFFERPOOLS
Posibili-
dad de
Nombre de columna Tipo de datos nulos Descripcin
BPNAME VARCHAR(128) Nombre de la agrupacin de
almacenamientos intermedios.
BUFFERPOOLID INTEGER Identificador de la agrupacin de
almacenamientos intermedios.
DBPGNAME VARCHAR(128) Y Nombre de un grupo de particiones de base
de datos (NULL si la agrupacin de
almacenamientos intermedios existe en todas
las particiones de base de datos de la base
de datos).
NPAGES INTEGER Nmero de pgina por omisin de esta
agrupacin de almacenamientos intermedios
de las particiones de base de datos de este
grupo de particiones de base de datos.
PAGESIZE INTEGER Tamao de pgina correspondiente a esta
agrupacin de almacenamientos intermedios
de las particiones de base de datos de este
grupo de particiones de base de datos.
ESTORE CHAR(1) Siembre N. El almacenamiento ampliado ya
no se aplica.
NUMBLOCKPAGES INTEGER Y Nmero de pginas de la agrupacin de
almacenamientos intermedios que deben
estar en un rea basada en bloque. Slo los
captadores previos que realizan una
captacin previa secuencial utilizan el rea
basada en bloque de la agrupacin de
almacenamientos intermedios. Por omisin,
una agrupacin de almacenamientos
intermedios no tendr ningn rea basada en
bloque; es decir, NUMBLOCKPAGES es
nulo.
BLOCKSIZE INTEGER Y Nmero de pginas de un bloque.
1
NGNAME VARCHAR(128) Y Nombre de un grupo de particiones de base
de datos (NULL si la agrupacin de
almacenamientos intermedios existe en todas
las particiones de base de datos de la base
de datos).

Notas:
1. La columna NGNAME se incluye por razones de compatibilidad con versiones anteriores. Consulte DBPGNAME.

Apndice D. Vistas de catlogo 623


SYSCAT.CASTFUNCTIONS

SYSCAT.CASTFUNCTIONS
Cada fila representa una funcin de conversin, sin incluir las funciones de
conversin incorporadas.
Tabla 48. Vista de catlogo SYSCAT.CASTFUNCTIONS
Posibili-
dad de
Nombre de columna Tipo de datos nulos Descripcin
FROM_TYPESCHEMA VARCHAR(128) Nombre de esquema del tipo de datos del
parmetro.
FROM_TYPENAME VARCHAR(128) Nombre del tipo de datos del parmetro.
TO_TYPESCHEMA VARCHAR(128) Nombre de esquema del tipo de datos del
resultado despus de la conversin.
TO_TYPENAME VARCHAR(128) Nombre del tipo de datos del resultado
despus de la conversin.
FUNCSCHEMA VARCHAR(128) Nombre de esquema de la funcin.
FUNCNAME VARCHAR(128) Nombre no calificado de la funcin.
SPECIFICNAME VARCHAR(128) Nombre de la instancia de la rutina (puede
ser un nombre generado por el sistema).
ASSIGN_FUNCTION CHAR(1) N = No es una funcin de asignacin
Y = Funcin de asignacin implcita

624 Consulta de SQL - Volumen 1


SYSCAT.CHECKS

SYSCAT.CHECKS
Cada fila representa una restriccin de comprobacin o una columna derivada de
una tabla de consultas materializadas. Para jerarquas de tablas, cada restriccin de
comprobacin se registra slo a nivel de la jerarqua en la que se ha creado la
restriccin.
Tabla 49. Vista de catlogo SYSCAT.CHECKS
Posibili-
dad de
Nombre de columna Tipo de datos nulos Descripcin
CONSTNAME VARCHAR(18) Nombre de la restriccin de comprobacin.
OWNER VARCHAR(128) ID de autorizacin bajo el que se ha creado
la restriccin de comprobacin.
TABSCHEMA VARCHAR(128) Nombre de esquema de la tabla a la que se
aplica esta restriccin.
TABNAME VARCHAR(128) Nombre de la tabla a la que se aplica esta
restriccin.
CREATE_TIME TIMESTAMP Hora a la que se ha definido la restriccin.
Se utiliza para resolver funciones que forman
parte de esta restriccin. Las funciones
creadas despus de que se definiera la
restriccin no se eligen.
QUALIFIER VARCHAR(128) Valor del esquema por omisin en el
momento de la definicin del objeto. Se
utiliza para completar cualquier referencia
no calificada.
TYPE CHAR(1) Tipo de restriccin de comprobacin:
C = Restriccin de comprobacin
F = Dependencia funcional
O = La restriccin es una propiedad del
objeto
S = Restriccin de comprobacin
generada por el sistema para la columna
GENERATED ALWAYS
FUNC_PATH VARCHAR(254) Va de acceso de SQL en vigor cuando se
defini la restriccin; se utiliza para resolver
funciones y tipos que forman parte de la
restriccin.
TEXT CLOB(2M) Texto de la condicin de comprobacin o
definicin de la columna derivad.1
PERCENTVALID SMALLINT Nmero de filas para las que es vlida la
restriccin informativa, expresado como un
porcentaje del total.
DEFINER2 VARCHAR(128) ID de autorizacin bajo el que se ha creado
la restriccin de comprobacin.

Apndice D. Vistas de catlogo 625


SYSCAT.CHECKS

Tabla 49. Vista de catlogo SYSCAT.CHECKS (continuacin)


Posibili-
dad de
Nombre de columna Tipo de datos nulos Descripcin

Notas:
1. En la vista de catlogo, el texto de la clusula de comprobacin siempre se muestra en la pgina de cdigos de la
base de datos y puede contener caracteres de sustitucin. La restriccin de comprobacin siempre se aplicar en la
pgina de cdigos de la tabla destino y no contendr ningn carcter de sustitucin cuando se aplique. (La
restriccin de comprobacin se aplicar en base al texto original de la pgina de cdigos de la tabla destino, que
es posible que no incluya los caracteres de sustitucin.)
2. La columna DEFINER se incluye por razones de compatibilidad con versiones anteriores. Consulte OWNER.

626 Consulta de SQL - Volumen 1


SYSCAT.COLAUTH

SYSCAT.COLAUTH
Cada fila representa un usuario o un grupo al que se ha otorgado uno o ms
privilegios sobre una columna.
Tabla 50. Vista de catlogo SYSCAT.COLAUTH
Posibili-
dad de
Nombre de columna Tipo de datos nulos Descripcin
GRANTOR VARCHAR(128) El que ha otorgado un privilegio.
GRANTEE VARCHAR(128) El que mantiene un privilegio.
GRANTEETYPE CHAR(1) G = Se otorga a un grupo
U = Se otorga a un usuario individual
TABSCHEMA VARCHAR(128) Nombre de esquema de la tabla o vista en la
que se mantiene el privilegio.
TABNAME VARCHAR(128) Nombre no calificado de la tabla o vista en
la que se mantiene el privilegio.
COLNAME VARCHAR(128) Nombre de la columna a la que se aplica
este privilegio.
COLNO SMALLINT Nmero de columna de esta columna dentro
de la tabla (empezando por 0).
PRIVTYPE CHAR(1) R = Hace referencia a privilegio
U = Actualiza privilegio
GRANTABLE CHAR(1) G = El privilegio se puede otorgar
N = El privilegio no se puede otorgar

Notas:
1. Los privilegios se pueden otorgar por columna, pero slo se pueden revocar en base a una tabla.

Apndice D. Vistas de catlogo 627


SYSCAT.COLCHECKS

SYSCAT.COLCHECKS
Cada fila representa una columna a la que hace referencia una restriccin de
comprobacin o la definicin de una tabla de consultas materializadas. Para
jerarquas de tablas, cada restriccin de comprobacin se registra slo a nivel de la
jerarqua en la que se ha creado la restriccin.
Tabla 51. Vista de catlogo SYSCAT.COLCHECKS
Posibili-
dad de
Nombre de columna Tipo de datos nulos Descripcin
CONSTNAME VARCHAR(128) Nombre de la restriccin de comprobacin.
TABSCHEMA VARCHAR(128) Nombre de esquema de la tabla que contiene
la columna a la que se hace referencia.
TABNAME VARCHAR(128) Nombre no calificado de la tabla que
contiene la columna a la que se hace
referencia.
COLNAME VARCHAR(128) Nombre de la columna.
USAGE CHAR(1) D = La columna es el hijo de una
dependencia funcional
P = La columna es el padre de una
dependencia funcional
R = Se hace referencia a la columna en la
restriccin de comprobacin
S = La columna es una fuente de la
restriccin de comprobacin de columna
generada por el sistema que da soporte a
una tabla de consultas materializadas
T = La columna es un destino de la
restriccin de comprobacin de columna
generada por el sistema que da soporte a
una tabla de consultas materializadas

628 Consulta de SQL - Volumen 1


SYSCAT.COLDIST

SYSCAT.COLDIST
Cada fila representa el valor nmero n ms frecuente de alguna columna, o el
valor cuantil n (distribucin acumulada) de la columna. Slo se aplica a columnas
de tablas reales (no a vistas). No se registra ninguna estadstica para columnas
heredadas de tablas con tipo.
Tabla 52. Vista de catlogo SYSCAT.COLDIST
Posibili-
dad de
Nombre de columna Tipo de datos nulos Descripcin
TABSCHEMA VARCHAR(128) Nombre de esquema de la tabla a la que se
aplican las estadsticas.
TABNAME VARCHAR(128) Nombre no calificado de la tabla a la que se
aplican las estadsticas.
COLNAME VARCHAR(128) Nombre de la columna a la que se aplican
las estadsticas.
TYPE CHAR(1) F = Valor de frecuencia
Q = Valor cuantil
SEQNO SMALLINT Si TYPE = F, n en esta columna identifica el
valor nmero n ms frecuente. Si TYPE =
Q, n en esta columna identifica el valor
cuantil nmero n.
COLVALUE1 VARCHAR(254) Y El valor de los datos como un literal de
caracteres o un valor nulo.
VALCOUNT BIGINT Si TYPE = F, VALCOUNT es el nmero de
ocurrencias de COLVALUE en la columna. Si
TYPE = Q, VALCOUNT es el nmero de
filas cuyo valor es menor o igual que
COLVALUE.
DISTCOUNT2 BIGINT Y Si TYPE = Q, esta columna registra el
nmero de valores diferenciados que son
menores o iguales que COLVALUE (nulo si
no est disponible).

Notas:
1. En la vista de catlogo, el valor de COLVALUE siempre se muestra en la pgina de cdigos de la base de datos y
puede contener caracteres de sustitucin. Sin embargo, las estadsticas se renen internamente en la pgina de
cdigos de la tabla de la columna y, por tanto, utilizarn los valores reales de la columna cuando se apliquen
durante la optimizacin de la consulta.
2. DISTCOUNT slo se recopila para las columnas que son la primera columna de clave de un ndice.

Apndice D. Vistas de catlogo 629


SYSCAT.COLGROUPCOLS

SYSCAT.COLGROUPCOLS
Cada fila representa una columna que forma parte de un grupo de columnas.
Tabla 53. Vista de catlogo SYSCAT.COLGROUPCOLS
Posibili-
dad de
Nombre de columna Tipo de datos nulos Descripcin
COLGROUPID INTEGER Identificador del grupo de columnas.
COLNAME VARCHAR(128) Nombre de la columna del grupo de
columnas.
TABSCHEMA VARCHAR(128) Nmero de esquema de la tabla
correspondiente a la columna del grupo de
columnas.
TABNAME VARCHAR(128) Nmero no calificado de la tabla
correspondiente a la columna del grupo de
columnas.
ORDINAL SMALLINT Nmero ordinal de la columna del grupo de
columnas.

630 Consulta de SQL - Volumen 1


SYSCAT.COLGROUPDIST

SYSCAT.COLGROUPDIST
Cada fila representa el valor de la columna del grupo de columnas que forma el
valor ms frecuente nmero n del grupo de columnas o el valor cuantil n del
grupo de columnas.
Tabla 54. Vista de catlogo SYSCAT.COLGROUPDIST
Posibili-
dad de
Nombre de columna Tipo de datos nulos Descripcin
COLGROUPID INTEGER Identificador del grupo de columnas.
TYPE CHAR(1) F = Valor de frecuencia
Q = Valor cuantil
ORDINAL SMALLINT Nmero ordinal de la columna del grupo de
columnas.
SEQNO SMALLINT Si TYPE = F, n en esta columna identifica el
valor nmero n ms frecuente. Si TYPE =
Q, n en esta columna identifica el valor
cuantil nmero n.
COLVALUE1 VARCHAR(254) S El valor de los datos como un literal de
caracteres o un valor nulo.

Notas:
1. En la vista de catlogo, el valor de COLVALUE siempre se muestra en la pgina de cdigos de la base de datos y
puede contener caracteres de sustitucin. Sin embargo, las estadsticas se renen internamente en la pgina de
cdigos de la tabla de la columna y, por tanto, utilizarn los valores reales de la columna cuando se apliquen
durante la optimizacin de la consulta.

Apndice D. Vistas de catlogo 631


SYSCAT.COLGROUPDISTCOUNTS

SYSCAT.COLGROUPDISTCOUNTS
Cada fila representa las estadsticas de distribucin que se aplican al valor ms
frecuente nmero n de un grupo de columnas o el valor cuantil n de un grupo de
columnas.
Tabla 55. Vista de catlogo SYSCAT.COLGROUPDISTCOUNTS
Posibili-
dad de
Nombre de columna Tipo de datos nulos Descripcin
COLGROUPID INTEGER Identificador del grupo de columnas.
TYPE CHAR(1) F = Valor de frecuencia
Q = Valor cuantil
SEQNO SMALLINT El nmero de secuencia n que representa el
valor n de TYPE.
VALCOUNT BIGINT Si TYPE = F, VALCOUNT es el nmero de
ocurrencias de COLVALUE para el grupo de
columnas con este SEQNO. Si TYPE = Q,
VALCOUNT es el nmero de filas cuyo
valor es menor o igual que COLVALUE para
el grupo de columnas con este SEQNO.
DISTCOUNT BIGINT S Si TYPE = Q, esta columna registra el
nmero de valores diferenciados que son
menores o iguales que COLVALUE para el
grupo de columnas con este SEQNO (nulo si
no est disponible).

632 Consulta de SQL - Volumen 1


SYSCAT.COLGROUPS

SYSCAT.COLGROUPS
Cada fila representa un grupo de columnas y estadsticas que se aplican a todo el
grupo de columnas.
Tabla 56. Vista de catlogo SYSCAT.COLGROUPS
Posibili-
dad de
Nombre de columna Tipo de datos nulos Descripcin
COLGROUPSCHEMA VARCHAR(128) Nombre de esquema del grupo de columnas.
COLGROUPNAME VARCHAR(128) Nombre no calificado del grupo de
columnas.
COLGROUPID INTEGER Identificador del grupo de columnas.
COLGROUPCARD BIGINT Cardinalidad del grupo de columnas.
NUMFREQ_VALUES SMALLINT Nmero de valores frecuentes recopilados
para el grupo de columnas.
NUMQUANTILES SMALLINT Nmero de valores cuantiles recopilados
para el grupo de columnas.

Apndice D. Vistas de catlogo 633


SYSCAT.COLIDENTATTRIBUTES

SYSCAT.COLIDENTATTRIBUTES
Cada fila representa una columna de identidad definida para una tabla.
Tabla 57. Vista de catlogo SYSCAT.COLIDENTATTRIBUTES
Posibili-
dad de
Nombre de columna Tipo de datos nulos Descripcin
TABSCHEMA VARCHAR(128) Nombre de esquema de la tabla o vista que
contiene la columna.
TABNAME VARCHAR(128) Nombre no calificado de la tabla o vista que
contiene la columna.
COLNAME VARCHAR(128) Nombre de la columna.
START DECIMAL(31,0) Valor inicial de la secuencia.
INCREMENT DECIMAL(31,0) Valor de incremento.
MINVALUE DECIMAL(31,0) Valor mnimo de la secuencia.
MAXVALUE DECIMAL(31,0) Valor mximo de la secuencia.
CYCLE CHAR(1) Indica si la secuencia puede o no continuar
generando valores despus de alcanzar su
valor mximo o mnimo.
N = La secuencia no puede continuar
Y = La secuencia puede continuar
CACHE INTEGER Nmero de valores de secuencia que se
deben preasignar en memoria para el acceso
ms rpido. 0 indica que los valores de la
secuencia no se deben preasignar. En una
base de datos particionada, este valor se
aplica a cada particin de base de datos.
ORDER CHAR(1) Indica si los nmeros de secuencia se deben
o no generar en orden de peticin.
N = No es necesario que los nmeros de
secuencia se generen en orden de peticin
Y = Los nmeros de secuencia se deben
generar en orden de peticin
NEXTCACHEFIRSTVALUE DECIMAL(31,0) Y Primer valor que estar disponible para
asignarlo en el bloque de memoria
intermedia siguiente. Si no hay
almacenamiento en antememoria, el
siguiente valor que estar disponible para
asignar.
SEQID INTEGER Identificador de la secuencia.

634 Consulta de SQL - Volumen 1


SYSCAT.COLOPTIONS

SYSCAT.COLOPTIONS
Cada fila contiene los valores de las opciones especficas de columna.
Tabla 58. Vista de catlogo SYSCAT.COLOPTIONS
Posibili-
dad de
Nombre de columna Tipo de datos nulos Descripcin
TABSCHEMA VARCHAR(128) Calificador de un apodo.
TABNAME VARCHAR(128) Apodo de la columna para la que se
establecen opciones.
COLNAME VARCHAR(128) Nombre de columna local.
OPTION VARCHAR(128) Nombre de la opcin de columna.
SETTING CLOB(32K) Valor.

Apndice D. Vistas de catlogo 635


SYSCAT.COLUMNS

SYSCAT.COLUMNS
Cada fila representa una columna definida para una tabla, vista o apodo.
Tabla 59. Vista de catlogo SYSCAT.COLUMNS
Posibili-
dad de
Nombre de columna Tipo de datos nulos Descripcin
TABSCHEMA VARCHAR(128) Nombre de esquema de la tabla, vista o
apodo que contiene la columna.
TABNAME VARCHAR(128) Nombre no calificado de la tabla, vista o
apodo que contiene la columna.
COLNAME VARCHAR(128) Nombre de la columna.
COLNO SMALLINT Nmero de esta columna en la tabla
(empezando por 0).
TYPESCHEMA VARCHAR(128) Nombre de esquema del tipo de datos de la
columna.
TYPENAME VARCHAR(128) Nombre no calificado del tipo de datos de la
columna.
LENGTH INTEGER Longitud mxima de los datos. 0 para tipos
diferenciados. La columna LENGTH indica
la precisin para los campos DECIMAL.
SCALE SMALLINT Escala si el tipo de columna es DECIMAL; 0
en caso contrario.
DEFAULT1 VARCHAR(254) Y El valor por omisin de la columna de una
tabla expresado como una constante, un
registro especial o una funcin de conversin
adecuada para el tipo de datos de la
columna. Tambin puede ser la palabra clave
NULL. Los valores se pueden convertir a
partir de lo que se ha especificado como
valor por omisin. Por ejemplo, las
constantes de fecha y hora se muestran en
formato ISO, los nombres de funciones de
conversin se califican con nombres de
esquema y los identificadores se delimitan.
El valor nulo si no se ha especificado una
clusula DEFAULT o la columna es una
columna de vista.
NULLS2 CHAR(1) Atributo de capacidad de nulos para la
columna.
N = La columna no puede contener nulos
Y = La columna puede contener nulos
El valor puede ser N para una columna de
vista derivada de una expresin o funcin.
No obstante, estas columnas permiten
valores nulos cuando la sentencia que utiliza
la vista se procesa con avisos para errores
aritmticos.
CODEPAGE SMALLINT Pgina de cdigos utilizada para los datos de
esta columna; 0 si la columna est definida
como FOR BIT DATA o no es de tipo serie.

636 Consulta de SQL - Volumen 1


SYSCAT.COLUMNS

Tabla 59. Vista de catlogo SYSCAT.COLUMNS (continuacin)


Posibili-
dad de
Nombre de columna Tipo de datos nulos Descripcin
LOGGED CHAR(1) Slo se aplica a las columnas cuyo tipo es
LOB o diferenciado en base a LOB; blanco en
caso contrario.
N = La columna no se anota
cronolgicamente
Y = La columna se anota
cronolgicamente
COMPACT CHAR(1) Slo se aplica a las columnas cuyo tipo es
LOB o diferenciado en base a LOB; blanco en
caso contrario.
N = La columna no se compacta
Y = La columna se compacta en el
almacenamiento
COLCARD BIGINT Nmero de valores diferenciados de la
columna; -1 se no se recopilan estadsticas; -2
para columnas heredadas y columnas de
tablas de jerarqua.
HIGH2KEY3 VARCHAR(254) Y El segundo valor de datos ms alto.
Representacin de datos numricos
modificados por literales de caracteres. Vaco
si no se recopilan estadsticas. Vaco para
columnas heredadas y columnas de tablas
jerrquicas.
LOW2KEY3 VARCHAR(254) Y El segundo valor de datos ms bajo.
Representacin de datos numricos
modificados por literales de caracteres. Vaco
si no se recopilan estadsticas. Vaco para
columnas heredadas y columnas de tablas
jerrquicas.
AVGCOLLEN INTEGER Espacio promedio (en bytes) necesario para
la columna; -1 si es un campo de tipo long o
LOB o si no se recopilan estadsticas; -2 para
columnas heredadas y columnas de tablas
jerrquicas.
KEYSEQ SMALLINT Y La posicin numrica de la columna dentro
de la clave primaria de la tabla. Nulo para
columnas de subtablas y tablas jerrquicas.
PARTKEYSEQ SMALLINT Y La posicin numrica de la columna dentro
de la clave de distribucin de la tabla; 0 o el
valor nulo si la columna no forma parte de
la clave de distribucin. Nulo para columnas
de subtablas y tablas jerrquicas.
NQUANTILES SMALLINT Nmero de valores cuantiles registrados en
SYSCAT.COLDIST para esta columna; -1 si
no se recopilan estadsticas; -2 para columnas
heredadas y columnas de tablas jerrquicas.

Apndice D. Vistas de catlogo 637


SYSCAT.COLUMNS

Tabla 59. Vista de catlogo SYSCAT.COLUMNS (continuacin)


Posibili-
dad de
Nombre de columna Tipo de datos nulos Descripcin
NMOSTFREQ SMALLINT Nmero de valores ms frecuentes
registrados en SYSCAT.COLDIST para esta
columna; -1 si no se recopilan estadsticas; -2
para columnas heredadas y columnas de
tablas jerrquicas.
NUMNULLS BIGINT Nmero de valores nulos de la columna; -1
si no se recopilan estadsticas.
TARGET_TYPESCHEMA VARCHAR(128) Y Nombre de esquema del tipo de fila de
destino, si el tipo de esta columna es
REFERENCE; valor nulo en caso contrario.
TARGET_TYPENAME VACHAR(128) Y Nombre no calificado del tipo de fila de
destino, si el tipo de esta columna es
REFERENCE; valor nulo en caso contrario.
SCOPE_TABSCHEMA VARCHAR(128) Y Nombre de esquema del mbito (valor de
destino), si el tipo de esta columna es
REFERENCE; valor nulo en caso contrario.
SCOPE_TABNAME VARCHAR(128) Y Nombre no calificado del mbito (tabla de
destino), si el tipo de esta columna es
REFERENCE; valor nulo en caso contrario.
SOURCE_TABSCHEMA VARCHAR(128) Y Para columnas de tablas o vistas con tipo, el
nombre de esquema de la tabla o vista en la
que se ha incorporado la columna por
primera vez. Para columnas no heredadas, es
igual que TABSCHEMA. Nulo para
columnas de tablas y vistas sin tipo.
SOURCE_TABNAME VARCHAR(128) Y Para columnas de tablas y vistas con tipo, el
nombre no calificado de la tabla o vista en la
que se ha incorporado la columna por
primera vez. Para columnas no heredadas, es
igual que TABNAME. Nulo para columnas
de tablas y vistas sin tipo.

638 Consulta de SQL - Volumen 1


SYSCAT.COLUMNS

Tabla 59. Vista de catlogo SYSCAT.COLUMNS (continuacin)


Posibili-
dad de
Nombre de columna Tipo de datos nulos Descripcin
DL_FEATURES CHAR(10) Y Slo se aplica a columnas de tipo
DATALINK; blancos en caso contrario. Cada
posicin de byte se define de la manera
siguiente:
1 = Tipo de enlace (U para URL)
2 = Control de enlace (F para archivo;
N para ninguno)
3 = Integridad (A para todos; N para
ninguno)
4 = Permiso de lectura (F para sistema
de archivos; D para base de datos)
5 = Permiso de escritura (F para sistema
de archivos; B para bloqueado; A para
administracin que necesita un smbolo
para su actualizacin; N para
administracin que no necesita ningn
smbolo para su actualizacin)
6 = Recuperacin (Y para s; N para
no)
7 = En eliminacin de enlace (R para
restaurar; D para suprimir; N para no
aplicable)
Los bytes del 8 al 10 se reservan para su
utilizacin en el futuro.
SPECIAL_PROPS CHAR(8) Y Slo se aplica a columnas de tipo
REFERENCE; blancos en caso contrario.
Cada posicin de byte se define de la
manera siguiente:
1 = Columna identificador de objeto
(OID) (Y para s; N para no)
2 = Generado por el usuario o generado
por el sistema (U para usuario; S para
sistema)
Los bytes del 3 al 8 estn reservados para su
utilizacin en el futuro.
HIDDEN CHAR(1) Tipo de columna oculta.
S = Columna oculta gestionada por el
sistema
Blanco = La columna no est oculta
INLINE_LENGTH INTEGER Longitud mxima de datos LONG
VARCHAR o LOB que se pueden clasificar
como datos VARCHAR en la tabla base. El
valor inicial es 0.
IDENTITY CHAR(1) N = No es una columna de identidad
Y = Columna de identidad

Apndice D. Vistas de catlogo 639


SYSCAT.COLUMNS

Tabla 59. Vista de catlogo SYSCAT.COLUMNS (continuacin)


Posibili-
dad de
Nombre de columna Tipo de datos nulos Descripcin
GENERATED CHAR(1) Tipo de columna generada.
A = Siembre se genera un valor de
columna
D = Por omisin se genera un valor de
columna
Blanco = No se genera ninguna columna
TEXT CLOB(2M) Para columnas definidas como generadas
como expresin, este campo contiene el texto
de la expresin de columna generada,
comenzando por la palabra clave AS.
COMPRESS CHAR(1) O = Compresin desactivada
S = Comprimir valores por omisin del
sistema
AVGDISTINCTPERPAGE DOUBLE Y Para su utilizacin en el futuro.
PAGEVARIANCERATIO DOUBLE Y Para su utilizacin en el futuro.
SUB_COUNT SMALLINT Nmero medio de subelementos de la
columna. Slo se aplica a columnas de tipo
serie de caracteres.
SUB_DELIM_LENGTH SMALLINT Longitud media de los delimitadores que
separan cada subelemento de la columna.
Slo se aplica a columnas de tipo serie de
caracteres.
IMPLICITVALUE4 VARCHAR(254) Y Para una columna que se ha aadido a una
tabla despus de que se creara la tabla,
almacena el valor por omisin en el
momento en que se aadi la columna. Para
una columna definida cuando se cre la
tabla, almacena un valor nulo.
SECLABELNAME VARCHAR(128) Nombre de la etiqueta de seguridad asociada
a la columna si se trata de una columna
protegida; valor nulo en caso contrario.
REMARKS VARCHAR(254) Y Comentarios proporcionados por el usuario
o nulo.

640 Consulta de SQL - Volumen 1


SYSCAT.COLUMNS

Tabla 59. Vista de catlogo SYSCAT.COLUMNS (continuacin)


Posibili-
dad de
Nombre de columna Tipo de datos nulos Descripcin

Notas:
1. Para la Versin 2.1.0, los nombres de funcin de conversin no se han delimitado y pueden seguir apareciendo de
esta manera en la columna DEFAULT. Tambin, algunas columnas de vistas incluyen valores por omisin que
todava aparecen en la columna DEFAULT.
2. Empezando en la Versin 2, el valor D (que indica ningn nulo con valor por omisin) ya no se utiliza. En su
lugar, la utilizacin de WITH DEFAULT se indica por un valor no nulo en la columna DEFAULT.
3. En la vista de catlogo, los valores de HIGH2KEY y de LOW2KEY siempre se muestran en la pgina de cdigos
de la base de datos y pueden contener caracteres de sustitucin. Sin embargo, las estadsticas se renen
internamente en la pgina de cdigos de la tabla de la columna y, por tanto, utilizarn los valores reales de la
columna cuando se apliquen durante la optimizacin de la consulta.
4. Se permite enlazar una particin de datos a no ser que IMPLICITVALUE para una columna especfica sea un
valor no nulo tanto para la columna fuente como para la columna de destino, y los valores no coincidan. En este
caso, debe eliminar la tabla fuente y volverla a crear. Una columna puede tener un valor no nulo en el campo
IMPLICITVALUE si se cumplen una de las siguientes condiciones:
v La columna se crea como resultado de una sentencia ALTER TABLE...ADD COLUMN.
v El valor IMPLICITVALUE se propaga desde una fuente durante la funcin de enlazar
v El valor IMPLICITVALUE se hereda de la tabla fuente durante el desenlace
v El campo IMPLICITVALUE se establece durante la migracin de la Versin 8 a la Versin 9, donde se
determina que es una columna aadida o que puede ser una columna aadida. Si la base de datos no sabe con
certeza si la columna es o no aadida, se trata como aadida. Una columna aadida es una columna creada
como resultado de una sentencia ALTER TABLE...ADD COLUMN.
Para evitar estas incoherencias durante escenarios que no sean de migracin, se recomienda crear siempre las
tablas que se van a enlazar a todas las columnas ya definidas. Es decir, se recomienda no utilizar nunca la
sentencia ALTER TABLE para aadir columnas a una tabla antes de enlazarla.

Tareas relacionadas:
v Attaching a data partition en Administration Guide: Implementation

Apndice D. Vistas de catlogo 641


SYSCAT.COLUSE

SYSCAT.COLUSE
Cada fila representa una columna a la que se hace referencia en la clusula
DIMENSIONS de una sentencia CREATE TABLE.
Tabla 60. Vista de catlogo SYSCAT.COLUSE
Posibili-
dad de
Nombre de columna Tipo de datos nulos Descripcin
TABSCHEMA VARCHAR(128) Nombre de esquema de la tabla que contiene
la columna.
TABNAME VARCHAR(128) Nombre no calificado de la tabla que
contiene la columna.
COLNAME VARCHAR(128) Nombre de la columna.
DIMENSION SMALLINT Nmero de dimensiones, basado en el orden
de las dimensiones especificadas en la
clusula DIMENSIONS (la posicin inicial es
0). Para una dimensin compuesta, este valor
ser el mismo para cada componente de la
dimensin.
COLSEQ SMALLINT Posicin numrica de la columna en la
dimensin a la que pertenece (la posicin
inicial es 0). El valor es 0 para una sola
columna en una dimensin no compuesta.
TYPE CHAR(1) Tipo de dimensin.
C = Clster o clster de varias
dimensiones
P = Particionamiento

642 Consulta de SQL - Volumen 1


SYSCAT.CONSTDEP

SYSCAT.CONSTDEP
Cada fila representa una dependencia de una restriccin sobre algn otro objeto.
La restriccin depende del objeto de tipo BTYPE de nombre BNAME, de modo que
un cambio en el objeto afecta a la restriccin.
Tabla 61. Vista de catlogo SYSCAT.CONSTDEP
Posibili-
dad de
Nombre de columna Tipo de datos nulos Descripcin
CONSTNAME VARCHAR(128) Nombre no calificado de la restriccin.
TABSCHEMA VARCHAR(128) Nombre de esquema de la tabla a la que se
aplica la restriccin.
TABNAME VARCHAR(128) Nombre no calificado de la tabla a la que se
aplica la restriccin.
BTYPE CHAR(1) Tipo de objeto del que depende la
restriccin. Los valores posibles son:
F = Instancia de rutina
I = ndice
R = Tipo estructurado
BSCHEMA VARCHAR(128) Nombre de esquema del objeto del que
depende la restriccin.
BNAME VARCHAR(128) Nombre no calificado del objeto del que
depende la restriccin.

Apndice D. Vistas de catlogo 643


SYSCAT.DATAPARTITIONEXPRESSION

SYSCAT.DATAPARTITIONEXPRESSION
Cada fila representa una expresin correspondiente a esta parte de la clave de
particionamiento de tabla.
Tabla 62. Vista de catlogo SYSCAT.DATAPARTITIONEXPRESSION
Posibili-
dad de
Nombre de columna Tipo de datos nulos Descripcin
TABSCHEMA VARCHAR(128) Nombre de esquema de la tabla
particionada.
TABNAME VARCHAR(128) Nombre no calificado de la tabla
particionada.
DATAPARTITIONKEYSEQ INTEGER ID de secuencia de la parte de clave de
expresin, empezando por 1.
DATAPARTITIONEXPRESSION CLOB(32K) Expresin correspondiente a esta entrada en
la secuencia, en sintaxis de SQL.
NULLSFIRST CHAR(1) N = Los valores nulos de esta expresin
se comparan altos
Y = Los valores nulos de esta expresin
se comparan bajos

644 Consulta de SQL - Volumen 1


SYSCAT.DATAPARTITIONS

SYSCAT.DATAPARTITIONS
Cada fila representa una particin de datos.
Tabla 63. Vista de catlogo SYSCAT.DATAPARTITIONS
Posibili-
dad de
Nombre de columna Tipo de datos nulos Descripcin
DATAPARTITIONNAME VARCHAR(128) Nombre de la particin de datos
TABSCHEMA VARCHAR(128) Nombre de esquema de la tabla a la que
pertenece esta particin de datos.
TABNAME VARCHAR(128) Nombre no calificado de la tabla a la que
pertenece esta particin de datos.
DATAPARTITIONID INTEGER Identificador de la particin de datos.
TBSPACEID INTEGER Y Identificador del espacio de tablas en el que
est almacenada esta particin de datos.
Nulo si STATUS es I.
PARTITIONOBJECTID INTEGER Y Identificador de la particin de datos dentro
del espacio de tablas.
LONG_TBSPACEID INTEGER Y Identificador del espacio de tablas en el que
se almacenan los datos largos. Nulo si
STATUS es I.
ACCESS_MODE CHAR(1) Estado de restriccin de acceso de la
particin de datos. Estos estados slo se
aplican a objetos que estn en estado
pendiente de establecer integridad o a
objetos procesados por una sentencia SET
INTEGRITY. Los valores posibles son:
D = No hay movimiento de datos
F = Acceso completo
N = No hay acceso
R = Acceso de slo lectura
STATUS VARCHAR(32) A = La particin de datos se acaba de
enlazar
D = La particin de datos est
desenlazada
I = Particin de datos desenlazada cuya
entrada en el catlogo se mantiene
nicamente durante la limpieza asncrona
del ndice; las filas con el valor de
STATUS I se eliminan cuando todos los
registros de ndice que hacen referencia a
la particin desenlazada se han
suprimido
Serie vaca = La particin de datos est
visible (estado normal)

Los bytes comprendidos entre el 2 y el 32


estn reservados para su utilizacin en el
futuro.
SEQNO INTEGER Nmero de secuencia de la particin de
datos (empezando por 0).

Apndice D. Vistas de catlogo 645


SYSCAT.DATAPARTITIONS

Tabla 63. Vista de catlogo SYSCAT.DATAPARTITIONS (continuacin)


Posibili-
dad de
Nombre de columna Tipo de datos nulos Descripcin
LOWINCLUSIVE CHAR(1) N = No incluye el valor de clave bajo
Y = Incluye el valor de clave bajo
LOWVALUE VARCHAR(512) Valor de clave bajo (una representacin de
serie de un valor de SQL) correspondiente a
esta particin de datos.
HIGHINCLUSIVE CHAR(1) N = No incluye el valor de clave alto
Y = Incluye el valor de clave alto
HIGHVALUE VARCHAR(512) Valor de clave alto (una representacin de
serie de un valor de SQL) correspondiente a
esta particin de datos.

646 Consulta de SQL - Volumen 1


SYSCAT.DATATYPES

SYSCAT.DATATYPES
Cada fila representa un tipo de datos incorporado o definido por el usuario.
Tabla 64. Vista de catlogo SYSCAT.DATATYPES
Posibili-
dad de
Nombre de columna Tipo de datos nulos Descripcin
TYPESCHEMA VARCHAR(128) Nombre de esquema del tipo de datos. El
nombre de esquema para tipos incorporados
es SYSIBM.
TYPENAME VARCHAR(128) Nombre no calificado del tipo de datos.
OWNER VARCHAR(128) ID de autorizacin bajo el cual se ha creado
el tipo.
SOURCESCHEMA VARCHAR(128) Y Nombre de esquema del tipo fuente para
tipos diferenciados. Para los tipos
estructurados definidos por el usuario, es el
esquema de tipo del tipo de representacin
de referencia. Nulo para los dems tipos.
SOURCENAME VARCHAR(128) Y Nombre no calificado del tipo fuente para
tipos diferenciados. Para los tipos
estructurados definidos por el usuario, es el
nombre de tipo del tipo de representacin de
referencia. Nulo para los dems tipos.
METATYPE CHAR(1) R = Tipo estructurado definido por el
usuario
S = Tipo predefinido por el sistema
T = Tipo diferenciado definido por el
usuario
TYPEID SMALLINT Identificador del tipo de datos
SOURCETYPEID SMALLINT Y Identificador del tipo fuente (nulo para tipos
incorporados). Para los tipos estructurados
definidos por el usuario, es el identificador
del tipo de representacin de referencia.
LENGTH INTEGER Longitud mxima del tipo. 0 para tipos con
parmetros incorporados (por ejemplo,
DECIMAL y VARCHAR). Para tipos
estructurados definidos por el usuario, es la
longitud del tipo de representacin de
referencia.
SCALE SMALLINT Escala para los tipos diferenciados o tipos de
representacin de referencia basados en el
tipo DECIMAL incorporado; o para los
dems tipos (incluido el propio DECIMAL).
Para los tipos estructurados definidos por el
usuario, indica la longitud del tipo de
representacin de referencia.
CODEPAGE SMALLINT Pgina de cdigos de base de datos para
tipos de serie, tipos diferenciados basados en
tipos de serie o tipos de representacin de
referencia; 0 en caso contrario.
CREATE_TIME TIMESTAMP Tiempo de creacin del tipo de datos.
ATTRCOUNT SMALLINT Nmero de atributos del tipo de datos.

Apndice D. Vistas de catlogo 647


SYSCAT.DATATYPES

Tabla 64. Vista de catlogo SYSCAT.DATATYPES (continuacin)


Posibili-
dad de
Nombre de columna Tipo de datos nulos Descripcin
INSTANTIABLE CHAR(1) N = No se pueden crear instancias del
tipo
Y = Se pueden crear instancias del tipo
WITH_FUNC_ACCESS CHAR(1) N = Los mtodos correspondientes a este
tipo no se pueden invocar utilizando
notacin de funcin
Y = Todos los mtodos correspondientes
a este tipo se pueden invocar utilizando
notacin de funcin
FINAL CHAR(1) N = El tipo definido por el usuario puede
tener subtipos
Y = El tipo definido por el usuario no
puede tener subtipos
INLINE_LENGTH INTEGER Longitud mxima de un tipo estructurado
que se puede conservar con una fila de tabla
base; 0 en caso contrario.
NATURAL_INLINE_LENGTH INTEGER Y Longitud en lnea natural generada por el
sistema de una instancia de un tipo
estructurado. Nulo si este tipo no es un tipo
estructurado.
JARSCHEMA VARCHAR(128) Y Nombre de esquema del JAR_ID que
identifica el archivo Jar que contiene la clase
Java que implementa el tipo de SQL. Nulo si
no se especifica la clusula EXTERNAL
NAME.
JAR_ID VARCHAR(128) Y Identificador del archivo Jar que contiene la
clase Java que implementa el tipo de SQL.
Nulo si no se especifica la clusula
EXTERNAL NAME.
CLASS VARCHAR(128) Y Clase Java que implementa el tipo de SQL.
Nulo si no se especifica la clusula
EXTERNAL NAME.
SQLJ_REPRESENTATION CHAR(1) Y SQLJ representation_spec de la clase Java
que implementa el tipo de SQL. Nulo si no
se especifica la clusula EXTERNAL NAME
... LANGUAGE JAVA REPRESENTATION
SPEC.
D = datos SQL
S = Serializable
ALTER_TIME TIMESTAMP Hora a la que se modific por ltima vez el
tipo de datos.
DEFINER1 VARCHAR(128) ID de autorizacin bajo el cual se ha creado
el tipo.
REMARKS VARCHAR(254) Y Comentarios proporcionados por el usuario
o nulo.

Notas:
1. La columna DEFINER se incluye por razones de compatibilidad con versiones anteriores. Consulte OWNER.

648 Consulta de SQL - Volumen 1


SYSCAT.DBAUTH

SYSCAT.DBAUTH
Cada fila representa un usuario o un grupo al que se ha otorgado una o ms
autorizaciones a nivel de base de datos.
Tabla 65. Vista de catlogo SYSCAT.DBAUTH
Posibili-
dad de
Nombre de columna Tipo de datos nulos Descripcin
GRANTOR VARCHAR(128) El que ha otorgado la autorizacin.
GRANTEE VARCHAR(128) El que mantiene la autorizacin.
GRANTEETYPE CHAR(1) G = Se otorga a un grupo
U = Se otorga a un usuario individual
BINDADDAUTH CHAR(1) Autorizacin para crear paquetes.
N = No se mantiene
Y = Se mantiene
CONNECTAUTH CHAR(1) Autorizacin para conectar con la base de
datos.
N = No se mantiene
Y = Se mantiene
CREATETABAUTH CHAR(1) Autorizacin para crear tablas.
N = No se mantiene
Y = Se mantiene
DBADMAUTH CHAR(1) Autorizacin DBADM.
N = No se mantiene
Y = Se mantiene
EXTERNALROUTINEAUTH CHAR(1) Autorizacin para crear rutinas externas.
N = No se mantiene
Y = Se mantiene
IMPLSCHEMAAUTH CHAR(1) Autorizacin para crear esquemas de forma
implcita, creando objetos en esquemas no
existentes.
N = No se mantiene
Y = Se mantiene
LOADAUTH CHAR(1) Autorizacin para utilizar el programa de
utilidad de carga DB2.
N = No se mantiene
Y = Se mantiene
NOFENCEAUTH CHAR(1) Autorizacin para crear funciones definidas
por el usuario no delimitadas.
N = No se mantiene
Y = Se mantiene
QUIESCECONNECTAUTH CHAR(1) Autorizacin para acceder a la base de datos
mientras est inactiva.
N = No se mantiene
Y = Se mantiene
LIBRARYADMAUTH CHAR(1) Reservado para su utilizacin en el futuro.

Apndice D. Vistas de catlogo 649


SYSCAT.DBAUTH

Tabla 65. Vista de catlogo SYSCAT.DBAUTH (continuacin)


Posibili-
dad de
Nombre de columna Tipo de datos nulos Descripcin
SECURITYADMAUTH CHAR(1) Autorizacin de administrador de seguridad.
N = No se mantiene
Y = Se mantiene

650 Consulta de SQL - Volumen 1


SYSCAT.DBPARTITIONGROUPDEF

SYSCAT.DBPARTITIONGROUPDEF
Cada fila representa una particin de base de datos que est contenida en un
grupo de particiones de base de datos.
Tabla 66. Vista de catlogo SYSCAT.DBPARTITIONGROUPDEF
Posibili-
dad de
Nombre de columna Tipo de datos nulos Descripcin
DBPGNAME VARCHAR(128) Nombre del grupo de particiones de base de
datos que contiene la particin de base de
datos.
DBPARTITIONNUM SMALLINT Nmero de particin de una particin de
base de datos que est contenida en el grupo
de particiones de base de datos. Un nmero
de particin vlido est entre 0 y 999
inclusive.
IN_USE CHAR(1) Estado de la particin de base de datos.
A = La particin de base de datos recin
aadida no est en el mapa de
distribucin, pero los contenedores
correspondientes a los espacios de tabla
del grupo de particiones de base de datos
se han creado; la particin de base de
datos se aade al mapa de distribucin
cuando la operacin de redistribucin del
grupo de particiones de base de datos
finaliza satisfactoriamente
D = La particin de base de datos se
eliminar cuando la operacin de
redistribucin del grupo de particiones de
base de datos finalice satisfactoriamente
T = La particin de base de datos recin
aadida no est en el mapa de
distribucin, y se ha aadido mediante la
clusula WITHOUT TABLESPACES; los
contenedores se deben aadir a los
espacios de tabla del grupo de particiones
de base de datos
Y = La particin de base de datos est en
el mapa de distribucin

Apndice D. Vistas de catlogo 651


SYSCAT.DBPARTITIONGROUPS

SYSCAT.DBPARTITIONGROUPS
Cada fila representa un grupo de particiones de base de datos.
Tabla 67. Vista de catlogo SYSCAT.DBPARTITIONGROUPS
Posibili-
dad de
Nombre de columna Tipo de datos nulos Descripcin
DBPGNAME VARCHAR(128) Nombre del grupo de particiones de base de
datos.
OWNER VARCHAR(128) ID de autorizacin bajo el que se ha creado
el grupo de particiones de base de datos.
PMAP_ID SMALLINT Identificador del mapa de distribucin en la
vista de catlogo SYSCAT.PARTITIONMAPS.
REDISTRIBUTE_PMAP_ID SMALLINT Identificador del mapa de distribucin que
se utiliza actualmente para la redistribucin;
-1 si actualmente no se est realizando
ninguna redistribucin.
CREATE_TIME TIMESTAMP Hora de creacin del grupo de particiones de
base de datos.
DEFINER1 VARCHAR(128) ID de autorizacin bajo el que se ha creado
el grupo de particiones de base de datos.
REMARKS VARCHAR(254) Y Comentarios proporcionados por el usuario
o nulo.

Notas:
1. La columna DEFINER se incluye por razones de compatibilidad con versiones anteriores. Consulte OWNER.

652 Consulta de SQL - Volumen 1


SYSCAT.EVENTMONITORS

SYSCAT.EVENTMONITORS
Cada fila representa un supervisor de sucesos.
Tabla 68. Vista de catlogo SYSCAT.EVENTMONITORS
Posibili-
dad de
Nombre de columna Tipo de datos nulos Descripcin
EVMONNAME VARCHAR(128) Nombre del supervisor de sucesos.
OWNER VARCHAR(128) ID de autorizacin bajo el que se ha creado
el supervisor de sucesos.
TARGET_TYPE CHAR(1) Tipo del destino en el que se graban los
datos del suceso.
F = Archivo
P = Conducto
T = Tabla
TARGET VARCHAR(256) Nombre del destino en el que se escriben los
datos del supervisor de sucesos de archivo o
de conexin. Para archivos, puede ser un
nombre de va de acceso absoluto o un
nombre de va de acceso relativo (relativo a
la va de acceso de la base de datos para la
base de datos; se puede ver utilizando el
mandato LIST ACTIVE DATABASES). Para
conexiones, puede ser un nombre de va de
acceso absoluto.
MAXFILES INTEGER Y El nmero mximo de archivos de sucesos
que permite este supervisor de sucesos en
una va de acceso de sucesos. Nulo si no hay
ningn mximo o si TARGET_TYPE no es F
(archivo).
MAXFILESIZE INTEGER Y Tamao mximo (en pginas de 4K) que
cada archivo de sucesos puede alcanzar
antes de que el supervisor de sucesos cree
un nuevo archivo. Nulo si no hay ningn
mximo o si TARGET_TYPE no es F
(archivo).
BUFFERSIZE INTEGER Y Tamao del almacenamiento intermedio (en
pginas de 4K) utilizado por los supervisores
de sucesos con los destinos de archivo; nulo
en caso contrario.
IO_MODE CHAR(1) Y Modalidad de entrada/salida (I/O) de
archivo.
B = Bloqueado
N = No bloqueado
Nulo = TARGET_TYPE no es F (archivo)
ni T (tabla)
WRITE_MODE CHAR(1) Y Indica cmo maneja este supervisor de
sucesos los datos de sucesos existentes
cuando se activa el supervisor.
A = Adjuntar
R = Sustituir
Nulo = TARGET_TYPE no es F (archivo)

Apndice D. Vistas de catlogo 653


SYSCAT.EVENTMONITORS

Tabla 68. Vista de catlogo SYSCAT.EVENTMONITORS (continuacin)


Posibili-
dad de
Nombre de columna Tipo de datos nulos Descripcin
AUTOSTART CHAR(1) Indica si este supervisor de sucesos se debe
activar automticamente cuando se inicia la
base de datos.
N = No
Y = S
DBPARTITIONNUM SMALLINT Nmero de la particin de base de datos en
la que el supervisor de sucesos ejecuta y
anota cronolgicamente los sucesos.
MONSCOPE CHAR(1) mbito de supervisin.
G = Global
L = Local
T = Cada particin de base de datos en la
que haya espacio de tablas
Blanco = Supervisor de sucesos WRITE
TO TABLE
EVMON_ACTIVATES INTEGER Nmero de veces que se ha activado el
supervisor de sucesos.
NODENUM1 SMALLINT Nmero de la particin de base de datos en
la que el supervisor de sucesos ejecuta y
anota cronolgicamente los sucesos.
DEFINER2 VARCHAR(128) ID de autorizacin bajo el que se ha creado
el supervisor de sucesos.
REMARKS VARCHAR(254) Y Reservado para su utilizacin en el futuro.

Notas:
1. La columna NODENUM se incluye por razones de compatibilidad con versiones anteriores. Consulte
DBPARTITIONNUM.
2. La columna DEFINER se incluye por razones de compatibilidad con versiones anteriores. Consulte OWNER.

654 Consulta de SQL - Volumen 1


SYSCAT.EVENTS

SYSCAT.EVENTS
Cada fila representa un suceso que se est supervisando. En general, un supervisor
de sucesos supervisa varios sucesos.
Tabla 69. Vista de catlogo SYSCAT.EVENTS
Posibili-
dad de
Nombre de columna Tipo de datos nulos Descripcin
EVMONNAME VARCHAR(128) Nombre del supervisor de sucesos que est
supervisando este suceso.
TYPE VARCHAR(18) Tipo del suceso que se supervisa. Los valores
posibles son:
CONNECTIONS
DATABASE
DEADLOCKS
DETAILDEADLOCKS
STATEMENTS
TABLES
TABLESPACES
TRANSACTIONS
FILTER CLOB(32K) Y Texto completo de la clusula WHERE que
se aplica a este suceso.

Apndice D. Vistas de catlogo 655


SYSCAT.EVENTTABLES

SYSCAT.EVENTS
Cada fila representa la tabla de destino de un supervisor de sucesos que escribe en
tablas SQL.
Tabla 70. Vista de catlogo SYSCAT.EVENTTABLES
Posibili-
dad de
Nombre de columna Tipo de datos nulos Descripcin
EVMONNAME VARCHAR(128) Nombre del supervisor de sucesos.
LOGICAL_GROUP VARCHAR(18) Nombre del grupo de datos lgicos. Los
valores posibles son:
BUFFERPOOL
CONN
CONNHEADER
CONTROL
DB
DEADLOCK
DLCONN
DLLOCK
STMT
SUBSECTION
TABLE
TABLESPACE
XACT
TABSCHEMA VARCHAR(128) Nombre de esquema de la tabla de destino.
TABNAME VARCHAR(128) Nombre no calificado de la tabla de destino.
PCTDEACTIVATE SMALLINT Un valor de porcentaje que especifica hasta
qu punto debe estar lleno un espacio de
tabla DMS para que un supervisor de
sucesos lo desactive de forma automtica.
Establecido en 100 para los espacios de tabla
SMS.

656 Consulta de SQL - Volumen 1


SYSCAT.FULLHIERARCHIES

SYSCAT.FULLHIERARCHIES
Cada fila representa la relacin entre una subtabla y una supertabla, un subtipo y
un supertipo o una subvista y una supervista. Todas las relaciones jerrquicas,
incluyendo las inmediatas, se incluyen en esta vista.
Tabla 71. Vista de catlogo SYSCAT.FULLHIERARCHIES
Posibili-
dad de
Nombre de columna Tipo de datos nulos Descripcin
METATYPE CHAR(1) Tipo de relacin.
R = Entre tipos estructurados
U = Entre tablas con tipo
W = Entre vistas con tipo
SUB_SCHEMA VARCHAR(128) Nombre de esquema de subtipo, subtabla o
subvista.
SUB_NAME VARCHAR(128) Nombre no calificado de subtipo, subtabla o
subvista.
SUPER_SCHEMA VARCHAR(128) Nombre de esquema de supertipo,
supertabla o supervista.
SUPER_NAME VARCHAR(128) Nombre no calificado de supertipo,
supertabla o supervista.
ROOT_SCHEMA VARCHAR(128) Nombre de esquema de la tabla, vista o tipo
que est en la raz de la jerarqua.
ROOT_NAME VARCHAR(128) Nombre no calificado de la tabla, vista o tipo
que est en la raz de la jerarqua.

Apndice D. Vistas de catlogo 657


SYSCAT.FUNCMAPOPTIONS

SYSCAT.FUNCMAPOPTIONS
Cada fila representa un valor de opcin de correlacin de funciones.
Tabla 72. Vista de catlogo SYSCAT.FUNCMAPOPTIONS
Posibili-
dad de
Nombre de columna Tipo de datos nulos Descripcin
FUNCTION_MAPPING VARCHAR(128) Nombre de la correlacin de funciones.
OPTION VARCHAR(128) Nombre de la opcin de correlacin de
funciones.
SETTING VARCHAR(2048) Valor de la opcin de correlacin de
funciones.

658 Consulta de SQL - Volumen 1


SYSCAT.FUNCMAPPARMOPTIONS

SYSCAT.FUNCMAPPARMOPTIONS
Cada fila representa un valor de opcin de parmetro de correlacin de funciones.
Tabla 73. Vista de catlogo SYSCAT.FUNCMAPPARMOPTIONS
Posibili-
dad de
Nombre de columna Tipo de datos nulos Descripcin
FUNCTION_MAPPING VARCHAR(128) Nombre de la correlacin de funciones.
ORDINAL SMALLINT Posicin del parmetro
LOCATION CHAR(1) Ubicacin del parmetro
L = Parmetro local
R = Parmetro remoto
OPTION VARCHAR(128) Nombre de la opcin de parmetro de
correlacin de funciones.
SETTING VARCHAR(2048) Valor de la opcin de parmetro de
correlacin de funciones.

Apndice D. Vistas de catlogo 659


SYSCAT.FUNCMAPPINGS

SYSCAT.FUNCMAPPINGS
Cada fila representa una correlacin de funciones.
Tabla 74. Vista de catlogo SYSCAT.FUNCMAPPINGS
Posibili-
dad de
Nombre de columna Tipo de datos nulos Descripcin
FUNCTION_MAPPING VARCHAR(128) Nombre de la correlacin de funciones
(puede ser generada por el sistema).
FUNCSCHEMA VARCHAR(128) Y Nombre de esquema de la funcin. Si es
nulo, se supone que la funcin es una
funcin incorporada.
FUNCNAME VARCHAR(1024) Y Nombre no calificado de la funcin definida
por el usuario o incorporada.
FUNCID INTEGER Y Identificador de la funcin.
SPECIFICNAME VARCHAR(128) Y Nombre de la instancia de la rutina (puede
ser un nombre generado por el sistema).
OWNER VARCHAR(128) ID de autorizacin bajo el cual se ha creado
la correlacin. SYSIBM indica que se trata
de una funcin incorporada.
WRAPNAME VARCHAR(128) Y Derivador al que se aplica esta correlacin.
SERVERNAME VARCHAR(128) Y Nombre de la fuente de datos.
SERVERTYPE VARCHAR (30) Y Tipo de fuente de datos al que se aplica esta
correlacin.
SERVERVERSION VARCHAR(18) Y Versin del tipo de servidor al que se aplica
sta correlacin.
CREATE_TIME TIMESTAMP Hora a la que se ha creado la correlacin.
1
DEFINER VARCHAR(128) ID de autorizacin bajo el cual se ha creado
la correlacin. SYSIBM indica que se trata
de una funcin incorporada.
REMARKS VARCHAR(254) Y Comentarios proporcionados por el usuario
o nulo.

Notas:
1. La columna DEFINER se incluye por razones de compatibilidad con versiones anteriores. Consulte OWNER.

660 Consulta de SQL - Volumen 1


SYSCAT.HIERARCHIES

SYSCAT.HIERARCHIES
Cada fila representa la relacin entre una subtabla y su supertabla inmediata, un
subtipo y su supertipo inmediato o una subvista y su supervista inmediata. Slo
las relaciones jerrquicas inmediatas se incluyen en esta vista.
Tabla 75. Vista de catlogo SYSCAT.HIERARCHIES
Posibili-
dad de
Nombre de columna Tipo de datos nulos Descripcin
METATYPE CHAR(1) Tipo de relacin.
R = Entre tipos estructurados
U = Entre tablas con tipo
W = Entre vistas con tipo
SUB_SCHEMA VARCHAR(128) Nombre de esquema de subtipo, subtabla o
subvista.
SUB_NAME VARCHAR(128) Nombre no calificado de subtipo, subtabla o
subvista.
SUPER_SCHEMA VARCHAR(128) Nombre de esquema de supertipo,
supertabla o supervista.
SUPER_NAME VARCHAR(128) Nombre no calificado de supertipo,
supertabla o supervista.
ROOT_SCHEMA VARCHAR(128) Nombre de esquema de la tabla, vista o tipo
que est en la raz de la jerarqua.
ROOT_NAME VARCHAR(128) Nombre no calificado de la tabla, vista o tipo
que est en la raz de la jerarqua.

Apndice D. Vistas de catlogo 661


SYSCAT.INDEXAUTH

SYSCAT.INDEXAUTH
Cada fila representa un usuario o grupo al que se ha otorgado el privilegio
CONTROL sobre un ndice.
Tabla 76. Vista de catlogo SYSCAT.INDEXAUTH
Posibili-
dad de
Nombre de columna Tipo de datos nulos Descripcin
GRANTOR VARCHAR(128) El que ha otorgado el privilegio.
GRANTEE VARCHAR(128) El que mantiene el privilegio.
GRANTEETYPE CHAR(1) G = Se otorga a un grupo
U = Se otorga a un usuario individual
INDSCHEMA VARCHAR(128) Nombre de esquema del ndice.
INDNAME VARCHAR(128) Nombre no calificado del ndice.
CONTROLAUTH CHAR(1) Privilegio CONTROL.
N = No se mantiene
Y = Se mantiene

662 Consulta de SQL - Volumen 1


SYSCAT.INDEXCOLUSE

SYSCAT.INDEXCOLUSE
Cada fila representa una columna que interviene en un ndice.
Tabla 77. Vista de catlogo SYSCAT.INDEXCOLUSE
Posibili-
dad de
Nombre de columna Tipo de datos nulos Descripcin
INDSCHEMA VARCHAR(128) Nombre de esquema del ndice.
INDNAME VARCHAR(128) Nombre no calificado del ndice.
COLNAME VARCHAR(128) Nombre de la columna.
COLSEQ SMALLINT Posicin numrica de la columna en el ndice
(la posicin inicial es 1).
COLORDER CHAR(1) Orden de los valores de esta columna del
ndice. Los valores posibles son:
A = Ascendente
D = Descendente
I = Columna INCLUDE (se pasa por alto
el orden)

Apndice D. Vistas de catlogo 663


SYSCAT.INDEXDEP

SYSCAT.INDEXDEP
Cada fila representa una dependencia de un ndice respecto de algn otro objeto.
El ndice depende de un objeto de tipo BTYPE y nombre BNAME, de modo que
un cambio en el objeto afecta al ndice.
Tabla 78. Vista de catlogo SYSCAT.INDEXDEP
Posibili-
dad de
Nombre de columna Tipo de datos nulos Descripcin
INDSCHEMA VARCHAR(128) Nombre de esquema del ndice.
INDNAME VARCHAR(128) Nombre no calificado del ndice.
BTYPE CHAR(1) Tipo de objeto sobre el que hay una
dependencia. Los valores posibles son:
A = Alias
B = Activador
F = Instancia de rutina
H = Tabla de jerarqua
K = Paquete
L = Tabla desenlazada
O = Dependencia de privilegios en todas
las subtablas o subvistas de una jerarqua
de tablas o de vistas
Q = Secuencia
R = Tipo estructurado
S = Tabla de consultas materializadas
T = Tabla (sin tipo)
U = Tabla con tipo
V = Vista (sin tipo)
W = Vista con tipo
X = Extensin de ndice
Z = Objeto XSR
BSCHEMA VARCHAR(128) Nombre de esquema del objeto sobre el que
hay una dependencia.
BNAME VARCHAR(128) Nombre no calificado del objeto sobre el que
hay una dependencia. Para rutinas (BTYPE =
F), es el nombre especfico.
TABAUTH SMALLINT Y Si BTYPE = O, S, T, U, V o W,
codifica los privilegios sobre la tabla o vista
que necesita el ndice dependiente; valor
nulo en caso contrario.

664 Consulta de SQL - Volumen 1


SYSCAT.INDEXES

SYSCAT.INDEXES
Cada fila representa un ndice. Los ndices en tablas con tipo se representan
mediante dos filas: una para el ndice lgico de la tabla con tipo y otro para el
ndice-H de la tabla de jerarqua.
Tabla 79. Vista de catlogo SYSCAT.INDEXES
Posibili-
dad de
Nombre de columna Tipo de datos nulos Descripcin
INDSCHEMA VARCHAR(128) Nombre de esquema del ndice.
INDNAME VARCHAR(128) Nombre no calificado del ndice.
OWNER VARCHAR(128) ID de autorizacin bajo el cual se ha creado
el ndice.
TABSCHEMA VARCHAR(128) Nombre de esquema de la tabla o apodo en
el que se define el ndice.
TABNAME VARCHAR(128) Nombre no calificado de la tabla o apodo en
el que se define el ndice.
COLNAMES VARCHAR(640) Esta columna ya no se utiliza y se eliminar
en el prximo release. Utilice
SYSCAT.INDEXCOLUSE para obtener esta
informacin.
UNIQUERULE CHAR(1) Regla de unicidad.
D = Permite duplicados
U = Unicidad
P = Implanta clave primaria
MADE_UNIQUE CHAR(1) N = El ndice permanece tal como se ha
creado
Y = El ndice era de no unicidad
originalmente, pero se ha convertido en
un ndice de unicidad para dar soporte a
una restriccin de clave primaria o de
unicidad. Si se elimina la restriccin, el
ndice vuelve a ser de no unicidad.
COLCOUNT SMALLINT El nmero de columnas de la clave, ms el
nmero de columnas INCLUDE, si hay
alguna.
UNIQUE_COLCOUNT SMALLINT Nmero de columnas necesarias para una
clave de unicidad. Siempre es <=
COLCOUNT, y < COLCOUNT slo si hay
columnas de inclusin; -1 si el ndice no
tiene clave de unicidad (es decir, permite
duplicados).

Apndice D. Vistas de catlogo 665


SYSCAT.INDEXES

Tabla 79. Vista de catlogo SYSCAT.INDEXES (continuacin)


Posibili-
dad de
Nombre de columna Tipo de datos nulos Descripcin
5
INDEXTYPE CHAR(4) Tipo de ndice.
BLOK = ndice de bloques
CLUS = ndice de clster (controla la
ubicacin fsica de las filas recin
insertadas)
DIM = ndice de bloques de dimensin
REG = ndice regular
XPTH = ndice de vas de acceso XML
XRGN = ndice de regiones XML
XVIL = ndice sobre columna XML
(lgico)
XVIP = ndice sobre columna XML
(fsico)
ENTRYTYPE CHAR(1) H = Esta fila representa un ndice en una
tabla de jerarqua
L = Esta fila representa un ndice lgico
en una tabla con tipo
Blanco = Esta fila representa un ndice en
una tabla sin tipo
PCTFREE SMALLINT Porcentaje de cada pgina de ndice que se
debe reservar durante la creacin inicial del
ndice. Este espacio est disponible para
inserciones de datos despus de que se cree
el ndice.
IID SMALLINT Identificador del ndice.
NLEAF BIGINT Nmero de pginas de ndice; -1 si no se
recopilan estadsticas.
NLEVELS SMALLINT Nmero de niveles de ndice; -1 si no se
recopilan estadsticas.
FIRSTKEYCARD BIGINT Nmero de valores de primera clave
diferenciada; -1 si no se recopilan
estadsticas.
FIRST2KEYCARD BIGINT Nmero de claves diferenciadas que utilizan
las dos primeras columnas del ndice; -1 si
no se recopilan estadsticas o si no se aplica.
FIRST3KEYCARD BIGINT Nmero de claves diferenciadas que utilizan
las tres primeras columnas del ndice; -1 si
no se recopilan estadsticas o si no se aplica.
FIRST4KEYCARD BIGINT Nmero de claves diferenciadas que utilizan
las cuatro primeras columnas del ndice; -1 si
no se recopilan estadsticas o si no se aplica.
FULLKEYCARD BIGINT Nmero de valores de clave completa
diferenciada; -1 si no se recopilan
estadsticas.
CLUSTERRATIO3 SMALLINT Grado de clster de datos con el ndice; -1 si
no se recopilan estadsticas o si se recopilan
estadsticas detalladas de ndice (en este caso
se utilizar CLUSTERFACTOR en su lugar).

666 Consulta de SQL - Volumen 1


SYSCAT.INDEXES

Tabla 79. Vista de catlogo SYSCAT.INDEXES (continuacin)


Posibili-
dad de
Nombre de columna Tipo de datos nulos Descripcin
3
CLUSTERFACTOR DOUBLE Mejor medicin del grado de clster; -1 si no
se recopilan estadsticas o si el ndice se
define sobre un apodo.
SEQUENTIAL_PAGES BIGINT Nmero de pginas ubicadas en disco por
orden de clave de ndice, con pocos o ningn
hueco entre ellas; -1 si no se recopilan
estadsticas.
DENSITY INTEGER Proporcin de SEQUENTIAL_PAGES para
numerar las pginas del rango de pginas
ocupadas por el ndice, expresada como un
porcentaje (entero entre 0 y 100; -1 si no se
recopilan estadsticas.
USER_DEFINED SMALLINT 1 si un usuario ha definido este ndice y no
se ha eliminado; 0 en caso contrario.
SYSTEM_REQUIRED SMALLINT 1 si se cumple una de las condiciones
siguientes:
Este ndice es necesario para una
restriccin de clave primaria o de
unicidad o bien este ndice es un
ndice de bloques de dimensin o un
ndice de bloques compuestos para
una tabla con clsteres de varias
dimensiones (MDC).
Se trata de un ndice en la columna
identificador de objeto (OID) de una
tabla con tipo.
2 si se cumplen estas dos condiciones:
Este ndice es necesario para una
restriccin de clave primaria o de
unicidad o bien este ndice es un
ndice de bloques de dimensin o un
ndice de bloques compuestos para
una tabla MDC.
Se trata del ndice en la columna OID
de una tabla con tipo.
De lo contrario, 0.
CREATE_TIME TIMESTAMP Hora en que se ha creado el ndice.
STATS_TIME TIMESTAMP Y ltima vez que se ha realizado un cambio en
las estadsticas registradas para este ndice.
Nulo si no hay estadsticas disponibles.
PAGE_FETCH_PAIRS3 VARCHAR(520) Una lista de pares de enteros, representada
en la forma de caracteres. Cada par
representa el nmero de pginas de un
almacenamiento intermedio hipottico y el
nmero de lecturas de pginas necesario
para explorar la tabla con este ndice
utilizando dicho almacenamiento intermedio
hipottico. Serie de longitud cero si no hay
datos disponibles.

Apndice D. Vistas de catlogo 667


SYSCAT.INDEXES

Tabla 79. Vista de catlogo SYSCAT.INDEXES (continuacin)


Posibili-
dad de
Nombre de columna Tipo de datos nulos Descripcin
MINPCTUSED SMALLINT Un valor entero distinto de cero indica que
el ndice est habilitado para la
defragmentacin en lnea y representa el
porcentaje mnimo de espacio utilizado en
una pgina antes de que se pueda intentar
una fusin de pgina. El valor cero indica
que no se intenta ms fusiones de pgina.
REVERSE_SCANS CHAR(1) N = El ndice no da soporte a las
exploraciones invertidas
Y = El ndice da soporte a las
exploraciones invertidas
INTERNAL_FORMAT SMALLINT Los valores posibles son:
1 = El ndice no tiene punteros que
apunten hacia atrs
2 o mayor = El ndice tiene punteros que
apuntan hacia atrs
6 = El ndice es un ndice de bloques
compuestos
IESCHEMA VARCHAR(128) Y Nombre de esquema de la extensin del
ndice. Nulo para ndices ordinarios.
IENAME VARCHAR(18) Y Nombre no calificado de la extensin del
ndice. Nulo para ndices ordinarios.
IEARGUMENTS CLOB(32K) Y Informacin externa del parmetro
especificado cuando se crea el ndice. Nulo
para ndices ordinarios.
INDEX_OBJECTID INTEGER Identificador del objeto de ndice.
NUMRIDS BIGINT Nmero total de identificadores de fila (RID)
o identificadores de bloque (BID) del ndice;
-1 si no se conoce.
NUMRIDS_DELETED BIGINT Nmero total de identificadores de filas (o
identificadores de bloque) del ndice que
estn marcados como suprimidos, excluidos
los identificadores de pginas de hojas en las
que todos los identificadores de filas estn
marcados como suprimidos.
NUM_EMPTY_LEAFS BIGINT Nmero total de pginas de hoja del ndice
que tienen todos los identificadores de filas
(o identificadores de bloqueo) marcados
como suprimidos.
AVERAGE_RANDOM_FETCH_ DOUBLE Promedio de pginas de la tabla aleatorias
PAGES1,2 entre los accesos a pginas secuenciales al
captar utilizando el ndice; -1 si no se
conoce.
AVERAGE_RANDOM_PAGES2 DOUBLE Promedio de pginas de la tabla aleatorias
entre los accesos a pginas secuenciales; -1 si
no se conoce.

668 Consulta de SQL - Volumen 1


SYSCAT.INDEXES

Tabla 79. Vista de catlogo SYSCAT.INDEXES (continuacin)


Posibili-
dad de
Nombre de columna Tipo de datos nulos Descripcin
2
AVERAGE_SEQUENCE_GAP DOUBLE Espacio entre las secuencias de pginas del
ndice. Detectado mediante una exploracin
de las pginas del ndice, cada espacio
representa el promedio de pginas del ndice
que deben captarse de forma aleatoria entre
las secuencias de las pginas del ndice; -1 si
no se conoce.
AVERAGE_SEQUENCE_FETCH_ DOUBLE Espacio entre las secuencias de pginas de la
GAP1,2 tabla al captar utilizando el ndice. Detectado
mediante una exploracin de las pginas del
ndice, cada espacio representa el promedio
de pginas de la tabla que deben captarse de
forma aleatoria entre las secuencias de las
pginas de la tabla; -1 si no se conoce.
AVERAGE_SEQUENCE_PAGES2 DOUBLE Promedio de pginas del ndice accesibles en
secuencia (es decir, el nmero de pginas del
ndice que la captacin previa detectara que
forman una secuencia); -1 si no se conoce.
AVERAGE_SEQUENCE_FETCH_ DOUBLE Promedio de pginas de la tabla accesibles
PAGES1,2 en secuencia (es decir, el nmero de pginas
de la tabla que la captacin previa detectara
que forman una secuencia) al captar
utilizando el ndice; -1 si no se conoce.
TBSPACEID INTEGER Identificador del espacio de tablas del ndice.
LEVEL2PCTFREE SMALLINT Porcentaje de cada pgina de nivel 2 de
ndice que se va a reservar durante la
creacin inicial del ndice. Este espacio est
disponible para inserciones futuras despus
de la creacin del ndice.
PAGESPLIT CHAR(1) Comportamiento de divisin de pginas del
ndice.
H = Alto
L = Bajo
S = Simtrico
AVGPARTITION_ SMALLINT Nivel de clster de los datos dentro de una
CLUSTERRATIO3 sola particin de datos. -1 si la tabla no est
particionada, si no se recopilan estadsticas o
si se recopilan estadsticas detalladas (en
cuyo caso se utiliza AVGPARTITION_
CLUSTERFACTOR en su lugar).
AVGPARTITION_ DOUBLE Mejor medicin del nivel de clster dentro
CLUSTERFACTOR3 de una sola particin de datos. -1 si la tabla
no est particionada, si no se recopilan
estadsticas o si el ndice est definido sobre
un apodo.

Apndice D. Vistas de catlogo 669


SYSCAT.INDEXES

Tabla 79. Vista de catlogo SYSCAT.INDEXES (continuacin)


Posibili-
dad de
Nombre de columna Tipo de datos nulos Descripcin
AVGPARTITION_PAGE_FETCH_ VARCHAR(520) Una lista de pares de enteros en formato de
PAIRS3 caracteres. Cada par representa un tamao
potencial de la agrupacin de
almacenamientos intermedios en las
captaciones de pginas correspondientes
necesarias para acceder a una sola particin
de datos desde la tabla. Serie de longitud
cero si no hay datos disponibles o si la tabla
no est particionada.
DATAPARTITION_ DOUBLE Una medicin estadstica del clster de
CLUSTERFACTOR claves de ndices con respecto a particiones
de datos. Es un nmero comprendido entre 0
y 1; 1 representa clster perfecto y 0
representa que no hay clster.
INDCARD BIGINT Cardinalidad del ndice. Puede ser distinta
de la cardinalidad de la tabla para ndices
que no tienen una relacin de uno a uno
entre las filas de la tabla y las entradas de
ndice.
DEFINER4 VARCHAR(128) ID de autorizacin bajo el cual se ha creado
el ndice.
REMARKS VARCHAR(254) Y Comentarios proporcionados por el usuario
o nulo.

Notas:
1. Cuando se utilizan espacios de tabla DMS, no puede calcularse esta estadstica.
2. No se recopilan estadsticas de captacin previa durante una operacin LOAD...STATISTICS YES o CREATE
INDEX...COLLECT STATISTICS ni cuando el parmetro de configuracin seqdetect est desactivado.
3. AVGPARTITION_CLUSTERRATIO, AVGPARTITION_CLUSTERFACTOR y
AVGPARTITION_PAGE_FETCH_PAIRS miden el grado de clster dentro de una sola particin de datos (clster
local). CLUSTERRATIO, CLUSTERFACTOR y PAGE_FETCH_PAIRS miden el grado de clster en la tabla entera
(clster global). Los valores de clster global y de clster local pueden diferir significativamente si la clave de
particionamiento de la tabla no es un prefijo de la clave de ndice o cuando la clave de particionamiento de la
tabla y la clave de ndice son independientes, en trminos lgicos, una de otra.
4. La columna DEFINER se incluye por razones de compatibilidad con versiones anteriores. Consulte OWNER.
5. Los ndices XPTH, XRGN y XVIP no son reconocidos por ninguna interfaz de programacin de aplicaciones que
devuelvan metadatos de ndice.

Informacin relacionada:
v SYSCAT.INDEXCOLUSE en la pgina 663

670 Consulta de SQL - Volumen 1


SYSCAT.INDEXEXPLOITRULES

SYSCAT.INDEXEXPLOITRULES
Cada fila representa una regla de explotacin de ndice.
Tabla 80. Vista de catlogo SYSCAT.INDEXEXPLOITRULES
Posibili-
dad de
Nombre de columna Tipo de datos nulos Descripcin
FUNCID INTEGER Identificador de la funcin.
SPECID SMALLINT Nmero de la especificacin de predicado.
IESCHEMA VARCHAR(128) Nombre de esquema de la extensin del
ndice.
IENAME VARCHAR(128) Nombre no calificado de la extensin del
ndice.
RULEID SMALLINT Identificador de la regla de explotacin.
SEARCHMETHODID SMALLINT Identificador del mtodo de bsqueda en la
extensin de ndice especfica.
SEARCHKEY VARCHAR(320) Clave utilizada para explotar el ndice.
SEARCHARGUMENT VARCHAR(1800) Argumentos de bsqueda utilizados para
explotar el ndice.
EXACT CHAR(1) N = La bsqueda en el ndice no es
exacta en trminos de evaluacin del
predicado
Y = La bsqueda en el ndice es exacta en
trminos de evaluacin del predicado

Apndice D. Vistas de catlogo 671


SYSCAT.INDEXEXTENSIONDEP

SYSCAT.INDEXEXTENSIONDEP
Cada fila representa una dependencia de una extensin de ndice respecto de algn
otro objeto. La extensin de ndice depende del objeto de tipo BTYPE de nombre
BNAME, de modo que un cambio en el objeto afecta a la extensin de ndice.
Tabla 81. Vista de catlogo SYSCAT.INDEXEXTENSIONDEP
Posibili-
dad de
Nombre de columna Tipo de datos nulos Descripcin
IESCHEMA VARCHAR(128) Nombre de esquema de la extensin del
ndice.
IENAME VARCHAR(128) Nombre no calificado de la extensin del
ndice.
BTYPE CHAR(1) Tipo de objeto sobre el que hay una
dependencia. Los valores posibles son:
A = Alias
B = Activador
F = Instancia de rutina
H = Tabla de jerarqua
K = Paquete
L = Tabla desenlazada
O = Dependencia de privilegios en todas
las subtablas o subvistas de una jerarqua
de tablas o de vistas
Q = Secuencia
R = Tipo estructurado
S = Tabla de consultas materializadas
T = Tabla (sin tipo)
U = Tabla con tipo
V = Vista (sin tipo)
W = Vista con tipo
X = Extensin de ndice
Z = Objeto XSR
BSCHEMA VARCHAR(128) Nombre de esquema del objeto sobre el que
hay una dependencia.
BNAME VARCHAR(128) Nombre no calificado del objeto sobre el que
hay una dependencia. Para rutinas (BTYPE =
F), es el nombre especfico.
TABAUTH SMALLINT Y Si BTYPE = O, S, T, U, V o W,
codifica los privilegios sobre la tabla o vista
que necesita la extensin de ndice
dependiente; valor nulo en caso contrario.

672 Consulta de SQL - Volumen 1


SYSCAT.INDEXEXTENSIONMETHODS

SYSCAT.INDEXEXTENSIONMETHODS
Cada fila representa un mtodo de bsqueda. Una extensin de ndice puede
contener ms de un mtodo de bsqueda.
Tabla 82. Vista de catlogo SYSCAT.INDEXEXTENSIONMETHODS
Posibili-
dad de
Nombre de columna Tipo de datos nulos Descripcin
METHODNAME VARCHAR(128) Nombre del mtodo de bsqueda.
METHODID SMALLINT El nmero del mtodo en la extensin de
ndice.
IESCHEMA VARCHAR(128) Nombre de esquema de la extensin de
ndice en la que est definido este mtodo.
IENAME VARCHAR(128) Nombre no calificado de la extensin de
ndice en la que est definido este mtodo.
RANGEFUNCSCHEMA VARCHAR(128) Nombre de esquema de la funcin del rango.
RANGEFUNCNAME VARCHAR(18) Nombre no calificado de la funcin del
rango.
RANGESPECIFICNAME VARCHAR(18) Nombre especfico de la funcin de la
funcin del rango.
FILTERFUNCSCHEMA VARCHAR(128) Y Nombre de esquema de la funcin de filtro.
FILTERFUNCNAME VARCHAR(128) Y Nombre no calificado de la funcin de filtro.
FILTERSPECIFICNAME VARCHAR(128) Y Nombre especfico de la funcin de la
funcin de filtro.
REMARKS VARCHAR(254) Y Comentarios proporcionados por el usuario
o nulo.

Apndice D. Vistas de catlogo 673


SYSCAT.INDEXEXTENSIONPARMS

SYSCAT.INDEXEXTENSIONPARMS
Cada fila representa un parmetro de instancia de la extensin de ndice o una
columna de la clave fuente.
Tabla 83. Vista de catlogo SYSCAT.INDEXEXTENSIONPARMS
Posibili-
dad de
Nombre de columna Tipo de datos nulos Descripcin
IESCHEMA VARCHAR(128) Nombre de esquema de la extensin del
ndice.
IENAME VARCHAR(128) Nombre no calificado de la extensin del
ndice.
ORDINAL SMALLINT Nmero de secuencia del parmetro o de la
columna clave.
PARMNAME VARCHAR(128) Nombre del parmetro o de la columna
clave.
TYPESCHEMA VARCHAR(128) Nombre de esquema del tipo de datos del
parmetro o de la columna clave.
TYPENAME VARCHAR(128) Nombre no calificado del tipo de datos del
parmetro o de la columna clave.
LENGTH INTEGER Longitud del tipo de datos del parmetro o
de la columna clave.
SCALE SMALLINT Escala del tipo de datos del parmetro o de
la columna clave; 0 si no se aplica.
PARMTYPE CHAR(1) K = Columna de clave fuente
P = Parmetro de instancia de extensin
de ndice
CODEPAGE SMALLINT Pgina de cdigos del parmetro de la
instancia de extensin del ndice; 0 si no es
de tipo serie.

674 Consulta de SQL - Volumen 1


SYSCAT.INDEXEXTENSIONS

SYSCAT.INDEXEXTENSIONS
Cada fila representa una extensin de ndice.
Tabla 84. Vista de catlogo SYSCAT.INDEXEXTENSIONS
Posibili-
dad de
Nombre de columna Tipo de datos nulos Descripcin
IESCHEMA VARCHAR(128) Nombre de esquema de la extensin del
ndice.
IENAME VARCHAR(128) Nombre no calificado de la extensin del
ndice.
OWNER VARCHAR(128) ID de autorizacin con el cual se ha creado
la extensin de ndice.
CREATE_TIME TIMESTAMP Hora en la que se defini la extensin de
ndice.
KEYGENFUNCSCHEMA VARCHAR(128) Nombre de esquema de la funcin de
generacin de claves.
KEYGENFUNCNAME VARCHAR(128) Nombre calificado de la funcin de
generacin de claves.
KEYGENSPECIFICNAME VARCHAR(128) Nombre de la instancia de generacin de
claves (puede ser un nombre generado por el
sistema).
TEXT CLOB(2M) Texto completo de la sentencia CREATE
INDEX EXTENSION.
DEFINER1 VARCHAR(128) ID de autorizacin con el cual se ha creado
la extensin de ndice.
REMARKS VARCHAR(254) Y Comentarios proporcionados por el usuario
o nulo.

Notas:
1. La columna DEFINER se incluye por razones de compatibilidad con versiones anteriores. Consulte OWNER.

Apndice D. Vistas de catlogo 675


SYSCAT.INDEXOPTIONS

SYSCAT.INDEXOPTIONS
Cada fila representa un valor de opcin especfico del ndice.
Tabla 85. Vista de catlogo SYSCAT.INDEXOPTIONS
Posibili-
dad de
Nombre de columna Tipo de datos nulos Descripcin
INDSCHEMA VARCHAR(128) Nombre de esquema del ndice.
INDNAME VARCHAR(128) Nombre no calificado del ndice.
OPTION VARCHAR(128) Nombre de la opcin de ndice.
SETTING VARCHAR(2048) Valor de la opcin de ndice.

676 Consulta de SQL - Volumen 1


SYSCAT.INDEXXMLPATTERNS

SYSCAT.INDEXXMLPATTERNS
Cada fila representa una clusula de patrn en un ndice sobre una columna XML.
Tabla 86. Vista de catlogo SYSCAT.INDEXXMLPATTERNS
Posibili-
dad de
Nombre de columna Tipo de datos nulos Descripcin
INDSCHEMA VARCHAR(128) Nombre de esquema del ndice lgico.
INDNAME VARCHAR(128) Nombre no calificado del ndice lgico.
PINDNAME VARCHAR(128) Nombre no calificado del ndice fsico.
PINDID SMALLINT Identificador del ndice fsico.
TYPEMODEL CHAR(1) Q = Tipo de datos SQL
DATATYPE VARCHAR(128) Nombre del tipo de datos.
HASHED CHAR(1) Indica si el valor se ha generado o no de
forma aleatoria.
N = No generado de forma aleatoria
Y = Generado de forma aleatoria
LENGTH SMALLINT Longitud VARCHAR(n); 0 en caso contrario.
PATTERNID SMALLINT Identificador del patrn.
PATTERN CLOB(2M) Y Definicin del patrn.

Notas:
1. Cuando crea ndices sobre columnas XML, se crean ndices lgicos que utilizan la informacin del patrn XML, lo
que da lugar a la creacin de ndices de rbol-B con columnas clave generadas por DB2 para dar soporte a los
ndices lgicos. Se crea un ndice fsico para dar soporte al tipo de datos especificado en la clusula xmltype de la
sentencia CREATE INDEX.

Apndice D. Vistas de catlogo 677


SYSCAT.KEYCOLUSE

SYSCAT.KEYCOLUSE
Cada fila representa una columna que participa en una clave definida por una
restriccin de unicidad, de clave primaria o de clave fornea.
Tabla 87. Vista de catlogo SYSCAT.KEYCOLUSE
Posibili-
dad de
Nombre de columna Tipo de datos nulos Descripcin
CONSTNAME VARCHAR(128) Nombre de la restriccin.
TABSCHEMA VARCHAR(128) Nombre de esquema de la tabla que contiene
la columna.
TABNAME VARCHAR(128) Nombre no calificado de la tabla que
contiene la columna.
COLNAME VARCHAR(128) Nombre de la columna.
COLSEQ SMALLINT Posicin numrica de la columna en la clave
(la posicin inicial es 1).

678 Consulta de SQL - Volumen 1


SYSCAT.NAMEMAPPINGS

SYSCAT.NAMEMAPPINGS
Cada fila representa la correlacin entre un objeto lgico (tabla o vista con tipo y
sus columnas e ndices, incluidas las columnas heredadas) y el objeto de
implantacin correspondiente (tabla de jerarqua o vista de jerarqua y sus
columnas e ndices) que implanta el objeto lgico.
Tabla 88. Vista de catlogo SYSCAT.NAMEMAPPINGS
Posibili-
dad de
Nombre de columna Tipo de datos nulos Descripcin
TYPE CHAR(1) C = Columna
I = ndice
U = Tabla con tipo
LOGICAL_SCHEMA VARCHAR(128) Nombre de esquema del objeto lgico.
LOGICAL_NAME VARCHAR(128) Nombre no calificado del objeto lgico.
LOGICAL_COLNAME VARCHAR(128) Y Nombre de la columna lgica si TYPE = C;
valor nulo en caso contrario.
IMPL_SCHEMA VARCHAR(128) Nombre de esquema del objeto de
implantacin que implanta el objeto lgico.
IMPL_NAME VARCHAR(128) Nombre no calificado del objeto de
implantacin que implanta el objeto lgico.
IMPL_COLNAME VARCHAR(128) Y Nombre de la columna de implantacin si
TYPE = C; valor nulo en caso contrario.

Apndice D. Vistas de catlogo 679


SYSCAT.NICKNAMES

SYSCAT.NICKNAMES
Cada fila representa un apodo.
Tabla 89. Vista de catlogo SYSCAT.NICKNAMES
Posibili-
dad de
Nombre de columna Tipo de datos nulos Descripcin
TABSCHEMA VARCHAR(128) Nombre de esquema del apodo.
TABNAME VARCHAR(128) Nombre no calificado del apodo.
DEFINER VARCHAR(128) Usuario que ha creado el apodo.
STATUS CHAR(1) Estado del objeto.
C = Pendiente de establecer integridad
N = Normal
X = No operativo
CREATE_TIME TIMESTAMP Hora a la que se ha creado el objeto.
STATS_TIME TIMESTAMP S Hora a la que se ha hecho por ltima vez un
cambio en las estadsticas registradas
correspondientes a este objeto. Nulo si no se
recopilan estadsticas.
COLCOUNT SMALLINT Nmero de columnas, incluidas las columnas
heredadas (si las hay).
TABLEID SMALLINT Identificador interno del objeto lgico.
TBSPACEID SMALLINT Identificador lgico interno del espacio de
tablas primario correspondiente a este objeto.
CARD BIGINT Nmero total de filas; -1 si no se recopilan
estadsticas.
NPAGES BIGINT Nmero total de pginas en las que hay filas
del apodo; -1 si no se recopilan estadsticas.
FPAGES BIGINT Nmero total de pginas; -1 si no se
recopilan estadsticas.
OVERFLOW BIGINT Nmero total de registros de
desbordamiento; -1 si no se recopilan
estadsticas.
PARENTS SMALLINT S Nmero de tablas padre de este objeto; es
decir, el nmero de restricciones de
referencia de las que depende este objeto.
CHILDREN SMALLINT S Nmero de tablas dependientes de este
objeto; es decir, el nmero de restricciones de
referencia de las que depende este objeto.
SELFREFS SMALLINT S Nmero de restricciones de referencia propia
para este objeto; es decir, el nmero de
restricciones de referencia en las que este
objeto es tanto padre como dependiente.
KEYCOLUMNS SMALLINT S Nmero de columnas de la clave primaria.
KEYINDEXID SMALLINT S Identificador de ndice correspondiente al
ndice de clave primaria; 0 o el valor nulo si
no hay clave primaria.
KEYUNIQUE SMALLINT Nmero de restricciones de clave de
unicidad (que no sean la restriccin de clave
primara) definidas en este objeto.

680 Consulta de SQL - Volumen 1


SYSCAT.NICKNAMES

Tabla 89. Vista de catlogo SYSCAT.NICKNAMES (continuacin)


Posibili-
dad de
Nombre de columna Tipo de datos nulos Descripcin
CHECKCOUNT SMALLINT Nmero de restricciones de comprobacin
definidas en este objeto.
DATACAPTURE CHAR(1) L = El apodo interviene en la replicacin
de datos, incluida la replicacin de las
columnas LONG VARCHAR y LONG
VARGRAPHIC
N = El apodo no interviene en la
replicacin de datos
Y = El apodo participa en la replicacin
de datos
CONST_CHECKED CHAR(32) El byte 1 representa restriccin de clave
fornea.
El byte 2 representa restriccin de
comprobacin.
El byte 5 representa la tabla de consultas
materializadas.
El byte 6 representa columna generada.
El byte 7 representa la tabla dispuesta
con antelacin.
El byte 8 representa restriccin de
particionamiento de datos.
Otros bytes estn reservados para su
utilizacin en el futuro.
Los valores posibles son:
F = En el byte 5, la tabla de consultas
materializadas no puede renovarse de
forma incremental. En el byte 7, el
contenido de la tabla dispuesta con
antelacin es incompleto y no puede
utilizarse para renovaciones
incrementales de la tabla de consultas
materializadas asociada.
N = No comprobado
U = Comprobado por el usuario
W = Estaba en el estado U cuando la
tabla se coloc en el estado de pendiente
de establecer integridad
Y = Comprobado por el sistema
PARTITION_MODE CHAR(1) Reservado para su utilizacin en el futuro.
STATISTICS_PROFILE CLOB(10M) S Mandato RUNSTATS utilizado para registrar
un perfil estadstico para el objeto.

Apndice D. Vistas de catlogo 681


SYSCAT.NICKNAMES

Tabla 89. Vista de catlogo SYSCAT.NICKNAMES (continuacin)


Posibili-
dad de
Nombre de columna Tipo de datos nulos Descripcin
ACCESS_MODE CHAR(1) Estado de restriccin de acceso del objeto.
Estos estados slo se aplican a objetos que
estn en estado pendiente de establecer
integridad o a objetos procesados por una
sentencia SET INTEGRITY. Los valores
posibles son:
D = No hay movimiento de datos
F = Acceso completo
N = No hay acceso
R = Acceso de slo lectura
CODEPAGE SMALLINT Pgina de cdigos del objeto. Es la pgina de
cdigos por omisin utilizada para todas las
columnas de caracteres, activadores,
restricciones de comprobacin y columnas
generadas por expresin.
REMOTE_TABLE VARCHAR(128) Nombre no calificado del objeto de fuente de
datos especfico (como, por ejemplo, una
tabla o una vista) para el que se ha creado el
apodo.
REMOTE_SCHEMA VARCHAR(128) Nombre de esquema del objeto de fuente de
datos especfico (como, por ejemplo, una
tabla o una vista) para el que se ha creado el
apodo.
SERVER_NAME VARCHAR(128) Nombre de la fuente de datos que contiene
la tabla o la vista para la cual se ha creado el
apodo.
CACHINGALLOWED VARCHAR(32) N = No se permite el almacenamiento en
antememoria
Y = Se permite el almacenamiento en
antememoria
REMARKS VARCHAR(254) S Comentarios proporcionados por el usuario
o nulo.

682 Consulta de SQL - Volumen 1


SYSCAT.PACKAGEAUTH

SYSCAT.PACKAGEAUTH
Cada fila representa un usuario o un grupo al que se ha otorgado uno o ms
privilegios sobre un paquete.
Tabla 90. Vista de catlogo SYSCAT.PACKAGEAUTH
Posibili-
dad de
Nombre de columna Tipo de datos nulos Descripcin
GRANTOR VARCHAR(128) El que ha otorgado el privilegio.
GRANTEE VARCHAR(128) El que mantiene el privilegio.
GRANTEETYPE CHAR(1) G = Se otorga a un grupo
U = Se otorga a un usuario individual
PKGSCHEMA VARCHAR(128) Nombre de esquema del paquete.
PKGNAME VARCHAR(128) Nombre no calificado del paquete.
CONTROLAUTH CHAR(1) Privilegio CONTROL.
N = No se mantiene
Y = Se mantiene
BINDAUTH CHAR(1) Privilegio para vincular el paquete.
G = Se mantiene y se puede otorgar
N = No se mantiene
Y = Se mantiene
EXECUTEAUTH CHAR(1) Privilegio para ejecutar el paquete.
G = Se mantiene y se puede otorgar
N = No se mantiene
Y = Se mantiene

Apndice D. Vistas de catlogo 683


SYSCAT.PACKAGEDEP

SYSCAT.PACKAGEDEP
Cada fila representa una dependencia de un paquete sobre algn otro objeto. El
paquete depende del objeto de tipo BTYPE de nombre BNAME, de modo que un
cambio en el objeto afecta al paquete.
Tabla 91. Vista de catlogo SYSCAT.PACKAGEDEP
Posibili-
dad de
Nombre de columna Tipo de datos nulos Descripcin
PKGSCHEMA VARCHAR(128) Nombre de esquema del paquete.
PKGNAME VARCHAR(128) Nombre no calificado del paquete.
BINDER VARCHAR(128) Vinculador del paquete.
BTYPE CHAR(1) Tipo de objeto sobre el que hay una
dependencia. Los valores posibles son:
A = Alias
B = Activador
D = Definicin de servidor
F = Instancia de rutina
I = ndice
M = Correlacin de funciones
N = Apodo
O = Dependencia de privilegios en todas
las subtablas o subvistas de una jerarqua
de tablas o de vistas
P = Tamao de pgina
Q = Objeto de secuencia
R = Tipo estructurado
S = Tabla de consultas materializadas
T = Tabla (sin tipo)
U = Tabla con tipo
V = Vista (sin tipo)
W = Vista con tipo
Z = Objeto XSR
BSCHEMA VARCHAR(128) Nombre de esquema de un objeto del que
depende el paquete.
BNAME VARCHAR(128) Nombre no calificado de un objeto del que
depende el paquete.
TABAUTH SMALLINT Y Si BTYPE es O, S, T, U, V o W,
codifica los privilegios que necesita este
paquete (SELECT, INSERT, UPDATE o
DELETE).
UNIQUE_ID CHAR(8) FOR BIT Identificador de un paquete especfico
DATA cuando existen varios paquetes con el mismo
nombre.
PKGVERSION VARCHAR(64) Identificador de versin del paquete.

684 Consulta de SQL - Volumen 1


SYSCAT.PACKAGEDEP

Tabla 91. Vista de catlogo SYSCAT.PACKAGEDEP (continuacin)


Posibili-
dad de
Nombre de columna Tipo de datos nulos Descripcin

Notas:
1. Si se elimina una instancia de funcin con dependencias, el paquete se coloca en un estado no operativo y se
debe volver a vincular de forma explcita. Si se elimina cualquier otro objeto con dependencias, el paquete se
coloca en un estado no vlido y el sistema intentar volver a vincular el paquete automticamente cuando se
haga referencia al mismo por primera vez.

Apndice D. Vistas de catlogo 685


SYSCAT.PACKAGES

SYSCAT.PACKAGES
Cada fila representa un paquete que se ha creado mediante la vinculacin de un
programa de aplicacin.
Tabla 92. Vista de catlogo SYSCAT.PACKAGES
Posibili-
dad de
Nombre de columna Tipo de datos nulos Descripcin
PKGSCHEMA VARCHAR(128) Nombre de esquema del paquete.
PKGNAME VARCHAR(128) Nombre no calificado del paquete.
BOUNDBY VARCHAR(128) ID de autorizacin del vinculador del
paquete.
OWNER VARCHAR(128) ID de autorizacin bajo el cual se ha
vinculado el paquete.
DEFAULT_SCHEMA VARCHAR(128) Nombre de esquema por omisin para
nombres no calificados en sentencias de SQL
esttico.
VALID1 CHAR(1) N = Necesita revinculacin
V = Validar en el momento de la
ejecucin
X = El paquete no est operativo porque
alguna instancia de funcin de la que
depende se ha eliminado; se tiene que
revincular de forma explcita
Y = Vlido
UNIQUE_ID CHAR(8) FOR BIT Identificador de un paquete especfico
DATA cuando existen varios paquetes con el mismo
nombre.
TOTAL_SECT SMALLINT Nmero de secciones del paquete.
FORMAT CHAR(1) Formato de fecha y hora asociado al
paquete.
0 = Formato asociado con el cdigo
territorial del cliente
1 = USA
2 = EUR
3 = ISO
4 = JIS
5 = LOCAL
ISOLATION CHAR(2) Y Nivel de aislamiento.
CS = Estabilidad del cursor
RR = Lectura repetible
RS = Estabilidad de lectura
UR = Lectura no confirmada
BLOCKING CHAR(1) Y Opcin de bloqueo del cursor.
B = Bloqueo de todos los cursores
N = Sin bloqueo
U = Bloqueo de cursores no ambiguos

686 Consulta de SQL - Volumen 1


SYSCAT.PACKAGES

Tabla 92. Vista de catlogo SYSCAT.PACKAGES (continuacin)


Posibili-
dad de
Nombre de columna Tipo de datos nulos Descripcin
INSERT_BUF CHAR(1) Establecimiento de la opcin de vinculacin
INSERT (se aplica a sistemas de bases de
datos particionadas).
N = Las inserciones no se colocan en
almacenamiento intermedio
Y = Las inserciones se colocan en
almacenamiento intermedio en la
particin de base de datos del
coordinador para minimizar el trfico
entre particiones de base de datos
LANG_LEVEL CHAR(1) Y Establecimiento de la opcin de vinculacin
LANGLEVEL.
0 = SAA1
1 = MIA
2 = SQL92E
FUNC_PATH VARCHAR(254) Va de acceso de SQL utilizada por la ltima
operacin de vinculacin correspondiente a
este paquete. Se utiliza como la va de acceso
por omisin para operaciones de
revinculacin.SYSIBM para paquetes
anteriores a la Versin 2.
QUERYOPT INTEGER La clase de optimizacin bajo la que se ha
vinculado este paquete. Utilizado para
operaciones de revinculacin.
EXPLAIN_LEVEL CHAR(1) Indica si se ha invocado Explain utilizando
la opcin de vinculacin EXPLAIN o
EXPLSNAP.
P = Nivel de seleccin del paquete
Blanco = No se invoca Explain
EXPLAIN_MODE CHAR(1) Valor de la opcin de vinculacin EXPLAIN.
A = Todo
N = No
R = REOPT
Y = S
EXPLAIN_SNAPSHOT CHAR(1) Valor de la opcin de vinculacin
EXPLSNAP.
A = Todo
N = No
R = REOPT
Y = S
SQLWARN CHAR(1) Indica si se devuelven o no a la aplicacin
los SQLCODE positivos resultantes de las
sentencias de SQL dinmico.
N = No, se suprimen
Y = S

Apndice D. Vistas de catlogo 687


SYSCAT.PACKAGES

Tabla 92. Vista de catlogo SYSCAT.PACKAGES (continuacin)


Posibili-
dad de
Nombre de columna Tipo de datos nulos Descripcin
SQLMATHWARN CHAR(1) Valor del parmetro de configuracin de
base de datos dft_sqlmathwarn en el momento
de la vinculacin. Indica si los errores
aritmticos y de conversin de recuperacin
devuelven avisos y valores nulos (indicador
-2), lo que permite que el proceso de
consulta contine siempre que sea posible.
N = No, se devuelven errores
Y = S, se devuelven avisos
EXPLICIT_BIND_TIME TIMESTAMP Hora a la que este paquete se ha vinculado o
vuelto a vincular explcitamente por ltima
vez. Cuando el paquete se vuelva a vincular
explcitamente, no se seleccionar ninguna
instancia de funcin que se haya creado con
posterioridad a esta hora.
LAST_BIND_TIME TIMESTAMP Hora a la que el paquete se ha vinculado o
vuelto a vincular explcita o implcitamente
por ltima vez. Se utiliza para comprobar la
validez de datos de Explain.
CODEPAGE SMALLINT Pgina de cdigos de la aplicacin en el
momento de la vinculacin; -1 si no se
conoce.
DEGREE CHAR(5) Grado de paralelismo intraparticin que se
especific cuando se vincul el paquete.
1 = Sin paralelismo
2-32767 = Lmite especificado por el
usuario
ANY = Grado determinado por el sistema
(no se especifica lmite)
MULTINODE_PLANS CHAR(1) N = El paquete no se ha vinculado en un
entorno de bases de datos particionadas
Y = El paquete se ha vinculado en un
entorno de bases de datos particionadas
INTRA_PARALLEL CHAR(1) Utilizacin del paralelismo intraparticin por
las sentencias de SQL esttico dentro del
paquete.
F = Una o varias sentencias de SQL
esttico del paquete pueden utilizar
paralelismo intraparticin; se ha
inhabilitado este paralelismo para su uso
en un sistema que no est configurado
para paralelismo intraparticin.
N = Ninguna sentencia de SQL esttico
utiliza paralelismo intraparticin
Y = Una o ms sentencias de SQL esttico
del paquete utilizan paralelismo
intraparticin

688 Consulta de SQL - Volumen 1


SYSCAT.PACKAGES

Tabla 92. Vista de catlogo SYSCAT.PACKAGES (continuacin)


Posibili-
dad de
Nombre de columna Tipo de datos nulos Descripcin
VALIDATE CHAR(1) Indica que la comprobacin de validez se
puede diferir hasta el momento de la
ejecucin.
B = Toda comprobacin debe realizarse
en el momento de la vinculacin
R = La validacin de tablas, vistas y
privilegios que no existan en el momento
de la vinculacin se realiza en el
momento de la ejecucin
DYNAMICRULES CHAR(1) B = BIND; las sentencias de SQL
dinmico se ejecutan con comportamiento
DYNAMICRULES BIND
D = DEFINERBIND; cuando el paquete
se ejecuta dentro de un contexto de
rutina, las sentencias de SQL dinmico
del paquete se ejecutan con
comportamiento DEFINE; cuando el
paquete no se ejecuta dentro de un
contexto de rutina, las sentencias de SQL
dinmico del paquete se ejecutan con
comportamiento BIND
E = DEFINERRUN; cuando el paquete se
ejecuta dentro de un contexto de rutina,
las sentencias de SQL dinmico del
paquete se ejecutan con comportamiento
DEFINE; cuando el paquete no se ejecuta
dentro de un contexto de rutina, las
sentencias de SQL dinmico del paquete
se ejecutan con comportamiento RUN
H = INVOKEBIND; cuando el paquete se
ejecuta dentro de un contexto de rutina,
las sentencias de SQL dinmico del
paquete se ejecutan con comportamiento
INVOKE; cuando el paquete no se ejecuta
dentro de un contexto de rutina, las
sentencias de SQL dinmico del paquete
se ejecutan con comportamiento BIND
I = INVOKERUN; cuando el paquete se
ejecuta dentro de un contexto de rutina,
las sentencias de SQL dinmico del
paquete se ejecutan con comportamiento
INVOKE; cuando el paquete no se ejecuta
dentro de un contexto de rutina, las
sentencias de SQL dinmico del paquete
se ejecutan con comportamiento RUN
R = RUN; las sentencias de SQL dinmico
se ejecutan con comportamiento RUN; es
el valor por omisin

Apndice D. Vistas de catlogo 689


SYSCAT.PACKAGES

Tabla 92. Vista de catlogo SYSCAT.PACKAGES (continuacin)


Posibili-
dad de
Nombre de columna Tipo de datos nulos Descripcin
SQLERROR CHAR(1) Opcin SQLERROR en el submandato ms
reciente que ha vinculado o revinculado el
paquete.
C = CONTINUE; crea un paquete,
aunque se produzcan errores al vincular
sentencias de SQL
N = NOPACKAGE; no se crea un
paquete o un archivo de vinculacin si se
produce un error
REFRESHAGE DECIMAL(20,6) Duracin de la indicacin de fecha y hora
que indica el intervalo mximo de tiempo
entre la ejecucin de una sentencia REFRESH
TABLE para una tabla de consultas
materializadas (MQT) y el momento en que
la MQT se utiliza en lugar de una tabla base.
FEDERATED CHAR(1) N = La opcin de vinculacin o de
preparacin FEDERATED est
desactivada
Y = La opcin de vinculacin o de
preparacin FEDERATED est activada
TRANSFORMGROUP VARCHAR(1024) Y Valor de la opcin de vinculacin
TRANSFORM GROUP; nulo si no se
especifica ningn grupo de transformacin.
REOPTVAR CHAR(1) Indica si la va de acceso se vuelve a
determinar en el momento de la ejecucin
utilizando valores de variables de entrada.
A = La va de acceso se vuelve a
optimizar para cada solicitud OPEN o
EXECUTE
N = La va de acceso se determina en el
momento de la vinculacin
O = La va de acceso slo se vuelve a
optimizar en la primera solicitud OPEN o
EXECUTE; luego se coloca en
antememoria
OS_PTR_SIZE INTEGER Tamao de las palabras para la plataforma
en la que se ha creado el paquete:
32 = El paquete es un paquete de 32 bits
64 = El paquete es un paquete de 64 bits
PKGVERSION VARCHAR(64) Identificador de versin del paquete.
PKG_CREATE_TIME TIMESTAMP Hora a la que se ha vinculado el paquete por
primera vez.

690 Consulta de SQL - Volumen 1


SYSCAT.PACKAGES

Tabla 92. Vista de catlogo SYSCAT.PACKAGES (continuacin)


Posibili-
dad de
Nombre de columna Tipo de datos nulos Descripcin
STATICREADONLY CHAR(1) Indica si los cursores estticos se van a tratar
o no como READ ONLY. Los valores
posibles son:
N = Los cursores estticos adoptan los
atributos que se generaran normalmente
para el texto de sentencia dado y el valor
de la opcin de precompilacin
LANGLEVEL
Y = Cualquier cursor esttico que no
contenga la clusula FOR UPDATE o
FOR READ ONLY se considera READ
ONLY
FEDERATED_ASYNCHRONY INTEGER Indica el lmite de asincrona (el nmero de
ATQ del plan) como una opcin de
vinculacin cuando se vincul el paquete.
0 = Sin asincrona
1 = Lmite especificado por el usuario
(maxagents/4)
-1 = Grado de asincrona determinado
por el sistema
-2 = Grado de asincrona no especificado
Para un sistema no federado, el valor es 0.
2
DEFINER VARCHAR(128) ID de autorizacin bajo el cual se ha
vinculado el paquete.
REMARKS VARCHAR(254) Y Comentarios proporcionados por el usuario
o nulo.

Notas:
1. Si se elimina una instancia de funcin con dependencias, el paquete se coloca en un estado no operativo y se
debe volver a vincular de forma explcita. Si se elimina cualquier otro objeto con dependencias, el paquete se
coloca en un estado no vlido y el sistema intentar volver a vincular el paquete automticamente cuando se
haga referencia al mismo por primera vez.
2. La columna DEFINER se incluye por razones de compatibilidad con versiones anteriores. Consulte OWNER.

Apndice D. Vistas de catlogo 691


SYSCAT.PARTITIONMAPS

SYSCAT.PARTITIONMAPS
Cada fila representa un mapa de distribucin que se utiliza para distribuir las filas
de una tabla entre las particiones de base de datos de un grupo de particiones de
base de datos, en funcin de la generacin aleatoria de la clave de distribucin de
la tabla.
Tabla 93. Vista de catlogo SYSCAT.PARTITIONMAPS
Posibili-
dad de
Nombre de columna Tipo de datos nulos Descripcin
PMAP_ID SMALLINT Identificador del mapa de distribucin.
PARTITIONMAP LONG VARCHAR Mapa de distribucin, un vector de 4096
FOR BIT DATA enteros de dos bytes para un grupo de
particiones de base de datos de varias
particiones. Para un grupo de particiones de
base de datos de una sola particin, hay una
entrada que indica el nmero de particin de
la particin individual.

692 Consulta de SQL - Volumen 1


SYSCAT.PASSTHRUAUTH

SYSCAT.PASSTHRUAUTH
Cada fila representa un usuario o un grupo al que se ha otorgado autorizacin de
paso para consultar una fuente de datos.
Tabla 94. Vista de catlogo SYSCAT.PASSTHRUAUTH
Posibili-
dad de
Nombre de columna Tipo de datos nulos Descripcin
GRANTOR VARCHAR(128) El que ha otorgado el privilegio.
GRANTEE VARCHAR(128) El que mantiene el privilegio.
GRANTEETYPE CHAR(1) G = Se otorga a un grupo
U = Se otorga a un usuario individual
SERVERNAME VARCHAR(128) Nombre de la fuente de datos a la que se
otorga autorizacin.

Apndice D. Vistas de catlogo 693


SYSCAT.PREDICATESPECS

SYSCAT.PREDICATESPECS
Cada fila representa una especificacin del predicado.
Tabla 95. Vista de catlogo SYSCAT.PREDICATESPECS
Posibili-
dad de
Nombre de columna Tipo de datos nulos Descripcin
FUNCSCHEMA VARCHAR(128) Nombre de esquema de la funcin.
FUNCNAME VARCHAR(128) Nombre no calificado de la funcin.
SPECIFICNAME VARCHAR(128) Nombre de la instancia de la funcin.
FUNCID INTEGER Identificador de la funcin.
SPECID SMALLINT Nmero de esta especificacin de predicado.
CONTEXTOP CHAR(8) Operador de comparacin, uno de los
operadores relacionales incorporados (=, <,
>, >=, etc.)
CONTEXTEXP CLOB(32K) Constante o una expresin SQL.
FILTERTEXT CLOB(64K) Y Texto de la expresin de filtro de datos.

694 Consulta de SQL - Volumen 1


SYSCAT.REFERENCES

SYSCAT.REFERENCES
Cada fila representa una restriccin de integridad referencial (clave fornea).
Tabla 96. Vista de catlogo SYSCAT.REFERENCES
Posibili-
dad de
Nombre de columna Tipo de datos nulos Descripcin
CONSTNAME VARCHAR(128) Nombre de la restriccin.
TABSCHEMA VARCHAR(128) Nombre de esquema de la tabla dependiente.
TABNAME VARCHAR(128) Nombre no calificado de la tabla
dependiente.
OWNER VARCHAR(128) ID de autorizacin bajo el que se ha creado
la restriccin.
REFKEYNAME VARCHAR(128) Nombre de la clave padre.
REFTABSCHEMA VARCHAR(128) Nombre de esquema de la tabla padre.
REFTABNAME VARCHAR(128) Nombre no calificado de la tabla padre.
COLCOUNT SMALLINT El nmero de columnas de la clave fornea.
DELETERULE CHAR(1) Regla de supresin.
A = NO ACTION
C = CASCADE
N = SET NULL
R = RESTRICT
UPDATERULE CHAR(1) Regla de actualizacin.
A = NO ACTION
R = RESTRICT
CREATE_TIME TIMESTAMP Hora a la que se ha definido la restriccin.
FK_COLNAMES VARCHAR(640) Esta columna ya no se utiliza y se eliminar
en un prximo release. Utilice
SYSCAT.KEYCOLUSE para obtener esta
informacin.
PK_COLNAMES VARCHAR(640) Esta columna ya no se utiliza y se eliminar
en un prximo release. Utilice
SYSCAT.KEYCOLUSE para obtener esta
informacin.
DEFINER1 VARCHAR(128) ID de autorizacin bajo el que se ha creado
la restriccin.

Notas:
1. La columna DEFINER se incluye por razones de compatibilidad con versiones anteriores. Consulte OWNER.

Informacin relacionada:
v SYSCAT.KEYCOLUSE en la pgina 678

Apndice D. Vistas de catlogo 695


SYSCAT.ROUTINEAUTH

SYSCAT.ROUTINEAUTH
Cada fila representa un usuario o grupo al que se ha otorgado el privilegio
EXECUTE sobre una determinada rutina (funcin, mtodo o procedimiento) o
sobre todas las rutinas de un determinado esquema de la base de datos.
Tabla 97. Vista de catlogo SYSCAT.ROUTINEAUTH
Posibili-
dad de
Nombre de columna Tipo de datos nulos Descripcin
GRANTOR VARCHAR(128) El que otorga el privilegio. SYSIBM si el
privilegio lo ha otorgado el sistema.
GRANTEE VARCHAR(128) El que mantiene el privilegio.
GRANTEETYPE CHAR(1) G = Se otorga a un grupo
U = Se otorga a un usuario individual
SCHEMA VARCHAR(128) Nombre de esquema de la rutina.
SPECIFICNAME VARCHAR(128) S Nombre especfico de la rutina. Si
SPECIFICNAME es nulo y ROUTINETYPE
no es M, el privilegio se aplica a todas las
rutinas del tipo especificado en
ROUTINETYPE en el esquema especificado
en SCHEMA. Si SPECIFICNAME es nulo y
ROUTINETYPE es M, el privilegio se aplica
a todos los mtodos correspondientes al tipo
de asunto especificado por TYPENAME en
el esquema especificado por TYPESCHEMA.
Si SPECIFICNAME es nulo, ROUTINETYPE
es M y tanto TYPENAME como
TYPESCHEMA con nulos, el privilegio de
aplica a todos los mtodos correspondientes
a todos los tipos del esquema.
TYPESCHEMA VARCHAR(128) S Nombre de esquema del tipo
correspondiente al mtodo. Nulo si
ROUTINETYPE no es M.
TYPENAME VARCHAR(128) S Nombre no calificado del tipo
correspondiente al mtodo. Nulo si
ROUTINETYPE no es M. Si TYPENAME es
nulo y ROUTINETYPE es M, el privilegio
de aplica a todos los mtodos
correspondientes a cualquier tipo de asunto
si estn en el esquema especificado por
SCHEMA.
ROUTINETYPE CHAR(1) Tipo de la rutina.
F = Funcin
M = Mtodo
P = Procedimiento
EXECUTEAUTH CHAR(1) Privilegio para ejecutar la rutina.
G = Se mantiene y se puede otorgar
N = No se mantiene
Y = Se mantiene
GRANT_TIME TIMESTAMP Hora a la que se ha otorgado el privilegio.

696 Consulta de SQL - Volumen 1


SYSCAT.ROUTINEDEP

SYSCAT.ROUTINEDEP
Cada fila representa una dependencia de una rutina sobre algn otro objeto. La
rutina depende del objeto de tipo BTYPE de nombre BNAME, de modo que un
cambio en el objeto afecta a la rutina.
Tabla 98. Vista de catlogo SYSCAT.ROUTINEDEP
Posibili-
dad de
Nombre de columna Tipo de datos nulos Descripcin
ROUTINESCHEMA VARCHAR(128) Nombre de esquema de la rutina que tiene
dependencias sobre otro objeto.
ROUTINENAME VARCHAR(128) Nombre no calificado de la rutina que tiene
dependencias sobre otro objeto.
SPECIFICNAME VARCHAR(128) Nombre especfico de la rutina que tiene
dependencias sobre otro objeto.
BTYPE CHAR(1) Tipo de objeto sobre el que hay una
dependencia. Los valores posibles son:
A = Alias
B = Activador
F = Instancia de rutina
H = Tabla de jerarqua
K = Paquete
L = Tabla desenlazada
O = Dependencia de privilegios en todas
las subtablas o subvistas de una jerarqua
de tablas o de vistas
Q = Secuencia
R = Tipo estructurado
S = Tabla de consultas materializadas
T = Tabla (sin tipo)
U = Tabla con tipo
V = Vista (sin tipo)
W = Vista con tipo
X = Extensin de ndice
Z = Objeto XSR
BSCHEMA VARCHAR(128) Nombre de esquema del objeto sobre el que
hay una dependencia.
BNAME VARCHAR(128) Nombre no calificado del objeto sobre el que
hay una dependencia. Para rutinas (BTYPE =
F), es el nombre especfico.
TABAUTH SMALLINT Y Si BTYPE = O, S, T, U, V o W,
codifica los privilegios sobre la tabla o vista
que necesita la rutina dependiente; valor
nulo en caso contrario.

Apndice D. Vistas de catlogo 697


SYSCAT.ROUTINEOPTIONS

SYSCAT.ROUTINEOPTIONS
Cada fila representa un valor de opcin especfico de la rutina.
Tabla 99. Vista de catlogo SYSCAT.ROUTINEOPTIONS
Posibili-
dad de
Nombre de columna Tipo de datos nulos Descripcin
ROUTINESCHEMA VARCHAR(128) Nombre de esquema de la rutina.
ROUTINENAME VARCHAR(128) Nombre no calificado de la rutina.
SPECIFICNAME VARCHAR(128) Nombre de la instancia de la rutina (puede
ser un nombre generado por el sistema).
OPTION VARCHAR(128) Nombre de la opcin de rutina federada.
SETTING VARCHAR(2048) Valor de la opcin de rutina federada.

698 Consulta de SQL - Volumen 1


SYSCAT.ROUTINEPARMOPTIONS

SYSCAT.ROUTINEPARMOPTIONS
Cada fila representa un valor de opcin especfico del parmetro de rutina.
Tabla 100. Vista de catlogo SYSCAT.ROUTINEPARMOPTIONS
Posibili-
dad de
Nombre de columna Tipo de datos nulos Descripcin
ROUTINESCHEMA VARCHAR(128) Nombre de esquema de la rutina.
ROUTINENAME VARCHAR(128) Nombre no calificado de la rutina.
SPECIFICNAME VARCHAR(128) Nombre de la instancia de la rutina (puede
ser un nombre generado por el sistema).
ORDINAL SMALLINT Posicin del parmetro dentro de la
signatura de la rutina.
OPTION VARCHAR(128) Nombre de la opcin de rutina federada.
SETTING VARCHAR(2048) Valor de la opcin de rutina federada.

Apndice D. Vistas de catlogo 699


SYSCAT.ROUTINEPARMS

SYSCAT.ROUTINEPARMS
Cada fila representa un parmetro o el resultado de una rutina definida en
SYSCAT.ROUTINES.
Tabla 101. Vista de catlogo SYSCAT.ROUTINEPARMS
Posibili-
dad de
Nombre de columna Tipo de datos nulos Descripcin
ROUTINESCHEMA VARCHAR(128) Nombre de esquema de la rutina.
ROUTINENAME VARCHAR(128) Nombre no calificado de la rutina.
SPECIFICNAME VARCHAR(128) Nombre de la instancia de la rutina (puede
ser un nombre generado por el sistema).
PARMNAME VARCHAR(128) Y Nombre del parmetro o columna de
resultado, o nulo si no existe ningn nombre.
ROWTYPE CHAR(1) B = Tanto parmetro de entrada como de
salida
C = Resultado despus de conversin
O = Parmetro de salida
P = Parmetro de entrada
R = Resultado antes de conversin
ORDINAL SMALLINT Si ROWTYPE = B, O o P, posicin
numrica del parmetro dentro de la
signatura de la rutina, empezando por 1; si
ROWTYPE = R y la rutina devuelve una
tabla, posicin numrica de una columna
nombrada en la tabla de resultados,
empezando por 1; 0 en caso contrario.
TYPESCHEMA VARCHAR(128) Nombre de esquema del tipo de datos. El
nombre de esquema para tipos incorporados
es SYSIBM.
TYPENAME VARCHAR(128) Nombre no calificado del tipo de datos.
LOCATOR CHAR(1) N = El parmetro o resultado no se pasa
en forma de localizador
Y = El parmetro o resultado se pasa en
forma de localizador
LENGTH1 INTEGER Longitud del parmetro o resultado; 0 si el
parmetro o resultado es un tipo
diferenciado.
SCALE1 SMALLINT Escala del parmetro o resultado; 0 si el
parmetro o resultado es un tipo
diferenciado.
CODEPAGE SMALLINT Pgina de cdigos de este parmetro o
resultado; o indica no aplicable o un
parmetro o resultado para datos de
caracteres declarado con el atributo FOR BIT
DATA.
CAST_FUNCSCHEMA VARCHAR(128) Nombre de esquema de la funcin utilizada
para convertir un argumento o un resultado.
Se aplica a funciones derivadas y externas;
valor nulo en caso contrario.

700 Consulta de SQL - Volumen 1


SYSCAT.ROUTINEPARMS

Tabla 101. Vista de catlogo SYSCAT.ROUTINEPARMS (continuacin)


Posibili-
dad de
Nombre de columna Tipo de datos nulos Descripcin
CAST_FUNCSPECIFIC VARCHAR(128) Nombre no calificado de la funcin utilizada
para convertir un argumento o resultado. Se
aplica a funciones derivadas y externas;
valor nulo en caso contrario.
TARGET_TYPESCHEMA VARCHAR(128) Nombre de esquema del tipo de destino si el
tipo del parmetro o resultado es
REFERENCE. Valor nulo si el tipo del
parmetro o resultado no es REFERENCE.
TARGET_TYPENAME VARCHAR(128) Nombre no calificado del tipo de destino si
el tipo del parmetro o resultado es
REFERENCE. Valor nulo si el tipo del
parmetro o resultado no es REFERENCE.
SCOPE_TABSCHEMA VARCHAR(128) Y Nombre de esquema del mbito (valor de
destino), si el tipo del parmetro es
REFERENCE; valor nulo en caso contrario.
SCOPE_TABNAME VARCHAR(128) Y Nombre no calificado del mbito (valor de
destino), si el tipo del parmetro es
REFERENCE; valor nulo en caso contrario.
TRANSFORMGRPNAME VARCHAR(128) Y Nombre del grupo de transformacin
correspondiente a un parmetro o resultado
de tipo estructurado.
REMARKS VARCHAR(254) Y Comentarios proporcionados por el usuario
o nulo.

Notas:
1. LENGTH y SCALE se establecen en 0 para las funciones derivadas (funciones definidas con una referencia a otra
funcin), porque heredan la longitud y escala de los parmetros de su fuente.

Apndice D. Vistas de catlogo 701


SYSCAT.ROUTINES

SYSCAT.ROUTINES
Cada fila representa una rutina definida por el usuario (funcin escalar, funcin de
tabla, funcin fuente, mtodo o procedimiento). No incluye las funciones
incorporadas.
Tabla 102. Vista de catlogo SYSCAT.ROUTINES
Posibili-
dad de
Nombre de columna Tipo de datos nulos Descripcin
ROUTINESCHEMA VARCHAR(128) Nombre de esquema de la rutina.
ROUTINENAME VARCHAR(128) Nombre no calificado de la rutina.
ROUTINETYPE CHAR(1) Tipo de rutina.
F = Funcin
M = Mtodo
P = Procedimiento
OWNER VARCHAR(128) ID de autorizacin bajo el cual se ha creado
la rutina.
SPECIFICNAME VARCHAR(128) Nombre de la instancia de la rutina (puede
ser un nombre generado por el sistema).
ROUTINEID INTEGER Identificador de la rutina.
RETURN_TYPESCHEMA VARCHAR(128) Nombre de esquema del tipo de retorno
correspondiente a una funcin escalar o a un
mtodo.
RETURN_TYPENAME VARCHAR(128) Nombre no calificado del tipo de retorno
correspondiente a una funcin escalar o a un
mtodo.
ORIGIN CHAR(1) B = Incorporado
E = Definido por el usuario, externo
M = Funcin de plantilla
F = Procedimiento federado
Q = Con cuerpo de SQL1
S = Generado por el sistema
T = Funcin de transformacin generada
por el sistema (no se puede invocar
directamente)
U = Definido por el usuario, basado en
una fuente
FUNCTIONTYPE CHAR(1) C = Columna o agregado
R = Fila
S = Escalar
T = Tabla
Blanco = Procedimiento
PARM_COUNT SMALLINT Nmero de parmetros de la rutina.
LANGUAGE CHAR(8) Lenguaje de implantacin del cuerpo de la
rutina (o del cuerpo de la funcin fuente, si
esta funcin es el origen de otra funcin).
Los valores posibles son C, COBOL,
JAVA, OLE, OLEDB o SQL. Blancos si
ORIGIN no es E ni Q.

702 Consulta de SQL - Volumen 1


SYSCAT.ROUTINES

Tabla 102. Vista de catlogo SYSCAT.ROUTINES (continuacin)


Posibili-
dad de
Nombre de columna Tipo de datos nulos Descripcin
SOURCESCHEMA VARCHAR(128) Y Si ORIGIN = U y la funcin fuente es una
funcin definida por el usuario, contiene el
nombre de esquema del nombre especfico
de la funcin fuente. Si ORIGIN = U y la
funcin fuente es una funcin incorporada,
contiene el valor SYSIBM. Nulo si ORIGIN
no es U.
SOURCESPECIFIC VARCHAR(128) Y Si ORIGIN = U y la funcin fuente es una
funcin definida por el usuario, contiene el
nombre especfico no calificado de la funcin
fuente. Si ORIGIN = U y la funcin fuente
es una funcin incorporada, contiene el valor
N/A for built-in. Nulo si ORIGIN no es U.
DETERMINISTIC CHAR(1) N = Los resultados no son determinantes
(algunos parmetros pueden tener
distintos resultados si llama otra rutina)
Y = Los resultados son determinantes
Blanco = ORIGIN no es E, F ni Q
EXTERNAL_ACTION CHAR(1) E = La funcin tiene efectos adicionales
externos (por lo tanto el nmero de
invocaciones es importante)
N = Ningn efecto adicional
Blanco = ORIGIN no es E, F ni Q
NULLCALL CHAR(1) N = RETURNS NULL ON NULL INPUT
(el resultado de la funcin es de forma
implcita el valor nulo si uno o ms
operandos son nulos)
Y = CALLED ON NULL INPUT
Blanco = ORIGIN no es E ni Q
CAST_FUNCTION CHAR(1) N = No es una funcin de conversin
Y = Funcin de conversin
Blanco = ROUTINETYPE no es F
ASSIGN_FUNCTION CHAR(1) N = No es una funcin de asignacin
Y = Funcin de asignacin implcita
Blanco = ROUTINETYPE no es F
SCRATCHPAD CHAR(1) N = La rutina no tiene rea reutilizable
Y = La rutina tiene un rea reutilizable
Blanco = ORIGIN no es E o
ROUTINETYPE es P
SCRATCHPAD_LENGTH SMALLINT Tamao (en bytes) del rea reutilizable de la
rutina.
-1 = LANGUAGE es OLEDB y
SCRATCHPAD es Y
0 = SCRATCHPAD no es Y

Apndice D. Vistas de catlogo 703


SYSCAT.ROUTINES

Tabla 102. Vista de catlogo SYSCAT.ROUTINES (continuacin)


Posibili-
dad de
Nombre de columna Tipo de datos nulos Descripcin
FINALCALL CHAR(1) N = No se realiza ninguna llamada final
Y = Se realiza una llamada final a esta
rutina al ejecutar el fin de sentencia
Blanco = ORIGIN no es E o
ROUTINETYPE es P
PARALLEL CHAR(1) N = La rutina no se puede ejecutar en
paralelo
Y = La rutina se puede ejecutar en
paralelo
Blanco = ORIGIN no es E
PARAMETER_STYLE CHAR(8) Estilo de parmetro que se ha declarado al
crearse la rutina. Los valores posibles son:
DB2DARI
DB2GENRL
DB2SQL
GENERAL
GNRLNULL
JAVA
SQL
Blanco si ORIGIN no es E
FENCED CHAR(1) N = No delimitado
Y = Delimitado
Blanco = ORIGIN no es E
SQL_DATA_ACCESS CHAR(1) Indica qu tipo de sentencias de SQL, si las
hay, debe dar por supuesto el gestor de
bases de datos que estn contenidas en la
rutina.
C = Contiene SQL (slo expresiones
simples sin subconsultas)
M = Contiene sentencias de SQL que
modifican datos
N = No contiene sentencias de SQL
R = Contiene sentencias de SQL de slo
lectura
Blanco = ORIGIN no es E, F ni Q
DBINFO CHAR(1) Indica si se pasa un parmetro DBINFO a
una rutina externa.
N = No se pasa DBINFO
Y = Se pasa DBINFO
Blanco = ORIGIN no es E
PROGRAMTYPE CHAR(1) Indica cmo se ha invocado la rutina
externa.
M = Principal
S = Subrutina
Blanco = ORIGIN es F

704 Consulta de SQL - Volumen 1


SYSCAT.ROUTINES

Tabla 102. Vista de catlogo SYSCAT.ROUTINES (continuacin)


Posibili-
dad de
Nombre de columna Tipo de datos nulos Descripcin
COMMIT_ON_RETURN CHAR(1) Indica se la transaccin se confirma tras un
retorno satisfactorio por parte de este
procedimiento.
N = La unidad de trabajo no se confirma
Y = La unidad de trabajo se confirma
Blanco = ROUTINETYPE no es P
RESULT_SETS SMALLINT Nmero mximo estimado de conjuntos de
resultados.
SPEC_REG CHAR(1) Indica si se heredan registros especiales del
que realiza la llamada o si se reinicializan
con sus valores por omisin cuando se llama
a la rutina.
D = Registros especiales por omisin
I = Registros especiales heredados
Blanco = PARAMETER_STYLE es
DB2DARI u ORIGIN no es E ni Q
FEDERATED CHAR(1) Indica si se puede acceder o no a los objetos
federados desde la rutina.
N = No se puede acceder a los objetos
federados
Y = Se puede acceder a los objetos
federados
Blanco = ORIGIN no es E, F ni Q
THREADSAFE CHAR(1) Indica si la rutina se puede ejecutar o no en
el mismo proceso que otras rutinas.
N = La rutina no est protegida de
hebras
Y = La rutina est protegida de hebras
Blanco = ORIGIN no es E
VALID CHAR(1) Slo se aplica a LANGUAGE = SQL; blanco
en caso contrario.
N = La rutina que tiene que volver a
vincular
Y = La rutina es vlida
X = La rutina no est operativa y se tiene
que volver a crear
METHODIMPLEMENTED CHAR(1) N = El cuerpo del mtodo no se ha
implantado
Y = El cuerpo del mtodo se ha
implantado
Blanco = ROUTINETYPE no es M
METHODEFFECT CHAR(2) CN = Mtodo constructor
MU = Mtodo mutador
OB = Mtodo observador
Blancos = No es un mtodo del sistema

Apndice D. Vistas de catlogo 705


SYSCAT.ROUTINES

Tabla 102. Vista de catlogo SYSCAT.ROUTINES (continuacin)


Posibili-
dad de
Nombre de columna Tipo de datos nulos Descripcin
TYPE_PRESERVING CHAR(1) N = El tipo de retorno es el tipo de
retorno declarado del mtodo
Y = El tipo de retorno se controla
mediante un parmetro de
mantenimiento-tipo; todos los mtodos
del mutador generados por el sistema son
de mantenimiento del tipo
Blanco = ROUTINETYPE no es M
WITH_FUNC_ACCESS CHAR(1) N = Este mtodo no se puede invocar
utilizando una notacin funcional
Y = Este mtodo se puede invocar
utilizando una notacin funcional; es
decir, se especifica el atributo WITH
FUNCTION ACCESS
Blanco = ROUTINETYPE no es M
OVERRIDDEN_METHODID INTEGER Y Identificador del mtodo alterado
temporalmente cuando se especifica la
opcin OVERRIDING para un mtodo
definido por el usuario. Nulo si
ROUTINETYPE no es M.
SUBJECT_TYPESCHEMA VARCHAR(128) Y Nombre de esquema del tipo de sujeto para
el mtodo definido por el usuario. Nulo si
ROUTINETYPE no es M.
SUBJECT_TYPENAME VARCHAR(128) Y Nombre no calificado del tipo de sujeto para
el mtodo definido por el usuario. Nulo si
ROUTINETYPE no es M.
CLASS VARCHAR(128) Y Para LANGUAGE JAVA, CLR o OLE, sta es
la clase que implementa esta rutina; valor
nulo en caso contrario.
JAR_ID VARCHAR(128) Y Para LANGUAGE JAVA, ste es el JAR_ID
del archivo jar instalado que implementa
esta rutina si se especific un archivo jar en
el momento de creacin de la rutina; valor
nulo en caso contrario. Para LANGUAGE
CLR, ste es el archivo de ensamblaje que
implementa esta rutina.
JARSCHEMA VARCHAR(128) Y Para LANGUAGE JAVA, cuando hay un
JAR_ID, ste es el nombre del esquema del
archivo jar que implementa esta rutina; valor
nulo en caso contrario.
JAR_SIGNATURE VARCHAR(1024) Y Para LANGUAGE JAVA, sta es la signatura
de mtodo del mtodo Java especificado de
esta rutina. Para LANGUAGE CLR, ste es
un campo de referencia para la rutina CLR.
Valor nulo en caso contrario.
CREATE_TIME TIMESTAMP Hora a la que se ha creado la rutina.
ALTER_TIME TIMESTAMP Hora a la que se ha modificado por ltima
vez la rutina.

706 Consulta de SQL - Volumen 1


SYSCAT.ROUTINES

Tabla 102. Vista de catlogo SYSCAT.ROUTINES (continuacin)


Posibili-
dad de
Nombre de columna Tipo de datos nulos Descripcin
FUNC_PATH VARCHAR(254) Y Va de acceso de SQL en el momento en que
se defini la rutina. Nulo si LANGUAGE no
es SQL.
QUALIFIER VARCHAR(128) Valor del esquema por omisin en el
momento de la definicin del objeto. Se
utiliza para completar cualquier referencia
no calificada.
IOS_PER_INVOC DOUBLE Nmero estimado de entradas/salidas (I/O)
por invocacin; 0 es el valor por omisin; -1
si no se conoce.
INSTS_PER_INVOC DOUBLE Nmero estimado de instrucciones por
invocacin; 450 es el valor por omisin; -1 si
no se conoce.
IOS_PER_ARGBYTE DOUBLE Nmero estimado de I/O por byte de
argumento de entrada; 0 es el valor por
omisin; -1 si no se conoce.
INSTS_PER_ARGBYTE DOUBLE Nmero estimado de instrucciones por byte
de argumento de entrada; 0 es el valor por
omisin; -1 si no se conoce.
PERCENT_ARGBYTES SMALLINT Porcentaje medio estimado de bytes de
argumento de entrada que leer la rutina
realmente; 100 es el valor por omisin; -1 si
no se conoce.
INITIAL_IOS DOUBLE Nmero estimado de I/O realizadas la
primera vez que se ha invocado la rutina; 0
es el valor por omisin; -1 si no se conoce.
INITIAL_INSTS DOUBLE Nmero estimado de instrucciones
ejecutadas la primera vez que se ha invocado
la rutina; 0 es el valor por omisin; -1 si no
se conoce.
CARDINALITY BIGINT Cardinalidad prevista de una funcin de
tabla; -1 si no se conoce o si la rutina no es
una funcin de tabla.
SELECTIVITY2 DOUBLE Para predicados definidos por el usuario; -1
si no hay ningn predicado definido por el
usuario.
RESULT_COLS SMALLINT Para una funcin de tabla (ROUTINETYPE =
F y FUNCTIONTYPE = T), contiene el
nmero de columnas de la tabla de
resultados; para un procedimiento
(ROUTINETYPE = P), contiene 0; en caso
contrario, contiene 1.
IMPLEMENTATION VARCHAR(254) Y Si ORIGIN =E, identifica la va de
acceso/mdulo/funcin que implanta esta
funcin. Si ORIGIN = U y la funcin fuente
es incorporada, esta columna contiene el
nombre y signatura de la funcin fuente.
Valor nulo en caso contrario.
LIB_ID INTEGER Y Reservado para su utilizacin en el futuro.

Apndice D. Vistas de catlogo 707


SYSCAT.ROUTINES

Tabla 102. Vista de catlogo SYSCAT.ROUTINES (continuacin)


Posibili-
dad de
Nombre de columna Tipo de datos nulos Descripcin
TEXT_BODY_OFFSET INTEGER Si LANGUAGE = SQL, el desplazamiento
respecto al inicio del cuerpo del
procedimiento SQL del texto completo de la
sentencia CREATE PROCEDURE; -1 si
LANGUAGE no es SQL.
TEXT CLOB(2M) Y Si LANGUAGE = SQL, el texto completo
de la sentencia CREATE FUNCTION,
CREATE METHOD o CREATE
PROCEDURE; valor nulo en caso contrario.
NEWSAVEPOINTLEVEL CHAR(1) Indica si la rutina inicia un nivel de punto
de salvaguarda nuevo cuando se invoca.
N = No se inicia un nivel de punto de
salvaguarda nuevo cuando se invoca la
rutina; la rutina utiliza el nivel de punto
de salvaguarda existente
Y = Se inicia un nivel de punto de
salvaguarda nuevo cuando se invoca la
rutina
Blanco = No se aplica
3
DEBUG_MODE VARCHAR(8) Indica si la rutina se puede o no depurar
mediante el depurador de DB2.
DISALLOW = La rutina no se puede
depurar
ALLOW = La rutina se puede depurar y
puede participar en una sesin de
depuracin del cliente con el depurador
de DB2
DISABLE = La rutina no se puede
depurar y este valor no se puede
modificar sin eliminar y volver a crear la
rutina
Serie vaca = El tipo de rutina no recibe
soporte actualmente del depurador de
DB2
TRACE_LEVEL CHAR(1) Reservado para su utilizacin en el futuro.
DIAGNOSTIC_LEVEL CHAR(1) Reservado para su utilizacin en el futuro.
CHECKOUT_USERID VARCHAR(128) Y ID del usuario que ha realizando una
extraccin del objeto; nulo si el objeto no se
ha extrado.
PRECOMPILE_OPTIONS VARCHAR(1024) Y Opciones de precompilacin especificadas
para la rutina.
COMPILE_OPTIONS VARCHAR(1024) Y Opciones de compilacin especificadas para
la rutina.

708 Consulta de SQL - Volumen 1


SYSCAT.ROUTINES

Tabla 102. Vista de catlogo SYSCAT.ROUTINES (continuacin)


Posibili-
dad de
Nombre de columna Tipo de datos nulos Descripcin
EXECUTION_CONTROL CHAR(1) Modalidad de control de ejecucin de una
rutina de tipo CLR (tiempo de ejecucin de
lenguaje comn) Los valores posibles son:
N = Red
R = Lectura de archivo
S = Seguro
U = No seguro
W = Escritura de archivo
Blanco = LANGUAGE no es CLR
CODEPAGE SMALLINT Pgina de cdigos de la rutina, que
especifica la pgina de cdigos por omisin
utilizada para todos los tipos de parmetros
de caracteres, tipos de resultados y variables
locales dentro del cuerpo de la rutina.
ENCODING_SCHEME CHAR(1) Esquema de codificacin de la rutina, segn
lo especificado en la clusula PARAMETER
CCSID. Los valores posibles son:
A = ASCII
U = UNICODE
Blanco = No se ha especificado la
clusula PARAMETER CCSID
LAST_REGEN_TIME TIMESTAMP Hora a la que se ha vuelto a generar por
ltima vez el descriptor empaquetado de la
rutina SQL.
INHERITLOCKREQUEST CHAR(1) N = Esta funcin o mtodo no se puede
invocar en el contexto de una sentencia
de SQL que incluya una clusula de
peticin de bloqueo como parte de una
clusula de aislamiento especificada
Y = Esta funcin o mtodo hereda el
nivel de aislamiento de la sentencia que
lo ha invocado; tambin hereda la
clusula de peticin de bloqueo
especificada
Blanco = LANGUAGE no es SQL o
ROUTINETYPE es P
DEFINER4 VARCHAR(128) ID de autorizacin bajo el cual se ha creado
la rutina.
REMARKS VARCHAR(254) Y Comentarios proporcionados por el usuario
o nulo.

Apndice D. Vistas de catlogo 709


SYSCAT.ROUTINES

Tabla 102. Vista de catlogo SYSCAT.ROUTINES (continuacin)


Posibili-
dad de
Nombre de columna Tipo de datos nulos Descripcin

Notas:
1. Para procedimientos SQL creados antes de la versin 8.2 y migrados a la versin 9, E (en lugar de Q).
2. Durante la migracin, la columna SELECTIVITY se establecer en -1 en el descriptor empaquetado y en los
catlogos del sistema para todas las rutinas definidas por el usuario. Para un predicado definido por el usuario, la
selectividad es -1 en el catlogo del sistema. En este caso, el valor de selectividad utilizado por el optimizador es
0.01.
3. Para rutinas Java, el valor DEBUG_MODE no indica si la rutina Java se ha compilado realmente en modalidad de
depuracin o si se ha instalado un archivo Jar de depuracin en el servidor.
4. La columna DEFINER se incluye por razones de compatibilidad con versiones anteriores. Consulte OWNER.

710 Consulta de SQL - Volumen 1


SYSCAT.ROUTINESFEDERATED

SYSCAT.ROUTINESFEDERATED
Cada fila representa una rutina definida por el usuario (funcin escalar, funcin de
tabla, funcin fuente, mtodo o procedimiento). No incluye las funciones
incorporadas.
Tabla 103. Vista de catlogo SYSCAT.ROUTINESFEDERATED
Posibili-
dad de
Nombre de columna Tipo de datos nulos Descripcin
ROUTINESCHEMA VARCHAR(128) Nombre de esquema de la rutina.
ROUTINENAME VARCHAR(128) Nombre no calificado de la rutina.
ROUTINETYPE CHAR(1) Tipo de rutina.
P = Procedimiento
OWNER VARCHAR(128) ID de autorizacin bajo el cual se ha creado
la rutina.
SPECIFICNAME VARCHAR(128) Nombre de la instancia de la rutina (puede
ser un nombre generado por el sistema).
ROUTINEID INTEGER Identificador de la rutina.
PARM_COUNT SMALLINT Nmero de parmetros de la rutina.
DETERMINISTIC CHAR(1) N = Los resultados no son determinantes
(algunos parmetros pueden tener
distintos resultados si llama otra rutina)
Y = Los resultados son determinantes
EXTERNAL_ACTION CHAR(1) E = La rutina tiene efectos adicionales
externos (por lo tanto el nmero de
invocaciones es importante)
N = Ningn efecto adicional
SQL_DATA_ACCESS CHAR(1) Indica qu tipo de sentencias de SQL, si las
hay, debe dar por supuesto el gestor de
bases de datos que estn contenidas en la
rutina.
C = Contiene SQL (slo expresiones
simples sin subconsultas)
M = Contiene sentencias de SQL que
modifican datos
N = No contiene sentencias de SQL
R = Contiene sentencias de SQL de slo
lectura
COMMIT_ON_RETURN CHAR(1) Indica se la transaccin se confirma tras un
retorno satisfactorio por parte de este
procedimiento.
N = La unidad de trabajo no se confirma
Y = La unidad de trabajo se confirma
Blanco = ROUTINETYPE no es P
RESULT_SETS SMALLINT Nmero mximo estimado de conjuntos de
resultados.
CREATE_TIME TIMESTAMP Hora a la que se ha creado la rutina.
ALTER_TIME TIMESTAMP Hora a la que se ha modificado por ltima
vez la rutina.

Apndice D. Vistas de catlogo 711


SYSCAT.ROUTINESFEDERATED

Tabla 103. Vista de catlogo SYSCAT.ROUTINESFEDERATED (continuacin)


Posibili-
dad de
Nombre de columna Tipo de datos nulos Descripcin
QUALIFIER VARCHAR(128) Valor del esquema por omisin en el
momento de la definicin del objeto. Se
utiliza para completar cualquier referencia
no calificada.
RESULT_COLS SMALLINT Para un procedimiento (ROUTINETYPE =
P), contiene 0; en caso contrario, contiene 1.
CODEPAGE SMALLINT Pgina de cdigos de la rutina, que
especifica la pgina de cdigos por omisin
utilizada para todos los tipos de parmetros
de caracteres, tipos de resultados y variables
locales dentro del cuerpo de la rutina.
LAST_REGEN_TIME TIMESTAMP Hora a la que se ha vuelto a generar por
ltima vez el descriptor empaquetado de la
rutina SQL.
REMOTE_PROCEDURE VARCHAR(128) Nombre no calificado del procedimiento de
origen para el que se ha creado la rutina
federada.
REMOTE_SCHEMA VARCHAR(128) Nombre del esquema del procedimiento de
origen para el que se ha creado la rutina
federada.
SERVERNAME VARCHAR(128) Nombre de la fuente de datos que contiene
el procedimiento de origen para el cual se ha
creado la rutina federada.
REMOTE_PACKAGE VARCHAR(128) Nombre del paquete al que pertenece el
procedimiento de origen (se aplica
nicamente a los derivadores para fuentes de
datos Oracle).
REMOTE_PROCEDURE_ VARCHAR(128) Reservado para su utilizacin en el futuro.
ALTER_TIME
REMARKS VARCHAR(254) S Comentarios proporcionados por el usuario
o nulo.

712 Consulta de SQL - Volumen 1


SYSCAT.SCHEMAAUTH

SYSCAT.SCHEMAAUTH
Cada fila representa un usuario o un grupo al que se ha otorgado uno o ms
privilegios sobre un esquema.
Tabla 104. Vista de catlogo SYSCAT.SCHEMAAUTH
Posibili-
dad de
Nombre de columna Tipo de datos nulos Descripcin
GRANTOR VARCHAR(128) El que ha otorgado un privilegio.
GRANTEE VARCHAR(128) El que mantiene un privilegio.
GRANTEETYPE CHAR(1) G = Se otorga a un grupo
U = Se otorga a un usuario individual
SCHEMANAME VARCHAR(128) Nombre del esquema al que se aplica este
privilegio.
ALTERINAUTH CHAR(1) Privilegio para modificar o realizar
comentarios sobre los objetos del esquema
nombrado.
G = Se mantiene y se puede otorgar
N = No se mantiene
Y = Se mantiene
CREATEINAUTH CHAR(1) Privilegio para crear objetos en el esquema
nombrado.
G = Se mantiene y se puede otorgar
N = No se mantiene
Y = Se mantiene
DROPINAUTH CHAR(1) Privilegio para eliminar objetos del esquema
nombrado.
G = Se mantiene y se puede otorgar
N = No se mantiene
Y = Se mantiene

Apndice D. Vistas de catlogo 713


SYSCAT.SCHEMATA

SYSCAT.SCHEMATA
Cada fila representa un esquema.
Tabla 105. Vista de catlogo SYSCAT.SCHEMATA
Posibili-
dad de
Nombre de columna Tipo de datos nulos Descripcin
SCHEMANAME VARCHAR(128) Nombre del esquema.
OWNER VARCHAR(128) ID de autorizacin del esquema, que tiene
autorizacin para eliminar el esquema y
todos los objetos contenidos en el mismo. El
valor de los esquemas creados de forma
implcita es SYSIBM.
DEFINER VARCHAR(128) ID de autorizacin bajo el cual se ha creado
el esquema.
CREATE_TIME TIMESTAMP Hora a la que se ha creado el esquema.
REMARKS VARCHAR(254) Y Comentarios proporcionados por el usuario
o nulo.

714 Consulta de SQL - Volumen 1


SYSCAT.SECURITYLABELACCESS

SYSCAT.SECURITYLABELACCESS
Cada fila representa la etiqueta de seguridad que se ha otorgado al ID de
autorizacin de base de datos.
Tabla 106. Vista de catlogo SYSCAT.SECURITYLABELACCESS
Posibili-
dad de
Nombre de columna Tipo de datos nulos Descripcin
GRANTOR VARCHAR(128) El que otorga la etiqueta de seguridad.
GRANTEE VARCHAR(128) El que mantiene la etiqueta de seguridad.
GRANTEETYPE CHAR(1) U = Se otorga a un usuario individual
SECLABELID INTEGER Identificador de la etiqueta de seguridad.
SECPOLICYID INTEGER Identificador de la poltica de seguridad
asociada a la etiqueta de seguridad.
ACCESSTYPE CHAR(1) B = Tanto acceso de lectura como de
grabacin
R = Acceso de lectura
W = Acceso de grabacin
GRANT_TIME TIMESTAMP Hora a la que se ha otorgado la etiqueta de
seguridad.

Apndice D. Vistas de catlogo 715


SYSCAT.SECURITYLABELCOMPONENTELEMENTS

SYSCAT.SECURITYLABELCOMPONENTELEMENTS
Cada fila representa un valor de elemento de un componente de etiqueta de
seguridad.
Tabla 107. Vista de catlogo SYSCAT.SECURITYLABELCOMPONENTELEMENTS
Posibili-
dad de
Nombre de columna Tipo de datos nulos Descripcin
COMPID INTEGER Identificador del componente de etiqueta de
seguridad.
ELEMENTVALUE VARCHAR(32) Valor de elemento del componente de
etiqueta de seguridad.
ELEMENTVALUEENCODING CHAR(8) FOR BIT Formato codificado del valor del elemento.
DATA
PARENTELEMENTVALUE VARCHAR(32) Y Nombre del padre de un elemento para
componentes de rbol; nulo para
componentes de conjunto y de matriz y para
el nodo ROOT de un componente de rbol.

716 Consulta de SQL - Volumen 1


SYSCAT.SECURITYLABELCOMPONENTS

SYSCAT.SECURITYLABELCOMPONENTS
Cada fila representa un componente de etiqueta de seguridad.
Tabla 108. Vista de catlogo SYSCAT.SECURITYLABELCOMPONENTS
Posibili-
dad de
Nombre de columna Tipo de datos nulos Descripcin
COMPNAME VARCHAR(128) Nombre del componente de etiqueta de
seguridad.
COMPID INTEGER Identificador del componente de etiqueta de
seguridad.
COMPTYPE CHAR(1) Tipo de componente de etiqueta de
seguridad.
A = Matriz
S = Conjunto
T = rbol
NUMELEMENTS INTEGER Nmero de elementos del componente de
etiqueta de seguridad.
CREATE_TIME TIMESTAMP Hora a la que se ha creado el componente de
etiqueta de seguridad.
REMARKS VARCHAR(254) Comentarios proporcionados por el usuario
o nulo.

Apndice D. Vistas de catlogo 717


SYSCAT.SECURITYLABELS

SYSCAT.SECURITYLABELS
Cada fila representa una etiqueta de seguridad.
Tabla 109. Vista de catlogo SYSCAT.SECURITYLABELS
Posibili-
dad de
Nombre de columna Tipo de datos nulos Descripcin
SECLABELNAME VARCHAR(128) Nombre de la etiqueta de
seguridad.
SECLABELID INTEGER Identificador de la etiqueta de
seguridad.
SECPOLICYID INTEGER Identificador de la poltica de
seguridad a la que pertenece
la etiqueta de seguridad.
SECLABEL SYSPROC.DB2SECURITYLABEL Representacin interna de la
etiqueta de seguridad.
CREATE_TIME TIMESTAMP Hora a la que se ha creado la
etiqueta de seguridad.
REMARKS VARCHAR(254) Comentarios proporcionados
por el usuario o nulo.

718 Consulta de SQL - Volumen 1


SYSCAT.SECURITYPOLICIES

SYSCAT.SECURITYPOLICIES
Cada fila representa una poltica de seguridad.
Tabla 110. Vista de catlogo SYSCAT.SECURITYPOLICIES
Posibili-
dad de
Nombre de columna Tipo de datos nulos Descripcin
SECPOLICYNAME VARCHAR(128) Nombre de la poltica de seguridad.
SECPOLICYID INTEGER Identificador de la poltica de seguridad.
NUMSECLABELCOMP INTEGER Nmero de componentes de etiqueta de
seguridad de la poltica de seguridad.
RWSECLABELREL CHAR(1) Relacin entre las etiquetas de seguridad
correspondientes al acceso de lectura y de
grabacin otorgado al mismo ID de
autorizacin.
S = La etiqueta de seguridad
correspondiente al acceso de grabacin
otorgado a un usuario es un subconjunto
de la etiqueta de seguridad
correspondiente al acceso de lectura
otorgado al mismo usuario
NOTAUTHWRITESECLABEL CHAR(1) Accin que se debe emprender cuando un
usuario no tiene autorizacin para escribir la
etiqueta de seguridad especificada en la
sentencia INSERT o UPDATE.
O = Alterar temporalmente
R = Restringir
CREATE_TIME TIMESTAMP Hora a la que se ha creado la poltica de
seguridad.
REMARKS VARCHAR(254) Comentarios proporcionados por el usuario
o nulo.

Apndice D. Vistas de catlogo 719


SYSCAT.SECURITYPOLICYCOMPONENTRULES

SYSCAT.SECURITYPOLICYCOMPONENTRULES
Cada fila representa las normas de acceso de lectura y grabacin correspondientes
a un componente de etiqueta de seguridad de la poltica de seguridad.
Tabla 111. Vista de catlogo SYSCAT.SECURITYPOLICYCOMPONENTRULES
Posibili-
dad de
Nombre de columna Tipo de datos nulos Descripcin
SECPOLICYID INTEGER Identificador de la poltica de seguridad.
COMPID INTEGER Identificador del componente de etiqueta de
seguridad de la poltica de seguridad.
ORDINAL INTEGER Posicin del componente de etiqueta de
seguridad tal como aparece en la poltica de
seguridad, empezando por 1.
READACCESSRULENAME VARCHAR(128) Nombre de la norma de acceso de lectura
asociada al componente de etiqueta de
seguridad.
READACCESSRULETEXT VARCHAR(512) Texto de la norma de acceso de lectura
asociada al componente de etiqueta de
seguridad.
WRITEACCESSRULENAME VARCHAR(128) Nombre de la norma de acceso de grabacin
asociada al componente de etiqueta de
seguridad.
WRITEACCESSRULETEXT VARCHAR(512) Texto de la norma de acceso de grabacin
asociada al componente de etiqueta de
seguridad.

720 Consulta de SQL - Volumen 1


SYSCAT.SECURITYPOLICYEXEMPTIONS

SYSCAT.SECURITYPOLICYEXEMPTIONS
Cada fila representa una exencin de la poltica de seguridad que se ha otorgado a
un ID de autorizacin de base de datos.
Tabla 112. Vista de catlogo SYSCAT.SECURITYPOLICYEXEMPTIONS
Posibili-
dad de
Nombre de columna Tipo de datos nulos Descripcin
GRANTOR VARCHAR(128) El que otorga la exencin.
GRANTEE VARCHAR(128) El que mantiene la exencin.
GRANTEETYPE CHAR(1) U = Se otorga a un usuario individual
SECPOLICYID INTEGER Identificador de la poltica de seguridad a la
que se ha otorgado la exencin.
ACCESSRULENAME VARCHAR(128) Nombre de la norma de acceso para la que
se ha otorgado la exencin.
ACCESSTYPE CHAR(1) Tipo de acceso al que se aplica la norma.
R = Acceso de lectura
W = Acceso de grabacin
ORDINAL INTEGER Posicin del componente de etiqueta de
seguridad en la poltica de seguridad a la
que se aplica la norma.
ACTIONALLOWED CHAR(1) Si la norma es DB2LBACWRITEARRAY,
entonces:
B = Escritura hacia abajo y hacia arriba
D = Escritura hacia abajo
U = Escritura hacia arriba
Blanco en caso contrario.
GRANT_TIME TIMESTAMP Hora a la que se ha otorgado la exencin.

Apndice D. Vistas de catlogo 721


SYSCAT.SURROGATEAUTHIDS

SYSCAT.SURROGATEAUTHIDS
Cada fila representa un ID de autorizacin para el que otro ID de autorizacin
puede actuar como un sustituto.
Tabla 113. Vista de catlogo SYSCAT.SURROGATEAUTHIDS
Posibili-
dad de
Nombre de columna Tipo de datos nulos Descripcin
GRANTOR VARCHAR(128) ID de autorizacin que ha otorgado a
TRUSTEDID la capacidad para actuar como
un sustituto.
TRUSTEDID VARCHAR(128) Identificador de la entidad en la que se
confa para que acte como un sustituto.
TRUSTEDIDTYPE CHAR(1) G = Grupo
U = Usuario
SURROGATEAUTHID VARCHAR(128) ID de autorizacin del sustituto que puede
adoptar TRUSTEDID. PUBLIC indica que
TRUSTEDID puede adoptar cualquier ID de
autorizacin.
SURROGATEAUTHIDTYPE CHAR(1) G = Grupo
U = Usuario
GRANT_TIME TIMESTAMP Hora a la que se ha efectuado el
otorgamiento.

722 Consulta de SQL - Volumen 1


SYSCAT.SEQUENCEAUTH

SYSCAT.SEQUENCEAUTH
Cada fila representa un usuario o un grupo al que se ha otorgado uno o ms
privilegios sobre una secuencia.
Tabla 114. Vista de catlogo SYSCAT.SEQUENCEAUTH
Posibili-
dad de
Nombre de columna Tipo de datos nulos Descripcin
GRANTOR VARCHAR(128) El que ha otorgado un privilegio.
GRANTEE VARCHAR(128) El que mantiene un privilegio.
GRANTEETYPE CHAR(1) G = Se otorga a un grupo
U = Se otorga a un usuario individual
SEQSCHEMA VARCHAR(128) Nombre de esquema de la secuencia.
SEQNAME VARCHAR(128) Nombre no calificado de la secuencia.
ALTERAUTH CHAR(1) Privilegio para modificar la secuencia.
G = Se mantiene y se puede otorgar
N = No se mantiene
Y = Se mantiene
USAGEAUTH CHAR(1) Privilegio para hacer referencia a la
secuencia.
G = Se mantiene y se puede otorgar
N = No se mantiene
Y = Se mantiene

Apndice D. Vistas de catlogo 723


SYSCAT.SEQUENCES

SYSCAT.SEQUENCES
Cada fila representa una secuencia.
Tabla 115. Vista de catlogo SYSCAT.SEQUENCES
Posibili-
dad de
Nombre de columna Tipo de datos nulos Descripcin
SEQSCHEMA VARCHAR(128) Nombre de esquema de la secuencia.
SEQNAME VARCHAR(128) Nombre no calificado de la secuencia.
1
DEFINER VARCHAR(128) ID de autorizacin bajo el cual se ha creado
la secuencia.
OWNER VARCHAR(128) ID de autorizacin bajo el cual se ha creado
la secuencia.
SEQID INTEGER Identificador de la secuencia.
SEQTYPE CHAR(1) Tipo de secuencia.
I = Secuencia de identificacin
S = Secuencia corriente
INCREMENT DECIMAL(31,0) Valor de incremento.
START DECIMAL(31,0) Valor inicial de la secuencia.
MAXVALUE DECIMAL(31,0) Valor mximo de la secuencia.
MINVALUE DECIMAL(31,0) Valor mnimo de la secuencia.
NEXTCACHEFIRSTVALUE DECIMAL(31,0) Y Primer valor que estar disponible para
asignarlo en el bloque de memoria
intermedia siguiente. Si no hay
almacenamiento en antememoria, el
siguiente valor que estar disponible para
asignar.
CYCLE CHAR(1) Indica si la secuencia puede o no continuar
generando valores despus de alcanzar su
valor mximo o mnimo.
N = La secuencia no puede continuar
Y = La secuencia puede continuar
CACHE INTEGER Nmero de valores de secuencia que se
deben preasignar en memoria para el acceso
ms rpido. 0 indica que los valores de la
secuencia no se deben preasignar. En una
base de datos particionada, este valor se
aplica a cada particin de base de datos.
ORDER CHAR(1) Indica si los nmeros de secuencia se deben
o no generar en orden de peticin.
N = No es necesario que los nmeros de
secuencia se generen en orden de peticin
Y = Los nmeros de secuencia se deben
generar en orden de peticin
DATATYPEID INTEGER Para tipos incorporados, el identificador
interno del tipo incorporado. Para tipos
diferenciados, el identificador interno del
tipo diferenciado.

724 Consulta de SQL - Volumen 1


SYSCAT.SEQUENCES

Tabla 115. Vista de catlogo SYSCAT.SEQUENCES (continuacin)


Posibili-
dad de
Nombre de columna Tipo de datos nulos Descripcin
SOURCETYPEID INTEGER Para un tipo incorporado, este tiene un valor
de 0. Para un tipo diferenciado, es el
identificador interno del tipo incorporado
que es el tipo fuente del tipo diferenciado.
CREATE_TIME TIMESTAMP Hora a la que se ha creado la secuencia.
ALTER_TIME TIMESTAMP Hora a la que se ha modificado por ltima
vez la secuencia.
PRECISION SMALLINT Precisin del tipo de datos de la secuencia.
Los valores posibles son:
5 = SMALLINT
10 = INTEGER
19 = BIGINT
Para DECIMAL, es la precisin del tipo de
datos DECIMAL especificado.
ORIGIN CHAR(1) Origen de la secuencia.
S = Secuencia generada por el sistema
U = Secuencia generada por el usuario
REMARKS VARCHAR(254) Comentarios proporcionados por el usuario
o nulo.

Notas:
1. La columna DEFINER se incluye por razones de compatibilidad con versiones anteriores. Consulte OWNER.

Apndice D. Vistas de catlogo 725


SYSCAT.SERVEROPTIONS

SYSCAT.SERVEROPTIONS
Cada fila representa un valor de opcin especfico del servidor.
Tabla 116. Vista de catlogo SYSCAT.SERVEROPTIONS
Posibili-
dad de
Nombre de columna Tipo de datos nulos Descripcin
WRAPNAME VARCHAR(128) Y Nombre del derivador.
SERVERNAME VARCHAR(128) Y Nombre en maysculas del servidor.
SERVERTYPE VARCHAR (30) Y Tipo de servidor.
SERVERVERSION VARCHAR(18) Y Versin de servidor.
CREATE_TIME TIMESTAMP Hora a la que se ha creado la entrada.
OPTION VARCHAR(128) Nombre de la opcin de servidor.
SETTING VARCHAR(2048) Valor de la opcin de servidor.
SERVEROPTIONKEY VARCHAR(18) Identifica una fila de forma exclusiva.
REMARKS VARCHAR(254) Y Comentarios proporcionados por el usuario
o nulo.

726 Consulta de SQL - Volumen 1


SYSCAT.SERVERS

SYSCAT.SERVERS
Cada fila representa una fuente de datos.
Tabla 117. Vista de catlogo SYSCAT.SERVERS
Posibili-
dad de
Nombre de columna Tipo de datos nulos Descripcin
WRAPNAME VARCHAR(128) Nombre del derivador.
SERVERNAME VARCHAR(128) Nombre en maysculas del servidor.
SERVERTYPE VARCHAR (30) Y Tipo de servidor.
SERVERVERSION VARCHAR(18) Y Versin de servidor.
REMARKS VARCHAR(254) Y Comentarios proporcionados por el usuario
o nulo.

Apndice D. Vistas de catlogo 727


SYSCAT.STATEMENTS

SYSCAT.STATEMENTS
Cada fila representa una sentencia de SQL de un paquete.
Tabla 118. Vista de catlogo SYSCAT.STATEMENTS
Posibili-
dad de
Nombre de columna Tipo de datos nulos Descripcin
PKGSCHEMA VARCHAR(128) Nombre de esquema del paquete.
PKGNAME VARCHAR(128) Nombre no calificado del paquete.
UNIQUE_ID CHAR(8) FOR BIT Identificador de un paquete especfico
DATA cuando existen varios paquetes con el mismo
nombre.
VERSION VARCHAR(64) Identificador de versin del paquete.
STMTNO INTEGER El nmero de lnea de la sentencia de SQL
del mdulo fuente del programa de
aplicacin.
SECTNO SMALLINT El nmero de la seccin del paquete que
contiene la sentencia de SQL.
SEQNO SMALLINT Siempre 1.
TEXT CLOB(2M) Texto de la sentencia de SQL.

728 Consulta de SQL - Volumen 1


SYSCAT.TABAUTH

SYSCAT.TABAUTH
Cada fila representa un usuario o un grupo al que se ha otorgado uno o ms
privilegios sobre una tabla o vista.
Tabla 119. Vista de catlogo SYSCAT.TABAUTH
Posibili-
dad de
Nombre de columna Tipo de datos nulos Descripcin
GRANTOR VARCHAR(128) El que ha otorgado el privilegio.
GRANTEE VARCHAR(128) El que mantiene el privilegio.
GRANTEETYPE CHAR(1) G = Se otorga a un grupo
U = Se otorga a un usuario individual
TABSCHEMA VARCHAR(128) Nombre de esquema de la tabla o vista.
TABNAME VARCHAR(128) Nombre no calificado de la tabla o vista.
CONTROLAUTH CHAR(1) Privilegio CONTROL.
N = No se mantiene
Y = Se mantiene pero no se puede
otorgar
ALTERAUTH CHAR(1) Privilegio para modificar la tabla; permitir
que una tabla padre de esta tabla elimine su
restriccin de clave primaria o de unidad;
permitir que una tabla se convierta en una
tabla de consultas materializadas que haga
referencia a esta tabla o vista en la consulta
materializada; o permitir que una tabla que
haga referencia a esta tabla o vista en su
consulta materializada deje de ser una tabla
de consultas materializadas.
G = Se mantiene y se puede otorgar
N = No se mantiene
Y = Se mantiene
DELETEAUTH CHAR(1) Privilegio para suprimir filas de una tabla o
vista actualizable.
G = Se mantiene y se puede otorgar
N = No se mantiene
Y = Se mantiene
INDEXAUTH CHAR(1) Privilegio para crear un ndice sobre una
tabla.
G = Se mantiene y se puede otorgar
N = No se mantiene
Y = Se mantiene
INSERTAUTH CHAR(1) Privilegio para insertar en una tabla o vista
actualizable o para ejecutar el programa de
utilidad de importacin sobre una tabla o
vista.
G = Se mantiene y se puede otorgar
N = No se mantiene
Y = Se mantiene

Apndice D. Vistas de catlogo 729


SYSCAT.TABAUTH

Tabla 119. Vista de catlogo SYSCAT.TABAUTH (continuacin)


Posibili-
dad de
Nombre de columna Tipo de datos nulos Descripcin
REFAUTH CHAR(1) Privilegio para crear y eliminar una clave
fornea que hace referencia a una tabla como
la tabla padre.
G = Se mantiene y se puede otorgar
N = No se mantiene
Y = Se mantiene
SELECTAUTH CHAR(1) Privilegio para recuperar filas de una tabla o
vista, crear vistas en una tabla o ejecutar el
programa de utilidad de exportacin sobre
una tabla o vista.
G = Se mantiene y se puede otorgar
N = No se mantiene
Y = Se mantiene
UPDATEAUTH CHAR(1) Privilegio para ejecutar la sentencia UPDATE
sobre una tabla o vista actualizable.
G = Se mantiene y se puede otorgar
N = No se mantiene
Y = Se mantiene

730 Consulta de SQL - Volumen 1


SYSCAT.TABCONST

SYSCAT.TABCONST
Cada fila representa una restriccin de tabla del tipo CHECK, UNIQUE, PRIMARY
KEY o FOREIGN KEY. Para jerarquas de tablas, cada restriccin se registra slo a
nivel de la jerarqua en la que se ha creado la restriccin.
Tabla 120. Vista de catlogo SYSCAT.TABCONST
Posibili-
dad de
Nombre de columna Tipo de datos nulos Descripcin
CONSTNAME VARCHAR(128) Nombre de la restriccin.
TABSCHEMA VARCHAR(128) Nombre de esquema de la tabla a la que se
aplica esta restriccin.
TABNAME VARCHAR(128) Nombre no calificado de la tabla a la que se
aplica esta restriccin.
OWNER VARCHAR(128) ID de autorizacin bajo el que se ha creado
la restriccin.
TYPE CHAR(1) Indica el tipo de restriccin.
F = Clave fornea
I = Dependencia funcional
K = Comprobacin
P = Clave primaria
U = Unicidad
ENFORCED CHAR(1) N = No imponer la restriccin
Y = Imponer la restriccin
CHECKEXISTINGDATA CHAR(1) D = Diferir la comprobacin de los datos
existentes
I = Comprobacin inmediata de los datos
existentes
N = No comprobar nunca los datos
existentes
ENABLEQUERYOPT CHAR(1) N = Optimizacin de consulta
desactivada
Y = Optimizacin de consulta activada
1
DEFINER VARCHAR(128) ID de autorizacin bajo el que se ha creado
la restriccin.
REMARKS VARCHAR(254) Y Comentarios proporcionados por el usuario
o nulo.

Notas:
1. La columna DEFINER se incluye por razones de compatibilidad con versiones anteriores. Consulte OWNER.

Apndice D. Vistas de catlogo 731


SYSCAT.TABDEP

SYSCAT.TABDEP
Cada fila representa una dependencia de una vista o de una tabla de consultas
materializadas sobre algn otro objeto. La vista o tabla de consultas materializadas
depende del objeto de tipo BTYPE de nombre BNAME, de modo que un cambio
en el objeto afecta a la vista o a la tabla de consultas materializadas. Tambin
codifica la forma en que los privilegios sobre vistas dependen de los privilegios
sobre las tablas y vistas subyacentes.
Tabla 121. Vista de catlogo SYSCAT.TABDEP
Posibili-
dad de
Nombre de columna Tipo de datos nulos Descripcin
TABSCHEMA VARCHAR(128) Nombre de esquema de la vista o tabla de
consultas materializadas.
TABNAME VARCHAR(128) Nombre no calificado de la vista o tabla de
consultas materializadas.
DTYPE CHAR(1) Tipo de objeto dependiente.
S = Tabla de consultas materializadas
T = Tabla (slo de etapas)
V = Vista (sin tipo)
W = Vista con tipo
OWNER VARCHAR(128) ID de autorizacin del creador de la vista o
tabla de consultas materializadas.
BTYPE CHAR(1) Tipo de objeto sobre el que hay una
dependencia. Los valores posibles son:
A = Alias
F = Instancia de rutina
I = ndice si se registra una dependencia
de una tabla base
N = Apodo
O = Dependencia de privilegios en todas
las subtablas o subvistas de una jerarqua
de tablas o de vistas
R = Tipo estructurado
S = Tabla de consultas materializadas
T = Tabla (sin tipo)
U = Tabla con tipo
V = Vista (sin tipo)
W = Vista con tipo
Z = Objeto XSR
BSCHEMA VARCHAR(128) Nombre de esquema del objeto del que
depende la vista o tabla de consultas
materializadas.
BNAME VARCHAR(128) Nombre no calificado del objeto del que
depende la vista o tabla de consultas
materializadas.

732 Consulta de SQL - Volumen 1


SYSCAT.TABDEP

Tabla 121. Vista de catlogo SYSCAT.TABDEP (continuacin)


Posibili-
dad de
Nombre de columna Tipo de datos nulos Descripcin
TABAUTH SMALLINT Y Si BTYPE es N, O, S, T, U, V o W,
codifica los privilegios de la tabla o vista
subyacente de la que depende esta vista o
tabla de consultas materializadas; valor nulo
en caso contrario.
DEFINER1 VARCHAR(128) ID de autorizacin del creador de la vista o
tabla de consultas materializadas.

Notas:
1. La columna DEFINER se incluye por razones de compatibilidad con versiones anteriores. Consulte OWNER.

Apndice D. Vistas de catlogo 733


SYSCAT.TABDETACHEDDEP

SYSCAT.TABDETACHEDDEP
Cada fila representa una dependencia desenlazada entre un dependiente
desenlazado y una tabla desenlazada.
Tabla 122. Vista de catlogo SYSCAT.TABDETACHEDDEP
Posibili-
dad de
Nombre de columna Tipo de datos nulos Descripcin
TABSCHEMA VARCHAR(128) Nombre de esquema de la tabla desenlazada.
TABNAME VARCHAR(128) Nombre no calificado de la tabla
desenlazada.
DEPTABSCHEMA VARCHAR(128) Nombre de esquema del dependiente
desenlazado.
DEPTABNAME VARCHAR(128) Nombre no calificado del dependiente
desenlazado.

734 Consulta de SQL - Volumen 1


SYSCAT.TABLES

SYSCAT.TABLES
Cada fila representa una tabla, vista, alias o apodo. Cada jerarqua de tabla o de
vista tiene una fila adicional que representa la tabla de jerarqua o la vista de
jerarqua que implanta la jerarqua. Se incluyen las tablas de catlogo y las vistas.
Tabla 123. Vista de catlogo SYSCAT.TABLES
Posibili-
dad de
Nombre de columna Tipo de datos nulos Descripcin
TABSCHEMA VARCHAR(128) Nombre de esquema del objeto.
TABNAME VARCHAR(128) Nombre no calificado del objeto.
OWNER VARCHAR(128) ID de autorizacin bajo el que se ha creado
la tabla, vista, alias o apodo.
TYPE CHAR(1) Tipo de objeto.
A = Alias
G = Tabla temporal global
H = Tabla de jerarqua
L = Tabla desenlazada
N = Apodo
S = Tabla de consultas materializadas
T = Tabla (sin tipo)
U = Tabla con tipo
V = Vista (sin tipo)
W = Vista con tipo
STATUS CHAR(1) Estado del objeto.
C = Pendiente de establecer integridad
N = Normal
X = No operativo
BASE_TABSCHEMA VARCHAR(128) Y Si TYPE = A, contiene el nombre de
esquema de la tabla, vista, alias o apodo al
que hace referencia este alias; valor nulo en
caso contrario.
BASE_TABNAME VARCHAR(128) Y Si TYPE = A, contiene el nombre no
calificado de la tabla, vista, alias o apodo al
que hace referencia este alias; valor nulo en
caso contrario.
ROWTYPESCHEMA VARCHAR(128) Y Nombre de esquema del tipo de fila
correspondiente a esta tabla, si se aplica;
valor nulo en caso contrario.
ROWTYPENAME VARCHAR(128) Y Nombre de no calificado del tipo de fila
correspondiente a esta tabla, si se aplica;
valor nulo en caso contrario.
CREATE_TIME TIMESTAMP Hora a la que se ha creado el objeto.
INVALIDATE_TIME TIMESTAMP Hora a la que se ha invalidado por ltima
vez el objeto.
STATS_TIME TIMESTAMP Y Hora a la que se ha hecho por ltima vez un
cambio en las estadsticas registradas
correspondientes a este objeto. Nulo si no se
recopilan estadsticas.

Apndice D. Vistas de catlogo 735


SYSCAT.TABLES

Tabla 123. Vista de catlogo SYSCAT.TABLES (continuacin)


Posibili-
dad de
Nombre de columna Tipo de datos nulos Descripcin
COLCOUNT SMALLINT Nmero de columnas, incluidas las columnas
heredadas (si las hay).
TABLEID SMALLINT Identificador interno del objeto lgico.
TBSPACEID SMALLINT Identificador lgico interno del espacio de
tablas primario correspondiente a este objeto.
CARD BIGINT Nmero total de filas; -1 si no se recopilan
estadsticas.
NPAGES BIGINT Nmero total de pginas en las que existen
filas de la tabla; -1 para una vista o alias, o si
no se recopilan estadsticas; -2 para una
subtabla o tabla de jerarqua.
FPAGES BIGINT Nmero total de pginas; -1 para una vista o
alias, o si no se recopilan estadsticas; -2 para
una subtabla o tabla de jerarqua.
OVERFLOW BIGINT Nmero total de registros de
desbordamiento de la tabla; -1 para una vista
o alias, o si no se recopilan estadsticas; -2
para una subtabla o tabla de jerarqua.
TBSPACE VARCHAR(128) Y Nombre del espacio de tablas primario
correspondiente a la tabla. Si no se especifica
ningn otro espacio de tablas, todas las
partes de la tabla se almacenan en este
espacio de tablas. Nulo para alias, vistas y
tablas particionadas.
INDEX_TBSPACE VARCHAR(128) Y Nombre del espacio de tablas que contiene
todos los ndices creados en esta tabla. Nulo
para alias, vistas y tablas particionadas o si
se ha omitido la clusula INDEX IN o se ha
especificado con el mismo valor que la
clusula IN de la sentencia CREATE TABLE.
LONG_TBSPACE VARCHAR(128) Y Nombre del espacio de tablas que contiene
todos los datos largos (tipos de columna
LONG o LOB) para esta tabla. Nulo para
alias, vistas y tablas particionadas o si se ha
omitido la clusula LONG IN o se ha
especificado con el mismo valor que la
clusula IN de la sentencia CREATE TABLE.
PARENTS SMALLINT Y Nmero de tablas padre de este objeto; es
decir, el nmero de restricciones de
referencia de las que depende este objeto.
CHILDREN SMALLINT Y Nmero de tablas dependientes de este
objeto; es decir, el nmero de restricciones de
referencia de las que depende este objeto.
SELFREFS SMALLINT Y Nmero de restricciones de referencia propia
para este objeto; es decir, el nmero de
restricciones de referencia en las que este
objeto es tanto padre como dependiente.
KEYCOLUMNS SMALLINT Y Nmero de columnas de la clave primaria.

736 Consulta de SQL - Volumen 1


SYSCAT.TABLES

Tabla 123. Vista de catlogo SYSCAT.TABLES (continuacin)


Posibili-
dad de
Nombre de columna Tipo de datos nulos Descripcin
KEYINDEXID SMALLINT Y Identificador de ndice correspondiente al
ndice de clave primaria; 0 o el valor nulo si
no hay clave primaria.
KEYUNIQUE SMALLINT Nmero de restricciones de clave de
unicidad (que no sean la restriccin de clave
primara) definidas en este objeto.
CHECKCOUNT SMALLINT Nmero de restricciones de comprobacin
definidas en este objeto.
DATACAPTURE CHAR(1) L = La tabla interviene en la duplicacin
de datos, incluida la duplicacin de las
columnas LONG VARCHAR y LONG
VARGRAPHIC
N = La tabla no interviene en la
duplicacin de datos
Y = La tabla interviene en la duplicacin
de datos, sin incluir la duplicacin de las
columnas LONG VARCHAR y LONG
VARGRAPHIC
CONST_CHECKED CHAR(32) El byte 1 representa restriccin de clave
fornea.
El byte 2 representa restriccin de
comprobacin.
El byte 5 representa la tabla de consultas
materializadas.
El byte 6 representa columna generada.
El byte 7 representa la tabla dispuesta
con antelacin.
El byte 8 representa restriccin de
particionamiento de datos.
Otros bytes estn reservados para su
utilizacin en el futuro.
Los valores posibles son:
F = En el byte 5, la tabla de consultas
materializadas no puede renovarse de
forma incremental. En el byte 7, el
contenido de la tabla dispuesta con
antelacin es incompleto y no puede
utilizarse para renovaciones
incrementales de la tabla de consultas
materializadas asociada.
N = No comprobado
U = Comprobado por el usuario
W = Estaba en el estado U cuando la
tabla se coloc en el estado de pendiente
de establecer integridad
Y = Comprobado por el sistema
PMAP_ID SMALLINT Y Identificador del mapa de distribucin que
utiliza actualmente esta tabla (nulo para alias
o vistas).

Apndice D. Vistas de catlogo 737


SYSCAT.TABLES

Tabla 123. Vista de catlogo SYSCAT.TABLES (continuacin)


Posibili-
dad de
Nombre de columna Tipo de datos nulos Descripcin
PARTITION_MODE CHAR(1) Indica la forma en que los datos se
distribuyen entre particiones de base de
datos en un sistema de bases de datos
particionadas.
H = Generacin aleatoria
R = Duplicado entre particiones de base
de datos
Blanco = No hay particionamiento de
base de datos
LOG_ATTRIBUTE CHAR(1) Siempre 0. Esta columna ya no se utiliza.
PCTFREE SMALLINT Porcentaje de cada pgina que se ha de
reservar para inserciones posteriores.
APPEND_MODE CHAR(1) Controla la forma en que se insertan filas en
pginas.
N = Las filas nuevas se insertan en los
espacios existentes, si los hay
Y = Las filas nuevas se aaden al final de
los datos
El valor inicial es N.
REFRESH CHAR(1) Modalidad de renovacin.
D = Diferida
I = Inmediata
O = Una vez
Blanco = No es una tabla de consultas
materializadas
REFRESH_TIME TIMESTAMP Y Para REFRESH = D y O, hora a la que los
datos se han renovado por ltima vez
(sentencia REFRESH TABLE); valor nulo en
caso contrario.
LOCKSIZE CHAR(1) Indica la granularidad de bloqueo preferida
para tablas a las que acceden las sentencias
DML (lenguaje de manipulacin de datos).
Slo se aplica a tablas. Los valores posibles
son:
I = Insercin de bloque
R = Fila
T = Tabla
Blanco = No se aplica
El valor inicial es R.
VOLATILE CHAR(1) C = La cardinalidad de la tabla es voltil
Blanco = No se aplica
ROW_FORMAT CHAR(1) No utilizado.
PROPERTY VARCHAR(32) Propiedades para una tabla. Un solo blanco
indica que la tabla no tiene propiedades.
STATISTICS_PROFILE CLOB(10M) Y Mandato RUNSTATS utilizado para registrar
un perfil estadstico para el objeto.

738 Consulta de SQL - Volumen 1


SYSCAT.TABLES

Tabla 123. Vista de catlogo SYSCAT.TABLES (continuacin)


Posibili-
dad de
Nombre de columna Tipo de datos nulos Descripcin
COMPRESSION CHAR(1) B = Tanto la compresin de valores como
la de filas estn activadas
N = No hay ninguna compresin
activada; se utiliza un formato de fila que
no da soporte a la compresin
R = La compresin de filas est activada;
puede que se utilice un formato de fila
que da soporte a la compresin
V = La compresin de valores est
activada; se utiliza un formato de fila que
da soporte a la compresin
Blanco = No se aplica
ACCESS_MODE CHAR(1) Estado de restriccin de acceso del objeto.
Estos estados slo se aplican a objetos que
estn en estado pendiente de establecer
integridad o a objetos procesados por una
sentencia SET INTEGRITY. Los valores
posibles son:
D = No hay movimiento de datos
F = Acceso completo
N = No hay acceso
R = Acceso de slo lectura
CLUSTERED CHAR(1) Y Y = La tabla est en un clster de varias
dimensiones (aunque slo segn una
dimensin)
Valor nulo = La tabla no est en un
clster de varias dimensiones
ACTIVE_BLOCKS BIGINT Nmero total de bloques activos en la tabla,
o -1. Slo se aplica a las tablas que estn en
un clster de varias dimensiones (MDC).
DROPRULE CHAR(1) N = No hay regla
R = Se aplica la regla restrictiva a la
eliminacin
MAXFREESPACESEARCH SMALLINT Reservado para su utilizacin en el futuro.
AVGCOMPRESSEDROWSIZE SMALLINT Longitud media (en bytes) de filas
comprimidas en esta tabla; -1 si no se
recopilan estadsticas.
AVGROWCOMPRESSIONRATIO REAL Para filas comprimidas en la tabla, es la
proporcin media de compresin por fila; es
decir, la longitud media de filas no
comprimidas dividido por la longitud media
de filas comprimidas; -1 si no se recopilan
estadsticas.
AVGROWSIZE SMALLINT Longitud media (en bytes) de filas
comprimidas y no comprimidas de esta
tabla; -1 si no se recopilan estadsticas.

Apndice D. Vistas de catlogo 739


SYSCAT.TABLES

Tabla 123. Vista de catlogo SYSCAT.TABLES (continuacin)


Posibili-
dad de
Nombre de columna Tipo de datos nulos Descripcin
PCTROWSCOMPRESSED REAL Filas comprimidas como un porcentaje del
nmero total de filas de la tabla; -1 si no se
recopilan estadsticas.
LOGINDEXBUILD VARCHAR(3) Y Nivel de anotacin cronolgica que se debe
realizar durante las operaciones de crear,
volver a crear o reorganizar el ndice de la
tabla.
OFF = las operaciones de creacin del
ndice de la tabla se anotarn
cronolgicamente de forma mnima
ON = las operaciones de creacin del
ndice de la tabla se anotarn
cronolgicamente por completo
Valor nulo = se utilizar el valor del
parmetro de configuracin de base de
datos logindexbuild para determinar si se
debe realizar una anotacin cronolgica
completa de las operaciones de creacin
de ndice o no
CODEPAGE SMALLINT Pgina de cdigos del objeto. Es la pgina de
cdigos por omisin utilizada para todas las
columnas de caracteres, activadores,
restricciones de comprobacin y columnas
generadas por expresin.
ENCODING_SCHEME CHAR(1) A = Se ha especificado CCSID ASCII
U = Se ha especificado CCSID UNICODE
Blanco = No se ha especificado la
clusula CCSID
PCTPAGESSAVED SMALLINT Porcentaje aproximado de pginas guardadas
en la tabla como un resultado de la
compresin de filas. Este valor incluye bytes
de actividad general para cada fila de datos
de usuario de la tabla, pero no incluye el
espacio que consume la actividad general del
diccionario; es -1 si no se recopilan
estadsticas.
LAST_REGEN_TIME TIMESTAMP Hora a la que se han vuelto a generar por
ltima vez las vistas y restricciones de
comprobacin de la tabla.
SECPOLICYID INTEGER Identificador de la poltica de seguridad que
protege la tabla; 0 para tablas no protegidas.
PROTECTIONGRANULARITY CHAR(1) B = Granularidad tanto a nivel de
columna como a nivel de fila
C = Granularidad a nivel de columna
R = Granularidad a nivel de fila
Blanco = Tabla no protegida
1
DEFINER VARCHAR(128) ID de autorizacin bajo el que se ha creado
la tabla, vista, alias o apodo.

740 Consulta de SQL - Volumen 1


SYSCAT.TABLES

Tabla 123. Vista de catlogo SYSCAT.TABLES (continuacin)


Posibili-
dad de
Nombre de columna Tipo de datos nulos Descripcin
REMARKS VARCHAR(254) Y Comentarios proporcionados por el usuario
o nulo.

Notas:
1. La columna DEFINER se incluye por razones de compatibilidad con versiones anteriores. Consulte OWNER.

Apndice D. Vistas de catlogo 741


SYSCAT.TABLESPACES

SYSCAT.TABLESPACES
Cada fila representa un espacio de tablas.
Tabla 124. Vista de catlogo SYSCAT.TABLESPACES
Posibili-
dad de
Nombre de columna Tipo de datos nulos Descripcin
TBSPACE VARCHAR(128) Nombre del espacio de tablas.
OWNER VARCHAR(128) ID de autorizacin bajo el que se ha creado
el espacio de tablas.
CREATE_TIME TIMESTAMP Hora a la que se ha creado el espacio de
tablas.
TBSPACEID INTEGER Identificador del espacio de tablas.
TBSPACETYPE CHAR(1) Tipo de espacio de tablas.
D = Espacio gestionado por la base de
datos
S = Espacio gestionado por el sistema
DATATYPE CHAR(1) Tipo de datos que se pueden almacenar en
este espacio de tablas.
A = todos los tipos de datos permanentes;
espacio de tablas regular
L = Todos los tipos de datos
permanentes; espacio de tabla grande
T = Slo tablas temporales del sistema
U = Slo tablas temporales declaradas
EXTENTSIZE INTEGER Tamao de cada extensin, en pginas de
tamao PAGESIZE. Este volumen de pginas
se escribe en un contenedor individual del
espacio de tablas antes de cambiar al
contenedor siguiente.
PREFETCHSIZE INTEGER Nmero de pginas de tamao PAGESIZE
que se van a leer cuando se realice la
captacin previa; -1 para el valor
AUTOMATIC.
OVERHEAD DOUBLE Actividad general del controlador y tiempo
de latencia y de bsqueda en disco, en
milisegundos (promedio para los
contenedores de este espacio de tabla).
TRANSFERRATE DOUBLE Tiempo para leer una pgina de tamao
PAGESIZE en el almacenamiento intermedio
(promedio para los contenedores de este
espacio de tabla).
PAGESIZE INTEGER Tamao (en bytes) de pginas en este espacio
de tabla.
DBPGNAME VARCHAR(128) Nombre del grupo de particiones de base de
datos asociado a este espacio de tabla.
BUFFERPOOLID INTEGER Identificador de la agrupacin de
almacenamientos intermedios utilizada por
este espacio de tabla (1 indica la agrupacin
de almacenamientos intermedios por
omisin).

742 Consulta de SQL - Volumen 1


SYSCAT.TABLESPACES

Tabla 124. Vista de catlogo SYSCAT.TABLESPACES (continuacin)


Posibili-
dad de
Nombre de columna Tipo de datos nulos Descripcin
DROP_RECOVERY CHAR(1) Indica si las tablas de este espacio de tabla se
pueden o no recuperar tras una operacin de
eliminacin de la tabla.
N = Las tablas no se pueden recuperar
Y = Las tablas se pueden recuperar
1
NGNAME VARCHAR(128) Nombre del grupo de particiones de base de
datos asociado a este espacio de tabla.
DEFINER2 VARCHAR(128) ID de autorizacin bajo el que se ha creado
el espacio de tablas.
REMARKS VARCHAR(254) Y Comentarios proporcionados por el usuario
o nulo.

Notas:
1. La columna NGNAME se incluye por razones de compatibilidad con versiones anteriores. Consulte DBPGNAME.
2. La columna DEFINER se incluye por razones de compatibilidad con versiones anteriores. Consulte OWNER.

Apndice D. Vistas de catlogo 743


SYSCAT.TABOPTIONS

SYSCAT.TABOPTIONS
Cada fila representa una opcin que est asociada a una tabla remota.
Tabla 125. Vista de catlogo SYSCAT.TABOPTIONS
Posibili-
dad de
Nombre de columna Tipo de datos nulos Descripcin
TABSCHEMA VARCHAR(128) Nombre de esquema de una tabla, vista,
alias o apodo.
TABNAME VARCHAR(128) Nombre no calificado de una tabla, vista,
alias o apodo.
OPTION VARCHAR(128) Nombre de la opcin de tabla.
SETTING CLOB(32K) Valor de la opcin de tabla.

744 Consulta de SQL - Volumen 1


SYSCAT.TBSPACEAUTH

SYSCAT.TBSPACEAUTH
Cada fila representa un usuario o grupo al que se ha otorgado el privilegio USE
sobre un determinado espacio de tabla de la base de datos.
Tabla 126. Vista de catlogo SYSCAT.TBSPACEAUTH
Posibili-
dad de
Nombre de columna Tipo de datos nulos Descripcin
GRANTOR VARCHAR(128) El que ha otorgado el privilegio.
GRANTEE VARCHAR(128) El que mantiene el privilegio.
GRANTEETYPE CHAR(1) G = Se otorga a un grupo
U = Se otorga a un usuario individual
TBSPACE VARCHAR(128) Nombre del espacio de tabla.
USEAUTH CHAR(1) Privilegio para crear tablas dentro del
espacio de tabla.
G = Se mantiene y se puede otorgar
N = No se mantiene
Y = Se mantiene

Apndice D. Vistas de catlogo 745


SYSCAT.TRANSFORMS

SYSCAT.TRANSFORMS
Cada fila representa las funciones que manejan las transformaciones entre un tipo
definido por el usuario y un tipo SQL base, o a la inversa.
Tabla 127. Vista de catlogo SYSCAT.TRANSFORMS
Posibili-
dad de
Nombre de columna Tipo de datos nulos Descripcin
TYPEID SMALLINT Identificador del tipo de datos
TYPESCHEMA VARCHAR(128) Nombre de esquema del tipo de datos. El
nombre de esquema para tipos incorporados
es SYSIBM.
TYPENAME VARCHAR(128) Nombre no calificado del tipo de datos.
GROUPNAME VARCHAR(128) Nombre del grupo de transformacin.
FUNCID INTEGER Identificador de la rutina.
FUNCSCHEMA VARCHAR(128) Nombre de esquema de la rutina.
FUNCNAME VARCHAR(128) Nombre no calificado de la rutina.
SPECIFICNAME VARCHAR(128) Nombre de la instancia de la rutina (puede
ser un nombre generado por el sistema).
TRANSFORMTYPE VARCHAR(8) FROM SQL = La funcin de
transformacin transforma un tipo
estructurado desde SQL
TO SQL = La funcin de transformacin
transforma un tipo estructurado a SQL
FORMAT CHAR(1) Formato generado por la transformacin de
SQL FROM.
S = Estructura de DB2
U = Definido por el usuario
MAXLENGTH INTEGER Longitud mxima (en bytes) de la salida de
la transformacin FROM SQL; valor nulo
para transformaciones de SQL TO.
ORIGIN CHAR(1) Fuente de este grupo de transformaciones.
O = Grupo de transformaciones original
(incorporado o definido por el usuario)
R = Grupo de transformaciones
redefinido (slo los grupos incorporados
se pueden redefinir)
REMARKS VARCHAR(254) Y Comentarios proporcionados por el usuario
o nulo.

746 Consulta de SQL - Volumen 1


SYSCAT.TRIGDEP

SYSCAT.TRIGDEP
Cada fila representa una dependencia de un activador sobre algn otro objeto. El
activador depende del objeto de tipo BTYPE de nombre BNAME, de modo que un
cambio en el objeto afecta al activador.
Tabla 128. Vista de catlogo SYSCAT.TRIGDEP
Posibili-
dad de
Nombre de columna Tipo de datos nulos Descripcin
TRIGSCHEMA VARCHAR(128) Nombre de esquema del activador.
TRIGNAME VARCHAR(128) Nombre no calificado del activador.
BTYPE CHAR(1) Tipo de objeto sobre el que hay una
dependencia. Los valores posibles son:
A = Alias
B = Activador
F = Instancia de rutina
H = Tabla de jerarqua
K = Paquete
L = Tabla desenlazada
O = Dependencia de privilegios en todas
las subtablas o subvistas de una jerarqua
de tablas o de vistas
Q = Secuencia
R = Tipo estructurado
S = Tabla de consultas materializadas
T = Tabla (sin tipo)
U = Tabla con tipo
V = Vista (sin tipo)
W = Vista con tipo
X = Extensin de ndice
Z = Objeto XSR
BSCHEMA VARCHAR(128) Nombre de esquema del objeto sobre el que
hay una dependencia.
BNAME VARCHAR(128) Nombre no calificado del objeto sobre el que
hay una dependencia. Para rutinas (BTYPE =
F), es el nombre especfico.
TABAUTH SMALLINT Y Si BTYPE = O, S, T, U, V o W,
codifica los privilegios sobre la tabla o vista
que necesita un activador dependiente; valor
nulo en caso contrario.

Apndice D. Vistas de catlogo 747


SYSCAT.TRIGGERS

SYSCAT.TRIGGERS
Cada fila representa un activador. Para jerarquas de tablas, cada activador se
registra slo al nivel de la jerarqua donde se ha creado.
Tabla 129. Vista de catlogo SYSCAT.TRIGGERS
Posibili-
dad de
Nombre de columna Tipo de datos nulos Descripcin
TRIGSCHEMA VARCHAR(128) Nombre de esquema del activador.
TRIGNAME VARCHAR(128) Nombre no calificado del activador.
OWNER VARCHAR(128) ID de autorizacin bajo el cual se ha creado
el activador.
TABSCHEMA VARCHAR(128) Nombre de esquema de la tabla o vista a la
que se aplica este activador.
TABNAME VARCHAR(128) Nombre no calificado de la tabla o vista a la
que se aplica este activador.
TRIGTIME CHAR(1) Momento en que se aplican las acciones
activadas a la base de datos, en relacin al
suceso que ha disparado el activador.
A = El activador se aplica despus del
suceso
B = El activador se aplica antes del
suceso
I = El activador se aplica en lugar del
suceso
TRIGEVENT CHAR(1) Suceso que dispara el activador.
D = Operacin de supresin
I = Operacin de insercin
U = Operacin de actualizacin
GRANULARITY CHAR(1) El activador se ejecuta una vez por:
R = Fila
S = Sentencia
VALID CHAR(1) N = El activador no es vlido
Y = El activador es vlido
X = El activador no est operativo y se
debe volver a crear
CREATE_TIME TIMESTAMP Hora en la que se ha definido el activador.
Utilizada para resolver las funciones y tipos.
QUALIFIER VARCHAR(128) Valor del esquema por omisin en el
momento de la definicin del objeto. Se
utiliza para completar cualquier referencia
no calificada.
FUNC_PATH VARCHAR(254) Va de acceso de SQL en el momento en que
se ha definido el activador. Utilizada para
resolver las funciones y tipos.
TEXT CLOB(2M) Texto completo de la sentencia CREATE
TRIGGER, tal como se ha escrito.

748 Consulta de SQL - Volumen 1


SYSCAT.TRIGGERS

Tabla 129. Vista de catlogo SYSCAT.TRIGGERS (continuacin)


Posibili-
dad de
Nombre de columna Tipo de datos nulos Descripcin
LAST_REGEN_TIME TIMESTAMP Hora a la que se ha vuelto a generar por
ltima ves el descriptor de paquete
correspondiente al activador.
DEFINER1 VARCHAR(128) ID de autorizacin bajo el cual se ha creado
el activador.
REMARKS VARCHAR(254) Y Comentarios proporcionados por el usuario
o nulo.

Notas:
1. La columna DEFINER se incluye por razones de compatibilidad con versiones anteriores. Consulte OWNER.

Apndice D. Vistas de catlogo 749


SYSCAT.TYPEMAPPINGS

SYSCAT.TYPEMAPPINGS
Cada fila representa una correlacin de tipos de datos entre un tipo de datos
definido localmente y un tipo de datos de la fuente de datos. Hay dos tipos de
correlacin (direcciones de correlacin):
v La correlacin de tipos hacia adelante correlaciona un tipo de datos de fuente de
datos con un tipo de datos definido localmente.
v La correlacin de tipos hacia atrs correlaciona un tipo de datos definido
localmente con un tipo de datos de fuente de datos.
Tabla 130. Vista de catlogo SYSCAT.TYPEMAPPINGS
Posibili-
dad de
Nombre de columna Tipo de datos nulos Descripcin
TYPE_MAPPING VARCHAR(18) Nombre de la correlacin de tipos (puede ser
una correlacin generada por el sistema).
MAPPINGDIRECTION CHAR(1) Indica si esta correlacin de tipos es una
correlacin hacia adelante o hacia atrs.
F = Correlacin de tipos hacia adelante
R = Correlacin de tipos hacia atrs
TYPESCHEMA VARCHAR(128) Y Nombre de esquema del tipo local en una
correlacin de tipos de datos; nulo para tipos
incorporados.
TYPENAME VARCHAR(128) Nombre no calificado del tipo local en una
correlacin de tipos de datos.
TYPEID SMALLINT Identificador del tipo de datos
SOURCETYPEID SMALLINT Identificador del tipo de fuente.
OWNER VARCHAR(128) ID de autorizacin bajo el cual se ha creado
esta correlacin de tipos. SYSIBM indica
una correlacin de tipos incorporada.
LENGTH INTEGER Y Longitud o precisin mxima del tipo de
datos local en este tipo de correlacin. Si es
nulo, el sistema determina la longitud o
precisin mxima. Para tipos de carcter,
representa el nmero mximo de bytes.
SCALE SMALLINT Y Nmero mximo de dgitos de la parta
fraccional de un valor decimal local en esta
correlacin. Si es nulo, el sistema determina
el nmero mximo.
LOWER_LEN INTEGER Y Longitud o precisin mnima del tipo de
datos local en esta correlacin. Si es nulo, el
sistema determina la longitud o precisin
mnima. Para tipos de carcter, representa el
nmero mnimo de bytes.
UPPER_LEN INTEGER Y Longitud o precisin mxima del tipo de
datos local en este tipo de correlacin. Si es
nulo, el sistema determina la longitud o
precisin mxima. Para tipos de carcter,
representa el nmero mximo de bytes.

750 Consulta de SQL - Volumen 1


SYSCAT.TYPEMAPPINGS

Tabla 130. Vista de catlogo SYSCAT.TYPEMAPPINGS (continuacin)


Posibili-
dad de
Nombre de columna Tipo de datos nulos Descripcin
LOWER_SCALE SMALLINT Y Nmero mnimo de dgitos de la parta
fraccional de un valor decimal local en esta
correlacin. Si es nulo, el sistema determina
el nmero mnimo.
UPPER_SCALE SMALLINT Y Nmero mximo de dgitos de la parta
fraccional de un valor decimal local en esta
correlacin. Si es nulo, el sistema determina
el nmero mximo.
S_OPR_P CHAR(2) Y Relacin entre la escala y la precisin de un
valor decimal local en esta correlacin. Se
pueden utilizar los operadores bsicos de
comparacin (=, <, >, <=, >=, <>). Un valor
nulo indica que no es necesaria ninguna
relacin especfica.
BIT_DATA CHAR(1) Y Indica si este tipo de caracteres es o no para
datos de bits. Los valores posibles son:
N = Este tipo no es para datos de bits
Y = Este tipo es para datos de bits
Valor nulo = No es un tipo de datos de
caracteres o el sistema determina el
atributo de datos de bits
WRAPNAME VARCHAR(128) Y Protocolo de acceso a datos (derivador) al
que se aplica esta correlacin.
SERVERNAME VARCHAR(128) Y Nombre en maysculas del servidor.
SERVERTYPE VARCHAR(30) Y Tipo de servidor.
SERVERVERSION VARCHAR(18) Y Versin de servidor.
REMOTE_TYPESCHEMA VARCHAR(128) Y Nombre de esquema del tipo de datos de la
fuente de datos.
REMOTE_TYPENAME VARCHAR(128) Nombre no calificado del tipo de datos de
fuente de datos.
REMOTE_META_TYPE CHAR(1) Y Indica si este tipo remoto es un tipo
incorporado del sistema o un tipo
diferenciado.
S = Tipo incorporado del sistema
T = Tipo diferenciado
REMOTE_LOWER_LEN INTEGER Y Longitud o precisin mnima del tipo de
datos remoto en esta correlacin. Para tipos
de carcter, representa el nmero mnimo de
caracteres (no bytes). Para tipos binarios,
representa el nmero mnimo de bytes. Un
valor de -1 indica que se utiliza la longitud o
la precisin por omisin o que el tipo remoto
carece de longitud o precisin.

Apndice D. Vistas de catlogo 751


SYSCAT.TYPEMAPPINGS

Tabla 130. Vista de catlogo SYSCAT.TYPEMAPPINGS (continuacin)


Posibili-
dad de
Nombre de columna Tipo de datos nulos Descripcin
REMOTE_UPPER_LEN INTEGER Y Longitud o precisin mxima del tipo de
datos remoto en esta correlacin. Para tipos
de carcter, representa el nmero mximo de
caracteres (no bytes). Para tipos binarios,
representa el nmero mximo de bytes. Un
valor de -1 indica que se utiliza la longitud o
la precisin por omisin o que el tipo remoto
carece de longitud o precisin.
REMOTE_LOWER_SCALE SMALLINT Y Nmero mnimo de dgitos de la parta
fraccional de un valor decimal remoto en
esta correlacin, o el valor nulo.
REMOTE_UPPER_SCALE SMALLINT Y Nmero mximo de dgitos de la parta
fraccional de un valor decimal remoto en
esta correlacin, o el valor nulo.
REMOTE_S_OPR_P CHAR(2) Y Relacin entre la escala y la precisin de un
valor decimal remoto en esta correlacin. Se
pueden utilizar los operadores bsicos de
comparacin (=, <, >, <=, >=, <>). Un valor
nulo indica que no es necesaria ninguna
relacin especfica.
REMOTE_BIT_DATA CHAR(1) Y Indica si este tipo de caracteres remoto es o
no para datos de bits. Los valores posibles
son:
N = Este tipo no es para datos de bits
Y = Este tipo es para datos de bits
Valor nulo = No es un tipo de datos de
caracteres o el sistema determina el
atributo de datos de bits
USER_DEFINED CHAR(1) Indica si la correlacin es o no una
correlacin definida por el usuario. El valor
siempre es Y; es decir, la correlacin
siempre es una correlacin definida por el
usuario.
CREATE_TIME TIMESTAMP Hora en que se ha creado esta correlacin.
1
DEFINER VARCHAR(128) ID de autorizacin bajo el cual se ha creado
esta correlacin de tipos. SYSIBM indica
una correlacin de tipos incorporada.
REMARKS VARCHAR(254) Y Comentarios proporcionados por el usuario
o nulo.

Notas:
1. La columna DEFINER se incluye por razones de compatibilidad con versiones anteriores. Consulte OWNER.

752 Consulta de SQL - Volumen 1


SYSCAT.USEROPTIONS

SYSCAT.USEROPTIONS
Cada fila representa un valor de opcin de usuario especfico del servidor.
Tabla 131. Vista de catlogo SYSCAT.USEROPTIONS
Posibili-
dad de
Nombre de columna Tipo de datos nulos Descripcin
AUTHID VARCHAR(128) ID de autorizacin local, en maysculas.
SERVERNAME VARCHAR(128) Nombre del servidor en el que se ha
definido el usuario.
OPTION VARCHAR(128) Nombre de la opcin de usuario.
SETTING VARCHAR(2048) Valor de la opcin de usuario.

Apndice D. Vistas de catlogo 753


SYSCAT.VIEWS

SYSCAT.VIEWS
Cada fila representa una vista.
Tabla 132. Vista de catlogo SYSCAT.VIEWS
Posibili-
dad de
Nombre de columna Tipo de datos nulos Descripcin
VIEWSCHEMA VARCHAR(128) Nombre de esquema de la vista.
VIEWNAME VARCHAR(128) Nombre no calificado de la vista.
OWNER VARCHAR(128) ID de autorizacin bajo el cual se ha creado
la vista.
SEQNO SMALLINT Siempre 1.
VIEWCHECK CHAR(1) Tipo de comprobacin de vista.
C = Opcin de comprobacin en cascada
L = Opcin de comprobacin local
N = Sin opcin de comprobacin
READONLY CHAR(1) N = Pueden actualizar la vista los
usuarios con la autorizacin adecuada
Y = La vista es de slo lectura debido a
su definicin
VALID CHAR(1) X = La definicin de la vista o tabla de
consultas materializadas no est operativa
y se debe volver a crear
Y = La definicin de la vista o tabla de
consultas materializadas es vlida
QUALIFIER VARCHAR(128) Valor del esquema por omisin en el
momento de la definicin del objeto. Se
utiliza para completar cualquier referencia
no calificada.
FUNC_PATH VARCHAR(254) Va de acceso de SQL en vigor en el
momento en que se defini la vista. Cuando
se hace referencia a la vista en sentencias
DML (lenguaje de manipulacin de datos), se
debe utilizar esta va de acceso para resolver
las llamadas a funciones de la vista.
SYSIBM para vistas anteriores a la Versin
2.
TEXT CLOB(2M) Texto completo de la sentencia CREATE
VIEW, tal como se ha escrito.
DEFINER1 VARCHAR(128) ID de autorizacin bajo el cual se ha creado
la vista.

Notas:
1. La columna DEFINER se incluye por razones de compatibilidad con versiones anteriores. Consulte OWNER.

754 Consulta de SQL - Volumen 1


SYSCAT.WRAPOPTIONS

SYSCAT.WRAPOPTIONS
Cada fila representa una opcin especfica del derivador.
Tabla 133. Vista de catlogo SYSCAT.WRAPOPTIONS
Posibili-
dad de
Nombre de columna Tipo de datos nulos Descripcin
WRAPNAME VARCHAR(128) Nombre del derivador.
OPTION VARCHAR(128) Nombre de la opcin del derivador.
SETTING VARCHAR(2048) Valor de la opcin del derivador.

Apndice D. Vistas de catlogo 755


SYSCAT.WRAPPERS

SYSCAT.WRAPPERS
Cada fila representa un derivador registrado.
Tabla 134. Vista de catlogo SYSCAT.WRAPPERS
Posibili-
dad de
Nombre de columna Tipo de datos nulos Descripcin
WRAPNAME VARCHAR(128) Nombre del derivador.
WRAPTYPE CHAR(1) Tipo de derivador.
N = No relacional
R = Relacional
WRAPVERSION INTEGER Versin del derivador.
LIBRARY VARCHAR(255) Nombre del archivo que contiene el cdigo
utilizado para comunicarse con las fuentes
de datos asociadas a este derivador.
REMARKS VARCHAR(254) Y Comentarios proporcionados por el usuario
o nulo.

756 Consulta de SQL - Volumen 1


SYSCAT.XDBMAPGRAPHS

SYSCAT.XDBMAPGRAPHS
Cada fila representa un grfico de esquema para un mapa XDB (objeto XSR).
Tabla 135. Vista de catlogo SYSCAT.XDBMAPGRAPHS
Posibili-
dad de
Nombre de columna Tipo de datos nulos Descripcin
OBJECTID BIGINT Identificador exclusivo generado para un
objeto XSR.
OBJECTSCHEMA VARCHAR(128) Nombre de esquema del objeto XSR.
OBJECTNAME VARCHAR(128) Nombre no calificado del objeto XSR.
SCHEMAGRAPHID INTEGER Identificador del grfico de esquema, que es
exclusivo dentro de un identificador de
mapa XDB.
NAMESPACE VARCHAR(1000) Identificador de serie para el URI de espacio
de nombres del elemento raz.
ROOTELEMENT VARCHAR(1000) Identificador de serie para el nombre del
elemento raz.

Apndice D. Vistas de catlogo 757


SYSCAT.XDBMAPSHREDTREES

SYSCAT.XDBMAPSHREDTREES
Cada fila representa un rbol de trocear para un determinado grfico de esquema.
Tabla 136. Vista de catlogo SYSCAT.XDBMAPSHREDTREES
Posibili-
dad de
Nombre de columna Tipo de datos nulos Descripcin
OBJECTID BIGINT Identificador exclusivo generado para un
objeto XSR.
OBJECTSCHEMA VARCHAR(128) Nombre de esquema del objeto XSR.
OBJECTNAME VARCHAR(128) Nombre no calificado del objeto XSR.
SCHEMAGRAPHID INTEGER Identificador del grfico de esquema, que es
exclusivo dentro de un identificador de
mapa XDB.
SHREDTREEID INTEGER Identificador del rbol de trocear, que es
exclusivo dentro de un identificador de
mapa XDB.
MAPPINGDESCRIPTION CLOB(1M) Y Informacin de correlacin de diagnstico.

758 Consulta de SQL - Volumen 1


SYSCAT.XSROBJECTAUTH

SYSCAT.XSROBJECTAUTH
Cada fila representa un usuario o un grupo al que se ha otorgado el privilegio
USAGE sobre un determinado objeto XSR.
Tabla 137. Vista de catlogo SYSCAT.XSROBJECTAUTH
Posibili-
dad de
Nombre de columna Tipo de datos nulos Descripcin
GRANTOR VARCHAR(128) El que ha otorgado el privilegio.
GRANTEE VARCHAR(128) El que mantiene el privilegio.
GRANTEETYPE CHAR(1) G = Se otorga a un grupo
U = Se otorga a un usuario individual
OBJECTID BIGINT Identificador del objeto XSR.
USAGEAUTH CHAR(1) Privilegio para utilizar el objeto XSR y sus
componentes.
N = No se mantiene
Y = Se mantiene

Apndice D. Vistas de catlogo 759


SYSCAT.XSROBJECTCOMPONENTS

SYSCAT.XSROBJECTCOMPONENTS
Cada fila representa un componente de objeto XSR.
Tabla 138. Vista de catlogo SYSCAT.XSROBJECTCOMPONENTS
Posibili-
dad de
Nombre de columna Tipo de datos nulos Descripcin
OBJECTID BIGINT Identificador exclusivo generado para un
objeto XSR.
OBJECTSCHEMA VARCHAR(128) Nombre de esquema del objeto XSR.
OBJECTNAME VARCHAR(128) Nombre no calificado del objeto XSR.
COMPONENTID BIGINT Identificador exclusivo generado para un
componente del objeto XSR.
TARGETNAMESPACE INTEGER Identificador de serie del espacio de nombres
de destino.
SCHEMALOCATION INTEGER Identificador de serie de la ubicacin del
esquema.
COMPONENT BLOB(30M) Representacin externa del componente.
STATUS CHAR(1) Estado de registro
C = Completo
I = Incompleto

760 Consulta de SQL - Volumen 1


SYSCAT.XSROBJECTDEP

SYSCAT.XSROBJECTDEP
Cada fila representa una dependencia de un objeto XSR sobre algn otro objeto. El
objeto XSR depende del objeto de tipo BTYPE de nombre BNAME, de modo que
un cambio en el objeto afecta al objeto XSR.
Tabla 139. Vista de catlogo SYSCAT.XSROBJECTDEP
Posibili-
dad de
Nombre de columna Tipo de datos nulos Descripcin
OBJECTID BIGINT Identificador exclusivo generado para un
objeto XSR.
OBJECTSCHEMA VARCHAR(128) Nombre de esquema del objeto XSR.
OBJECTNAME VARCHAR(128) Nombre no calificado del objeto XSR.
BTYPE CHAR(1) Tipo de objeto sobre el que hay una
dependencia. Los valores posibles son:
A = Alias
B = Activador
F = Instancia de rutina
H = Tabla de jerarqua
K = Paquete
L = Tabla desenlazada
O = Dependencia de privilegios en todas
las subtablas o subvistas de una jerarqua
de tablas o de vistas
Q = Secuencia
R = Tipo estructurado
S = Tabla de consultas materializadas
T = Tabla (sin tipo)
U = Tabla con tipo
V = Vista (sin tipo)
W = Vista con tipo
X = Extensin de ndice
Z = Objeto XSR
BSCHEMA VARCHAR(128) Nombre de esquema del objeto sobre el que
hay una dependencia.
BNAME VARCHAR(128) Nombre no calificado del objeto sobre el que
hay una dependencia. Para rutinas (BTYPE =
F), es el nombre especfico.
TABAUTH SMALLINT Y Si BTYPE = O, S, T, U, V o W,
codifica los privilegios sobre la tabla o vista
que necesita un activador dependiente; valor
nulo en caso contrario.

Apndice D. Vistas de catlogo 761


SYSCAT.XSROBJECTHIERARCHIES

SYSCAT.XSROBJECTHIERARCHIES
Cada fila representa la relacin jerrquica entre un objeto XSR y sus componentes.
Tabla 140. Vista de catlogo SYSCAT.XSROBJECTHIERARCHIES
Posibili-
dad de
Nombre de columna Tipo de datos nulos Descripcin
OBJECTID BIGINT Identificador de un objeto XSR.
COMPONENTID BIGINT Identificador de un componente de XSR.
HTYPE CHAR(1) Tipo de jerarqua.
D = Documento
N = Espacio de nombres de nivel
superior
P = Documento primario
TARGETNAMESPACE VARCHAR(1000) Identificador de serie del espacio de nombres
de destino del componente.
SCHEMALOCATION VARCHAR(1000) Identificador de serie de la ubicacin del
esquema del componente.

762 Consulta de SQL - Volumen 1


SYSCAT.XSROBJECTS

SYSCAT.XSROBJECTS
Cada fila representa un objeto de depsito del esquema XML.
Tabla 141. Vista de catlogo SYSCAT.XSROBJECTS
Posibili-
dad de
Nombre de columna Tipo de datos nulos Descripcin
OBJECTID BIGINT Identificador exclusivo generado para un
objeto XSR.
OBJECTSCHEMA VARCHAR(128) Nombre de esquema del objeto XSR.
OBJECTNAME VARCHAR(128) Nombre no calificado del objeto XSR.
TARGETNAMESPACE VARCHAR(1000) Identificador de serie del espacio de nombres
de destino o identificador pblico.
SCHEMALOCATION VARCHAR(1000) Identificador de serie de la ubicacin del
esquema o identificador del sistema.
OBJECTINFO XML Y Documento de metadatos.
OBJECTTYPE CHAR(1) Tipo de objeto XSR.
D = DTD
E = Entidad externa
S = Esquema XML
OWNER VARCHAR(128) ID de autorizacin bajo el que se ha
registrado el objeto XSR.
CREATE_TIME TIMESTAMP Hora a la que se ha registrado el objeto.
ALTER_TIME TIMESTAMP Hora a la que se ha actualizado (sustituido)
por ltima vez el objeto.
STATUS CHAR(1) Estado de registro
C = Completo
I = Incompleto
R = Sustituir
T = Temporal
DECOMPOSITION CHAR(1) Indica si la descomposicin (troceamiento)
est o no habilitada sobre este objeto XSR.
N = No habilitada
X = No operativa
Y = Habilitada
REMARKS VARCHAR(254) Comentarios proporcionados por el usuario
o nulo.

Apndice D. Vistas de catlogo 763


SYSSTAT.COLDIST

SYSSTAT.COLDIST
Cada fila representa el valor nmero n ms frecuente de alguna columna, o el
valor cuantil n (distribucin acumulada) de la columna. Slo se aplica a columnas
de tablas reales (no a vistas). No se registra ninguna estadstica para columnas
heredadas de tablas con tipo.
Tabla 142. Vista de catlogo SYSSTAT.COLDIST
Posibili-
dad de Se puede
Nombre de columna Tipo de datos nulos actualizar Descripcin
TABSCHEMA VARCHAR(128) Nombre de esquema de la tabla a la que
se aplican las estadsticas.
TABNAME VARCHAR(128) Nombre no calificado de la tabla a la
que se aplican las estadsticas.
COLNAME VARCHAR(128) Nombre de la columna a la que se
aplican las estadsticas.
TYPE CHAR(1) F = Valor de frecuencia
Q = Valor cuantil
SEQNO SMALLINT Si TYPE = F, n en esta columna
identifica el valor nmero n ms
frecuente. Si TYPE = Q, n en esta
columna identifica el valor cuantil
nmero n.
COLVALUE1 VARCHAR(254) Y Y El valor de los datos como un literal de
caracteres o un valor nulo.
VALCOUNT BIGINT Y Si TYPE = F, VALCOUNT es el
nmero de ocurrencias de COLVALUE
en la columna. Si TYPE = Q,
VALCOUNT es el nmero de filas cuyo
valor es menor o igual que COLVALUE.
DISTCOUNT2 BIGINT Y Y Si TYPE = Q, esta columna registra el
nmero de valores diferenciados que
son menores o iguales que COLVALUE
(nulo si no est disponible).

Notas:
1. En la vista de catlogo, el valor de COLVALUE siempre se muestra en la pgina de cdigos de la base de datos y
puede contener caracteres de sustitucin. Sin embargo, las estadsticas se renen internamente en la pgina de
cdigos de la tabla de la columna y, por tanto, utilizarn los valores reales de la columna cuando se apliquen
durante la optimizacin de la consulta.
2. DISTCOUNT slo se recopila para las columnas que son la primera columna de clave de un ndice.

764 Consulta de SQL - Volumen 1


SYSSTAT.COLGROUPDIST

SYSSTAT.COLGROUPDIST
Cada fila representa el valor de la columna del grupo de columnas que forma el
valor ms frecuente nmero n del grupo de columnas o el valor cuantil n del
grupo de columnas.
Tabla 143. Vista de catlogo SYSSTAT.COLGROUPDIST
Posibili-
dad de Se puede
Nombre de columna Tipo de datos nulos actualizar Descripcin
COLGROUPID INTEGER Identificador del grupo de columnas.
TYPE CHAR(1) F = Valor de frecuencia
Q = Valor cuantil
ORDINAL SMALLINT Nmero ordinal de la columna del
grupo de columnas.
SEQNO SMALLINT Si TYPE = F, n en esta columna
identifica el valor nmero n ms
frecuente. Si TYPE = Q, n en esta
columna identifica el valor cuantil
nmero n.
COLVALUE VARCHAR(254) Y Y El valor de los datos como un literal de
caracteres o un valor nulo.

Apndice D. Vistas de catlogo 765


SYSSTAT.COLGROUPDISTCOUNTS

SYSSTAT.COLGROUPDISTCOUNTS
Cada fila representa las estadsticas de distribucin que se aplican al valor ms
frecuente nmero n de un grupo de columnas o el valor cuantil n de un grupo de
columnas.
Tabla 144. Vista de catlogo SYSSTAT.COLGROUPDISTCOUNTS
Posibili-
dad de Se puede
Nombre de columna Tipo de datos nulos actualizar Descripcin
COLGROUPID INTEGER Identificador del grupo de columnas.
TYPE CHAR(1) F = Valor de frecuencia
Q = Valor cuantil
SEQNO SMALLINT El nmero de secuencia n que
representa el valor n de TYPE.
VALCOUNT BIGINT Y Si TYPE = F, VALCOUNT es el
nmero de ocurrencias de COLVALUE
para el grupo de columnas con este
SEQNO. Si TYPE = Q, VALCOUNT es
el nmero de filas cuyo valor es menor
o igual que COLVALUE para el grupo
de columnas con este SEQNO.
DISTCOUNT BIGINT Y Y Si TYPE = Q, esta columna registra el
nmero de valores diferenciados que
son menores o iguales que COLVALUE
para el grupo de columnas con este
SEQNO (nulo si no est disponible).

766 Consulta de SQL - Volumen 1


SYSSTAT.COLGROUPS

SYSSTAT.COLGROUPS
Cada fila representa un grupo de columnas y estadsticas que se aplican a todo el
grupo de columnas.
Tabla 145. Vista de catlogo SYSSTAT.COLGROUPS
Posibili-
dad de Se puede
Nombre de columna Tipo de datos nulos actualizar Descripcin
COLGROUPSCHEMA VARCHAR(128) Nombre de esquema del grupo de
columnas.
COLGROUPNAME VARCHAR(128) Nombre no calificado del grupo de
columnas.
COLGROUPID INTEGER Identificador del grupo de columnas.
COLGROUPCARD BIGINT Y Cardinalidad del grupo de columnas.
NUMFREQ_VALUES SMALLINT Nmero de valores frecuentes
recopilados para el grupo de columnas.
NUMQUANTILES SMALLINT Nmero de valores cuantiles recopilados
para el grupo de columnas.

Apndice D. Vistas de catlogo 767


SYSSTAT.COLUMNS

SYSSTAT.COLUMNS
Cada fila representa una columna definida para una tabla, vista o apodo.
Tabla 146. Vista de catlogo SYSSTAT.COLUMNS
Posibili-
dad de Se puede
Nombre de columna Tipo de datos nulos actualizar Descripcin
TABSCHEMA VARCHAR(128) Nombre de esquema de la tabla, vista o
apodo que contiene la columna.
TABNAME VARCHAR(128) Nombre no calificado de la tabla, vista o
apodo que contiene la columna.
COLNAME VARCHAR(128) Nombre de la columna.
COLCARD BIGINT Y Nmero de valores diferenciados de la
columna; -1 se no se recopilan
estadsticas; -2 para columnas heredadas
y columnas de tablas de jerarqua.
HIGH2KEY1 VARCHAR(254) Y Y El segundo valor de datos ms alto.
Representacin de datos numricos
modificados por literales de caracteres.
Vaco si no se recopilan estadsticas.
Vaco para columnas heredadas y
columnas de tablas jerrquicas.
LOW2KEY1 VARCHAR(254) Y Y El segundo valor de datos ms bajo.
Representacin de datos numricos
modificados por literales de caracteres.
Vaco si no se recopilan estadsticas.
Vaco para columnas heredadas y
columnas de tablas jerrquicas.
AVGCOLLEN INTEGER Y Espacio promedio (en bytes) necesario
para la columna; -1 si es un campo de
tipo long o LOB o si no se recopilan
estadsticas; -2 para columnas heredadas
y columnas de tablas jerrquicas.
NUMNULLS BIGINT Y Nmero de valores nulos de la columna;
-1 si no se recopilan estadsticas.
SUB_COUNT SMALLINT Y Nmero medio de subelementos de la
columna. Slo se aplica a columnas de
tipo serie de caracteres.
SUB_DELIM_LENGTH SMALLINT Y Longitud media de los delimitadores
que separan cada subelemento de la
columna. Slo se aplica a columnas de
tipo serie de caracteres.

Notas:
1. En la vista de catlogo, los valores de HIGH2KEY y de LOW2KEY siempre se muestran en la pgina de cdigos
de la base de datos y pueden contener caracteres de sustitucin. Sin embargo, las estadsticas se renen
internamente en la pgina de cdigos de la tabla de la columna y, por tanto, utilizarn los valores reales de la
columna cuando se apliquen durante la optimizacin de la consulta.

768 Consulta de SQL - Volumen 1


SYSSTAT.INDEXES

SYSSTAT.INDEXES
Cada fila representa un ndice. Los ndices en tablas con tipo se representan
mediante dos filas: una para el ndice lgico de la tabla con tipo y otro para el
ndice-H de la tabla de jerarqua.
Tabla 147. Vista de catlogo SYSSTAT.INDEXES
Posibili-
dad de Se puede
Nombre de columna Tipo de datos nulos actualizar Descripcin
INDSCHEMA VARCHAR(128) Nombre de esquema del ndice.
INDNAME VARCHAR(128) Nombre no calificado del ndice.
TABSCHEMA VARCHAR(128) Nombre de esquema de la tabla o apodo
en el que se define el ndice.
TABNAME VARCHAR(128) Nombre no calificado de la tabla o
apodo en el que se define el ndice.
COLNAMES VARCHAR(640) Esta columna ya no se utiliza y se
eliminar en el prximo release.
NLEAF BIGINT Y Nmero de pginas de ndice; -1 si no
se recopilan estadsticas.
NLEVELS SMALLINT Y Nmero de niveles de ndice; -1 si no se
recopilan estadsticas.
FIRSTKEYCARD BIGINT Y Nmero de valores de primera clave
diferenciada; -1 si no se recopilan
estadsticas.
FIRST2KEYCARD BIGINT Y Nmero de claves diferenciadas que
utilizan las dos primeras columnas del
ndice; -1 si no se recopilan estadsticas
o si no se aplica.
FIRST3KEYCARD BIGINT Y Nmero de claves diferenciadas que
utilizan las tres primeras columnas del
ndice; -1 si no se recopilan estadsticas
o si no se aplica.
FIRST4KEYCARD BIGINT Y Nmero de claves diferenciadas que
utilizan las cuatro primeras columnas
del ndice; -1 si no se recopilan
estadsticas o si no se aplica.
FULLKEYCARD BIGINT Y Nmero de valores de clave completa
diferenciada; -1 si no se recopilan
estadsticas.
CLUSTERRATIO4 SMALLINT Y Grado de clster de datos con el ndice;
-1 si no se recopilan estadsticas o si se
recopilan estadsticas detalladas de
ndice (en este caso se utilizar
CLUSTERFACTOR en su lugar).
CLUSTERFACTOR4 DOUBLE Y Mejor medicin del grado de clster; -1
si no se recopilan estadsticas o si el
ndice se define sobre un apodo.
SEQUENTIAL_PAGES BIGINT Y Nmero de pginas ubicadas en disco
por orden de clave de ndice, con pocos
o ningn hueco entre ellas; -1 si no se
recopilan estadsticas.

Apndice D. Vistas de catlogo 769


SYSSTAT.INDEXES

Tabla 147. Vista de catlogo SYSSTAT.INDEXES (continuacin)


Posibili-
dad de Se puede
Nombre de columna Tipo de datos nulos actualizar Descripcin
DENSITY INTEGER Y Proporcin de SEQUENTIAL_PAGES
para numerar las pginas del rango de
pginas ocupadas por el ndice,
expresada como un porcentaje (entero
entre 0 y 100; -1 si no se recopilan
estadsticas.
PAGE_FETCH_PAIRS4 VARCHAR(520) Y Una lista de pares de enteros,
representada en la forma de caracteres.
Cada par representa el nmero de
pginas de un almacenamiento
intermedio hipottico y el nmero de
lecturas de pginas necesario para
explorar la tabla con este ndice
utilizando dicho almacenamiento
intermedio hipottico. Serie de longitud
cero si no hay datos disponibles.
NUMRIDS4 BIGINT Y Nmero total de identificadores de fila
(RID) o identificadores de bloque (BID)
del ndice; -1 si no se conoce.
NUMRIDS_DELETED4 BIGINT Y Nmero total de identificadores de filas
(o identificadores de bloque) del ndice
que estn marcados como suprimidos,
excluidos los identificadores de pginas
de hojas en las que todos los
identificadores de filas estn marcados
como suprimidos.
NUM_EMPTY_LEAFS BIGINT Y Nmero total de pginas de hoja del
ndice que tienen todos los
identificadores de filas (o identificadores
de bloqueo) marcados como suprimidos.
AVERAGE_RANDOM_ DOUBLE Y Promedio de pginas de la tabla
FETCH_PAGES1,2,4 aleatorias entre los accesos a pginas
secuenciales al captar utilizando el
ndice; -1 si no se conoce.
AVERAGE_RANDOM_ DOUBLE Y Promedio de pginas de la tabla
PAGES2 aleatorias entre los accesos a pginas
secuenciales; -1 si no se conoce.
AVERAGE_SEQUENCE_ DOUBLE Y Espacio entre las secuencias de pginas
GAP2 del ndice. Detectado mediante una
exploracin de las pginas del ndice,
cada espacio representa el promedio de
pginas del ndice que deben captarse
de forma aleatoria entre las secuencias
de las pginas del ndice; -1 si no se
conoce.

770 Consulta de SQL - Volumen 1


SYSSTAT.INDEXES

Tabla 147. Vista de catlogo SYSSTAT.INDEXES (continuacin)


Posibili-
dad de Se puede
Nombre de columna Tipo de datos nulos actualizar Descripcin
AVERAGE_SEQUENCE_ DOUBLE Y Espacio entre las secuencias de pginas
FETCH_GAP1,2,4 de la tabla al captar utilizando el ndice.
Detectado mediante una exploracin de
las pginas del ndice, cada espacio
representa el promedio de pginas de la
tabla que deben captarse de forma
aleatoria entre las secuencias de las
pginas de la tabla; -1 si no se conoce.
AVERAGE_SEQUENCE_ DOUBLE Y Promedio de pginas del ndice
PAGES2 accesibles en secuencia (es decir, el
nmero de pginas del ndice que la
captacin previa detectara que forman
una secuencia); -1 si no se conoce.
AVERAGE_SEQUENCE_ DOUBLE Y Promedio de pginas de la tabla
FETCH_PAGES1,2,4 accesibles en secuencia (es decir, el
nmero de pginas de la tabla que la
captacin previa detectara que forman
una secuencia) al captar utilizando el
ndice; -1 si no se conoce.
AVGPARTITION_ SMALLINT Y Nivel de clster de los datos dentro de
CLUSTERRATIO3,4 una sola particin de datos. -1 si la tabla
no est particionada, si no se recopilan
estadsticas o si se recopilan estadsticas
detalladas (en cuyo caso se utiliza
AVGPARTITION_ CLUSTERFACTOR en
su lugar).
AVGPARTITION_ DOUBLE Y Mejor medicin del nivel de clster
CLUSTERFACTOR3,4 dentro de una sola particin de datos. -1
si la tabla no est particionada, si no se
recopilan estadsticas o si el ndice est
definido sobre un apodo.
AVGPARTITION_PAGE_ VARCHAR(520) Y Una lista de pares de enteros en formato
FETCH_PAIRS3,4 de caracteres. Cada par representa un
tamao potencial de la agrupacin de
almacenamientos intermedios en las
captaciones de pginas correspondientes
necesarias para acceder a una sola
particin de datos desde la tabla. Serie
de longitud cero si no hay datos
disponibles o si la tabla no est
particionada.
DATAPARTITION_ DOUBLE Y Una medicin estadstica del clster
CLUSTERFACTOR de claves de ndices con respecto a
particiones de datos. Es un nmero
comprendido entre 0 y 1; 1 representa
clster perfecto y 0 representa que no
hay clster.
INDCARD BIGINT Y Cardinalidad del ndice. Puede ser
distinta de la cardinalidad de la tabla
para ndices que no tienen una relacin
de uno a uno entre las filas de la tabla y
las entradas de ndice.

Apndice D. Vistas de catlogo 771


SYSSTAT.INDEXES

Tabla 147. Vista de catlogo SYSSTAT.INDEXES (continuacin)


Posibili-
dad de Se puede
Nombre de columna Tipo de datos nulos actualizar Descripcin

Notas:
1. Cuando se utilizan espacios de tabla DMS, no puede calcularse esta estadstica.
2. No se recopilan estadsticas de captacin previa durante una operacin LOAD...STATISTICS YES o CREATE
INDEX...COLLECT STATISTICS ni cuando el parmetro de configuracin seqdetect est desactivado.
3. AVGPARTITION_CLUSTERRATIO, AVGPARTITION_CLUSTERFACTOR y
AVGPARTITION_PAGE_FETCH_PAIRS miden el grado de clster dentro de una sola particin de datos (clster
local). CLUSTERRATIO, CLUSTERFACTOR y PAGE_FETCH_PAIRS miden el grado de clster en la tabla entera
(clster global). Los valores de clster global y de clster local pueden diferir significativamente si la clave de
particionamiento de la tabla no es un prefijo de la clave de ndice o cuando la clave de particionamiento de la
tabla y la clave de ndice son independientes, en trminos lgicos, una de otra.
4. Esta estadstica no se puede actualizar si el tipo de ndice es XPTH (un ndice de va de acceso XML).
5. Puesto que los ndices lgicos de una columna XML no tienen estadsticas, la vista de catlogo SYSSTAT.INDEXES
no incluye las filas cuyo tipo de ndice es XVIL.

772 Consulta de SQL - Volumen 1


SYSSTAT.ROUTINES

SYSSTAT.ROUTINES
Cada fila representa una rutina definida por el usuario (funcin escalar, funcin de
tabla, funcin fuente, mtodo o procedimiento). No incluye las funciones
incorporadas.
Tabla 148. Vista de catlogo SYSSTAT.ROUTINES
Posibili-
dad de Se puede
Nombre de columna Tipo de datos nulos actualizar Descripcin
ROUTINESCHEMA VARCHAR(128) Nombre de esquema de la rutina.
ROUTINENAME VARCHAR(128) Nombre no calificado de la rutina.
ROUTINETYPE CHAR(1) Tipo de rutina.
F = Funcin
M = Mtodo
P = Procedimiento
SPECIFICNAME VARCHAR(128) Nombre de la instancia de la rutina
(puede ser un nombre generado por el
sistema).
IOS_PER_INVOC DOUBLE Y Nmero estimado de entradas/salidas
(I/O) por invocacin; 0 es el valor por
omisin; -1 si no se conoce.
INSTS_PER_INVOC DOUBLE Y Nmero estimado de instrucciones por
invocacin; 450 es el valor por omisin;
-1 si no se conoce.
IOS_PER_ARGBYTE DOUBLE Y Nmero estimado de I/O por byte de
argumento de entrada; 0 es el valor por
omisin; -1 si no se conoce.
INSTS_PER_ARGBYTE DOUBLE Y Nmero estimado de instrucciones por
byte de argumento de entrada; 0 es el
valor por omisin; -1 si no se conoce.
PERCENT_ARGBYTES SMALLINT Y Porcentaje medio estimado de bytes de
argumento de entrada que leer la
rutina realmente; 100 es el valor por
omisin; -1 si no se conoce.
INITIAL_IOS DOUBLE Y Nmero estimado de I/O realizadas la
primera vez que se ha invocado la
rutina; 0 es el valor por omisin; -1 si
no se conoce.
INITIAL_INSTS DOUBLE Y Nmero estimado de instrucciones
ejecutadas la primera vez que se ha
invocado la rutina; 0 es el valor por
omisin; -1 si no se conoce.
CARDINALITY BIGINT Y Cardinalidad prevista de una funcin de
tabla; -1 si no se conoce o si la rutina no
es una funcin de tabla.
SELECTIVITY DOUBLE Y Para predicados definidos por el
usuario; -1 si no hay ningn predicado
definido por el usuario.

Apndice D. Vistas de catlogo 773


SYSSTAT.TABLES

SYSSTAT.TABLES
Cada fila representa una tabla, vista, alias o apodo. Cada jerarqua de tabla o de
vista tiene una fila adicional que representa la tabla de jerarqua o la vista de
jerarqua que implanta la jerarqua. Se incluyen las tablas de catlogo y las vistas.
Tabla 149. Vista de catlogo SYSSTAT.TABLES
Posibili-
dad de Se puede
Nombre de columna Tipo de datos nulos actualizar Descripcin
TABSCHEMA VARCHAR(128) Nombre de esquema del objeto.
TABNAME VARCHAR(128) Nombre no calificado del objeto.
CARD BIGINT Y Nmero total de filas; -1 si no se
recopilan estadsticas.
NPAGES BIGINT Y Nmero total de pginas en las que
existen filas de la tabla; -1 para una
vista o alias, o si no se recopilan
estadsticas; -2 para una subtabla o tabla
de jerarqua.
FPAGES BIGINT Y Nmero total de pginas; -1 para una
vista o alias, o si no se recopilan
estadsticas; -2 para una subtabla o tabla
de jerarqua.
OVERFLOW BIGINT Y Nmero total de registros de
desbordamiento de la tabla; -1 para una
vista o alias, o si no se recopilan
estadsticas; -2 para una subtabla o tabla
de jerarqua.
CLUSTERED CHAR(1) Y Y = La tabla est en un clster de
varias dimensiones (aunque slo
segn una dimensin)
Valor nulo = La tabla no est en un
clster de varias dimensiones
ACTIVE_BLOCKS BIGINT Y Nmero total de bloques activos en la
tabla, o -1. Slo se aplica a las tablas
que estn en un clster de varias
dimensiones (MDC).
AVGCOMPRESSEDROWSIZE SMALLINT Y Longitud media (en bytes) de filas
comprimidas en esta tabla; -1 si no se
recopilan estadsticas.
AVGROWCOMPRESSION- REAL Y Para filas comprimidas en la tabla, es la
RATIO proporcin media de compresin por
fila; es decir, la longitud media de filas
no comprimidas dividido por la
longitud media de filas comprimidas; -1
si no se recopilan estadsticas.
AVGROWSIZE SMALLINT Longitud media (en bytes) de filas
comprimidas y no comprimidas de esta
tabla; -1 si no se recopilan estadsticas.
PCTROWSCOMPRESSED REAL Y Filas comprimidas como un porcentaje
del nmero total de filas de la tabla; -1
si no se recopilan estadsticas.

774 Consulta de SQL - Volumen 1


SYSSTAT.TABLES

Tabla 149. Vista de catlogo SYSSTAT.TABLES (continuacin)


Posibili-
dad de Se puede
Nombre de columna Tipo de datos nulos actualizar Descripcin
PCTPAGESSAVED SMALLINT Y Porcentaje aproximado de pginas
guardadas en la tabla como un
resultado de la compresin de filas. Este
valor incluye bytes de actividad general
para cada fila de datos de usuario de la
tabla, pero no incluye el espacio que
consume la actividad general del
diccionario; es -1 si no se recopilan
estadsticas.

Apndice D. Vistas de catlogo 775


SYSSTAT.TABLES

776 Consulta de SQL - Volumen 1


Apndice E. Sistemas federados
Tipos de servidor vlidos en sentencias de SQL
El tipo de servidor indica la clase de fuentes de datos que representa la definicin
de servidor.

Los tipos de servidor varan segn el proveedor, la finalidad y el sistema


operativo. Los valores soportados dependen del derivador que se utilice.

Para la mayora de las fuentes de datos, debe especificar un tipo de servidor vlido
en la sentencia CREATE SERVER.

Derivador de BioRS
La especificacin de tipo de servidor es opcional para las fuentes de datos BioRS.

Tipo de servidor Fuente de datos


No necesario en la sentencia CREATE BioRS
SERVER.

Derivador de BLAST
Se necesita una especificacin de tipo de servidor para cada tipo de bsqueda
BLAST que quiera ejecutar para las fuentes de datos fuentes de datos BLAST
soportadas por el daemon HMMER.

Tipo de servidor Fuente de datos


BLASTN Tipo de bsqueda BLAST en la que una
secuencia de nucletidos se compara con el
contenido de una base de datos de
secuencias de nucletidos para encontrar
secuencias con regiones que son homlogas
respecto de regiones de la secuencia original.
BLASTP Un tipo de bsqueda BLAST en la que una
secuencia de aminocidos se compara con el
contenido de una base de datos de
secuencias de aminocidos para encontrar
secuencias con regiones que son homlogas
respecto de regiones de la secuencia original.
BLASTX Tipo de bsqueda BLAST en la que una
secuencia de nucletidos se compara con el
contenido de una base de datos de
secuencias de aminocidos para encontrar
secuencias con regiones que son homlogas
respecto de regiones de la secuencia original.
TBLASTN Tipo de bsqueda BLAST en la que una
secuencia de aminocidos se compara con el
contenido de una base de datos de
secuencias de nucletidos para encontrar
secuencias con regiones que son homlogas
respecto de regiones de la secuencia original.

Copyright IBM Corp. 1993, 2006 777


Sistemas federados

Tipo de servidor Fuente de datos


TBLASTX Tipo de bsqueda BLAST en la que una
secuencia de nucletidos se compara con el
contenido de una base de datos de
secuencias de nucletidos para encontrar
secuencias con regiones que son homlogas
respecto de regiones de la secuencia original.

Derivador de CTLIB
El derivador de CTLIB da soporte a fuentes de datos de Sysbase. Se necesita una
especificacin de tipo para fuentes de datos de Sybase soportadas por el software
de cliente de CTLIB.

Tipo de servidor Fuente de datos


SYBASE Sybase

Derivador de DRDA
El derivador de DRDA se utiliza para las familias DB2. Se necesita una
especificacin de tipo de servidor para las fuentes de datos de la familia DB2.
Tabla 150. Fuentes de datos de la familia DB2
Tipo de servidor Fuente de datos

DB2/UDB IBM DB2 Versin 9.1 para Linux, UNIX y Windows

DB2/ISERIES IBM DB2 UDB para iSeries y AS/400

DB2/ZOS IBM DB2 UDB para/OS

DB2/VM IBM DB2 para VM

Derivador de Entrez
Se necesita una especificacin de tipo de servidor para las fuentes de datos Entrez.

Tipo de servidor Fuente de datos


NUCLEOTIDE Entrez
OMIM Entrez
PUBMED Entrez

Derivador de Excel
No es necesaria ninguna especificacin de tipo de servidor para las fuentes de
datos Excel.

Tipo de servidor Fuente de datos


No necesario en la sentencia CREATE Microsoft Excel
SERVER.

778 Consulta de SQL - Volumen 1


Sistemas federados

Derivador de HMMER
Se necesita una especificacin de tipo de servidor para cada servidor en el que
quiera buscar fuentes de datos de HMMER soportadas por el daemon HMMER.

Tipo de servidor Fuente de datos


PFAM HMMER
SEARCH HMMER

Derivador de Informix
Se necesita una especificacin de tipo de servidor para las fuentes de datos de
Informix soportadas por el software de SDK de cliente Informix.

Tipo de servidor Fuente de datos


INFORMIX Informix

Derivador de MSSQLODBC3
Se necesita una especificacin de tipo de servidor para las fuentes de datos de
Microsoft SQL Server soportadas por el controlador DataDirect Connect ODBC 4.2
(o posterior) o por el controlador Microsoft SQL Server ODBC 3.0 (o superior).

Tipo de servidor Fuente de datos


MSSQLSERVER Microsoft SQL Server

Derivador N8
Se necesita una especificacin de tipo de servidor para las fuentes de datos de
Oracle soportadas por el software de cliente de Oracle.

Tipo de servidor Fuente de datos


ORACLE Oracle Versin 8.0 o posterior

Derivador de ODBC
Se necesita una especificacin de tipo de servidor para las fuentes de datos de
ODBC soportadas por el controlador ODBC 3.x.

Tipo de servidor Fuente de datos


ODBC ODBC

Derivador de OLE DB
No se necesita ninguna definicin de tipo de servidor para proveedores OLE DB
compatibles con Microsoft OLE DB 2.0 o posterior.

Tipo de servidor Fuente de datos


No necesario en la sentencia CREATE Cualquier proveedor de OLE DB
SERVER.

Apndice E. Sistemas federados 779


Sistemas federados

Derivador de archivos de tabla estructurada


No se necesita ninguna definicin de tipo de servidor para las fuentes de datos de
archivos de tabla estructurada.

Tipo de servidor Fuente de datos


No necesario en la sentencia CREATE Archivos con estructura de tabla
SERVER.

Derivador de Teradata
Se necesita una definicin de tipo para fuentes de datos de Teradata soportadas
por el software de cliente de Teradata.

Tipo de servidor Fuente de datos


TERADATA Teradata

Derivador de servicios Web


No se necesita ninguna definicin de tipo de servidor para las fuentes de datos de
servicios Web.

Tipo de servidor Fuente de datos


No necesario en la sentencia CREATE Cualquier fuente de datos de servicios Web.
SERVER.

Derivador de WebSphere Business Integration


Se necesita una definicin de tipo de servidor para fuentes de datos de aplicacin
comercial soportadas por el derivador de WebSphere Business Integration.

Tipo de servidor Fuente de datos


WBI WebSphere Business Integration 2.2 o 2.3

Derivador de XML
No se necesita ninguna definicin de tipo de servidor para las fuentes de datos de
XML.

Tipo de servidor Fuente de datos


No necesario en la sentencia CREATE XML
SERVER.

Opciones de columna de apodo para sistemas federados


Puede especificar informacin de columna en las sentencias CREATE NICKNAME
o ALTER NICKNAME utilizando parmetros denominados opciones de columna.

La siguiente tabla lista las opciones de columna de apodo para las fuentes de
datos. La tabla dos contiene una lista completa de opciones de columna de apodo.

780 Consulta de SQL - Volumen 1


Sistemas federados

Tabla 151. Opciones de columna de apodo para fuentes de datos relacionales


Fuente de ESCAPE_ FOREIGN_ NUMERIC_ PRIMARY_
DOCUMENT TEMPLATE XPATH
datos INPUT KEY STRING KEY
DB2 UDB X
para iSeries
DB2 UDB X
para z/OS y
OS/390
DB2 para X
VM y VSE
DB2 Versin X
9.1 para
Linux, UNIX
y Windows
Informix X
Microsoft X
SQL Server
ODBC X
OLE DB
Oracle X
Sybase X
Teradata X

Tabla 152. Opciones de columna de apodo para fuentes de datos no relacionales


Archivos con WebSphere
Servicios
Opciones BLAST Script estructura de Business XML
Web
tabla Integration
DELIMITER X
DOCUMENT X X
ESCAPE_INPUT X X
FINAL_XDROPOFF X
FOREIGN_KEY X X X
INDEX X
INPUT_MODE X
MASK_LOWER_CASE X
POSITION X
PRIMARY_KEY X X X
QUERY_GENETIC_CODE X
SWITCH X
SWITCH_ONLY X
TEMPLATE X X
VALID_VALUES X
XDROPOFF_GAPPED X
XDROPOFF_UNGAPPED X
XPATH X X X

Apndice E. Sistemas federados 781


Sistemas federados

Tabla 153. Opciones de columna y valores de stas


Opcin Descripcin y valores vlidos Valor por omisin
DEFAULT Especifica un nuevo valor por omisin para las siguientes
columnas fijas de entrada:
v E_value
v QueryStrands
v GapAlign
v NMisMatchPenalty
v NMatchReward
v Matrix
v FilterSequence
v NumberOfAlignments
v GapCost
v ExtendedGapCost
v WordSize
v ThresholdEx

Este nuevo valor prevalece sobre los valores por omisin


predefinidos. El nuevo valor por omisin debe ser del
mismo tipo que el valor indicado para una determinada
columna.
DELIMITER Los caracteres de delimitador determinan el punto final de El delimitador por omisin
la informacin de lnea de definicin para la columna es el final de lnea.
donde aparece esta opcin. Si aparece ms de un carcter
en el valor de esta opcin, la primera aparicin de
cualquiera de los caracteres seala el final de la informacin
de este campo. El valor por omisin es el final de lnea.
Esta opcin es necesaria, a menos que desee que la ltima
columna especificada contenga el resto de la lnea de
definicin.

782 Consulta de SQL - Volumen 1


Sistemas federados

Tabla 153. Opciones de columna y valores de stas (continuacin)


Opcin Descripcin y valores vlidos Valor por omisin
DOCUMENT Para los archivos con estructura de tabla: especifica la clase
de archivo con estructura de tabla. Este derivador solo
admite el valor FILE para esta opcin. Slo puede
especificarse una columna con la opcin DOCUMENT por
apodo. La columna asociada a la opcin DOCUMENT debe
tener el tipo de datos VARCHAR o CHAR.

La utilizacin de la opcin de columna de apodo


DOCUMENT, en lugar de la opcin de apodo FILE_PATH,
implica que el archivo correspondiente a este apodo se
proporcionar cuando se ejecute la consulta. Si la opcin
DOCUMENT tiene el valor FILE, el valor que se
proporciona cuando se ejecuta la consulta es la va de
acceso completa del archivo cuyo esquema coincida con la
definicin de apodo correspondiente a este apodo.

Para XML: especifica que esta columna es una columna


DOCUMENT. El valor de la columna DOCUMENT indica
el tipo de datos de fuente XML proporcionado al apodo
cuando se ejecuta la consulta. Esta opcin slo se acepta
para las columnas del apodo raz (el apodo que identifica
los elementos del nivel superior del documento XML). Slo
puede especificarse una columna con la opcin
DOCUMENT por apodo. La columna asociada a la opcin
DOCUMENT debe tener el tipo de datos VARCHAR.

Si utiliza una opcin de columna DOCUMENT, en lugar de


la opcin de apodo FILE_PATH o DIRECTORY_PATH, el
documento correspondiente a este apodo se proporciona
cuando se ejecuta la consulta.

Los valores vlidos de la opcin DOCUMENT son:


FILE Especifica que el valor de la columna de apodo
est vinculado a la va de acceso de un archivo.
Los datos de este archivo se proporcionan cuando
se ejecuta la consulta.
DIRECTORY
Especifica que el valor de la columna de apodo
est vinculado a la va de acceso de un directorio
que contiene varios archivos de datos XML. Los
datos XML procedentes de varios archivos se
proporcionan cuando se ejecuta la consulta. Los
datos estn contenidos en archivos XML que
residen en la va de acceso de directorios
especificada. El derivador de XML slo utiliza los
archivos que tienen la extensin .xml y que estn
situados en el directorio especificado por el
usuario. El derivador de XML ignora todos los
dems archivos del directorio.
URI Especifica que el valor de la columna de apodo
est vinculado a la va de acceso de un archivo
XML remoto referenciado por un URI. La direccin
de URI indica la ubicacin remota de ese archivo
XML en la Web.
El URI puede contener un direccin IPv6 separada
por un punto si est entre corchetes (por ejemplo,
http://[1080:0:0:0:8:800:200C:417A])
COLUMN Apndice E. Sistemas federados 783
Especifica que el documento XML est almacenado
en una columna relacional.
Sistemas federados

Tabla 153. Opciones de columna y valores de stas (continuacin)


Opcin Descripcin y valores vlidos Valor por omisin
ELEMENT_NAME Especifica el nombre de elemento de BioRS. La sensibilidad
a las maysculas y minsculas de este nombre depende de
la sensibilidad a las maysculas y minsculas del servidor
BioRS y del valor de la opcin de servidor
CASE_SENSITIVE. Slo debe especificar el nombre de
elemento de BioRS si es diferente del nombre de columna.
ESCAPE_INPUT Especifica si los caracteres especiales XML se sustituyen o Y
no en los valores de entrada XML. Utilice esta opcin para
incluir fragmentos XML como entrada, tales como
fragmentos XML con elementos repetitivos. La opcin de
columna TEMPLATE se debe definir para columnas que
hagan uso de la opcin de columna ESCAPE_INPUT. El
tipo de datos de la columna debe ser VARCHAR o CHAR.

Los valores vlidos son:


Y Si los datos de entrada XML contienen caracteres
especiales, se sustituirn por los caracteres
equivalentes que XML utiliza para representar los
caracteres de entrada.
N Los caracteres de entrada se conservan
exactamente tal como aparecen.
FINAL_XDROPOFF El valor de descarte X para alineacin dispar final, en bits. 50 bits para consultas de
El valor 0 invoca el comportamiento por omisin. blastn y megablast. 0 bits
para consultas de tblastx. 25
bits de tipos de datos
INTEGER) para todos los
tipos de consulta.
FOREIGN_KEY Indica que es un apodo hijo y especifica el nombre del
correspondiente apodo padre. Un apodo puede tener como
mximo una opcin de columna FOREIGN_KEY. El valor
para esta opcin distingue maysculas y minsculas. La
columna designada con esta opcin contiene una clave
generada por el derivador. La opcin XPATH no se debe
especificar para esta columna. Slo se puede utilizar la
columna para unir apodos padres e hijos.

Una sentencia CREATE NICKNAME con la opcin


FOREIGN_KEY fallar si el apodo padre tiene un nombre
de esquema distinto.

A menos que el apodo referenciado en una clusula


FOREIGN_KEY se haya definido de manera explcita con
minsculas o con una mezcla de maysculas y minsculas,
encerrndolo entre comillas en la sentencia CREATE
NICKNAME correspondiente, cuando haga referencia a este
apodo en la clusula FOREIGN_KEY, debe especificar el
apodo en maysculas.

Cuando esta opcin se define para una columna, no se


puede definir ninguna otra opcin para la columna.
INDEX Nmero ordinal de la columna en la que esta opcin
aparece en el grupo de columnas de lnea de definicin.
Esta opcin es necesaria.

784 Consulta de SQL - Volumen 1


Sistemas federados

Tabla 153. Opciones de columna y valores de stas (continuacin)


Opcin Descripcin y valores vlidos Valor por omisin
INPUT_MODE Especifica la modalidad de entrada para una columna. Los
valores vlidos son CONFIG o FILE_INPUT. El derivador
pasa el valor especificado al daemon script.
IS_INDEXED Indica si la columna correspondiente est indexada (si se Cuando se crea un apodo,
puede hacer referencia a la columna en un predicado). Los esta opcin se aade
valores vlidos son Y y N. El valor Y solo se puede automticamente con el
especificar para columnas cuyo elemento correspondiente valor Y a cualquier
est indexado por el servidor BioRS. columna que corresponda a
un elemento indexado de
BioRS.
MASK_LOWER_CASE Utilice filtrado de minsculas con una secuencia FASTA.
NUMERIC_STRING Especifica si una columna contiene series de caracteres N
numricos.
Y La columna contiene series de caracteres
numricos: 0, 1, 2, ... 9. No contiene blancos.
Si la columna contiene solamente series numricas
seguidas de blancos de cola, no especifique Y.
Cuando asigna el valor Y a NUMERIC_STRING
para una columna, est informando al optimizador
de que esta columna no contiene blancos que
puedan interferir en la clasificacin de los datos de
la columna. Utilice esta opcin cuando la secuencia
de clasificacin de una fuente de datos sea
diferente de la secuencia de clasificacin utilizado
por el servidor federado. Las columnas que hacen
uso de esta opcin no se excluyen de la evaluacin
remota debido a una secuencia de clasificacin
distinta.
N La columna no es una columna formada por series
numricas o es una columna formada por series
numricas que contiene blancos.
POSITION Un valor entero para parmetros de posicin. Esta opcin
se aplica slo a columnas de entrada. Si el valor de posicin
se establece en un entero, entonces esta entrada debe estar
en esta posicin en la lnea de mandato. Si se establece esta
opcin, el conmutador se inserta en la ubicacin apropiada
cuando se ejecuta la consulta. Si POSITION se establece en
-1, la opcin se aade como la ltima opcin en la lnea de
mandatos. Los valores enteros de posicin POSITION no
pueden duplicarse en un apodo. Esta opcin no es
necesaria.
PRIMARY_KEY Indica que el apodo es un apodo padre. El tipo de datos de
la columna debe ser VARCHAR(16). Un apodo puede tener
como mximo una sola opcin de columna PRIMARY_KEY.
YES es el nico valor vlido. La columna designada con
esta opcin contiene una clave generada por el derivador .
La opcin XPATH no se debe especificar para esta columna.
Slo se puede utilizar la columna para unir apodos padres
e hijos.

Cuando esta opcin se define para una columna, no se


puede definir ninguna otra opcin para la columna.
QUERY_GENETIC_CODE El cdigo gentico de consulta utiliza por omisin = 1.

Apndice E. Sistemas federados 785


Sistemas federados

Tabla 153. Opciones de columna y valores de stas (continuacin)


Opcin Descripcin y valores vlidos Valor por omisin
REFERENCED_OBJECT Esta opcin slo es vlida para columnas cuyo tipo de
datos de BioRS sea Reference. Esta opcin especifica el
nombre del banco de datos de BioRS al que hace referencia
la columna actual. La sensibilidad a las maysculas y
minsculas de este nombre depende de la sensibilidad a las
maysculas y minsculas del servidor BioRS y del valor de
la opcin de servidor CASE_SENSITIVE.
SOAPACTIONCOLUMN Es una columna utilizada para especificar dinmicamente el
atributo URI SOAPACTION del formato Web Service
Description Language (WSDL). Esta opcin solo se
especifica para el apodo raz.

Cuando esta opcin se define para una columna, no se


puede definir ninguna otra opcin para la columna.

El URL puede contener un direccin IPv6 separada por un


punto si est entre corchetes (por ejemplo,
http://[1080:0:0:0:8:800:200C:417A])
SWITCH Una serie de caracteres para especificar un parmetro para
una serie de la lnea de mandatos. Esta opcin se aplica
slo a columnas de entrada.
SWITCH_ONLY Habilita el uso de conmutadores sin ningn argumento en
la lnea de mandatos. Si se especifica la opcin
SWITCH_ONLY con un valor Y, entonces los valores de
entrada son Y o N. Para un valor de entrada Y, slo el
conmutador se aade a la lnea de mandatos. Para un valor
de entrada N, no se aade ningn valor a la lnea de
mandatos.
TEMPLATE Es el fragmento de plantilla de columna que se debe
utilizar para crear el documento XML de entrada. El
fragmento debe ajustarse a la sintaxis de plantilla
especificada.
URLCOLUMN Es una columna utilizada para especificar dinmicamente el
URL del punto final de servicio Web cuando se ejecuta una
consulta. Esta opcin solo se especifica para el apodo raz.

Cuando esta opcin se define para una columna, no se


puede definir ninguna otra opcin para la columna.

El URL puede contener un direccin IPv6 separada por un


punto si est entre corchetes (por ejemplo,
http://[1080:0:0:0:8:800:200C:417A])
VALID_VALUES Un conjunto de valores vlidos separado por un punto y
coma para una columna.

786 Consulta de SQL - Volumen 1


Sistemas federados

Tabla 153. Opciones de columna y valores de stas (continuacin)


Opcin Descripcin y valores vlidos Valor por omisin
VARCHAR_NO_ Esta opcin es aplicable a las fuentes de datos de tipo N para las fuentes de
TRAILING_BLANKS carcter y longitud variable que no rellenan la longitud con datos afectadas
blancos de cola durante la comparacin.

Algunas fuentes de datos, como Oracle, no tienen una


semntica de comparacin de caracteres rellenados con
blancos que devuelva el mismo resultado que la semntica
de comparacin de DB2 para Linux, UNIX y Windows.
Defina esta opcin cuando desee que slo se aplique a una
columna VARCHAR o VARCHAR2 determinada de un
objeto de fuente de datos.
Y No existen blancos de cola en las columnas
VARCHAR, o la fuente de datos utiliza una
semntica de comparacin de caracteres con
relleno por blancos que es similar a la semntica
utilizada en el servidor federado.
El servidor federado enva operaciones de
comparacin de caracteres a la fuente de datos
para su proceso.
N Existen blancos de cola en las columnas
VARCHAR, y la fuente de datos utiliza una
semntica de comparacin de caracteres con
relleno por blancos que es diferente de la
semntica utilizada en el servidor federado.
El servidor federado procesa las operaciones de
comparacin de caracteres si no es posible suplir la
falta de una semntica equivalente. Por ejemplo,
escribiendo de nuevo el predicado.
XDROPOFF_GAPPED El valor de descarte X para alineacin dispar, en bits. El 30 bits para consultas de
valor 0 invoca el comportamiento por omisin. blastn. 20 bits para
consultas de megablast. 15
bits de tipos de datos
INTEGER) para todos los
tipos de consulta.
XDROPOFF_UNGAPPED El valor de descarte X para extensiones no dispares en bits. 20 bits para consultas de
El valor 0.0 invoca el comportamiento por omisin. Para blastn. 10 bits para
consultas de blastn, el valor por omisin son 20 bits. Para consultas de megablast. 7
consultas de megablast, por omisin son 10 bits. Para todas bits (tipo de datos REAL)
las dems consultas, 7 bits (tipo de datos REAL). para todas las dems
consultas.
XPATH Especifica la expresin XPath del documento XML que
contiene los datos correspondientes a esta columna. El
derivador evala la expresin XPath despus de que la
sentencia CREATE NICKNAME aplique esta expresin
XPath desde esta opcin de apodo XPATH.

Opciones de correlacin de funciones para sistemas federados


La finalidad principal de las opciones de correlacin de funciones es proporcionar
informacin acerca del posible coste de ejecutar una funcin de fuente de datos en
la fuente de datos.

Apndice E. Sistemas federados 787


Sistemas federados

WebSphere Federation Server proporciona correlaciones por omisin entre


funciones de fuentes de datos incorporadas existentes y funciones de DB2
incorporadas. Para la mayora de fuentes de datos, las correlaciones de funciones
por omisin estn en los derivadores. Para utilizar una funcin de fuente de datos
que el servidor federado no reconoce, debe crear una correlacin de funciones
entre una funcin de fuente de datos y una funcin equivalente de la base de datos
federada.

El anlisis descendente determina si una funcin de la fuente de datos es capaz de


ejecutar una funcin en una consulta. El optimizador de consultas decide si el
transferir el proceso de la funcin a la fuente de datos es la alternativa de menor
coste.

La informacin estadstica que se proporciona en la definicin de la correlacin de


funciones ayuda al optimizador de consultas a comparar el coste estimado de
ejecutar la funcin de fuente de datos con el coste estimado de ejecutar la funcin
de DB2.
Tabla 154. Opciones de correlacin de funciones y sus valores
Opcin Valores vlidos Valor
por
omisin
DISABLE Se utiliza para inhabilitar una correlacin de funciones N
por omisin. Los valores vlidos son Y y N.
INITIAL_INSTS Nmero estimado de instrucciones que se procesan la 0
primera y la ltima vez que se invoca la funcin de
fuente de datos.
INITIAL_IOS Nmero estimado de entradas y salidas que se realizan 0
la primera y la ltima vez que se invoca la funcin de
fuente de datos.
IOS_PER_ARGBYTE Nmero estimado de entradas y salidas que se emplean 0
por cada byte del conjunto de argumentos que se pasa a
la funcin de fuente de datos.
IOS_PER_INVOC Nmero estimado de entradas y salidas por invocacin 0
de una funcin de fuente de datos.
INSTS_PER_ARGBYTE Nmero estimado de instrucciones que se procesan por 0
cada byte del conjunto de argumentos que se pasa a la
funcin de fuente de datos.
INSTS_PER_INVOC Nmero estimado de instrucciones que se procesan por 450
cada invocacin de la funcin de fuente de datos.
PERCENT_ARGBYTES Porcentaje de promedio estimado de bytes de 100
argumento de entrada que la funcin de fuente de datos
leer realmente.
REMOTE_NAME Nombre de la funcin de fuente de datos. nombre
local

Opciones de servidor para sistemas federados


Las opciones de servidor se utilizan para describir un servidor de fuentes de datos.

788 Consulta de SQL - Volumen 1


Sistemas federados

Las opciones de servidor especifican informacin sobre la integridad, la ubicacin,


la seguridad y el rendimiento. Algunas opciones de servidor estn disponibles para
todas las fuentes de datos y otras opciones de servidor son especficas de la fuente
de datos.

Las opciones de servidor federado comunes para las fuentes de datos relacionales
son las siguientes:
v Opciones de compatibilidad. COLLATING_SEQUENCE, IGNORE_UDT
v Opciones de integridad de los datos. IUD_APP_SVPT_ENFORCE
v Opciones de fecha y hora. DATEFORMAT, TIMEFORMAT,
TIMESTAMPFORMAT
v Opciones de ubicacin. CONNECTSTRING, DBNAME, IFILE
v Opciones de seguridad. FOLD_ID, FOLD_PW, INFORMIX_LOCK_MODE
v Opciones de rendimiento. COMM_RATE, CPU_RATIO,
DB2_MAXIMAL_PUSHDOWN, IO_RATIO, LOGIN_TIMEOUT, PACKET_SIZE,
PLAN_HINTS, PUSHDOWN, TIMEOUT, VARCHAR_NO_TRAILING_BLANKS

En la tabla siguiente se indican las opciones de servidor de la definicin de


servidor que se aplican a cada fuente de datos relacional.
Tabla 155. Opciones de servidor para fuentes de datos relacionales
D
B
2
_
P V
R A
E R
S C
E H
R I A
D V D N I R
B E B F U _
C 2 _ 2 O D N
O C _ C _ R I _ O
L O M U T M N A _
L N A R W I I F P T T
A V X _ O X N O P I R
T C _ I O D _ _ F R _ L M A
I O E M N B P C O M S O E I
N N M A _ 2 H L R I V G P S L
G N P D L C _ A I M X P I A P T T I
_ C E T C A _ O U S EN I _ T N C L I A N
C S O C Y P T P N M E T X L I _ _ K P A P M M G
O E M T _ U E U N _ _ F F _ _ O O E T E A N U T E P _
D Q M S S _ F S E P C D O O L D C _ N I T S _ S I F F B
E U _ T T R O H C L O B L L I O B K R F M _ S H H M O O L
P E R R R A R D T U M N D D F C M M A O E N S W I D E R R A
A N A I I T M O I G M A _ _ I A O O T R O O I O N O O M M N
Fuente de G C T N N I A W O I I M I P L L D D I C U D Z R T W U A A K
datos E E E G G O T N N N T E D W E E E E O E T E E D S N T T T S
DB2 UDB X X X X X X X X X X X X X X
para
iSeries

Apndice E. Sistemas federados 789


Sistemas federados

Tabla 155. Opciones de servidor para fuentes de datos relacionales (continuacin)


D
B
2
_
P V
R A
E R
S C
E H
R I A
D V D N I R
B E B F U _
C 2 _ 2 O D N
O C _ C _ R I _ O
L O M U T M N A _
L N A R W I I F P T T
A V X _ O X N O P I R
T C _ I O D _ _ F R _ L M A
I O E M N B P C O M S O E I
N N M A _ 2 H L R I V G P S L
G N P D L C _ A I M X P I A P T T I
_ C E T C A _ O U S EN I _ T N C L I A N
C S O C Y P T P N M E T X L I _ _ K P A P M M G
O E M T _ U E U N _ _ F F _ _ O O E T E A N U T E P _
D Q M S S _ F S E P C D O O L D C _ N I T S _ S I F F B
E U _ T T R O H C L O B L L I O B K R F M _ S H H M O O L
P E R R R A R D T U M N D D F C M M A O E N S W I D E R R A
A N A I I T M O I G M A _ _ I A O O T R O O I O N O O M M N
Fuente de G C T N N I A W O I I M I P L L D D I C U D Z R T W U A A K
datos E E E G G O T N N N T E D W E E E E O E T E E D S N T T T S
DB2 UDB X X X X X X X X X X X X X X
para
z/OS y
OS/390
DB2 para X X X X X X X X X X X X X
VM y
VSE
DB2 para X X X X X X X X X X X X X X
Linux,
UNIX y
Windows
Informix X X X X X X X X X X X X X X X X X
Microsoft X X X X X X X X X X X X X X X X
SQL
Server
ODBC X X X X X X X X X X X X X X X X X X
OLE DB X X X
Oracle X X X X X X X X X X X X X X
Sybase X X X X X X X X X X X X X X X X X X X
Teradata X X X X X X X X X

En la tabla siguiente se indican las opciones de servidor de la definicin de


servidor que se aplican a cada fuente de datos no relacional, excepto a WebSphere

790 Consulta de SQL - Volumen 1


Sistemas federados

Business Integration. Las opciones de servidor de definicin de servidor


correspondientes a WebSphere Business Integration estn listadas en la Tabla 157
en la pgina 792.
Tabla 156. Opciones de servidor para fuentes de datos no relacionales
S
S
S L
S _
L V
_ E
C R
L I
I S F
E S Y
T L _
_ _ S
P P C S K E U
R R E S E R S
O O R L Y V E
P X X T _ S E S _
D R Y Y I K T R O C
B P O _ _ F E O _ C L
D 2 R X S S I Y R C K O
A _ O Y E E P C S E E E B
E U X _ R R R A T _ R T _
M M M Y P V V O T O P T _ S
O _ A _ A E E X E R A I T T E
N P X A S R R Y _ E S F I I Q
_ L _ U S _ _ _ L _ S I M M U
P U R N T W N P T A F W C E E E
O G O O H O A O Y B I O A O O N
R I W D I R M R P E L R T U U C
Fuente de datos T N S E D D E T E L E D E T T E
BioRS X X X X
BLAST X X X X X X X X X X X X
Entrez X X X X X X X
Excel
HMMER X X X X X X X X X X X X
SCRIPT X X X X X X X X X X X
Archivos con
estructura de tabla
Servicios Web X X X X X X
XML X X X X X X X X X X

La tabla siguiente lista las opciones de servidor de definicin de servidor


correspondientes a fuentes de datos de WebSphere Business Integration.

Apndice E. Sistemas federados 791


Sistemas federados

Tabla 157. Opciones de servidor para fuentes de datos de WebSphere Business Integration.
M
Q
_
M S
Q V
_ R
R C
E O
S N R
P N R E
M O _ E S
Fuente de datos
F Q N C Q P
A _ M S H U O
U C Q E A E N
A L O _ _ N S S
P T N M T N T E
P _ N A I E _ _
_ Q _ N M L Q Q
T U N A E N U U
Y E A G O A E E
P U M E U M U U
E E E R T E E E
WebSphere Business Integration X X X X X X X X

La tabla siguiente describe cada opcin de servidor y lista los valores vlidos y los
valores por omisin.
Tabla 158. Opciones de servidor y valores de stas
Opcin Descripcin y valores vlidos Valor por omisin
APP_TYPE El tipo de aplicacin remota. Los valores vlidos Ninguno
son PSOFT, SAP y SIEBEL. Esta opcin es
necesaria.

792 Consulta de SQL - Volumen 1


Sistemas federados

Tabla 158. Opciones de servidor y valores de stas (continuacin)


Opcin Descripcin y valores vlidos Valor por omisin
CASE_SENSITIVE Especifica si el servidor BioRS trata los nombres Y
con sensibilidad a las maysculas y minsculas.
Los valores vlidos son Y y N.
Y El servidor BioRS trata los nombres
distinguiendo entre maysculas y
minsculas.
N El servidor BioRS no trata los nombres
distinguiendo entre maysculas y
minsculas.

En el producto BioRS, un parmetro de


configuracin controla la distincin entre
maysculas y minsculas para los datos que
residen en el servidor BioRS. La opcin
CASE_SENSITIVE es la equivalente del servidor
federado al parmetro de configuracin de sistema
BioRS. Debe sincronizar los valores de
configuracin de la sensibilidad a las maysculas y
minsculas del servidor BioRS en el sistema BioRS
y en el servidor federado. Si no mantiene
sincronizados los valores de configuracin de la
sensibilidad a las maysculas y minsculas entre
BioRS y el servidor federado, se producirn errores
cuando intente acceder a datos de BioRS mediante
el servidor federado.

No puede cambiar ni suprimir la opcin


CASE_SENSITIVE despus de crear un nuevo
servidor BioRS en el servidor federado. Si se
necesita cambiar la opcin CASE_SENSITIVE, debe
descartarlo y a continuacin volver a crear el
servidor. Si descarta el servidor BioRS, tambin
debe crear de nuevo todos los apodos de BioRS
correspondientes. El servidor federado descarta
automticamente todos los apodos que
correspondan a un servidor descartado.
CODEPAGE Especifica el identificador de pgina de cdigos de En los sistemas UNIX o
DB2 correspondiente al juego de caracteres Windows con una base de
codificados de la configuracin del cliente de datos que no da soporte a
fuente de datos. Debe especificar la pgina de Unicode: la pgina de cdigos
cdigos del cliente si sta es diferente de la pgina de la base de datos federada.
de cdigos de la base de datos federada.
En los sistemas UNIX con una
Para las fuentes de datos que dan soporte a base de datos federada que da
Unicode, la opcin CODEPAGE puede ser igual al soporte a Unicode: 1208
identificador de pgina de cdigos de DB2
correspondiente a la codificacin Unicode En los sistemas Windows con
soportada del cliente de fuente de datos. una base de datos federada
que da soporte a Unicode:
1202

Apndice E. Sistemas federados 793


Sistemas federados

Tabla 158. Opciones de servidor y valores de stas (continuacin)


Opcin Descripcin y valores vlidos Valor por omisin
COLLATING_ SEQUENCE Especifica si la fuente de datos utiliza la misma N
secuencia de clasificacin por omisin que la base
de datos federada, basndose en el conjunto de
cdigos NLS y en la informacin del pas o la
regin.
Y La fuente de datos utiliza la misma
secuencia de clasificacin que la base de
datos federada de DB2.
N La fuente de datos tiene una secuencia de
clasificacin distinto al de la base de datos
federada de DB2.
I La fuente de datos tiene una secuencia de
clasificacin distinta a la de la base de
datos federada de DB2 y la secuencia de
clasificacin de la fuente de datos no es
sensible a maysculas y minsculas (por
ejemplo, se considera que STEWART y
StewART son iguales).
COMM_RATE Especifica la velocidad de comunicacin entre el 2
servidor federado y el servidor de la fuente de
datos. Expresada en megabytes por segundo.

Los valores vlidos son mayores que 0 y menores


que 1x1023. Los valores se pueden expresar
utilizando cualquier notacin vlida de tipo REAL.
CONNECTSTRING Especifica las propiedades de inicializacin Ninguno
necesarias para conectarse con un proveedor OLE
DB.
CONNECTSTRING Especifica las propiedades de inicializacin Ninguno
necesarias para conectarse con un proveedor OLE
DB.
CONV_EMPTY_STRING Utilice el derivador de Sybase que funciona con N
tareas de replicacin. Cuando establezca la opcin
CONV_EMPTY_STRING en Y, el derivador de
Sybase convierte una serie vaca en un espacio.
Establezca esta opcin en Y cuando un servidor de
fuente de datos tenga una columna de carcter no
anulable que almacene una serie vaca y el
servidor de datos sea Sybase.

794 Consulta de SQL - Volumen 1


Sistemas federados

Tabla 158. Opciones de servidor y valores de stas (continuacin)


Opcin Descripcin y valores vlidos Valor por omisin
CPU_RATIO Indica cunto ms rpida o ms lenta es la 1,0
ejecucin de una CPU de fuente de datos respecto
a la CPU del servidor federado.

Los valores vlidos son mayores que 0 y menores


que 1x1023. Los valores se pueden expresar
utilizando cualquier notacin vlida de tipo REAL.

Un valor 1 indica que la velocidad de la CPU


federada de DB2 y la velocidad de la CPU de la
fuente de datos tienen la misma velocidad de CPU,
es decir, se da una proporcin 1:1. Un valor 0.5
indica que la velocidad de la CPU federada de
DB2 es un 50% inferior a la velocidad de la CPU
de la fuente e de datos. Un valor 2 indica que la
velocidad de la CPU federada de DB2 es el doble
de rpida que la velocidad de la CPU de la fuente
de datos.
DATEFORMAT Es el formato de fecha que utiliza la fuente de Ninguno
datos. Especifique el formato utilizando DD,
MM y AA o AAAA para representar el formato
numrico de la fecha. Tambin debe especificar el
delimitador, que puede ser, por ejemplo, un
espacio o una coma. Por ejemplo, para representar
el formato de fecha de 2003-01-01, utilice
AAAA-MM-DD. Este campo puede contener
nulos.
DAEMON_PORT Especifica el nmero de puerto donde el daemon BLAST: 4007
recibe peticiones de trabajos de BLAST o HMMER.
El nmero de puerto debe ser igual al nmero HMMER: 4098
especificado en la opcin DAEMON_PORT del
archivo de configuracin del daemon.

Apndice E. Sistemas federados 795


Sistemas federados

Tabla 158. Opciones de servidor y valores de stas (continuacin)


Opcin Descripcin y valores vlidos Valor por omisin
DB2_MAXIMAL_ PUSHDOWN Especifica los principales criterios que el N
optimizador de consultas utiliza cuando elige un
plan de acceso. El optimizador de consultas puede
elegir planes de acceso basndose en el coste o en
los requisitos del usuario de modo que las fuentes
de datos remotas realicen todo el proceso de
consultas que sea posible.
Y El optimizador de consultas elige un plan
de acceso que desplaza ms operaciones
de consulta a la fuente de datos que los
otros planes. Cuando varios planes de
acceso proporcionan el mismo grado de
desplazamiento, el optimizador de
consultas elige el plan que tiene el menor
coste.
Si una tabla de consultas materializada
(MQT) en el servidor federado puede
procesar parte o toda la consulta, debera
utilizarse unpaln de acceso que incluya
una tabla de consultas materializada. La
base de datos federada no transfiere las
consultas que dan lugar a un producto
cartesiano.
N El optimizador de consultas elige un plan
de acceso basndose en el coste.
DB2_PRESERVE_CUR_ON_ Especifica el comportamiento de los cursores para Ninguno
CONNECTION transacciones confirmadas o retrotradas. Si el valor
se establece en Y, los cursores pueden permanecer
abiertos en el servidor SQL de Microsoft incluso si
se enva COMMIT o ROLLBACK. Si esta opcin no
se establece o se establece en N, los cursores se
cierran si se enva COMMIT o ROLLBACK. Esta
opcin es opcional.
DB2_TWO_PHASE_COMMIT Especifica si se permiten o no las confirmaciones
en dos fases para todas las fuentes de datos
utilizando las sentencias CREATE SERVER o
ALTER SERVER. Establece a Y para configurar y
activar la confirmacin en dos fases a nivel de base
de datos. Establece a N para configurar y activar la
confirmacin en dos fases a nivel de base de datos.
Las aplicaciones pueden activar p desactivar esta
opcin con la sentencia SET SERVER OPTION.
DB2_UM_PLUGIN Si se utiliza un conector para recuperar Ninguno
correlaciones desde depsitos externos, se debe
especificar el nombre de clase incluido el paquete
(por ejemplo,
com.ibm.ii.um.ldap.UserMappingRepository). Si
se utiliza el conector de ejemplo Lightweight
Directory Access Protocol (LDAP), puede utilizarse
slo el nombre de clase (por ejemplo,
UserMappingRepository).

796 Consulta de SQL - Volumen 1


Sistemas federados

Tabla 158. Opciones de servidor y valores de stas (continuacin)


Opcin Descripcin y valores vlidos Valor por omisin
DBNAME Nombre de la base de datos de fuente de datos a Ninguno
la que debe acceder el servidor federado. Para una
base de datos DB2, este valor corresponde a una
base de datos determinada que se utiliza para la
conexin inicial con una base de datos DB2 remota.
Esta base de datos determinada es el alias de base
de datos correspondiente a la base de datos DB2
remota que se cataloga en el servidor federado
utilizando el mandato CATALOG DATABASE o el
Asistente de configuracin de DB2. Esta opcin no
es aplicable a las fuentes de datos de Oracle
porque las instancias de Oracle contienen una sola
base de datos. No se aplica a Teradata.
FAULT_QUEUE Es el nombre de la cola de errores que entrega Ninguno
mensajes de error del adaptador al derivador . El
nombre se debe ajustar a las especificaciones para
nombres de colas de WebSphere MQ. Esta opcin
es necesaria.
FOLD_ID Se aplica a los ID de usuario que el servidor Ninguno
federado enva al servidor de fuentes de datos
(Consulte las notas 1 y 4 al final para su autenticacin. Los valores vlidos son:
de esta tabla.)
U El servidor federado convierte el ID de
usuario a maysculas antes de enviarlo a
la fuente de datos. Esta es una opcin
lgica para las fuentes de datos de la
familia DB2 y Oracle. (Vea la nota 2 al
final de esta tabla).
N El servidor federado no realiza ninguna
accin en el ID de usuario antes de
enviarlo a la fuente de datos. (Consulte la
nota 2 al final de esta tabla.)
L El servidor federado convierte el ID de
usuario a minsculas antes de enviarlo a
la fuente de datos.

Si esta opcin no est especificada, el servidor


federado intenta enviar el ID de usuario a la fuente
de datos en maysculas (sin modificar) y en
minsculas.

Apndice E. Sistemas federados 797


Sistemas federados

Tabla 158. Opciones de servidor y valores de stas (continuacin)


Opcin Descripcin y valores vlidos Valor por omisin
FOLD_PW Se aplica a las contraseas que el servidor federado Ninguno
enva a las fuentes de datos para que las
(Consulte las notas 1, 3 y 4 al autentifique. Los valores vlidos son:
final de esta tabla.)
U El servidor federado convierte la
contrasea a maysculas antes de enviarla
a la fuente de datos. Esta es una opcin
lgica para las fuentes de datos de la
familia DB2 y Oracle.
N El servidor federado no realiza ninguna
accin en la contrasea antes de enviarla a
la fuente de datos.
L El servidor federado convierte la
contrasea a minsculas antes de enviarla
a la fuente de datos.

Si esta opcin no est especificada, el servidor


federado intenta enviar el ID de usuario a la fuente
de datos en maysculas (sin modificar) y en
minsculas.
HMMPFAM_OPTIONS Especifica opciones de hmmpfam, tales como
--null2, --pvm y --xnu, que no tienen ningn
nombre de columna correspondiente en una tabla
de referencias que correlacione las opciones con los
nombres de columna.

Por ejemplo:
HMMPFAM_OPTIONS --xnu --pvm

En este ejemplo, el daemon ejecuta el programa


HMMPFAM con las opciones de la clusula
WHERE de la consulta, ms las opciones
adicionales --xnu --pvm.
HMMSEARCH_ OPTIONS Permite que el usuario proporcione opciones de Ninguno
lneas de mandatos adicionales al mandato
hmmsearch. Esta opcin solo es vlida con el tipo
SEARCH. Para obtener ms informacin, consulte
la Gua del usuario de HMMER.
IFILE Utilizar para especificar la va de acceso y el Ninguno
nombre del archivo de interfaces Sybase Open
Client si no desea utilizar el archivo de interfaz
por omisin. En los servidores federados Windows
NT, por omisin es %SYBASE%\ini\sql.ini. En los
servidores federados UNIX, por omisin es
$SYBASE%/interfaces.

798 Consulta de SQL - Volumen 1


Sistemas federados

Tabla 158. Opciones de servidor y valores de stas (continuacin)


Opcin Descripcin y valores vlidos Valor por omisin
INFORMIX_CLIENT_LOCALE Especifica el CLIENT_LOCALE para la conexin Ninguno
entre el servidor federado y el servidor de fuente
de datos. Si la opcin
INFORMIX_CLIENT_LOCALE no est
especificada, la variable de entorno de Informix
CLIENT_LOCALE se establece en el valor
especificado en el archivo db2dj.ini, si hay alguno.
Si db2dj.ini no especifica CLIENT_LOCALE, la
variable de entorno de Informix CLIENT_LOCALE
se establece en el local Informix que ms coincida
con la pgina de cdigos y el territorio de base de
datos federada. Cualquier local Informix vlido es
un valor vlido. Esta opcin es opcional.
INFORMIX_DB_LOCALE Especifica el DB_LOCALE para la conexin entre el Ninguno
servidor federado y el servidor de fuente de datos.
Si la opcin INFORMIX_DB_LOCALE no est
especificada, la variable de entorno de Informix
DB_LOCALE se establece en el valor especificado
en el archivo db2dj.ini, si hay alguno. Si db2dj.ini
no especifica DB_LOCALE, no se establecer la
variable de entorno de Informix DB_LOCALE.
Cualquier local Informix vlido es un valor vlido.
Esta opcin es opcional.

Apndice E. Sistemas federados 799


Sistemas federados

Tabla 158. Opciones de servidor y valores de stas (continuacin)


Opcin Descripcin y valores vlidos Valor por omisin
INFORMIX_LOCK_ MODE Especifica la modalidad de bloqueo que debe W
establecerse para una fuente de datos Informix. El
derivador de Informix emite el mandato SET
LOCK MODE inmediatamente despus de haber
establecido la conexin con una fuente de datos
Informix. Los valores vlidos son:
W Establece la modalidad de bloqueo de
Informix en WAIT. Si el derivador intenta
acceder a una tabla o fila bloqueada,
Informix esperar hasta que se libere el
bloqueo.
N Establece la modalidad de bloqueo de
Informix en NOWAIT. Si el derivador
intenta acceder a una tabla o fila
bloqueada, Informix devolver un error.
n Establece la modalidad de bloqueo de
Informix en WAIT n segundos. Si el
derivador intenta acceder a una tabla o
fila bloqueada y el bloqueo no se libera
dentro del nmero de segundos
especificado, Informix devolver un error.

Si se produce un error de punto muerto o de


tiempo de espera cuando un servidor federado
intenta establecer conexin con una fuente de
Informix, es posible que cambiando la modalidad
de bloqueo establecida en el servidor federado
resuelva el error. Utilice la sentencia ALTER
SERVER para cambiar la modalidad de bloqueo
establecida en el servidor federado.

Por ejemplo:
ALTER SERVER TYPE informix VERSION 9 WRAPPER
informix OPTIONS (ADD informix_lock_mode 60)
IO_RATIO Indica cunto ms rpida o ms lenta es la 1,0
ejecucin de un sistema de E/S de fuente de datos
respecto al sistema de E/S del servidor federado.

Los valores vlidos son mayores que 0 y menores


que 1x1023. Los valores se pueden expresar
utilizando cualquier notacin vlida de tipo REAL.

Un valor 1 indica que la velocidad de E/S


federada de DB2 y la velocidad de E/S de la
fuente de datos tienen la misma velocidad de E/S,
es decir, se da una proporcin 1:1. Un valor 0,5
indica que la velocidad de E/S federada de DB2 es
un 50% ms lenta que la velocidad de E/S de la
fuente de datos. Un valor 2 indica que la velocidad
de E/S federada de DB2 es el doble de rpida que
la velocidad de E/S de la fuente de datos.

800 Consulta de SQL - Volumen 1


Sistemas federados

Tabla 158. Opciones de servidor y valores de stas (continuacin)


Opcin Descripcin y valores vlidos Valor por omisin
IUD_APP_SVPT_ ENFORCE Especifica si el sistema federado de DB2 debe Y
imponer la deteccin o la creacin de sentencias de
puntos de guardar de aplicacin. Cuando se
establezca mediante la utilizacin de la sentencia
SET SERVER OPTION, esta opcin de servidor no
tendr ningn efecto con las sentencias de SQL
esttico.
Y El servidor federado retrotrae las
transacciones de insercin, actualizacin o
supresin si se produce un error en la
operacin y la fuente de datos no
implementa sentencias de puntos de
rescate de aplicacin. Se devuelve el
cdigo de error SQL1476N de SQL.
N El servidor federado no retrotrae las
transacciones cuando se detecta un error.
La aplicacin deber manejar la
recuperacin del error.
LOGIN_TIMEOUT Especifica el nmero de segundos que el servidor 0
federado de DB2 debe esperar una respuesta de
Sybase Open Client a la peticin de inicio de
sesin. Si se especifica 0, el servidor federado
esperar una respuesta indefinidamente.
MAX_ROWS Para Entrez: Especifique el nmero de filas que Sistemas operativos Microsoft
devuelve el servidor federado en una consulta. Windows: 2000 filas.

Para OMIM: Limita el nmero de registros para el Sistemas operativos basados


apodo raz que puede devolver una consulta. Por en UNIX: 5000 filas.
ejemplo, si la opcin de servidor AX_ROWS se
establece en 25, se devolver un mximo de 25
registros para el apodo raz y todos los registros
para apodos relacionados con hijos.

Slo puede especificar nmeros positivos y el cero.


Cuando establece la opcin en cero, permite que
las consultas recuperen un nmero ilimitado de
filas del sitio Web de NCBI. Sin embargo, si
establece la opcin de servidor MAX_ROWS en
cero o en un valor muy alto, el rendimiento de la
consulta puede resultar afectado.

La opcin MAX_ROWS del servidor no es


necesaria.
MQ_CONN_NAME Es el nombre de sistema principal o direccin de El derivador utiliza la variable
red de la mquina donde se est ejecutando el de entorno MQSERVER, si
servidor Websphere MQ. Un ejemplo de nombre est especificada en el archivo
de conexin es: 9.30.76.151(1420), donde 1420 es el db2dj.ini, para seleccionar la
nmero de puerto. Si se omite el nmero de definicin de canal. Si la
puerto, se utiliza el valor por omisin 1414. Esta variable de entorno
opcin es opcional. Si no se especifica esta opcin, MQSERVER no est definida,
se utiliza la variable de entorno MQSERVER (si el derivador utiliza la tabla de
est especificada en el archivo db2dj.ini) para canales del cliente.
seleccionar la definicin de canal. Si la variable
MQSERVER no est definida, se utiliza la tabla de
canales del cliente.

Apndice E. Sistemas federados 801


Sistemas federados

Tabla 158. Opciones de servidor y valores de stas (continuacin)


Opcin Descripcin y valores vlidos Valor por omisin
MQ_MANAGER Es el nombre del gestor de WebSphere MQ. Puede Ninguno
ser cualquier nombre vlido de gestor de
WebSphere MQ. Esta opcin es necesaria.
MQ_RESPONSE_ TIMEOUT Es la cantidad de tiempo que el derivador debe 10000
esperar un mensaje de respuesta procedente de la
cola de respuestas. El valor se expresa en
milisegundos. Puede especificar el valor especial -1
para indicar que no existe tiempo de espera. Esta
opcin es opcional.
MQ_SVRCONN_ Es el nombre del canal de conexin de servidor en SYSTEM.DEF.SVRCONN
CHANNELNAME el Gestor de Websphere MQ con el que el
derivador debe intentar conectar. Este parmetro
solo se puede especificar si est especificada la
opcin de servidor MQ_CONN_NAME. Si se
omite esta opcin, se utiliza el canal de conexin
de servidor por omisin, SYSTEM.DEF.SVRCONN.
NODE Fuentes de datos relacionales: es el nombre BioRS: localhost
utilizado para definir una fuente de datos como
instancia para su RDBMS (sistema de gestin de
bases de datos relacionales).

BLAST: Especifica el nombre de sistema principal o


la direccin IP del sistema donde se est
ejecutando el proceso del daemon de BLAST. La
direccin IP puede ser una direccin IPv4 (por
ejemplo, 192.168.1.1) o puede ser una direccin
IPv6 separada por un punto (por ejemplo,
1080:0:0:0:8:800:200C:417A). Esta opcin es
necesaria.

HMMER: Especifica el nombre de sistema principal


o la direccin IP del servidor donde se ejecuta el
proceso de daemon de HMMER. La direccin IP
puede ser una direccin IPv4 o una direccin IPv6
separada por un punto. Esta opcin es necesaria.

BioRS: especifica el nombre de sistema principal


del sistema en el que est disponible la
herramienta de consulta BioRS. La direccin IP
puede ser una direccin IPv4 o una direccin IPv6
separada por un punto. Esta opcin es opcional.
PACKET_SIZE Especifica el tamao en bytes del paquete que
utiliza la biblioteca del cliente al enviar paquetes
especiales. Si el derivador de Sybase necesita
enviar o recibir grandes cantidades de datos de
texto o de imagen, un tamao de paquete mayor
podra mejorar la eficacia.
PASSWORD Especifica si se envan contraseas a una fuente de Y
datos.
Y Se envan contraseas a la fuente de datos
y se validan.
N No se envan contraseas a la fuente de
datos y no se validan.

802 Consulta de SQL - Volumen 1


Sistemas federados

Tabla 158. Opciones de servidor y valores de stas (continuacin)


Opcin Descripcin y valores vlidos Valor por omisin
PLAN_HINTS Especifica si se deben habilitar las indicaciones de N
planes. Las indicaciones de planes son fragmentos
de sentencias que proporcionan informacin
adicional a los optimizadores de fuentes de datos.
Esta informacin puede, para ciertos tipos de
datos, mejorar el rendimiento de consultas. Las
indicaciones de planes pueden ayudar al
optimizador de fuentes de datos a decidir si se
debe utilizar un ndice, el ndice que se debe
utilizar o qu orden de unin de tablas se debe
utilizar.
Y Se deben habilitar las indicaciones de
planes en la fuente de datos, si sta
soporta las indicaciones de planes.
N No se deben habilitar las indicaciones de
planes en la fuente de datos.

Esta opcin slo est disponible para las fuentes de


datos de Oracle y de Sybase.
PORT Especifica el nmero de puerto que el derivador 5014
utiliza para conectar con el servidor BioRS. Esta
opcin es opcional.
PROCESSORS Especifica el nmero de procesadores que utiliza el Ninguno
programa HMMER. Esta opcin es equivalente a la
opcin --cpu del mandato hmmpfam.
PROXY_AUTHID Especifica el nombre de usuarios que se debe Ninguno
utilizar cuando el servidor proxy necesita
autenticacin. Pngase en contacto con el
administrador de red para obtener el nombre de
usuario.
PROXY_PASSWORD Especifica el nombre de usuario que se debe Ninguno
utilizar cuando el servidor proxy necesita
autenticacin. Pngase en contacto con el
administrador de red para obtener la contrasea.
PROXY_SERVER_ NAME Especifica el nombre o direccin IP del servidor Ninguno
proxy. Este campo es necesario si el valor de
PROXY_TYPE es HTTP o SOCKS. Pngase en
contacto con el administrador de red para obtener
el nombre de servidor o la direccin IP del
servidor proxy. La direccin IP puede ser una
direccin IPv4 (por ejemplo, 192.168.1.1) o puede
ser una direccin IPv6 separada por un punto (por
ejemplo, 1080:0:0:0:8:800:200C:417A).
PROXY_SERVER_ PORT Especifica el nmero de puerto del servidor proxy. Ninguno
Este campo es necesario si el valor de
PROXY_TYPE es HTTP o SOCKS. Pngase en
contacto con el administrador de red para obtener
el nmero de puerto o el servidor proxy.

Apndice E. Sistemas federados 803


Sistemas federados

Tabla 158. Opciones de servidor y valores de stas (continuacin)


Opcin Descripcin y valores vlidos Valor por omisin
PROXY_TYPE Especifica el tipo de proxy que s e utiliza para NONE
acceder a Internet cuando se est detrs de un
cortafuegos. Los valores vlidos son NONE,
HTTP o SOCKS. El valor por omisin es
NONE. Consulte al administrador de la red para
conocer el tipo de proxy que se utiliza.

BLAST, HMMER y SCRIPT no dan soporte a


proxies HTTP.
PUSHDOWN Y
Y DB2 considerar que las fuente de datos
puedan evaluar las operaciones.
N DB2 enviar las sentencias SQL de fuentes
de datos que incluyan slo SELECT con
nombres de columna. Predicados (como
WHERE=), funciones escalares y de
columna (como MAX y MIN),
clasificaciones (como ORDER BY o
GROUP BY) y uniones no se incluirn en
ningn SQL enviado a la fuente de datos.
Por omisin para el derivador de ODBC.
RESPONSE_QUEUE Es el nombre de la cola de respuestas que entrega Ninguno
resultados de la consulta del adaptador al
derivador . El nombre se debe ajustar a las
especificaciones para nombres de colas de
WebSphere MQ. Esta opcin es necesaria.
REQUEST_QUEUE Es el nombre de la cola de peticiones que entrega Ninguno
peticiones de consulta del derivador al adaptador.
El nombre se debe ajustar a las especificaciones
para nombres de colas de WebSphere MQ. Esta
opcin es necesaria.
SOCKET_TIMEOUT Especifica la cantidad mxima de tiempo, en 0
minutos, que el servidor federado DB2 espera
resultados procedentes del servidor proxy. Es un
valor vlido cualquier nmero que sea mayor o
igual que cero. El valor por omisin es 0 (cero). El
valor cero denota un tiempo de espera ilimitado.
SSL_CLIENT_CERTIFICATE_ Especifica el certificado de cliente que se enva Ninguno
LABEL durante la autenticacin de SSL. Si el valor no est
especificado, se enviar el ID de autorizacin de
DB2.
SSL_KEYSTORE_FILE Especifica el nombre del archivo de Ninguno
almacenamiento de certificados que se debe
utilizar para las comunicaciones SSL/TSL. El valor
especificado debe tener una va de acceso completa
a la que pueda acceder el agente DB2 o el proceso
FMP.

Opcional: Puede especificar el valor


GSK_MS_CERTIFICATE_STORE para utilizar el
almacenamiento de certificados Microsoft nativo.

804 Consulta de SQL - Volumen 1


Sistemas federados

Tabla 158. Opciones de servidor y valores de stas (continuacin)


Opcin Descripcin y valores vlidos Valor por omisin
SSL_KEYSTORE_PASWORD Especifica la contrasea utilizada para acceder al Ninguno
almacenamiento de certificados SSL. La contrasea
est cifrada cuando se almacena en el catlogo de
DB2.
SSL_VERIFY_SERVER_ Especifica si se debe verificar el certificado de NO
CERTIFICATE servidor durante la autenticacin SSL. Los valores
no distinguen maysculas y minsculas. Para
autenticar, utilice uno de los siguientes valores: Y,
YES, T o TRUE. Para inhabilitar, utilice F,
FALSE, N o NO.
TIMEFORMAT Es el formato de hora que utiliza la fuente de Ninguno
datos. Especifique el formato utilizando hh12,
hh24, mm, ss, AM o A.M. Por ejemplo, para
representar el formato de hora de 16:00:00, utilice
hh24:mm:ss. Para representar el formato de hora
de 8:00:00 AM, utilice hh12:mm:ss AM. Este
campo puede contener nulos.
TIMESTAMPFORMAT Es el formato de la indicacin de la hora que Ninguno
utiliza la fuente de datos. El formato es el mismo
que el indicado para la fecha y la hora, ms n
para las dcimas de segundo, nn para las
centsimas de segundo, nnn para las milsimas
de segundo, y as sucesivamente, hasta nnnnnn,
que representa los microsegundos. Por ejemplo,
para representar el formato de la indicacin de la
hora de 2003-01-01-24:00:00.000000, utilice
AAAA-MM-DD-hh24:mm:ss.nnnnnn. Este campo
puede contener nulos.
TIMEOUT El valor de tiempo de espera que ha especificado Sybase: 0
depende del derivador que utilice. Si se especifica
0, DB2 esperar una respuesta indefinidamente. BioRS: 10

Especifica el nmero de segundos que el servidor


federado de DB2 debe esperar una respuesta del
servidor Sybase para cualquier sentencia SQL. El
valor segundos es un nmero entero positivo .

BioRS: especifica el tiempo, en minutos, que el


derivador de BioRS debe esperar una respuesta del
servidor BioRS. El valor por omisin es 10. Esta
opcin es opcional.

Servicios Web: Especifica el tiempo, en minutos,


que DB2 debera esperar para una transferencia de
red y el clculo de un resultado.

Apndice E. Sistemas federados 805


Sistemas federados

Tabla 158. Opciones de servidor y valores de stas (continuacin)


Opcin Descripcin y valores vlidos Valor por omisin
USE_CLOB_ SEQUENCE Esta opcin especifica el tipo de datos que el Y
servidor federado utiliza para la columna BlastSeq
o HmmQSeq. Los valores pueden ser Y o N.
Puede utilizar la sentencia CREATE NICKNAME o
ALTER NICKNAME para alterar temporalmente el
tipo de datos por omisin para la columna
BlastSeq o HmmQSeq.
v si especifica el valor de N, el tipo de datos es
VARCHAR(32000).
v Si especifica el valor de Y, el tipo de datos es
CLOB(5M). El valor por omisin es N, no Y.
VARCHAR_NO_ Esta opcin es aplicable a las fuentes de datos de N para las fuentes de datos
TRAILING_BLANKS tipo carcter y longitud variable que no rellenan la afectadas.
longitud con blancos de cola durante la
comparacin.

Algunas fuentes de datos, como Oracle, no tienen


una semntica de comparacin de caracteres
rellenados con blancos que devuelva el mismo
resultado que la semntica de comparacin de DB2
para Linux, UNIX y Windows. Defina esta opcin
cuando desee que se aplique a todas las columnas
VARCHAR y VARCHAR2 de los objetos de la
fuente de datos a los que se acceder desde el
servidor designado. Esto incluye las vistas.
Y No existen blancos de cola en las
columnas VARCHAR, o la fuente de datos
utiliza una semntica de comparacin de
caracteres con relleno por blancos que es
similar a la semntica utilizada en el
servidor federado.
El servidor federado enva las operaciones
de comparacin de caracteres a la fuente
de datos para su proceso.
N Existen blancos de cola en las columnas
VARCHAR, y la fuente de datos utiliza
una semntica de comparacin de
caracteres con relleno por blancos que es
diferente de la semntica utilizada en el
servidor federado.
El servidor federado procesa las
operaciones de comparacin de caracteres
si no es posible suplir la falta de una
semntica equivalente. Por ejemplo,
escribiendo de nuevo el predicado.

Notas sobre esta tabla:


1. Este campo se aplica sin tener en cuenta el valor especificado para
autenticacin.
2. Puesto que DB2 almacena ID en maysculas, los valores N y U son
lgicamente equivalentes entre s.
3. El parmetro para FOLD_PW no tendr efecto cuando la contrasea se
establece en N. Debido a que no se enva ninguna contrasea, el uso de
maysculas o minsculas no puede ser un hecho significativo.
806 Consulta de SQL - Volumen 1
Sistemas federados

4. Evite los valores nulos para estas opciones. Un parmetro nulo puede parecer
atractivo porque DB2 intentar en ms de una ocasin resolver los ID de
usuario y las contraseas; sin embargo, puede afectar al rendimiento (es posible
que DB2 enve hasta nueve veces el ID de usuario y la contrasea antes de
pasar satisfactoriamente la autenticacin de fuente de datos).

Opciones de correlacin de usuarios para sistemas federados


Estas opciones se utilizan con las sentencias CREATE USER MAPPING y ALTER
USER MAPPING.
Tabla 159. Opciones de correlacin de usuarios y sus valores
Opcin Valores vlidos Valor por omisin
ACCOUNTING DRDA: Utilizado para especificar una serie de Ninguno
contabilidad de DRDA. Son valores vlidos cualquier
serie de caracteres con una longitud mxima de 255
caracteres. Esta opcin slo es necesaria si debe pasarse
informacin de contabilidad. Para obtener ms
informacin, consulte la Gua del usuario de DB2
Connect.
GUEST Especifica si el derivador debe utilizar la modalidad de N
acceso husped para el servidor BioRS.
Y El derivador utiliza la modalidad de acceso
husped para el servidor BioRS.
N El derivador no utiliza la modalidad de acceso
husped para el servidor BioRS.

Si esta opcin se establece en el valor Y, la opcin es


mutuamente excluyente respecto de las opciones
REMOTE_AUTHID y REMOTE_PASSWORD.

Vlido para la fuente de datos de BioRS.


REMOTE_AUTHID Indica el ID de autorizacin que se utiliza en la fuente El ID de autorizacin que ha
de datos. Son valores vlidos cualquier serie de utilizado para conectar con
caracteres con una longitud mxima de 255 caracteres. DB2.
Vlido para las fuentes de datos de servicios Web y de
BioRS.
PROXY_AUTHID Especifica el nombre de usuario que se debe utilizar
cuando el servidor proxy necesita autenticacin.
Pngase en contacto con el administrador de red para
obtener la contrasea.

Vlido para las fuentes de datos de BioRS, Blast, Entrez,


HMMER y servicios Web.
PROXY_PASSWORD Especifica el nombre de usuarios que se debe utilizar
cuando el servidor proxy necesita autenticacin.
Pngase en contacto con el administrador de red para
obtener el nombre de usuario.

Vlido para las fuentes de datos de BioRS, Blast, Entrez,


HMMER y servicios Web.

Apndice E. Sistemas federados 807


Sistemas federados

Tabla 159. Opciones de correlacin de usuarios y sus valores (continuacin)


Opcin Valores vlidos Valor por omisin
REMOTE_PASSWORD Indica la contrasea de autenticacin que se utiliza en la La contrasea utilizada para
fuente de datos. Los valores vlidos incluyen cualquier establecer conexin con DB2
serie que tenga una longitud mxima de 32 caracteres. si las condiciones listadas en
la columna de valores vlidos
Si el servidor necesita una contrasea y no se ha se cumplen.
establecido esta opcin, asegrese de que las siguientes
condiciones se cumplen o la conexin fallar:
v El parmetro de configuracin AUTHENTICATION
del gestor de bases de datos tiene el valor SERVER.
v La opcin de servidor PASSWORD se ha omitido o se
ha establecido en Y (por omisin).
v El establecer conexin con la base de datos de DB2,
se especific un ID de autorizacin y una contrasea.
La contrasea especificada debe ser la misma que la
del servidor remoto.

Vlido para las fuentes de datos de servicios Web y de


BioRS.
SSL_CLIENT_ Especifica el certificado de cliente que se enva durante Ninguno
CERTIFICATE_LABEL la autenticacin de SSL. Si el valor no est especificado,
se enviar el ID de autorizacin de DB2.

Vlido para la fuente de datos de Web.

Opciones de derivador para sistemas federados


Las opciones de derivador se utilizan para configurar el derivador o definir cmo
el servidor federado utiliza el derivador . Las opciones de derivador se pueden
definir cuando crea o altera el derivador .

Todas las fuentes de datos relacionales y no relacionales utilizan la opcin de


derivador DB2_FENCED. Los derivadores de ODBC y Teradata dan soporte a la
opcin de derivador de DB2_SOURCE_CLIENT_MODE. La fuente de datos Entrez
utiliza la opcin de derivador EMAIL. La fuente de datos ODBC utiliza la opcin
de derivador MODULE. Los servicios Web BioRS de BLAST, Entrez, HMMER y las
fuentes de datos de XML pueden utilizar las opciones de derivador para proxies.
Se da soporte a las opciones de SSL en los servicios Web de BLAST, HMMER,
SCRIPT y los derivadores de XML.
Tabla 160. Opciones de derivador y valores de stas
Opcin Valores vlidos Valor por omisin
DB2_FENCED Especifica si el derivador se ejecuta Derivadores relacionales:
en la modalidad protegida o en la N.
modalidad fiable.
Derivadores no
Y El derivador se ejecuta en relacionales de IBM: N.
la modalidad protegida.
Derivadores no
N El derivador se ejecuta en
relacionales de otros
la modalidad fiable.
proveedores: Y.

808 Consulta de SQL - Volumen 1


Sistemas federados

Tabla 160. Opciones de derivador y valores de stas (continuacin)


Opcin Valores vlidos Valor por omisin
DB2_SOURCE_CLIENT_ Especifica que el cliente de la Ninguno
MODE fuente de datos es de 32 bits y que
la instancia de base de datos en el
servidor federado es de 64 bits.
Cuando se especifique esta opcin,
se debe establecer la opcin de
derivador DB2_FENCED en Y.

Esta opcin se aplica slo a las


fuentes de datos de ODBC y de
Teradata y actualmente slo se
soporta en los sistemas operativos
de AIX o Solaris.

El nico valor vlido es 32 BIT. El


valor no distingue maysculas y
minsculas.
32BIT El cliente de la fuente de
datos que se ha instalado
en el servidor federado es
de 32 bits.
DB2_UM_PLUGIN Si se utiliza un conector para Ninguno
recuperar correlaciones desde
depsitos externos, se debe
especificar el nombre de clase
incluido el paquete (por ejemplo,
com.ibm.ii.um.ldap.
UserMappingRepository). Si se
utiliza el conector de ejemplo
Lightweight Directory Access
Protocol (LDAP), puede utilizarse
slo el nombre de clase (por
ejemplo, UserMappingRepository).
EMAIL Especifica una direccin de correo
electrnico cuando el usuario
registra el derivador de Entrez. Esta
direccin de correo electrnico se
incluye con todas las consultas y
permite que NCBI se ponga en
contacto con el usuario si hay
problemas como, por ejemplo, si
hay demasiadas consultas que
sobrecargan los servidores de
NCBI. Esta opcin es necesaria.
MODULE Especifica la va de acceso completa En Windows, el valor por
de la biblioteca que contiene la omisin es odbc32.dll
implementacin del Gestor de
controladores ODBC o la
implementacin de SQL/CLI. Se
necesita para el derivador de
ODBC en los servidores federados
de UNIX.

Apndice E. Sistemas federados 809


Sistemas federados

Tabla 160. Opciones de derivador y valores de stas (continuacin)


Opcin Valores vlidos Valor por omisin
PROXY_SERVER_NAME Especifica el nombre o direccin IP Ninguno
del servidor proxy. Este campo es
necesario si el valor de
PROXY_TYPE es HTTP o
SOCKS. La direccin IP puede ser
una direccin IPv4 (por ejemplo,
192.168.1.1) o puede ser una
direccin IPv6 separada por un
punto (por ejemplo,
1080:0:0:0:8:800:200C:417A).
Pngase en contacto con el
administrador de red para obtener
el nombre de servidor o la
direccin IP del servidor proxy.
PROXY_SERVER_PORT Especifica el nmero de puerto del Ninguno
servidor proxy. Este campo es
necesario si el valor de
PROXY_TYPE es HTTP o
SOCKS. Pngase en contacto con
el administrador de red para
obtener el nmero de puerto o el
servidor proxy.

La especificacin de la opcin
PROXY_SERVER_PORT en una
sentencia CREATE SERVER
sobrescribir la opcin
PROXY_SERVER_PORT en una
sentencia CREATE WRAPPER.
PROXY_TYPE Especifica el tipo de proxy que s e NONE
utiliza para acceder a Internet
cuando se est detrs de un
cortafuegos. Los valores vlidos son
NONE, HTTP o SOCKS. El
valor por omisin es NONE.
Consulte al administrador de la red
para conocer el tipo de proxy que
se utiliza.

Los derivadores de BLAST, de


HMMER y de SCRIPT no dan
soporte a proxies HTTP.
SSL_KEYSTORE_FILE Especifica el nombre del archivo de Ninguno
almacenamiento de certificados que
se debe utilizar para las
comunicaciones SSL/TSL. El valor
especificado debe tener una va de
acceso completa a la que pueda
acceder el agente DB2 o el proceso
FMP.

Opcional: Puede especificar el valor


GSK_MS_CERTIFICATE_STORE
para utilizar el almacenamiento de
certificado Microsoft nativo.

810 Consulta de SQL - Volumen 1


Sistemas federados

Tabla 160. Opciones de derivador y valores de stas (continuacin)


Opcin Valores vlidos Valor por omisin
SSL_KEYSTORE_ Especifica la contrasea utilizada Ninguno
PASSWORD para acceder al almacenamiento de
certificados SSL. La contrasea est
cifrada cuando se almacena en el
catlogo de DB2.
SSL_VERIFY_SERVER_ Especifica si se debe verificar el NO
CERTIFICATE certificado de servidor durante la
autenticacin SSL. Los valores no
distinguen maysculas y
minsculas. Para autenticar, utilice
uno de los siguientes valores: Y,
YES, T o TRUE. Para inhabilitar,
utilice F, FALSE, N o NO.

Correlaciones de tipos de datos directas por omisin


Existen dos tipos de correlaciones entre los tipos de datos de la fuente de datos y
los tipos de datos de la base de datos federada: las correlaciones de tipos directas y
las correlaciones de tipos inversas. En una correlacin de tipos directa, la
correlacin se realiza desde un tipo remoto a un tipo local comparable.

Puede alterar temporalmente una correlacin de tipos por omisin o crear una
nueva con la sentencia CREATE TYPE MAPPING.

Estas correlaciones son vlidas con todas las versiones soportadas, a menos que se
indique lo contrario.

Para todas las correlaciones de tipos de datos directas por omisin desde una
fuente de datos a la base de datos federada, el esquema federado es SYSIBM.

En las tablas siguientes se muestran las correlaciones directas por omisin entre
tipos de datos de base de datos federada y tipos de datos de fuente de datos.

Fuentes de datos DB2 Database para Linux, UNIX y Windows


La siguiente tabla lista las correlaciones de tipos de datos directas por omisin
para fuentes de datos DB2 Database para Linux, UNIX y Windows.
Tabla 161. Correlaciones de tipos de datos directas por omisin de DB2 Database para Linux, UNIX y Windows (no
se muestran todas las columnas)
REMOTE_ REMOTE_ REMOTE_ REMOTE_ REMOTE_ REMOTE_ REMOTE_ FEDERATED_ FEDERATED_ FEDERATED_ FEDERATED_
TYPENAME LOWER_ UPPER_LEN LOWER_ UPPER_ BIT_DATA DATA_ TYPENAME LENGTH SCALE BIT_DATA
LEN SCALE SCALE OPERATORS
BIGINT - - - - - - BIGINT - 0 -
BLOB - - - - - - BLOB - - -
CHAR - - - - - - CHAR - 0 N
CHAR - - - - Y - CHAR - 0 Y
CLOB - - - - - - CLOB - - -
DATE - - - - - - DATE - 0 -
DBCLOB - - - - - - DBCLOB - - -
DECIMAL - - - - - - DECIMAL - - -
DOUBLE - - - - - - DOUBLE - - -
FLOAT - - - - - - DOUBLE - - -
GRAPHIC - - - - - - GRAPHIC - 0 N
INTEGER - - - - - - INTEGER - 0 -

Apndice E. Sistemas federados 811


Sistemas federados

Tabla 161. Correlaciones de tipos de datos directas por omisin de DB2 Database para Linux, UNIX y Windows (no
se muestran todas las columnas) (continuacin)
REMOTE_ REMOTE_ REMOTE_ REMOTE_ REMOTE_ REMOTE_ REMOTE_ FEDERATED_ FEDERATED_ FEDERATED_ FEDERATED_
TYPENAME LOWER_ UPPER_LEN LOWER_ UPPER_ BIT_DATA DATA_ TYPENAME LENGTH SCALE BIT_DATA
LEN SCALE SCALE OPERATORS
LONGVAR - - - - N - CLOB - - -
LONGVAR - - - - Y - BLOB - - -
LONGVARG - - - - - - DBCLOB - - -
REAL - - - - - - REAL - - -
SMALLINT - - - - - - SMALLINT - 0 -
TIME - - - - - - TIME - 0 -
TIMESTAMP - - - - - - TIMESTAMP - 0 -
TIMESTMP - - - - - - TIMESTAMP - 0 -
VARCHAR - - - - - - VARCHAR - 0 N
VARCHAR - - - - Y - VARCHAR - 0 Y
VARGRAPH - - - - - - VARGRAPHIC - 0 N
VARGRAPHIC - - - - - - VARGRAPHIC - 0 N

Fuentes de datos DB2 para iSeries


La siguiente tabla lista las correlaciones de tipos de datos directas por omisin
para fuentes de datos DB2 para iSeries.
Tabla 162. Correlaciones de tipos de datos directas por omisin de DB2 para iSeries (no se muestran todas las
columnas)
Remote Remote Remote Remote Remote Remote Bit Remote Data Federated Federated Federated Federated Bit
Typename Lower Len Upper Len Lower Scale Upper Scale Data Operators Typename Length Scale Data
BLOB - - - - - - BLOB - - -
CHAR 1 254 - - - - CHAR - 0 N
CHAR 255 32672 - - - - VARCHAR - 0 N
CHAR 1 254 - - Y - CHAR - 0 Y
CHAR 255 32672 - - Y - VARCHAR - 0 Y
CLOB - - - - - - CLOB - - -
DATE - - - - - - DATE - 0 -
DBCLOB - - - - - - DBCLOB - - -
DECIMAL - - - - - - DECIMAL - - -
FLOAT 4 - - - - - REAL - - -
FLOAT 8 - - - - - DOUBLE - - -
GRAPHIC 1 127 - - - - GRAPHIC - 0 N
GRAPHIC 128 16336 - - - - VARGRAPHIC - 0 N
INTEGER - - - - - - INTEGER - 0 -
NUMERIC - - - - - - DECIMAL - - -
SMALLINT - - - - - - SMALLINT - 0 -
TIME - - - - - - TIME - 0 -
TIMESTAMP - - - - - - TIMESTAMP - 0 -
TIMESTMP - - - - - - TIMESTAMP - 0 -
VARCHAR 1 32672 - - - - VARCHAR - 0 N
VARCHAR 1 32672 - - Y - VARCHAR - 0 Y
VARG 1 16336 - - - - VARGRAPHIC - 0 N
VARGRAPHIC 1 16336 - - - - VARGRAPHIC - 0 N

Fuentes de datos DB2 para VM y VSE


La siguiente tabla lista las correlaciones de tipos de datos directas por omisin
para fuentes de datos DB2 para VM y VSE.
Tabla 163. Correlaciones de tipos de datos directas por omisin de DB2 Server para VM y VSE (no se muestran
todas las columnas)
Remote Remote Remote Remote Remote Remote Bit Remote Data Federated Federated Federated Federated Bit
Typename Lower Len Upper Len Lower Scale Upper Scale Data Operators Typename Length Scale Data
BLOB - - - - - - BLOB - - -

812 Consulta de SQL - Volumen 1


Sistemas federados

Tabla 163. Correlaciones de tipos de datos directas por omisin de DB2 Server para VM y VSE (no se muestran
todas las columnas) (continuacin)
Remote Remote Remote Remote Remote Remote Bit Remote Data Federated Federated Federated Federated Bit
Typename Lower Len Upper Len Lower Scale Upper Scale Data Operators Typename Length Scale Data
CHAR 1 254 - - - - CHAR - 0 N
CHAR 1 254 - - Y - CHAR - 0 Y
CLOB - - - - - - CLOB - - -
DATE - - - - - - DATE - 0 -
DBAHW - - - - - - SMALLINT - 0 -
DBAINT - - - - - - INTEGER - 0 -
DBCLOB - - - - - - DBCLOB - - -
DECIMAL - - - - - - DECIMAL - - -
FLOAT 4 - - - - - REAL - - -
FLOAT 8 - - - - - DOUBLE - - -
GRAPHIC 1 127 - - - - GRAPHIC - 0 N
INTEGER - - - - - - INTEGER - - -
SMALLINT - - - - - - SMALLINT - - -
TIME - - - - - - TIME - 0 -
TIMESTAMP - - - - - - TIMESTAMP - 0 -
TIMESTMP - - - - - - TIMESTAMP - 0 -
VARCHAR 1 32672 - - - - VARCHAR - 0 N
VARCHAR 1 32672 - - Y - VARCHAR - 0 Y
VARGRAPHIC 1 16336 - - - - VARGRAPHIC - 0 N
VARGRAPH 1 16336 - - - - VARGRAPHIC - 0 N

Fuentes de datos DB2 para z/OS


La siguiente tabla lista las correlaciones de tipos de datos directas por omisin
para fuentes de datos DB2 para z/OS.
Tabla 164. Correlaciones de tipos de datos directas por omisin de DB2 para z/OS (no se muestran todas las
columnas)
Remote Remote Remote Remote Remote Remote Bit Remote Data Federated Federated Federated Federated Bit
Typename Lower Len Upper Len Lower Scale Upper Scale Data Operators Typename Length Scale Data
BLOB - - - - - - BLOB - - -
CHAR 1 254 - - - - CHAR - 0 N
CHAR 255 32672 - - - - VARCHAR - 0 N
CHAR 1 254 - - Y - CHAR - 0 Y
CHAR 255 32672 - - Y - VARCHAR - 0 Y
CLOB - - - - - - CLOB - - -
DATE - - - - - - DATE - 0 -
DBCLOB - - - - - - DBCLOB - - -
DECIMAL - - - - - - DECIMAL - - -
FLOAT 4 - - - - - REAL - - -
FLOAT 8 - - - - - DOUBLE - - -
GRAPHIC 1 127 - - - - GRAPHIC - 0 N
INTEGER - - - - - - INTEGER - 0 -
ROWID - - - - Y - VARCHAR 40 - Y
SMALLINT - - - - - - SMALLINT - 0 -
TIME - - - - - - TIME - 0 -
TIMESTAMP - - - - - - TIMESTAMP - 0 -
TIMESTMP - - - - - - TIMESTAMP - 0 -
VARCHAR 1 32672 - - - - VARCHAR - 0 N
VARCHAR 1 32672 - - Y - VARCHAR - 0 Y
VARG 1 16336 - - - - VARGRAPHIC - 0 N
VARGRAPHIC 1 16336 - - - - VARGRAPHIC - 0 N

Fuentes de datos Informix


La siguiente tabla lista las correlaciones de tipos de datos directas por omisin
para fuentes de datos Informix.
Apndice E. Sistemas federados 813
Sistemas federados

Tabla 165. Correlaciones de tipos de datos directas por omisin de Informix (no se muestran todas las columnas)
Remote Remote Remote Remote Remote Remote Bit Remote Data Federated Federated Federated Federated Bit
Typename Lower Len Upper Len Lower Scale Upper Scale Data Operators Typename Length Scale Data
BLOB - - - - - - BLOB 2147483647 - -
BOOLEAN - - - - - - CHARACTER 1 - -
BYTE - - - - - - BLOB 2147483647 - -
CHAR 1 254 - - - - CHARACTER - - -
CHAR 255 32672 - - - - VARCHAR - - -
CLOB - - - - - - CLOB 2147483647 - -
DATE - - - - - - DATE 4 - -
DATETIME 0 4 0 4 - - DATE 4 - -
DATETIME 6 10 6 10 - - TIME 3 - -
DATETIME 0 4 6 15 - - TIMESTAMP 10 - -
DATETIME 6 10 11 15 - - TIMESTAMP 10 - -
DECIMAL 1 31 0 31 - - DECIMAL - - -
DECIMAL 32 130 - - - - DOUBLE 8 - -
FLOAT - - - - - - DOUBLE 8 - -
INTEGER - - - - - - INTEGER 4 - -
INTERVAL - - - - - - VARCHAR 25 - -
INT8 - - - - - - BIGINT 19 0 -
LVARCHAR 1 32672 - - - - VARCHAR - - -
MONEY 1 31 0 31 - - DECIMAL - - -
MONEY 32 32 - - - - DOUBLE 8 - -
NCHAR 1 254 - - - - CHARACTER - - -
NCHAR 255 32672 - - - - VARCHAR - - -
NVARCHAR 1 32672 - - - - VARCHAR - - -
REAL - - - - - - REAL 4 - -
SERIAL - - - - - - INTEGER 4 - -
SERIAL8 - - - - - - BIGINT - - -
SMALLFLOAT - - - - - - REAL 4 - -
SMALLINT - - - - - - SMALLINT 2 - -
TEXT - - - - - - CLOB 2147483647 - -
VARCHAR 1 32672 - - - - VARCHAR - - -
Notas:
v Para el tipo de datos DATETIME de Informix, el servidor federado de DB2 UNIX y Windows utiliza el calificador de alto nivel de Informix como REMOTE_LENGTH y el
calificador de bajo nivel de Informix como REMOTE_SCALE.
Los calificadores de Informix son las constantes TU_ definidas en el archivo datatime.h del SDK del Cliente de Informix. Las constantes son:
0 = YEAR 8 = MINUTE 13 = FRACTION(3)
2 = MONTH 10 = SECOND 14 = FRACTION(4)
4 = DAY 11 = FRACTION(1) 15 = FRACTION(5)
6 = HOUR 12 = FRACTION(2)

Fuentes de datos Microsoft SQL Server


La siguiente tabla lista las correlaciones de tipos de datos directas por omisin
para fuentes de datos Microsoft SQL Server.
Tabla 166. Correlaciones de tipos de datos directas por omisin de Microsoft SQL Server
Remote Remote Remote Remote Remote Remote Bit Remote Data Federated Federated Federated Federated Bit
Typename Lower Len Upper Len Lower Scale Upper Scale Data Operators Typename Length Scale Data
2
bigint - - - - - - BIGINT - - -
binary 1 254 - - - - CHARACTER - - Y
binary 255 8000 - - - - VARCHAR - - Y
bit - - - - - - SMALLINT 2 - -
char 1 254 - - - - CHAR - - N
char 255 8000 - - - - VARCHAR - - N
datetime - - - - - - TIMESTAMP 10 - -
datetimen - - - - - - TIMESTAMP 10 - -
decimal 1 31 0 31 - - DECIMAL - - -
decimal 32 38 0 38 - - DOUBLE - - -
decimaln 1 31 0 31 - - DECIMAL - - -

814 Consulta de SQL - Volumen 1


Sistemas federados

Tabla 166. Correlaciones de tipos de datos directas por omisin de Microsoft SQL Server (continuacin)
Remote Remote Remote Remote Remote Remote Bit Remote Data Federated Federated Federated Federated Bit
Typename Lower Len Upper Len Lower Scale Upper Scale Data Operators Typename Length Scale Data
decimaln 32 38 0 38 - - DOUBLE - - -
DUMMY2000
1 1 38 -84 127 - - DOUBLE - - -

float - 8 - - - - DOUBLE 8 - -
floatn - 8 - - - - DOUBLE 8 - -
float - 4 - - - - REAL 4 - -
floatn - 4 - - - - REAL 4 - -
image - - - - - - BLOB 2147483647 - Y
int - - - - - - INTEGER 4 - -
intn - - - - - - INTEGER 4 - -
money - - - - - - DECIMAL 19 4 -
moneyn - - - - - - DECIMAL 19 4 -
nchar 1 127 - - - - CHAR - - N
nchar 128 4000 - - - - VARCHAR - - N
numeric 1 31 0 31 - - DECIMAL - - -
numeric 32 38 0 38 - - DOUBLE 8 - -
numericn 32 38 0 38 - - DOUBLE - - -
numericn 1 31 0 31 - - DECIMAL - - -
ntext - - - - - - CLOB 2147483647 - Y
nvarchar 1 4000 - - - - VARCHAR - - N
real - - - - - - REAL 4 - -
smallint - - - - - - SMALLINT 2 - -
smalldatetime - - - - - - TIMESTAMP 10 - -
smallmoney - - - - - - DECIMAL 10 4 -
smallmoneyn - - - - - - DECIMAL 10 4 -
SQL_BIGINT - - - - - - DECIMAL - - -
SQL_BIGINT
2 - - - - - - BIGINT - - -

SQL_BINARY 1 254 - - - - CHARACTER - - Y


SQL_BINARY 255 8000 - - - - VARCHAR - - Y
SQL_BIT - - - - - - SMALLINT 2 - -
SQL_CHAR 1 254 - - - - CHAR - - N
SQL_CHAR 255 8000 - - - - VARCHAR - - N
SQL_DATE - - - - - - DATE 4 - -
SQL_
1 31 0 31 - - DECIMAL - - -
DECIMAL
SQL_
32 38 0 38 - - DOUBLE 8 - -
DECIMAL
SQL_
32 32 0 31 - - DOUBLE 8 - -
DECIMAL
SQL_DOUBLE - - - - - - DOUBLE 8 - -
SQL_FLOAT - - - - - - DOUBLE 8 - -
SQL_GUID 1 4000 - - Y - VARCHAR 16 - Y
SQL_INTEGER - - - - - - INTEGER 4 - -
SQL_LONG-
- - - - - - CLOB 2147483647 - N
VARCHAR
SQL_LONG-
- - - - - - BLOB - - Y
VARBINARY
SQL_
1 31 0 31 - - DECIMAL - - -
NUMERIC
SQL_REAL - - - - - - DOUBLE 8 - -
SQL_
- - - - - - SMALLINT 2 - -
SMALLINT
SQL_TIME - - - - - - TIME 3 - -
SQL_
- - - - - - TIMESTAMP 10 - -
TIMESTAMP
SQL_TINYINT - - - - - - SMALLINT 2 - -
SQL_
1 8000 - - - - VARCHAR - - Y
VARBINARY
SQL_
1 8000 - - - - VARCHAR - - N
VARCHAR
text - - - - - - CLOB - - N

Apndice E. Sistemas federados 815


Sistemas federados

Tabla 166. Correlaciones de tipos de datos directas por omisin de Microsoft SQL Server (continuacin)
Remote Remote Remote Remote Remote Remote Bit Remote Data Federated Federated Federated Federated Bit
Typename Lower Len Upper Len Lower Scale Upper Scale Data Operators Typename Length Scale Data
timestamp - - - - - - VARCHAR 8 Y
tinyint - - - - - - SMALLINT 2 - -
uniqueidentifier 1 4000 - - Y - VARCHAR 16 - Y
varbinary 1 8000 - - - - VARCHAR - - Y
varchar 1 8000 - - - - VARCHAR - - N
Nota:
1. Esta correlacin de tipos slo es vlida con los sistemas operativos Windows 2000.
2. Esta correlacin de tipos slo es vlida con Microsoft SQL Server Versin 2000.

Fuentes de datos ODBC


La siguiente tabla lista las correlaciones de tipos de datos directas por omisin
para fuentes de datos ODBC.
Tabla 167. Correlaciones de tipos de datos directas por omisin de ODBC (no se muestran todas las columnas)
Remote Remote Remote Remote Remote Remote Bit Remote Data Federated Federated Federated Federated Bit
Typename Lower Len Upper Len Lower Scale Upper Scale Data Operators Typename Length Scale Data
SQL_BIGINT - - - - - - BIGINT 8 - -
SQL_BINARY 1 254 - - - - CHARACTER - - Y
SQL_BINARY 255 32672 - - - - VARCHAR - - Y
SQL_BIT - - - - - - SMALLINT 2 - -
SQL_CHAR 1 254 - - - - CHAR - - N
SQL_CHAR 255 32672 - - - - VARCHAR - - N
SQL_
1 31 0 31 - - DECIMAL - - -
DECIMAL
SQL_
32 38 0 38 - - DOUBLE 8 - -
DECIMAL
SQL_DOUBLE - - - - - - DOUBLE 8 - -
SQL_FLOAT - - - - - - DOUBLE 8 - -
SQL_INTEGER - - - - - - INTEGER 4 - -
SQL_LONG-
- - - - - - CLOB 2147483647 - N
VARCHAR
SQL_LONG-
- - - - - - BLOB - - Y
VARBINARY
SQL_
1 31 0 31 - - DECIMAL - - -
NUMERIC
SQL_
32 32 0 31 - - DOUBLE 8 - -
NUMERIC
SQL_REAL - - - - - - REAL 4 - -
SQL_
- - - - - - SMALLINT 2 - -
SMALLINT
SQL_TYPE_
- - - - - - DATE 4 - -
DATE
SQL_TYPE_
- - - - - - TIME 3 - -
TIME
SQL_TYPE_
- - - - - - TIMESTAMP 10 - -
TIMESTAMP
SQL_TINYINT - - - - - - SMALLINT 2 - -
SQL_
1 32672 - - - - VARCHAR - - Y
VARBINARY
SQL_
1 32672 - - - - VARCHAR - - N
VARCHAR
SQL_WCHAR 1 127 - - - - CHAR - - N
SQL_WCHAR 128 16336 - - - - VARCHAR - - N
SQL_
1 16336 - - - - VARCHAR - - N
WVARCHAR
SQL_WLONG-
- 1073741823 - - - - CLOB 2147483647 - N
VARCHAR

816 Consulta de SQL - Volumen 1


Sistemas federados

Fuentes de datos Oracle NET8


La siguiente tabla lista las correlaciones de tipos de datos directas por omisin
para fuentes de datos Oracle NET8.
Tabla 168. Correlaciones de tipos de datos directas por omisin de Oracle NET8
Remote Remote Remote Remote Remote Remote Bit Remote Data Federated Federated Federated Federated Bit
Typename Lower Len Upper Len Lower Scale Upper Scale Data Operators Typename Length Scale Data
BLOB 0 0 0 0 - \0 BLOB 2147483647 0 Y
CHAR 1 254 0 0 - \0 CHAR 0 0 N
CHAR 255 2000 0 0 - \0 VARCHAR 0 0 N
CLOB 0 0 0 0 - \0 CLOB 2147483647 0 N
DATE 0 0 0 0 - \0 TIMESTAMP 0 0 N
FLOAT 1 126 0 0 - \0 DOUBLE 0 0 N
LONG 0 0 0 0 - \0 CLOB 2147483647 0 N
LONG RAW 0 0 0 0 - \0 BLOB 2147483647 0 Y
NUMBER 10 18 0 0 - \0 BIGINT 0 0 N
NUMBER 1 38 -84 127 - \0 DOUBLE 0 0 N
NUMBER 1 31 0 31 - >= DECIMAL 0 0 N
NUMBER 1 4 0 0 - \0 SMALLINT 0 0 N
NUMBER 5 9 0 0 - \0 INTEGER 0 0 N
NUMBER - 10 0 0 - \0 DECIMAL 0 0 N
RAW 1 2000 0 0 - \0 VARCHAR 0 0 Y
ROWID 0 0 0 NULL - \0 CHAR 18 0 N
TIMESTAMP
1 - - - - - - TIMESTAMP 10 - -

VARCHAR2 1 4000 0 0 - \0 VARCHAR 0 0 N


Nota:
1. Esta correlacin de tipos solo es vlida para configuraciones de cliente y servidor de Oracle 9i (o versin posterior).

Fuentes de datos Sybase


La siguiente tabla lista las correlaciones de tipos de datos directas por omisin
para fuentes de datos Sybase.
Tabla 169. Correlaciones de tipos de datos directas por omisin de Sybase CTLIB
Remote Remote Remote Remote Remote Remote Bit Remote Data Federated Federated Federated Federated Bit
Typename Lower Len Upper Len Lower Scale Upper Scale Data Operators Typename Length Scale Data
binary 1 254 - - - - CHAR - - Y
binary 255 16384 - - - - VARCHAR - - Y
bit - - - - - - SMALLINT - - -
char 1 254 - - - - CHAR - - N
char 255 16384 - - - - VARCHAR - - N
char null
(vase
varchar)
datetime - - - - - - TIMESTAMP - - -
datetimn - - - - - - TIMESTAMP - - -
decimal 1 31 0 31 - - DECIMAL - - -
decimal 32 38 0 38 - - DOUBLE - - -
decimaln 1 31 0 31 - - DECIMAL - - -
decimaln 32 38 0 38 - - DOUBLE - - -
float - 4 - - - - REAL - - -
float - 8 - - - - DOUBLE - - -
floatn - 4 - - - - REAL - - -
floatn - 8 - - - - DOUBLE - - -
image - - - - - - BLOB - - -
int - - - - - - INTEGER - - -
intn - - - - - - INTEGER - - -
money - - - - - - DECIMAL 19 4 -
moneyn - - - - - - DECIMAL 19 4 -
nchar 1 254 - - - - CHAR - - N
nchar 255 16384 - - - - VARCHAR - - N

Apndice E. Sistemas federados 817


Sistemas federados

Tabla 169. Correlaciones de tipos de datos directas por omisin de Sybase CTLIB (continuacin)
Remote Remote Remote Remote Remote Remote Bit Remote Data Federated Federated Federated Federated Bit
Typename Lower Len Upper Len Lower Scale Upper Scale Data Operators Typename Length Scale Data
nchar null
(vase
nvarchar)
numeric 1 31 0 31 - - DECIMAL - - -
numeric 32 38 0 38 - - DOUBLE - - -
numericn 1 31 0 31 - - DECIMAL - - -
numericn 32 38 0 38 - - DOUBLE - - -
nvarchar 1 16384 - - - - VARCHAR - - N
real - - - - - - REAL - - -
smalldatetime - - - - - - TIMESTAMP - - -
smallint - - - - - - SMALLINT - - -
smallmoney - - - - - - DECIMAL 10 4 -
sysname 1 254 - - - - CHAR - - N
text - - - - - - CLOB - - -
timestamp - - - - - - VARCHAR 8 - Y
tinyint - - - - - - SMALLINT - - -
unichar1 1 254 - - - - CHAR - - N
unichar1 255 16384 - - - - VARCHAR - - N
unichar null
(vase
univarchar)
univarchar1 1 16384 - - - - VARCHAR - - N
varbinary 1 16384 - - - - VARCHAR - - Y
varchar 1 16384 - - - - VARCHAR - - N
Nota:
1. Vlido para bases de datos federadas que no utilizan Unicode.

Fuentes de datos Teradata


La siguiente tabla lista las correlaciones de tipos de datos directas por omisin
para fuentes de datos Teradata.
Tabla 170. Correlaciones de tipos de datos directas por omisin de Teradata (no se muestran todas las columnas)
Remote Remote Remote Remote Remote Remote Bit Remote Data Federated Federated Federated Federated Bit
Typename Lower Len Upper Len Lower Scale Upper Scale Data Operators Typename Length Scale Data
BYTE 1 254 - - - - CHAR - - Y
BYTE 255 32672 - - - - VARCHAR - - Y
BYTE 32673 64000 - - - - BLOB - - -
BYTEINT - - - - - - SMALLINT - - -
CHAR 1 254 - - - - CHARACTER - - -
CHAR 255 32672 - - - - VARCHAR - - -
CHAR 32673 64000 - - - - CLOB - - -
DATE - - - - - - DATE - - -
DECIMAL 1 18 0 18 - - DECIMAL - - -
DOUBLE
- - - - - - DOUBLE - - -
PRECISION
FLOAT - - - - - - DOUBLE - - -
GRAPHIC 1 127 - - - - GRAPHIC - - -
GRAPHIC 128 16336 - - - - VARGRAPHIC - - -
GRAPHIC 16337 32000 - - - - DBCLOB - - -
INTEGER - - - - - - INTEGER - - -
INTERVAL - - - - - - CHAR - - -
NUMERIC 1 18 0 18 - - DECIMAL - - -
REAL - - - - - - DOUBLE - - -
SMALLINT - - - - - - SMALLINT - - -
TIMESTAMP - - - - - - TIMESTAMP - - -
VARBYTE 1 32762 - - - - VARCHAR - - Y
VARBYTE 32763 64000 - - - - BLOB - - -
VARCHAR 1 32672 - - - - VARCHAR - - -
VARCHAR 32673 64000 - - - - CLOB - - -

818 Consulta de SQL - Volumen 1


Sistemas federados

Tabla 170. Correlaciones de tipos de datos directas por omisin de Teradata (no se muestran todas las
columnas) (continuacin)
Remote Remote Remote Remote Remote Remote Bit Remote Data Federated Federated Federated Federated Bit
Typename Lower Len Upper Len Lower Scale Upper Scale Data Operators Typename Length Scale Data
VARGRAPHIC 1 16336 - - - - VARGRAPHIC - - -
VARGRAPHIC 16337 32000 - - - - DBCLOB - - -

Correlaciones de tipos de datos inversas por omisin


Para la mayor parte de fuentes de datos, las correlaciones de tipos por omisin se
encuentran en los derivadores.

Existen dos tipos de correlaciones entre los tipos de datos de la fuente de datos y
los tipos de datos de la base de datos federada: las correlaciones de tipos directas y
las correlaciones de tipos inversas. En una correlacin de tipos directa, la
correlacin se realiza desde un tipo remoto a un tipo local comparable. El otro tipo
de correlacin es una correlacin de tipos inversa, que se utiliza con DDL
transparente para crear o modificar tablas remotas.

Las correlaciones de tipos por omisin para fuentes de datos de la familia DB2 se
encuentran en el derivador de DRDA. Las correlaciones de tipos por omisin para
Informix se encuentran en el derivador de INFORMIX, y as sucesivamente.

Cuando se define una tabla o una vista remota en la base de datos federada, la
definicin incluye una correlacin de tipos inversa. La correlacin se realiza desde
un tipo de datos de base de datos federada local para cada columna, y el
correspondiente tipo de datos remoto. Por ejemplo, existe una correlacin de tipos
inversa por omisin en la que el tipo local REAL hace referencia al tipo
SMALLFLOAT de Informix.

Las bases de datos federadas no dan soporte a las correlaciones para los tipos
LONG VARCHAR, LONG VARGRAPHIC, DATALINK y para los tipos definidos
por el usuario.

Cuando se utiliza la sentencia CREATE TABLE para crear una tabla remota, deben
especificarse los tipos de datos locales que se desea incluir en la tabla remota. Estas
correlaciones de tipos inversas por omisin asignarn los tipos remotos
correspondientes a estas columnas. Por ejemplo, suponga que se utiliza la sentencia
CREATE TABLE para definir una tabla Informix con una columna C2. Se especifica
BIGINT como tipo de datos para C2 en la sentencia. La correlacin de tipos inversa
por omisin de BIGINT depende de la versin de Informix en la que est creando
la tabla. La correlacin para C2 en la tabla Informix se establecer con DECIMAL
en Informix Versin 8 y con INT8 en Informix Versin 9.

Puede alterar temporalmente una correlacin de tipos inversa por omisin o bien
crear una nueva correlacin de tipos inversa con la sentencia CREATE TYPE
MAPPING.

En las tablas siguientes se muestran las correlaciones inversas por omisin entre
tipos de datos locales de base de datos federada y tipos de datos de fuente de
datos remota.

Estas correlaciones son vlidas con todas las versiones soportadas, a menos que se
indique lo contrario.

Apndice E. Sistemas federados 819


Sistemas federados

Fuentes de datos DB2 Database para Linux, UNIX y Windows


La siguiente tabla lista las correlaciones de tipos de datos inversas por omisin
para fuentes de datos DB2 Database para Linux, UNIX y Windows.
Tabla 171. Correlaciones de tipos de datos inversas por omisin de DB2 Database para Linux, UNIX y Windows (no
se muestran todas las columnas)
Federated Federated Federated Federated Federated Federated Bit Federated Remote Remote Remote Scale Federated Bit
Typename Lower Len Upper Len Lower Scale Upper Scale Data Data Typename Length Data
Operators
BIGINT - 8 - - - - BIGINT - - -
BLOB - - - - - - BLOB - - -
CHARACTER - - - - - - CHAR - - N
CHARACTER - - - - Y - CHAR - - Y
CLOB - - - - - - CLOB - - -
DATE - 4 - - - - DATE - - -
DBCLOB - - - - - - DBCLOB - - -
DECIMAL - - - - - - DECIMAL - - -
DOUBLE - 8 - - - - DOUBLE - - -
FLOAT - 8 - - - - DOUBLE - - -
GRAPHIC - - - - - - GRAPHIC - - N
INTEGER - 4 - - - - INTEGER - - -
REAL - - - - - - REAL - - -
SMALLINT - 2 - - - - SMALLINT - - -
TIME - 3 - - - - TIME - - -
TIMESTAMP - 10 - - - - TIMESTAMP - - -
VARCHAR - - - - - - VARCHAR - - N
VARCHAR - - - - Y - VARCHAR - - Y
VARGRAPH - - - - - - VARGRAPHIC - - N
VARGRAPHIC - - - - - - VARGRAPHIC - - -

Fuentes de datos DB2 para iSeries


La siguiente tabla lista las correlaciones de tipos de datos inversas por omisin
para fuentes de datos DB2 para iSeries.
Tabla 172. Correlaciones de tipos de datos inversas por omisin de DB2 para iSeries (no se muestran todas las
columnas)
Federated Federated Federated Federated Federated Federated Bit Federated Remote Remote Remote Scale Remote Bit
Typename Lower Len Upper Len Lower Scale Upper Scale Data Data Typename Length Data
Operations
BLOB - - - - - - BLOB - - -
CHARACTER - - - - - - CHARACTER - - N
CHARACTER - - - - Y - CHARACTER - - Y
CLOB - - - - - - CLOB - - -
DATE - 4 - - - - DATE - - -
DBCLOB - - - - - - DBCLOB - - -
DECIMAL - - - - - - NUMERIC - - -
DECIMAL - - - - - - DECIMAL - - -
DOUBLE - 8 - - - - FLOAT - - -
GRAPHIC - - - - - - GRAPHIC - - N
INTEGER - 4 - - - - INTEGER - - -
REAL - 4 - - - - FLOAT - - -
SMALLINT - 2 - - - - SMALLINT - - -
TIME - 3 - - - - TIME - - -
TIMESTAMP - 10 - - - - TIMESTAMP - - -
VARCHAR - - - - - - VARCHAR - - N
VARCHAR - - - - Y - VARCHAR - - Y
VARGRAPHIC - - - - - - VARG - - N

820 Consulta de SQL - Volumen 1


Sistemas federados

Fuentes de datos DB2 para VM y VSE


La siguiente tabla lista las correlaciones de tipos de datos inversas por omisin
para fuentes de datos DB2 para VM y VSE.
Tabla 173. Correlaciones de tipos de datos inversas por omisin de DB2 para VM y VSE (no se muestran todas las
columnas)
Federated Federated Federated Federated Federated Federated Bit Federated Remote Remote Remote Scale Remote Bit
Typename Lower Len Upper Len Lower Scale Upper Scale Data Data Typename Length Data
Operators
BLOB - - - - - - BLOB - - -
CHARACTER - - - - - - CHAR - - -
CHARACTER - - - - Y - CHAR - - Y
CLOB - - - - - - CLOB - - -
DATE - 4 - - - - DATE - - -
DBCLOB - - - - - - DBCLOB - - -
DECIMAL - - - - - - DECIMAL - - -
DOUBLE - 8 - - - - FLOAT - - -
GRAPHIC - - - - - - GRAPHIC - - N
INTEGER - 4 - - - - INTEGER - - -
REAL - 4 - - - - REAL - - -
SMALLINT - 2 - - - - SMALLINT - - -
TIME - 3 - - - - TIME - - -
TIMESTAMP - 10 - - - - TIMESTAMP - - -
VARCHAR - - - - - - VARCHAR - - -
VARCHAR - - - - Y - VARCHAR - - Y
VARGRAPH - - - - - - VARGRAPH - - N

Fuentes de datos DB2 para z/OS


La siguiente tabla lista las correlaciones de tipos de datos inversas por omisin
para fuentes de datos DB2 para z/OS.
Tabla 174. Correlaciones de tipos de datos inversas por omisin de DB2 para z/OS (no se muestran todas las
columnas)
Federated Federated Federated Federated Federated Federated Bit Federated Remote Remote Remote Scale Remote Bit
Typename Lower Len Upper Len Lower Scale Upper Scale Data Data Typename Length Data
Operators
BLOB - - - - - - BLOB - - -
CHARACTER - - - - - - CHAR - - N
CHARACTER - - - - Y - CHAR - - Y
CLOB - - - - - - CLOB - - -
DATE - 4 - - - - DATE - - -
DBCLOB - - - - - - DBCLOB - - -
DECIMAL - - - - - - DECIMAL - - -
DOUBLE - 8 - - - - DOUBLE - -
FLOAT - 8 - - - - DOUBLE - - -
GRAPHIC - - - - - - GRAPHIC - - N
INTEGER - 4 - - - - INTEGER - - -
REAL - 4 - - - - REAL - - -
SMALLINT - 2 - - - - SMALLINT - - -
TIME - 3 - - - - TIME - - -
TIMESTAMP - 10 - - - - TIMESTAMP - - -
VARCHAR - - - - - - VARCHAR - - N
VARCHAR - - - - Y - VARCHAR - - Y
VARGRAPHIC - - - - - - VARGRAPHIC - - N

Fuentes de datos Informix


La siguiente tabla lista las correlaciones de tipos de datos inversas por omisin
para fuentes de datos Informix.

Apndice E. Sistemas federados 821


Sistemas federados

Tabla 175. Correlaciones de tipos de datos inversas por omisin para Informix
Federated Federated Federated Federated Federated Federated Bit Federated Remote Remote Remote Scale Remote Bit
Typename Lower Len Upper Len Lower Scale Upper Scale Data Data Typename Length Data
Operators
1
BIGINT - - - - - - DECIMAL 19 - -
2
BIGINT - - - - - - INT8 - - -
BLOB 1 2147483647 - - - - BYTE - - -
CHARACTER - - - - N - CHAR - - -
CHARACTER - - - - Y - BYTE - - -
CLOB 1 2147483647 - - - - TEXT - - -
DATE - 4 - - - - DATE - - -
DECIMAL - - - - - - DECIMAL - - -
DOUBLE - 8 - - - - FLOAT - - -
INTEGER - 4 - - - - INTEGER - - -
REAL - 4 - - - - SMALLFLOAT - - -
SMALLINT - 2 - - - - SMALLINT - - -
TIME - 3 - - - - DATETIME 6 10 -
TIMESTAMP - 10 - - - - DATETIME 0 15 -
VARCHAR 1 254 - - N - VARCHAR - - -
VARCHAR1 255 32672 - - N - TEXT - - -
VARCHAR - - - - Y - BYTE - - -
2
VARCHAR 255 2048 - - N - LVARCHAR - - -
2
VARCHAR 2049 32672 - - N - TEXT - - -
Nota:
1. Esta correlacin de tipos slo es vlida con el servidor Informix Versin 8 (o inferior).
2. Esta correlacin de tipos slo es vlida con el servidor Informix Versin 9 (o superior).
Para el tipo de datos DATETIME de Informix, el servidor federado utiliza el calificador de alto nivel de Informix como REMOTE_LENGTH y el calificador de bajo nivel de
Informix como REMOTE_SCALE.

Los calificadores de Informix son las constantes TU_ definidas en el archivo datatime.h del SDK del Cliente de Informix. Las constantes son:
0 = YEAR 8 = MINUTE 13 = FRACTION(3)
2 = MONTH 10 = SECOND 14 = FRACTION(4)
4 = DAY 11 = FRACTION(1) 15 = FRACTION(5)
6 = HOUR 12 = FRACTION(2)

Fuentes de datos Microsoft SQL Server


La siguiente tabla lista las correlaciones de tipos de datos inversas por omisin
para fuentes de datos Microsoft SQL Server.
Tabla 176. Correlaciones de tipos de datos inversas por omisin de Microsoft SQL Server (no se muestran todas las
columnas)
Federated Federated Federated Federated Federated Federated Bit Federated Remote Remote Remote Scale Remote Bit
Typename Lower Len Upper Len Lower Scale Upper Scale Data Data Typename Length Data
Operators
1
BIGINT - - - - - - bigint - - -
BLOB - - - - - - image - - -
CHARACTER - - - - Y - binary - - -
CHARACTER - - - - N - char - - -
CLOB - - - - - - text - - -
DATE - 4 - - - - datetime - - -
DECIMAL - - - - - - decimal - - -
DOUBLE - 8 - - - - float - - -
INTEGER - - - - - - int - - -
SMALLINT - - - - - - smallint - - -
REAL - 4 - - - - real - - -
TIME - 3 - - - - datetime - - -
TIMESTAMP - 10 - - - - datetime - - -
VARCHAR 1 8000 - - N - varchar - - -
VARCHAR 8001 32672 - - N - text - - -
VARCHAR 1 8000 - - Y - varbinary - - -
VARCHAR 8001 32672 - - Y - image - - -

822 Consulta de SQL - Volumen 1


Sistemas federados

Tabla 176. Correlaciones de tipos de datos inversas por omisin de Microsoft SQL Server (no se muestran todas las
columnas) (continuacin)
Federated Federated Federated Federated Federated Federated Bit Federated Remote Remote Remote Scale Remote Bit
Typename Lower Len Upper Len Lower Scale Upper Scale Data Data Typename Length Data
Operators
Nota:
1. Esta correlacin de tipos slo es vlida con Microsoft SQL Server Versin 2000.

Fuentes de datos Oracle NET8


La siguiente tabla lista las correlaciones de tipos de datos inversas por omisin
para fuentes de datos Oracle NET8.
Tabla 177. Correlaciones de tipos de datos inversas por omisin para Oracle NET8
Federated Federated Federated Federated Federated Federated Bit Federated Remote Remote Remote Scale Remote Bit
Typename Lower Len Upper Len Lower Scale Upper Scale Data Data Typename Length Data
Operators
BIGINT 0 8 0 0 N \0 NUMBER 19 0 N
BLOB 0 2147483647 0 0 Y \0 BLOB 0 0 Y
CHARACTER 1 254 0 0 N \0 CHAR 0 0 N
CHARACTER 1 254 0 0 Y \0 RAW 0 0 Y
CLOB 0 2147483647 0 0 N \0 CLOB 0 0 N
DATE 0 4 0 0 N \0 DATE 0 0 N
DECIMAL 0 0 0 0 N \0 NUMBER 0 0 N
DOUBLE 0 8 0 0 N \0 FLOAT 126 0 N
FLOAT 0 8 0 0 N \0 FLOAT 126 0 N
INTEGER 0 4 0 0 N \0 NUMBER 10 0 N
REAL 0 4 0 0 N \0 FLOAT 63 0 N
SMALLINT 0 2 0 0 N \0 NUMBER 5 0 N
TIME 0 3 0 0 N \0 DATE 0 0 N
TIMESTAMP
1 0 10 0 0 N \0 DATE 0 0 N

TIMESTAMP
2 0 10 0 0 N \0 TIMESTAMP 6 0 N

VARCHAR 1 4000 0 0 N \0 VARCHAR2 0 0 N


VARCHAR 1 2000 0 0 Y \0 RAW 0 0 Y
Nota:
1. Esta correlacin de tipos slo es vlida con Oracle Versin 8.
2. Esta correlacin de tipos slo es vlida con Oracle Versin 9 y Versin 10.

Fuentes de datos Sybase


La siguiente tabla lista las correlaciones de tipos de datos inversas por omisin
para fuentes de datos Sybase.
Tabla 178. Correlaciones de tipos de datos inversas por omisin para Sybase CTLIB
Federated Federated Federated Federated Federated Federated Bit Federated Remote Remote Remote Scale Remote Bit
Typename Lower Len Upper Len Lower Scale Upper Scale Data Data Typename Length Data
Operators
BIGINT - - - - - - decimal 19 0 -
BLOB - - - - - - image - - -
CHARACTER - - - - N - char - - -
CHARACTER - - - - Y - binary - - -
CLOB - - - - - - text - - -
DATE - - - - - - datetime - - -
DECIMAL - - - - - - decimal - - -
DOUBLE - - - - - - float - - -
INTEGER - - - - - - integer - - -
REAL - - - - - - real - - -
SMALLINT - - - - - - smallint - - -
TIME - - - - - - datetime - - -
TIMESTAMP - - - - - - datetime - - -
VARCHAR1 1 255 - - N - varchar - - -

Apndice E. Sistemas federados 823


Sistemas federados

Tabla 178. Correlaciones de tipos de datos inversas por omisin para Sybase CTLIB (continuacin)
Federated Federated Federated Federated Federated Federated Bit Federated Remote Remote Remote Scale Remote Bit
Typename Lower Len Upper Len Lower Scale Upper Scale Data Data Typename Length Data
Operators
VARCHAR1 256 32672 - - N - text - - -
2
VARCHAR 1 16384 - - N - varchar - - -
2
VARCHAR 16385 32672 - - N - text - - -
VARCHAR1 1 255 - - Y - varbinary - - -
VARCHAR1 256 32672 - - Y - image - - -
2
VARCHAR 1 16384 - - Y - varbinary - - -
2
VARCHAR 16385 32672 - - Y - image - - -
Nota:
1. Esta correlacin de tipos solo es vlida para CTLIB con el servidor Sybase versin 12.0 (o anterior).
2. Esta correlacin de tipos solo es vlida para CTLIB con el servidor Sybase versin 12.5 (o posterior).

Fuentes de datos Teradata


La siguiente tabla lista las correlaciones de tipos de datos inversas por omisin
para fuentes de datos Teradata.
Tabla 179. Correlaciones de tipos de datos inversas por omisin de Teradata (no se muestran todas las columnas)
Federated Federated Federated Federated Federated Federated Bit Federated Remote Remote Remote Scale Remote Bit
Typename Lower Len Upper Len Lower Scale Upper Scale Data Data Typename Length Data
Operators
1
BLOB 1 64000 - - - - VARBYTE - - -
CHARACTER - - - - - - CHARACTER - - -
CHARACTER - - - - Y - BYTE - - -
2
CLOB 1 64000 - - - VARCHAR - - -
DATE - - - - - - DATE - - -
3
DBCLOB 1 32000 - - - - VARGRAPHIC - - -
DECIMAL 1 18 0 18 - - DECIMAL - - -
DECIMAL 19 31 0 31 - - FLOAT - - -
DOUBLE - - - - - - FLOAT - - -
GRAPHIC - - - - - - GRAPHIC - - -
INTEGER - - - - - - INTEGER - - -
REAL - - - - - - FLOAT - - -
SMALLINT - - - - - - SMALLINT - - -
TIME - - - - - - TIME - - -
TIMESTAMP - - - - - - TIMESTAMP - - -
VARCHAR - - - - - - VARCHAR - - -
VARCHAR - - - - Y - VARBYTE - - -
VARGRAPHIC - - - - - - VARGRAPHIC - - -
Nota:
1. El tipo de datos VARBYTE de Teradata slo puede contener la longitud especificada (1 a 64000) de un tipo de datos BLOB.
2. El tipo de datos VARCHAR de Teradata slo puede contener la longitud especificada (1 a 64000) de un tipo de datos CLOB.
3. El tipo de datos VARGRAPHIC de Teradata slo puede contener la longitud especificada (1 a 32000) de un tipo de datos DBCLOB.

824 Consulta de SQL - Volumen 1


Apndice F. La base de datos SAMPLE y la consulta de SQL
Muchos de los ejemplos de cdigos en la documentacin de DB2 utilizan la base
de datos SAMPLE.

Puede crear la base de datos SAMPLE emitiendo el mandato db2sampl o puede


crearla a partir de Primeros pasos. La base de datos SAMPLE contiene tablas y
datos, incluyendo tablas con columnas XML y datos XML, en los lugares en que
est soportada, a los que se hace referencia mediante ejemplos de consulta de SQL
y mediante aplicaciones de ejemplo que se proporcionan mediante DB2 Versin 9.1.

Puede utilizar los datos de la base de datos SAMPLE para experimentar con
sentencias SQL o para conocer y probar las caractersticas de base de datos DB2.

Para obtener ms informacin, consulte db2sampl - Mandato Crear base de datos


SAMPLE o La base de datos SAMPLE del Centro de informacin de DB2.

Copyright IBM Corp. 1993, 2006 825


826 Consulta de SQL - Volumen 1
Apndice G. Nombres de esquema reservados y palabras
reservadas
Existen restricciones sobre el uso de ciertos nombres que el gestor de bases de
datos necesita. En algunos casos, los nombres estn reservados y los programas de
aplicacin no pueden utilizarlos. En otros casos, no es aconsejable la utilizacin de
algunos nombres en programas de aplicacin, aunque el gestor de bases de datos
no impida su utilizacin.

Los nombres de esquema reservados son los siguientes:


v SYSCAT
v SYSFUN
v SYSIBM
v SYSSTAT
v SYSPROC

Se recomienda encarecidamente que los nombres de esquema no empiecen nunca


por el prefijo SYS, ya que, por convenio, SYS se utiliza para indicar un rea
reservada por el sistema. Las funciones no definidas por el usuario, los tipos
definidos por el usuario, los activadores o los seudnimos se pueden colocar en un
esquema cuyo nombre empiece por SYS (SQLSTATE 42939).

El esquema DB2QP y el esquema SYSTOOLS se ponen a parte para que los utilicen
las herramientas de DB2. No es aconsejable que los usuarios definan explcitamente
objetos en estos esquemas, aunque el gestor de bases de datos no impida su
utilizacin.

Tambin se recomienda que no se utilice SESSION como nombre de esquema.


Como las tablas temporales declaradas deben estar calificadas por SESSION, es
posible que una aplicacin declare una tabla temporal que tenga un nombre
idntico al de una tabla permanente, lo cual puede producir confusin en la lgica
del programa. Para evitar esta situacin, no utilice el esquema SESSION excepto
cuando utilice tablas temporales declaradas.

En la versin 9 de DB2 no hay palabras especficamente reservadas. Las palabras


clave se pueden utilizar como identificadores normales, excepto en un contexto en
que tambin se interpretaran como palabras clave SQL. En dichos casos, la palabra
debe especificarse como un identificador delimitado. Por ejemplo, COUNT no se
puede utilizar como un nombre de columna en una sentencia SELECT, a menos
que est delimitado.

ISO/ANSI SQL99 y otros productos de base de datos DB2 incluyen palabras


reservadas que DB2 Database para Linux, UNIX y Windows no las impone; de
todas formas, se recomienda que estas palabras no se utilicen como identificadores
normales, porque reduce la portabilidad.

Por motivos de portabilidad entre productos de base de datos DB2, las siguientes
palabras se deben considerar palabras reservadas:
ACTIVATE DISALLOW LOCALE RESULT
ADD DISCONNECT LOCALTIME RESULT_SET_LOCATOR
AFTER DISTINCT LOCALTIMESTAMP RETURN
ALIAS DO LOCATOR RETURNS

Copyright IBM Corp. 1993, 2006 827


Nombres de esquema reservados y palabras reservadas

ALL DOUBLE LOCATORS REVOKE


ALLOCATE DROP LOCK RIGHT
ALLOW DSSIZE LOCKMAX ROLLBACK
ALTER DYNAMIC LOCKSIZE ROUTINE
AND EACH LONG ROW
ANY EDITPROC LOOP ROW_NUMBER
AS ELSE MAINTAINED ROWNUMBER
ASENSITIVE ELSEIF MATERIALIZED ROWS
ASSOCIATE ENABLE MAXVALUE ROWSET
ASUTIME ENCODING MICROSECOND RRN
AT ENCRYPTION MICROSECONDS RUN
ATTRIBUTES END MINUTE SAVEPOINT
AUDIT END-EXEC MINUTES SCHEMA
AUTHORIZATION ENDING MINVALUE SCRATCHPAD
AUX ERASE MODE SCROLL
AUXILIARY ESCAPE MODIFIES SEARCH
BEFORE EVERY MONTH SECOND
BEGIN EXCEPT MONTHS SECONDS
BETWEEN EXCEPTION NEW SECQTY
BINARY EXCLUDING NEW_TABLE SECURITY
BUFFERPOOL EXCLUSIVE NEXTVAL SELECT
BY EXECUTE NO SENSITIVE
CACHE EXISTS NOCACHE SEQUENCE
CALL EXIT NOCYCLE SESSION
CALLED EXPLAIN NODENAME SESSION_USER
CAPTURE EXTERNAL NODENUMBER SET
CARDINALITY EXTRACT NOMAXVALUE SIGNAL
CASCADED FENCED NOMINVALUE SIMPLE
CASE FETCH NONE SOME
CAST FIELDPROC NOORDER SOURCE
CCSID FILE NORMALIZED SPECIFIC
CHAR FINAL NOT SQL
CHARACTER FOR NULL SQLID
CHECK FOREIGN NULLS STACKED
CLOSE FREE NUMPARTS STANDARD
CLUSTER FROM OBID START
COLLECTION FULL OF STARTING
COLLID FUNCTION OLD STATEMENT
COLUMN GENERAL OLD_TABLE STATIC
COMMENT GENERATED ON STAY
COMMIT GET OPEN STOGROUP
CONCAT GLOBAL OPTIMIZATION STORES
CONDITION GO OPTIMIZE STYLE
CONNECT GOTO OPTION SUBSTRING
CONNECTION GRANT OR SUMMARY
CONSTRAINT GRAPHIC ORDER SYNONYM
CONTAINS GROUP OUT SYSFUN
CONTINUE HANDLER OUTER SYSIBM
COUNT HASH OVER SYSPROC
COUNT_BIG HASHED_VALUE OVERRIDING SYSTEM
CREATE HAVING PACKAGE SYSTEM_USER
CROSS HINT PADDED TABLE
CURRENT HOLD PAGESIZE TABLESPACE
CURRENT_DATE HOUR PARAMETER THEN
CURRENT_LC_CTYPE HOURS PART TIME
CURRENT_PATH IDENTITY PARTITION TIMESTAMP
CURRENT_SCHEMA IF PARTITIONED TO
CURRENT_SERVER IMMEDIATE PARTITIONING TRANSACTION
CURRENT_TIME IN PARTITIONS TRIGGER
CURRENT_TIMESTAMP INCLUDING PASSWORD TRIM
CURRENT_TIMEZONE INCLUSIVE PATH TYPE
CURRENT_USER INCREMENT PIECESIZE UNDO
CURSOR INDEX PLAN UNION
CYCLE INDICATOR POSITION UNIQUE
DATA INHERIT PRECISION UNTIL
DATABASE INNER PREPARE UPDATE
DATAPARTITIONNAME INOUT PREVVAL USAGE

828 Consulta de SQL - Volumen 1


Nombres de esquema reservados y palabras reservadas

DATAPARTITIONNUM INSENSITIVE PRIMARY USER


DATE INSERT PRIQTY USING
DAY INTEGRITY PRIVILEGES VALIDPROC
DAYS INTERSECT PROCEDURE VALUE
DB2GENERAL INTO PROGRAM VALUES
DB2GENRL IS PSID VARIABLE
DB2SQL ISOBID QUERY VARIANT
DBINFO ISOLATION QUERYNO VCAT
DBPARTITIONNAME ITERATE RANGE VERSION
DBPARTITIONNUM JAR RANK VIEW
DEALLOCATE JAVA READ VOLATILE
DECLARE JOIN READS VOLUMES
DEFAULT KEY RECOVERY WHEN
DEFAULTS LABEL REFERENCES WHENEVER
DEFINITION LANGUAGE REFERENCING WHERE
DELETE LATERAL REFRESH WHILE
DENSE_RANK LC_CTYPE RELEASE WITH
DENSERANK LEAVE RENAME WITHOUT
DESCRIBE LEFT REPEAT WLM
DESCRIPTOR LIKE RESET WRITE
DETERMINISTIC LINKTYPE RESIGNAL XMLELEMENT
DIAGNOSTICS LOCAL RESTART YEAR
DISABLE LOCALDATE RESTRICT YEARS

La lista siguiente contiene las palabras reservadas de ISO/ANSI SQL2003 que no


se encuentran en la lista anterior:
ABS GROUPING REGR_INTERCEPT
ARE INT REGR_R2
ARRAY INTEGER REGR_SLOPE
ASYMMETRIC INTERSECTION REGR_SXX
ATOMIC INTERVAL REGR_SXY
AVG LARGE REGR_SYY
BIGINT LEADING ROLLUP
BLOB LN SCOPE
BOOLEAN LOWER SIMILAR
BOTH MATCH SMALLINT
CEIL MAX SPECIFICTYPE
CEILING MEMBER SQLEXCEPTION
CHAR_LENGTH MERGE SQLSTATE
CHARACTER_LENGTH METHOD SQLWARNING
CLOB MIN SQRT
COALESCE MOD STDDEV_POP
COLLATE MODULE STDDEV_SAMP
COLLECT MULTISET SUBMULTISET
CONVERT NATIONAL SUM
CORR NATURAL SYMMETRIC
CORRESPONDING NCHAR TABLESAMPLE
COVAR_POP NCLOB TIMEZONE_HOUR
COVAR_SAMP NORMALIZE TIMEZONE_MINUTE
CUBE NULLIF TRAILING
CUME_DIST NUMERIC TRANSLATE
CURRENT_DEFAULT_TRANSFORM_GROUP OCTET_LENGTH TRANSLATION
CURRENT_ROLE ONLY TREAT
CURRENT_TRANSFORM_GROUP_FOR_TYPE OVERLAPS TRUE
DEC OVERLAY UESCAPE
DECIMAL PERCENT_RANK UNKNOWN
DEREF PERCENTILE_CONT UNNEST
ELEMENT PERCENTILE_DISC UPPER
EXEC POWER VAR_POP
EXP REAL VAR_SAMP
FALSE RECURSIVE VARCHAR
FILTER REF VARYING
FLOAT REGR_AVGX WIDTH_BUCKET
FLOOR REGR_AVGY WINDOW
FUSION REGR_COUNT WITHIN

Apndice G. Nombres de esquema reservados y palabras reservadas 829


Nombres de esquema reservados y palabras reservadas

830 Consulta de SQL - Volumen 1


Apndice H. Interaccin de los activadores con las
restricciones
Este apndice describe la interaccin de los activadores con las restricciones de
referencia y las restricciones de comprobacin que pueden ser el resultado de una
operacin de actualizacin. La Figura 14 y la descripcin asociada son
representativas del proceso que se lleva a cabo para una sentencia de SQL que
actualiza los datos de la base de datos.

Figura 14. Proceso de una sentencia de SQL con activadores y restricciones asociados

La Figura 14 muestra el orden general de proceso para una sentencia de SQL que
actualiza una tabla. Supone una situacin donde la tabla incluye activadores
anteriores, restricciones de referencia, restricciones de comprobacin y activadores
posteriores en cascada. A continuacin encontrar una descripcin de los recuadros
y de los dems elementos que se encuentran en la Figura 14.
v Sentencia de SQL S1
Es la sentencia DELETE, INSERT o UPDATE que empieza el proceso. La
sentencia de SQL S1 identifica una tabla (o una vista actualizable de alguna
tabla) a la que se hace referencia como la tabla de destino en toda la descripcin.
v Determinacin del conjunto de las filas afectadas (SAR)
Este paso es el punto de arranque de un proceso que se repite para las reglas de
supresin de restriccin de referencia de CASCADE y SET NULL y para las
sentencias de SQL en cascada de los activadores posteriores.

Copyright IBM Corp. 1993, 2006 831


Interaccin de los activadores con las restricciones

La finalidad de este paso es determinar el conjunto de filas afectadas para la


sentencia de SQL. El conjunto de filas incluidas en SAR se basa en la sentencia:
para DELETE, todas las filas que satisfagan la condicin de bsqueda de la
sentencia (o la fila actual para una DELETE con posicin)
para INSERT, las filas identificadas por la clusula VALUES o la seleccin
completa
para UPDATE, todas las filas que satisfagan la condicin de bsqueda (o la
fila actual para una actualizacin con posicin)
Si SAR est vaco, no habr activadores BEFORE, los cambios slo se aplican a la
tabla de destino o a las restricciones para procesar la sentencia de SQL.
v Proceso de activadores BEFORE
Todos los activadores BEFORE se procesan por orden ascendente de creacin.
Cada activador BEFORE procesar a accin activada una vez para cada fila de
SAR.
Puede producirse un error durante el proceso de una accin activada en cuyo
caso se retrotraen todos los cambios realizados como resultado de la sentencia
de SQL original S1 (hasta entonces).
Si no hay ningn activador BEFORE o si SAR est vaco, este paso se salta.
v Aplicacin de SAR a la tabla de destino
La supresin, insercin o actualizacin real se aplica utilizando SAR en la tabla
de destino de la base de datos.
Puede producirse un error al aplicar SAR (como el intento de insertar una fila
con una clave duplicada donde existe un ndice de unicidad) en cuyo caso se
retrotraen todos los cambios realizados como resultado de la sentencia de SQL
original S1 (hasta entonces).
v Aplicacin de restricciones
Las restricciones asociadas con la tabla de destino se aplican si SAR no est
vaco. Esto incluye restricciones de unicidad, ndices de unicidad, restricciones
de referencia, restricciones de comprobacin y comprobaciones relacionadas con
WITH CHECK OPTION en vistas. Las restricciones de referencia con reglas de
supresin en cascada o de establecer nulo pueden provocar que se activen
activadores adicionales.
Una violacin de cualquier restriccin o WITH CHECK OPTION da como
resultado un error y se retrotraen todos los cambios realizados como resultado
de S1 (hasta entonces).
v Proceso de activadores AFTER
Todos los activadores AFTER activados por S1 se procesan por orden ascendente
de creacin.
Los activadores FOR EACH procesan la accin activada una vez, incluso si SAR
est vaco. Los activadores FOR EACH ROW procesarn la accin activada una
vez para cada fila de SAR.
Puede producirse un error durante el proceso de una accin activada, en cuyo
caso se retrotraen todos los cambios realizados como resultado de la S1 original
(hasta entonces).
La accin activada de un activador puede incluir sentencias de SQL activadas
que sean sentencias DELETE, INSERT o UPDATE. Para esta descripcin, cada
una de dichas sentencias se considera una sentencia de SQL en cascada.
Una sentencia de SQL en cascada es una sentencia DELETE, INSERT o UPDATE
que se procesa como parte de la accin activada de un activador AFTER. Esta
sentencia empieza un nivel en cascada del proceso de activador. Puede

832 Consulta de SQL - Volumen 1


Interaccin de los activadores con las restricciones

considerarse como la asignacin de la sentencia de SQL activada como una S1


nueva y la realizacin repetida de todos los pasos descritos aqu.
Una vez que todas las sentencias de SQL activadas de todos los activadores
AFTER activados por cada S1 hayan terminado su proceso, el proceso de la S1
original se ha completado.
v R = retrotraer cambios antes de S1
Cualquier error que se produzca (incluyendo las violaciones de restricciones)
durante el proceso da como resultado una retrotraccin de todos los cambios
realizados directa o indirectamente como resultado de la sentencia de SQL
original S1. Por lo tanto, la base de datos vuelve a estar en el mismo estado que
estaba inmediatamente antes de la ejecucin de la sentencia de SQL original S1

Apndice H. Interaccin de los activadores con las restricciones 833


Interaccin de los activadores con las restricciones

834 Consulta de SQL - Volumen 1


Apndice I. Tablas de Explain
Tablas de Explain
Las tablas de Explain capturan planes de acceso cuando se activa el recurso
Explain. Las tablas de Explain se deben crear antes de invocar Explain. Puede
crearlas utilizando las definiciones de tablas documentadas o puede crearlas
invocando el script de muestra del procesador de lnea de mandatos (CLP),
proporcionado en el archivo EXPLAIN.DDL situado en el subdirectorio misc del
directorio sqllib. Para invocar el script, conctese a la base de datos donde se
necesitan las tablas de Explain y emita el mandato:
db2 -tf EXPLAIN.DDL

El recurso Explain utiliza los ID siguientes como el esquema al calificar tablas


Explain que se estn llenando de datos:
v El ID de autorizacin de sesin SQL dinmico
v El ID de autorizacin de sentencia para SQL esttico
El esquema se puede asociar con un conjunto de tablas Explain o alias que
apuntan a un conjunto de tablas Explain en un esquema distinto. Si no se
encuentran tablas Explain en el esquema, el recurso Explain comprueba la
existencia de tablas Explain en el esquema SYSTOOLS e intenta utilizar dichas
tablas.

Cuando el recurso Explain llene las tablas Explain, no activarn activadores ni


restricciones de comprobacin. Por ejemplo, si se ha definido un activador de
insercin en la tabla EXPLAIN_INSTANCE y se ha explicado una sentencia
elegible, el activador no se activar.

Para mejorar el rendimiento del recurso Explain en un sistema de bases de datos


particionadas, se recomienda crear las tablas de Explain en un solo grupo de
particiones de la base de datos particionada, preferiblemente en la misma particin
de base de datos a la que se conectar al compilar la consulta.

Informacin relacionada:
v Tabla ADVISE_INDEX en la pgina 859
v Tabla ADVISE_INSTANCE en la pgina 863
v Tabla ADVISE_MQT en la pgina 864
v Tabla ADVISE_PARTITION en la pgina 866
v Tabla ADVISE_TABLE en la pgina 868
v Tabla ADVISE_WORKLOAD en la pgina 869
v Tabla EXPLAIN_ARGUMENT en la pgina 836
v Tabla EXPLAIN_INSTANCE en la pgina 844
v Tabla EXPLAIN_OBJECT en la pgina 847
v Tabla EXPLAIN_OPERATOR en la pgina 850
v Tabla EXPLAIN_PREDICATE en la pgina 852
v Tabla EXPLAIN_STATEMENT en la pgina 855
v Tabla EXPLAIN_STREAM en la pgina 857

Copyright IBM Corp. 1993, 2006 835


EXPLAIN_ARGUMENT, tabla

Tabla EXPLAIN_ARGUMENT
La tabla EXPLAIN_ARGUMENT representa las caractersticas exclusivas para cada
operador individual, si hay alguno.
Tabla 180. Tabla EXPLAIN_ARGUMENT. PK significa que la columna forma parte de una clave primaria; FK significa
que la columna forma parte de una clave fornea.
Posibili-
dad de
Nombre de columna Tipo de datos nulos? Clave? Descripcin
EXPLAIN_REQUESTER VARCHAR(128) No FK ID de autorizacin del iniciador de esta peticin de
Explain.
EXPLAIN_TIME TIMESTAMP No FK Hora de inicio de la peticin de Explain.
SOURCE_NAME VARCHAR(128) No FK Nombre del paquete que se ejecutaba cuando se ha
explicado la sentencia dinmica o nombre del archivo
fuente cuando se ha explicado la sentencia de SQL
esttico.
SOURCE_SCHEMA VARCHAR(128) No FK Esquema, o calificador, de la fuente de la peticin de
Explain.
SOURCE_VERSION VARCHAR(64) No FK Versin de la fuente de la peticin de Explain.
EXPLAIN_LEVEL CHAR(1) No FK Nivel de informacin de Explain para el que esta fila
es aplicable.
STMTNO INTEGER No FK El nmero de sentencia en el paquete con el que est
relacionado esta informacin de Explain.
SECTNO INTEGER No FK El nmero de seccin en el paquete con el que est
relacionada esta informacin de Explain.
OPERATOR_ID INTEGER No No ID exclusivo para este operador en esta consulta.
ARGUMENT_TYPE CHAR(8) No No El tipo de argumento para este operador.
ARGUMENT_VALUE VARCHAR(1024) S No El valor del argumento para este operador. NULL si el
valor est en LONG_ARGUMENT_VALUE.
LONG_ARGUMENT_VALUE CLOB(2M) S No El valor del argumento para este operador, cuando el
texto no encaja ARGUMENT_VALUE. NULL si el
valor est en ARGUMENT_VALUE.

Tabla 181. Valores de las columnas ARGUMENT_TYPE y ARGUMENT_VALUE


Valor de
ARGUMENT_TYPE Valores de ARGUMENT_VALUE posibles Descripcin
AGGMODE COMPLETE Indicadores de agregacin parcial.
PARTIAL
INTERMEDIATE
FINAL
BITFLTR INTEGER El tamao del filtro de bits utilizado por la unin
FALSE de generacin aleatoria.
BLD_LEVEL Identificador de nivel de creacin de DB2 Serie de identificacin interna de la versin del
cdigo fuente.
BLKLOCK EXCLUSIVE Intento de bloqueo del nivel de bloqueo.
INTENT EXCLUSIVE
INTENT SHARE
NONE
SHARE
UPDATE
CSERQY TRUE La consulta remota es una subexpresin comn.
FALSE
CSETEMP TRUE Tabla temporal sobre el Distintivo de subexpresin
FALSE comn.
DIRECT TRUE Indicador de lectura directa.

836 Consulta de SQL - Volumen 1


EXPLAIN_ARGUMENT, tabla

Tabla 181. Valores de las columnas ARGUMENT_TYPE y ARGUMENT_VALUE (continuacin)


Valor de
ARGUMENT_TYPE Valores de ARGUMENT_VALUE posibles Descripcin
DPESTFLG TRUE Indica si el valor DPNUMPRT se utiliza en una
FALSE estimacin o no. Los valores posibles son TRUE
(DPNUMPRT representa el nmero estimado de
particiones de datos a las que se ha accedido) o
FALSE (DPNUMPRT representa el nmero real de
particiones de datos a las que se ha accedido).
DPLSTPRT NONE Representa las particiones de datos a las que se ha
CHARACTER accedido. Es una lista delimitada por comas (por
ejemplo: 1,3,5) o por guiones (por ejemplo: 1-5) de
las particiones de datos a las que se ha accedido.
Un valor NONE significa que no quedan
particiones de datos una vez se han aplicado los
predicados especificados.
DPNUMPRT INTEGER Representa el nmero real o estimado de
particiones de datos a las que se ha accedido.
DSTSEVER Nombre del servidor Servidor de destino (enviar desde).
DUPLWARN TRUE Duplica el distintivo de Aviso.
FALSE
EARLYOUT LEFT Indicador de pronto fuera.
RIGHT
NONE
ENVVAR Cada fila de este tipo contendr: Variable de entorno que afecta al optimizador
v Nombre de la variable de entorno
v Valor de la variable de entorno
ERRTOL Cada fila de este tipo contendr un par SQLSTATE Una lista de errores que debe tolerarse.
y SQLCODE.
FETCHMAX IGNORE Altera temporalmente el valor del argumento
INTEGER MAXPAGES en el operador FETCH.
GREEDY TRUE Indica que el optimizador ha utilizado el algoritmo
vido para planificar el acceso.
GLOBLOCK EXCLUSIVE Representa informacin de intento de bloqueo
INTENT EXCLUSIVE global para un objeto de tabla particionada.
INTENT NONE
INTENT SHARE
NO LOCK OBTAINED
SHARE
SHARE INTENT EXCLUSIVE
SUPER EXCLUSIVE
UPDATE
GROUPBYC TRUE Indica si se proporcionan columnas Agrupar por.
FALSE
GROUPBYN Integer El nmero de columnas de comparacin.
GROUPBYR Cada fila de este tipo contendr: Requisito de Agrupar por.
v El valor ordinal de la columna en grupo en clave
(seguido por dos puntos y un espacio)
v Nombre de columna
HASHCODE 24 Tamao (en bits) del cdigo de generacin aleatoria
32 utilizado para la unin de generacin aleatoria.

Apndice I. Tablas de Explain 837


EXPLAIN_ARGUMENT, tabla

Tabla 181. Valores de las columnas ARGUMENT_TYPE y ARGUMENT_VALUE (continuacin)


Valor de
ARGUMENT_TYPE Valores de ARGUMENT_VALUE posibles Descripcin
INNERCOL Cada fila de este tipo contendr: Columnas de orden interno.
v El valor ordinal de la columna en orden (seguido
por dos puntos y un espacio)
v Nombre de columna
v Valor de orden
(A) Ascendente
(D) Descendente

INPUTXID Un identificador de nodos de contexto INPUTXID identifica el nodo de contexto de


entrada que utiliza el operador XSCAN.
ISCANMAX IGNORE Altera temporalmente el valor del argumento
INTEGER MAXPAGES en el operador ISCAN.
JN_INPUT INNER Indica si el operador es el operador que alimenta la
OUTER parte interna o externa de una unin.
LISTENER TRUE Indicador de Cola de tabla receptora.
FALSE
MAXPAGES ALL El nmero mximo de pginas esperadas para la
NONE lectura anticipada.
INTEGER
MAXRIDS NONE El nmero mximo de Identificadores de fila que
INTEGER se incluirn en cada peticin de lectura anticipada
por lista.
NUMROWS INTEGER El nmero de filas que se espera clasificar.
ONEFETCH TRUE Un indicador de lectura.
FALSE
OUTERCOL Cada fila de este tipo contendr: Columnas de orden externo.
v El valor ordinal de la columna en orden (seguido
por dos puntos y un espacio)
v Nombre de columna
v Valor de orden
(A) Ascendente
(D) Descendente

OUTERJN LEFT Indicador de unin externa.


RIGHT
FULL
LEFT (ANTI)
RIGHT (ANTI)
PARTCOLS Nombre de columna Columnas de particin para el operador.
PREFETCH LIST Tipo de lectura anticipada admisible.
NONE
SEQUENTIAL
REOPT ALWAYS La sentencia se ha optimizado utilizando valores
ONCE enlazados para los marcadores de parmetros, las
variables del lenguaje principal y los registros
especiales.
RMTQTEXT Texto de consulta Texto de consulta remoto
RNG_PROD Nombre de funcin Funcin que produce rangos para el acceso
ampliado al ndice.

838 Consulta de SQL - Volumen 1


EXPLAIN_ARGUMENT, tabla

Tabla 181. Valores de las columnas ARGUMENT_TYPE y ARGUMENT_VALUE (continuacin)


Valor de
ARGUMENT_TYPE Valores de ARGUMENT_VALUE posibles Descripcin
ROWLOCK EXCLUSIVE Intento de bloqueo de fila.
NONE
REUSE
SHARE
SHORT (INSTANT) SHARE
UPDATE
ROWWIDTH INTEGER Anchura de fila que se ha de clasificar.
RSUFFIX Texto de consulta Sufijo de SQL remoto.
SCANDIR FORWARD Direccin de exploracin.
REVERSE
SCANGRAN INTEGER Paralelismo intraparticin, granularidad de la
exploracin paralela de intraparticin, expresada en
SCANUNIT.
SCANTYPE LOCAL PARALLEL Paralelismo intraparticin, exploracin de ndice o
Tabla.
SCANUNIT ROW Paralelismo intraparticin, unidad de granularidad
PAGE de exploracin.
SHARED TRUE Paralelismo intraparticin, indicador TEMP
compartido.
SLOWMAT TRUE Distintivo de materializacin lenta.
FALSE
SNGLPROD TRUE Indicador SORT o TEMP de paralelismo
FALSE intraparticin generado por un solo agente.
SORTKEY Cada fila de este tipo contendr: Columnas de clave de clasificacin.
v El valor ordinal de la columna en clave (seguido
por dos puntos y un espacio)
v Nombre de columna
v Valor de orden
(A) Ascendente

(D) Descendente

SORTTYPE PARTITIONED Paralelismo intraparticin, tipo SORT.


SHARED
ROUND ROBIN
REPLICATED
SRCSEVER Nombre del servidor Servidor fuente (enviar a).
SPILLED INTEGER El nmero estimado de pginas del vertido SORT
SQLCA Informacin de advertencia Cdigos de advertencia y de razn emitidos
durante la operacin Explain.
STMTHEAP INTEGER Tamao de la pila de sentencia al iniciar la
compilacin de una sentencia.
STREAM TRUE La fuente remota es de modalidad continua.
FALSE
TABLOCK EXCLUSIVE Intento de bloqueo de tabla.
INTENT EXCLUSIVE
INTENT NONE
INTENT SHARE
REUSE
SHARE
SHARE INTENT EXCLUSIVE
SUPER EXCLUSIVE
UPDATE
TEMPSIZE INTEGER Tamao de pgina de la tabla temporal.

Apndice I. Tablas de Explain 839


EXPLAIN_ARGUMENT, tabla

Tabla 181. Valores de las columnas ARGUMENT_TYPE y ARGUMENT_VALUE (continuacin)


Valor de
ARGUMENT_TYPE Valores de ARGUMENT_VALUE posibles Descripcin
TQDEGREE INTEGER Paralelismo intraparticin, nmero de subagentes
que acceden a la Cola de tabla.
TQMERGE TRUE Indicador de Fusin de cola de tabla (clasificada).
FALSE
TQREAD READ AHEAD Propiedad de lectura de Cola de tabla.
STEPPING
SUBQUERY STEPPING
TQSEND BROADCAST Propiedad de envo de Cola de tabla.
DIRECTED
SCATTER
SUBQUERY DIRECTED
TQTYPE LOCAL Paralelismo intraparticin, Cola de tabla.
TQ_ORIGIN ASYNCHRONY La razn por la que la Cola de tabla se introdujo
en el plan de acceso.
TRUNCSRT TRUE SORT truncado (limita el nmero de filas
generadas).
UNIQUE TRUE Indicador de exclusividad.
FALSE
UNIQKEY Cada fila de este tipo contendr: Columnas de claves de unicidad.
v El valor ordinal de la columna en clave (seguido
por dos puntos y un espacio)
v Nombre de columna
VOLATILE TRUE Tabla voltil
XDFOUT DECIMAL XDFOUT indica el nmero esperado de
documentos que devolver el operador XISCAN
para cada nodo de contexto.
XLOGID Un identificador que consiste en un nombre de XLOGID identifica el ndice sobre datos XML
esquema SQL y el nombre de un ndice sobre datos elegido por el optimizador para el operador
XML XISCAN.
XPATH Una expresin XPATH y el conjunto de resultados Este argumento indica la evaluacin de una
en un formato interno expresin XPATH del operador XSCAN.
XPHYID Un identificador que consiste en un nombre de XPHYID identifica el ndice fsico asociado con un
esquema SQL y el nombre de un ndice sobre datos ndice sobre datos XML que utiliza el operador
XML fsico XISCAN.

840 Consulta de SQL - Volumen 1


EXPLAIN_DIAGNOSTIC, tabla

Tabla EXPLAIN_DIAGNOSTIC
La tabla EXPLAIN_DIAGNOSTIC contiene una entrada para cada mensaje de
diagnstico producido para una instancia concreta de una sentencia explicada en la
tabla EXPLAIN_STATEMENT.

La funcin de tabla EXPLAIN_GET_MSGS consulta las tablas Explain


EXPLAIN_DIAGNOSTIC y EXPLAIN_DIAGNOSTIC_DATA y devuelve mensajes
con formato.
Tabla 182. Tabla EXPLAIN_DIAGNOSTIC. PK significa que la columna forma parte de una clave primaria; FK
significa que la columna forma parte de una clave fornea.
Posibili-
dad de
Nombre de columna Tipo de datos nulos? Clave? Descripcin
EXPLAIN_REQUESTER VARCHAR(128) No PK, FK ID de autorizacin del iniciador de esta peticin de
Explain.
EXPLAIN_TIME TIMESTAMP No PK, FK Hora de inicio de la peticin de Explain.
SOURCE_NAME VARCHAR(128) No PK, FK Nombre del paquete que se ejecutaba cuando se ha
explicado la sentencia dinmica o nombre del archivo
fuente cuando se ha explicado la sentencia de SQL
esttico.
SOURCE_SCHEMA VARCHAR(128) No PK, FK Esquema, o calificador, de la fuente de la peticin de
Explain.
SOURCE_VERSION VARCHAR(64) No PK, FK Versin de la fuente de la peticin de Explain.
EXPLAIN_LEVEL CHAR(1) No PK, FK Nivel de informacin de Explain para el que esta fila es
aplicable. Los valores vlidos son:
O Texto original (introducido por el usuario)
P PLAN SELECTION
STMTNO INTEGER No PK, FK El nmero de sentencia en el paquete con el que est
relacionado esta informacin de Explain. Establecido en
1 para las sentencias de SQL dinmico de Explain. En el
caso de sentencias de SQL esttico, este valor es el
mismo que el utilizado para la vista de catlogo del
sistema SYSCAT.STATEMENTS.
SECTNO INTEGER No PK, FK El nmero de seccin en el paquete que contiene esta
sentencia de SQL. En el caso de sentencias de SQL
dinmico de Explain, ste es el nmero de seccin
utilizado para mantener la seccin de esta sentencia en
tiempo de ejecucin. En el caso de sentencias de SQL
esttico, este valor es el mismo que el utilizado para la
vista de catlogo del sistema SYSCAT.STATEMENTS.
DIAGNOSTIC_ID INTEGER No PK ID del diagnstico para una instancia concreta de una
sentencia en la tabla EXPLAIN_STATEMENT.
CODE INTEGER No No Nmero exclusivo asignado a cada mensaje de
diagnstico. Una API de mensajes puede utilizar el
nmero para recuperar el texto completo del mensaje de
diagnstico.

Informacin relacionada:
v Tabla EXPLAIN_DIAGNOSTIC_DATA en la pgina 842
v Funcin de tabla EXPLAIN_GET_MSGS en Vistas y rutinas de administracin de
SQL
v Tabla EXPLAIN_STATEMENT en la pgina 855
v SYSCAT.STATEMENTS en la pgina 728

Apndice I. Tablas de Explain 841


EXPLAIN_DIAGNOSTIC_DATA, tabla

Tabla EXPLAIN_DIAGNOSTIC_DATA
La tabla EXPLAIN_DIAGNOSTIC_DATA contiene smbolos para mensajes de
diagnstico determinados que se registran en la tabla EXPLAIN_DIAGNOSTIC.
Los smbolos de mensajes ofrecen informacin adicional especfica para la
ejecucin de la sentencia SQL que ha generado el mensaje.

La funcin de tabla EXPLAIN_GET_MSGS consulta las tablas Explain


EXPLAIN_DIAGNOSTIC y EXPLAIN_DIAGNOSTIC_DATA, y devuelve los
mensajes con formato.
Tabla 183. Tabla EXPLAIN_DIAGNOSTIC_DATA. PK significa que la columna forma parte de una clave primaria; FK
significa que la columna forma parte de una clave fornea.
Posibili-
dad de
Nombre de columna Tipo de datos nulos? Clave? Descripcin
EXPLAIN_REQUESTER VARCHAR(128) No FK ID de autorizacin del iniciador de esta peticin de
Explain.
EXPLAIN_TIME TIMESTAMP No FK Hora de inicio de la peticin de Explain.
SOURCE_NAME VARCHAR(128) No FK Nombre del paquete que se ejecutaba cuando se ha
explicado la sentencia dinmica o nombre del archivo
fuente cuando se ha explicado la sentencia de SQL
esttico.
SOURCE_SCHEMA VARCHAR(128) No FK Esquema, o calificador, de la fuente de la peticin de
Explain.
SOURCE_VERSION VARCHAR(64) No FK Versin de la fuente de la peticin de Explain.
EXPLAIN_LEVEL CHAR(1) No FK Nivel de informacin de Explain para el que esta fila es
aplicable. Los valores vlidos son:
O Texto original (introducido por el usuario)
P PLAN SELECTION
STMTNO INTEGER No FK El nmero de sentencia en el paquete con el que est
relacionado esta informacin de Explain. Establecido en
1 para las sentencias de SQL dinmico de Explain. En el
caso de sentencias de SQL esttico, este valor es el
mismo que el utilizado para la vista de catlogo del
sistema SYSCAT.STATEMENTS.
SECTNO INTEGER No FK El nmero de seccin en el paquete que contiene esta
sentencia de SQL. En el caso de sentencias de SQL
dinmico de Explain, ste es el nmero de seccin
utilizado para mantener la seccin de esta sentencia en
tiempo de ejecucin. En el caso de sentencias de SQL
esttico, este valor es el mismo que el utilizado para la
vista de catlogo del sistema SYSCAT.STATEMENTS.
DIAGNOSTIC_ID INTEGER No PK ID del diagnstico para una instancia concreta de una
sentencia en la tabla EXPLAIN_STATEMENT.
ORDINAL INTEGER No No Posicin del smbolo en el texto de mensaje completo.
TOKEN VARCHAR(1000) S No Smbolo de mensaje que insertar en el texto de mensaje
completo; es posible que est truncado.
TOKEN_LONG BLOB(3M) S No Ms informacin detallada, si est disponible.

Informacin relacionada:
v Tabla EXPLAIN_DIAGNOSTIC en la pgina 841
v Funcin de tabla EXPLAIN_GET_MSGS en Vistas y rutinas de administracin de
SQL
v Tabla EXPLAIN_STATEMENT en la pgina 855

842 Consulta de SQL - Volumen 1


EXPLAIN_DIAGNOSTIC_DATA, tabla

v SYSCAT.STATEMENTS en la pgina 728

Apndice I. Tablas de Explain 843


EXPLAIN_INSTANCE, tabla

Tabla EXPLAIN_INSTANCE
La tabla EXPLAIN_INSTANCE es la tabla principal de control para toda la
informacin de Explain. Cada fila de datos de las tablas de Explain se enlaza
explcitamente con una fila exclusiva de esta tabla. La tabla EXPLAIN_INSTANCE
proporciona la informacin bsica acerca de la fuente de las sentencias de SQL que
se estn explicando, as como la informacin acerca del entorno en el que ha tenido
lugar la explicacin.
Tabla 184. Tabla EXPLAIN_INSTANCE. PK significa que la columna forma parte de una clave primaria; FK significa
que la columna forma parte de una clave fornea.
Posibili-
dad de
Nombre de columna Tipo de datos nulos? Clave? Descripcin
EXPLAIN_REQUESTER VARCHAR(128) No PK ID de autorizacin del iniciador de esta peticin de
Explain.
EXPLAIN_TIME TIMESTAMP No PK Hora de inicio de la peticin de Explain.
SOURCE_NAME VARCHAR(128) No PK Nombre del paquete que se ejecutaba cuando se ha
explicado la sentencia dinmica o nombre del archivo
fuente cuando se ha explicado la sentencia de SQL
esttico.
SOURCE_SCHEMA VARCHAR(128) No PK Esquema, o calificador, de la fuente de la peticin de
Explain.
SOURCE_VERSION VARCHAR(64) No PK Versin de la fuente de la peticin de Explain.
EXPLAIN_OPTION CHAR(1) No No Indica que se ha pedido la informacin de Explain para
esta peticin.

Los valores posibles son:


P PLAN SELECTION
SNAPSHOT_TAKEN CHAR(1) No No Indica si se ha tomado una instantnea de Explain para
esta peticin.

Los valores posibles son:


Y S, se ha(n) tomado una(s) instantnea(s) de
Explain y se ha(n) almacenado en la tabla
EXPLAIN_STATEMENT. Tambin se ha
capturado informacin de Explain normal.
N No se ha tomado ninguna instantnea de
Explain. Se ha capturado informacin de
Explain normal.
O Slo se ha tomado una instantnea de Explain.
No se ha capturado informacin de Explain
normal.
DB2_VERSION CHAR(7) No No Nmero de release del producto DB2 que proces esta
peticin de explicacin. El formato es vv.rr.m, donde:
vv Nmero de versin
rr Nmero de release
m Nmero de release de
mantenimiento
SQL_TYPE CHAR(1) No No Indica si la instancia de Explain era para SQL dinmico
o esttico.

Los valores posibles son:


S SQL esttico
D SQL dinmico

844 Consulta de SQL - Volumen 1


EXPLAIN_INSTANCE, tabla

Tabla 184. Tabla EXPLAIN_INSTANCE (continuacin). PK significa que la columna forma parte de una clave
primaria; FK significa que la columna forma parte de una clave fornea.
Posibili-
dad de
Nombre de columna Tipo de datos nulos? Clave? Descripcin
QUERYOPT INTEGER No No Indica la clase de optimizacin de consulta que ha
utilizado el Compilador SQL en el momento de la
invocacin de Explicar. El valor indica qu nivel de
optimizacin de consulta ha efectuado el Compilador
SQL para las sentencias de SQL que se explican.
BLOCK CHAR(1) No No Indica qu tipo de bloqueo de cursor se ha utilizado al
compilar las sentencias de SQL. Para obtener
informacin, consulte la columna BLOCK de
SYSCAT.PACKAGES.

Los valores posibles son:


N Sin bloqueo
U Bloqueo de cursores no ambiguos
B Bloqueo de todos los cursores
ISOLATION CHAR(2) No No Indica qu tipo de aislamiento se ha utilizado al
compilar las sentencias de SQL. Para obtener ms
informacin, consulte la columna ISOLATION en
SYSCAT.PACKAGES.

Los valores posibles son:


RR Lectura repetible
RS Estabilidad de lectura
CS Estabilidad del cursor

UR Lectura no confirmada
BUFFPAGE INTEGER No No Contiene el valor de configuracin de base de datos
BUFFPAGE en el momento de la invocacin de Explicar.
AVG_APPLS INTEGER No No Contiene el valor del parmetro de configuracin
AVG_APPLS en el momento de la invocacin de
Explicar.
SORTHEAP INTEGER No No Contiene el valor de configuracin de la base de datos
SORTHEAP en el momento de la invocacin de
Explicar.
LOCKLIST INTEGER No No Contiene el valor de configuracin de la base de datos
LOCKLIST en el momento de la invocacin de Explicar.
MAXLOCKS SMALLINT No No Contiene el valor de configuracin de la base de datos
MAXLOCKS en el momento de la invocacin de
Explicar.
LOCKS_AVAIL INTEGER No No Contiene el nmero de bloqueos que el optimizador
supone que estn disponibles para cada usuario.
(Derivado de LOCKLIST y MAXLOCKS.)
CPU_SPEED DOUBLE No No Contiene el valor de configuracin de la base de datos
CPUSPEED en el momento de la invocacin de Explicar.
REMARKS VARCHAR(254) S No Comentario suministrado por el usuario.
DBHEAP INTEGER No No Contiene el valor de configuracin de la base de datos
DBHEAP en el momento de la invocacin de Explicar.
COMM_SPEED DOUBLE No No Contiene el valor de configuracin de la base de datos
COMM_BANDWIDTH en el momento de la invocacin
de Explicar.

Apndice I. Tablas de Explain 845


EXPLAIN_INSTANCE, tabla

Tabla 184. Tabla EXPLAIN_INSTANCE (continuacin). PK significa que la columna forma parte de una clave
primaria; FK significa que la columna forma parte de una clave fornea.
Posibili-
dad de
Nombre de columna Tipo de datos nulos? Clave? Descripcin
PARALLELISM CHAR(2) No No Los valores posibles son:
v N = Sin paralelismo
v P = Paralelismo intraparticin
v IP = Paralelismo interparticiones
v BP = Paralelismo intraparticin y paralelismo
interparticiones
DATAJOINER CHAR(1) No No Los valores posibles son:
v N = Plan de sistemas no federados
v Y = Plan de sistemas federados

846 Consulta de SQL - Volumen 1


EXPLAIN_OBJECT, tabla

Tabla EXPLAIN_OBJECT
La tabla EXPLAIN_OBJECT identifica los objetos de datos que necesita el plan de
acceso generado para satisfacer la sentencia de SQL.
Tabla 185. Tabla EXPLAIN_OBJECT. PK significa que la columna forma parte de una clave primaria; FK significa que
la columna forma parte de una clave fornea.
Posibili-
dad de
Nombre de columna Tipo de datos nulos? Clave? Descripcin
EXPLAIN_REQUESTER VARCHAR(128) No FK ID de autorizacin del iniciador de esta peticin de
Explain.
EXPLAIN_TIME TIMESTAMP No FK Hora de inicio de la peticin de Explain.
SOURCE_NAME VARCHAR(128) No FK Nombre del paquete que se ejecutaba cuando se ha
explicado la sentencia dinmica o nombre del archivo
fuente cuando se ha explicado la sentencia de SQL
esttico.
SOURCE_SCHEMA VARCHAR(128) No FK Esquema, o calificador, de la fuente de la peticin de
Explain.
SOURCE_VERSION VARCHAR(64) No FK Versin de la fuente de la peticin de Explain.
EXPLAIN_LEVEL CHAR(1) No FK Nivel de informacin de Explain para el que esta fila es
aplicable.
STMTNO INTEGER No FK El nmero de sentencia en el paquete con el que est
relacionado esta informacin de Explain.
SECTNO INTEGER No FK El nmero de seccin en el paquete con el que est
relacionada esta informacin de Explain.
OBJECT_SCHEMA VARCHAR(128) No No Esquema al que pertenece este objeto.
OBJECT_NAME VARCHAR(128) No No Nombre del objeto.
OBJECT_TYPE CHAR(2) No No Etiqueta descriptiva del tipo de objeto.
CREATE_TIME TIMESTAMP S No Hora de creacin del objeto; nulo si es una funcin de
tabla.
STATISTICS_TIME TIMESTAMP S No ltima vez que se actualizaron las estadsticas para este
objeto; nulo si no existen estadsticas para este objeto.
COLUMN_COUNT SMALLINT No No El nmero de columnas en este objeto.
ROW_COUNT INTEGER No No El nmero estimado de filas en este objeto.
WIDTH INTEGER No No La anchura media del objeto en bytes. Se establece en -1
para un ndice.
PAGES BIGINT No No El nmero estimado de pginas que ocupa el objeto en
la agrupacin de almacenamientos intermedios.
Establecido en -1 para una funcin de tabla.
DISTINCT CHAR(1) No No Indica si las filas del objeto son diferenciadas (es decir, si
hay duplicados)

Los valores posibles son:


Y S
N No
TABLESPACE_NAME VARCHAR(128) S No Nombre del espacio de tablas en el que est almacenado
el objeto; se establece en nulo si no est implicado
ningn espacio de tablas.
OVERHEAD DOUBLE No No Actividad general total estimada, en milisegundos, para
una sola operacin de E/S aleatoria para un espacio de
tablas especificado. Incluye la actividad general del
controlador, la bsqueda de disco y los tiempos de
latencia. Se establece en -1 si no est implicado ningn
espacio de tablas.

Apndice I. Tablas de Explain 847


EXPLAIN_OBJECT, tabla

Tabla 185. Tabla EXPLAIN_OBJECT (continuacin). PK significa que la columna forma parte de una clave primaria;
FK significa que la columna forma parte de una clave fornea.
Posibili-
dad de
Nombre de columna Tipo de datos nulos? Clave? Descripcin
TRANSFER_RATE DOUBLE No No Tiempo estimado para leer una pgina de datos, en
milisegundos, del espacio de tablas especificado. Se
establece en -1 si no est implicado ningn espacio de
tablas.
PREFETCHSIZE INTEGER No No El nmero de pginas de datos que se han de leer
cuando se efecta una lectura anticipada. Establecido en
-1 para una funcin de tabla.
EXTENTSIZE INTEGER No No El tamao de extensin, en pginas de datos. Este
volumen de pginas se escribe en un contenedor
individual del espacio de tablas antes de cambiar al
contenedor siguiente. Establecido en -1 para una funcin
de tabla.
CLUSTER DOUBLE No No Nivel de clster de los datos con el ndice. Si >= 1, es el
CLUSTERRATIO. Si >= 0 y < 1, es el CLUSTERFACTOR.
Se establece en -1 para una tabla, una funcin de tabla o
si no est disponible esta estadstica.
NLEAF BIGINT No No El nmero de pginas que ocupan los valores de estos
objetos de ndice. Se establece en -1 para una tabla, una
funcin de tabla o si no est disponible esta estadstica.
NLEVELS INTEGER No No El nmero de niveles de ndice del rbol de este objeto
de ndice. Se establece en -1 para una tabla, una funcin
de tabla o si no est disponible esta estadstica.
FULLKEYCARD BIGINT No No El nmero de valores de clave completa diferenciada
contenidos en este objeto de ndice. Se establece en -1
para una tabla, una funcin de tabla o si no est
disponible esta estadstica.
OVERFLOW BIGINT No No El nmero total de registros de desbordamiento en la
tabla. Se establece en -1 para un ndice, una funcin de
tabla o si no est disponible esta estadstica.
FIRSTKEYCARD BIGINT No No El nmero de valores de primera clave diferenciada. Se
establece en 1 para una tabla, una funcin de tabla o si
no est disponible esta estadstica.
FIRST2KEYCARD BIGINT No No El nmero de valores de primera clave diferenciada
utilizando las primeras columnas {2,3,4} del ndice. Se
FIRST3KEYCARD BIGINT No No
establece en 1 para una tabla, una funcin de tabla o si
FIRST4KEYCARD BIGINT No No no est disponible esta estadstica.
SEQUENTIAL_PAGES BIGINT No No El nmero de pginas ubicadas en disco por orden de
clave de ndice con pocos o ningn vaco entre ellas. Se
establece en 1 para una tabla, una funcin de tabla o si
no est disponible esta estadstica.
DENSITY INTEGER No No Proporcin de SEQUENTIAL_PAGES en relacin al
nmero de pginas del rango de pginas ocupado por el
ndice, expresada como porcentaje (entero entre 0 y 100).
Se establece en 1 para una tabla, una funcin de tabla o
si no est disponible esta estadstica.
STATS_SRC CHAR(1) No No Indica la fuente para las estadsticas. Se establece en 1 si
se trata de un solo nodo.
AVERAGE_SEQUENCE_ DOUBLE No No Espacio entre secuencias.
GAP
AVERAGE_SEQUENCE_ DOUBLE No No Espacio entre las secuencias al captar utilizando el
FETCH_GAP ndice.
AVERAGE_SEQUENCE_ DOUBLE No No Promedio de pginas del ndice accesibles en secuencia.
PAGES
AVERAGE_SEQUENCE_ DOUBLE No No Promedio de pginas de la tabla accesibles en secuencia
FETCH_PAGES al captar utilizando el ndice.

848 Consulta de SQL - Volumen 1


EXPLAIN_OBJECT, tabla

Tabla 185. Tabla EXPLAIN_OBJECT (continuacin). PK significa que la columna forma parte de una clave primaria;
FK significa que la columna forma parte de una clave fornea.
Posibili-
dad de
Nombre de columna Tipo de datos nulos? Clave? Descripcin
AVERAGE_RANDOM_ DOUBLE No No Promedio de pginas del ndice aleatorias entre los
PAGES accesos a pginas secuenciales.
AVERAGE_RANDOM_ DOUBLE No No Promedio de pginas de la tabla aleatorias entre los
FETCH_PAGES accesos a pginas secuenciales al captar utilizando el
ndice.
NUMRIDS BIGINT No No Nmero total de identificadores de filas del ndice.
NUMRIDS_DELETED BIGINT No No Nmero total de identificadores de filas
pseudosuprimidos del ndice.
NUM_EMPTY_LEAFS BIGINT No No Nmero total de pginas hojas vacas del ndice.
ACTIVE_BLOCKS BIGINT No No Nmero total de bloques de clster multidimensional
(MDC) activos de la tabla.
NUM_DATA_PART INTEGER No No Nmero de particiones de datos para una tabla
particionada. Se establece en 1 si la tabla no est
particionada.

Tabla 186. Valores de OBJECT_TYPE posibles


Valor Descripcin
IX ndice
NK Apodo
RX ndice RCT
DP_TABLE Tabla de particin de datos
TA Tabla
TF Funcin de tabla
+A Alias de referencia del compilador
+C Restriccin de referencia del compilador
+F Funcin de referencia del compilador
+G Activador de referencia del compilador
+N Apodo de referencia del compilador
+T Tabla de referencia del compilador
+V Vista de referencia del compilador

Apndice I. Tablas de Explain 849


EXPLAIN_OPERATOR, tabla

Tabla EXPLAIN_OPERATOR
La tabla EXPLAIN_OPERATOR contiene todos los operadores necesarios para que
el compilador de consultas satisfaga la sentencia de consulta.
Tabla 187. Tabla EXPLAIN_OPERATOR. PK significa que la columna forma parte de una clave primaria; FK significa
que la columna forma parte de una clave fornea.
Posibili-
dad de
Nombre de columna Tipo de datos nulos? Clave? Descripcin
EXPLAIN_REQUESTER VARCHAR(128) No FK ID de autorizacin del iniciador de esta peticin de
Explain.
EXPLAIN_TIME TIMESTAMP No FK Hora de inicio de la peticin de Explain.
SOURCE_NAME VARCHAR(128) No FK Nombre del paquete que se ejecutaba cuando se ha
explicado la sentencia dinmica o nombre del archivo
fuente cuando se ha explicado la sentencia de SQL
esttico.
SOURCE_SCHEMA VARCHAR(128) No FK Esquema, o calificador, de la fuente de la peticin de
Explain.
SOURCE_VERSION VARCHAR(64) No FK Versin de la fuente de la peticin de Explain.
EXPLAIN_LEVEL CHAR(1) No FK Nivel de informacin de Explain para el que esta fila es
aplicable.
STMTNO INTEGER No FK El nmero de sentencia en el paquete con el que est
relacionado esta informacin de Explain.
SECTNO INTEGER No FK El nmero de seccin en el paquete con el que est
relacionada esta informacin de Explain.
OPERATOR_ID INTEGER No No ID exclusivo para este operador en esta consulta.
OPERATOR_TYPE CHAR(6) No No Etiqueta descriptiva para el tipo de operador.
TOTAL_COST DOUBLE No No Coste total acumulado estimado (en timerons) de la
ejecucin del plan de acceso elegido hasta este operador
inclusive.
IO_COST DOUBLE No No Coste de E/S acumulado estimado (en E/S de pginas
de datos) de la ejecucin del plan de acceso elegido
hasta este operador (inclusive).
CPU_COST DOUBLE No No Coste de CPU acumulado estimado (en las instrucciones)
de la ejecucin del plan de acceso elegido hasta este
operador (inclusive).
FIRST_ROW_COST DOUBLE No No Coste acumulado estimado (en timerons) de la lectura
de la primera fila para el plan de acceso hasta este
operador inclusive. Este valor incluye cualquier
actividad general inicial necesaria.
RE_TOTAL_COST DOUBLE No No Coste acumulado estimado (en timerons) de la lectura
de la siguiente fila para el plan de acceso elegido hasta
este operador inclusive.
RE_IO_COST DOUBLE No No Coste de E/S acumulado estimado (en E/S de pginas
de datos) de la lectura de la siguiente fila del plan de
acceso elegido hasta este operador inclusive.
RE_CPU_COST DOUBLE No No Coste de CPU acumulado estimado (en instrucciones) de
la lectura de la siguiente fila para el plan de acceso
elegido hasta este operador inclusive.
COMM_COST DOUBLE No No Coste de comunicacin acumulado estimado (en tramas
TCP/IP) de la ejecucin del plan de acceso elegido hasta
este operador (inclusive).
FIRST_COMM_COST DOUBLE No No Coste de comunicaciones acumulado estimado (en
TCP/IP) de la lectura de la primera fila para el plan de
acceso elegido hasta este operador inclusive. Este valor
incluye cualquier actividad general inicial necesaria.

850 Consulta de SQL - Volumen 1


EXPLAIN_OPERATOR, tabla

Tabla 187. Tabla EXPLAIN_OPERATOR (continuacin). PK significa que la columna forma parte de una clave
primaria; FK significa que la columna forma parte de una clave fornea.
Posibili-
dad de
Nombre de columna Tipo de datos nulos? Clave? Descripcin
BUFFERS DOUBLE No No Requisitos estimados de almacenamiento intermedio
para este operador y sus entradas.
REMOTE_TOTAL_COST DOUBLE No No Coste total acumulado estimado (en timerons) de la
ejecucin de operacin(es) en base(s) de datos remota(s).
REMOTE_COMM_COST DOUBLE No No Coste de comunicacin acumulado estimado de la
ejecucin del plan de acceso remoto elegido hasta este
operador (inclusive).

Tabla 188. Valores de OPERATOR_TYPE


Valor Descripcin
DELETE Suprimir
EISCAN Exploracin de ndice ampliada
FETCH Leer
FILTER Filtrar filas
GENROW Generar fila
GRPBY Agrupar por
HSJOIN Unin de generacin aleatoria
INSERT Insertar
IXAND Aplicacin de AND de ndice de mapas de bits dinmico
IXSCAN Exploracin del ndice relacional
MSJOIN Fusionar unin de exploracin
NLJOIN Unin de bucle anidado
RETURN Resultado
RIDSCN Exploracin de identificador de fila (RID)
SHIP Enviar consulta a sistema remoto
SORT Clasificar
TBSCAN Exploracin de tabla
TEMP Construccin de tabla temporal
TQ Cola de tabla
UNION Unin
UNIQUE Eliminacin de duplicados
UPDATE Actualizar
XISCAN Exploracin del ndice sobre datos XML
XSCAN Exploracin mediante navegacin de documento XML
XANDOR Aadir AND u OR al ndice sobre datos XML
XITERATE Iterador de secuencias XML
XUNNEST Eliminar anidamiento de secuencias XML

Apndice I. Tablas de Explain 851


EXPLAIN_PREDICATE tabla

Tabla EXPLAIN_PREDICATE
La tabla EXPLAIN_PREDICATE identifica los predicados que aplica un operador
especfico.
Tabla 189. Tabla EXPLAIN_PREDICATE. PK significa que la columna forma parte de una clave primaria; FK significa
que la columna forma parte de una clave fornea.
Posibili-
dad de
Nombre de columna Tipo de datos nulos? Clave? Descripcin
EXPLAIN_REQUESTER VARCHAR(128) No FK ID de autorizacin del iniciador de esta peticin de
Explain.
EXPLAIN_TIME TIMESTAMP No FK Hora de inicio de la peticin de Explain.
SOURCE_NAME VARCHAR(128) No FK Nombre del paquete que se ejecutaba cuando se ha
explicado la sentencia dinmica o nombre del archivo
fuente cuando se ha explicado la sentencia de SQL
esttico.
SOURCE_SCHEMA VARCHAR(128) No FK Esquema, o calificador, de la fuente de la peticin de
Explain.
SOURCE_VERSION VARCHAR(64) No FK Versin de la fuente de la peticin de Explain.
EXPLAIN_LEVEL CHAR(1) No FK Nivel de informacin de Explain para el que esta fila es
aplicable.
STMTNO INTEGER No FK El nmero de sentencia en el paquete con el que est
relacionado esta informacin de Explain.
SECTNO INTEGER No FK El nmero de seccin en el paquete con el que est
relacionada esta informacin de Explain.
OPERATOR_ID INTEGER No No ID exclusivo para este operador en esta consulta.
PREDICATE_ID INTEGER No No ID exclusivo de este predicado para el operador
especificado.

Se muestra el valor -1 en los predicados de operador


creados mediante la herramienta Explain que no son
objetos del optimizador y que no existen en el plan de
ste.
HOW_APPLIED CHAR(10) No No La forma en que el operador especificado utiliza el
predicado.
WHEN_EVALUATED CHAR(3) No No Indica cundo se evala la subconsulta utilizada en este
predicado.

Los posibles valores son:


en blanco
Este predicado no contiene ninguna
subconsulta.
EAA La subconsulta utilizada en este predicado se
evala en la aplicacin (EAA). Es decir, se
vuelve a evaluar para cada fila procesada por
el operador especificado, cuando se aplica el
predicado.
EAO La subconsulta utilizada en este predicado se
evala en la apertura (EAO). Es decir, se
vuelve a evaluar slo una vez para el
operador especificado y sus resultados se
vuelven a utilizar en la aplicacin del
predicado para cada fila.
MUL Hay ms de una subconsulta en este
predicado.

852 Consulta de SQL - Volumen 1


EXPLAIN_PREDICATE tabla

Tabla 189. Tabla EXPLAIN_PREDICATE (continuacin). PK significa que la columna forma parte de una clave
primaria; FK significa que la columna forma parte de una clave fornea.
Posibili-
dad de
Nombre de columna Tipo de datos nulos? Clave? Descripcin
RELOP_TYPE CHAR(2) No No El tipo de operador relacional utilizado en este
predicado.
SUBQUERY CHAR(1) No No Si es necesaria una corriente de datos de una
subconsulta o no para este predicado. Puede ser
necesarias mltiples corrientes de subconsultas.

Los posibles valores son:


N No es necesaria ninguna corriente de
subconsulta

Y Son necesarias una o varias corrientes de


subconsultas
FILTER_FACTOR DOUBLE No No La fraccin estimada de filas que este predicado
calificar.

Se muestra el valor -1 cuando no se puede aplicar


FILTER_FACTOR. FILTER_FACTOR no se puede aplicar
en los predicados de operador creados mediante la
herramienta Explain que no son objetos del optimizador
y no existen en el plan de ste.
PREDICATE_TEXT CLOB(2M) S No El texto del predicado tal como se ha vuelto a crear a
partir de la representacin interna de la sentencia de
SQL o XQuery. Si se utiliza el valor de una variable del
lenguaje principal, un registro especial o un marcador de
parmetros durante la compilacin de la sentencia, este
valor aparecer al final del texto del predicado, entre
parntesis.

Este valor slo se almacenar en la tabla


EXPLAIN_PREDICATE si la sentencia la ejecuta un
usuario que cuente con autorizacin DBADM o si la
variable de registro de DB2
DB2_VIEW_REOPT_VALUES est definida en YES; en
caso contrario, aparecern unos parntesis vacos al final
del texto del predicado.

Nulo si no est disponible.


RANGE_NUM INTEGER S No Rango de predicados de eliminacin de particiones de
datos, que permite la agrupacin segn el rango de los
predicados que se utilizan para la eliminacin de
particiones de datos. Valor nulo para todos los dems
tipos de predicado.

Tabla 190. Valores de HOW_APPLIED posibles


Valor Descripcin
BSARG Evaluado como un predicado comparable una vez para cada bloque
DPSTART Predicado de clave de inicio utilizado en la eliminacin de particiones de datos
DPSTOP Predicado de clave de parada utilizado en la eliminacin de particiones de datos
JOIN Utilizado para unir tablas
RESID Evaluado como un predicado residual
SARG Evaluado como un predicado comparable para un ndice o pgina de datos
START Utilizado como una condicin de inicio
STOP Utilizado como una condicin de detencin

Apndice I. Tablas de Explain 853


EXPLAIN_PREDICATE tabla

Tabla 191. Valores de RELOP_TYPE posibles


Valor Descripcin
blancos No aplicable
EQ Igual
GE Mayor o igual que
GT Mayor que
IN En lista
LE Menor o igual que
LK Igual
LT Menor que
NE Diferente a
NL Es nulo
NN No es nulo

854 Consulta de SQL - Volumen 1


EXPLAIN_STATEMENT, tabla

Tabla EXPLAIN_STATEMENT
La tabla EXPLAIN_STATEMENT contiene el texto de la sentencia de SQL tal como
existe para los diferentes niveles de informacin de Explain. La sentencia de SQL
original se almacena tal como la entra el usuario, en esta tabla junto con la versin
utilizada (por el optimizador) para elegir el plan de acceso para satisfacer la
sentencia de SQL. La ltima versin puede parecerse poco a la original ya que
puede haberse vuelto a escribir y/o mejorar con predicados adicionales tal como lo
determina el Compilador SQL.
Tabla 192. Tabla EXPLAIN_STATEMENT. PK significa que la columna forma parte de una clave primaria; FK significa
que la columna forma parte de una clave fornea.
Posibili-
dad de
Nombre de columna Tipo de datos nulos? Clave? Descripcin
EXPLAIN_REQUESTER VARCHAR(128) No PK, FK ID de autorizacin del iniciador de esta peticin de
Explain.
EXPLAIN_TIME TIMESTAMP No PK, FK Hora de inicio de la peticin de Explain.
SOURCE_NAME VARCHAR(128) No PK, FK Nombre del paquete que se ejecutaba cuando se ha
explicado la sentencia dinmica o nombre del archivo
fuente cuando se ha explicado la sentencia de SQL
esttico.
SOURCE_SCHEMA VARCHAR(128) No PK, FK Esquema, o calificador, de la fuente de la peticin de
Explain.
SOURCE_VERSION VARCHAR(64) No FK Versin de la fuente de la peticin de Explain.
EXPLAIN_LEVEL CHAR(1) No PK Nivel de informacin de Explain para el que esta fila es
aplicable.

Los valores vlidos son:


O Texto original (tal como lo ha entrado el
usuario)
P PLAN SELECTION
STMTNO INTEGER No PK El nmero de sentencia en el paquete con el que est
relacionado esta informacin de Explain. Establecido en
1 para las sentencias de SQL dinmico de Explain. Para
las sentencias de SQL esttico, este valor es igual al
valor utilizado para la vista de catlogo
SYSCAT.STATEMENTS.
SECTNO INTEGER No PK El nmero de seccin en el paquete que contiene esta
sentencia de SQL. En las sentencias de SQL dinmico de
Explain, es el nmero de seccin utilizada para contener
la seccin para esta sentencia en tiempo de ejecucin.
Para las sentencias de SQL esttico, este valor es igual al
valor utilizado para la vista de catlogo
SYSCAT.STATEMENTS.
QUERYNO INTEGER No No Identificador numrico para la sentencia de SQL
explicada. Para sentencias de SQL dinmico (excluyendo
la sentencia EXPLAIN SQL) emitidas a travs de CLP o
CLI, el valor por omisin es un valor incrementado
secuencialmente. De lo contrario, el valor por omisin es
el valor de STMTNO para sentencias de SQL esttico y
1 para sentencias de SQL dinmico.
QUERYTAG CHAR(20) No No Distintivo identificador para cada sentencia de SQL
explicada. Para sentencias de SQL dinmico emitidas a
travs de CLP (excluyendo la sentencia EXPLAIN SQL),
el valor por omisin es 'CLP'. Para sentencias de SQL
dinmico emitidas a travs de CLI (excluyendo la
sentencia EXPLAIN SQL), el valor por omisin es 'CLI'.
De lo contrario, el valor por omisin utilizado es
blancos.

Apndice I. Tablas de Explain 855


EXPLAIN_STATEMENT, tabla

Tabla 192. Tabla EXPLAIN_STATEMENT (continuacin). PK significa que la columna forma parte de una clave
primaria; FK significa que la columna forma parte de una clave fornea.
Posibili-
dad de
Nombre de columna Tipo de datos nulos? Clave? Descripcin
STATEMENT_TYPE CHAR(2) No No Etiqueta descriptiva para el tipo de consulta que se est
explicando.

Los posibles valores son:


S Seleccin
D Suprimir
DC Supresin en la ubicacin actual del cursor
I Insertar
U Actualizar
UC Actualizacin en la ubicacin actual del cursor
UPDATABLE CHAR(1) No No Indica si esta sentencia se considera actualizable. Es
relevante en particular para las sentencias SELECT que
pueden determinarse como actualizables en potencia.

Los posibles valores son:


No aplicable (blanco)
N No
Y S
DELETABLE CHAR(1) No No Indica si esta sentencia se considera suprimible. Es
relevante en particular para las sentencias SELECT que
pueden determinarse como suprimibles en potencia.

Los posibles valores son:


No aplicable (blanco)
N No
Y S
TOTAL_COST DOUBLE No No Coste total estimado (en timerons) de la ejecucin del
plan de acceso elegido para esta sentencia; se establece
en 0 (cero) si EXPLAIN_LEVEL es O (texto original) ya
que no se ha elegido ningn plan de acceso en este
momento.
STATEMENT_TEXT CLOB(2M) No No Texto o fragmento del texto de la sentencia de SQL que
se est explicando. El texto que se muestra para el nivel
de Explain de Seleccin del plan se ha reconstruido a
partir de la representacin interna y es parecido a SQL
en su naturaleza; es decir, no se garantiza que la
sentencia reconstruida siga la sintaxis SQL correcta.
SNAPSHOT BLOB(10M) S No Instantnea de la representacin interna de esta
sentencia de SQL en el Nivel_Explain mostrado.

Esta columna est pensada para utilizarla con DB2


Visual Explain. La columna se establece en nulo si
EXPLAIN_LEVEL es 0 (sentencia original), pues no se
haba elegido ningn plan de acceso en el momento en
que se captur esta versin especfica de la sentencia.
QUERY_DEGREE INTEGER No No Indica el grado de paralelismo intraparticin en el
momento de la invocacin de Explicar. Para la sentencia
original, contiene el grado dirigido de paralelismo
intraparticin. Para PLAN SELECTION, contiene el
grado de paralelismo intraparticin generado para que
lo utilice el plan.

856 Consulta de SQL - Volumen 1


EXPLAIN_STREAM, tabla

Tabla EXPLAIN_STREAM
La tabla EXPLAIN_STREAM representa las corrientes de datos de entrada y de
salida entre operadores individuales y objetos de datos. Los objetos de datos en s
se representan en la tabla EXPLAIN_OBJECT. Los operadores implicados en una
corriente de datos se han de encontrar en una tabla EXPLAIN_OPERATOR.
Tabla 193. Tabla EXPLAIN_STREAM. PK significa que la columna forma parte de una clave primaria; FK significa
que la columna forma parte de una clave fornea.
Posibili-
dad de
Nombre de columna Tipo de datos nulos? Clave? Descripcin
EXPLAIN_REQUESTER VARCHAR(128) No FK ID de autorizacin del iniciador de esta peticin de
Explain.
EXPLAIN_TIME TIMESTAMP No FK Hora de inicio de la peticin de Explain.
SOURCE_NAME VARCHAR(128) No FK Nombre del paquete que se ejecutaba cuando se ha
explicado la sentencia dinmica o nombre del archivo
fuente cuando se ha explicado la sentencia de SQL
esttico.
SOURCE_SCHEMA VARCHAR(128) No FK Esquema, o calificador, de la fuente de la peticin de
Explain.
SOURCE_VERSION VARCHAR(64) No FK Versin de la fuente de la peticin de Explain.
EXPLAIN_LEVEL CHAR(1) No FK Nivel de informacin de Explain para el que esta fila es
aplicable.
STMTNO INTEGER No FK El nmero de sentencia en el paquete con el que est
relacionado esta informacin de Explain.
SECTNO INTEGER No FK El nmero de seccin en el paquete con el que est
relacionada esta informacin de Explain.
STREAM_ID INTEGER No No ID exclusivo para esta corriente de datos en el operador
especificado.
SOURCE_TYPE CHAR(1) No No Indica la fuente de la corriente de datos:
O Operador
D Objeto de datos
SOURCE_ID SMALLINT No No ID exclusivo para el operador dentro de esta consulta
que es la fuente de esta corriente de datos. Se establece
en -1 si SOURCE_TYPE es D.
TARGET_TYPE CHAR(1) No No Indica el destino de la corriente de datos:
O Operador
D Objeto de datos
TARGET_ID SMALLINT No No ID exclusivo para el operador dentro de esta consulta
que es el destino de esta corriente de datos. Se establece
en -1 si TARGET_TYPE es D.
OBJECT_SCHEMA VARCHAR(128) S No El esquema al que pertenece el objeto de datos afectado.
Se establece en nulo si SOURCE_TYPE y TARGET_TYPE
son O.
OBJECT_NAME VARCHAR(128) S No Nombre del objeto que es el sujeto de la corriente de
datos. Se establece en nulo si SOURCE_TYPE y
TARGET_TYPE son O.
STREAM_COUNT DOUBLE No No Cardinalidad estimada de la corriente de datos.
COLUMN_COUNT SMALLINT No No El nmero de columnas en la corriente de datos.
PREDICATE_ID INTEGER No No Si la corriente forma parte de una subconsulta para un
predicado, el ID del predicado se reflejar aqu, de lo
contrario la columna se establece en -1.

Apndice I. Tablas de Explain 857


EXPLAIN_STREAM, tabla

Tabla 193. Tabla EXPLAIN_STREAM (continuacin). PK significa que la columna forma parte de una clave primaria;
FK significa que la columna forma parte de una clave fornea.
Posibili-
dad de
Nombre de columna Tipo de datos nulos? Clave? Descripcin
COLUMN_NAMES CLOB(2M) S No Esta columna contiene los nombres y la informacin de
ordenacin de las columnas implicadas en esta corriente.

Estos nombres estarn en el formato de:


NOMBRE1(A)+NOMBRE2(D)+NOMBRE3+NOMBRE4

Donde (A) indica una columna por orden ascendente,


(D) indica una columna por orden descendente y
ninguna informacin de ordenacin indica que la
columna no est ordenada o que el orden no es
relevante.
PMID SMALLINT No No ID de correlacin de distribucin.
SINGLE_NODE CHAR(5) S No Indica si este flujo de datos est en una particin de
base de datos nica o en varias:
MULT En varias particiones de base de datos
COOR En nodo del coordinador
HASH Dirigido utilizando generacin aleatoria
RID Dirigido utilizando el ID de fila
FUNC Dirigido utilizando una funcin
(HASHEDVALUE() o DBPARTITIONNUM())
CORR Dirigido utilizando un valor de correlacin
Numberic
Dirigido hacia un nodo individual
predeterminado
PARTITION_COLUMNS CLOB(2M) S No Lista de las columnas en las que este flujo de datos se
distribuye.
SEQUENCE_SIZES CLOB(2M) S No Muestra el tamao de la secuencia que se esperaba para
las columnas XML o muestra NA (no aplicable) para
las columna que no sean XML del flujo de datos.

Establzcalo como nulo si al menos no hay una columna


XML en el flujo de datos.

858 Consulta de SQL - Volumen 1


tabla ADVISE_INDEX

Tabla ADVISE_INDEX
La tabla ADVISE_INDEX representa los ndices recomendados.
Tabla 194. Tabla ADVISE_INDEX. PK significa que la columna forma parte de una clave primaria; FK significa que la
columna forma parte de una clave fornea.
Posibili-
dad de
Nombre de columna Tipo de datos nulos? Clave? Descripcin
EXPLAIN_REQUESTER VARCHAR(128) No No ID de autorizacin del iniciador de esta peticin de
Explain.
EXPLAIN_TIME TIMESTAMP No No Hora de inicio de la peticin de Explain.
SOURCE_NAME VARCHAR(128) No No Nombre del paquete que se ejecutaba cuando se ha
explicado la sentencia dinmica o nombre del archivo
fuente cuando se ha explicado la sentencia de SQL
esttico.
SOURCE_SCHEMA VARCHAR(128) No No Esquema, o calificador, de la fuente de la peticin de
Explain.
SOURCE_VERSION VARCHAR(64) No No Versin de la fuente de la peticin de Explain.
EXPLAIN_LEVEL CHAR(1) No No Nivel de informacin de Explain para el que esta fila es
aplicable.
STMTNO INTEGER No No El nmero de sentencia en el paquete con el que est
relacionado esta informacin de Explain.
SECTNO INTEGER No No El nmero de seccin en el paquete con el que est
relacionada esta informacin de Explain.
QUERYNO INTEGER No No Identificador numrico para la sentencia de SQL
explicada. Para sentencias de SQL dinmico (excluyendo
la sentencia EXPLAIN SQL) emitidas a travs de CLP o
CLI, el valor por omisin es un valor incrementado
secuencialmente. De lo contrario, el valor por omisin es
el valor de STMTNO para sentencias de SQL esttico y 1
para sentencias de SQL dinmico.
QUERYTAG CHAR(20) No No Distintivo identificador para cada sentencia de SQL
explicada. Para sentencias de SQL dinmico emitidas a
travs de CLP (excluyendo la sentencia EXPLAIN SQL),
el valor por omisin es 'CLP'. Para sentencias de SQL
dinmico emitidas a travs de CLI (excluyendo la
sentencia EXPLAIN SQL), el valor por omisin es 'CLI'.
De lo contrario, el valor por omisin utilizado es
blancos.
NAME VARCHAR(128) No No Nombre del ndice.
CREATOR VARCHAR(128) No No Calificador del nombre de ndice.
TBNAME VARCHAR(128) No No Nombre de la tabla o apodo en el que se define el
ndice.
TBCREATOR VARCHAR(128) No No Calificador del nombre de tabla.
COLNAMES CLOB(2M) No No Lista de nombres de columnas.
UNIQUERULE CHAR(1) No No Regla de unicidad:
D = Los duplicados estn permitidos
P = ndice primario
U = Slo se permiten entradas exclusivas
COLCOUNT SMALLINT No No El nmero de columnas de la clave ms el nmero de
columnas INCLUDE si hay alguna.
IID SMALLINT No No ID interno de ndice.
NLEAF BIGINT No No El nmero de pginas; 1 si no se renen estadsticas.
NLEVELS SMALLINT No No Nmero de niveles de ndices; 1 si no se renen
estadsticas.

Apndice I. Tablas de Explain 859


tabla ADVISE_INDEX

Tabla 194. Tabla ADVISE_INDEX (continuacin). PK significa que la columna forma parte de una clave primaria; FK
significa que la columna forma parte de una clave fornea.
Posibili-
dad de
Nombre de columna Tipo de datos nulos? Clave? Descripcin
FIRSTKEYCARD BIGINT No No El nmero de valores de primera clave diferenciada; 1
si no se renen estadsticas.
FULLKEYCARD BIGINT No No El nmero de valores de clave completa diferenciada; 1
si no se renen estadsticas.
CLUSTERRATIO SMALLINT No No Nivel de clster de los datos con el ndice; -1 si no se
renen estadsticas o si se renen estadsticas de ndice
detalladas (en este caso, se utilizar CLUSTERFACTOR
en su lugar).
AVGPARTITION_ SMALLINT No No Nivel de clster de los datos dentro de una sola
CLUSTERRATIO particin de datos. -1 si la tabla no est particionada en
tablas, si no se recopilan estadsticas o si se recopilan
estadsticas detalladas (en cuyo caso se utiliza
AVGPARTITION_ CLUSTERFACTOR en su lugar).
AVGPARTITION_ DOUBLE No No Mejor medicin del nivel de clster dentro de una sola
CLUSTERFACTOR particin de datos. -1 si la tabla no est particionada en
tablas, si no se recopilan estadsticas o si el ndice est
definido sobre un apodo.
AVGPARTITION_PAGE_ VARCHAR(520) No No Una lista de pares de enteros en formato de caracteres.
FETCH_PAIRS Cada par representa un tamao potencial de la
agrupacin de almacenamientos intermedios en las
captaciones de pginas correspondientes necesarias para
acceder a una sola particin de datos desde la tabla.
Serie de longitud cero si no hay datos disponibles o si la
tabla no est particionada en tablas.
DATAPARTITION_ DOUBLE No No Una medicin estadstica del clster de claves de
CLUSTERFACTOR ndices con respecto a particiones de datos. Este campo
tiene un nmero entre cero y uno, done uno representa
la agrupacin en clster perfecta y cero representa que
no existe.
CLUSTERFACTOR DOUBLE No No Mejor medicin del nivel de clster o 1 si no se han
reunido estadsticas de ndice detalladas o si el ndice
est definido en un apodo.
USERDEFINED SMALLINT No No Definido por el usuario.
SYSTEM_REQUIRED SMALLINT No No 1 si se cumple una de las condiciones siguientes:
Este ndice es necesario para una restriccin de
clave primaria o exclusiva o bien este ndice es un
ndice de bloques de dimensin o un ndice de
bloques compuestos para una tabla con clsteres
de varias dimensiones (MDC).
Se trata de un ndice en la columna OID de una
tabla con tipo.
2 si se cumplen estas dos condiciones:
Este ndice es necesario para una restriccin de
clave primaria o exclusiva o bien este ndice es un
ndice de bloques de dimensin o un ndice de
bloques compuestos para una tabla MDC.
Se trata de un ndice en la columna OID de una
tabla con tipo.
De lo contrario, 0.
CREATE_TIME TIMESTAMP No No Hora en que se ha creado el ndice.
STATS_TIME TIMESTAMP S No ltima vez que se ha realizado un cambio en las
estadsticas registradas para este ndice. Nulo si no hay
estadsticas disponibles.

860 Consulta de SQL - Volumen 1


tabla ADVISE_INDEX

Tabla 194. Tabla ADVISE_INDEX (continuacin). PK significa que la columna forma parte de una clave primaria; FK
significa que la columna forma parte de una clave fornea.
Posibili-
dad de
Nombre de columna Tipo de datos nulos? Clave? Descripcin
PAGE_FETCH_PAIRS VARCHAR(520) No No Una lista de pares de enteros, representada en la forma
de caracteres. Cada par representa el nmero de pginas
de un almacenamiento intermedio hipottico y el
nmero de lecturas de pginas necesario para explorar
la tabla con este ndice utilizando dicho almacenamiento
intermedio hipottico. (Serie de longitud cero si no hay
datos disponibles.)
REMARKS VARCHAR(254) S No Comentario suministrado por el usuario o nulo.
DEFINER VARCHAR(128) No No Usuario que ha creado el ndice.
CONVERTED CHAR(1) No No Reservado para su utilizacin en el futuro.
SEQUENTIAL_PAGES BIGINT No No El nmero de pginas ubicadas en disco por orden de
clave de ndice con pocos o ningn vaco entre ellas. (1
si no hay estadsticas disponibles.)
DENSITY INTEGER No No Proporcin de SEQUENTIAL_PAGES para numerar las
pginas del rango de pginas ocupadas por el ndice,
expresada como un porcentaje (entero entre 0 y 100, 1
si no hay estadsticas disponibles.)
FIRST2KEYCARD BIGINT No No El nmero de claves diferenciadas que utilizan las dos
primeras columnas del ndice (1 si no hay estadsticas
o no son aplicables)
FIRST3KEYCARD BIGINT No No El nmero de claves diferenciadas que utilizan las tres
primeras columnas del ndice (1 si no hay estadsticas
o si no son aplicables)
FIRST4KEYCARD BIGINT No No El nmero de claves diferenciadas que utilizan las cuatro
primeras columnas del ndice (1 si no hay estadsticas
o no son aplicables)
PCTFREE SMALLINT No No Porcentaje de cada pgina de hoja de ndice que se va a
reservar durante la creacin inicial del ndice. Este
espacio est disponible para inserciones futuras despus
de la creacin del ndice.
UNIQUE_COLCOUNT SMALLINT No No El nmero de columnas necesarias para una clave de
unicidad. Siempre <=COLCOUNT. < COLCOUNT
solamente si hay columnas INCLUDE. 1 si el ndice no
tiene clave de unicidad (permite duplicados)
MINPCTUSED SMALLINT No No Si no es cero, se habilita la desfragmentacin del ndice
en lnea y el valor es el umbral del espacio mnimo
utilizado antes de fusionar las pginas.
REVERSE_SCANS CHAR(1) No No Y = El ndice soporta exploraciones invertidas
N = El ndice no soporta exploraciones invertidas
USE_INDEX CHAR(1) S No Y = ndice recomendado o evaluado
N = ndice no recomendado
R = se ha recomendado la separacin del clster de
un ndice de clster RID (por parte del Asesor de
diseo); esto ocurre cuando se recomienda un ndice
de clster RID nuevo para la tabla.
CREATION_TEXT CLOB(2M) No No La sentencia de SQL se utiliza para crear el ndice.
PACKED_DESC BLOB(1M) S No Descripcin interna de la tabla.
RUN_ID TIMESTAMP S FK Valor correspondiente a START_TIME de una fila de la
tabla ADVISE_INSTANCE que la enlaza con la misma
ejecucin del Asesor de diseo.

Apndice I. Tablas de Explain 861


tabla ADVISE_INDEX

Tabla 194. Tabla ADVISE_INDEX (continuacin). PK significa que la columna forma parte de una clave primaria; FK
significa que la columna forma parte de una clave fornea.
Posibili-
dad de
Nombre de columna Tipo de datos nulos? Clave? Descripcin
INDEXTYPE VARCHAR(4) No No Tipo de ndice.
CLUS = Clsteres
REG = Normal
DIM = ndice de bloques de dimensin
BLOK = ndice de bloques
EXISTS CHAR(1) No No Debe definirse en Y si el ndice ya existe en el catlogo
de la base de datos.
RIDTOBLOCK CHAR(1) No No Debe definirse en Y si se ha utilizado el ndice RID
para crear un ndice de bloques en el Asesor de diseo.

862 Consulta de SQL - Volumen 1


Tabla ADVISE_INSTANCE

Tabla ADVISE_INSTANCE
La tabla ADVISE_INSTANCE contiene informacin acerca de la ejecucin de
db2advis, incluida la hora de inicio. Contiene una fila para cada ejecucin de
db2advis. Otras tablas ADVISE presentan una clave fornea (RUN_ID) que enlaza
las filas creadas durante la misma ejecucin del Asesor de diseo con la columna
START_TIME de la tabla ADVISE_INSTANCE.
Tabla 195. Tabla ADVISE_INSTANCE. PK significa que la columna forma parte de una clave primaria; FK significa
que la columna forma parte de una clave fornea.
Posibili-
dad de
Nombre de columna Tipo de datos nulos? Clave? Descripcin
START_TIME TIMESTAMP No PK Hora en la que empieza la ejecucin de db2advis.
END_TIME TIMESTAMP No No Hora en la que finaliza la ejecucin de db2advis.
MODE VARCHAR(4) No No El valor que se ha especificado con la opcin -m en el
Asesor de diseo; por ejemplo, MC para especificar
MQT y MDC.
WKLD_COMPRESSION CHAR(4) No No La compresin de carga de trabajo bajo la que se ha
ejecutado el Asesor de diseo.
STATUS CHAR(9) No No Estado de una ejecucin del Asesor de diseo. El estado
puede ser STARTED, COMPLETED (si es satisfactorio)
o un nmero de error que lleve el prefijo EI para los
errores internos o EX para los errores externos, en cuyo
caso el nmero de error representa el SQLCODE.

Apndice I. Tablas de Explain 863


Tabla ADVISE_MQT

Tabla ADVISE_MQT
La tabla ADVISE_MQT contiene informacin acerca de las tablas de consultas
materializadas (MQT) recomendadas por el Asesor de diseo.
Tabla 196. Tabla ADVISE_MQT. PK significa que la columna forma parte de una clave primaria; FK significa que la
columna forma parte de una clave fornea.
Posibili-
dad de
Nombre de columna Tipo de datos nulos? Clave? Descripcin
EXPLAIN_REQUESTER VARCHAR(128) No No ID de autorizacin del iniciador de esta peticin de
Explain.
EXPLAIN_TIME TIMESTAMP No No Hora de inicio de la peticin de Explain.
SOURCE_NAME VARCHAR(128) No No Nombre del paquete que se ejecutaba cuando se ha
explicado la sentencia dinmica o nombre del archivo
fuente cuando se ha explicado la sentencia de SQL
esttico.
SOURCE_SCHEMA VARCHAR(128) No No Esquema, o calificador, de la fuente de la peticin de
Explain.
SOURCE_VERSION VARCHAR(64) No No Versin de la fuente de la peticin de Explain.
EXPLAIN_LEVEL CHAR(1) No No Nivel de informacin de Explain para el que esta fila es
aplicable.
STMTNO INTEGER No No El nmero de sentencia en el paquete con el que est
relacionado esta informacin de Explain.
SECTNO INTEGER No No El nmero de sentencia en el paquete con el que est
relacionado esta informacin de Explain.
NAME VARCHAR(128) No No Nombre de la MQT.
CREATOR VARCHAR(128) No No Nombre del creador de la MQT.
IID SMALLINT No No Identificador interno.
CREATE_TIME TIMESTAMP No No Hora en que se ha creado la MQT.
STATS_TIME TIMESTAMP S No Hora en que se han recogido las estadsticas.
NUMROWS DOUBLE No No Nmero estimado de filas de la MQT.
NUMCOLS SMALLINT No No Nmero de columnas definido en la MQT.
ROWSIZE DOUBLE No No Longitud media (en bytes) de una fila de la MQT.
BENEFIT FLOAT No No Reservado para su utilizacin en el futuro.
USE_MQT CHAR(1) S No Debe definirse en Y si se recomienda la MQT.
MQT_SOURCE CHAR(1) S No Indica si se ha generado el candidato de la MQT. Debe
definirse en I si el candidato de la MQT es una MQT
de renovacin inmediata o en D si slo puede crearse
como una MQT de renovacin diferida completa.
QUERY_TEXT CLOB(2M) No No Contiene la consulta que define la MQT.
CREATION_TEXT CLOB(2M) No No Contiene el DDL de CREATE TABLE para la MQT.
SAMPLE_TEXT CLOB(2M) No No Contiene la consulta de muestreo que se utiliza para
obtener estadsticas detalladas para la MQT. Slo se
utiliza cuando se necesitan estadsticas detalladas para el
Asesor de diseo. Las estadsticas de muestreo
resultantes se mostrarn en esta tabla. Si es nulo, no se
haba creado ninguna consulta de muestreo para esta
MQT.
COLSTATS CLOB(2M) No No Contiene las estadsticas de columna para la MQT (si no
es nulo). Estas estadsticas estn en formato XML e
incluyen el nombre de la columna, la cardinalidad de la
columna y, opcionalmente, los valores HIGH2KEY y
LOW2KEY.
EXTRA_INFO BLOB(2M) No No Reservado para salidas varias.

864 Consulta de SQL - Volumen 1


Tabla ADVISE_MQT

Tabla 196. Tabla ADVISE_MQT (continuacin). PK significa que la columna forma parte de una clave primaria; FK
significa que la columna forma parte de una clave fornea.
Posibili-
dad de
Nombre de columna Tipo de datos nulos? Clave? Descripcin
TBSPACE VARCHAR(128) No No El espacio de tablas que se recomienda para la MQT.
RUN_ID TIMESTAMP S FK Valor correspondiente a START_TIME de una fila de la
tabla ADVISE_INSTANCE que la enlaza con la misma
ejecucin del Asesor de diseo.
REFRESH_TYPE CHAR(1) No No Debe definirse en I para inmediato o en D para
diferido.
EXISTS CHAR(1) No No Debe definirse en Y si la MQT ya existe en el catlogo
de la base de datos.

Apndice I. Tablas de Explain 865


Tabla ADVISE_PARTITION

Tabla ADVISE_PARTITION
La tabla ADVISE_PARTITION contiene informacin acerca de las particiones de
base de datos recomendadas por el Asesor de diseo y slo puede rellenarse en un
entorno de bases de datos particionadas.
Tabla 197. Tabla ADVISE_PARTITION. PK significa que la columna forma parte de una clave primaria; FK significa
que la columna forma parte de una clave fornea.
Posibili-
dad de
Nombre de columna Tipo de datos nulos? Clave? Descripcin
EXPLAIN_REQUESTER VARCHAR(128) No No ID de autorizacin del iniciador de esta peticin de
Explain.
EXPLAIN_TIME TIMESTAMP No No Hora de inicio de la peticin de Explain.
SOURCE_NAME VARCHAR(128) No No Nombre del paquete que se ejecutaba cuando se ha
explicado la sentencia dinmica o nombre del archivo
fuente cuando se ha explicado la sentencia de SQL
esttico.
SOURCE_SCHEMA VARCHAR(128) No No Esquema, o calificador, de la fuente de la peticin de
Explain.
SOURCE_VERSION VARCHAR(64) No No Versin de la fuente de la peticin de Explain.
EXPLAIN_LEVEL CHAR(1) No No Nivel de informacin de Explain para el que esta fila es
aplicable.
STMTNO INTEGER No No El nmero de sentencia en el paquete con el que est
relacionado esta informacin de Explain.
SECTNO INTEGER No No El nmero de sentencia en el paquete con el que est
relacionado esta informacin de Explain.
QUERYNO INTEGER No No Identificador numrico para la sentencia de SQL
explicada. Para sentencias de SQL dinmico (excluyendo
la sentencia EXPLAIN SQL) emitidas a travs de CLP o
CLI, el valor por omisin es un valor incrementado
secuencialmente. De lo contrario, el valor por omisin es
el valor de STMTNO para sentencias de SQL esttico y 1
para sentencias de SQL dinmico.
QUERYTAG CHAR(20) No No Distintivo identificador para cada sentencia de SQL
explicada. Para sentencias de SQL dinmico emitidas a
travs de CLP (excluida la sentencia EXPLAIN SQL), el
valor por omisin es CLP. Para sentencias de SQL
dinmico emitidas a travs de CLI (excluida la sentencia
EXPLAIN SQL), el valor por omisin es CLI. De lo
contrario, el valor por omisin utilizado es blancos.
TBNAME VARCHAR(128) S No Especifica el nombre de la tabla.
TBCREATOR VARCHAR(128) S No Especifica el nombre del creador de la tabla.
PMID SMALLINT S No Especifica el ID de correlacin de la distribucin.
TBSPACE VARCHAR(128) S No Especifica el espacio de tablas en el que reside la tabla.
COLNAMES CLOB(2M) S No Especifica los nombres de las columnas de las
particiones de base de datos, separados por comas.
COLCOUNT SMALLINT S No Especifica el nmero de columnas de particionamiento
de base de datos.
REPLICATE CHAR(1) S No Especifica si la particin de base de datos se duplica o
no se duplica.
COST DOUBLE S No Especifica el coste del uso de la particin de base de
datos.
USEIT CHAR(1) S No Especifica si la particin de base de datos se utiliza o no
en modalidad EVALUATE PARTITION. Se utiliza una
particin de base de datos si USEIT est establecido en
Y o y.

866 Consulta de SQL - Volumen 1


Tabla ADVISE_PARTITION

Tabla 197. Tabla ADVISE_PARTITION (continuacin). PK significa que la columna forma parte de una clave primaria;
FK significa que la columna forma parte de una clave fornea.
Posibili-
dad de
Nombre de columna Tipo de datos nulos? Clave? Descripcin
RUN_ID TIMESTAMP S FK Valor correspondiente a START_TIME de una fila de la
tabla ADVISE_INSTANCE que la enlaza con la misma
ejecucin del Asesor de diseo.

Apndice I. Tablas de Explain 867


Tabla ADVISE_TABLE

Tabla ADVISE_TABLE
La tabla ADVISE_TABLE almacena el lenguaje de definicin de datos (DDL) para
la creacin de tablas utilizando las recomendaciones finales del Asesor de diseo
para las tablas de consultas materializadas (MQT), las tablas de clsteres de varias
dimensiones (MDC) y la particin de bases de datos.
Tabla 198. Tabla ADVISE_TABLE. PK significa que la columna forma parte de una clave primaria; FK significa que la
columna forma parte de una clave fornea.
Posibili-
dad de
Nombre de columna Tipo de datos nulos? Clave? Descripcin
RUN_ID TIMESTAMP S FK Valor correspondiente a START_TIME de una fila de la
tabla ADVISE_INSTANCE que la enlaza con la misma
ejecucin del Asesor de diseo.
TABLE_NAME VARCHAR(128) No No Nombre de la tabla.
TABLE_SCHEMA VARCHAR(128) No No Nombre del creador de la tabla.
TABLESPACE VARCHAR(128) No No El espacio de tablas en el que va a crearse la tabla.
SELECTION_FLAG VARCHAR(4) No No Indica el tipo de recomendacin. Los valores vlidos son
M para MQT, P para particin de bases de datos y C
para MDC. Este campo puede incluir cualquier
subconjunto de estos valores. Por ejemplo, MC indica
que la tabla se recomienda como una tabla MQT y
MDC.
TABLE_EXISTS CHAR(1) No No Debe definirse en Y si la tabla ya existe en el catlogo
de la base de datos.
USE_TABLE CHAR(1) No No Debe definirse en Y si la tabla tiene recomendaciones
del Asesor de diseo.
GEN_COLUMNS CLOB(2M) No No Contiene una serie de columnas generadas si esta fila
incluye una recomendacin de MDC que necesita
columnas generadas en el DDL de creacin de tablas.
ORGANIZE_BY CLOB(2M) No No Para las recomendaciones de MDC, contiene la clusula
ORGANIZE BY del DDL de creacin de tablas.
CREATION_TEXT CLOB(2M) No No Contiene el DDL de creacin de tablas.
ALTER_COMMAND CLOB(2M) No No Contiene una sentencia ALTER TABLE para la tabla.

868 Consulta de SQL - Volumen 1


tabla ADVISE_WORKLOAD

Tabla ADVISE_WORKLOAD
La tabla ADVISE_WORKLOAD representa la sentencia que forma la carga de
trabajo.
Tabla 199. Tabla ADVISE_WORKLOAD. PK significa que la columna forma parte de una clave primaria; FK significa
que la columna forma parte de una clave fornea.
Posibili-
dad de
Nombre de columna Tipo de datos nulos? Clave? Descripcin
WORKLOAD_NAME CHAR(128) No No Nombre del conjunto de sentencias de SQL (carga de
trabajo) a la que esta sentencia pertenece.
STATEMENT_NO INTEGER No No El nmero de sentencias de la carga de trabajo con el
que est relacionada esta informacin de explicacin.
STATEMENT_TEXT CLOB(1M) No No Contenido de la sentencia de SQL.
STATEMENT_TAG VARCHAR(256) No No Distintivo identificador para cada sentencia de SQL
explicada.
FREQUENCY INTEGER No No Las veces que esta sentencia aparece en la carga de
trabajo.
IMPORTANCE DOUBLE No No Importancia de la sentencia.
WEIGHT DOUBLE No No Prioridad de la sentencia.
COST_BEFORE DOUBLE S No Coste de la consulta (in timerons) si no se han creado las
recomendaciones.
COST_AFTER DOUBLE S No Coste de la consulta (in timerons) si se han creado las
recomendaciones. COST_AFTER refleja todas las
recomendaciones excepto las que pertenezcan a ndices
agrupados y al clustering de varias dimensiones (MDC).
COMPILABLE CHAR(17) S No Indica los errores de compilacin de la consulta que se
han producido al intentar preparar la sentencia. Si esta
columna es NULL o no empieza por SQLCA, la consulta
de SQL podra compilarla db2advis. Si db2advis o el
Asesor de diseo detectan un error de compilacin, el
valor de columna COMPILABLE constar de un campo
SQLCA.sqlcaid de 8 bytes de longitud seguido de dos
puntos (:) y un campo SQLCA.sqlstate de 8 bytes de
longitud, que es el cdigo de retorno de la sentencia
SQL.

Apndice I. Tablas de Explain 869


tabla ADVISE_WORKLOAD

870 Consulta de SQL - Volumen 1


Apndice J. Valores de los registros de EXPLAIN
A continuacin se proporciona una descripcin de la interaccin de los valores de
los registros especiales CURRENT EXPLAIN MODE y CURRENT EXPLAIN
SNAPSHOT, entre s y con los mandatos PREP y BIND.

Con SQL dinmico, los valores de los registros especiales CURRENT EXPLAIN
MODE y CURRENT EXPLAIN SNAPSHOT interactan de la siguiente manera:
Tabla 200. Interaccin de los valores de los registros especiales EXPLAIN (SQL dinmico)
Valores de EXPLAIN MODE
Valores de
EXPLAIN RECOMMEND EVALUATE
SNAPSHOT NO YES EXPLAIN REOPT INDEXES INDEXES
NO v Se v Se rellenan v Se rellenan v Las tablas de v Se rellenan v Se rellenan
devuelven las tablas de las tablas de explicacin las tablas de las tablas de
los explicacin. explicacin. se rellenan explicacin. explicacin.
resultados v Se v Los cuando una v Los v Los
de la devuelven resultados sentencia resultados resultados
consulta. los de la est de la de la
resultados consulta no calificada consulta no consulta no
de la se devuelven para su se devuelven se devuelven
consulta. (las reoptimizacin (las (las
sentencias durante la sentencias sentencias
dinmicas ejecucin. dinmicas dinmicas
no se v Se no se no se
ejecutan). devuelven ejecutan). ejecutan).
los v Se v Se evalan
resultados recomiendan los ndices.
de la los ndices.
consulta.
YES v Se toma una v Se rellenan v Se rellenan v Las tablas de v Se rellenan v Se rellenan
Instantnea las tablas de las tablas de explicacin las tablas de las tablas de
de explicacin. explicacin. se rellenan explicacin. explicacin.
explicacin. v Se toma una v Se toma una cuando una v Se toma una v Se toma una
v Se Instantnea Instantnea sentencia Instantnea Instantnea
devuelven de de est de de
los explicacin. explicacin. calificada explicacin. explicacin.
resultados para su
v Se v Los v Los v Los
de la reoptimizacin
devuelven resultados resultados resultados
consulta. durante la
los de la de la de la
ejecucin.
resultados consulta no consulta no consulta no
de la se devuelven v Se toma una se devuelven se devuelven
consulta. (las Instantnea (las (las
sentencias de sentencias sentencias
dinmicas explicacin. dinmicas dinmicas
no se v Se no se no se
ejecutan). devuelven ejecutan). ejecutan).
los v Se v Se evalan
resultados recomiendan los ndices.
de la los ndices.
consulta.

Copyright IBM Corp. 1993, 2006 871


Valores de los registros de EXPLAIN

Tabla 200. Interaccin de los valores de los registros especiales EXPLAIN (SQL dinmico) (continuacin)
Valores de EXPLAIN MODE
Valores de
EXPLAIN RECOMMEND EVALUATE
SNAPSHOT NO YES EXPLAIN REOPT INDEXES INDEXES
EXPLAIN v Se toma una v Se rellenan v Se rellenan v Las tablas de v Se rellenan v Se rellenan
Instantnea las tablas de las tablas de explicacin las tablas de las tablas de
de explicacin. explicacin. se rellenan explicacin. explicacin.
explicacin. v Se toma una v Se toma una cuando una v Se toma una v Se toma una
v Los Instantnea Instantnea sentencia Instantnea Instantnea
resultados de de est de de
de la explicacin. explicacin. calificada explicacin. explicacin.
consulta no v Los para su
v Los v Los v Los
se devuelven reoptimizacin
resultados resultados resultados resultados
(las durante la
de la de la de la de la
sentencias ejecucin.
consulta no consulta no consulta no consulta no
dinmicas se devuelven se devuelven v Instantnea se devuelven se devuelven
no se (las (las de (las (las
ejecutan). sentencias sentencias explicacin sentencias sentencias
dinmicas dinmicas tomada dinmicas dinmicas
no se no se cuando una no se no se
ejecutan). ejecutan). sentencia ejecutan). ejecutan).
est
v Se v Se evalan
calificada
recomiendan los ndices.
para su
los ndices.
reoptimizacin
durante la
ejecucin.
v Los
resultados
de la
consulta no
se devuelven
(las
sentencias
dinmicas o
de
vinculacin
incremental
no se
ejecutan).

872 Consulta de SQL - Volumen 1


Valores de los registros de EXPLAIN

Tabla 200. Interaccin de los valores de los registros especiales EXPLAIN (SQL dinmico) (continuacin)
Valores de EXPLAIN MODE
Valores de
EXPLAIN RECOMMEND EVALUATE
SNAPSHOT NO YES EXPLAIN REOPT INDEXES INDEXES
REOPT v Instantnea v Se rellenan v Se rellenan v Las tablas de v Se rellenan v Se rellenan
de las tablas de las tablas de explicacin las tablas de las tablas de
explicacin explicacin. explicacin. se rellenan explicacin. explicacin.
tomada v Instantnea v Instantnea cuando una v Instantnea v Instantnea
cuando una de de sentencia de de
sentencia explicacin explicacin est explicacin explicacin
est tomada tomada calificada tomada tomada
calificada cuando una cuando una para su cuando una cuando una
para su sentencia sentencia reoptimizacin sentencia sentencia
reoptimizacin est est durante la est est
durante la calificada calificada ejecucin. calificada calificada
ejecucin. para su para su v Instantnea para su para su
v Se reoptimizacin reoptimizacin de reoptimizacin reoptimizacin
devuelven durante la durante la explicacin durante la durante la
los ejecucin. ejecucin. tomada ejecucin. ejecucin.
resultados v Se v Los cuando una v Los v Los
de la devuelven resultados sentencia resultados resultados
consulta. los de la est de la de la
resultados consulta no calificada consulta no consulta no
de la se devuelven para su se devuelven se devuelven
consulta. (las reoptimizacin (las (las
sentencias durante la sentencias sentencias
dinmicas o ejecucin. dinmicas o dinmicas o
de v Se de de
vinculacin devuelven vinculacin vinculacin
incremental los incremental incremental
no se resultados no se no se
ejecutan). de la ejecutan). ejecutan).
consulta. v Se v Se evalan
recomiendan los ndices.
los ndices.

El registro especial CURRENT EXPLAIN MODE interacta con la opcin de


vinculacin EXPLAIN de la siguiente manera en SQL dinmico.

Apndice J. Valores de los registros de EXPLAIN 873


Valores de los registros de EXPLAIN

Tabla 201. Interaccin de la opcin de vinculacin EXPLAIN y CURRENT EXPLAIN MODE


Valores de la opcin de vinculacin EXPLAIN
Valores de EXPLAIN
MODE NO YES REOPT ALL
NO v Se devuelven los v Las tablas de v Las tablas de v Las tablas de
resultados de la explicacin se explicacin se explicacin se
consulta. rellenan para SQL rellenan para SQL rellenan para SQL
esttico. esttico cuando una esttico.
v Se devuelven los sentencia est v Las tablas de
resultados de la calificada para su explicacin se
consulta. reoptimizacin rellenan para SQL
durante la dinmico.
ejecucin.
v Se devuelven los
v Las tablas de resultados de la
explicacin se consulta.
rellenan para SQL
esttico cuando una
sentencia est
calificada para su
reoptimizacin
durante la
ejecucin.
v Se devuelven los
resultados de la
consulta.
YES v Las tablas de v Las tablas de v Las tablas de v Las tablas de
explicacin se explicacin se explicacin se explicacin se
rellenan para SQL rellenan para SQL rellenan para SQL rellenan para SQL
dinmico. esttico. esttico cuando una esttico.
v Se devuelven los v Las tablas de sentencia est v Las tablas de
resultados de la explicacin se calificada para su explicacin se
consulta. rellenan para SQL reoptimizacin rellenan para SQL
dinmico. durante la dinmico.
ejecucin.
v Se devuelven los v Se devuelven los
resultados de la v Las tablas de resultados de la
consulta. explicacin se consulta.
rellenan para SQL
esttico cuando una
sentencia est
calificada para su
reoptimizacin
durante la
ejecucin.
v Se devuelven los
resultados de la
consulta.

874 Consulta de SQL - Volumen 1


Valores de los registros de EXPLAIN

Tabla 201. Interaccin de la opcin de vinculacin EXPLAIN y CURRENT EXPLAIN MODE (continuacin)
Valores de la opcin de vinculacin EXPLAIN
Valores de EXPLAIN
MODE NO YES REOPT ALL
EXPLAIN v Las tablas de v Las tablas de v Las tablas de v Las tablas de
explicacin se explicacin se explicacin se explicacin se
rellenan para SQL rellenan para SQL rellenan para SQL rellenan para SQL
dinmico. esttico. esttico cuando una esttico.
v Los resultados de la v Las tablas de sentencia est v Las tablas de
consulta no se explicacin se calificada para su explicacin se
devuelven (las rellenan para SQL reoptimizacin rellenan para SQL
sentencias dinmico. durante la dinmico.
dinmicas no se ejecucin.
v Los resultados de la v Los resultados de la
ejecutan). consulta no se v Las tablas de consulta no se
devuelven (las explicacin se devuelven (las
sentencias rellenan para SQL sentencias
dinmicas no se esttico cuando una dinmicas no se
ejecutan). sentencia est ejecutan).
calificada para su
reoptimizacin
durante la
ejecucin.
v Los resultados de la
consulta no se
devuelven (las
sentencias
dinmicas no se
ejecutan).
REOPT v Las tablas de v Las tablas de v Las tablas de v Las tablas de
explicacin se explicacin se explicacin se explicacin se
rellenan para SQL rellenan para SQL rellenan para SQL rellenan para SQL
esttico cuando una esttico cuando una esttico cuando una esttico cuando una
sentencia est sentencia est sentencia est sentencia est
calificada para su calificada para su calificada para su calificada para su
reoptimizacin reoptimizacin reoptimizacin reoptimizacin
durante la durante la durante la durante la
ejecucin. ejecucin. ejecucin. ejecucin.
v Se devuelven los v Las tablas de v Las tablas de v Las tablas de
resultados de la explicacin se explicacin se explicacin se
consulta. rellenan para SQL rellenan para SQL rellenan para SQL
esttico cuando una esttico cuando una esttico cuando una
sentencia est sentencia est sentencia est
calificada para su calificada para su calificada para su
reoptimizacin reoptimizacin reoptimizacin
durante la durante la durante la
ejecucin. ejecucin. ejecucin.
v Se devuelven los v Se devuelven los v Se devuelven los
resultados de la resultados de la resultados de la
consulta. consulta. consulta.

Apndice J. Valores de los registros de EXPLAIN 875


Valores de los registros de EXPLAIN

Tabla 201. Interaccin de la opcin de vinculacin EXPLAIN y CURRENT EXPLAIN MODE (continuacin)
Valores de la opcin de vinculacin EXPLAIN
Valores de EXPLAIN
MODE NO YES REOPT ALL
RECOMMEND v Las tablas de v Las tablas de v Las tablas de v Las tablas de
INDEXES explicacin se explicacin se explicacin se explicacin se
rellenan para SQL rellenan para SQL rellenan para SQL rellenan para SQL
dinmico. esttico. esttico cuando una esttico.
v Los resultados de la v Las tablas de sentencia est v Las tablas de
consulta no se explicacin se calificada para su explicacin se
devuelven (las rellenan para SQL reoptimizacin rellenan para SQL
sentencias dinmico. durante la dinmico.
dinmicas no se ejecucin.
v Los resultados de la v Los resultados de la
ejecutan). consulta no se v Las tablas de consulta no se
v Se recomiendan los devuelven (las explicacin se devuelven (las
ndices. sentencias rellenan para SQL sentencias
dinmicas no se esttico cuando una dinmicas no se
ejecutan). sentencia est ejecutan).
calificada para su
v Se recomiendan los v Se recomiendan los
reoptimizacin
ndices. ndices.
durante la
ejecucin.
v Los resultados de la
consulta no se
devuelven (las
sentencias
dinmicas no se
ejecutan).
v Se recomiendan los
ndices.
EVALUATE INDEXES v Las tablas de v Las tablas de v Las tablas de v Las tablas de
explicacin se explicacin se explicacin se explicacin se
rellenan para SQL rellenan para SQL rellenan para SQL rellenan para SQL
dinmico. esttico. esttico cuando una esttico.
v Los resultados de la v Las tablas de sentencia est v Las tablas de
consulta no se explicacin se calificada para su explicacin se
devuelven (las rellenan para SQL reoptimizacin rellenan para SQL
sentencias dinmico. durante la dinmico.
dinmicas no se ejecucin.
v Los resultados de la v Los resultados de la
ejecutan). consulta no se v Las tablas de consulta no se
v Se evalan los devuelven (las explicacin se devuelven (las
ndices. sentencias rellenan para SQL sentencias
dinmicas no se esttico cuando una dinmicas no se
ejecutan). sentencia est ejecutan).
calificada para su
v Se evalan los v Se evalan los
reoptimizacin
ndices. ndices.
durante la
ejecucin.
v Los resultados de la
consulta no se
devuelven (las
sentencias
dinmicas no se
ejecutan).
v Se evalan los
ndices.

876 Consulta de SQL - Volumen 1


Valores de los registros de EXPLAIN

El registro especial CURRENT EXPLAIN SNAPSHOT interacta con la opcin de


vinculacin EXPLSNAP de la siguiente manera para SQL dinmico.
Tabla 202. Interaccin de la opcin de vinculacin EXPLSNAP y CURRENT EXPLAIN SNAPSHOT
Valores de la opcin de vinculacin EXPLSNAP
Valores de EXPLAIN
SNAPSHOT NO YES REOPT ALL
NO v Se devuelven los v Se toma una v Se toma una v Se toma una
resultados de la Instantnea de Instantnea de Instantnea de
consulta. explicacin para explicacin para explicacin para
SQL esttico. SQL esttico SQL esttico.
v Se devuelven los cuando una v Se toma una
resultados de la sentencia est Instantnea de
consulta. calificada para su explicacin para
reoptimizacin SQL dinmico.
durante la
v Se devuelven los
ejecucin.
resultados de la
v Se toma una consulta.
Instantnea de
explicacin para
SQL dinmico
cuando una
sentencia est
calificada para su
reoptimizacin
durante la
ejecucin.
v Se devuelven los
resultados de la
consulta.
YES v Se toma una v Se toma una v Se toma una v Se toma una
Instantnea de Instantnea de Instantnea de Instantnea de
explicacin para explicacin para explicacin para explicacin para
SQL dinmico. SQL esttico. SQL esttico SQL esttico.
v Se devuelven los v Se toma una cuando una v Se toma una
resultados de la Instantnea de sentencia est Instantnea de
consulta. explicacin para calificada para su explicacin para
SQL dinmico. reoptimizacin SQL dinmico.
durante la
v Se devuelven los v Se devuelven los
ejecucin.
resultados de la resultados de la
consulta. v Se toma una consulta.
Instantnea de
explicacin para
SQL dinmico
cuando una
sentencia est
calificada para su
reoptimizacin
durante la
ejecucin.
v Se devuelven los
resultados de la
consulta.

Apndice J. Valores de los registros de EXPLAIN 877


Valores de los registros de EXPLAIN

Tabla 202. Interaccin de la opcin de vinculacin EXPLSNAP y CURRENT EXPLAIN SNAPSHOT (continuacin)
Valores de la opcin de vinculacin EXPLSNAP
Valores de EXPLAIN
SNAPSHOT NO YES REOPT ALL
EXPLAIN v Se toma una v Se toma una v Se toma una v Se toma una
Instantnea de Instantnea de Instantnea de Instantnea de
explicacin para explicacin para explicacin para explicacin para
SQL dinmico. SQL esttico. SQL esttico SQL esttico.
v Los resultados de la v Se toma una cuando una v Se toma una
consulta no se Instantnea de sentencia est Instantnea de
devuelven (las explicacin para calificada para su explicacin para
sentencias SQL dinmico. reoptimizacin SQL dinmico.
dinmicas no se durante la
v Los resultados de la v Los resultados de la
ejecutan). ejecucin.
consulta no se consulta no se
devuelven (las v Se toma una devuelven (las
sentencias Instantnea de sentencias
dinmicas no se explicacin para dinmicas no se
ejecutan). SQL dinmico ejecutan).
cuando una
sentencia est
calificada para su
reoptimizacin
durante la
ejecucin.
v Los resultados de la
consulta no se
devuelven (las
sentencias
dinmicas no se
ejecutan).
REOPT v Se toma una v Se toma una v Se toma una v Se toma una
Instantnea de Instantnea de Instantnea de Instantnea de
explicacin para explicacin para explicacin para explicacin para
SQL dinmico SQL esttico SQL esttico SQL esttico
cuando una cuando una cuando una cuando una
sentencia est sentencia est sentencia est sentencia est
calificada para su calificada para su calificada para su calificada para su
reoptimizacin reoptimizacin reoptimizacin reoptimizacin
durante la durante la durante la durante la
ejecucin. ejecucin. ejecucin. ejecucin.
v Se devuelven los v Se toma una v Se toma una v Se toma una
resultados de la Instantnea de Instantnea de Instantnea de
consulta. explicacin para explicacin para explicacin para
SQL dinmico SQL dinmico SQL dinmico
cuando una cuando una cuando una
sentencia est sentencia est sentencia est
calificada para su calificada para su calificada para su
reoptimizacin reoptimizacin reoptimizacin
durante la durante la durante la
ejecucin. ejecucin. ejecucin.
v Se devuelven los v Se devuelven los v Se devuelven los
resultados de la resultados de la resultados de la
consulta. consulta. consulta.

878 Consulta de SQL - Volumen 1


Apndice K. Tablas de excepciones
Las tablas de excepciones son tablas creadas por el usuario que imitan la definicin
de las tablas cuya comprobacin se especifica utilizando SET INTEGRITY con la
opcin IMMEDIATE CHECKED. Se utilizan para almacenar copias de las filas que
violan las restricciones de las tablas que se estn comprobando.

Las tablas de excepciones que utiliza el programa de utilidad de carga son


idnticas a las que se describen aqu y, por lo tanto, se pueden volver a utilizar
durante la comprobacin de la sentencia SET INTEGRITY.

Reglas para crear una tabla de excepciones


Las reglas para crear una tabla de excepciones son las siguientes:
v Si la tabla est protegida por una poltica de seguridad, la tabla de excepciones
debe protegerse mediante la misma poltica de seguridad.
v Las primeras n columnas de la tabla de excepciones son iguales que las
columnas de la tabla que se est comprobando. Todos los atributos de columna,
inclusive el nombre, el tipo de datos y la longitud, deben ser idnticos. En el
caso de las columnas protegidas, la etiqueta de seguridad que protege a la
columna debe ser la misma en ambas tablas.
v Todas las columnas de la tabla de excepciones deben estar libres de restricciones
y activadores. Las restricciones incluyen la integridad de referencia, las
restricciones de comprobacin, as como las restricciones de ndice exclusivo que
podran causar errores en la insercin.
v La columna (n+1) de la tabla de excepciones es una columna TIMESTAMP
opcional. Esto sirve para identificar las invocaciones sucesivas de la
comprobacin que efecta la sentencia SET INTEGRITY en la misma tabla, si las
filas de la tabla de excepciones no se han suprimido antes mediante la emisin
de la sentencia SET INTEGRITY para comprobar los datos.
v La columna (n+2) debe ser de tipo CLOB(32K) o mayor. Esta columna es
opcional pero se recomienda incluirla y se utilizar para proporcionar los
nombres de las restricciones que violan los datos de la fila. Si no se proporciona
esta columna (como pasara si, por ejemplo, la tabla original tuviese el nmero
mximo de columnas permitido), slo se copia la fila en la que se ha detectado
la violacin de restriccin.
v La tabla de excepciones debe crearse con las columnas (n+1) y (n+2).
v No se impone ningn nombre en particular para las columnas adicionales
anteriores. No obstante, debe seguirse exactamente la especificacin del tipo.
v No se permiten columnas adicionales.
v Si la tabla original tiene columnas generadas (incluida la propiedad IDENTITY),
las columnas correspondientes de la tabla de excepciones no deben especificar la
propiedad generada.
v Los usuarios que invocan la sentencia SET INTEGRITY para comprobar datos
deben tener el privilegio SET INSERT en las tablas de excepciones.
v La tabla de excepciones no puede ser una tabla particionadas de datos, una tabla
de clster de rango ni una tabla desenlazada.
v La tabla de excepciones no puede ser una tabla de consultas materializadas ni
una tabla de etapas.

Copyright IBM Corp. 1993, 2006 879


Reglas para crear una tabla de excepciones

v La tabla de excepciones no puede tener ninguna tabla de consultas


materializadas de renovacin inmediata dependiente ni ninguna tabla de etapas
de propagacin inmediata dependiente.

La informacin de la columna mensaje tendr la siguiente estructura:


Tabla 203. Estructura de la columna de mensajes de la tabla de excepciones
N-
mero
de
campo Contenido Tamao Comentarios
1 Nmero de violaciones de restriccin 5 bytes Justificada por la derecha rellenada
con 0
2 Tipo de la primera violacin de 1 byte K - Violacin de restriccin
restriccin de comprobacin
F - Violacin de clave fornea
G - Violacin de columna
generada
I - Violacin de ndice de
unicidada
D - Violacin
de supresin de cascada
P - Violacin de particiona-
miento de datos
S - Etiqueta de seguridad de
fila no vlida
L - Violacin de normas de
grabacin LBAC de DB2
3 Longitud de restriccin/columnab 5 bytes Justificada por la derecha rellenada
/ID de ndicec con 0
4 Nombre de restriccin/Nombre de longitud del campo anterior
columnab/ID de ndicec
5 Separador 3 bytes <espacio><:><espacio>
6 Tipo de la siguiente violacin de 1 byte K - Violacin de restriccin
restriccin de comprobacin
F - Violacin de clave fornea
G - Violacin de columna
generada
I - Violacin de ndice de
unicidad
D - Violacin
de supresin de cascada
P - Violacin de particiona-
miento de datos
S - Etiqueta de seguridad de
fila no vlida
L - Violacin de normas de
grabacin LBAC de DB2
7 Longitud de restriccin/columna/ID 5 bytes Justificada por la derecha rellenada
de ndice con 0
8 Nombre de restriccin/Nombre de longitud del campo anterior
columna/ID de ndice
..... ..... ..... Repita del Campo 5 al 8 para cada
violacin

880 Consulta de SQL - Volumen 1


Reglas para crear una tabla de excepciones

Tabla 203. Estructura de la columna de mensajes de la tabla de excepciones (continuacin)


N-
mero
de
campo Contenido Tamao Comentarios
a
v No se producirn violaciones de ndices exclusivos en la comprobacin si se utiliza la sentencia SET INTEGRITY,
a no ser que se realice despus de una operacin de enlace. Sin embargo, se informar de esto, cuando se ejecute
LOAD si se elige la opcin FOR EXCEPTION. Por otra parte, LOAD no informar de las violaciones de restriccin
de comprobacin, de columna generada, de clave fornea, de supresin de cascada ni de particionamiento de datos
ocurridas en las tablas de excepciones.
b
v Para recuperar la expresin de una columna generada a partir de las vistas de catlogo, utilice una sentencia de
seleccin. Por ejemplo, si el campo 4 es MYSCHEMA.MYTABLE.GEN_1, entonces SELECT SUBSTR(TEXT, 1, 50)
FROM SYSCAT.COLUMNS WHERE TABSCHEMA=MYSCHEMA AND TABNAME=MYNAME AND
COLNAME=GEN_1; devuelve los primeros 50 bytes de la expresin, en el formato AS (<expresin>)
c
v Para recuperar un ID de ndice a partir de las vistas de catlogo, utilice una sentencia de seleccin. Por ejemplo,
si el campo 4 es 1234, entonces SELECT INDSCHEMA, INDNAME FROM SYSCAT.INDEXES WHERE IID=1234.

Gestin de las filas en una tabla de excepciones


La informacin de las tablas de excepciones se puede procesar de varias formas. Se
pueden corregir datos y volver a insertar filas en las tablas originales.

Si no hay ningn activador INSERT en la tabla original, transfiera las filas


corregidas emitiendo la sentencia INSERT con una subconsulta en la tabla de
excepciones.

Si hay activadores INSERT y desea completar la operacin de carga con las filas
corregidas de las tablas de excepciones sin disparar los activadores:
v Disee los activadores INSERT para que se disparen dependiendo del valor de
una columna definida explcitamente para esta finalidad.
v Descargue los datos de las tablas de excepciones y adalos utilizando el
programa de utilidad de carga. En ese caso, si desea volver a comprobar los
datos, tenga en cuenta que la comprobacin de restricciones no est confinadas a
las filas aadidas.
v Guarde el texto de definicin del activador de la vista de catlogos del sistema
relevante. Despus elimine el activador INSERT y utilice INSERT para transferir
las filas corregidas de las tablas de excepciones. Finalmente, vuelva a crear el
activador utilizando la definicin del activador guardada.

No se realiza una provisin explcita para evitar que se disparen los activadores
cuando se insertan filas desde las tablas de excepciones.

Slo se informa de una violacin por fila para las violaciones de ndices exclusivos.

Si hay valores con series largas o con tipos de datos LOB en la tabla, los valores no
se insertarn en la tabla de excepciones en caso de violacin de ndices exclusivos.

Consulta de las tablas de excepciones


La estructura de la columna de mensajes de una tabla de excepciones es una lista
concatenada de nombres de restricciones, longitudes y delimitadores, tal como se
describe antes. Esta informacin se puede consultar.

Apndice K. Tablas de excepciones 881


Consulta de las tablas de excepciones

Por ejemplo, para recuperar una lista de todas las violaciones, repitiendo cada fila
con slo el nombre de la restriccin junto a ella, supongamos que la tabla T1
original tiene dos columnas: C1 y C2. Supongamos tambin que la tabla de
excepciones correspondiente, E1, tiene las columnas C1 y C2, que se corresponden
con las de la T1, as como una columna de mensajes, MSGCOL. La siguiente
consulta utiliza la recurrencia para enumerar un nombre de restriccin por fila
(que pertenece a las filas que tienen ms de una violacin):
WITH IV (C1, C2, MSGCOL, CONSTNAME, I, J) AS
(SELECT C1, C2, MSGCOL,
CHAR(SUBSTR(MSGCOL, 12,
INTEGER(DECIMAL(VARCHAR(SUBSTR(MSGCOL,7,5)),5,0)))),
1,
15+INTEGER(DECIMAL(VARCHAR(SUBSTR(MSGCOL,7,5)),5,0))
FROM E1
UNION ALL
SELECT C1, C2, MSGCOL,
CHAR(SUBSTR(MSGCOL, J+6,
INTEGER(DECIMAL(VARCHAR(SUBSTR(MSGCOL,J+1,5)),5,0)))),
I+1,
J+9+INTEGER(DECIMAL(VARCHAR(SUBSTR(MSGCOL,J+1,5)),5,0))
FROM IV
WHERE I < INTEGER(DECIMAL(VARCHAR(SUBSTR(MSGCOL,1,5)),5,0))
) SELECT C1, C2, CONSTNAME FROM IV;

Para mostrar todas las filas que han violado una restriccin concreta, la consulta
anterior se puede ampliar de la siguiente manera:
WITH IV (C1, C2, MSGCOL, CONSTNAME, I, J) AS
(SELECT C1, C2, MSGCOL,
CHAR(SUBSTR(MSGCOL, 12,
INTEGER(DECIMAL(VARCHAR(SUBSTR(MSGCOL,7,5)),5,0)))),
1,
15+INTEGER(DECIMAL(VARCHAR(SUBSTR(MSGCOL,7,5)),5,0))
FROM E1
UNION ALL
SELECT C1, C2, MSGCOL,
CHAR(SUBSTR(MSGCOL, J+6,
INTEGER(DECIMAL(VARCHAR(SUBSTR(MSGCOL,J+1,5)),5,0)))),
I+1,
J+9+INTEGER(DECIMAL(VARCHAR(SUBSTR(MSGCOL,J+1,5)),5,0))
FROM IV
WHERE I < INTEGER(DECIMAL(VARCHAR(SUBSTR(MSGCOL,1,5)),5,0))
) SELECT C1, C2, CONSTNAME FROM IV WHERE CONSTNAME = nombrerestriccin;

La consulta siguiente puede utilizarse para obtener todas las violaciones de


restricciones de comprobacin:
WITH IV (C1, C2, MSGCOL, CONSTNAME, CONSTTYPE, I, J) AS
(SELECT C1, C2, MSGCOL,
CHAR(SUBSTR(MSGCOL, 12,
INTEGER(DECIMAL(VARCHAR(SUBSTR(MSGCOL,7,5)),5,0)))),
CHAR(SUBSTR(MSGCOL, 6, 1)),
1,
15+INTEGER(DECIMAL(VARCHAR(SUBSTR(MSGCOL,7,5)),5,0))
FROM E1
UNION ALL
SELECT C1, C2, MSGCOL,
CHAR(SUBSTR(MSGCOL, J+6,
INTEGER(DECIMAL(VARCHAR(SUBSTR(MSGCOL,J+1,5)),5,0)))),
CHAR(SUBSTR(MSGCOL, J, 1)),
I+1,
J+9+INTEGER(DECIMAL(VARCHAR(SUBSTR(MSGCOL,J+1,5)),5,0))
FROM IV
WHERE I < INTEGER(DECIMAL(VARCHAR(SUBSTR(MSGCOL,1,5)),5,0))
) SELECT C1, C2, CONSTNAME FROM IV WHERE CONSTTYPE = K;

882 Consulta de SQL - Volumen 1


Apndice L. Sentencias de SQL que se permiten en rutinas
La tabla siguiente indica si se permite o no que la sentencia de SQL (especificada
en la primera columna) se ejecute en una rutina que tenga especificada la
indicacin de acceso a datos SQL. Si se encuentra una sentencia de SQL ejecutable
en una rutina definida con NO SQL, se devuelve SQLSTATE 38001. Para otros
contextos de ejecucin, las sentencias de SQL que no se soportan en ningn
contexto devuelven SQLSTATE 38003. Para otras sentencias de SQL no permitidas
en un contexto CONTAINS SQL, se devuelve SQLSTATE 38004. En un contexto
READS SQL DATA, se devuelve SQLSTATE 38002. Durante la creacin de una
rutina SQL, una sentencia que no coincida con la indicacin de acceso a datos SQL
hara que se devolviera SQLSTATE 42985.

Si una sentencia invoca una rutina, la indicacin de acceso a datos SQL efectiva
para la sentencia ser el mayor de:
v La indicacin de acceso a datos SQL de la sentencia de la tabla siguiente.
v La indicacin de acceso a datos SQL de la rutina especificada al crear la rutina.
Por ejemplo, la sentencia CALL tiene una indicacin de acceso a datos SQL de
CONTAINS SQL. Sin embargo, si se llama a un procedimiento almacenado
definido como READS SQL DATA, la indicacin de acceso a datos SQL efectiva
para la sentencia CALL es READS SQL DATA.

Cuando una sentencia invoca una sentencia SQL, la indicacin de acceso a datos
SQL efectiva para la sentencia no debe sobrepasar la indicacin de acceso a datos
SQL declarada para la rutina. Por ejemplo, una funcin definida como READS SQL
DATA no podra llamar a un procedimiento almacenado definido como MODIFIES
SQL DATA.
Tabla 204. Sentencia de SQL e indicacin del acceso a datos SQL
CONTAINS READS SQL MODIFIES
Sentencia de SQL NO SQL SQL DATA SQL DATA
ALTER... N N N S
BEGIN DECLARE S(1) S S S
SECTION
CALL N S S S
CLOSE N N S S
COMMENT ON N N N S
COMMIT N N(4) N(4) N(4)
COMPOUND SQL N S S S
CONNECT(2) N N N N
CREATE N N N S
DECLARE CURSOR S(1) S S S
DECLARE GLOBAL N N N S
TEMPORARY TABLE
DELETE N N N S
DESCRIBE N S S S
DISCONNECT(2) N N N N

Copyright IBM Corp. 1993, 2006 883


Sentencias de SQL que se permiten en rutinas

Tabla 204. Sentencia de SQL e indicacin del acceso a datos SQL (continuacin)
CONTAINS READS SQL MODIFIES
Sentencia de SQL NO SQL SQL DATA SQL DATA
DROP ... N N N S
END DECLARE SECTION S(1) S S S
EXECUTE N S(3) S(3) S
EXECUTE IMMEDIATE N S(3) S(3) S
EXPLAIN N N N S
FETCH N N S S
FREE LOCATOR N S S S
FLUSH EVENT MONITOR N N N S
GRANT ... N N N S
INCLUDE S(1) S S S
INSERT N N N S
LOCK TABLE N S S S
OPEN N N S (5) S
PREPARE N S S S
REFRESH TABLE N N N S
RELEASE N N N N
CONNECTION(2)
RELEASE SAVEPOINT N N N S
RENAME TABLE N N N S
REVOKE ... N N N S
ROLLBACK N N(4) N(4) N(4)
ROLLBACK TO N N N S
SAVEPOINT
SAVEPOINT N N N S
SELECT INTO N N S (5) S
SET CONNECTION(2) N N N N
SET INTEGRITY N N N S
SET registro especial N S S S
UPDATE N N N S
VALUES INTO N N S S
WHENEVER S(1) S S S

Notas:
1. Aunque la opcin NO SQL implica que no puede especificarse ninguna
sentencia de SQL, las sentencias no ejecutables no estn restringidas.
2. Las sentencias de gestin de conexiones no estn permitidas en ningn
contexto de ejecucin de rutinas.
3. Depende de la sentencia que se ejecute. La sentencia especificada para la
sentencia EXECUTE debe ser una sentencia que est permitida en el contexto
del nivel de acceso SQL que est vigente. Por ejemplo, si el nivel acceso SQL en
vigor es READS SQL DATA, la sentencia no deber ser INSERT, UPDATE ni
DELETE.

884 Consulta de SQL - Volumen 1


Sentencias de SQL que se permiten en rutinas

4. Es posible utilizar la sentencia COMMIT y la sentencia ROLLBACK sin la


clusula TO SAVEPOINT en un procedimiento almacenado, pero slo si se
llama al procedimiento almacenado directamente desde una aplicacin o
indirectamente mediante llamadas a procedimientos almacenados anidados
desde una aplicacin. (Si alguna sentencia de activador, funcin, mtodo o
compuesto atmico est en la cadena de llamada al procedimiento almacenado,
no se permite realizar COMMIT o ROLLBACK de una unidad de trabajo).
5. Si el nivel de acceso SQL en vigor es READS SQL DATA, no se puede
incorporar ninguna sentencia de cambio de datos de SQL en la sentencia
SELECT INTO ni el el cursor al que hace referencia la sentencia OPEN.

Apndice L. Sentencias de SQL que se permiten en rutinas 885


Sentencias de SQL que se permiten en rutinas

886 Consulta de SQL - Volumen 1


Apndice M. CALL invocada desde una sentencia compilada
Invoca un procedimiento almacenado en la ubicacin de una base de datos. Un
procedimiento, por ejemplo, se ejecuta en la ubicacin de la base de datos y
devuelve datos a la aplicacin cliente.

Los programas que utilizan la sentencia de SQL CALL se disean para ejecutarse
en dos partes, una en el cliente y la otra en el servidor. El procedimiento del
servidor en la base de datos se ejecuta en la misma transaccin que la aplicacin
cliente. Si la aplicacin cliente y el procedimiento estn en la misma particin de
base de datos, el procedimiento almacenado se ejecuta localmente.

Nota: Esta forma de la sentencia CALL ha quedado obsoleta y slo se suministra


por motivos de compatibilidad con las versiones anteriores de DB2.

Invocacin:

Esta forma de la sentencia CALL slo puede incorporarse en un programa de


aplicacin precompilado con la opcin CALL_RESOLUTION DEFERRED. No
puede invocar un procedimiento federado. No puede utilizarse en activadores,
procedimientos de SQL ni ningn otro contexto que no sea de aplicacin. Se trata
de una sentencia ejecutable que no puede prepararse de forma dinmica. No
obstante, el nombre de procedimiento puede especificarse mediante una variable
del lenguaje principal y esto, junto con el uso de la clusula USING DESCRIPTOR,
permite proporcionar tanto el nombre de procedimiento como la lista de
parmetros en tiempo de ejecucin, con lo que se consigue un efecto similar al de
una sentencia preparada dinmicamente.

Autorizacin:

Entre los privilegios que el ID de autorizacin de la sentencia necesita poseer


durante la ejecucin debe incluirse uno de los siguientes:
v Privilegio EXECUTE para el paquete asociado al procedimiento; no se
comprueba el privilegio EXECUTE en el procedimiento
v Privilegio CONTROL para el paquete asociado al procedimiento
v Autorizacin SYSADM o DBADM

Sintaxis:

 CALL nombre-procedimiento 
variable-lengpral ( )
,

 variable-lengpral
USING DESCRIPTOR nombre-descriptor

Descripcin:
nombre-procedimiento o variable-lengpral
Identifica el procedimiento que se va a llamar. El nombre de procedimiento
puede especificarse directamente o dentro de una variable del lenguaje
principal. El procedimiento identificado debe existir en el servidor actual
(SQLSTATE 42724).

Copyright IBM Corp. 1993, 2006 887


CALL invocada desde una sentencia compilada

Si se especifica el nombre-procedimiento, debe ser un identificador normal que no


sobrepase los 254 bytes. Como slo puede ser un identificador normal, no
puede contener blancos ni caracteres especiales. El valor se convierte a
maysculas. Si es necesario utilizar nombres en minsculas, blancos o
caracteres especiales, el nombre debe especificarse mediante una
variable-lengpral.
Si se especifica variable-lengpral, debe ser una variable CHAR o VARCHAR con
un atributo de longitud que no sobrepase los 254 bytes y no debe incluir una
variable indicadora. El valor no se convierte a maysculas. La serie de
caracteres debe estar justificada por la izquierda.
El nombre de procedimiento puede tener uno de estos formatos.
nombre-procedimiento
El nombre (sin extensin) del procedimiento que se va a ejecutar. El
procedimiento que se invoca se determina de la manera siguiente.
1. Se utiliza el nombre-procedimiento para buscar un procedimiento que
coincida en los procedimientos definidos (en SYSCAT.ROUTINES). Un
procedimiento que coincida se determina utilizando los pasos
siguientes.
a. Busque los procedimientos (ROUTINETYPE es P) del catlogo
(SYSCAT.ROUTINES), donde ROUTINENAME coincida con el
nombre-procedimiento especificado y ROUTINESCHEMA sea un
nombre de esquema en la va de acceso de SQL (registro especial
CURRENT PATH). Si el nombre de esquema est especificado
explcitamente, la va de acceso de SQL se ignora y slo se tienen en
cuenta los procedimientos con el nombre de esquema especificado.
b. Despus, elimine cualquiera de estos procedimientos que no tengan
el mismo nmero de parmetros que el nmero de argumentos
especificados en la sentencia CALL.
c. Elija el procedimiento restante que est antes en la va de acceso de
SQL.
Si se selecciona un procedimiento, DB2 invocar el procedimiento
definido por el nombre externo.
2. Si no se encuentra ningn procedimiento que coincida, se utiliza el
nombre-procedimiento como el nombre de la biblioteca de procedimientos
y el nombre de funcin dentro de dicha biblioteca. Por ejemplo, si el
nombre-procedimiento es proclib, el servidor DB2 cargar la biblioteca de
procedimientos proclib y ejecutar la rutina de funcin proclib()
dentro de esa biblioteca.
En los sistemas UNIX, el directorio por omisin para las bibliotecas de
procedimientos es sqllib/function. El directorio por omisin para los
procedimientos no delimitados es sqllib/function/unfenced .
En los sistemas basados en Windows, el directorio por omisin para las
bibliotecas de procedimientos es sqllib\function. El directorio por
omisin para los procedimientos no delimitados es
sqllib\function\unfenced.
Si no se ha encontrado la biblioteca o funcin, se devuelve un error
(SQLSTATE 42884).
biblioteca-procedimiento!nombre-funcin
El carcter de admiracin (!) acta como delimitador entre el nombre de
biblioteca y el nombre de funcin del procedimiento. Por ejemplo, si se
especifica proclib!func, se carga proclib en memoria y se ejecuta la

888 Consulta de SQL - Volumen 1


CALL invocada desde una sentencia compilada

funcin func desde esa biblioteca. Esto permite que se coloquen mltiples
funciones en la misma biblioteca de procedimientos.
La biblioteca de procedimientos est ubicada en los directorios o
especificada en la variable LIBPATH, tal como se describe en el
procedimiento-nombre.
va-absoluta!nombre-funcin
La va-absoluta especifica la va de acceso completa a la biblioteca de
procedimientos almacenados.
En un sistema UNIX, por ejemplo, si se especifica /u/terry/proclib!func,
se obtiene la biblioteca de procedimientos proclib del directorio /u/terry
y se ejecuta la funcin func desde esa biblioteca.

En todos estos casos, la longitud total del nombre de procedimiento, incluida


su va de acceso completa implcita o explcita, no debe tener una longitud
superior a 254 bytes.
(variable-lengpral,...)
Cada especificacin de variable-lengpral es un parmetro de la sentencia CALL.
El parmetron de CALL corresponde al parmetro n del procedimiento del
servidor.
Se supone que se utiliza cada variable-lengpral para intercambiar datos en
ambas direcciones entre cliente y servidor. Para evitar enviar datos innecesarios
entre cliente y servidor, la aplicacin cliente debe proporcionar una variable
indicadora con cada parmetro y establecer el indicador en -1 si el parmetro
no se utiliza para transmitir datos al procedimiento. El procedimiento debe
establecer la variable indicadora en -128 para cualquier parmetro que no se
utilice para devolver datos a la aplicacin cliente.
Si el servidor de bases de datos es DB2 9.1, los parmetros deben tener tipos
de datos coincidentes en el programa cliente y servidor.
USING DESCRIPTOR nombre-descriptor
Identifica una SQLDA que debe contener una descripcin vlida de las
variables del lenguaje principal. El elemento SQLVAR n corresponde al
parmetro n del procedimiento del servidor.
Antes de que se procese la sentencia CALL, la aplicacin debe definir los
campos siguientes de la SQLDA:
v SQLN para indicar el nmero de apariciones de SQLVAR proporcionadas en
la SQLDA
v SQLDABC para indicar el nmero de bytes de almacenamiento asignados
para la SQLDA
v SQLD para indicar el nmero de variables utilizadas en la SQLDA al
procesar la sentencia
v Las apariciones de SQLVAR, para indicar los atributos de las variables.
Deben inicializarse los siguientes campos de cada elemento pasado de
SQLVAR base:
SQLTYPE
SQLLEN
SQLDATA
SQLIND
Deben inicializarse los siguientes campos de cada elemento pasado de la
SQLVAR secundaria:

Apndice M. CALL invocada desde una sentencia compilada 889


CALL invocada desde una sentencia compilada

LEN.SQLLONGLEN
SQLDATALEN
SQLDATATYPE_NAME

Se supone que la SQLDA se utiliza para intercambiar datos en ambas


direcciones entre cliente y servidor. Para evitar enviar datos innecesarios entre
cliente y servidor, la aplicacin cliente debe establecer el campo SQLIND en -1
si el parmetro no se utiliza para transmitir datos al procedimiento. El
procedimiento debe establecer el campo SQLIND en -128 para cualquier
parmetro que no se utilice para devolver datos a la aplicacin cliente.

Notas:
v Utilizacin de tipos de datos de objeto grande (LOB):
Si la aplicacin cliente y servidora tiene que especificar datos LOB de una
SQLDA, asigne el doble al nmero de entradas SQLVAR.
Desde DB2 Versin 2, los procedimientos soportan los tipos de datos LOB. Estos
tipos de datos no estn soportados por todos los clientes o servidores de
versiones anteriores.
v Recuperacin de DB2_RETURN_STATUS desde un procedimiento SQL:
Si un procedimiento SQL emite satisfactoriamente una sentencia RETURN junto
con un valor de estado, este valor se coloca en el primer campo SQLERRD de la
SQLCA. Si la sentencia CALL se emite en un procedimiento SQL, utilice la
sentencia GET DIAGNOSTICS para recuperar el valor de
DB2_RETURN_STATUS. El valor es 1 cuando SQLSTATE indica un error.
v Devolucin de conjuntos de resultados de los procedimientos:
Si el programa de aplicacin cliente se escribe utilizando CLI, los conjuntos de
resultados pueden devolverse directamente a la aplicacin cliente. El
procedimiento indica que va a devolverse un conjunto de resultados declarando
un cursor en ese conjunto de resultados, abriendo un cursor en el conjunto de
resultados y dejando el cursor abierto al salir del procedimiento.
Al final de un procedimiento:
Por cada cursor que se ha dejado abierto, se devuelve un conjunto resultante
a la aplicacin.
Si se deja abierto ms de un cursor, los conjuntos del resultado se devuelven
en el orden en que se han abierto sus cursores.
Slo se devuelven las filas no ledas. Por ejemplo, si el conjunto de resultados
de un cursor tiene 500 filas, y el procedimiento ha ledo 150 de dichas filas
una vez que finaliza el procedimiento, se devolvern a la aplicacin desde la
fila 151 a la fila 500.
v Manejo de registros especiales:
Los valores de los registros especiales utilizados para el llamador los hereda el
procedimiento durante la invocacin y se restauran al devolver el control al
llamador. Los registros especiales se pueden modificar dentro de un
procedimiento, pero estos cambios no tienen efecto en el llamador. Esto no es
cierto para los procedimientos de versiones anteriores (aqullos definidos con el
estilo de parmetro DB2DARI o situados en la biblioteca por omisin), en los
que los cambios efectuados en los registros especiales de un procedimiento se
convierten en los valores del llamador.
v Compatibilidades
Existe una forma nueva, preferida de la sentencia CALL que puede incluirse en
una aplicacin (precompilando la aplicacin con la opcin CALL_RESOLUTION
IMMEDIATE) o que puede prepararse de forma dinmica.

890 Consulta de SQL - Volumen 1


CALL invocada desde una sentencia compilada

Ejemplos:

Ejemplo 1:

En C, invoque un procedimiento denominado TEAMWINS en la biblioteca


ACHIEVE, pasndole un parmetro almacenado en la variable del lenguaje
principal HV_ARGUMENT.
strcpy(HV_PROCNAME, "ACHIEVE!TEAMWINS");
CALL :HV_PROCNAME (:HV_ARGUMENT);

Ejemplo 2:

En C, invoque un procedimiento denominado :SALARY_PROC, utilizando la


SQLDA denominada INOUT_SQLDA.
struct sqlda *INOUT_SQLDA;
/* El cdigo de configuracin para variables SQLDA va aqu */
CALL :SALARY_PROC
USING DESCRIPTOR :*INOUT_SQLDA;

Ejemplo 3:

Un procedimiento Java se define en la base de datos, utilizando la sentencia


siguiente:
CREATE PROCEDURE PARTS_ON_HAND (IN PARTNUM INTEGER,
OUT COST DECIMAL(7,2),
OUT QUANTITY
INTEGER)
EXTERNAL NAME pieza!disponibles
LANGUAGE JAVA
PARAMETER STYLE DB2GENERAL;

Una aplicacin Java llama a este procedimiento utilizando el fragmento de cdigo


siguiente:
...
CallableStatement stpCall ;

String sql = "CALL PARTS_ON_HAND (?,?,?)";

stpCall = con.prepareCall( sql ) ; /* con es la conexin */

stpCall.setInt( 1, variable1 ) ;
stpCall.setBigDecimal( 2, variable2 ) ;
stpCall.setInt( 3, variable3 ) ;

stpCall.registerOutParameter( 2, Types.DECIMAL, 2 ) ;
stpCall.registerOutParameter( 3, Types.INTEGER ) ;

stpCall.execute() ;

variable2 = stpCall.getBigDecimal(2) ;
variable3 = stpCall.getInt(3) ;
...

Este fragmento de cdigo de aplicacin invocar el mtodo Javaonhand de la clase


parts, porque el nombre de procedimiento especificado en la sentencia CALL se
encuentra en la base de datos y tiene el nombre externo parts!onhand.

Informacin relacionada:
v Sentencia CALL en Consulta de SQL, Volumen 2

Apndice M. CALL invocada desde una sentencia compilada 891


CALL invocada desde una sentencia compilada

892 Consulta de SQL - Volumen 1


Apndice N. Consideraciones sobre el cdigo UNIX ampliado
(EUC) en japons y chino tradicional
El Cdigo UNIX ampliado (EUC) correspondiente a japons y chino tradicional
define un conjunto de reglas de codificacin que pueden dar soporte a entre 1 y 4
juegos de caracteres. En algunos casos, como el de EUC japons (eucJP) y EUC
chino tradicional (eucTW), un carcter se puede codificar utilizando ms d dos
bytes. El uso de este tipo de esquema de codificacin tiene implicaciones cuando se
utiliza como la pgina de cdigos del servidor de bases de datos o como el cliente
de bases de datos. Las consideraciones clave incluyen las siguientes:
v Expansin o contraccin de series cuando se realizan conversiones entre pginas
de cdigos EUC y pginas de cdigos de doble byte
v El uso de Universal Character Set-2 (UCS-2) como la pgina de cdigos para
datos grficos almacenados en un servidor de bases de datos definido con
pginas de cdigos eucJP (japons) o eucTW (chino tradicional).
Con la excepcin de estas consideraciones, el uso de EUC es coherente con el
soporte del juego de caracteres de doble byte (DBCS). En este manual (y en otros),
las referencias a doble byte se han modificado por multi byte para reflejar el soporte
de reglas de codificacin que permiten representaciones de caracteres que necesitan
ms de 2 bytes. Aqu se incluyen consideraciones detalladas sobre el soporte de
EUC en japons y chino tradicional. Esta informacin debe tenerla en cuenta
cualquiera que utilice SQL con un servidor de bases de datos EUC o con un cliente
de bases de datos EUC y cuando se utilice junto con informacin de desarrollo de
aplicaciones.

Elementos de idioma

Caracteres
Cada carcter de mltiples bytes se considera una letra con la excepcin del
carcter blanco de doble byte, que se considera un carcter especial.

Seales
Las letras alfabticas en minsculas multi byte no se convierten a maysculas. Esto
difiere de las letras alfabticas minsculas de un solo byte en seales, que
generalmente se convierten a maysculas.

Identificadores
Identificadores de SQL
La conversin entre una pgina de cdigos de doble byte y una pgina de cdigos
EUC puede dar lugar a la conversin de caracteres de doble byte en caracteres
multi byte codificados con ms de 2 bytes. Como resultado, un identificador que
cumpla con la longitud mxima de la pgina de cdigos de doble byte puede
superar la longitud en la pgina de cdigos EUC. La seleccin de identificadores
para este tipo de entorno se debe realizar con cuidado para evitar la ampliacin
ms all de la longitud mxima del identificador.

Copyright IBM Corp. 1993, 2006 893


Tipos de datos

Tipos de datos
Series de caracteres
En una base de datos MBCS, las series de caracteres pueden contener una
combinacin de caracteres de un juego de caracteres de un solo byte (SBCS) y de
juegos de caracteres multi byte (MBCS). Cuando se utilizan estas series, las
operaciones pueden proporcionar resultados diferentes si se basan en caracteres
(los datos se tratan como caracteres) o si se basan en bytes (los datos se tratan
como bytes). Compruebe la descripcin de la funcin o de la operacin para
determinar cmo se procesan las series mixtas.

Series grficas
Una serie grfica es una secuencia de datos de caracteres de doble byte. Para
permitir el almacenamiento de datos EUC en japons o en chino tradicional en
columnas grficas, los caracteres EUC se codifican en UCS-2. Los caracteres que no
son caracteres de doble byte bajo todos los esquemas de codificacin soportados
(por ejemplo, PC o EBCDIC DBCS) no se deben utilizar con columnas grficas. Los
resultados de utilizar caracteres que no sean los caracteres de doble byte puede dar
lugar a la sustitucin por caracteres de sustitucin durante la conversin. La
recuperacin de dichos datos no devolver el mismo valor que se ha entrado.

Asignaciones y comparaciones
Asignaciones de series: La conversin de una serie se realiza antes de la
asignacin. En los casos en los que interviene una pgina de cdigos eucJP/eucTW
y una pgina de cdigos DBCS, una serie de caracteres se puede ampliar (DBCS a
eucJP/eucTW) o reducir (eucJP/eucTW a DBCS). Esto puede dar lugar a errores en
la asignacin de almacenamiento y al truncado en la asignacin de recuperacin.
Cuando el error en la asignacin de almacenamiento se debe a la ampliacin
durante la conversin, se devuelve SQLSTATE 22524 en lugar de SQLSTATE 22001.

Paralelamente, las asignaciones en las que intervienen series grficas pueden dar
lugar a la conversin de un carcter de doble byte codificado UCS-2 en un carcter
de sustitucin en una pgina de cdigos de PC o EBCDIC DBCS para caracteres
que no tienen un carcter correspondiente de doble byte. Las asignaciones que
sustituyen caracteres por caracteres de sustitucin lo indicarn estableciendo el
campo SQLWARN10 de la SQLCA en W.

En casos de truncado durante la asignacin de recuperacin en la que intervienen


series de caracteres multi byte, el punto de truncado puede formar parte de un
carcter multi byte. En este caso, cada byte del fragmento de caracteres se sustituye
por un blanco de un solo byte. Esto significa que pueden aparecer ms de un
blanco de un solo byte al final de una serie de caracteres truncada.

Comparaciones de series: Las comparaciones de series se realizan byte a byte.


Las series de caracteres tambin utilizan la secuencia de clasificacin definida para
la base de datos. Las series grficas no utilizan la secuencia de clasificacin y, en
una base de datos eucJP o eucTW, se codifican utilizando UCS-2. Por lo tanto, la
comparacin de dos series de caracteres mixtas puede dar lugar a un resultado
diferente de la comparacin de dos series grficas, aunque contengan los mismos
caracteres. Paralelamente, el orden de clasificacin resultante de una columna de
caracteres mixtos y una columna grfica puede diferir.

Reglas para tipos de datos de resultados


El tipo de datos resultante para series de caracteres no se ve afectado por la
posible ampliacin de la serie. Por ejemplo, una unin de dos operandos CHAR

894 Consulta de SQL - Volumen 1


Reglas para tipos de datos de resultados

seguir siendo un CHAR. Sin embargo, si uno de los operandos de la serie de


caracteres se va a convertir de modo que la ampliacin mxima haga que el
atributo de longitud sea el ms largo de los dos operandos, entonces el atributo de
longitud de la serie de caracteres resultante se ve afectado. Por ejemplo, tengamos
en cuenta las expresiones de resultado de una expresin CASE que tienen los tipos
de datos VARCHAR(100) y VARCHAR(120). Supongamos que la expresin
VARCHAR(100) es una variable del lenguaje principal de serie mixta (que puede
necesitar conversin) y la expresin VARCHAR(120) es una columna en la base de
datos eucJP. El tipo de datos resultante es VARCHAR(200), puesto que
VARCHAR(100) se dobla para permitir la posible conversin. El mismo escenario
sin la intervencin de una base de datos eucJP o eucTW tendra el tipo de
resultado VARCHAR(120).

Tenga en cuenta que el hecho de doblar la longitud de la variable del lenguaje


principal se basa en el hecho de que el servidor de bases de datos es EUC en
japons o EUC en chino tradicional. Aunque el cliente sea tambin eucJP o eucTW,
se aplica la operacin de doblar. Esto permite que los clientes de doble byte y
multi byte utilicen el mismo paquete de aplicaciones.

Reglas para conversiones de series


Los tipos de operaciones que se listan en la seccin correspondiente del manual
Consulta de SQL pueden convertir operandos a la pgina de cdigos de la
aplicacin o de la base de datos.

Si estas operaciones se realizan en un entorno de pginas de cdigos mixtas que


incluya EUC en japons o en chino tradicional, se puede producir la ampliacin o
contraccin de operandos de series de caracteres mixtas. Por lo tanto, el tipo de
datos resultando tiene un atributo de longitud que da cabida a la ampliacin
mxima, si es posible. En los casos en los que hay restricciones sobre el atributo de
longitud de tipo de datos, se utiliza la longitud mxima permitida para el tipo de
datos. Por ejemplo, en un entorno en el que el crecimiento mximo es el doble, una
variable del lenguaje principal VARCHAR(200) se trata como si fuera
VARCHAR(400), pero una variable del lenguaje principal CHAR(200) se trata como
si fuera CHAR(254). Se puede producir un error en tiempo de ejecucin cuando se
realiza la conversin si la serie convertida supera la longitud mxima
correspondiente al tipo de datos. Por ejemplo, la unin de CHAR(200) y CHAR(10)
tendra el tipo de resultados CHAR(254). Cuando se convierte el valor de la parte
izquierda de la operacin UNION, se devuelve un error si se necesitan ms de 254
bytes.

En algunos casos, permitir el crecimiento mximo para la conversin hace que el


atributo de longitud supere un lmite. Por ejemplo, UNION slo permite columnas
de hasta 254 bytes. Por lo tanto, una consulta con una unin que incluyera una
variable del lenguaje principal en la lista de columnas (a la que denominaremos
:hv1) que fuera una serie de caracteres mixtos DBCS definida como una serie de
caracteres de longitud variable de 128 bytes de longitud establecera el tipo de
datos en VARCHAR(256), lo que dara lugar a un error al preparar la consulta,
aunque parecera que la consulta en la aplicacin no tuviera columnas de ms de
254. En una situacin en la que no sea probable que la serie real ocasione una
ampliacin ms all de 254 caracteres, se puede utilizar lo siguiente para preparar
la sentencia.
SELECT CAST(:hv1 CONCAT AS VARCHAR(254)), C2 FROM T1
UNION
SELECT C1, C2 FROM T2

Apndice N. Consideraciones sobre el cdigo UNIX ampliado (EUC) en japons y chino tradicional 895
Reglas para conversiones de series

La concatenacin de la serie nula con la variable del lenguaje principal forzar que
la conversin se realice antes de que se ejecute la conversin. Esta consulta se
puede preparar en el entorno DBCS a eucJP/eucTW, aunque puede producirse un
error de truncado en el momento de la ejecucin.

Esta tcnica (concatenacin de series nulas con conversin) se puede utilizar para
manejar el lmite de 254 bytes similar para SELECT DISTINCT o para utilizar la
columna en clusulas ORDER BY o GROUP BY.

Constantes
Constantes de series grficas
El cliente EUC en japons o chino tradicional puede contener caracteres de un solo
byte o multi byte (como una serie de caracteres mixtos). La serie no debe contener
ms de 2000 bytes. Se recomienda utilizar en constantes grficas nicamente
caracteres que se conviertan en caracteres de doble byte en todas las pginas de
cdigos de doble byte de PC y EBCDIC relacionadas. Una constante de serie
grfica de una sentencia SQL se convierte de la pgina de cdigos del cliente a la
codificacin de doble byte del servidor de bases de datos. Para un servidor EUC
en japons o chino tradicional, la constante se convierte a UCS-2, la codificacin de
doble byte utilizada para series grficas. Para un servidor de doble byte, la
constante se convierte de la pgina de cdigos del cliente a la pgina de cdigos
DBCS del servidor.

Funciones
En el diseo de funciones definidas por el usuario se debe tener en cuenta el
impacto del soporte de EUC en japons y chino tradicional en los tipos de datos de
parmetro. Una parte de la resolucin de funciones tiene en cuenta los tipos de
datos de los argumentos que se pasan a una llamada de funcin. Los argumentos
de series de caracteres mixtos en los que interviene un cliente EUC en japons o
chino tradicional puede requerir bytes adicionales para especificar el argumento.
Esto puede requerir que se modifique el tipo de datos para permitir un aumento
de longitud. Por ejemplo, pueden necesitarse 4001 bytes para representar una serie
de caracteres en la aplicacin (un LONG VARCHAR) que quepa en una serie
VARCHAR(4000) en el servidor. Si no se incluye una signatura de funcin que
permita que el argumento sea LONG VARCHAR, la resolucin de la funcin no
encontrar una funcin.

Existen algunas funciones que no permiten series largas por varios motivos. El uso
de argumentos LONG VARCHAR o CLOB con estas funciones no resultar
satisfactorio. Por ejemplo, LONG VARCHAR como el segundo argumento de la
funcin POSSTR integrada fallar en la resolucin de funcin (SQLSTATE 42884).

Expresiones
Con el operador de concatenacin
La ampliacin potencial de uno de los operandos de la concatenacin puede hacer
que el tipo de datos y la longitud de los operandos concatenados se modifique
cuando se trabaja en un entorno que incluya un servidor de ases de datos EUC en
japons o chino tradicional. Por ejemplo, con un servidor EUC en el que el valor
de una variable del lenguaje principal puede doblar su longitud, tenga en cuenta el
siguiente ejemplo.
CHAR200 CONCAT :char50

896 Consulta de SQL - Volumen 1


Con el operador de concatenacin

La columna CHAR200 es de tipo CHAR(200). La variable del lenguaje principal


char50 est definida como CHAR(50). El tipo de resultado correspondiente a este
operando de concatenacin sera normalmente CHAR(250). Sin embargo, con un
servidor de bases de datos eucJP o eucTW, la suposicin es que la serie se puede
ampliar hasta doblar la longitud. Por lo tanto, char50 se trata como un CHAR(100)
y el tipo de datos resultante es VARCHAR(300). Tenga en cuenta que, aunque el
resultado sea un VARCHAR, siempre tendr 300 bytes de datos, incluidos los
blancos finales. Si no se desean los blancos finales adicionales, se debe definir la
variable del lenguaje principal como VARCHAR(50) en lugar de CHAR(50).

Predicados
Predicado LIKE
Para un predicado LIKE en el que intervienen series de caracteres mixtos en una
base de datos EUC:
v Un carcter de subrayado de media anchura SBCS hace referencia a un carcter
SBCS.
v Un carcter de subrayado de anchura completa no SBCS hace referencia a un
carcter no SBCS.
v Un carcter de signo de porcentaje de media anchura SBCS o de anchura
completa no SBCS hace referencia a cero o ms caracteres SBCS o no SBCS.
El carcter de escape debe ser un carcter SBCS o no SBCS. En una columna de
caracteres, el carcter de escape tambin puede ser una serie binaria que contenga
exactamente un byte.

Tenga en cuenta que el uso del carcter de subrayado puede producir diferentes
resultados, en funcin de la pgina de cdigos de la operacin LIKE. Por ejemplo,
los caracteres Katakana en EUC en japons son caracteres multi byte (CS2), pero en
la pgina de cdigos DBCS en japons son caracteres de un solo byte. Una consulta
con el carcter de subrayado de un solo byte en la expresin-patrn devolvera
ocurrencias de carcter Katakana en la posicin del carcter de subrayado
procedentes de un servidor DBCS en japons. Sin embargo, las mismas filas
procedentes de la tabla equivalente en un servidor EUC en japons no se
devolveran, puesto que los caracteres Katakana slo coincidirn con un carcter de
subrayado de doble byte.

Para un predicado LIKE en el que intervienen series grficas en una base de datos
EUC:
v Un carcter de subrayado de anchura completa (U+FF3F) hace referencia a un
carcter Unicode.
v Un carcter de signo de porcentaje de anchura completa (U+FF05) hace
referencia a cero o ms caracteres Unicode.

Funciones

LENGTH
El proceso de esta funcin no difiere para series de caracteres mixtos en un entorno
EUC. El valor devuelto es la longitud de la serie en la pgina de cdigos del
argumento. Al igual que en la Versin 8, si el argumento es una variable del
lenguaje principal, el valor devuelto es la longitud de la serie en la pgina de
cdigos de la base de datos. Cuando se utiliza esta funcin para determinar la
longitud de un valor, se debe tener en cuenta cmo se utiliza la longitud. Esto
resulta especialmente cierto para constantes de series mixtas, ya que la longitud se

Apndice N. Consideraciones sobre el cdigo UNIX ampliado (EUC) en japons y chino tradicional 897
LENGTH

proporciona en bytes, no en caracteres. Por ejemplo, la longitud de una columna


de series mixtas en una base de datos DBCS devuelta por la funcin LENGTH
puede ser menor que la longitud del valor recuperado de dicha columna en un
cliente eucJP o eucTW debido a la conversin de algunos caracteres DBCS en
caracteres eucJP o eucTW multi byte.

SUBSTR
La funcin SUBSTR opera sobre series de caracteres mixtos byte a byte. La serie
resultante puede incluir, por tanto, fragmentos de caracteres multi byte al principio
o al final de la serie resultante. No se proporciona ningn proceso para detectar o
procesar fragmentos de caracteres.

TRANSLATE
La funcin TRANSLATE da soporte a series de caracteres mixtos que incluyen
caracteres multi byte. Los caracteres correspondientes de exp-a-serie y exp-de-serie
deben tener el mismo nmero de bytes y no puede terminar con parte de un
carcter multi byte.

La exp-car-rell debe dar lugar a un carcter de un solo byte cuando la exp-serie-car


es una serie de caracteres. Puesto que TRANSLATE se ejecuta en la pgina de
cdigos de la exp-serie-car, la exp-car-rell se puede convertir de un carcter multi
byte a un carcter de un solo byte.

En una exp-serie-car que termine con parte de un carcter multi byte no se


convertirn estos bytes.

VARGRAPHIC
La funcin VARGRAPHIC sobre un operando de serie de caracteres en una pgina
de cdigos EUC en japons o chino tradicional devuelve una serie grfica en la
pgina de cdigos UCS-2.
v Los caracteres de un solo byte se convierten primero a su carcter
correspondiente de doble byte en el juego de cdigos al que pertenecen (eucJP o
eucTW). Luego se convierten a la representacin UCS-2 correspondiente. Si no
hay ninguna representacin de doble byte, el carcter se convierte al carcter de
sustitucin de doble byte definido para dicho juego de cdigos antes de que se
convierta a la representacin UCS-2.
v Los caracteres de eucJP que son Katakana (eucJP CS2) son realmente caracteres
de un solo byte en algunos esquemas de codificacin. Por lo tanto, se convierten
a los caracteres correspondientes de doble byte en eucJP o al carcter de
sustitucin de doble byte antes de que se conviertan a UCS-2.
v Los caracteres multi byte se convierten a sus representaciones UCS-2.

Sentencias

CONNECT
El proceso de una sentencia CONNECT satisfactoria devuelve informacin en la
SQLCA que es importante cuando existen la posibilidad de que las aplicaciones
procesen datos en un entorno que incluya una pgina de cdigos EUC en japons
o chino tradicional en el cliente o servidor. El campo SQLERRD(1) proporciona la
mxima ampliacin de una serie de caracteres mixtos cuando se convierte de la
pgina de cdigos de la aplicacin a la pgina de cdigos de la base de datos. El
campo SQLERRD(2) proporciona la mxima ampliacin de una serie de caracteres
mixtos cuando se convierte de la pgina de cdigos de la base de datos a la pgina
898 Consulta de SQL - Volumen 1
CONNECT

de cdigos de la aplicacin. El valor es positivo si se puede producir una


ampliacin y negativo si se puede producir una contraccin. Si el valor es
negativo, el valor es siempre -1 ya que el peor de los casos que no se produzca
contraccin y que se necesite la longitud completa de la serie tras la conversin. El
valor positivo mximo es 2, lo que significa que, en el peor de los casos, puede ser
necesario doblar la longitud de la serie para la serie de caracteres tras la
conversin.

La pgina de cdigos del servidor de aplicaciones y del cliente de aplicaciones


tambin estn disponibles en el campo SQLERRMC de la SQLCA.

PREPARE
Los tipos de datos determinados para marcadores de parmetros sin tipo no se
modifican en un entorno que incluye EUD en japons o chino tradicional. Como
resultado, puede ser necesario en algunos casos utilizar marcadores de parmetros
con tipo para proporcionar longitud suficiente para series de caracteres mixtos en
eucJP o eucTW. Por ejemplo, tenga en cuenta una insercin en una columna
CHAR(10). La preparacin de la sentencia:
INSERT INTO T1 (CH10) VALUES (?)

dara lugar a un tipo de datos CHAR(10) para el marcador de parmetro. Si el


cliente fuera eucJP o eucTW, se necesitaran ms de 10 bytes para representar la
serie que se tiene que insertar, pero la misma serie en la pgina de cdigos DBCS
de la base de datos no tiene ms de 10 bytes. En este caso, la sentencia para
preparar incluira un marcador de parmetro con tipo con una longitud mayor que
10. Por lo tanto, la preparacin de la sentencia:
INSERT INTO T1 (CH10) VALUES (CAST(? AS VARCHAR(20))

dara lugar a un tipo de datos VARCHAR(20) para el marcador de parmetro.

Informacin relacionada:
v Sentencia PREPARE en Consulta de SQL, Volumen 2

Apndice N. Consideraciones sobre el cdigo UNIX ampliado (EUC) en japons y chino tradicional 899
PREPARE

900 Consulta de SQL - Volumen 1


Apndice O. Especificaciones de formato de Backus-Naur
(BNF) para los enlaces de datos
Un valor DATALINK es un valor encapsulado que contiene una referencia lgica
de la base de datos a un archivo almacenado fuera de la base de datos.

El atributo de ubicacin de datos de este valor encapsulado es una referencia


lgica expresada en forma de un localizador uniforme de recursos (URL). El valor
de este atributo sigue la sintaxis aplicable a los URL basada en el RFC 1738:
Uniform Resource Locators (URL), T. Berners-Lee, L. Masinter, M. McCahill,
December 1994 (BNF es un acrnimo de Backus-Naur Form, una notacin formal
para describir la sintaxis de un lenguaje determinado.)

Se utilizan los convenios siguientes en la especificacin BNF:


v "|" designa alternativas
v los corchetes [ ] delimitan elementos opcionales o repetidos
v los literales aparecen entre comillas dobles ""
v los elementos pueden ir precedidos por [n]* para representar n o ms
repeticiones del elemento que sigue; si no se especifica n, el valor por omisin es
0

Especificacin BNF para enlaces de datos (DATALINK):


URL
url = httpurl | fileurl | uncurl | emptyurl
HTTP
httpurl = "http://" hostport [ "/" hpath ]
hpath = hsegment *[ "/" hsegment ]
hsegment = *[ uchar | ";" | ":" | "@" | "&" | "=" ]

Observe que se ha eliminado el elemento de bsqueda existente en la


especificacin BNF original definida en el RFC1738, pues no es una parte
esencial de la referencia a archivo y no tiene ninguna utilidad en el contexto de
los enlaces de datos.
FILE
fileurl = "file://" host "/" fpath
fpath = fsegment *[ "/" fsegment ]
fsegment = *[ uchar | "?" | ":" | "@" | "&" | "=" ]

Observe que host no es opcional y la serie localhost no tiene ningn


significado especial, a diferencia de RFC1738. Con ello se evitan
interpretaciones confusas de localhost en las configuraciones cliente/servidor
y de bases de datos particionadas.
UNC
uncurl = "unc:\\" hostname "\" sharename "\" uncpath
sharename = *uchar
uncpath = fsegment *[ "\" fsegment ]

Se da soporte al convenio UNC habitual para nombres en Windows. Esto no es


un modelo estndar en RFC1738.
EMPTYURL

Copyright IBM Corp. 1993, 2006 901


Especificaciones de formato de Backus-Naur (BNF) para los enlaces de datos

emptyurl = ""
hostport = host [ ":" port ]
host = hostname | hostnumber
hostname = *[ domainlabel "." ] toplabel
domainlabel = alphadigit | alphadigit *[ alphadigit | "-" ] alphadigit
toplabel = alpha | alpha *[ alphadigit | "-" ] alphadigit
alphadigit = alpha | digit
hostnumber = digits "." digits "." digits "." digits
port = digits

Los URL vacos (de longitud cero) tambin pueden utilizarse para valores de
tipo DATALINK. Son tiles para actualizar columnas DATALINK cuando se
notifican excepciones de reconciliacin e intervienen columnas DATALINK que
no pueden contener nulos. Se utiliza un URL de longitud cero para actualizar la
columna y provocar la desconexin de un archivo.
Definiciones varias
lowalpha = "a" | "b" | "c" | "d" | "e" | "f" | "g" | "h" |
"i" | "j" | "k" | "l" | "m" | "n" | "o" | "p" |
"q" | "r" | "s" | "t" | "u" | "v" | "w" | "x" |
"y" | "z"
hialpha = "A" | "B" | "C" | "D" | "E" | "F" | "G" | "H" |
"I" | "J" | "K" | "L" | "M" | "N" | "O" | "P" |
"Q" | "R" | "S" | "T" | "U" | "V" | "W" | "X" |
"Y" | "Z"
alpha = lowalpha | hialpha
digit = "0" | "1" | "2" | "3" | "4" | "5" | "6" | "7" |
"8" | "9"
safe = "$" | "-" | "_" | "." | "+"
extra = "!" | "*" | "'" | "(" | ")" | ","
hex = digit | "A" | "B" | "C" | "D" | "E" | "F" |
"a" | "b" | "c" | "d" | "e" | "f"
escape = "%" hex hex
unreserved = alpha | digit | safe | extra
uchar = unreserved | escape
digits = 1*digit

Los caracteres en blanco iniciales y de cola son eliminados por DB2 durante el
anlisis sintctico. Adems, los nombres de esquema (HTTP, FILE, UNC) y de
lenguaje principal no son sensibles a las maysculas/minsculas y siempre se
guardan en maysculas en la base de datos.

902 Consulta de SQL - Volumen 1


Apndice P. Informacin tcnica sobre DB2 Database
Visin general de la informacin tcnica de DB2
La informacin tcnica de DB2 est disponible a travs de las herramientas y los
mtodos siguientes:
v Centro de informacin de DB2
Temas
Ayuda para herramientas de DB2
Programas de ejemplo
Guas de aprendizaje
v Manuales de DB2
Archivos PDF (descargables)
Archivos PDF (del CD en PDF de DB2)
manuales en copia impresa
v Ayuda de lnea de mandatos
Ayuda de mandatos
Ayuda de mensajes
v Programas de ejemplo

IBM proporciona peridicamente actualizaciones de la documentacin. Si accede a


la versin en lnea del Centro de informacin de DB2 en ibm.com, no es necesario
que instale las actualizaciones de la documentacin porque IBM mantiene
actualizada esta versin. Si ha instalado el Centro de informacin de DB2, es
recomendable instalar las actualizaciones de la documentacin. Las actualizaciones
de la documentacin permiten actualizar la informacin que instal desde el CD
del Centro de informacin de DB2 o que descarg de Passport Advantage a
medida que informacin nueva pasa a estar disponible.

Nota: Los temas del Centro de informacin de DB2 se actualizan con ms


frecuencia que los manuales en PDF o impresos. Para obtener la informacin
ms actualizada, instale las actualizaciones de la documentacin cuando
estn disponibles, o consulte el Centro de informacin de DB2 en ibm.com.

Puede acceder a informacin tcnica adicional de DB2 como, por ejemplo, notas
tcnicas, White papers y Redbooks en lnea en el sitio ibm.com. Acceda al sitio de
la biblioteca de software de gestin de informacin de DB2 en
http://www.ibm.com/software/data/sw-library/.

Comentarios sobre la documentacin


Agradecemos los comentarios sobre la documentacin de DB2. Si tiene sugerencias
sobre cmo podemos mejorar la documentacin de DB2, enve un correo
electrnico a db2docs@ca.ibm.com. El personal encargado de la documentacin de
DB2 lee todos los comentarios de los usuarios, pero no puede responder
directamente a cada uno. Proporcione ejemplos especficos siempre que sea posible
de manera que podamos comprender mejor sus problemas. Si realiza comentarios
sobre un tema o archivo de ayuda determinado, incluya el ttulo del tema y el
URL.

Copyright IBM Corp. 1993, 2006 903


No utilice esta direccin de correo electrnico para contactar con el Servicio al
cliente de DB2. Si tiene un problema tcnico de DB2 que no est tratado por la
documentacin, consulte al centro local de servicio tcnico de IBM para obtener
ayuda.

Conceptos relacionados:
v Caractersticas del Centro de informacin de DB2 en Centro de informacin de
DB2 en lnea
v Archivos de ejemplo en Temas de ejemplos

Tareas relacionadas:
v Invocacin de ayuda de mandatos desde el procesador de lnea de mandatos
en Consulta de mandatos
v Invocacin de ayuda de mensajes desde el procesador de lnea de mandatos
en Consulta de mandatos
v Actualizacin del Centro de informacin de DB2 instalado en el sistema o en
un servidor de intranet en la pgina 909

Informacin relacionada:
v Biblioteca tcnica de DB2 en formato PDF en la pgina 904

Biblioteca tcnica de DB2 en formato PDF


Las tablas siguientes describen la biblioteca de DB2 que est disponible en el
Centro de publicaciones de IBM en www.ibm.com/shop/publications/order.

Aunque las tablas identifican los manuales en copia impresa disponibles, puede
que dichos manuales no estn disponibles en su pas o regin.

La informacin de estos manuales es fundamental para todos los usuarios de DB2;


esta informacin le resultar til tanto si es un programador o un administrador de
bases de datos como si trabaja con DB2 Connect u otros productos de DB2.
Tabla 205. Informacin tcnica de DB2
Nombre Nmero de documento Copia impresa disponible
Administration Guide: SC10-4221 S
Implementation
Administration Guide: Planning SC10-4223 S
Consulta de las API SC11-3192 S
administrativas
Vistas y rutinas administrativas SC11-3194 No
SQL
Call Level Interface Guide and SC10-4224 S
Reference, Volume 1
Call Level Interface Guide and SC10-4225 S
Reference, Volume 2
Consulta de mandatos SC11-3179 No
Data Movement Utilities Guide SC10-4227 S
and Reference
Data Recovery and High SC10-4228 S
Availability Guide and Reference

904 Consulta de SQL - Volumen 1


Tabla 205. Informacin tcnica de DB2 (continuacin)
Nombre Nmero de documento Copia impresa disponible
Desarrollo de aplicaciones SC11-3178 S
ADO.NET y OLE DB
Desarrollo de aplicaciones de SQL SC11-3190 S
incorporado
Desarrollo de SQL y rutinas SC11-3381 No
externas
Desarrollo de aplicaciones Java SC11-3189 S
Desarrollo de aplicaciones Perl y SC11-3187 No
PHP
Iniciacin al desarrollo de SC11-3188 S
aplicaciones de bases de datos
Iniciacin a la instalacin y GC11-3195 S
administracin de DB2 en Linux
y Windows
Consulta de mensajes Volumen 1 SC11-3184 No
Consulta de mensajes Volumen 2 SC11-3198 No
Gua de migracin GC11-3196 S
Net Search Extender Gua de SH10-9290 S
administracin y del usuario
Nota: El HTML para este
documento no se instala desde
el CD de documentacin
HTML.
Performance Guide SC10-4222 S
Query Patroller Administration GC10-4241 S
and Users Guide
Gua rpida de iniciacin para GC11-3182 No
clientes DB2
Gua rpida de iniciacin para GC11-3181 S
servidores DB2
Spatial Extender y Geodetic Data SC11-3229 S
Management Feature Gua del
usuario y manual de consulta
Gua de SQL SC11-3191 S
Consulta de SQL, Volumen 1 SC11-3180 S
Consulta de SQL, Volumen 2 SC11-3193 S
System Monitor Guide and SC10-4251 S
Reference
Troubleshooting Guide GC10-4240 No
Gua de aprendizaje de Visual SC11-3357 No
Explain
Novedades SC11-3185 S
XML Extender Administracin y SC11-3230-00 S
programacin
XML Guide SC10-4254 S
XQuery Reference SC18-9796 S

Apndice P. Informacin tcnica sobre DB2 Database 905


Tabla 206. Informacin tcnica especfica de DB2 Connect
Nombre Nmero de documento Copia impresa disponible
DB2 Connect Gua del usuario SC11-3197 S
Quick Beginnings for DB2 GC10-4244 S
Connect Personal Edition
Gua rpida de iniciacin para GC11-3183 S
servidores DB2 Connect

Tabla 207. Informacin tcnica de integracin de la informacin de WebSphere


Nombre Nmero de documento Copia impresa disponible
WebSphere Information SC19-1020 S
Integration: Administration Guide
for Federated Systems
WebSphere Information SC19-1018 S
Integration: ASNCLP Program
Reference for Replication and
Event Publishing
WebSphere Information SC19-1034 No
Integration: Configuration Guide
for Federated Data Sources
WebSphere Information SC19-1030 S
Integration: SQL Replication
Guide and Reference

Nota: Las Notas de release de DB2 proporcionan informacin adicional especfica


para el release del producto y el nivel de fixpack. Para obtener ms
informacin, consulte los enlaces relacionados.

Conceptos relacionados:
v Visin general de la informacin tcnica de DB2 en la pgina 903
v Acerca de las notas del release en Notas del release

Tareas relacionadas:
v Pedido de manuales de DB2 en copia impresa en la pgina 906

Pedido de manuales de DB2 en copia impresa


Si necesita manuales de DB2 en copia impresa, puede comprarlos en lnea en
varios, pero no en todos los pases o regiones. Siempre puede hacer pedidos de
manuales de DB2 en copia impresa a travs del representante local de IBM.
Recuerde que algunos manuales en copia software del CD Documentacin en PDF
de DB2 no estn disponibles en copia impresa. Por ejemplo, ningn volumen de
Consulta de mensajes de DB2 est disponible como manual impreso.

Las versiones impresas de muchos de los manuales de DB2 disponibles en el CD


de la Documentacin PDF de DB2 se pueden solicitar a IBM por una cantidad.
Dependiendo desde dnde realice el pedido, podr solicitar manuales en lnea,
desde el Centro de publicaciones de IBM. Si la realizacin de pedidos en lnea no
est disponible en su pas o regin, siempre puede hacer pedidos de manuales de

906 Consulta de SQL - Volumen 1


DB2 en copia impresa al representante local de IBM. Tenga en cuenta que no todos
los manuales del CD de la Documentacin PDF de DB2 estn disponibles en copia
impresa.

Nota: La documentacin ms actualizada y completa de DB2 se mantiene en el


Centro de informacin de DB2 en el sitio http://publib.boulder.ibm.com/
infocenter/db2help/.

Procedimiento:

Para hacer pedidos de manuales de DB2 en copia impresa:


v Para averiguar si puede hacer pedidos de manuales de DB2 en copia impresa en
lnea en su pas o regin, consulte el Centro de publicaciones de IBM en el sitio
http://www.ibm.com/shop/publications/order. Debe seleccionar un pas, regin
o idioma para poder acceder a la informacin sobre pedidos de publicaciones y,
a continuacin, seguir las instrucciones sobre pedidos para su localidad.
v Para hacer pedidos de manuales de DB2 en copia impresa a travs del
representante local de IBM:
Localice la informacin de contacto de su representante local desde uno de
los siguientes sitios Web:
- El directorio de IBM de contactos en todo el mundo en el sitio
www.ibm.com/planetwide
- El sitio Web de publicaciones de IBM en el sitio http://www.ibm.com/
shop/publications/order. Tendr que seleccionar su pas, regin o idioma
para acceder a la pgina de presentacin de las publicaciones apropiadas
para su localidad. Desde esta pgina, siga el enlace Acerca de este sitio.
Cuando llame, indique que desea hacer un pedido de una publicacin de
DB2.
Proporcinele al representante los ttulos y los nmeros de documento de los
manuales que desee solicitar .

Conceptos relacionados:
v Visin general de la informacin tcnica de DB2 en la pgina 903

Informacin relacionada:
v Biblioteca tcnica de DB2 en formato PDF en la pgina 904

Visualizacin de la ayuda para estados de SQL desde el procesador


de lnea de mandatos
DB2 devuelve un valor de SQLSTATE para las condiciones que pueden ser el
resultado de una sentencia de SQL. La ayuda de SQLSTATE explica los
significados de los estados de SQL y los cdigos de las clases de estados de SQL.

Procedimiento:

Para invocar la ayuda para estados de SQL, abra el procesador de lnea de


mandatos y entre:
? sqlstate o ? cdigo de clase

donde sqlstate representa un estado de SQL vlido de cinco dgitos y cdigo de clase
representa los dos primeros dgitos del estado de SQL.

Apndice P. Informacin tcnica sobre DB2 Database 907


Por ejemplo, ? 08003 visualiza la ayuda para el estado de SQL 08003, y ? 08
visualiza la ayuda para el cdigo de clase 08.

Tareas relacionadas:
v Invocacin de ayuda de mandatos desde el procesador de lnea de mandatos
en Consulta de mandatos
v Invocacin de ayuda de mensajes desde el procesador de lnea de mandatos
en Consulta de mandatos

Acceso a diferentes versiones del Centro de informacin de DB2


Para obtener los temas de DB2 Versin 9, la URL del Centro de informacin de
DB2 es http://publib.boulder.ibm.com/infocenter/db2luw/v9/.

Para obtener los temas de DB2 Versin 8, vaya a la URL del Centro de informacin
Versin 8 en: http://publib.boulder.ibm.com/infocenter/db2luw/v8/.

Tareas relacionadas:
v Setting up access to DB2 contextual help and documentation en Administration
Guide: Implementation

Visualizacin de temas en el idioma preferido en el Centro de


informacin de DB2
El Centro de informacin de DB2 intenta visualizar los temas en el idioma
especificado en las preferencias del navegador. Si un tema no se ha traducido al
idioma preferido, el Centro de informacin de DB2 visualiza dicho tema en ingls.

Procedimiento:

Para visualizar temas en su idioma preferido en el navegador Internet Explorer:


1. En Internet Explorer, pulse en el botn Herramientas > Opciones de Internet
> Idiomas.... Se abrir la ventana Preferencias de idioma.
2. Asegrese de que su idioma preferido est especificado como la primera
entrada de la lista de idiomas.
v Para aadir un nuevo idioma a la lista, pulse el botn Agregar....

Nota: La adicin de un idioma no garantiza que el sistema tenga los fonts


necesarios para visualizar los temas en el idioma preferido.
v Para mover un idioma hacia el principio de la lista, seleccione el idioma y
pulse el botn Subir hasta que el idioma est en primer lugar en la lista de
idiomas.
3. Limpie la antememoria del navegador y, a continuacin, renueve la pgina para
visualizar el Centro de informacin de DB2 en su idioma preferido.

Para visualizar temas en su idioma preferido en un navegador Firefox o Mozilla:


1. Seleccione el botn Herramientas > Opciones > Idiomas. Se visualizar el
panel Idiomas en la ventana Preferencias.
2. Asegrese de que su idioma preferido est especificado como la primera
entrada de la lista de idiomas.

908 Consulta de SQL - Volumen 1


v Para aadir un nuevo idioma a la lista, pulse el botn Aadir... a fin de
seleccionar un idioma en la ventana Aadir idiomas.
v Para mover un idioma hacia el principio de la lista, seleccione el idioma y
pulse el botn Subir hasta que el idioma est en primer lugar en la lista de
idiomas.
3. Limpie la antememoria del navegador y, a continuacin, renueve la pgina para
visualizar el Centro de informacin de DB2 en su idioma preferido.

En algunas combinaciones de navegador y sistema operativo, puede que tambin


tenga que cambiar los valores regionales del sistema operativo al entorno local y al
idioma de su eleccin.

Conceptos relacionados:
v Visin general de la informacin tcnica de DB2 en la pgina 903

Actualizacin del Centro de informacin de DB2 instalado en el


sistema o en un servidor de intranet
Si ha instalado localmente un Centro de informacin de DB2, puede descargar
temas actualizados. El valor de 'ltima actualizacin' que se encuentra la final de
la mayora de los temas indica el nivel actual de ese tema.

Para determinar si hay una actualizacin disponible para todo el Centro de


informacin de DB2, busque el valor de 'ltima actualizacin' en la pgina Web
inicial del Centro de informacin. Compare el valor contenido en la pgina Web
inicial instalada localmente con la fecha de la actualizacin descargable ms
reciente contenida en http://www.ibm.com/software/data/db2/udb/support/
icupdate.html. Puede actualizar el Centro de informacin instalado localmente si
est disponible una actualizacin descargable ms reciente.

Para actualizar el Centro de informacin de DB2 instalado localmente debe:


1. Detener el Centro de informacin de DB2 en el sistema, y reiniciar el Centro de
informacin en modalidad autnoma. La ejecucin del Centro de informacin
en modalidad autnoma impide que otros usuarios de la red accedan al Centro
de informacin, y permite descargar y aplicar actualizaciones.
2. Utilice la funcin Actualizar para determinar si hay paquetes de actualizacin
disponibles en IBM.

Nota: Tambin existen actualizaciones en CD. Para conocer detalles sobre cmo
configurar el Centro de informacin para instalar actualizaciones desde
CD, vea los enlaces correspondientes.
Si hay paquetes de actualizacin disponibles, utilice la funcin Actualizar para
descargar los paquetes. (La funcin actualizar slo est disponible en
modalidad autnoma.)
3. Detenga el Centro de informacin autnomo y reinicie el servicio Centro de
informacin de DB2 en el sistema.

Procedimiento:

Para actualizar el Centro de informacin de DB2 instalado en el sistema o en el


servidor de intranet:
1. Detenga el servicio Centro de informacin de DB2.

Apndice P. Informacin tcnica sobre DB2 Database 909


v En Windows, pulse en Inicio Panel de control Herramientas
administrativas Servicios. Despus, pulse con el botn derecho del ratn
en el servicio Centro de informacin de DB2 y seleccione Detener.
v En Linux, especifique el mandato siguiente:
/etc/init.d/db2icdv9 stop
2. Inicie el Centro de informacin en modalidad autnoma.
v En Windows:
a. Abra una ventana de mandatos.
b. Navegue a la va de acceso en la que est instalado el Centro de
informacin. Por omisin, el Centro de informacin de DB2 est instalado
en el directorio C:\Archivos de programa\IBM\Centro de informacin de
DB2\Versin 9.
c. Ejecute el archivo help_start.bat utilizando la va de acceso
completamente calificada para el Centro de informacin de DB2:
<directorio de Centro de informacin de DB2>\doc\bin\help_start.bat
v En Linux:
a. Vaya hasta la va de acceso en la que est instalado el Centro de
informacin. Por omisin, el Centro de informacin de DB2 est instalado
en el directorio /opt/ibm/db2ic/V9.
b. Ejecute el script help_start utilizando la va de acceso totalmente
calificada del Centro de informacin de DB2:
<directorio del Centro de informacin de DB2>/doc/bin/help_start
Se inicia el navegador Web por omisin de los sistemas para visualizar el
Centro de informacin autnomo.
3. Pulse en el botn Actualizar ( ). En la derecha del panel del Centro de
informacin, pulse en Buscar actualizaciones. Se visualiza una lista de
actualizaciones para la documentacin existente.
4. Para iniciar el proceso de descarga, compruebe las selecciones que desea
descargar, despus pulse en Instalar actualizaciones.
5. Cuando finalice el proceso de descarga e instalacin, pulse en Finalizar.
6. Detenga el Centro de informacin autnomo.
v En Windows, ejecute el archivo help_end.bat utilizando la va de acceso
completamente calificada para el Centro de informacin de DB2:
<directorio de Centro de informacin de DB2>\doc\bin\help_end.bat

Nota: El archivo help_end de proceso por lotes contiene los mandatos


necesarios para concluir sin peligro los procesos que se iniciaron
mediante el archivo help_start de proceso por lotes. No utilice
Control-C ni ningn otro mtodo para concluir help_start.bat.
v En Linux, ejecute el script help_end utilizando la va de acceso totalmente
calificada del Centro de informacin de DB2:
<directorio del Centro de informacin de DB2>/doc/bin/help_end

Nota: El script help_end contiene los mandatos necesarios para concluir sin
peligro los procesos que se iniciaron mediante el script help_start. No
utilice ningn otro mtodo para concluir el script help_start.
7. Reinicie el servicio Centro de informacin de DB2.
v En Windows, pulse en Inicio Panel de control Herramientas
administrativas Servicios. Despus, pulse con el botn derecho del ratn
en el servicio Centro de informacin de DB2 y seleccione Inicio.

910 Consulta de SQL - Volumen 1


v En Linux, especifique el mandato siguiente:
/etc/init.d/db2icdv9 start
El Centro de informacin de DB2 actualizado visualiza los temas nuevos y
actualizados.

Conceptos relacionados:
v Opciones de instalacin del Centro de informacin de DB2 en Gua rpida de
iniciacin para servidores DB2

Tareas relacionadas:
v Instalacin del Centro de informacin de DB2 utilizando el asistente de
instalacin de DB2 (Linux) en Gua rpida de iniciacin para servidores DB2
v Instalacin del Centro de informacin de DB2 mediante el Asistente de
instalacin de DB2 (Windows) en Gua rpida de iniciacin para servidores DB2

Guas de aprendizaje de DB2


Las guas de aprendizaje de DB2 le ayudan a conocer diversos aspectos de
productos DB2. Se proporcionan instrucciones paso a paso a travs de lecciones.

Antes de comenzar:

Puede ver la versin XHTML de la gua de aprendizaje desde el Centro de


informacin en el sitio http://publib.boulder.ibm.com/infocenter/db2help/.

Algunas lecciones utilizan datos o cdigo de ejemplo. Consulte la gua de


aprendizaje para obtener una descripcin de los prerrequisitos para las tareas
especficas.

Guas de aprendizaje de DB2:

Para ver la gua de aprendizaje, pulse el ttulo.


Almacn de datos XML nativos
Configure una base de datos DB2 para almacenar datos XML y realizar
operaciones bsicas con el almacn de datos XML nativos.
Gua de aprendizaje de Visual Explain
Analizar, optimizar y ajustar sentencias de SQL para obtener un mejor
rendimiento al utilizar Visual Explain.

Conceptos relacionados:
v Visual Explain overview en Administration Guide: Implementation

Informacin de resolucin de problemas de DB2


Existe una gran variedad de informacin para la resolucin y determinacin de
problemas para ayudarle en la utilizacin de productos DB2.
Documentacin de DB2
Puede encontrar informacin sobre la resolucin de problemas en la
publicacin DB2 Troubleshooting Guide o en la seccin Soporte y
resolucin de problemas del Centro de informacin de DB2. En ellas
encontrar informacin sobre cmo aislar e identificar problemas

Apndice P. Informacin tcnica sobre DB2 Database 911


utilizando herramientas y programas de utilidad de diagnstico de DB2,
soluciones a algunos de los problemas ms habituales y otros consejos
sobre cmo solucionar problemas que podra encontrar en los productos
DB2.
Sitio Web de soporte tcnico de DB2
Consulte el sitio Web de soporte tcnico de DB2 si tiene problemas y desea
obtener ayuda para encontrar las causas y soluciones posibles. El sitio de
soporte tcnico tiene enlaces a las publicaciones ms recientes de DB2,
notas tcnicas, Informes autorizados de anlisis del programa (APAR o
arreglos de defectos), fix packs y otros recursos. Puede buscar en esta base
de conocimiento para encontrar posibles soluciones a los problemas.
Acceda al sitio Web de soporte tcnico de DB2 en la direccin
http://www.ibm.com/software/data/db2/udb/support.html

Conceptos relacionados:
v Introduction to problem determination en Troubleshooting Guide
v Visin general de la informacin tcnica de DB2 en la pgina 903

Trminos y condiciones
Los permisos para utilizar estas publicaciones se otorgan sujetos a los siguientes
trminos y condiciones.

Uso personal: Puede reproducir estas publicaciones para su uso personal, no


comercial, siempre y cuando se mantengan los avisos sobre la propiedad. No
puede distribuir, visualizar o realizar trabajos derivados de estas publicaciones, o
de partes de las mismas, sin el consentimiento expreso de IBM.

Uso comercial: Puede reproducir, distribuir y visualizar estas publicaciones


nicamente dentro de su empresa, siempre y cuando se mantengan todos los
avisos sobre la propiedad. No puede realizar trabajos derivativos de estas
publicaciones, ni reproducirlas, distribuirlas o visualizarlas, ni de partes de las
mismas fuera de su empresa, sin el consentimiento expreso de IBM.

Excepto lo expresamente concedido en este permiso, no se conceden otros


permisos, licencias ni derechos, explcitos o implcitos, sobre las publicaciones ni
sobre ninguna informacin, datos, software u otra propiedad intelectual contenida
en el mismo.

IBM se reserva el derecho de retirar los permisos aqu concedidos cuando, a su


discrecin, el uso de las publicaciones sea en detrimento de su inters o cuando,
segn determine IBM, las instrucciones anteriores no se cumplan correctamente.

No puede descargar, exportar ni volver a exportar esta informacin excepto en el


caso de cumplimiento total con todas las leyes y regulaciones vigentes, incluyendo
todas las leyes y regulaciones sobre exportacin de los Estados Unidos.

IBM NO GARANTIZA EL CONTENIDO DE ESTAS PUBLICACIONES. LAS


PUBLICACIONES SE PROPORCIONAN TAL CUAL Y SIN GARANTA DE
NINGUNA CLASE, NI EXPLCITA NI IMPLCITA, INCLUYENDO PERO SIN
LIMITARSE A LAS GARANTAS IMPLCITAS DE COMERCIALIZACIN, NO
VULNERACIN E IDONEIDAD PARA UN FIN DETERMINADO.

912 Consulta de SQL - Volumen 1


Apndice Q. Avisos
Es posible que IBM no comercialice en todos los pases algunos productos,
servicios o caractersticas descritos en este manual. Consulte al representante local
de IBM para obtener informacin sobre los productos y servicios que actualmente
pueden adquirirse en su zona. Cualquier referencia a un producto, programa o
servicio de IBM no pretende afirmar ni implicar que slo se pueda utilizar dicho
producto, programa o servicio de IBM. En su lugar se puede utilizar cualquier
producto, programa o servicio funcionalmente equivalente que no vulnere ninguno
de los derechos de propiedad intelectual de IBM. Sin embargo, es responsabilidad
del usuario evaluar y verificar el funcionamiento de cualquier producto, programa
o servicio que no sea de IBM.

IBM puede tener patentes o solicitudes de patentes en tramitacin que afecten al


tema tratado en este documento. La posesin de este documento no confiere
ninguna licencia sobre dichas patentes. Puede realizar consultas sobre licencias
escribiendo a:
IBM Director of Licensing
IBM Corporation
North Castle Drive
Armonk, NY 10504-1785
EE.UU.

Para realizar consultas sobre licencias referentes a informacin de doble byte


(DBCS), puede ponerse en contacto con el Departamento de Propiedad Intelectual
de IBM de su pas/regin o escribir a:
IBM World Trade Asia Corporation
Licensing
2-31 Roppongi 3-chome, Minato-ku
Tokio 106, Japn

El prrafo siguiente no es aplicable al Reino Unido ni a ningn pas/regin en


donde tales disposiciones sean incompatibles con la legislacin local:
INTERNATIONAL BUSINESS MACHINES CORPORATION PROPORCIONA
ESTA PUBLICACIN TAL CUAL, SIN GARANTA DE NINGUNA CLASE, NI
EXPLCITA NI IMPLCITA, INCLUIDAS, PERO SIN LIMITARSE A ELLAS, LAS
GARANTAS IMPLCITAS DE NO VULNERACIN DE DERECHOS,
COMERCIALIZACIN O IDONEIDAD PARA UN FIN DETERMINADO. Algunos
estados no permiten la exclusin de garantas expresas o implcitas en
determinadas transacciones, por lo que es posible que esta declaracin no sea
aplicable en su caso.

Esta publicacin puede contener inexactitudes tcnicas o errores tipogrficos.


Peridicamente se efectan cambios en la informacin aqu contenida; dichos
cambios se incorporarn a las nuevas ediciones de la publicacin. IBM puede
efectuar, en cualquier momento y sin previo aviso, mejoras y cambios en los
productos y programas descritos en esta publicacin.

Las referencias hechas en esta publicacin a sitios Web que no son de IBM se
proporcionan slo para la comodidad del usuario y no constituyen un aval de esos
sitios Web. La informacin contenida en estos sitios Web no forma parte de la
informacin del presente producto IBM y el usuario es responsable de la
utilizacin de dichos sitios.

Copyright IBM Corp. 1993, 2006 913


IBM puede utilizar o distribuir cualquier informacin que se le facilite de la
manera que considere adecuada, sin contraer por ello ninguna obligacin con el
remitente.

Los licenciatarios de este programa que deseen obtener informacin sobre l con el
fin de habilitar: (i) el intercambio de informacin entre programas creados de
forma independiente y otros programas (incluido ste) y (ii) el uso mutuo de la
informacin intercambiada, deben ponerse en contacto con:
IBM Canada Limited
Office of the Lab Director
8200 Warden Avenue
Markham, Ontario
L6G 1C7
CANAD

Dicha informacin puede estar disponible, sujeta a los trminos y condiciones


apropiados, incluido en algunos casos el pago de una tarifa.

El programa bajo licencia descrito en este documento y todo el material bajo


licencia asociado a l, los proporciona IBM segn los trminos del Acuerdo de
Cliente de IBM, el Acuerdo Internacional de Programas Bajo Licencia de IBM o
cualquier acuerdo equivalente entre el usuario e IBM.

Los datos de rendimiento contenidos en este documento se obtuvieron en un


entorno controlado. Por lo tanto, los resultados obtenidos en otros entornos
operativos pueden variar significativamente. Algunas mediciones pueden haberse
realizado en sistemas experimentales y no es seguro que estas mediciones sean las
mismas en los sistemas disponibles comercialmente. Adems, algunas mediciones
pueden haberse calculado mediante extrapolacin. Los resultados reales pueden
variar. Los usuarios del presente manual deben verificar los datos aplicables para
su entorno especfico.

La informacin referente a productos que no son de IBM se ha obtenido de los


proveedores de esos productos, de sus anuncios publicados o de otras fuentes
disponibles pblicamente. IBM no ha probado esos productos y no puede
confirmar la exactitud del rendimiento, la compatibilidad ni ninguna otra
afirmacin referente a productos que no son de IBM. Las preguntas sobre las
prestaciones de productos que no son de IBM deben dirigirse a los proveedores de
esos productos.

Todas las declaraciones de intenciones de IBM estn sujetas a cambio o cancelacin


sin previo aviso, y slo representan objetivos.

Este manual puede contener ejemplos de datos e informes que se utilizan en


operaciones comerciales diarias. Para ilustrarlos de la forma ms completa posible,
los ejemplos incluyen nombres de personas, empresas, marcas y productos. Todos
estos nombres son ficticios y cualquier similitud con nombres y direcciones
utilizados por una empresa real es totalmente fortuita.

LICENCIA DE COPYRIGHT:

Este manual puede contener programas de aplicaciones de ejemplo escritos en


lenguaje fuente, que muestran tcnicas de programacin en diversas plataformas
operativas. Puede copiar, modificar y distribuir estos programas de ejemplo como
desee, sin pago alguno a IBM con la intencin de desarrollar, utilizar, comercializar
o distribuir programas de aplicaciones de acuerdo con la interfaz de programacin

914 Consulta de SQL - Volumen 1


de aplicaciones correspondiente a la plataforma operativa para la que estn escritos
los programas de ejemplo. Estos ejemplos no se han probado exhaustivamente bajo
todas las condiciones. Por lo tanto, IBM no puede asegurar ni implicar la
fiabilidad, utilidad o funcin de estos programas.

Cada copia o parte de estos programas de ejemplo o cualquier trabajo derivado


debe incluir una nota de copyright como la siguiente:

(nombre de la empresa) (ao). Partes de este cdigo proceden de programas de


ejemplo de IBM Corp. Copyright IBM Corp. _entre el o los aos_. Reservados
todos los derechos.

Marcas registradas
Los nombres de empresas, productos o servicios identificados en la biblioteca de
documentacin de DB2 Versin 9 pueden ser marcas registradas o marcas de
servicios de International Business Machines Corporation o de otras empresas. La
informacin sobre marcas registradas de IBM Corporation en los Estados Unidos
y/o en otros pases est ubicada en http://www.ibm.com/legal/copytrade.shtml.

Los trminos siguientes son marcas registradas de otras empresas y se han


utilizado como mnimo en uno de los documentos de la biblioteca de
documentacin de DB2:

Microsoft, Windows, Windows NT y el logotipo de Windows son marcas


registradas de Microsoft Corporation en los Estados Unidos y/o en otros pases.

Intel, Itanium, Pentium y Xeon son marcas registradas de Intel Corporation en los
Estados Unidos y/o en otros pases.

Java y todas las marcas registradas basadas en Java son marcas registradas de Sun
Microsystems, Inc. en los Estados Unidos y/o en otros pases.

UNIX es una marca registrada de The Open Group en los Estados Unidos y/o en
otros pases.

Linux es una marca registrada de Linus Torvalds en los Estados Unidos y/o en
otros pases.

Otros nombres de empresas, productos o servicios, pueden ser marcas registradas


o marcas de servicio de otras empresas.

Apndice Q. Avisos 915


916 Consulta de SQL - Volumen 1
ndice
Caracteres Especiales argumentos de COALESCE 129
aritmtica
(asterisco) AVG, operacin de la funcin 276
en nombres de columna de seleccin 530 buscar valor mximo 285
en nombres de columna de subseleccin 530 columnas, adicin de valores (SUM) 294
devolucin de valores de enteros pequeos de
expresiones 426
A expresiones, adicin de valores (SUM) 294
ABS o ABSVAL, funcin funciones de regresin 290
descripcin de formato detallado 297 operacin de funcin VARIANCE 295
valores y argumentos, reglas para 297 operacin de la funcin CORRELATION 278
ACOS, funcin escalar operacin de la funcin COVARIANCE 282
descripcin 298 operadores 189
valores y argumentos 298 STDDEV, funcin 293
activadores valores de coma flotante de expresiones numricas 343,
cascada 11 405
descripcin 11 valores decimales de expresiones numricas 333
interacciones 831 valores enteros, devolucin de expresiones 304, 366
longitud mxima de nombre 585 Arquitectura de bases de datos relacionales distribuidas
nombres 65 (DRDA) 31
restricciones, interaccin 831 AS, clusula
Tablas de Explain 835 clusula ORDER BY 530
actualizaciones en clusula SELECT 530
Centro de informacin 909 ASC, clusula
Centro de informacin de DB2 909 sentencia SELECT 530
ADVISE_INSTANCE, tabla 863 ASCII, funcin escalar
ADVISE_MQT, tabla 864 descripcin 299
ADVISE_PARTITION, tabla 866 valores y argumentos 299
ADVISE_TABLE, tabla 868 asignacin dinmica 181
agrupaciones de almacenamientos intermedios asignaciones
definicin 27 operaciones de SQL bsicas 117
ALL, clusula ASIN, funcin escalar
predicado cuantificado 229 descripcin 300
sentencia SELECT 530 valores y argumentos 300
ALL, opcin 569 asterisco (*)
almacenamiento en COUNT 279
estructuras 27 en COUNT_BIG 280
mbito en nombres de columna de seleccin 530
definicin 105 en nombres de columna de subseleccin 530
anlisis de envo ATAN, funcin escalar
descripcin 56 descripcin 301
AND, tabla de evaluacin 225 valores y argumentos 301
ANY, clusula 229 ATAN2, funcin escalar
apodos descripcin 302
calificacin de un nombre de columna 65 valores y argumentos 302
clusula FROM 530 ATANH, funcin escalar
con nombres no expuestos 65 descripcin 303
nombres expuestos 65 valores y argumentos 303
clusula SELECT, diagrama de sintaxis 530 autorizacin, niveles
definicin 65 Vea privilegios 15
descripcin 49 autorizacin de base de datos SECADM 15
archivo, variables de referencia autorizacin del administrador de seguridad (SECADM)
BLOB 65 XXXX 15
CLOB 65 AVG, funcin agregada 276
DBCLOB 65 avisos 913
archivos de tabla estructurada ayuda
versiones soportadas 52 sobre sentencias SQL 907
archivos Excel visualizacin 908
versiones soportadas 52
archivos planos
Consulte asimismo Archivos de tabla estructurada 52

Copyright IBM Corp. 1993, 2006 917


B catlogo global
descripcin 55
base de datos federada catlogo local
derivadores 47 Vase catlogo global 55
mdulos de derivador 47 catlogos del sistema
base de datos relacional vistas en tablas del sistema 613
definicin 1 CEIL, funcin
base de datos relacional particionada; vea entornos de bases descripcin 307
de datos particionadas 1 valores y argumentos 307
bases de datos federadas CEILING, funcin
catlogo del sistema 55 descripcin 307
definicin 1 valores y argumentos 307
descripcin 46 Centro de informacin
bases de datos relacionales distribuidas actualizacin 909
definicin 31 versiones 908
peticionario de aplicaciones 31 visualizacin en idiomas distintos 908
protocolos de peticionario-servidor 31 Centro de informacin de DB2
servidor de aplicaciones 31 actualizacin 909
unidad de trabajo distribuida dirigida por aplicacin 31 versiones 908
unidad de trabajo remota 31 visualizacin en idiomas distintos 908
BETWEEN, predicado 232 CHAR, funcin escalar
BIGINT, funcin 304 descripcin 308
BIGINT SQL, tipo de datos CHAR, tipo de datos
signo y precisin 90 descripcin 91
BLAST CHARACTER_LENGTH, funcin escalar
versiones soportadas 52 descripcin 313
BLOB, tipo de datos CHR, funcin escalar
descripcin 96 descripcin 315
bloqueo valores y argumentos 315
definicin 21 cifrar informacin
bloqueo de actualizacin 23 funcin ENCRYPT 345
bloqueo exclusivo 23 GETHINT, funcin 351
bloqueos clasificacin 57
compartidos (S) 23 clasificacin de los resultados 117
de actualizacin (U) 23 comparaciones de series 117
exclusivos (X) 23 clusula FROM
bloqueos de compartimiento 23 ejemplo de nombre de correlacin 65
nombres expuestos explicados 65
nombres no expuestos explicados 65
C sintaxis de subseleccin 530
calificadores uso de nombres de correlacin 65
nombre de objeto 65 clusula GROUP BY
reservados 827 reglas de subseleccin y sintaxis 530
calificados, nombres de columna 65 resultados de subseleccin 530
CALL, sentencia clusula ORDER BY
invocadas desde una sentencia compilada 887 sentencia select 530
campo SQLD en SQLDA 601 clusula VALUES de mltiples filas
campo SQLDABC en SQLDA 601 tipo de datos del resultado 129
campo SQLDAID en SQLDA 601 clusula WHERE
campo SQLDATALEN en SQLDA 601 funcin de bsqueda, subseleccin 530
campo SQLDATATYPE_NAME en SQLDA 601 clave padre 6
campo SQLIND en SQLDA 601 claves
campo SQLLEN en SQLDA 601 compuestas 5
campo SQLLONGLEN en SQLDA 601 de unicidad 5, 6
campo SQLN en SQLDA 601 definicin 5
campo SQLNAME en SQLDA 601 forneas 5, 6
campo SQLTYPE en SQLDA 601 padre 6
campo SQLVAR en SQLDA 601 particin 5
caracteres primarias 5
conversin 29 claves de particionamiento
elementos de lenguaje SQL 61 descripcin 5
caracteres de desplazamiento a teclado estndar no truncados claves de unicidad
por asignaciones 117 descripcin 5, 6
CASE claves forneas
expresiones 202 definicin 5
CAST restricciones 6
especificaciones 204

918 Consulta de SQL - Volumen 1


claves primarias comentarios
definicin 5 lenguaje principal, formato 63
CLI (interfaz de nivel de llamada) SQL, formato 63
definicin 2 commit
CLIENT ACCTNG, registro especial 144 liberacin de bloqueos 21
CLIENT APPLNAME, registro especial 145 cmo contactar con IBM 919
CLIENT USERID, registro especial 146 comodines en predicado LIKE 236
CLIENT WRKSTNNAME, registro especial 147 comparacin
CLOB (objeto grande de caracteres) de condiciones verdaderas de dos predicados 228, 242
funcin de un valor con una coleccin 232
descripcin 316 operacin SQL 117
valores y argumentos 316 series LONG VARGRAPHIC, uso restringido 117
tipo de datos compatibilidad
descripcin 91 reglas 117
COALESCE, funcin 317 reglas para los tipos de operaciones 117
coherencia tipos de datos 117
puntos de 21 compilador de SQL
colocacin en un sistema federado 47
tabla 42 compuestas, claves
columnas definicin 5
adicin de valores (SUM) 294 compuestos, valores de columna 530
bsico, uso en series coincidentes del predicado 228 CONCAT, funcin escalar
buscar valor mximo 285 descripcin 318
bsqueda utilizando la clusula WHERE 530 valores y argumentos 318
clusula HAVING, nombres de bsqueda, reglas 530 concatenacin
convenios de denominacin 65 operadores 189
correlacin entre un conjunto de pares de nmeros tipo diferenciado 189
(CORRELATION) 278 condicin desconocida, valor nuevo 225
covarianza de un conjunto de pares de nmeros condiciones de bsqueda
(COVARIANCE) 282 AND, operador lgico 225
datos de resultado 530 clusula WHERE 530
definicin descripcin 225
tablas 4 HAVING, clusula
desviacin estndar de un conjunto de valores argumentos y reglas 530
(STDDEV) 293 NOT, operador lgico 225
diagrama de sintaxis de la clusula SELECT 530 OR, operador lgico 225
errores de referencia de nombre ambigua 65 orden de evaluacin 225
errores de referencia de nombre no definida 65 Conectividad de base de datos Java (JDBC)
escalares, seleccin completa 65 SQL incorporado para Java 3
expresin de tabla anidada 65 conjuntos de agrupacin 530
GROUP BY, utilizacin para limitar la clusula conjuntos de caracteres
SELECT 530 descripcin 57
HAVING, utilizacin para limitar la clusula SELECT 530 constante de coma flotante 137
nombre de columna constante de serie de caracteres 137
calificacin en sentencia COMMENT ON 65 constante de serie grfica
definicin 65 descripcin 137
usos 65 constante decimal
nombres descripcin 137
condiciones calificadas 65 constante entera
condiciones no calificadas 65 descripcin 137
en clusula ORDER BY 530 constante hexadecimal 137
nombres de columnas de agrupacin en GROUP BY 530 constantes
predicado BETWEEN, en series coincidentes 232 coma flotante 137
predicado EXISTS, en series coincidentes 233 con tipos definidos por el usuario 137
predicado IN, seleccin completa, valores devueltos 234 decimal 137
predicado LIKE, en series coincidentes 236 elemento de lenguaje SQL 137
promedio de un conjunto de valores (AVG) 276 entero 137
reglas de asignacin de serie 117 hexadecimal 137
reglas para nombre de columna calificado 65 serie de caracteres 137
subconsulta 65 serie grfica 137
valores nulos consultas
en columnas de resultado 530 definicin 529
varianza de un conjunto de valores de columna descripcin 2
(VARIANCE) 295 ejemplos
columnas del resultado sentencia SELECT 574
subseleccin 530 fragmentos 56
combinacin de conjuntos de agrupacin 530 ID de autorizacin 529

ndice 919
consultas (continuacin) COSH, funcin escalar (continuacin)
recursiva 574 valores y argumentos 320
contenedores COT, funcin escalar
definicin 27 descripcin 321
control de acceso basado en etiquetas (LBAC) valores y argumentos 321
efecto en las tablas de excepciones 879 COUNT, funcin 279
lmites 585 COUNT_BIG, funcin
convenios de denominacin descripcin de formato detallado 280
identificadores 65 valores y argumentos 280
reglas para columna calificada 65 COVARIANCE, funcin 282
conversin CS (estabilidad del cursor)
entre tipos de datos 110 nivel de aislamiento 23
expresin de tipo estructurado para un subtipo 219 CUBE, agrupacin
tipo de datos 204 descripcin de consulta 530
tipos de referencia 110 ejemplos 530
tipos definidos por el usuario 110 CURRENT CLIENT_ACCTNG, registro especial 144
Valores XML 207 CURRENT CLIENT_APPLNAME, registro especial 145
conversin de caracteres CURRENT CLIENT_USERID, registro especial 146
reglas al comparar series 133 CURRENT CLIENT_WRKSTNNAME, registro especial 147
reglas para asignaciones 117 CURRENT DATE, registro especial 148
reglas para la comparacin 117 CURRENT DBPARTITIONNUM, registro especial 149
reglas para operaciones que combinan series 133 CURRENT DEFAULT TRANSFORM GROUP, registro
conversin de coma flotante a decimal 117 especial 150
conversin decimal CURRENT DEGREE, registro especial
enteros 117 descripcin 151
conversiones CURRENT EXPLAIN MODE, registro especial
CHAR, devolucin de valores de indicacin de fecha y descripcin 152
hora convertidos 308 CURRENT EXPLAIN SNAPSHOT, registro especial
DBCS de SBCS y DBCS mezclados 465 descripcin 153
de fecha y hora a variable de serie 117 CURRENT FEDERATED ASYNCHRONY, registro
de serie de caracteres a indicacin de fecha y hora 443 especial 154
numrico, escala y precisin, resumen 117 CURRENT FUNCTION PATH, registro especial
reglas descripcin 160
asignaciones 117 CURRENT IMPLICIT XMLPARSE OPTION, registro
comparaciones 117 especial 155
comparaciones de series 133 CURRENT ISOLATION, registro especial 156
operaciones que combinan series 133 CURRENT LOCK TIMEOUT, registro especial 157
serie de caracteres de doble byte 465 CURRENT MAINTAINED TABLE TYPES FOR
valores de coma flotante de expresiones numricas 343, OPTIMIZATION, registro especial 158
405 CURRENT PACKAGE PATH, registro especial 159
valores decimales de expresiones numricas 333 CURRENT PATH, registro especial
correlacin, particionamiento 27 descripcin 160
correlacin de tipos CURRENT QUERY OPTIMIZATION, registro especial
nombre 65 descripcin 161
correlaciones de funciones CURRENT REFRESH AGE, registro especial
opciones descripcin 162
valores vlidos 788 CURRENT SCHEMA, registro especial 163
correlaciones de particiones CURRENT SERVER, registro especial 164
definicin 27 CURRENT SQLID, registro especial 163
correlaciones de tipos de datos CURRENT TIME, registro especial 165
descripcin 51 CURRENT TIMESTAMP, registro especial 166
directas 811 CURRENT TIMEZONE, registro especial 167
inversas 819 CURRENT USER, registro especial 168
correlaciones de tipos directas
correlaciones por omisin 811
correlaciones de tipos inversas
correlaciones por omisin 819
D
DATALINK, tipo de datos
correlaciones de usuarios
descripcin 102
descripcin 48
especificaciones BNF 901
opciones 48
DATAPARTITIONNUM, funcin escalar
valores vlidos 807
descripcin 322
CORRELATION, funcin 278
valores y argumentos 322
COS, funcin escalar
DATE, funcin
descripcin 319
conversin de formato de valor a fecha 323
valores y argumentos 319
descripcin 323
COSH, funcin escalar
DATE, tipo de datos
descripcin 320
CHAR, utilizacin en conversin de formato 308

920 Consulta de SQL - Volumen 1


DATE, tipo de datos (continuacin) DECRYPT, funcin (continuacin)
descripcin 99 valores y argumentos 337
duraciones de da, buscar en el rango 329 definiciones de servidor
funcin escalar WEEK 467 descripcin 48
WEEK_ISO, funcin escalar 468 DEGREES, funcin escalar
datos descripcin 339
particin 42 valores y argumentos 339
datos de bit 91 DEREF, funcin
datos de distribucin descripcin 340
tabla de compatibilidades 135 tipos de referencia 340
datos mixtos valores y argumentos 340
definicin 91 derivadores
LIKE, predicado 236 descripcin 47
datos SBCS (juego de caracteres de un solo byte) desagrupacin
definicin 91 parcial 42
DAY, funcin 324 desagrupacin parcial 42
DAYNAME, funcin escalar DESC, clusula
descripcin 325 de la sentencia select 530
DAYOFWEEK, funcin escalar descifrar informacin
descripcin 326 DECRYPT, funcin 337
DAYOFWEEK_ISO, funcin escalar desreferencia
descripcin 327 operaciones 209
DAYOFYEAR, funcin escalar determinacin de problemas
descripcin 328 guas de aprendizaje 911
valores y argumentos 328 informacin en lnea 911
DAYS, funcin escalar 329 devolucin de la indicacin de la fecha y hora de valores
DB2 para iSeries TIMESTAMP, funcin 443
correlaciones de tipos directas por omisin 811 devolucin de la parte correspondiente a la hora de los valores
correlaciones de tipos inversas por omisin 819 HOUR, funcin 360
tipos de servidor vlidos 777 devolucin de mes del valor
versiones soportadas 52 MONTH, funcin 389
DB2 para Linux, UNIX y Windows devolucin de microsegundo del valor
correlaciones de tipos directas por omisin 811 MICROSECOND, funcin 385
correlaciones de tipos inversas por omisin 819 devolucin de minuto del valor
tipos de servidor vlidos 777 MINUTE, funcin 387
versiones soportadas 52 devolucin de segundos del valor
DB2 para VM y VSE SECOND, funcin 422
correlaciones de tipos directas por omisin 811 devolucin de subseries de una serie
correlaciones de tipos inversas por omisin 819 SUBSTR, funcin 431
tipos de servidor vlidos 777 devolver valor de columna de identidad
versiones soportadas 52 IDENTITY_VAL_LOCAL, funcin 361
DB2 para z/OS DIFFERENCE, funcin escalar
versiones soportadas 52 descripcin 341
DB2 para z/OS y OS/390 valores y argumentos 341
correlaciones de tipos directas por omisin 811 DIGITS, funcin
correlaciones de tipos inversas por omisin 819 descripcin 342
tipos de servidor vlidos 777 valores y argumentos 342
db2nodes.cfg, archivo DISTINCT, palabra clave
funcin DBPARTITIONNUM 331 AVG, funcin 276
DBCLOB, funcin COUNT_BIG, funcin 280
descripcin 330 funcin agregada 275
valores y argumentos 330 funcin SUM 294
DBCLOB,tipos de datos funcin VARIANCE 295
descripcin 95 restriccin de funcin MAX 285
DDL (lenguaje de definicin de datos) sentencia de subseleccin 530
definicin 1 STDDEV, funcin 293
DECIMAL, funcin documentacin 903, 904
descripcin 333 trminos y condiciones de uso 912
valores y argumentos 333 DOUBLE, funcin
DECIMAL, tipo de datos descripcin 343
conversin de coma flotante 117 valores y argumentos 343
signo y precisin 90 DOUBLE, tipo de datos
DECIMAL con precisin de entero, funcin 333 CHAR, utilizacin en conversin de formato 308
declaraciones signo y precisin 90
XMLNAMESPACES 486 duraciones
DECRYPT, funcin etiquetada 197
descripcin 337 duraciones etiquetadas 197

ndice 921
E EXCEPT, operador de seleccin completa 569
EXECUTE, privilegio
elemento de cdigo 29 funciones 172
ENCRYPT, funcin escalar 345 mtodos 181
entero superior 90 EXECUTE, sentencia
enteros SQL dinmico 1
en clusula ORDER BY 530 EXECUTE IMMEDIATE, sentencia
resumen de conversin decimal 117 SQL dinmico 1
enteros grandes 90 EXP, funcin
enteros pequeos descripcin 348
Vea SMALLINT, tipo de datos 90 valores y argumentos 348
entornos de bases de datos particionadas EXPLAIN_ARGUMENT, tabla 836
descripcin 1 EXPLAIN_DIAGNOSTIC, tabla 841
Entrez EXPLAIN_DIAGNOSTIC_DATA, tabla 842
versiones soportadas 52 EXPLAIN_INSTANCE, tabla 844
errores de referencia ambigua 65 EXPLAIN_OBJECT, tabla 847
errores de referencia no definida 65 EXPLAIN_OPERATOR, tabla 850
escala EXPLAIN_PREDICATE tabla 852
de datos EXPLAIN_STATEMENT, tabla 855
comparacin en SQL 117 EXPLAIN_STREAM, tabla 857
conversin de nmero en SQL 117 expresin
determinada por la variable SQLLEN 601 tipo estructurado
de nmeros conversin en un subtipo 219
determinada por la variable SQLLEN 601 expresin-agrupacin 530
ESCAPE, clusula expresin de tipo estructurado
LIKE, predicado 236 conversin en un subtipo 219
espacio, reglas de control 63 expresiones
espacios de tablas CASE 202
descripcin 27 en clusula ORDER BY 530
nombre 65 en una subseleccin 530
especificaciones escalares, seleccin completa 189
CAST 204 expresiones-agrupacin en GROUP BY 530
XMLCAST 207 operadores aritmticos 189
esquema de codificacin 29 operadores de concatenacin 189
esquemas operadores matemticos 189
controlar la utilizacin 3 operandos de coma flotante 189
definicin 3 operandos decimales 189
privilegios 3 operandos enteros 189
reservados 827 prioridad de operacin 189
estabilidad de lectura (RS) SELECT, diagrama de sintaxis en la clusula 530
descripcin 23 sin operadores 189
estabilidad del cursor (CS) expresiones de resultado de CASE
nivel de aislamiento 23 tipo de datos del resultado 129
establecer estado pendiente de integridad 6 expresiones de seleccin completa escalares 189
estado de conexin actual 31 expresiones de tabla
estado de conexin inactivo 31 comunes 2
estado de conexin mantenido 31 descripcin 2
estado de conexin pendiente de liberacin 31 expresiones de tabla comunes 574
estado no conectado 31 expresiones de tabla anidadas 530
estados expresiones de tabla comunes
conexin 31 definicin 574
estados de conexin recursiva 574
descripcin 31 sentencia select 574
unidad de trabajo remota 31
estructuras de datos
decimal empaquetado 601
etiquetas F
nombres de objetos en procedimientos SQL 65 fecha y hora
etiquetas de seguridad (LBAC) aritmtica 197
longitud de nombre de componente 585 operaciones 197
longitud del nombre 585 fechas
polticas formatos de representacin de serie 99
longitud del nombre 585 mes, devolucin del valor de indicacin de fecha y
etiquetas de seguridad LBAC hora 389
longitud de nombre de componente 585 utilizacin de ao en expresiones 508
longitud del nombre 585 fila de autorreferencia 6
EUC (extended UNIX code) fila del total 530
consideraciones 893 fila dependiente 6

922 Consulta de SQL - Volumen 1


fila descendiente 6 funciones
fila fantasma 23 agregadas
fila padre 6 COUNT 279
filas descripcin 275
autorreferente 6 MIN 287
clusula GROUP BY 530 XMLAGG 288
clusula SELECT, diagrama de sintaxis 530 argumentos 249
condiciones de bsqueda, sintaxis 225 columna
COUNT_BIG, funcin 280 agregadas 275
definicin 4 AVG 276
dependiente 6 CORR 278
descendiente 6 CORRELATION 278
HAVING, clusula 530 COUNT 279
padre 6 COUNT_BIG 280
filas de subtotales 530 COVAR 282
filas de superagregados 530 COVARIANCE 282
filas superagregadas simtricas 530 descripcin 172
FLOAT, funcin funciones de regresin 290
descripcin 349 MAX 285
valores y argumentos 349 MIN 287
FLOAT, tipo de datos REGR_AVGX 290
signo y precisin 90 REGR_AVGY 290
FLOOR, funcin REGR_COUNT 290
descripcin 350 REGR_ICPT 290
valores y argumentos 350 REGR_INTERCEPT 290
FOR FETCH ONLY, clusula REGR_R2 290
sentencia SELECT 574 REGR_SLOPE 290
FOR READ ONLY, clusula REGR_SXX 290
SELECT, sentencia 574 REGR_SXY 290
fuente de datos HMMER REGR_SYY 290
versiones soportadas 52 STDDEV 293
fuente de datos KEGG SUM 294
versiones soportadas 52 VAR, opciones 295
fuentes de datos 46, 47 VAR, resultados 295
descripcin 46 VARIANCE, opciones 295
tipos de servidor vlidos 777 VARIANCE, resultados 295
fuentes de datos no relacionales XMLAGG 288
especificacin de correlaciones de tipos de datos 51 conversin
funcin agregada CAST 204
COUNT 279 XMLCAST 207
descripcin 275 definidas por el usuario 172, 514
MIN 287 derivada 172
funcin DBPARTITIONNUM descripcin 249
descripcin 331 elemento de lenguaje SQL 172
valores y argumentos 331 en expresiones 249
funcin de fila en una base de datos Unicode 296
descripcin 172 escalar
funcin escalar LENGTH AVG 276
descripcin 372 DAYOFWEEK_ISO 327
valores y argumentos 372 GROUPING 283
funcin escalar WEEK escalares
descripcin 467 ABS 297
valores y argumentos 467 ABSVAL 297
funcin INTEGER ACOS 298
descripcin 366 ASCII 299
valores y argumentos 366 ASIN 300
funcin sobrecargada ATAN 301
instancias de mltiples funciones 172 ATAN2 302
funcin TYPE_ID ATANH 303
descripcin 456 BIGINT 304
tipos de datos 456 BLOB 306
valores y argumentos 456 CEIL 307
funcin TYPE_SCHEMA CEILING 307
descripcin 458 CHAR 308
tipos de datos 458 CHARACTER_LENGTH 313
valores y argumentos 458 CHR 315
CLOB 316

ndice 923
funciones (continuacin) funciones (continuacin)
escalares (continuacin) escalares (continuacin)
COALESCE 317 RAISE_ERROR 403
CONCAT 318 RAND 404
COS 319 REAL 405
COSH 320 REC2XML 406
COT 321 REPEAT 411
DATAPARTITIONNUM 322 REPLACE 412
DATE 323 RIGHT 413
DAY 324 ROUND 414
DAYNAME 325 RTRIM 416, 417
DAYOFWEEK 326 SECLABEL 418
DAYOFYEAR 328 SECLABEL_BY_NAME 419
DAYS 329 SECLABEL_TO_CHAR 420
DBCLOB 330 SECOND 422
DBPARTITIONNUM 331 SIGN 423
DECIMAL 333 SIN 424
DECRYPTBIN 337 SINH 425
DECRYPTCHAR 337 SMALLINT 426
DEGREES 339 SOUNDEX 427
DEREF 340 SPACE 428
descripcin 172, 296 SQRT 429
DIFFERENCE 341 STRIP 430
DIGITS 342 SUBSTR 431
DOUBLE 343 SUBSTRING 434
DOUBLE_PRECISION 343 TABLE_NAME 437
ENCRYPT 345 TABLE_SCHEMA 438
EVENT_MON_STATE 347 TAN 440
EXP 348 TANH 441
FLOAT 349 TIME 442
FLOOR 350 TIMESTAMP 443
GENERATE_UNIQUE 352 TIMESTAMP_FORMAT 444
GETHINT 351 TIMESTAMP_ISO 446
GRAPHIC 354 TIMESTAMPDIFF 447
HASHEDVALUE 356 TO_CHAR 449
HEX 358 TO_DATE 450
HOUR 360 TRANSLATE 451
IDENTITY_VAL_LOCAL 361 TRIM 453
INSERT 365 TRUNC 455
INTEGER 366 TRUNCATE 455
JULIAN_DAY 368 TYPE_ID 456
LCASE 370 TYPE_NAME 457
LCASE o LOWER 369 TYPE_SCHEMA 458
LEFT 371 UCASE 459
LENGTH 372 UPPER 459
LN 374 VALUE 460
LOCATE 375 VARCHAR 461
LOG 379 VARCHAR_FORMAT 463
LOG10 380 VARGRAPHIC 465
LONG_VARCHAR 381 WEEK 467
LONG_VARGRAPHIC 382 WEEK_ISO 468
LTRIM 383, 384 XMLATTRIBUTES 469
MICROSECOND 385 XMLCOMMENT 471
MIDNIGHT_SECONDS 386 XMLCONCAT 472
MINUTE 387 XMLDOCUMENT 474
MOD 388 XMLELEMENT 476
MONTH 389 XMLFOREST 482
MONTHNAME 390 XMLNAMESPACES 486
MULTIPLY_ALT 391 XMLPARSE 489
NODENUMBER (vea DBPARTITIONNUM) 331 XMLPI 491
NULLIF 393 XMLQUERY 493
OCTET_LENGTH 394 XMLSERIALIZE 497
PARTITION (vea HASHEDVALUE) 356 XMLTEXT 500
POSITION 395 XMLVALIDATE 502
POSSTR 398 XMLXSROBJECTID 507
POWER 400, 402 YEAR 508
QUARTER 401 externas 172

924 Consulta de SQL - Volumen 1


funciones (continuacin)
fila 172
H
funciones de tabla HASHEDVALUE, funcin
descripcin 172, 509 descripcin 356
incorporada 172 valores y argumentos 356
procedimientos 517 HAVING, clusula
Proceso analtico en lnea (Online Analytical Processing - condiciones de bsqueda con subseleccin 530
OLAP) 211 resultados de subseleccin 530
sobrecargadas 172 HEX, funcin
soportadas 251 descripcin 358
SQL 172 valores y argumentos 358
tabla hora
XMLTABLE 510 CHAR, utilizacin en conversin de formato 308
funciones de bases de datos de columna devolucin
descripcin 172 indicacin de fecha y hora a partir de valores 443
funciones de regresin milsimas de segundo, a partir del valor de indicacin
descripcin 290 de fecha y hora 385
REGR_AVGX 290 minutos, a partir del valor de indicacin de fecha y
REGR_AVGY 290 hora 387
REGR_COUNT 290 segundos, a partir del valor de indicacin de fecha y
REGR_ICPT 290 hora 422
REGR_INTERCEPT 290 valores basados en la hora 442
REGR_R2 290 en expresiones, funcin TIME 442
REGR_SLOPE 290 formatos de representacin de serie 99
REGR_SXX 290 utilizacin de la hora en expresiones 442
REGR_SXY 290 valores de hora, utilizacin en una expresin (HOUR) 360
REGR_SYY 290 HOUR, funcin
funciones de SQL 172 descripcin 360
funciones de tabla valores y argumentos 360
descripcin 172, 509
funciones definidas por el usuario (UDF)
descripcin 172, 249, 514 I
funciones derivadas 172 ID de autorizacin 65
funciones escalares ID de autorizacin de ejecucin 65
DECIMAL, funcin 333 identificadores
descripcin 172, 296 delimitados 65
funciones externas lenguaje principal 65
descripcin 172 lmites de longitud 585
funciones incorporadas ordinarios 65
descripcin 172 SQL 65
unidades de serie en 91 identificadores del lenguaje principal en variables del lenguaje
funciones soportadas 251 principal 65
IDENTITY_VAL_LOCAL, funcin
descripcin 361
G valores y argumentos 361
GENERATE_UNIQUE, funcin IMPLICITSCHEMA, autorizacin 3
sintaxis 352 IN, predicado 234
gestor de bases de datos indicaciones de la fecha y hora
interpretacin de SQL 1 de GENERATE_UNIQUE 352
lmites 585 formatos de representacin de serie 99
GETHINT, funcin ndices
descripcin 351 descripcin 11
valores y argumentos 351 informacin de catlogo remota 55
GRAPHIC, funcin Informix
descripcin 354 correlaciones de tipos directas por omisin 811
valores y argumentos 354 correlaciones de tipos inversas por omisin 819
GRAPHIC, tipo de datos tipos de servidor vlidos 777
descripcin 95 versiones soportadas 52
GROUPING, funcin 283 INSERT, funcin
grupos de nodos (grupos de particiones de bases de datos) descripcin 365
definicin 27 valores y argumentos 365
grupos de particiones de bases de datos (grupos de nodos) INTEGER, tipo de datos
definicin 27 signo y precisin 90
guas de aprendizaje integridad de referencia
determinacin y resolucin de problemas 911 restricciones 6
Visual Explain 911 interfaz de nivel de llamada (CLI)
definicin 2

ndice 925
INTERSECT, operador LOB (objeto grande), tipos de datos
de seleccin completa, papel en la comparacin 569 descripcin 97
filas duplicadas, utilizacin de ALL 569 localizador de objeto grande 97
INTO, clusula localizadores
FETCH, uso de la sentencia en variable lenguaje descripcin de variable 65
principal 65 objeto grande (LOB) 97
SELECT INTO, uso de la sentencia en variable lenguaje LOCATE, funcin escalar
principal 65 descripcin 375
valores de programas de aplicacin 65 valores y argumentos 375
invocacin LOG, funcin
funcin 172 descripcin 379
mtodos 217 valores y argumentos 379
LOG10, funcin escalar
descripcin 380
J valores y argumentos 380
lgica de evaluacin verdadera 225
JDBC (Conectividad de base de datos Java)
LONG_VARCHAR, funcin
SQL incorporado para Java 3
descripcin 381
visin general 3
valores y argumentos 381
juego de caracteres de doble byte (DBCS)
LONG VARCHAR, tipo de datos
caracteres truncados durante la asignacin 117
descripcin 91
series de retorno 465
LONG_VARGRAPHIC, funcin
juegos de caracteres
descripcin 382
definicin 29
valores y argumentos 382
JULIAN_DAY, funcin
LONG VARGRAPHIC, tipo de datos
descripcin 368
descripcin 95
valores y argumentos 368
longitud
funcin escalar LENGTH 372
longitud de byte
L valores de tipos de datos 372
LBAC (control de acceso basado en etiquetas) LTRIM, funcin escalar
efecto en las tablas de excepciones 879 descripcin 383, 384
lmites 585 valores y argumentos 383, 384
LCASE, funcin escalar
descripcin 370
valores y argumentos 370
LCASE o LOWER, funcin escalar
M
manuales impresos
descripcin de formato detallado 369
pedido 906
valores y argumentos, reglas para 369
marcadores de parmetros
lectura no confirmada (UR)
variables del lenguaje principal en SQL dinmico 65
niveles de aislamiento 23
MAX, funcin
lectura repetible (RR)
descripcin de formato detallado 285
descripcin 23
valores y argumentos 285
LEFT, funcin escalar
mejor opcin (funcin) 172, 181
descripcin 371
mensajes de error
valores y argumentos 371
definiciones de SQLCA 595
Lenguaje de consulta estructurada (SQL)
mtodo con conservacin de tipo 181
asignaciones 117
mtodo sobrecargado 181
operacin de comparacin, visin general 117
mtodos
operandos bsicos, asignaciones y comparaciones 117
con conservacin de tipo 181
lenguaje de definicin de datos (DDL)
definidos por el usuario 181
definicin 1
elemento de lenguaje SQL 181
LIKE, predicado 236
externos 181
lmites
incorporados 181
longitud de identificador 585
invocacin 217
SQL 585
liberacin dinmica de 181
lista de seleccin
sobrecargados 181
descripcin 530
SQL 181
reglas de aplicacin y sintaxis 530
mtodos definidos por el usuario
reglas de notacin y convenciones 530
descripcin 181
literales
MICROSECOND, funcin
descripcin 137
descripcin 385
LN, funcin
valores y argumentos 385
descripcin 374
Microsoft Excel
valores y argumentos 374
Consulte archivos Excel 52
LOB, localizadores 97
Microsoft SQL Server
correlaciones de tipos directas por omisin 811

926 Consulta de SQL - Volumen 1


Microsoft SQL Server (continuacin) nombre de mtodo 65
correlaciones de tipos inversas por omisin 819 nombre de procedimiento
tipos de servidor vlidos 777 definicin 65
versiones soportadas 52 nombre de seudnimo
MIDNIGHT_SECONDS, funcin definicin 65
descripcin 386 nombre de tipo 65
valores y argumentos 386 nombre de variable SQL 65
MIN, funcin 287 nombre de vista
MINUTE, funcin escalar definicin 65
descripcin 387 nombre-descriptor
valores y argumentos 387 definicin 65
MOD, funcin nombre especfico
descripcin 388 definicin 65
valores y argumentos 388 nombre-esquema-remoto 65
MONTH, funcin nombre-etiqueta-seguridad XXXX 65
descripcin 389 nombre-objeto-remoto 65
valores y argumentos 389 nombre-poltica-seguridad XXXX 65
MONTHNAME, funcin nombre-servidor 65
descripcin 390 nombre-tabla-remota 65
valores y argumentos 390 nombres
muestreo identificacin de columnas en subseleccin 530
en una subseleccin nombres de autorizacin
clusula-tablesample 530 definicin 65
MULTIPLY_ALT, funcin descripcin 65
descripcin de formato detallado 391 restricciones que rigen 65
valores y argumentos, reglas para 391 nombres de correlacin exclusivos
designadores de tabla 65
nombres de esquema
N definicin 65
nombres de paquetes
nivel de aislamiento RR (lectura repetible)
definicin 65
descripcin 23
NOT NULL, clusula
nivel de aislamiento RS (estabilidad de lectura)
en predicado NULL 241
descripcin 23
NULL, reglas del predicado 241
nivel de aislamiento UR (lectura no confirmada) 23
NULLIF, funcin
niveles de aislamiento
descripcin 393
descripcin 23
valores y argumentos 393
en sentencia DELETE 574
NUMERIC o DECIMAL, tipo de datos
estabilidad de lectura (RS) 23
signo y precisin 90
estabilidad del cursor 23
numrica
lectura no confirmada (UR) 23
asignaciones en operaciones SQL 117
lectura repetible (RR) 23
numricas
NODENUMBER, funcin (vea DBPARTITIONNUM) 331
comparaciones 117
nombre-componente
nmeros
descripcin 65
escala 601
nombre-correlacin expuesto en clusula FROM 65
precisin 601
nombre de agrupacin de almacenamiento intermedio 65
nombre de atributo
definicin 65
nombre de autorizacin remota 65 O
nombre de condicin objetos de fuente de datos
procedimientos SQL 65 descripcin 49
nombre de correlacin objetos grandes (LOB)
clusula FROM, reglas de subseleccin 530 comportamiento 43
definicin 65 con tablas particionadas 43
referencia calificada 65 objetos grandes binarios (BLOB)
reglas 65 definicin 96
SELECT, diagrama de sintaxis en la clusula 530 descripcin de funcin escalar 306
nombre de correlacin de funciones 65 OCTET_LENGTH, funcin escalar
nombre de correlacin no expuesto en clusula FROM 65 descripcin 394
nombre de cursor ODBC
definicin 65 correlaciones de tipos directas por omisin 811
nombre de fuente de datos 65 tipos de servidor vlidos 777
nombre de funcin 65 versiones soportadas 52
nombre de grupo ODBC (Open Database Connectivity - Conectividad de bases
definicin 65 de datos abierta)
nombre de ndice descripcin 2
definicin 65

ndice 927
OLE DB Opcin de servidor de LOGIN_TIMEOUT
tipos de servidor vlidos 777 valores vlidos 789
versiones soportadas 52 Opcin de servidor de PACKET_SIZE
opcin de columna NUMERIC_STRING valores vlidos 789
valores vlidos 780 Opcin de servidor de PASSWORD
opcin de correlacin de funciones DISABLE valores vlidos 789
valores vlidos 788 Opcin de servidor de PLAN_HINTS
opcin de correlacin de funciones INSTS_PER_ARGBYTE valores vlidos 789
valores vlidos 788 Opcin de servidor de PUSHDOWN_SEQUENCE
opcin de correlacin de funciones INSTS_PER_INVOC valores vlidos 789
valores vlidos 788 Opcin de servidor de TIMEFORMAT
opcin de correlacin de funciones IOS_PER_ARGBYTE valores vlidos 789
valores vlidos 788 Opcin de servidor de TIMEOUT_SEQUENCE
opcin de correlacin de funciones IOS_PER_INVOC valores vlidos 789
valores vlidos 788 Opcin de servidor de TIMESTAMPFORMAT
opcin de correlacin INITIAL_INSTS valores vlidos 789
valores vlidos 788 Opcin de servidor NODE, valores vlidos 789
opcin de correlacin INITIAL_IOS Opcin de usuario ACCOUNTING_STRING
valores vlidos 788 valores vlidos 807
opcin de correlacin PERCENT_ARGBYTES Opcin de usuario PROXY_AUTHID
valores vlidos 788 valores vlidos 807
opcin de correlacin REMOTE_NAME Opcin de usuario PROXY_PASSWORD
valores vlidos 788 valores vlidos 807
Opcin de derivador de DB2_FENCED Opcin de usuario REMOTE_AUTHID
valores vlidos 808 valores vlidos 807
Opcin de derivador de DB2_SOURCE_CLIENT_MODE Opcin de usuario REMOTE_DOMAIN
valores vlidos 808 valores vlidos 807
Opcin de derivador de DB2_UM_PLUGIN Opcin de usuario REMOTE_PASSWORD
valores vlidos 808 valores vlidos 807
Opcin de derivador de EMAIL Opcin de usuario SSL_CLIENT_CERTIFICATE_LABEL
valores vlidos 808 valores vlidos 807
Opcin de derivador de PROXY_SERVER_NAME opciones de columna
valores vlidos 808 descripcin 50
Opcin de derivador de PROXY_SERVER_PORT valores vlidos 780
valores vlidos 808 opciones de columna de apodo
Opcin de derivador de PROXY_TYPE descripcin 50
valores vlidos 808 opciones de columna de VARCHAR_NO_TRAILING_
Opcin de derivador de SSL_KEYSTORE_FILE BLANKS
valores vlidos 808 valores vlidos 780
Opcin de derivador de SSL_KEYSTORE_PASSWORD opciones de derivador
valores vlidos 808 valores vlidos 808
Opcin de derivador de SSL_SERVER_CERTIFICATE Opciones de derivador de MODULE
valores vlidos 808 valores vlidos 808
opcin de servidor COLLATING_SEQUENCE opciones de servidor
ejemplo 57 descripcin 48
valores vlidos 789 temporal 48
Opcin de servidor de COMM_RATE valores vlidos 789
valores vlidos 789 opciones de servidor de VARCHAR_NO_TRAILING_
Opcin de servidor de CONNECTSTRING_SEQUENCE BLANKS
valores vlidos 789 valores vlidos 789
Opcin de servidor de CPU_RATIO Open Database Connectivity (ODBC) 2
valores vlidos 789 operaciones
Opcin de servidor de DATEFORMAT_SEQUENCE asignaciones 117
valores vlidos 789 comparaciones 117
Opcin de servidor de DBNAME_SEQUENCE desreferencia 209
valores vlidos 789 fecha y hora 197
Opcin de servidor de FOLD_ID operaciones de SQL
valores vlidos 789 bsicas 117
Opcin de servidor de FOLD_PW operadores
valores vlidos 789 aritmtica 189
Opcin de servidor de IFILE_SEQUENCE operadores de conjunto
valores vlidos 789 EXCEPT, comparacin de diferencias 569
Opcin de servidor de IGNORE_UDT INTERSECT, papel de AND en comparaciones 569
valores vlidos 789 tipo de datos del resultado 129
Opcin de servidor de IO_RATIO UNION, correspondencia con OR 569
valores vlidos 789 operadores lgicos, reglas de bsqueda 225

928 Consulta de SQL - Volumen 1


operandos predicados
coma flotante 189 bsico, diagrama detallado 228
decimal 189 BETWEEN, diagrama detallado 232
entero 189 cuantificado 229
series 189 descripcin 224
tipo de datos del resultado 129 EXISTS 233
optimizacin de consultas IN 234
descripcin 56 LIKE 236
optimizador NULL 241
descripcin 56 TYPE 242
OR, tabla de evaluacin 225 VALIDATED 244
Oracle XMLEXISTS 245
correlaciones de tipos directas por omisin 811 PREPARE, sentencia
correlaciones de tipos inversas por omisin 819 SQL dinmico 1
orden de clasificacin prioridad
reglas de comparacin de series 117 orden de evaluacin de operaciones 189
orden de evaluacin privilegios
expresiones 189 de propiedad (CONTROL) 15
descripcin 15
EXECUTE 172, 181
P implcitos para paquetes 15
individuales 15
pginas de cdigos
jerarqua 15
atributos 29
procedimientos almacenados
definicin 29
CALL, sentencia 887
descripcin 57
XSR_COMPLETE 520
palabras reservadas en SQL 827
XSR_DTD 522
paquetes
XSR_ENTITY 524
definicin 14
XSR_REGISTER 526
ID de autorizacin
proceso analtico en lnea (online analytical processing -
en sentencias dinmicas 65
OLAP)
y vinculacin 65
funciones 211
parmetros
Proceso analtico en lnea (Online Analytical Processing -
convenios de denominacin 65
OLAP)
particin de generacin aleatoria 42
funciones 211
particionamiento de datos
proceso de aplicacin
compatibilidad entre particiones 135
definicin 21
entre varias particiones 42
estados de conexin 31
particiones
promocionar
compatibilidad 135
tipos de datos 108
PARTITION, funcin (vea HASHEDVALUE) 356
propiedad
pedido de manuales de DB2 906
objetos de base de datos 15
peticionario de aplicaciones 31
puntos de coherencia de base de datos 21
peticionarios de aplicaciones 31
puntos de salvar
planes de acceso
nombres 65
descripcin 56
polticas de seguridad LBAC
longitud del nombre 585
POSITION, funcin escalar Q
descripcin 395 QUARTER, funcin
POSSTR, funcin descripcin 401
descripcin 398 valores y argumentos 401
valores y argumentos 398
POWER, funcin escalar
descripcin 400
valores y argumentos 400
R
RADIANS, funcin escalar
precisin
descripcin 402
nmeros, determinados por la variable SQLLEN 601
valores y argumentos 402
precisin doble, tipo de datos de coma flotante 90
RAISE_ERROR, funcin escalar
precisin simple, tipo de datos de coma flotante 90
descripcin 403
predicado bsico 228
valores y argumentos 403
predicado cuantificado 229
RAND, funcin escalar
predicado EXISTS 233
descripcin 404
predicado TYPE
valores y argumentos 404
formato 242
REAL, funcin
Predicado VALIDATED 244
conversin de precisin simple 405
predicado XMLEXISTS 245
descripcin 405

ndice 929
REAL, funcin (continuacin) remoto
valores y argumentos 405 nombre de funcin 65
REAL SQL, tipo de datos nombre de tipo 65
signo y precisin 90 REPEAT, funcin escalar
REC2XML, funcin escalar descripcin 411
descripcin 406 valores y argumentos 411
valores y argumentos 406 REPLACE, funcin escalar
recursin, consultas 574 descripcin 412
recursiva, expresin de tabla comn 574 valores y argumentos 412
referencia correlacionada reservados
en expresin de tabla anidada 65 calificadores 827
en seleccin completa escalar 65 esquemas 827
en subconsulta 65 palabras 827
en subselecciones 530 resolucin
referencia de tabla funcin 172
apodo 530 mtodo 181
expresiones de tabla anidadas 530 resolucin de problemas
nombre de tabla 530 guas de aprendizaje 911
nombre de vista 530 informacin en lnea 911
seudnimo 530 restricciones
registros especiales control de tabla 6
actualizables 141 de referencia 6
CURRENT CLIENT_ACCTNG 144 de unicidad 6
CURRENT CLIENT_APPLNAME 145 definicin de nombres 65
CURRENT CLIENT_USERID 146 informativas 6
CURRENT CLIENT_WRKSTNNAME 147 Tablas de Explain 835
CURRENT DATE 148 restricciones de referencia
CURRENT DBPARTITIONNUM 149 descripcin 6
CURRENT DEFAULT TRANSFORM GROUP 150 restricciones de unicidad
CURRENT DEGREE 151 definicin 6
CURRENT EXPLAIN MODE 152 restricciones informativas
CURRENT EXPLAIN SNAPSHOT 153 descripcin 6
CURRENT FEDERATED ASYNCHRONY 154 retrotraccin
CURRENT FUNCTION PATH 160 definicin 21
CURRENT IMPLICIT XMLPARSE OPTION 155 RIGHT, funcin escalar
CURRENT ISOLATION 156 descripcin 413
CURRENT LOCK TIMEOUT 157 valores y argumentos 413
CURRENT MAINTAINED TABLE TYPES FOR ROLLUP, agrupacin de clusula GROUP BY 530
OPTIMIZATION 158 ROUND, funcin escalar
CURRENT NODE (vea CURRENT descripcin 414
DBPARTITIONNUM) 149 valores y argumentos 414
CURRENT PACKAGE PATH 159 RTRIM, funcin escalar
CURRENT PATH 160 descripcin 416
CURRENT QUERY OPTIMIZATION 161 RTRIM, funcin escalar (esquema SYSFUN) 417
CURRENT REFRESH AGE 162 rutinas
CURRENT SCHEMA 163 administracin de SQL
CURRENT SERVER 164 soportadas 251
CURRENT SQLID 163 procedimientos 517
CURRENT TIME 165 sentencias de SQL permitidas 883
CURRENT TIMESTAMP 166 rutinas administrativas SQL
CURRENT TIMEZONE 167 soportadas 251
CURRENT USER 168
elemento de lenguaje SQL 141
interaccin, Explain 871
SESSION USER 169
S
Script
SYSTEM USER 170
versiones soportadas 52
USER 171
secciones
registros especiales actualizables 141
definicin 14
regla de actualizacin con restricciones de referencia 6
SECLABEL, funcin escalar
regla de insercin con restriccin de referencia 6
descripcin 418
regla de supresin
SECLABEL_BY_NAME, funcin escalar
con restriccin de referencia 6
descripcin 419
reglas comerciales
SECLABEL_TO_CHAR, funcin escalar
transicionales 11
descripcin 420
reiniciadores
SECOND, funcin escalar
nombres 65
descripcin 422
valores y argumentos 422

930 Consulta de SQL - Volumen 1


secuencia series de caracteres (continuacin)
valores 220 POSSTR, funcin escalar 398
secuencias serie de caracteres de doble byte 465
valores, ordenacin 352 sintaxis de serie de conversin 451
secuencias de clasificacin tipos de datos 91
descripcin 57 series de caracteres terminadas en NULL 91
planificacin 57 series grficas
seleccin completa devolucin de nombre de variable del lenguaje
clusula ORDER BY 530 principal 451
ejemplos 569 sintaxis de serie de conversin 451
escalar 189 servidor federado 46
inicializacin 574 descripcin 51
iterativa 574 servidores
mltiples operaciones, orden de ejecucin 569 aplicaciones
referencia de tabla 530 conexin de aplicaciones a 31
rol de subconsulta, condicin de bsqueda 65 SESSION USER, registro especial 169
sintaxis detallada 569 seudnimos
seleccin completa de inicializacin 574 definicin 14
seleccin completa iterativa 574 descripcin 65
SELECT, clusula TABLE_NAME, funcin 437
con palabra clave DISTINCT 530 TABLE_SCHEMA, funcin 438
notacin de lista, referencia de columna 530 SIGN, funcin escalar
SELECT, sentencia descripcin 423
ejemplos 574 valores y argumentos 423
sensibilidad a maysculas y minsculas signatura de funcin 172
en identificadores simblicos 63 signatura de mtodo 181
sentencia CREATE SERVER 51 signaturas
sentencia SELECT funcin 172
definicin 574 mtodo 181
sintaxis detallada de seleccin completa 569 smbolo delimitador
subselecciones 530 definicin 63
VALUES, clusula 569 smbolos
sentencia SET SERVER OPTION delimitadores 63
establecimiento de una opcin temporalmente 48 elemento de lenguaje SQL 63
sentencias ordinarios 63
nombres 65 sensibilidad a maysculas y minsculas 63
sentencias de SQL smbolos ordinarios 63
CALL 887 SIN, funcin escalar
ejecucin inmediata de SQL dinmico 1 descripcin 424
permitidas en rutinas 883 valores y argumentos 424
preparacin y ejecucin de SQL dinmico 1 SINH, funcin escalar
SQL dinmico, definicin 1 descripcin 425
SQL esttico, definicin 1 valores y argumentos 425
SQL interactivo, definicin 1 sinnimos
visualizacin de ayuda 907 calificacin de un nombre de columna 65
serie de caracteres de longitud fija 91 sintaxis
serie de caracteres de longitud variable 91 descripcin xvi
serie de diagnstico sintaxis de SQL
en la funcin RAISE_ERROR 403 clusula GROUP BY, utilizacin en subselecciones 530
serie grfica de longitud fija 95 comparacin de dos predicados, condiciones
serie grfica de longitud variable 95 verdaderas 228, 242
serie vaca 91, 95 condiciones de bsqueda, formatos y reglas 225
series condiciones de bsqueda de clusula WHERE 530
definicin 29 descripcin de la clusula SELECT 530
reglas de conversin de asignaciones 117 descripcin del predicado IN 234
secuencias de clasificacin 57 funcin agregada AVG, resultado en conjunto de
series de caracteres columnas 276
asignacin 117 funcin agregada STDDEV, resultados 293
BLOB, representacin de serie 306 funcin COUNT_BIG, argumentos y resultados 280
comparaciones 117 GENERATE_UNIQUE, funcin 352
devolucin de nombre de variable del lenguaje mltiples operaciones, orden de ejecucin 569
principal 451 predicado bsico, diagrama detallado 228
funcin escalar VARCHAR 461 predicado BETWEEN, reglas 232
funcin escalar VARGRAPHIC 465 predicado EXISTS 233
igualdad predicado LIKE, reglas 236
definicin 117 predicado TYPE 242
ejemplos de orden de clasificacin 117 resultados de la funcin agregada CORRELATION 278

ndice 931
sintaxis de SQL (continuacin) SUBSTRING, funcin escalar
resultados de la funcin agregada COVARIANCE 282 descripcin 434
resultados de la funcin agregada VARIANCE 295 subtipos de caracteres 91
resultados de las funciones de regresin 290 SUM, funciones
sistema de gestin de bases de datos distribuidas 45 descripcin de formato detallado 294
sistemas federados valores y argumentos 294
visin general 45 supergrupos 530
SMALLINT, funcin supertipos
descripcin 426 nombres de identificadores 65
valores y argumentos 426 supervisin
SMALLINT, tipo de datos sucesos de la base de datos 40
signo y precisin 90 supervisores de sucesos
SOME, predicado cuantificado 229 definicin 40
SOUNDEX, funcin escalar EVENT_MON_STATE, funcin 347
descripcin 427 nombre 65
valores y argumentos 427 Sybase
SPACE, funcin escalar correlaciones de tipos directas por omisin 811
descripcin 428 correlaciones de tipos inversas por omisin 819
valores y argumentos 428 tipos de servidor vlidos 777
SQL (Structured Query Language - Lenguaje de consulta versiones soportadas 52
estructurada) SYSTEM USER, registro especial 170
lmites 585
va de acceso 172
SQL dinmico
definicin 1
T
tabla ADVISE_INDEX 859
EXECUTE, sentencia 1
tabla ADVISE_WORKLOAD 869
PREPARE, sentencia 1
tabla base 4
SQLDA utilizada con 601
tabla de autorreferencia 6
SQL esttico
tabla de objetos 65
descripcin 1
tabla dependiente 6
SQL incorporado para Java (SQLJ)
tabla descendiente 6
Conectividad de base de datos Java 3
tabla padre 6
SQL interactivo 1
tabla resultante
SQLCA (rea de comunicaciones SQL)
consulta 529
descripcin 595
definicin 4
informe de errores 595
tablas
sistemas de bases de datos particionadas 595
autorreferente 6
visualizacin interactiva 595
base 4
SQLDA (rea de descriptores de SQL)
clusula FROM, convenios de denominacin de
contenido 601
subseleccin 530
SQLDATA, campo de SQLDA 601
clave de distribucin 5
SQLJ (SQL incorporado para Java)
clave de particionamiento 5
conectividad 3
clave fornea 5
SQLSTATE
clave primaria 5
en la funcin RAISE_ERROR 403
colocacin 42
SQRT, funcin escalar
con tipo 4
descripcin 429
definicin 4
STDDEV, funcin 293
dependiente 6
STRIP, funcin escalar
descendiente 6
descripcin 430
designador para evitar ambigedad 65
subconsulta de SQL, clusula WHERE 530
escalares, seleccin completa 65
subconsultas
excepciones 879
clusula WHERE 530
expresin de tabla anidada 65
HAVING, clusula 530
nombre de columna calificado 65
utilizar seleccin completa como condicin de
nombre de correlacin 65
bsqueda 65
nombres
subseleccin
descripcin 65
clusula FROM, relacin con la subseleccin 530
en clusula FROM 530
descripcin 530
SELECT, diagrama de sintaxis en la clusula 530
ejemplo de secuencia de operaciones 530
nombres de correlacin exclusivos 65
ejemplos 530
nombres expuestos en clusula FROM 65
subseries 431
nombres no expuestos en clusula FROM 65
SUBSTR, funcin
padre 6
fragmentos 431
referencia de tabla 530
SUBSTR, funcin escalar
restricciones de comprobacin
descripcin 431
tipos 6
valores y argumentos 431
resultados 4

932 Consulta de SQL - Volumen 1


tablas (continuacin) TIMESTAMP_ISO, funcin
resumen 4 descripcin 446
subconsulta 65 valores y argumentos 446
temporal declarada TIMESTAMPDIFF, funcin escalar
descripcin 4 descripcin 447
transicin 11 valores y argumentos 447
vistas de catlogo en tablas del sistema 613 tipo de datos DATALINK
tablas con tipo no soportados 51
descripcin 4 tipo de datos del resultado
nombres 65 argumentos de COALESCE 129
tablas de evaluacin 225 clusula VALUES de mltiples filas 129
tablas de excepciones expresiones de resultado de CASE 129
estructura 879 operador de conjunto 129
tablas de Explain operandos 129
visin general 835 tipos
tablas de resumen diferenciado 105
definicin 4 estructurado 105
tablas particionadas referencia 105
con objetos grandes (LOB) 43 tipos de datos
tablas resultantes intermedias 530 BIGINT 90
tablas temporales declaradas BLOB 96
definicin 4 CHAR 91
tablas unidas CLOB 91
clusula de subseleccin 530 columnas del resultado 530
referencia de tabla 530 compatibilidad entre particiones 135
TABLE, clusula conversin entre 110
referencia de tabla 530 DATALINK 102
TABLE_NAME, funcin DATE 99
descripcin 437 DBCLOB 95
seudnimo 437 DECIMAL o NUMERIC 90
valores y argumentos 437 definidos por el usuario 105
TABLE_SCHEMA, funcin DOUBLE o FLOAT 90
descripcin 438 elemento de lenguaje SQL 88
seudnimo 438 fecha y hora 99
valores y argumentos 438 funcin TYPE_ID 456
tabulacin cruzada, filas 530 funcin TYPE_SCHEMA 458
tamao, lmites GRAPHIC 95
longitud de identificador 585 INTEGER 90
SQL 585 LONG VARCHAR 91
TAN, funcin escalar LONG VARGRAPHIC 95
descripcin 440 no soportados 51
valores y argumentos 440 numricos 90
TANH, funcin escalar promocin 108
descripcin 441 promocin en una base de datos Unicode 108
valores y argumentos 441 REAL 90
Teradata serie binaria 96
correlaciones de tipos directas por omisin 811 serie de caracteres 91
correlaciones de tipos inversas por omisin 819 serie grfica 95
tipos de servidor vlidos 777 SMALLINT 90
trminos y condiciones TIME 99
uso de publicaciones 912 TIMESTAMP 99
TIME, funcin TYPE_NAME, funcin 457
descripcin 442 VARCHAR 91
valores y argumentos 442 VARGRAPHIC 95
TIME, tipo de datos XML 104
descripcin 99 tipos de datos de fecha y hora
TIMESTAMP, funcin descripcin 99
descripcin 443 funcin escalar VARCHAR 461
valores y argumentos 443 representacin en serie de 99
TIMESTAMP, tipo de datos tipos de datos de objeto grande (LOB)
descripcin 99 descripcin 97
funcin escalar WEEK 467 tipos de datos de serie binaria 96
WEEK_ISO, funcin escalar 468 tipos de datos numricos
TIMESTAMP_FORMAT, funcin descripcin 90
descripcin 444 tipos de datos se serie grfica
valores y argumentos 444 descripcin 95

ndice 933
tipos de referencia unidades de trabajo (UOW)
comparaciones 117 definicin 21
conversin 110 distribuidas 31
DEREF, funcin 340 remotas 31
descripcin 105 UNION, operador, papel en comparaciones de seleccin
tipos de servidor completa 569
tipos federados vlidos 777 unin externa
tipos definidos por el usuario (UDT) tabla unida 530
conversin 110 uniones
descripcin 105 ejemplos 530
tipo de referencia 105 ejemplos de subselecciones 530
tipos de datos no soportados 51 tipos
tipos diferenciados completas externas 530
descripcin 105 derechas externas 530
tipos estructurados 105 internas 530
tipos diferenciados izquierdas externas 530
como operandos aritmticos 189 UPPER, funcin
comparacin 117 descripcin 459
concatenacin 189 valores y argumentos 459
constantes 137 USER, registro especial 171
descripcin 105
nombres 65
tipos estructurados
descripcin 105
V
valor
variables del lenguaje principal 65
definicin 4, 88
TO_CHAR, funcin
null 88
descripcin 449
valor nulo
valores y argumentos 449
definicin 88
TO_DATE, funcin
valor nulo, SQL
descripcin 450
apariciones en filas duplicadas 530
valores y argumentos 450
asignacin 117
TRANSLATE, funcin escalar
columnas del resultado 530
descripcin 451
condicin desconocida 225
serie de caracteres 451
especificado por variable indicadora 65
serie grfica 451
expresiones-agrupacin, utilizaciones permitidas 530
valores y argumentos 451
valores
TRIM, funcin escalar
secuencia 220
descripcin 453
valores enteros de expresiones
truncamiento
funcin INTEGER 366
nmeros 117
valores enteros pequeos de expresiones, funcin
TRUNCATE o TRUNC, funcin escalar
SMALLINT 426
descripcin 455
VALUE, funcin
valores y argumentos 455
descripcin 460
TYPE_NAME, funcin
valores y argumentos 460
descripcin 457
VALUES, clusula
valores y argumentos 457
seleccin completa 569
VARCHAR, funcin
descripcin 461
U valores y argumentos 461
UCASE, funcin escalar VARCHAR, tipo de datos
descripcin 459 descripcin 91
valores y argumentos 459 funcin escalar DOUBLE 343
UDF (funciones definidas por el usuario) funcin escalar WEEK 467
descripcin 514 WEEK_ISO, funcin escalar 468
unario, operador VARCHAR_FORMAT, funcin
signo ms 189 descripcin 463
signo menos 189 valores y argumentos 463
Unicode VARGRAPHIC, funcin
conversin a maysculas 63 descripcin 465
Unicode (UCS-2) valores y argumentos 465
funciones en 296 VARGRAPHIC, tipo de datos
unidad de trabajo distribuida descripcin 95
descripcin 31 variables
unidad de trabajo remota transicin 11
descripcin 31 variables del lenguaje principal
unidades de serie BLOB 65
funciones incorporadas 91 CLOB 65

934 Consulta de SQL - Volumen 1


variables del lenguaje principal (continuacin) vistas de catlogo (continuacin)
DBCLOB 65 HIERARCHIES 661
definicin 65 INDEXAUTH 662
diagrama de sintaxis 65 INDEXCOLUSE 663
variables indicadoras 65 INDEXDEP 664
variables indicadoras INDEXES 665
descripcin 65 INDEXEXPLOITRULES 671
variable del lenguaje principal, usos de declaracin 65 INDEXEXTENSIONDEP 672
VARIANCE, funcin agregada 295 INDEXEXTENSIONMETHODS 673
va de acceso de SQL 172 INDEXEXTENSIONPARMS 674
incorporada 172 INDEXEXTENSIONS 675
VIEWDEP, vista de catlogo INDEXOPTIONS 676
vea vistas de catlogo, TABDEP 732 INDEXXMLPATTERNS 677
vinculacin KEYCOLUSE 678
recuperacin de datos, papel en la optimizacin 1 NAMEMAPPINGS 679
semntica de funcin 172 NODEGROUPDEF (vea DBPARTITIONGROUPDEF) 651
semntica de mtodo 172 NODEGROUPS (vea DBPARTITIONGROUPS) 652
vistas PACKAGEAUTH 683
calificacin de un nombre de columna 65 PACKAGEDEP 684
clusula FROM, convenios de denominacin de PACKAGES 686
subseleccin 530 PARTITIONMAPS 692
descripcin 13 PASSTHRUAUTH 693
nombres en clusula FROM 530 PREDICATESPECS 694
nombres en clusula SELECT, diagrama de sintaxis 530 PROCEDURES (vea ROUTINES) 702
nombres expuestos en clusula FROM 65 PROCOPTIONS (vase ROUTINEOPTIONS) 698
nombres no expuestos en clusula FROM 65 PROCPARMOPTIONS (vase
vistas con tipo ROUTINEPARMOPTIONS) 699
descripcin 13 PROCPARMS (vea ROUTINEPARMS) 700
nombres 65 REFERENCES 695
vistas de catlogo ROUTINEAUTH 696
actualizables 613 ROUTINEDEP (anteriormente FUNCDEP) 697
ATTRIBUTES 620 ROUTINEOPTIONS (antes PROCOPTIONS) 698
BUFFERPOOLDBPARTITIONS 622 ROUTINEPARMOPTIONS (antes
BUFFERPOOLNODES (vea PROCPARMOPTIONS) 699
BUFFERPOOLDBPARTITIONS) 622 ROUTINEPARMS (anteriormente FUNCPARMS,
BUFFERPOOLS 623 PROCPARMS) 700
CASTFUNCTIONS 624 ROUTINES (anteriormente FUNCTIONS,
CHECKS 625 PROCEDURES) 702
COLAUTH 627 ROUTINESFEDERATED 711
COLCHECKS 628 SCHEMAAUTH 713
COLDIST 629 SCHEMATA 714
COLGROUPCOLS 630 SECURITYLABELACCESS 715
COLGROUPDIST 631, 765 SECURITYLABELCOMPONENTELEMENTS 716
COLGROUPDISTCOUNTS 632, 766 SECURITYLABELCOMPONENTS 717
COLGROUPS 633, 767 SECURITYLABELS 718
COLIDENTATTRIBUTES 634 SECURITYPOLICIES 719
COLOPTIONS 635 SECURITYPOLICYCOMPONENTRULES 720
COLUMNS 636 SECURITYPOLICYEXEMPTIONS 721
COLUSE 642 SEQUENCEAUTH 723
CONSTDEP 643 SEQUENCES 724
DATAPARTITIONEXPRESSION 644 SERVEROPTIONS 726
DATAPARTITIONS 645 SERVERS 727
DATATYPES 647 slo lectura 613
DBAUTH 649 STATEMENTS 728
DBPARTITIONGROUPDEF 651 SURROGATEAUTHIDS 722
DBPARTITIONGROUPS 652 SYSCAT.DATAPARTITIONEXPRESSION 644
descripcin 20 SYSCAT.DATAPARTITIONS 645
EVENTMONITORS 653 SYSDUMMY1 619
EVENTS 655 SYSSTAT.COLDIST 764
EVENTTABLES 656 SYSSTAT.COLUMNS 768
FULLHIERARCHIES 657 SYSSTAT.FUNCTIONS (vea SYSSTAT.ROUTINES) 773
FUNCDEP (vea ROUTINEDEP) 697 SYSSTAT.ROUTINES (anteriormente
FUNCMAPOPTIONS 658 SYSSTAT.FUNCTIONS) 773
FUNCMAPPARMOPTIONS 659 SYSSTAT.TABLES 774
FUNCMAPPINGS 660 SYSSTATINDEXES 769
FUNCPARMS (vea ROUTINEPARMS) 700 TABAUTH 729
FUNCTIONS (vea ROUTINES) 702 TABCONST 731

ndice 935
vistas de catlogo (continuacin) XMLTEXT, funcin escalar
TABDEP 732 descripcin 500
TABDETACHEDDEP 734 XMLVALIDATE, funcin escalar
TABLES 735 descripcin 502
TABLESPACES 742 XMLXSROBJECTID, funcin escalar
TABOPTIONS 744 descripcin 507
TBSPACEAUTH 745 XSR_COMPLETE, procedimiento almacenado 520
TRANSFORMS 746 XSR_DTD, procedimiento almacenado 522
TRIGDEP 747 XSR_ENTITY, procedimiento almacenado 524
TRIGGERS 748 XSR_REGISTER, procedimiento almacenado 526
TYPEMAPPINGS 750
USEROPTIONS 753
VIEWS 754
visin general 613
Y
YEAR, funcin escalar
WRAPOPTIONS 755
descripcin 508
WRAPPERS 756
valores y argumentos 508
XDBMAPGRAPHS 757
XDBMAPSHREDTREES 758
XSROBJECTAUTH 759
XSROBJECTCOMPONENTS 760
XSROBJECTDEP 761
XSROBJECTHIERARCHIES 762
XSROBJECTS 763
Visual Explain
gua de aprendizaje 911

W
WEEK_ISO, funcin escalar
descripcin 468
valores y argumentos 468
WITH, expresin de tabla comn 574

X
XML
tipo de datos 104
versiones soportadas 52
XMLAGG, funcin agregada
descripcin 288
XMLATTRIBUTES, funcin escalar
descripcin 469
XMLCAST
especificaciones 207
XMLCOMMENT, funcin escalar
descripcin 471
XMLCONCAT, funcin escalar
descripcin 472
XMLDOCUMENT, funcin escalar
descripcin 474
XMLELEMENT, funcin escalar
descripcin 476
XMLFOREST, funcin escalar
descripcin 482
XMLNAMESPACES, declaracin
descripcin 486
XMLPARSE, funcin escalar
descripcin 489
XMLPI, funcin escalar
descripcin 491
XMLQUERY, funcin escalar
descripcin 493
XMLSERIALIZE, funcin escalar
descripcin 497
XMLTABLE, funcin de tabla
descripcin 510

936 Consulta de SQL - Volumen 1


Cmo ponerse en contacto con IBM
Para ponerse en contacto con IBM en su pas o regin, consulte IBM Directory of
Worldwide Contacts en el sitio http://www.ibm.com/planetwide

Para obtener ms informacin sobre productos DB2, vaya a


http://www.ibm.com/software/data/db2/.

Copyright IBM Corp. 1993, 2006 937


938 Consulta de SQL - Volumen 1

SC11-3180-00
Spine information:

IBM DB2 DB2 versin 9 Consulta de SQL - Volumen 1

Das könnte Ihnen auch gefallen