Manual Informix
Manual Informix
SC11-3508-02
SC11-3508-02
Nota Antes de utilizar esta informacin y el producto al que da soporte, lea la informacin general en el Apndice O, Avisos, en la pgina 845.
Nota de edicin Este manual es la traduccin del original en ingls DB2 Version 9.5 for Linux, UNIX, and Windows SQL Reference, Volume 1 (SC23-5861-02). Este documento contiene informacin propiedad de IBM. Se proporciona segn un acuerdo de licencia y est protegido por la ley de la propiedad intelectual. La informacin contenida en esta publicacin no incluye ninguna garanta de producto, por lo que ninguna declaracin proporcionada en este manual deber interpretarse como tal. Puede realizar pedidos de publicaciones de IBM en lnea o a travs del representante de IBM de su localidad. v Para realizar pedidos en lnea, vaya a IBM Publications Center ubicado en el sitio web www.ibm.com/shop/ publications/order v Para encontrar al representante de IBM de su localidad, vaya al IBM Directory of Worldwide Contacts en el sitio web www.ibm.com/planetwide Para realizar pedidos de publicaciones de DB2 desde DB2 Marketing and Sales, en los EE.UU. o en Canad, llame al 1-800-IBM-4YOU (426-4968). Cuando enva informacin a IBM, otorga a IBM un derecho no exclusivo a 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, 2009.
Contenido
Acerca de este manual . . . . . . . . ix
Quin debe utilizar este manual . . Cmo est estructurado este manual . Cmo leer los diagramas de sintaxis . Convenios utilizados en este manual . Condiciones de error . . . . . Convenios de resaltado . . . . Documentacin relacionada . . . . . ix . ix . . . . . x . . . . . xii . . . . . xii . . . . . xii . . . . . xii . . . . . . . .
. . . 51
Captulo 1. Conceptos. . . . . . . . . 1
Bases de datos . . . . . . . . . . . . . . 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 Restricciones . . . . . . . . . . . . . . 5 ndices . . . . . . . . . . . . . . . . 5 Activadores. . . . . . . . . . . . . . . 7 Vistas . . . . . . . . . . . . . . . . . 9 Alias de tabla o vista . . . . . . . . . . . 11 Paquetes . . . . . . . . . . . . . . . 11 Autorizaciones, privilegios y propiedad de objetos 11 Vistas de catlogo del sistema . . . . . . . . 17 Procesos, simultaneidad y recuperacin de aplicaciones . . . . . . . . . . . . . . 18 Niveles de aislamiento. . . . . . . . . . . 20 Espacios de tablas . . . . . . . . . . . . 24 Conversin de caracteres . . . . . . . . . . 26 Soporte de idioma nacional y sentencias de SQL . . 29 Conexin a bases de datos relacionales distribuidas 30 Supervisores de sucesos . . . . . . . . . . 31 Particin de bases de datos en varias particiones de base de datos . . . . . . . . . . . . . . 32 Comportamiento de objetos grandes en las tablas con particiones . . . . . . . . . . . . . 33 Sistemas federados de DB2 . . . . . . . . . 34 Sistemas federados . . . . . . . . . . . 34 Qu es una fuente de datos? . . . . . . . 35 La base de datos federada . . . . . . . . 36 Compilador de SQL . . . . . . . . . . 36 Derivadores y mdulos de derivador . . . . . 37 Definiciones de servidor y opciones de servidor 38 Correlaciones de usuarios . . . . . . . . 38 Apodos y objetos de fuente de datos . . . . . 39 Opciones de columna de apodo . . . . . . 40 Correlaciones de tipos de datos. . . . . . . 41 El servidor federado . . . . . . . . . . 41 Fuentes de datos soportadas . . . . . . . . 42 Catlogo del sistema de bases de datos federadas 46 Optimizador de consultas . . . . . . . . 46 Secuencias de clasificacin . . . . . . . . 47
Copyright IBM Corp. 1993, 2009
Caracteres . . . . . . . . . . . . . . . 51 Smbolos . . . . . . . . . . . . . . . 52 Identificadores . . . . . . . . . . . . . 53 Tipos de datos . . . . . . . . . . . . . 77 Lista de tipos de datos . . . . . . . . . 79 Promocin de tipos de datos . . . . . . . 93 Conversiones entre tipos de datos . . . . . . 95 Asignaciones y comparaciones. . . . . . . 103 Normas para tipos de datos de resultados . . . 117 Normas para la conversin de series . . . . 121 Comparaciones de series en una base de datos Unicode . . . . . . . . . . . . . . 123 Tipos de datos compatibles entre particiones de base de datos . . . . . . . . . . . . 124 Constantes . . . . . . . . . . . . . . 126 Registros especiales . . . . . . . . . . . 130 CURRENT CLIENT_ACCTNG . . . . . . 133 CURRENT CLIENT_APPLNAME . . . . . 133 CURRENT CLIENT_USERID . . . . . . . 133 CURRENT CLIENT_WRKSTNNAME . . . . 134 CURRENT DATE . . . . . . . . . . . 134 CURRENT DBPARTITIONNUM . . . . . . 135 CURRENT DECFLOAT ROUNDING MODE 135 CURRENT DEFAULT TRANSFORM GROUP 136 CURRENT DEGREE . . . . . . . . . . 137 CURRENT EXPLAIN MODE . . . . . . . 137 CURRENT EXPLAIN SNAPSHOT . . . . . 138 CURRENT FEDERATED ASYNCHRONY . . . 139 CURRENT IMPLICIT XMLPARSE OPTION . . 139 CURRENT ISOLATION . . . . . . . . . 140 CURRENT LOCK TIMEOUT . . . . . . . 141 CURRENT MAINTAINED TABLE TYPES FOR OPTIMIZATION . . . . . . . . . . . 141 CURRENT MDC ROLLOUT MODE . . . . . 141 CURRENT OPTIMIZATION PROFILE . . . . 141 CURRENT PACKAGE PATH . . . . . . . 142 CURRENT PATH . . . . . . . . . . . 142 CURRENT QUERY OPTIMIZATION . . . . 143 CURRENT REFRESH AGE . . . . . . . . 143 CURRENT SCHEMA . . . . . . . . . . 144 CURRENT SERVER . . . . . . . . . . 144 CURRENT TIME . . . . . . . . . . . 144 CURRENT TIMESTAMP . . . . . . . . 145 CURRENT TIMEZONE . . . . . . . . . 145 CURRENT USER . . . . . . . . . . . 146 SESSION_USER . . . . . . . . . . . 146 SYSTEM_USER . . . . . . . . . . . . 147 USER . . . . . . . . . . . . . . . 147 Variables globales . . . . . . . . . . . . 147 Funciones . . . . . . . . . . . . . . 148 Mtodos . . . . . . . . . . . . . . . 156 Expresiones . . . . . . . . . . . . . . 164 Operaciones de fecha y hora y duraciones . . . 175 Expresin CASE . . . . . . . . . . . 179 Especificacin CAST . . . . . . . . . . 182
iii
Especificacin XMLCAST . . . . Especificacin del elemento ARRAY . Operacin de desreferencia . . . . Especificaciones OLAP . . . . . Invocacin de mtodos . . . . . Tratamiento de los subtipos . . . Referencia de secuencia . . . . . Expresin ROW CHANGE . . . . Predicados . . . . . . . . . . Proceso de predicados para consultas Condiciones de bsqueda . . . . Predicado bsico . . . . . . . Predicado cuantificado . . . . . Predicado BETWEEN. . . . . . Predicado EXISTS . . . . . . . Predicado IN . . . . . . . . Predicado LIKE. . . . . . . . Predicado NULL . . . . . . . Predicado TYPE . . . . . . . Predicado VALIDATED . . . . . Predicado XMLEXISTS . . . . .
. . . . . . . . . . . . . . . . . . . . .
. . . . . . . . . . . . . . . . . . . . .
. . . . . . . . . . . . . . . . . . . . .
. . . . . . . . . . . . . . . . . . . . .
186 188 188 189 198 199 200 203 205 205 208 211 212 214 214 215 217 222 223 224 226
COLLATION_KEY_BIT . . . . . COMPARE_DECFLOAT . . . . . CONCAT. . . . . . . . . . COS . . . . . . . . . . . COSH . . . . . . . . . . . COT . . . . . . . . . . . DATAPARTITIONNUM . . . . . DATE . . . . . . . . . . . DAY . . . . . . . . . . . DAYNAME . . . . . . . . . DAYOFWEEK . . . . . . . . DAYOFWEEK_ISO . . . . . . DAYOFYEAR . . . . . . . . DAYS . . . . . . . . . . . DBCLOB . . . . . . . . . . DBPARTITIONNUM . . . . . . DECFLOAT . . . . . . . . . DECIMAL . . . . . . . . . DECODE . . . . . . . . . . DECRYPT_BIN y DECRYPT_CHAR . DEGREES . . . . . . . . . DEREF . . . . . . . . . . DIFFERENCE . . . . . . . . DIGITS . . . . . . . . . . DOUBLE . . . . . . . . . . ENCRYPT . . . . . . . . . EVENT_MON_STATE . . . . . EXP . . . . . . . . . . . FLOAT . . . . . . . . . . FLOOR . . . . . . . . . . GENERATE_UNIQUE . . . . . GETHINT . . . . . . . . . GRAPHIC . . . . . . . . . GREATEST . . . . . . . . . HASHEDVALUE . . . . . . . HEX . . . . . . . . . . . HOUR. . . . . . . . . . . IDENTITY_VAL_LOCAL . . . . INSERT . . . . . . . . . . INTEGER . . . . . . . . . JULIAN_DAY . . . . . . . . LCASE . . . . . . . . . . LCASE (sensible al entorno local). . LEAST . . . . . . . . . . LEFT . . . . . . . . . . . LENGTH . . . . . . . . . . LN . . . . . . . . . . . . Funcin escalar LOCATE . . . . LOG10 . . . . . . . . . . LONG_VARCHAR . . . . . . LONG_VARGRAPHIC . . . . . LOWER . . . . . . . . . . LOWER (sensible al entorno local) . LTRIM . . . . . . . . . . MAX . . . . . . . . . . . MAX_CARDINALITY . . . . . MICROSECOND . . . . . . . MIDNIGHT_SECONDS . . . . . MIN . . . . . . . . . . . MINUTE . . . . . . . . . . MOD . . . . . . . . . . .
. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .
. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .
. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .
. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .
301 302 303 303 304 304 305 305 306 307 308 308 308 309 310 310 312 313 317 318 319 319 320 321 321 322 324 325 325 325 326 327 328 329 330 331 333 334 337 341 342 342 342 343 343 346 348 349 352 353 353 353 354 355 356 357 357 358 359 359 360
iv
MONTH . . . . . . . . . MONTHNAME . . . . . . MULTIPLY_ALT . . . . . . NORMALIZE_DECFLOAT . . . NULLIF . . . . . . . . . NVL . . . . . . . . . . OCTET_LENGTH . . . . . . OVERLAY . . . . . . . . PARAMETER . . . . . . . Funcin escalar POSITION . . . Funcin escalar POSSTR. . . . POWER . . . . . . . . . QUANTIZE . . . . . . . . QUARTER . . . . . . . . RADIANS . . . . . . . . RAISE_ERROR . . . . . . . RAND. . . . . . . . . . REAL . . . . . . . . . . REC2XML . . . . . . . . REPEAT . . . . . . . . . REPLACE . . . . . . . . RID_BIT y RID . . . . . . . RIGHT . . . . . . . . . ROUND . . . . . . . . . RTRIM . . . . . . . . . SECLABEL . . . . . . . . SECLABEL_BY_NAME . . . . SECLABEL_TO_CHAR . . . . SECOND . . . . . . . . . SIGN . . . . . . . . . . SIN. . . . . . . . . . . SINH . . . . . . . . . . SMALLINT . . . . . . . . SOUNDEX . . . . . . . . SPACE . . . . . . . . . SQRT . . . . . . . . . . STRIP . . . . . . . . . . SUBSTR . . . . . . . . . SUBSTRING . . . . . . . . TABLE_NAME . . . . . . . TABLE_SCHEMA . . . . . . TAN . . . . . . . . . . TANH . . . . . . . . . . TIME . . . . . . . . . . TIMESTAMP . . . . . . . TIMESTAMP_FORMAT . . . . TIMESTAMP_ISO . . . . . . TIMESTAMPDIFF . . . . . . TO_CHAR . . . . . . . . TO_DATE . . . . . . . . TOTALORDER . . . . . . . Funcin escalar TRANSLATE . . TRIM . . . . . . . . . . TRUNCATE . . . . . . . . TYPE_ID . . . . . . . . . TYPE_NAME . . . . . . . TYPE_SCHEMA . . . . . . UCASE . . . . . . . . . UCASE (sensible al entorno local) UPPER . . . . . . . . . UPPER (sensible al entorno local)
. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .
. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .
. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .
. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .
. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .
361 361 362 363 364 364 365 365 369 369 372 374 375 376 377 377 378 379 379 383 384 386 387 390 392 392 393 394 395 396 397 397 398 398 399 399 400 401 403 405 406 408 408 409 409 410 414 415 416 416 416 417 419 420 422 422 423 423 423 424 424
VALUE . . . . . . . . VARCHAR . . . . . . . VARCHAR_BIT_FORMAT . . VARCHAR_FORMAT . . . VARCHAR_FORMAT_BIT . . VARGRAPHIC . . . . . . WEEK . . . . . . . . . WEEK_ISO . . . . . . . XMLATTRIBUTES . . . . . XMLCOMMENT . . . . . XMLCONCAT . . . . . . XMLELEMENT. . . . . . XMLFOREST . . . . . . XMLNAMESPACES . . . . XMLPARSE . . . . . . . XMLPI . . . . . . . . XMLQUERY. . . . . . . XMLROW . . . . . . . XMLSERIALIZE . . . . . XMLTEXT . . . . . . . XMLVALIDATE . . . . . XMLXSROBJECTID . . . . XSLTRANSFORM . . . . . YEAR . . . . . . . . . Funciones de tabla . . . . . XMLTABLE . . . . . . . Funciones definidas por el usuario
. . . . . . . . . . . . . . . . . . . . . . . . . . .
. . . . . . . . . . . . . . . . . . . . . . . . . . .
. . . . . . . . . . . . . . . . . . . . . . . . . . .
. . . . . . . . . . . . . . . . . . . . . . . . . . .
. . . . . . . . . . . . . . . . . . . . . . . . . . .
. . . . . . . . . . . . . . . . . . . . . . . . . . .
426 426 427 428 431 432 434 434 435 436 437 438 439 445 448 450 452 453 456 458 460 462 466 467 470 471 471 476
545
Apndice B. SQLCA (rea de comunicaciones SQL). . . . . . . . 557 Apndice C. SQLDA (rea de descriptores de SQL) . . . . . . . . 563 Apndice D. Vistas de catlogo del sistema . . . . . . . . . . . . . . 575
Gua bsica para las vistas de catlogo . SYSCAT.ATTRIBUTES . . . . . . SYSCAT.AUDITPOLICIES . . . . . SYSCAT.AUDITUSE . . . . . . . SYSCAT.BUFFERPOOLDBPARTITIONS SYSCAT.BUFFERPOOLS. . . . . . SYSCAT.CASTFUNCTIONS . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 576 580 582 583 584 585 585
Contenido
SYSCAT.CHECKS . . . . . . . . SYSCAT.COLAUTH . . . . . . . SYSCAT.COLCHECKS . . . . . . SYSCAT.COLDIST . . . . . . . . SYSCAT.COLGROUPCOLS . . . . . SYSCAT.COLGROUPDIST . . . . . SYSCAT.COLGROUPDISTCOUNTS . . SYSCAT.COLGROUPS . . . . . . SYSCAT.COLIDENTATTRIBUTES . . SYSCAT.COLOPTIONS . . . . . . SYSCAT.COLUMNS . . . . . . . SYSCAT.COLUSE . . . . . . . . SYSCAT.CONSTDEP . . . . . . . SYSCAT.CONTEXTATTRIBUTES . . . SYSCAT.CONTEXTS . . . . . . . SYSCAT.DATAPARTITIONEXPRESSION SYSCAT.DATAPARTITIONS . . . . SYSCAT.DATATYPES. . . . . . . SYSCAT.DBAUTH . . . . . . . . SYSCAT.DBPARTITIONGROUPDEF . . SYSCAT.DBPARTITIONGROUPS . . . SYSCAT.EVENTMONITORS . . . . SYSCAT.EVENTS . . . . . . . . SYSCAT.EVENTTABLES . . . . . . SYSCAT.FULLHIERARCHIES . . . . SYSCAT.FUNCMAPOPTIONS . . . . SYSCAT.FUNCMAPPARMOPTIONS . SYSCAT.FUNCMAPPINGS . . . . . SYSCAT.HIERARCHIES . . . . . . SYSCAT.HISTOGRAMTEMPLATEBINS SYSCAT.HISTOGRAMTEMPLATES . . SYSCAT.HISTOGRAMTEMPLATEUSE . SYSCAT.INDEXAUTH . . . . . . SYSCAT.INDEXCOLUSE . . . . . SYSCAT.INDEXDEP . . . . . . . SYSCAT.INDEXES . . . . . . . . SYSCAT.INDEXEXPLOITRULES . . . SYSCAT.INDEXEXTENSIONDEP . . . SYSCAT.INDEXEXTENSIONMETHODS SYSCAT.INDEXEXTENSIONPARMS. . SYSCAT.INDEXEXTENSIONS . . . . SYSCAT.INDEXOPTIONS . . . . . SYSCAT.INDEXXMLPATTERNS . . . SYSCAT.KEYCOLUSE . . . . . . SYSCAT.NAMEMAPPINGS . . . . SYSCAT.NICKNAMES . . . . . . SYSCAT.PACKAGEAUTH . . . . . SYSCAT.PACKAGEDEP . . . . . . SYSCAT.PACKAGES . . . . . . . SYSCAT.PARTITIONMAPS . . . . . SYSCAT.PASSTHRUAUTH . . . . . SYSCAT.PREDICATESPECS . . . . SYSCAT.REFERENCES . . . . . . SYSCAT.ROLEAUTH . . . . . . . SYSCAT.ROLES . . . . . . . . SYSCAT.ROUTINEAUTH . . . . . SYSCAT.ROUTINEDEP . . . . . . SYSCAT.ROUTINEOPTIONS . . . . SYSCAT.ROUTINEPARMOPTIONS . . SYSCAT.ROUTINEPARMS . . . . . SYSCAT.ROUTINES . . . . . . .
. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .
. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .
. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .
. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .
586 587 588 589 590 590 591 591 592 593 593 598 599 599 600 600 601 602 605 606 607 608 610 610 611 612 612 613 614 614 614 615 616 616 617 618 624 624 625 626 627 627 628 628 629 629 632 633 634 641 642 642 642 643 644 644 645 646 647 647 649
SYSCAT.ROUTINESFEDERATED. . . . . . SYSCAT.SCHEMAAUTH . . . . . . . . SYSCAT.SCHEMATA . . . . . . . . . . SYSCAT.SECURITYLABELACCESS . . . . . SYSCAT. SECURITYLABELCOMPONENTELEMENTS . . SYSCAT.SECURITYLABELCOMPONENTS . . SYSCAT.SECURITYLABELS . . . . . . . SYSCAT.SECURITYPOLICIES . . . . . . . SYSCAT.SECURITYPOLICYCOMPONENTRULES SYSCAT.SECURITYPOLICYEXEMPTIONS. . . SYSCAT.SEQUENCEAUTH. . . . . . . . SYSCAT.SEQUENCES . . . . . . . . . SYSCAT.SERVEROPTIONS . . . . . . . . SYSCAT.SERVERS . . . . . . . . . . . SYSCAT.SERVICECLASSES. . . . . . . . SYSCAT.STATEMENTS . . . . . . . . . SYSCAT.SURROGATEAUTHIDS . . . . . . SYSCAT.TABAUTH . . . . . . . . . . SYSCAT.TABCONST . . . . . . . . . . SYSCAT.TABDEP . . . . . . . . . . . SYSCAT.TABDETACHEDDEP . . . . . . . SYSCAT.TABLES . . . . . . . . . . . SYSCAT.TABLESPACES . . . . . . . . . SYSCAT.TABOPTIONS . . . . . . . . . SYSCAT.TBSPACEAUTH . . . . . . . . SYSCAT.THRESHOLDS . . . . . . . . . SYSCAT.TRANSFORMS . . . . . . . . . SYSCAT.TRIGDEP . . . . . . . . . . . SYSCAT.TRIGGERS . . . . . . . . . . SYSCAT.TYPEMAPPINGS . . . . . . . . SYSCAT.USEROPTIONS . . . . . . . . . SYSCAT.VARIABLEAUTH . . . . . . . . SYSCAT.VARIABLEDEP . . . . . . . . . SYSCAT.VARIABLES . . . . . . . . . . SYSCAT.VIEWS . . . . . . . . . . . SYSCAT.WORKACTIONS . . . . . . . . SYSCAT.WORKACTIONSETS . . . . . . . SYSCAT.WORKCLASSES . . . . . . . . SYSCAT.WORKCLASSSETS . . . . . . . SYSCAT.WORKLOADAUTH . . . . . . . SYSCAT.WORKLOADCONNATTR . . . . . SYSCAT.WORKLOADS . . . . . . . . . SYSCAT.WRAPOPTIONS . . . . . . . . SYSCAT.WRAPPERS . . . . . . . . . . SYSCAT.XDBMAPGRAPHS . . . . . . . SYSCAT.XDBMAPSHREDTREES . . . . . . SYSCAT.XSROBJECTAUTH. . . . . . . . SYSCAT.XSROBJECTCOMPONENTS . . . . SYSCAT.XSROBJECTDEP . . . . . . . . SYSCAT.XSROBJECTHIERARCHIES. . . . . SYSCAT.XSROBJECTS . . . . . . . . . SYSIBM.SYSDUMMY1 . . . . . . . . . SYSSTAT.COLDIST . . . . . . . . . . SYSSTAT.COLGROUPDIST . . . . . . . . SYSSTAT.COLGROUPDISTCOUNTS . . . . SYSSTAT.COLGROUPS . . . . . . . . . SYSSTAT.COLUMNS . . . . . . . . . . SYSSTAT.INDEXES . . . . . . . . . . SYSSTAT.ROUTINES . . . . . . . . . . SYSSTAT.TABLES . . . . . . . . . . .
. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .
658 659 660 661 661 662 662 663 664 665 665 666 668 668 668 670 670 671 673 674 675 676 683 684 685 685 687 688 689 691 694 694 695 696 697 698 700 701 702 703 703 704 705 705 706 706 707 707 708 709 709 710 710 711 712 712 713 714 717 718
vi
Tabla ADVISE_TABLE . . . . . Tabla ADVISE_WORKLOAD . . . Tabla EXPLAIN_ARGUMENT . . . Tabla EXPLAIN_DIAGNOSTIC . . Tabla EXPLAIN_DIAGNOSTIC_DATA Tabla EXPLAIN_INSTANCE . . . Tabla EXPLAIN_OBJECT . . . . Tabla EXPLAIN_OPERATOR . . . Tabla EXPLAIN_PREDICATE . . . Tabla EXPLAIN_STATEMENT . . . Tabla EXPLAIN_STREAM . . . .
. . . . . . . . . . .
. . . . . . . . . . .
. . . . . . . . . . .
. . . . . . . . . . .
. . . . . . . . . . .
785 786 787 793 794 795 798 801 804 807 809
Apndice J. Valores de los registros de EXPLAIN . . . . . . . . . . . . 813 Apndice K. Tablas de excepciones 821
Apndice L. Sentencias de SQL que se permiten en rutinas . . . . . . . 825 Apndice M. CALL invocada desde una sentencia compilada . . . . . . 829 Apndice N. Visin general de la informacin tcnica de DB2 . . . . . 835
Biblioteca tcnica de DB2 en copia impresa o en formato PDF . . . . . . . . . . . . . Pedido de manuales de DB2 en copia impresa . . Visualizacin de la ayuda para estados de SQL desde el procesador de lnea de mandatos . . . . Acceso a diferentes versiones del Centro de informacin de DB2 . . . . . . . . . . . Visualizacin de temas en su idioma preferido en el Centro de informacin de DB2 . . . . . . . Actualizacin del Centro de informacin de DB2 instalado en el sistema o en el servidor de intranet . Guas de aprendizaje de DB2 . . . . . . . . Informacin de resolucin de problemas de DB2 Trminos y condiciones . . . . . . . . . . 836 838 839 839 840 840 842 843 843
Apndice F. La base de datos SAMPLE . . . . . . . . . . . . . 741 Apndice G. Nombres de esquema reservados y palabras reservadas . . 769 Apndice H. Ejemplos de interaccin entre activados y restricciones de referencia . . . . . . . . . . . . . 773 Apndice I. Tablas de Explain . . . . 777
Tabla ADVISE_INDEX . . Tabla ADVISE_INSTANCE . Tabla ADVISE_MQT . . . Tabla ADVISE_PARTITION. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 777 782 782 784
Contenido
vii
viii
ix
Si un elemento opcional aparece sobre la va de acceso principal, ese elemento no tiene ningn efecto en la ejecucin y slo se utiliza para posibilitar la lectura.
elemento_opcional elemento_necesario
Si puede elegir entre dos o ms elementos, stos aparecen en una pila. Si debe elegir uno de los elementos, un elemento de la pila aparece en la va de acceso principal.
Si la eleccin de uno de los elementos es opcional, la pila entera aparece bajo la va de acceso principal.
elemento_necesario opcin_opcional1 opcin_opcional2
Si uno de los elementos es el valor por omisin, aparecer sobre la va de acceso principal y las opciones restantes se mostrarn debajo.
opcin_por_omisin elemento_necesario opcin_opcional opcin_opcional
Una flecha que vuelve a la izquierda, sobre la lnea principal, indica un elemento que se puede repetir. En este caso, los elementos repetidos se deben separar mediante uno o ms espacios en blanco.
elemento_necesario
elemento_repetible
Si la flecha de repeticin contiene una coma, debe separar los elementos repetidos con una coma.
, elemento_necesario elemento_repetible
Una flecha de repeticin sobre una pila indica que puede realizar ms una eleccin en los elementos apilados o repetir una sola eleccin. Las palabras clave aparecen en maysculas (por ejemplo FROM). Se deben escribir exactamente tal como se muestran. Las variables aparecen en minsculas (por ejemplo nombre-columna). Representan nombres o valores proporcionados por el usuario en la sintaxis. Si se muestran signos de puntuacin, parntesis, operadores aritmticos u otros smbolos de este tipo, debe entrarlos como parte de la sintaxis. A veces una variable individual representa un fragmento mayor de la sintaxis. Por ejemplo, en el diagrama siguiente, la variable bloque-parmetros representa el fragmento de sintaxis completo que est etiquetado bloque-parmetros:
elemento_necesario bloque-parmetros
xi
parmetro3 parmetro4
Los segmentos adyacentes que aparecen entre puntos (?) se pueden especificar en cualquier secuencia.
elemento_necesario elemento1 ? elemento2 ? elemento3 ? elemento4
El diagrama anterior muestra que elemento2 y elemento3 se pueden especificar en cualquier orden. Son vlidos los dos ejemplos siguientes:
elemento_necesario elemento1 elemento2 elemento3 elemento4 elemento_necesario elemento1 elemento3 elemento2 elemento4
Convenios de resaltado
Se utilizan los siguientes convenios en este manual.
Negrita Cursiva Indica mandatos, palabras clave y otros elementos cuyos nombres estn predefinidos por el sistema. 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 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 DB2 for i5/OS SQL Reference
xii
Documentacin relacionada
Este manual define el soporte para SQL de DB2 Query Manager y SQL Development Kit en System i. 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 i5/OS que ejecutan DB2. v DB2 for z/OS SQL Reference Este manual define el SQL utilizado en DB2 para z/OS. 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 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 IBM SQL Reference 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 ISO 1992. v ISO/IEC 9075-2:2003, Information technology -- Database Languages -- SQL -- Part 2: Foundation (SQL/Foundation) Contiene una gran parte de la definicin de SQL proporcionada por la norma ISO 2003. v ISO/IEC 9075-4:2003, Information technology -- Database Languages -- 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 ISO 2003.
xiii
Documentacin relacionada
xiv
Captulo 1. Conceptos
Bases de datos
Una base de datos DB2 es una base de datos relacional. La base de datos almacena todos los datos en tablas que se relacionan entre ellas. Las relaciones se establecen entre tablas de modo que los datos se comparten y la duplicacin se minimiza. 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 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. Una base de datos relacional particionada es una base de datos relacional cuyos datos se gestionan entre varias 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 DDL 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 se almacenan en varias fuentes de datos (como, por ejemplo, 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.
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 incorporadas 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. Un esquema 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 dichos 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. 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 (especificado en el registro especial CURRENT SCHEMA). Por ejemplo, un usuario con autorizacin DBADM crea un esquema llamado C para el usuario A:
CREATE SCHEMA C AUTHORIZATION A
Captulo 1. Conceptos
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, si no se crea con la opcin RESTRICTIVE, todos los usuarios tienen la autorizacin IMPLICIT_SCHEMA. Con esta autorizacin, los usuarios crean implcitamente un esquema cada vez que crean un objeto con un nombre de esquema que todava no existe. Cuando se crean esquemas implcitamente, se otorgan privilegios CREATEIN que permiten a cualquier usuario crear otros objetos en este esquema. La posibilidad de crear objetos tales como 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, los cuales permiten al propietario del esquema controlar qu usuarios tienen el privilegio de crear, modificar, copiar y eliminar objetos en el 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).
Tablas
Las tablas son estructuras lgicas mantenidas por el gestor de bases de datos. Las tablas estn formadas por columnas y filas. En la interseccin de cada columna con una fila hay un elemento de datos especfico 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. Un programa de aplicacin puede determinar el orden en que se llenan las filas de la tabla, pero el orden real de las filas lo determina el gestor de bases de datos y, por lo general, no se puede controlar. La agrupacin en clster de mltiples dimensiones (MDC) proporciona una visin de la agrupacin en clster, pero no la ordenacin real entre las filas.
Restricciones
Restricciones
En cualquier empresa, con frecuencia los datos se ajustan algunas restricciones o normas. Por ejemplo, un nmero de empleado debe ser exclusivo. El gestor de bases de datos proporciona restricciones como una forma de imponer estas normas. Estn disponibles los siguientes tipos de restricciones: v Restricciones NOT NULL v Restricciones exclusivas (o de clave exclusiva) v Restricciones de clave primaria v Restricciones de clave fornea (o de integridad referencial) v Restricciones de comprobacin (de tabla) v Restricciones informativas Las restricciones slo se asocian a tablas y se definen como parte del proceso de creacin de tablas (utilizando la sentencia CREATE TABLE) o se aaden a la definicin de tabla despus de haber creado la tabla (utilizando la sentencia ALTER TABLE). Puede utilizar la sentencia ALTER TABLE para modificar restricciones. En la mayora de casos, las restricciones existentes se pueden eliminar en cualquier momento; esta accin no afecta a la estructura de la tabla o a los datos que se almacenan en ella. Nota: Las restricciones primarias y exclusivas slo se asocian a objetos de tabla y con frecuencia se imponen mediante el uso de uno o ms de los ndices de clave exclusiva o primaria.
ndices
Un ndice es un conjunto de una o ms claves, cada una de las cuales apunta a una fila de una tabla. El optimizador de SQL elige automticamente el modo ms eficaz para acceder a los datos de las tablas. El optimizador tiene en cuenta los ndices para determinar la va de acceso ms rpida a los datos. Nota: No todos los ndices apuntan a filas de una tabla. Los ndices de bloque MDC apuntan a extensiones (o bloques) de los datos. Los ndices XML para datos XML utilizan expresiones de patrones XML determinados para vas y valores de ndices en documentos XML almacenados en una nica columna. El tipo de datos de dicha columna debe ser XML. Tanto los ndices de bloque MDC como los ndices XML son ndices generados por el sistema. 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. A medida que se aaden datos a una tabla, a menos que se hayan realizado otras acciones en la tabla o en los datos que se aaden, los datos simplemente se aaden al final de la tabla. No existe ningn orden para los datos. Cuando se busca una fila de datos determinada, debe buscarse en cada fila de la tabla desde la primera hasta la ltima. Los ndices se utilizan como un medio para acceder a los datos de la tabla segn un orden que, de otra manera, podra no estar disponible.
Captulo 1. Conceptos
ndices
Se puede utilizar un valor de columna de una fila de datos para identificar toda la fila. Pueden ser necesarias una o ms columnas para identificar la fila. Estas columnas se conocen como una clave. Se puede utilizar una columna en ms de una clave. Un ndice se ordena segn los valores que contiene una clave. Las claves pueden ser exclusivas o no exclusivas. Cada tabla debe tener como mnimo una clave exclusiva; pero tambin puede tener otras claves no exclusivas. Cada ndice tiene exactamente una clave. Por ejemplo, puede utilizar el nmero de ID de empleado (exclusivo) como clave exclusiva para un ndice y el nmero de departamento (no exclusivo) como clave para un ndice diferente.
Ejemplo
La tabla A de la Figura 1 contiene un ndice basado en los nmeros de empleado de la tabla. Este valor de clave proporciona un puntero hacia las filas de la tabla. Por ejemplo, el nmero de empleado 19 apunta al empleado KMP. Un ndice permite un acceso eficaz a las filas de una tabla creando una va de acceso a los datos mediante punteros. Se pueden crear ndices exclusivos para asegurar la exclusividad de la clave de ndice. Una clave de ndice es una columna o una coleccin ordenada de columnas en la que se define un ndice. La utilizacin de un ndice exclusivo asegura que el valor de cada clave de ndice de la columna o columnas indexadas es exclusivo. La Figura 1 muestra la relacin entre un ndice y una tabla.
La Figura 2 en la pgina 7 ilustra las relaciones entre algunos objetos de base de datos. Tambin muestra que las tablas, ndices y datos extensos se almacenan en espacios de tablas.
Activadores
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. 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.
Captulo 1. Conceptos
Activadores
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 que se ejecutan siempre que se activa el activador. Las sentencias 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 consiste 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 AFTER (es decir, no con activadores BEFORE e INSTEAD OF) y es posible definir tablas de transicin independientes para los valores anteriores y nuevos. Se pueden especificar varios activadores para una combinacin de tabla, suceso (INSERT, UPDATE, DELETE, INSTEAD OF) o momento de activacin (BEFORE, AFTER). Cuando existe ms de un activador para una tabla, un suceso o un momento de activacin determinados, el orden en que se activan los activadores es igual que el orden en que se han creado. Por consiguiente, el activador creado ms recientemente es el ltimo activador que se activa.
Activadores
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 para el mismo objeto, se utiliza un mecanismo de resolucin de conflictos, tales como tablas temporales a fin de evitar conflictos de acceso, lo que puede repercutir notablemente en el rendimiento, sobre todo en los entornos de bases de datos particionadas.
Vistas
Una vista es un modo eficaz de representar datos sin necesidad de mantenerlos. Una vista no es una tabla real y no necesita un almacenamiento permanente. Se crea y se utiliza un tabla virtual. 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 como en una tabla. Todas las vistas se pueden utilizar como si fueran tablas para efectuar una recuperacin de datos. Si una vista pueda utilizarse o no en una operacin de insercin, actualizacin o supresin depender de su definicin. Una vista puede incluir todas o algunas de las columnas o filas contenidas en las tablas en las que se basa. Por ejemplo, puede unir una tabla de departamentos y una tabla de empleados en una vista, a fin de poder listar todos los empleados de un determinado departamento. La Figura 3 en la pgina 10 muestra la relacin entre tablas y vistas.
Captulo 1. Conceptos
Vistas
Database
Column
Table A Table B ABS QRS FCP MLI CJP DJS KMP
Row
47 17 85 81 93 87 19
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 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. 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. Por ejemplo, si una vista incluye una clave fornea de su tabla, las operaciones de insercin y actualizacin que utilicen dicha vista estn sujetas a las mismas restricciones de referencia a las que lo est la tabla. Asimismo, si la tabla 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. 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 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); si ocurre esto, la vista ya no estar disponible para operaciones de SQL.
10
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.
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
Captulo 1. Conceptos
11
12
Captulo 1. Conceptos
13
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.
14
Credenciales LBAC
El control de acceso basado en etiquetas (LBAC) permite que el administrador de seguridad decida quin tiene exactamente acceso de grabacin y quin tiene acceso de lectura en filas individuales y columnas individuales. El administrador de
Captulo 1. Conceptos
15
16
Captulo 1. Conceptos
17
18
Captulo 1. Conceptos
19
Niveles de aislamiento
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 estableciendo la opcin de enlace o precompilacin ISOLATION. 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. Para obtener ms informacin, consulte Registro especial CURRENT ISOLATION. Tanto para las sentencias de SQL esttico como para las sentencias de SQL dinmico, la clusula de aislamiento (isolation) de una sentencia select altera temporalmente el registro especial (si se ha establecido) y el valor de la opcin de enlace. Para obtener ms informacin, consulte Sentencia Select. 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.
20
Niveles de aislamiento
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. Actualizar Limita los procesos de aplicacin simultneos a operaciones de slo lectura de los datos, si dichos procesos no han declarado que podran actualizar la 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 escalamiento 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
Captulo 1. Conceptos
21
Niveles de aislamiento
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 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 normas asociadas con el nivel CS.
22
Niveles de aislamiento
No
No
No
No
S Pueden otros procesos de aplicacin afectar a la operacin de volver a ejecutar una sentencia? Consulte el fenmeno P3 (fantasma) al final de la tabla. Pueden otros procesos de aplicacin actualizar filas actualizadas? Consulte la Nota 1 al final de la tabla. Pueden otros procesos de aplicacin que se ejecutan a un nivel de aislamiento que no sea UR leer las filas actualizadas? No
No
No
No
No
No
No
No
No
S Pueden otros procesos de aplicacin que se ejecutan al nivel de aislamiento UR leer las filas actualizadas? Pueden otros procesos de aplicacin actualizar 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 filas a las que se ha accedido? Pueden otros procesos de aplicacin actualizar o suprimir la fila actual? Consulte el fenmeno P1 (lectura sucia) al final de la tabla. S
No
No
S No
S No
Nota: 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.
Captulo 1. Conceptos
23
Niveles de aislamiento
UR 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. 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. 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. CS RS RR
P2
P3
Espacios de tablas
Un espacio de tablas es una estructura de almacenamiento que contiene tablas, ndices, objetos de gran tamao y datos extensos. Los espacios de tablas residen en grupos de particiones de base de datos. Los espacios de tablas le permiten asignar la ubicacin de la base de datos y de los datos de tabla directamente en contenedores. (Un contenedor puede ser un nombre de directorio, un nombre de dispositivo o un nombre de archivo.) Esto puede proporcionar una mejora en el rendimiento y una configuracin ms flexible. Dado que los espacios de tablas residen en grupos de particiones de base de datos, el espacio de tablas seleccionado para contener una tabla define cmo se distribuyen los datos para dicha tabla entre las particiones de base de datos en un grupo de particiones de base de datos. Un nico espacio de tablas puede distribuirse entre varios contenedores. Se pueden crear varios contenedores (de uno o ms espacios de tablas) en el mismo disco fsico (o unidad). Si utiliza espacios de tablas de almacenamiento automtico, esto lo gestiona el gestor de bases de datos. Si no utiliza espacios de tablas de almacenamiento automtico, para mejorar el rendimiento, cada contenedor debe utilizar un disco diferente. La Figura 7 en la pgina 25 ilustra la relacin entre tablas y espacios de tablas dentro de una base de datos, y los contenedores asociados con dicha base de datos.
24
Espacios de tablas
Las tablas EMPLOYEE y DEPARTMENT estn en el espacio de tablas HUMANRES, el cual se distribuye entre los contenedores 0, 1, 2 y 3. La tabla PROJECT est en el espacio de tablas SCHED en el contenedor 4. Este ejemplo muestra cada contenedor que existe en un disco separado. El gestor de bases de datos intenta equilibrar la carga de datos entre contenedores. Como resultado, se utilizan todos los contenedores para almacenar datos. El nmero de pginas que el gestor de bases de datos graba en un contenedor antes de utilizar un contenedor diferente recibe el nombre de tamao de extensin. Un gestor de bases de datos no siempre empieza a almacenar los datos de tabla en el primer contenedor. La Figura 8 en la pgina 26 muestra el espacio de tablas HUMANRES con un tamao de extensin de dos pginas de 4 KB y cuatro contenedores, cada uno de ellos con un nmero reducido de extensiones asignadas. Las tablas DEPARTMENT y EMPLOYEE tienen siete pginas y se distribuyen entre los cuatro contenedores.
Captulo 1. Conceptos
25
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 X41 y se asigna a B el elemento de cdigo X42. En una pgina de cdigos, cada elemento de cdigo tiene un solo significado especfico. Una pgina de cdigos es un atributo de la
26
Conversin de caracteres
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 normas 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 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 bit y mixtos. Los datos mixtos son una combinacin de caracteres de un solo byte, de doble byte o de mltiples bytes. Los datos de bit (columnas definidas como FOR BIT DATA o BLOB o series binarias) no estn asociados a ningn juego de caracteres.
Captulo 1. Conceptos
27
Conversin de caracteres
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. 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
28
Conversin de caracteres
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 normas 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.
Captulo 1. Conceptos
29
Para bases de datos Unicode, el espacio GRAPHIC es X0020, que es diferente del espacio GRAPHIC de X3000 utilizado para las bases de datos euc-Japn y euc-Taiwn. X0020 y X3000 son caracteres de espacio en el estndar Unicode. Se deber tener en cuenta la diferencia en los elementos de cdigo de espacio GRAPHIC al comparar datos de estas bases de datos EUC con datos de una base de datos Unicode.
30
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 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
Captulo 1. Conceptos
31
Supervisores de sucesos
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 un rea de interconexin con nombre.
32
33
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.
34
Sistemas federados
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.
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
35
Compilador de SQL
El compilador de SQL de DB2 recopila informacin para ayudarle a procesar consultas. 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
36
Compilador de SQL
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.
37
Correlaciones de usuarios
Una correlacin de usuario es una asociacin entre un ID de autorizacin en el servidor federado y la informacin necesaria para conectar con la fuente de datos remota. Para crear una correlacin de usuario, debe utilizar la sentencia CREATE USER MAPPING. En la sentencia, se especifica el ID de autorizacin local, el nombre local del servidor de fuente de datos remota que se especifica en la definicin de servidor y el ID y contrasea remotos.
38
Correlaciones de usuarios
Por ejemplo, supongamos que ha creado una definicin de servidor para un servidor remoto y ha especificado argon como nombre local para el servidor remoto. Para hacer que Mary pueda acceder al servidor remoto, cree esta correlacin de usuario:
CREATE USER MAPPING FOR Mary SERVER argon OPTIONS (REMOTE_AUTHID 'ID_remoto', REMOTE_PASSWORD 'contrasea_remota')
Cuando Mary emite una sentencia de SQL para conectarse con el servidor remoto, el servidor federado realiza estos pasos: 1. Recupera la correlacin de usuario de Mary 2. Descifra la contrasea remota contrasea_remota asociada con el servidor remoto 3. Llama al derivador para conectar con el servidor remoto 4. Pasa al derivador el ID remoto ID_remoto y la contrasea remota descifrada 5. Crea una conexin con el servidor remoto para Mary Por omisin, el servidor federado almacena la correlacin de usuario en la vista SYSCAT.USEROPTIONS del catlogo global y cifra las contraseas remotas. Como alternativa, puede utilizar un depsito externo, por ejemplo, un archivo o un servidor LDAP, para almacenar correlaciones de usuarios. Para proporcionar la interfaz entre el servidor federado y el depsito externo, debe crear un conector de correlacin de usuario. No importa cmo almacene las correlaciones de usuarios, limite con cuidado el acceso a ellas. Si las correlaciones de usuarios estn comprometidas, los datos de las bases de datos remotas pueden ser vulnerables a actividades no autorizadas.
Captulo 1. Conceptos
39
40
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. Puede utilizar instancias de DB2 existentes como servidores federados o puede crear nuevas instancias especficamente para el sistema federado. La instancia de DB2 que gestiona el sistema federado se denomina servidor dado que 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 enva 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
Captulo 1. Conceptos
41
El servidor federado
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: 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 aplicaciones, 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.
BioRS Blast DB2 para Linux, UNIX y Windows DB2 para z/OS
7.x, 8.x
S S S
S S S
DB2 para System 5.2, 5.3, 5.4 i DB2 Server para VSE y VM 7.2, 7.4
42
Informix
Informix XPS 8.40, 8.50, 8.51 e Informix IDS IDS 7.31, IDS 9.40, IDS 10.0 2000, 2002, 2003 Microsoft SQL Server 2000/SP3, 2005
S S
OLE DB Oracle
S S
Cliente de Oracle S NET 9.0 - 9.2.0.5 y 10.0 - 10.1.x o cliente de NET8 8.1.7.x Sybase Open S Client 12.5 - 15.0
Sybase
Captulo 1. Conceptos
43
Teradata
WebSphere Business Integration para PeopleSoft 2.6 WebSphere Business Integration para SAP 2.6 WebSphere Business Integration para Siebel 2.6 Servicios Web
PeopleSoft 8.x
Ninguna
Ninguna
XML
XML1.0, XML1.1
Ninguna
** ODBC puede utilizarse para acceder a RedBrick 6.20cu5 y WebSphere Information Integrator Classic Federation V8.2.x, entre otras fuentes de datos. Tabla 3. Soporte de sistemas operativos de 64 bits Arquitectura X86-64 de hardware de 64 bits Sistema operativo Fuente de datos BioRS Blast S S S S S S S S S S S S S S S S S S S S X86-64 Power Itanium Power Sparc zSeries
AIX
HP-UX
44
AIX
HP-UX
S S S
S S
S S S
S S S
S S S
S S S
S S S
S WebSphere Business Integration para SAP 2.6 WebSphere Business Integration para Siebel 2.6 Servicios Web XML S
S S
S S
S S
S S
S S
S S
S S
*** ODBC puede utilizarse para acceder a RedBrick 6.20cu5 y WebSphere Information Integrator Classic Federation utilizando clientes de 32 y 64 bits.
Captulo 1. Conceptos
45
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
46
Optimizador de consultas
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 v v v v El volumen de datos que se deben procesar. La velocidad de proceso de la fuente de datos. El volumen de datos que devolver el fragmento. El ancho de banda de las comunicaciones. 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. 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 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.
Captulo 1. Conceptos
47
Ejemplo: De manera similar, las comparaciones de caracteres en una base de datos dependen de la secuencia de clasificacin definida para esa base de datos. 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:
SELECT..... WHERE COL2 > 'TT3' Result. basados en EBCDIC COL2 ---TW4 X82 39G Result. basados en ASCII COL2 ---TW4 X82
48
Captulo 1. Conceptos
49
50
% & ( ) * +
/ : ; < = > ?
menor que igual mayor que signo de interrogacin , coma _ subrayado | barra vertical1 ^ signo de intercalacin ! signo de admiracin [ abrir corchete { abrir llave ] cerrar corchete } cerrar llave \ barra inclinada invertida2 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 ||.
2
Algunas pginas de cdigos no tienen ningn elemento de cdigo para el carcter de barra inclinada invertida (\). Al entrar constantes de tipo serie de Unicode, se puede utilizar la clusula UESCAPE para especificar un carcter de escape Unicode distinto de la barra inclinada invertida.
Todos los caracteres de mltiples bytes se tratan como letras, excepto el blanco de doble byte, que es un carcter especial.
Copyright IBM Corp. 1993, 2009
51
Smbolos
Smbolos
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 un smbolo delimitador 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';
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.
52
Smbolos
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).
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. Tenga en cuenta que los identificadores ordinarios no se convierten a maysculas. Un identificador ordinario no debe ser 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 normas para formar un identificador de lenguaje principal son las normas 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).
53
Identificadores
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 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 61. 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 v v v etiqueta nombre-parmetro nombre-procedimiento 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-alias Nombre calificado mediante esquema que designa un alias. nombre-atributo Identificador que designa un atributo de un tipo de datos estructurados. nombre-autorizacin Identificador que designa un usuario, grupo o funcin. Para 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-agrup-almac-interm Identificador que designa una agrupacin de almacenamientos intermedios.
54
Identificadores
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 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 70. 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-variable-global Nombre, calificado o no calificado, que designa una variable global. El gestor de bases de datos califica implcitamente un nombre de variable global 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.
55
Identificadores
variable-lenguaje-principal 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 70. 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 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-remota 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 nombre 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.
56
Identificadores
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: 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 Nombre calificado o no calificado que designa una etiqueta de seguridad. El nombre-poltica-seguridad aplicable califica implcitamente un nombre de etiqueta de seguridad no calificado en una sentencia de SQL, en caso de aplicarse. Si no hay ningn nombre-poltica-seguridad aplicable implcitamente, el nombre debe ser calificado. 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 de 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
Captulo 2. Elementos de idioma
57
Identificadores
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. 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. esquema-XML-nombre Nombre calificado o no calificado que designa un esquema XML. nombre-objetoxsr Nombre calificado o no calificado que designa un objeto en el repositorio de esquemas XML.
Alias
Un alias 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 alias de tabla. Un alias se puede utilizar siempre que se pueda utilizar el nombre de una tabla o una vista. Se puede crear un alias 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 alias si no se realizan referencias circulares ni repetitivas a lo largo de la cadena de alias. Un alias slo puede hacer referencia a una tabla, una vista o un alias de la misma base de datos. Un alias 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 alias 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 alias no se muestra explcitamente en los diagramas de sintaxis, ni se menciona en las descripciones de las sentencias de SQL.
58
Identificadores
Un alias no calificado nuevo no puede tener el mismo nombre completamente calificado que una tabla, una vista o un alias existente. El efecto de utilizar un alias en una sentencia de SQL es similar al de la sustitucin de texto. El alias, 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 alias 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 alias de tablas, sino tambin a los alias de apodos. Por consiguiente, un alias de apodo se puede utilizar en vez del apodo en una sentencia de SQL; se puede crear un alias 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 alias para un apodo puede hacer referencia a otro alias 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.
59
Identificadores
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 61. 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). Otorgar privilegios a X significa que X (o un miembro del grupo o funcin X) ser posteriormente el ID de autorizacin de las sentencias que necesitan dichos privilegios. 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 normas de calificacin descritas en el apartado Convenios de denominacin y calificaciones de nombre de objeto implcitas en la pgina 53. 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 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.
60
Identificadores
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 de SQL dinmico y para el valor inicial utilizado para la calificacin implcita de referencias de objetos no calificados dentro de sentencias de SQL dinmico. Comportamiento de vinculacin Durante la ejecucin, DB2 utiliza todas las normas 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
Captulo 2. Elementos de idioma
61
Identificadores
que debe utilizarse para la comprobacin de autorizacin de las sentencias de SQL dinmico, y para la cualificacin implcita de referencias objetos sin cualificar dentro de sentencias de 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 de referencias de objetos no calificados dentro de las sentencias de SQL dinmico dentro de dicha rutina. La tabla siguiente muestra un resumen.
Entorno que se invoca Cualquier SQL esttico ID utilizado Valor implcito o explcito del propietario (OWNER) del paquete del que proceda el SQL que invocaba la rutina Persona que define la vista o el activador Valor implcito o explcito del propietario (OWNER) del paquete del que proceda el SQL que invocaba la rutina ID que se utiliza para establecer la conexin inicial con DB2 Persona que define la rutina que utiliza el paquete del que proceda el SQL que invocaba la rutina El ID autorizacin actual que invoca la rutina
Utilizado en definiciones de vistas o activadores SQL dinmico de un paquete con comportamiento de vinculacin SQL dinmico de un paquete con comportamiento de ejecucin SQL dinmico de un paquete con comportamiento de definicin SQL dinmico de un paquete con comportamiento 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
62
Identificadores
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.
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.
63
Identificadores
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 se asocia con una tabla, una vista, un apodo, un alias, una expresin de tabla anidada, una funcin de tabla o una referencia de tabla de cambio de datos slo dentro del contexto en el que se ha 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 se puede utilizar simplemente como un nombre abreviado de una referencia de tabla. 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 alias, cualquier referencia a una columna de esa instancia de la tabla, vista, apodo o alias debe utilizar el nombre de correlacin en lugar del nombre de tabla, vista, apodo o alias. 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'
* incorrect*
La referencia calificada para PROJECT debe utilizar, en su lugar, el nombre de correlacin E, tal como se muestra abajo:
64
Identificadores
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 alias 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 alias 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). 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 WHERE EMPLOYEE.PROJECT = 'ABC' * incorrect *
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.
Captulo 2. Elementos de idioma
65
Identificadores
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.
Designadores de tabla
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, alias, 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 alias 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. Al calificar una columna con el nombre de tabla expuesto de un designador de tabla, se puede utilizar la forma calificada o no calificada del nombre expuesto de
66
Identificadores
tabla. Si se utiliza la forma calificada, el calificador debe ser el mismo que el calificador predeterminado del nombre expuesto de tabla. Pongamos, por ejemplo, que el esquema actual es CORPDATA.
SELECT CORPDATA.EMPLOYEE.WORKDEPT FROM EMPLOYEE
es vlido porque la tabla EMPLOYEE a la que se hace referencia en la clusula FROM califica completamente CORPDATA.EMPLOYEE, que coincide con el calificador de la columna WORKDEPT.
SELECT EMPLOYEE.WORKDEPT, REGEMP.WORKDEPT FROM CORPDATA.EMPLOYEE, REGION.EMPLOYEE REGEMP
tambin es vlido, porque la primera columna de lista de seleccin hace referencia al designador de tabla expuesto no calificado CORPDATA.EMPLOYEE, que se encuentra en la clusula FROM y la segunda columna de lista de seleccin hace referencia al nombre de correlacin REGEMP del objeto de tabla REGION.EMPLOYEE, que tambin se encuentra en la clusula FROM. Pongamos ahora que el esquema actual es REGION.
SELECT CORPDATA.EMPLOYEE.WORKDEPT FROM EMPLOYEE
no es vlido porque la tabla EMPLOYEE a la que se hace referencia en la clusula FROM califica completamente REGION.EMPLOYEE y el calificador de la columna WORKDEPT representa la tabla CORPDATA.EMPLOYEE. Cada designador de tabla debe ser exclusivo en una clusula FROM determinada para evitar la aparicin de referencias ambiguas a columnas.
67
Identificadores
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
no es vlido, porque EMPLOYEE representa la tabla REGION.EMPLOYEE, pero el calificador para WORKDEPT representa una tabla distinta, CORPDATA.EMPLOYEE.
68
Identificadores
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 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.
Captulo 2. Elementos de idioma
69
Identificadores
DELETE FROM DEPARTMENT THIS WHERE NOT EXISTS(SELECT * FROM EMPLOYEE WHERE WORKDEPT = THIS.DEPTNO)
Referencias a variables
Una variable de una sentencia de SQL especifica un valor que puede cambiarse cuando se ejecuta la sentencia de SQL. Existen diferentes tipos de variables utilizadas en sentencias de SQL: variable del lenguaje principal Las sentencias de un lenguaje principal definen las variables del lenguaje principal. Para obtener ms informacin sobre cmo hacer referencia a variables del lenguaje principal, consulte el apartado Referencias a variables del lenguaje principal. variable de transicin Las variables de transicin se definen en un activador y hacen referencia a los valores nuevos o anteriores de las columnas. Para obtener ms informacin sobre cmo hacer referencia a variables de transicin, consulte el apartado Sentencia CREATE TRIGGER del manual Consulta de SQL, Volumen 2 .. variable de SQL Una sentencia compuesta de SQL define las variables de SQL en una funcin de SQL, un mtodo de SQL, un procedimiento de SQL, un activador o una sentencia de SQL dinmico. Para obtener ms informacin sobre las variables de SQL, consulte el apartado Referencias a parmetros SQL, variables SQL y variables globales en el manual Consulta de SQL, Volumen 2 .. variable global La sentencia CREATE VARIABLE define las variables globales. Para obtener ms informacin sobre variables globales, consulte los apartados CREATE VARIABLE y Referencias a parmetros de SQL, variables de SQL y variables globales en el manual Consulta de SQL, Volumen 2 . parmetro de SQL Los parmetros de SQL se definen en una sentencia CREATE FUNCTION, CREATE METHOD o CREATE PROCEDURE. Para obtener ms informacin sobre los parmetros de SQL, consulte el apartado Referencias a parmetros SQL, variables SQL y variables globales en el manual Consulta de SQL, Volumen 2 .. marcador de parmetro Los marcadores de parmetro se especifican en una sentencia de SQL dinmico donde se especificaran las variables del lenguaje principal si la sentencia fuera una sentencia de SQL esttico. Se utiliza un descriptor de SQL o una vinculacin de parmetros para asociar un valor con un marcador de parmetro durante el proceso de sentencia de SQL dinmico. Para obtener ms informacin sobre marcadores de parmetro, consulte el apartado Marcadores de parmetro.
70
Identificadores
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-lenguaje-principal, 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-lenguaje-principal especifica un valor que ha de pasarse al gestor de bases de datos desde el programa de aplicacin.
Este ejemplo muestra una sentencia de SQL dinmico que utiliza marcadores de parmetro:
INSERT INTO DEPARTMENT VALUES (?, ?, ?, ?)
71
Identificadores
INDICATOR :identificador-lenguaje-principal
Cada identificador-lenguaje-principal debe declararse en el programa fuente. La variable designada por el segundo identificador-lenguaje-principal debe tener un tipo de datos de entero pequeo. El primer identificador-lenguaje-principal 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-lenguaje-principal 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 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
72
Identificadores
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 norma 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.
73
Identificadores
Una variable localizadora de una sentencia de SQL debe identificar una variable localizadora descrita en el programa de acuerdo a las normas 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-lenguajeprincipal igual que para la variable-lenguaje-principal. 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.
74
Identificadores
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 in 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 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.
75
Identificadores
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';
76
Identificadores
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;
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 v v v Funciones Expresiones Registros especiales. Variables (como, por ejemplo variables del lenguaje principal, variables SQL, variables globales, marcadores de parmetro y parmetros de rutinas)
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 11 en la pgina 78 ilustra los tipos de datos internos a los que se da soporte.
77
Tipos de datos
fecha hora
serie
XML
hora TIME
fecha DATE
exacto
aproximado
carcter
grfico
binario
coma flotante
longitud variable
longitud variable
VARCHAR
CLOB
VARGRAPHIC
DBCLOB
entero decimal
decimal
16 bits SMALLINT
32 bits INTEGER
64 bits BIGINT
empaquetado DECIMAL
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.
78
Tipos de datos
79
80
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.
81
Series de caracteres
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 VARCHAR como argumento 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, a continuacin, volver a convertir 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 bit 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. 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). Nota: El tipo de datos LONG VARCHAR sigue estando soportado pero ha quedado obsoleto, no es recomendable y puede eliminarse en un release futuro.
82
Series de caracteres
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 84). 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'
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 X'4AC3BC7267656E' UTF-16BE X'004A00FC007200670065006E' UTF-32BE X'0000004A000000FC0000007200000067000000650000006E'
El carcter se representa de forma diferente en las tres unidades de serie: v La representacin UTF-8 del carcter es XC3BC. v La representacin UTF-16BE del carcter es X00FC. v La representacin UTF-32BE del carcter es X000000FC. 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
Captulo 2. Elementos de idioma
83
Series de caracteres
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.
XF09D9080 Valor Unicode X1D400 - A; A mayscula matemtica en negrita Valor Unicode X0041 X41 - A; A mayscula latina
X0041
X00000041
Supongamos que C1 es una columna VARCHAR(128), codificada en Unicode UTF-8, y que la tabla T1 contiene una fila con el valor de la A mayscula matemtica en negrita (XF09D9080). Las consultas siguientes devuelven resultados diferentes:
Consulta ----SELECT CHARACTER_LENGTH(C1,CODEUNITS16) FROM T1 SELECT CHARACTER_LENGTH(C1,CODEUNITS32) FROM T1 SELECT CHARACTER_LENGTH(C1,OCTETS) FROM T1 Devuelve ------2 1 4
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 norma 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
84
Series grficas
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 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 81).
85
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.
86
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.
87
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 5. Formatos para las representaciones de serie de fechas Nombre del formato International Standards Organization Estndar IBM USA Estndar IBM European Era Japanese Industrial Standard Christian Abreviatura ISO USA EUR JIS Formato de fecha aaaa-mm-dd mm/dd/aaaa dd.mm.aaaa aaaa-mm-dd Ejemplo 1991-10-27 10/27/1991 27.10.1991 1991-10-27
88
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.
Tabla 6. Formatos para representaciones de serie de horas Nombre del formato International Standards Organization Estndar IBM USA Estndar IBM European Era Japanese Industrial Standard Christian Definido-sitio Abreviatura ISO USA EUR JIS LOC Formato de la hora hh.mm.ss hh:mm AM o PM hh.mm.ss hh:mm:ss Ejemplo 13.30.05 1:30 PM 13.30.05 13:30:05
Nota: 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 se pueden representar 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: v 12:01 AM a 12:59 AM corresponde a 00:01:00 a 00:59:00. v 01:00 AM a 11:59 AM corresponde a 01:00:00 a 11:59:00. v 12:00 PM (medioda) a 11:59 PM corresponde a 12:00:00 a 23:59:00.
Captulo 2. Elementos de idioma
89
Valores XML
Un valor XML representa el XML con formato correcto en forma de documento XML, contenido XML o secuencia de nodos XML. Un 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 un 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
90
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 utiliza en sentencias que no son CREATE TYPE (Diferenciado), DROP o COMMENT, 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 o LOB 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 o DBCLOB 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.
Tipo estructurado
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
Captulo 2. Elementos de idioma
91
Tipo 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
92
Tipo array
Una matriz es una estructura que contiene una coleccin ordenada de elementos de datos en la que se puede hacer referencia a cada elemento por su posicin de orden dentro de la coleccin. Si N es la cardinalidad (nmero de elementos) de una matriz, la posicin de orden asociada a cada elemento es un valor entero mayor que o igual a 1 e inferior o igual a N. Todos los elementos de una matriz tienen el mismo tipo de datos. Un tipo de matriz es un tipo de datos que se define como matriz de otro tipo de datos. Cada tipo de matriz tiene una cardinalidad mxima que est especificada en la sentencia CREATE TYPE. Si A es un tipo de matriz con una cardinalidad mxima M, la cardinalidad de un valor de tipo A puede ser cualquier valor entre 0 y M, ambos incluidos. A diferencia de la cardinalidad mxima de matrices de los lenguajes de programacin como C, la cardinalidad mxima de matrices SQL no est relacionada con su representacin fsica. Por lo contrario, el sistema utiliza la cardinalidad mxima en tiempo de ejecucin para asegurar que los subscripts se encuentren dentro de los lmites. La cantidad de memoria necesaria para representar un valor de matriz es normalmente proporcional a su cardinalidad y no a la cardinalidad mxima de su tipo. Cuando se hace referencia a una matriz, todos los valores de la matriz se almacenan en la memoria principal. Por lo tanto, las matrices que contienen una gran cantidad de datos consumirn grandes cantidades de memoria principal.
93
94
95
96
Tipo de datos fuente SMALLINT INTEGER BIGINT DECIMAL REAL DOUBLE DECFLOAT CHAR CHAR FOR BIT DATA VARCHAR VARCHAR FOR BIT DATA CLOB GRAPHIC VARGRAPHIC DBCLOB BLOB DATE TIME TIMESTAMP XML
S M A L L I N T S S S Y Y Y S S S S S S1 S1 S5
I N T E G E R S S S S Y Y Y S S S S S1 S1 S S S5
B I G I N T S S S S Y Y Y S S S S S1 S1 S S Y S5
D E C I M A L S S S S Y Y Y S S S S S1 S1 S Y Y S5
R E A L S S S S S Y Y S5
D O U B L E S S S S S Y Y S5
D E C F L O A T S S S S S Y Y Y S S S S1 S1 S5
C H A R C H A R S S S S S S Y Y Y S S S S1 S1 S1 S S S S5 F B D2 S S S S S S Y Y Y S S S S S S5
V A R C H A R Y Y S S S S1 S1 S1 S S S S S5
G R A P H I C S
1
D B C L O B S
1
B L O B S Y S Y S S S S S S5
D A T E S S Y Y S1 S1 S S S5
T I M E S S Y S S1 S1 S S S5
T I M E S T A M P S S Y S S1 S1 S S5
X M L S3 S3 S3 S3 S3 S3 S4 S3 S4 S3 S4 S3 S3 S3 S4 S3 S3 S3 S
S1 S1 S S S S1 S1 S
1
S1 S1 S S S S1 S1 S
1
S1 S1 S S S S5
S5
S5
97
S M A L L I N T
I N T E G E R
B I G I N T
D E C I M A L
R E A L
D O U B L E
D E C F L O A T
C H A R C H A R F B D2
V A R C H A R
G R A P H I C
D B C L O B
B L O B
D A T E
T I M E
T I M E S T A M P
X M L
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 No es posible convertir un valor de tipo estructurado en algo diferente. v Los tipos de datos LONG VARCHAR y LONG VARGRAPHIC siguen estando soportados pero han quedado obsoletos, no son recomendables y se pueden eliminar en un release futuro.
1
Conversin slo soportada para bases de datos Unicode. FOR BIT DATA La conversin slo se puede efectuar utilizando XMLCAST.
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. 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.
La Tabla 9 muestra el lugar en el que encontrar informacin sobre las normas que se aplican al efectuar la conversin a los tipos de datos destino identificados.
Tabla 9. Normas para convertir a un tipo de datos Tipo de datos de destino SMALLINT INTEGER BIGINT DECIMAL NUMERIC REAL DOUBLE DECFLOAT Normas Funcin escalar SMALLINT en el manual Consulta de SQL, Volumen 1 Funcin escalar INTEGER en el manual Consulta de SQL, Volumen 1 Funcin escalar BIGINT en el manual Consulta de SQL, Volumen 1 Funcin escalar DECIMAL en el manual Consulta de SQL, Volumen 1 Funcin escalar NUMERIC en el manual Consulta de SQL, Volumen 1 Funcin escalar REAL en el manual Consulta de SQL, Volumen 1 Funcin escalar DOUBLE en el manual Consulta de SQL, Volumen 1 Funcin escalar DECFLOAT en el manual Consulta de SQL, Volumen 1
98
99
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.
100
XML S S S S S S S S S S S S S N S
Tipo de destino XQuery correspondiente xs:float xs:double sin tipo coincidente1 xs:string xs:string xs:string xs:string xs:string xs:string xs:date xs:time xs:dateTime xs:base64Binary no convertible xs:base64Binary utilice esta tabla con el tipo fuente del tipo diferenciado
no convertible
DB2 da soporte a XML Schema 1.0, que no proporciona un tipo de esquema XML coincidente para DECFLOAT. El proceso del paso de conversin de XQuery de XMLCAST se maneja del siguiente modo: v Si el valor fuente se escribe con un tipo numrico de esquema XML, utilice dicho tipo numrico.
v Si el valor fuente se escribe con un tipo de esquema XML xs:boolean, utilice xs:double. v En caso contrario, utilice xs:string con comprobacin adicional para un formato numrico vlido.
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
Captulo 2. Elementos de idioma
101
102
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 norma bsica para las dos operaciones es que el tipo de datos de los operandos implicados debe ser compatible. La norma de compatibilidad tambin se aplica a las operaciones de conjuntos. Otra norma 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 12. Compatibilidad de tipos de datos para asignaciones y comparaciones
Coma flotante decimal S S S S Indicacin de fecha y hora No No No No
Operandos Entero binario Nmero decimal Coma flotante Coma flotante decimal Serie de caracteres Serie grfica Fecha Hora
Entero binario S S S S
Nmero decimal S S S S
Coma flotante S S S S
Serie de caracteres No No No No
Serie grfica No No No No
Fecha No No No No
Hora No No No No
Serie binaria No No No No
UDT
2
No No No No
No No No No No No
2
No No No No No No
2
No No No No No No
2
S S
1 1 1 5,6
S S
1 1 1
5,6
No No No No No S
2
2 2 2 2
S No No No
2
No S No No
2
No No S No
2
No
2
No
2
103
Asignaciones y comparaciones
Tabla 12. Compatibilidad de tipos de datos para asignaciones y comparaciones (continuacin)
Coma flotante decimal Indicacin de fecha y hora
Operandos
1
Entero binario
Nmero decimal
Coma flotante
Serie de caracteres
Serie grfica
Fecha
Hora
Serie binaria
UDT
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 Asignaciones de tipos definidos por el usuario en la pgina 110. 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 Para obtener informacin sobre la asignacin y comparacin de tipos de referencia, consulte Asignacin de tipos de referencia en la pgina 111 y Comparaciones de tipos de referencia en la pgina 117. 5
Slo soportado para bases de datos Unicode. Las series de datos de bits y grficas no son compatibles.
Asignaciones numricas
Para las asignaciones numricas, no se permite el desbordamiento. v Cuando se realizan asignaciones a un tipo de datos numricos exacto, se produce el desbordamiento si se elimina cualquier dgito de la parte entera del nmero. Si es necesario, se trunca la parte de fraccin de un nmero. v Cuando se realizan asignaciones a un tipo de datos numricos aproximado o coma flotante decimal, se produce el desbordamiento si se elimina el dgito ms significativo de la parte entera del nmero. Para nmeros de coma flotante y de coma flotante decimal, la parte entera del nmero es el nmero que se obtendr si el nmero de coma flotante o de coma flotante decimal se convierte a un nmero decimal con precisin ilimitada. Si es necesario, el redondeo puede hacer que se eliminen los dgitos menos significativos del nmero. Para la coma flotante decimal, no se permite truncar la parte entera del nmero y, si se realiza, produce un error. Para nmeros de coma flotante, tampoco se permite el subdesbordamiento. El subdesbordamiento se produce para nmeros entre 1 y -1 si se elimina el dgito ms significativo distinto de cero. Para la coma flotante decimal, el subdesbordamiento se permite y, en funcin de la modalidad de redondeo, produce cero o el nmero positivo ms pequeo o el nmero negativo ms grande que se puede representar junto con un aviso. Se devuelve un aviso de desbordamiento o subdesbordamiento en lugar de un error si se produce un desbordamiento o un subdesbordamiento en la asignacin a una variable de lenguaje principal con una variable de indicador. En este caso, el nmero no se asigna a la variable de lenguaje principal y la variable de indicador se establece en 2 negativo. Para nmeros de coma flotante decimal, el registro especial CURRENT DECFLOAT ROUNDING MODE indica la modalidad de redondeo en vigor.
104
Asignaciones y comparaciones
Asignaciones a entero
Cuando se asigna un nmero decimal, de coma flotante o de coma flotante decimal a una columna o variable de enteros, se elimina la parte de fraccin del nmero. Como resultado, un nmero entre 1 y -1 se reduce a 0.
Asignaciones a decimal
Cuando se asigna un entero a una columna o variable decimal, primero el nmero se convierte a un nmero decimal temporal y, a continuacin, si es necesario, a la precisin y escala del destino. La precisin y escala del nmero decimal temporal es 5,0 para un entero pequeo, 11,0 para un entero grande o 19,0 para un entero superior. 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 el nmero necesario de ceros iniciales y, en la parte fraccional del nmero decimal, se aade el nmero necesario de ceros de cola o se elimina el nmero necesario de dgitos de cola. Cuando se asigna un nmero de coma flotante a una columna o variable decimal, primero el nmero se convierte a un nmero decimal temporal de precisin 31 y, a continuacin, 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, un nmero entre 1 y -1 menor que el nmero positivo ms pequeo o mayor que el nmero negativo ms grande que se pueda representar en la columna o variable decimal se reduce a 0. Se da a la escala el valor ms grande posible que permita representar la parte entera del nmero sin prdida de significacin. Cuando se asigna un nmero de coma flotante decimal a una columna o variable decimal, el nmero se redondea a la precisin y escala de la columna o variable decimal. Como resultado, un nmero entre 1 y -1 que sea menor que el nmero positivo ms pequeo o mayor que el nmero negativo ms grande que se pueda representar en la columna o variable decimal se reduce a 0 o se redondea al valor negativo ms grande o positivo ms pequeo que se pueda representar en la columna o variable decimal, en funcin de la modalidad de redondeo.
105
Asignaciones y comparaciones
Cuando se asigna un nmero decimal a una variable o columna de coma flotante decimal, el nmero se convierte a la precisin (16 o 34) del destino. Se eliminan los ceros iniciales. En funcin de la precisin y escala del nmero decimal y la precisin del destino, es posible que se redondee el valor. Cuando se asigna un nmero de coma flotante a una variable o columna de coma flotante decimal, el nmero se convierte primero a una representacin de serie temporal del nmero de coma flotante. La representacin de serie del nmero se convierte a continuacin a coma flotante decimal. Cuando se asigna un nmero DECFLOAT(16) a una variable o columna DECFLOAT(34), el valor resultante es idntico al nmero DECFLOAT(16). Cuando se asigna un nmero DECFLOAT(34) a una columna o variable DECFLOAT(16), el exponente de la fuente se convierte al exponente correspondiente del formato de resultados. La mantisa del nmero DECFLOAT(34) se redondea a la precisin del destino.
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 normas para la asignacin de series difieren segn el tipo de asignacin.
Asignacin de almacenamiento
La norma 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 LOB) 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 LOB Se truncara cualquier carcter (o byte) de una serie LOB 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.)
106
Asignaciones y comparaciones
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. 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.
107
Asignaciones y comparaciones
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 (X20), 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.
108
Asignaciones y comparaciones
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 de tipo serie que no es una variable de lenguaje principal, se aplican las normas siguientes: v Para DATE: Si la longitud de la variable tiene menos de 10 caracteres, se devuelve un error. v Para TIME: Si la longitud de la variable tiene menos de 8 caracteres, se devuelve un error. v Para TIMESTAMP: Si la variable de lenguaje principal tiene menos de 26 caracteres, se devuelve un error. Cuando el destino es una variable del lenguaje principal, se aplican las normas siguientes: v Para DATE: Si la longitud de la variable de lenguaje principal tiene menos de 10 caracteres, se devuelve un error. v Para TIME: Si se utiliza el formato USA, la longitud de la variable de lenguaje principal no debe tener menos de 8 caracteres; en otros formatos, la longitud no debe tener menos de 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 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 de lenguaje principal tiene menos de 19 caracteres, se devuelve 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 de lenguaje principal XML de entrada: Caso especial de la norma de asignacin de XML, ya que la variable de lenguaje 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 parmetro 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
Captulo 2. Elementos de idioma
109
Asignaciones y comparaciones
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 variables 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.
110
Asignaciones y comparaciones
Para los tipos de matriz, se aplican normas diferentes para las asignaciones a variables de SQL y parmetros. La validez de una asignacin a una variable SQL o parmetro se determina en funcin de las normas siguientes: v Si la parte derecha de la asignacin es una variable SQL o un parmetro, una llamada a la funcin TRIM_ARRAY o una expresin CAST, entonces su tipo debe ser el mismo que el tipo de la variable SQL o parmetro de la parte izquierda de la asignacin. v Si la parte derecha de la asignacin es una llamada a un constructor de matriz o a una funcin ARRAY_AGG, entonces se convierte implcitamente al tipo de la variable SQL o parmetro de la parte izquierda. Por ejemplo, suponiendo que el tipo de variable V es MYARRAY, la sentencia:
SET V = ARRAY[1,2,3];
es equivalente a:
SET V = CAST(ARRAY[1,2,3] AS MYARRAY);
Y la sentencia:
SELECT ARRAY_AGG(C1) INTO V FROM T
es equivalente a:
SELECT CAST(ARRAY_AGG(C1) AS MYARRAY) INTO V FROM T
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 de idioma
111
Asignaciones y comparaciones
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 idnticas. Si un nmero es de coma flotante decimal y el otro nmero es un entero, un decimal, una coma flotante de precisin simple, una coma flotante de precisin doble, la comparacin se efecta con una copia temporal del otro nmero, que se ha convertido a coma flotante decimal. Si un nmero es DECFLOAT(16) y el otro nmero es DECFLOAT(34), el valor DECFLOAT(16) se convierte a DECFLOAT(34) antes de que se efecte la comparacin. El tipo de datos de coma flotante decimal da soporte tanto al cero positivo como al cero negativo. El cero positivo y negativo tiene representaciones binarias diferentes, pero el predicado = (equal) devolver verdadero (true) para las comparaciones de cero negativo y positivo. Las funciones escalares COMPARE_DECFLOAT y TOTALORDER pueden utilizarse para realizar comparaciones a nivel binario si, por ejemplo, se necesita una comparacin de 2,0 <> 2,00. El tipo de datos de coma flotante decimal da soporte a la especificacin de un NaN negativo y positivo (quiet y signalling) e infinito negativo y positivo. Desde una perspectiva SQL, INFINITY = INFINITY, NAN = NAN, SNAN = SNAN y -0 = 0. Las normas de ordenacin y comparacin para los valores especiales son los siguientes: v (+/-) INFINITY se compara como igual nicamente con (+/-) INFINITY del mismo signo. v (+/-) NAN se compara como igual nicamente con (+/-) NAN del mismo signo. v (+/-) SNAN se compara como igual nicamente con (+/-) SNAN del mismo signo. El orden entre los valores especial diferentes es como sigue: -NAN < -SNAN < -INFINITY < 0 < INFINITY < SNAN < NAN
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
112
Asignaciones y comparaciones
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 las 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 LOB en 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 de hasta 4.000 bytes se pueden comparar utilizando las funciones escalares SUBSTR y VARCHAR. Por ejemplo, dadas las columnas:
MI_SHORT_CLOB MY_LONG_VAR CLOB(300) VARCHAR(8000)
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' < '' < ''
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
113
Asignaciones y comparaciones
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.
114
Asignaciones y comparaciones
Ejemplo: Para este ejemplo, los caracteres de doble byte A, B, a y b tienen los mismos valores de punto de elemento de cdigo X8260, X8261, X8281 y X8282, respectivamente. Considere un orden de clasificacin en el que los elementos de cdigo X8260, X8261, X8281 y X8282 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 DBCLOB. 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. 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.
115
Asignaciones y comparaciones
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'
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).
116
Asignaciones y comparaciones
117
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
Un valor de serie de caracteres es compatible con otro valor de serie de caracteres. Las series de caracteres incluyen los tipos de datos CHAR, VARCHAR y CLOB.
Si un operando es... CHAR(x) CHAR(x) VARCHAR(x) CLOB(x) Y el otro operando es... CHAR(y) VARCHAR(y) CHAR(y) o VARCHAR(y) CHAR(y), VARCHAR(y) o CLOB(y) El tipo de datos del resultado es... CHAR(z) donde z = max(x,y) VARCHAR(z) donde z = max(x,y) VARCHAR(z) donde z = max(x,y) CLOB(z) donde z = max(x,y)
La pgina de cdigos de la serie de caracteres del resultado se derivar en base a las normas de conversin de series.
Series grficas
Un valor de serie grfica es compatible con otro valor de serie grfica. Las series grficas incluyen los tipos de datos GRAPHIC, VARGRAPHIC y DBCLOB.
118
La pgina de cdigos de la serie grfica del resultado se derivar en base a las normas de conversin de series.
CHAR(y) o GRAPHIC(y) GRAPHIC(z) donde z = max(x,y) CHAR(y) o VARCHAR(y) GRAPHIC(y) o VARGRAPHIC VARGRAPHIC(z) donde z = max(x,y) VARGRAPHIC(z) donde z = max(x,y)
CHAR(y) o DBCLOB(z) donde z = max (x,y) VARCHAR(y) o CLOB(y) GRAPHIC(y) o VARGRAPHIC(y) DBCLOB(z) donde z = max (x,y)
Numrico
Los tipos numricos son compatibles con otros tipos numricos, tipos de datos de serie de caracteres y en una base de datos Unicode, tipos de datos de serie grfica. Los tipos numricos incluyen SMALLINT, INTEGER, BIGINT, DECIMAL, REAL, DOUBLE y DECFLOAT.
Si un operando es... SMALLINT INTEGER INTEGER BIGINT BIGINT BIGINT Y el otro operando es... SMALLINT SMALLINT INTEGER SMALLINT INTEGER BIGINT El tipo de datos del resultado es... SMALLINT INTEGER INTEGER BIGINT BIGINT BIGINT
119
DECFLOAT(n)
DECFLOAT(n)
DATE
Un valor de datos es compatible con otro valor de datos o con cualquier expresin CHAR o VARCHAR que contenga una representacin de serie vlida de una fecha. El tipo de datos del resultado es DATE.
TIME
Un valor de hora es compatible con otro valor de hora o con cualquier expresin CHAR o VARCHAR que contenga una representacin de serie vlida de una hora. El tipo de datos del resultado es TIME.
TIMESTAMP
Un valor de fecha y hora es compatible con otro valor 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 valor XML es compatible con otro valor XML. El tipo de datos del resultado es XML.
120
Tipos diferenciados
Un valor de tipo diferenciado definido por el usuario slo es compatible con otro valor del 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 valor de tipo de referencia es compatible con otro valor del mismo tipo de referencia siempre 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 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 valor de tipo estructurado es compatible con otro valor del mismo tipo estructurado siempre que 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.
121
122
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.
123
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 CHAR, el resultado de la expresin debe ser un carcter o una serie binaria que contenga exactamente un (1) byte (SQLSTATE 22019). Para columnas GRAPHIC, el resultado de la expresin debe ser un carcter (SQLSTATE 22019).
124
Entero Nmero Operandos binario decimal Entero binario Nmero decimal Coma flotante Coma flotante decimal Serie de caracteres4 Serie grfica4 S No No No No S No No
Coma flotante No No S No
Serie de caracteres No No No No
Hora No No No No
Tipo estructurado No No No No
No No
No No
No No
No No
S2 2, 3
2, 3 S2
No No
No No
No No
No No
125
Entero Nmero Operandos binario decimal Fecha Hora Indicacin de fecha y hora Tipo diferenciado Tipo estructurado4 Nota:
1
Coma flotante No No No
Serie de caracteres No No No
Hora No S No
Tipo estructurado No No No
No No No
No No No
No
No
No
No
No
No
No
No
No
No
No
No
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. Los tipos de serie grfica y de caracteres son compatibles cuando tienen clasificaciones compatibles. Los tipos de serie grfica y de caracteres son compatibles cuando est vigente una clasificacin basada en la UCA sensible a la configuracin local. De lo contrario, no son tipos compatibles. 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.
2 3
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 116, 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
126
Constantes
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 grande 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 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
127
Constantes
Estos valores especiales son: INFINITY, NAN y SNAN. INFINITY representa infinito, un nmero cuya magnitud es infinitamente grande. INFINITY puede ir precedido por un signo opcional. Puede especificarse INF en lugar de INFINITY. NAN significa No es un nmero (NaN) y a veces se denomina Quiet NaN. Es un valor que representa resultados no definidos que no produce ningn aviso ni ninguna excepcin.. SNAN representa Signalling NaN (sNaN). Es un valor que representa resultados no definidos que producir un aviso o una excepcin si se utiliza en cualquier operacin que est definida en cualquier operacin numrica. Tanto NAN como SNAN pueden ir precedidos por un signo opcional, pero el signo no es significativo. Se puede utilizar SNAN en operaciones no numricas sin producir un aviso o una excepcin, por ejemplo en la lista VALUES de INSERT o como constante comparada en un predicado.
SNAN -INFINITY
Todos los valores no especiales se interpretan como constantes decimales, de coma flotante o entero, con arreglo a las normas especificadas anteriormente. Para obtener un valor de coma flotante decimal numrico, utilice la funcin de conversin DECFLOAT con una constante de serie de caracteres. No es recomendable utilizar constantes de coma flotante como argumentos para la funcin DECFLOAT, ya que la coma flotante no es exacta y el valor de coma flotante decimal puede resultar diferente de los caracteres de dgito decimales que componen el argumento. En su lugar, utilice constantes de caracteres como argumentos para la funcin DECFLOAT. Por ejemplo, DECFLOAT(6.0221415E23, 34) devuelve el valor de coma flotante decimal 6.0221415E+23, pero DECFLOAT(6.0221415E23, 34) devuelve el valor de coma flotante decimal 6.0221415000000003E+23.
128
Constantes
series dentro de la serie de caracteres. Se utilizan dos caracteres de escape de Unicode consecutivos para representar un carcter de escape de Unicode en la serie de caracteres, pero estos caracteres cuentan como un carcter cuando se calculan las longitudes de las constantes de tipo carcter. Dos delimitadores de serie consecutivos que no estn contenidos en una serie representan la serie vaca. Dado que un carcter en UTF-8 puede estar en el rango de 1 a 4 bytes, una constante de tipo serie de Unicode de la longitud mxima puede representar en realidad menos de 32.672 caracteres. Un carcter se puede expresar mediante su carcter tipogrfico (glifo) o su elemento de cdigo Unicode. El elemento de cdigo de un carcter Unicode est en el rango de X000000 a X10FFFF. Para expresar un carcter Unicode mediante el elemento de cdigo, utilice el carcter de escape de Unicode seguido de 4 dgitos hexadecimales o el carcter de escape de Unicode seguido de un signo ms (+) y 6 dgitos hexadecimales. El carcter de escape de Unicode por omisin es la barra inclinada invertida (\), pero se puede especificar un carcter diferente con la clusula UESCAPE. La clusula UESCAPE se especifica como la palabra clave UESCAPE seguida de un carcter individual entre delimitadores de serie. El carcter de escape de Unicode no puede ser un signo ms (+), unas comillas dobles (), unas comillas simples (), un espacio en blanco o ninguno de los caracteres de 0 a 9 o de A a F, en maysculas o minsculas (SQLSTATE 42604). Un ejemplo de los dos modos en que se puede especificar la letra latina A mayscula como elemento de cdigo de Unicode es \0041 y \+000041. 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. Ejemplos:
'12/14/1985' '32' 'DON''T CHANGE' X'FFFF' X'46 72 61 6E 6B' U&'\0141d\017A es una ciudad de Polonia' '' U&'c:\\temp' U&'@+01D11E' UESCAPE '@'
La serie situada ms a la derecha en la segunda lnea del ejemplo representa el patrn VARCHAR de la serie ASCII Frank. La ltima lnea corresponde a: Ldz es una ciudad de Polonia, c:\temp y un carcter individual que representa el smbolo musical de clave de sol.
El apstrofo no debe aparecer como parte de un carcter MBCS para que se considere como delimitador.
129
Constantes
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 VARGRAPHIC de la serie ASCII Rick en una base de datos a Unicode.
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:
130
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 DECFLOAT ROUNDING MODE 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 MDC ROLLOUT MODE CURRENT OPTIMIZATION PROFILE 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
Algunos registros especiales puede actualizarse utilizando la sentencia SET. La tabla siguiente muestra cules de estos registros especiales pueden actualizarse.
131
Registros especiales
Tabla 14. Registros especiales Registro especial CURRENT CLIENT_ACCTNG CURRENT CLIENT_APPLNAME CURRENT CLIENT_USERID CURRENT CLIENT_WRKSTNNAME CURRENT DATE CURRENT DBPARTITIONNUM CURRENT DECFLOAT ROUNDING MODE 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 MDC ROLLOUT MODE CURRENT OPTIMIZATION PROFILE CURRENT PACKAGE PATH CURRENT PATH CURRENT QUERY OPTIMIZATION CURRENT REFRESH AGE CURRENT SCHEMA CURRENT SERVER CURRENT TIME CURRENT TIMESTAMP CURRENT TIMEZONE CURRENT USER SESSION_USER SYSTEM_USER USER Actualizable No No No No No No No S S S S S S S S S S S S S S S S No No No No No S No 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.
132
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
CURRENT CLIENT_APPLNAME
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
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).
133
CURRENT CLIENT_USERID
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
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
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: ejecutar el mandato siguiente desde CLP de DB2 para obtener la fecha actual.
db2 values CURRENT DATE
134
CURRENT DATE
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'
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
135
Recupere el nombre del grupo de transformacin por omisin asignado a este registro especial.
VALUES (CURRENT DEFAULT TRANSFORM GROUP)
136
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 que 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.
EXPLAIN Se habilita el recurso pero no se ejecutan las sentencias dinmicas. NO Inhabilita el recurso Explain.
Captulo 2. Elementos de idioma
137
EXPLAIN Habilita el recurso de instantneas de Explain pero no se ejecutan las sentencias dinmicas. NO REOPT Habilita el recurso Explain y hace que la informacin de Explain para una sentencia de SQL dinmico (o de vinculacin incremental) slo se captura cuando se reoptimice la sentencia utilizando valores reales para las Inhabilita el recurso de instantneas de Explain.
138
139
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 CS RR RS Lectura no confirmada Estabilidad del cursor Lectura repetible 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.
140
CURRENT ISOLATION
VALUES CURRENT ISOLATION INTO :ISOLATION_MODE
141
Ejemplo 2: Obtenga el valor actual del nombre de perfil optimizacin para esta conexin.
VALUES (CURRENT OPTIMIZATION PROFILE) INTO :PROFILE
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
CURRENT PATH
El registro especial CURRENT PATH (o CURRENT_PATH) especifica un valor VARCHAR(2048) 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.
142
CURRENT PATH
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 2048 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 norma, como se indica en las descripciones de las sentencias siguientes: CREATE TYPE (Diferenciado), CREATE FUNCTION, COMMENT y DROP. Ejemplo: Utilizando la vista de catlogos SYSCAT.ROUTINES, busque todas las rutinas definidas por el usuario que pueden invocarse sin calificar el nombre de rutina, ya que el registro especial CURRENT PATH contiene el nombre de esquema.
SELECT ROUTINENAME, ROUTINESCHEMA FROM SYSCAT.ROUTINES WHERE POSITION (ROUTINESCHEMA, CURRENT PATH, CODEUNITS16) <> 0
143
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 z/OS, 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'
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 alias. 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
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.
144
CURRENT TIME
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: ejecutar el mandato siguiente desde CLP de DB2 para obtener la hora actual.
db2 values CURRENT TIME
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
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. Para las peticiones del registro especial CURRENT TIMESTAMP separadas, es posible devolver el mismo valor; si se necesitan valores exclusivos, considere la utilizacin de la funcin GENERATE_UNIQUE, de una secuencia o de una columna de identidad. 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)
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).
145
CURRENT TIMEZONE
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 )
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.
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')
146
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.
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
Variables globales
Las variables globales son variables de memoria con nombre a las que se puede acceder y que pueden modificarse por medio de sentencias de SQL. Las variables globales le permiten compartir datos relacionales entre sentencias de SQL sin que sea necesario que la lgica de la aplicacin d soporte a esta transferencia de datos. Puede controlar el acceso a las variables globales por medio de las sentencias GRANT (privilegios de variables globales) y REVOKE (privilegios de variables globales). DB2 da soporte a las variables globales de sesin creadas. Una variable global de sesin est asociada a una sesin especfica y contiene un valor que es exclusivo para cada sesin. Una variable global de sesin creada est disponible para cada sentencia SQL activa que se ejecuta frente a la base de datos en la que se ha definido la variable. Una variable global de sesin puede asociarse con ms de una sesin, pero su valor ser especfico para cada sesin. Las variables globales de sesin y los privilegios asociados con las mismas se definen en el catlogo del sistema. Los nombres de variables globales estn calificados con nombres de dos partes. Cuando se hace referencia a una variable global sin el nombre de esquema, se utiliza la va de acceso de SQL para la resolucin de nombres. 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. Para las sentencias en paquetes de SQL esttico, las variables globales se resuelven durante una operacin de vinculacin. En las vistas, activadores y rutinas de SQL que se resuelven cuando se crea el objeto de base de datos. Si la resolucin se ejecuta de nuevo para cualquier variable global, podra cambiar el comportamiento
Captulo 2. Elementos de idioma
147
Variables globales
si, por ejemplo, se ha aadido una variable global nueva 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 vinculacin conservadora cuando lo considera necesario. Eso significa que slo las variables globales de la va de acceso SQL definidas antes de que se tome en consideracin la fecha y hora de la ltima vinculacin explcita para la resolucin de nombres de variable global. Cuando se hace referencia a una variable global en una sentencia SQL o en un activador, vista o rutina, se registra una dependencia del nombre de variable global totalmente calificado para la sentencia u objeto. Asimismo, si ello es de aplicacin, se comprueba el privilegio READ sobre la variable global en el ID de autorizacin que se est utilizando para la sentencia. Puede hacerse referencia a las variables globales de cualquier expresin que no tenga que ser determinante. Las expresiones determinantes se necesitan en las situaciones siguientes que impiden el uso de variables globales: v Restricciones de comprobacin v Definiciones de columnas generadas v Renovar tablas de consultas materializadas (MQT) inmediatas El valor de una variable global puede cambiarse utilizando la sentencia SET, SELECT INTO o VALUES INTO. Tambin puede cambiarse si es un argumento de un parmetro OUT o INOUT en una sentencia CALL.
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.
148
Funciones
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 con fuente 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 con fuente pueden ser funciones escalares o funciones de columna. Son tiles para dar soporte a funciones existentes con tipos definidos por el usuario.
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; por ejemplo, TEST.RISK(INTEGER). 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
Captulo 2. Elementos de idioma
149
Funciones
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 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 con fuente 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
150
Funciones
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. 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)
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.
151
Funciones
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. 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) un argumento DECFLOAT(34) se considera una coincidencia exacta para un parmetro DECFLOAT(16) y 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).
152
Funciones
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 esta rea: v No utilice nunca los nombres de funciones incorporadas para funciones definidas por el usuario. 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. Nota: Una referencia no calificada a una funcin llamada nombre-funcin invoca la funcin incorporada nombre-funcin que se encuentra en el esquema SYSIBM. Esta funcin no puede calificarse explcitamente con el nombre de esquema.
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) ...
153
Funciones
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_8 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 y ACT_7 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, ACT_5 y ACT_7 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, ACT_5 y ACT_7. v Para el tercer y ltimo argumento, ni ACT_2 ni ACT_5 ni ACT_7 coinciden exactamente con el tipo de argumento. Aunque ACT_2 y ACT_5 son igualmente buenos, ACT_7 no es tan bueno como los otros dos ya que el tipo DOUBLE est ms prximo a DECIMAL que DECFLOAT. ACT_7 se elimina.. 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:
STEP(SMALLINT) devuelve CHAR(5) STEP(DOUBLE) devuelve INTEGER
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.
154
Funciones
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 normas 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.
En el caso de sentencias en paquetes de DML esttico, las referencias a la rutina, al tipo de datos o a la variable global se resuelven durante una operacin de vinculacin. Las referencias a la rutina, al tipo de datos y a la variable global 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. De manera similar, si la resolucin se ejecuta de nuevo para cualquier tipo de datos, variable global o rutina de estos objetos, podra cambiar el comportamiento si se ha aadido un nuevo tipo de datos, variable global o rutina, 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 vinculacin conservadora cuando lo considera necesario. Esto asegura que las referencias a la rutina, al tipo de datos y a la variable global se resuelvan utilizando la misma va de acceso de SQL y el mismo conjunto de rutinas con las que se resolvi al vincularse. La indicacin de fecha y hora de creacin de las rutinas, los tipos de datos y las variables globales 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, los tipos de datos y las variables globales tenidos en cuenta durante la resolucin de la rutina, del tipo de datos y de la variable global cuando se proces originalmente la sentencia. Por tanto, las rutinas, los tipos de datos y las variables globales creados o autorizados recientemente no se tendrn en cuenta cuando se aplica la semntica de vinculacin conservadora.
Captulo 2. Elementos de idioma
155
Funciones
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 siempre se realiza para resolver rutinas, tipos de datos y variables globales 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, los tipos de datos y las variables globales 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 despus de la revinculacin implcita. Sin embargo, la revinculacin explcita de un paquete, puede dar como resultado la seleccin de una rutina distinta.
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,
156
Mtodos
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.
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. 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
Captulo 2. Elementos de idioma
157
Mtodos
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 normas 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 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
158
Mtodos
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):
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):
Captulo 2. Elementos de idioma
159
Mtodos
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.
160
Mtodos
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 CREATE CREATE CREATE CREATE CREATE CREATE METHOD METHOD METHOD METHOD METHOD METHOD METHOD FOO FOO FOO FOO FOO FOO FOO (CHAR(5), INT, DOUBLE) (INT, INT, DOUBLE) (INT, INT, DOUBLE, INT) (INT, DOUBLE, DOUBLE) (INT, INT, DOUBLE) (SMALLINT, INT, DOUBLE) (INT, INT, DEC(7,2)) FOR FOR FOR FOR FOR FOR FOR HEADOFSTATE HEADOFSTATE HEADOFSTATE EMPEROR EMPEROR EMPEROR GOVERNOR SPECIFIC SPECIFIC SPECIFIC SPECIFIC SPECIFIC SPECIFIC SPECIFIC FOO_1 FOO_2 FOO_3 FOO_4 FOO_5 FOO_6 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) ...
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.
161
Mtodos
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 normas 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.
162
Mtodos
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. 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
Captulo 2. Elementos de idioma
163
Mtodos
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.
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.
164
Expresiones
expresin:
operador invocacin-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) especificacin-elemento-matriz (7) operacin-desreferencia (8) invocacin-mtodo (9) especificacin-OLAP (10) expresin-cambio-fila (11) referencia-secuencia (12) tratamiento-subtipo
+ -
operador:
(13) CONCAT / * + -
Notas: 1 2 3 4 5 6 Vea Seleccin completa escalar en la pgina 174 para obtener ms informacin. Vea Duraciones en la pgina 175 para obtener ms informacin. Vea Expresin CASE en la pgina 179 para obtener ms informacin. Vea Especificacin CAST en la pgina 182 para obtener ms informacin. Vea Especificacin XMLCAST en la pgina 186 para obtener ms informacin. Vea Especificacin del elemento ARRAY en la pgina 188 para obtener ms informacin.
Captulo 2. Elementos de idioma
165
Expresiones
7 8 9 10 11 12 13 Vea Operacin de desreferencia en la pgina 188 para obtener ms informacin. Vea Invocacin de mtodos en la pgina 198 para obtener ms informacin. Vea Especificaciones OLAP en la pgina 189 para obtener ms informacin. Vea Expresin ROW CHANGE en la pgina 203 para obtener ms informacin. Vea Referencia de secuencia en la pgina 200 para obtener ms informacin. Vea Tratamiento de los subtipos en la pgina 199 para obtener ms informacin. || puede utilizarse como sinnimo de CONCAT.
166
Expresiones
Tabla 15. Tipo de datos y longitud de los operandos concatenados (continuacin) Atributos de longitud combinados >4000 <4001 >4000 <128 >127 <2001 >2000 <2001 >2000 -
Operandos CHAR(A) VARCHAR(B) CHAR(A) LONG VARCHAR VARCHAR(A) VARCHAR(B) VARCHAR(A) VARCHAR(B) VARCHAR(A) LONG VARCHAR LONG VARCHAR LONG VARCHAR CLOB(A) CHAR(B) CLOB(A) VARCHAR(B) CLOB(A) LONG VARCHAR CLOB(A) CLOB(B) GRAPHIC(A) GRAPHIC(B) GRAPHIC(A) GRAPHIC(B) GRAPHIC(A) VARGRAPHIC(B) GRAPHIC(A) VARGRAPHIC(B) GRAPHIC(A) LONG VARGRAPHIC VARGRAPHIC(A) VARGRAPHIC(B) VARGRAPHIC(A) VARGRAPHIC(B) VARGRAPHIC(A) LONG VARGRAPHIC LONG VARGRAPHIC LONG VARGRAPHIC DBCLOB(A) GRAPHIC(B) DBCLOB(A) VARGRAPHIC(B) DBCLOB(A) LONG VARGRAPHIC DBCLOB(A) DBCLOB(B) BLOB(A) BLOB(B)
Resultado LONG VARCHAR LONG VARCHAR VARCHAR(A+B) LONG VARCHAR LONG VARCHAR LONG VARCHAR CLOB(MIN(A+B, 2G)) CLOB(MIN(A+B, 2G)) CLOB(MIN(A+32K, 2G)) CLOB(MIN(A+B, 2G)) GRAPHIC(A+B) VARGRAPHIC(A+B) VARGRAPHIC(A+B) LONG VARGRAPHIC LONG VARGRAPHIC VARGRAPHIC(A+B) LONG VARGRAPHIC LONG VARGRAPHIC LONG VARGRAPHIC DBCLOB(MIN(A+B, 1G)) DBCLOB(MIN(A+B, 1G)) DBCLOB(MIN(A+16K, 1G)) DBCLOB(MIN(A+B, 1G)) 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 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
Captulo 2. Elementos de idioma
167
Expresiones
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: v COLA definido como CHAR(10) v 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.
Tambin existe la posibilidad de sobrecargar el operador de concatenacin empleando una funcin definida por el usuario para aadir los tipos de datos nuevos.
CREATE FUNCTION CONCAT (TITLE, TITLE_DESCRIPTION) RETURNS VARCHAR(50) SOURCE CONCAT (VARCHAR(), VARCHAR())
168
Expresiones
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 176). Por ejemplo, USER+2 no es vlido. Las funciones con fuente 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 unitario) no modifica su operando. El operador de prefijo - (menos unitario) invierte el signo de un operando distinto de cero de coma flotante no decimal. El operador de prefijo - (menos unitario) invierte el signo de todos los operandos de coma flotante decimal, incluyendo el cero y valores especiales, es decir los Signalling y Non-signalling NAN y ms y menos infinito. 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 de coma flotante no decimal, se devuelve un error (SQLSTATE 22003 22012). Para expresiones de coma flotante decimal, se devuelve un aviso (SQLSTATEs 0168C, 0168D, 0168E o 0168F) que depende de la naturaleza de la condicin aritmtica. Una base de datos puede configurarse (utilizando DFT_SQLMATHWARN establecido en s) para que los errores aritmticos devuelvan un valor nulo para la expresin de coma flotante no decimal, la consulta devuelve un aviso (SQLSTATE 01519 01564) y prosigue con el proceso de la sentencia de SQL. Para expresiones de coma flotante decimal, DFT_SQLMATHWARN no tiene ningn efecto; los errores aritmticos devuelven un valor apropiado (posiblemente un valor especial de coma flotante decimal), la consulta devuelve un aviso (SQLSTATE 0168C, 0168D, 0168E o 0168F) y prosigue con el proceso de la sentencia de SQL. Los valores especiales devueltos incluyen infinito ms y menos y no un nmero. Las expresiones aritmticas que implican uno o ms nmeros de coma flotante decimal nunca se evalan en valor nulo a menos que uno o ms de los argumentos de la expresin sean nulos. 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.
169
Expresiones
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: 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)
170
Expresiones
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 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).
171
Expresiones
DECFLOAT(n). Si un operando es un entero grande y el otro es un nmero de coma flotante decimal, una copia temporal del entero grande se convierte a nmero DECFLOAT(34). A continuacin, se aplican las normas para los operandos de coma flotante de dos decimales. Operandos de coma flotante decimal y decimales Si un operando es un decimal y el otro es un nmero de coma flotante decimal, la operacin se realiza en coma flotante decimal utilizando una copia temporal del nmero decimal que se ha convertido a nmero de coma flotante decimal basndose en la precisin del nmero decimal. Si el nmero decimal tiene una precisin inferior a 17, el nmero decimal se convierte a nmero DECFLOAT(16); de lo contrario, el nmero decimal se convierte a nmero DECFLOAT(34). A continuacin, se aplican las normas para los operandos de coma flotante de dos decimales. Operandos de coma flotante y de coma flotante decimal Si un operando es un nmero (REAL o DOUBLE) de coma flotante y el otro es un nmero DECFLOAT(n), la operacin se realiza en coma flotante decimal utilizando una copia temporal del nmero de coma flotante que se ha convertido a nmero DECFLOAT(n). Dos operandos de coma flotante decimales Si ambos operandos son DECFLOAT(n), la operacin se realiza en DECFLOAT(n). Si un operando es DECFLOAT(16) y el otro es DECFLOAT(34), la operacin se realiza en DECFLOAT(34).
172
Expresiones
un resultado infinito es siempre exacto. Ciertos usos de infinito devuelven una condicin de operacin no vlida. La lista siguiente muestra las operaciones que pueden ocasionar una condicin de operacin no vlida. El resultado de dicha operacin es NaN cuando uno de los operandos es infinito pero el otro operando no es ni NaN ni sNaN. Sumar +infinity a -infinity durante una operacin de sumar o restar Multiplicar 0 por +infinito o -infinito Dividir +infinito o -infinito por +infinito o -infinito Cualquiera de los dos argumentos de la funcin QUANTIZE es +infinito o -infinito El segundo argumento de la funcin POWER es +infinito o -infinito Los Signalling NaN utilizados como operandos para las operaciones aritmticas Las normas siguientes se aplican a las operaciones aritmticas y al valor de NaN: El resultado de cualquier operacin aritmtica que tenga un operando NaN (Quiet o Signalling) es NaN. El signo del resultado se copia del primer operando que sea un Signalling NaN; si ninguno de los operandos es de sealizacin (Signalling), el signo se copiar del primer operando que sea NaN. Cada vez que un resultado sea un NaN, el signo del resultado depender slo del operando copiado. El signo del resultado de una operacin de multiplicacin o divisin slo es negativo si los operandos tienen signos diferentes y ninguno de ellos es un NaN. El signo del resultado de una operacin de suma o resta slo es negativo si el resultado es inferior a cero y ninguno de los operandos es NaN, excepto en los casos siguientes en los que el resultado es un 0 negativo. - Un resultado se redondea a cero y el valor, antes del redondeo, tena un signo negativo - -0 se suma a 0 - 0 se resta de -0 - Los operandos con signos opuestos se suman o los operandos con el mismo signo se restan; el resultado tiene un coeficiente de 0 y la modalidad de redondeo es ROUND_FLOOR - Los operandos se multiplican o dividen, el resultado tiene un coeficiente de 0 y los signos de los operandos son diferentes - El primer argumento de la funcin POWER es -0 y el segundo argumento es un nmero impar positivo - El argumento de la funcin CEIL, FLOOR o SQRT es -0 - El primer argumento de la funcin ROUND o TRUNCATE es -0 Los ejemplos siguientes muestran valores de coma flotante decimal especiales como operandos:
INFINITY + 1 INFINITY + INFINITY INFINITY + -INFINITY NAN + 1 NAN + INFINITY 1 - INFINITY INFINITY - INFINITY -INFINITY - -INFINITY -0.0 - 0.0E1 -1.0 * 0.0E1 = = = = = = = = = = INFINITY INFINITY NAN NAN NAN -INFINITY NAN NAN -0.0 -0.0
-- warning
-- warning -- warning
173
Expresiones
1.0E1 / 0 -1.0E5 / 0.0 1.0E5 / -0 INFINITY / -INFINITY INFINITY / 0 -INFINITY / 0 -INFINITY / -0 = = = = = = = INFINITY -INFINITY -INFINITY NAN INFINITY -INFINITY INFINITY ----warning warning warning warning
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)
174
Duraciones
Una duracin es un nmero que representa un intervalo de tiempo. Existen cuatro tipos de duraciones: duracin-etiquetada:
funcin (expresin) constante nombre-columna variable-global variable-lenguaje-principal YEAR YEARS MONTH MONTHS 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). 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. 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 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.
175
Aritmtica de fecha
Las fechas se pueden restar, aumentar o disminuir. v Al restar una 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 mayor o igual que DATE2, DATE2 se resta de DATE1. Si DATE1 es menor que DATE2,
176
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). v 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.
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.
177
Por ejemplo, el resultado de TIME(11:02:26) - 00:32:56 es 102930. (una duracin de 10 horas, 29 minutos y 30 segundos). v 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. 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), equivale a la expresin:
TIME1 + HOUR(X) HOURS + MINUTE(X) MINUTES + SECOND(X) SECONDS
178
La parte correspondiente a los segundos y minutos de la indicacin de fecha y hora se resta tal como se especifica en las normas 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 normas para la resta de fechas. v 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.
Expresin CASE
expresin-case:
ELSE NULL CASE clusula-when-buscada clusula-when-simple END ELSE expresin-resultado
clusula-searched-when:
WHEN
condicin-bsqueda
THEN
expresin-resultado NULL
179
Expresin CASE
clusula-when-simple:
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
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'
180
Expresin CASE
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;
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 16 muestra la expresin equivalente al utilizar CASE o estas funciones.
Tabla 16. Expresiones CASE equivalentes Expresin CASE WHEN e1=e2 THEN NULL ELSE e1 END CASE WHEN e1 IS NOT NULL THEN e1 ELSE e2 END CASE WHEN e1 IS NOT NULL THEN e1 ELSE COALESCE(e2,...,eN) END CASE WHEN c1=var1 OR (c1 IS NULL AND var1 IS NULL) THEN a WHEN c1=var2 OR (c1 IS NULL AND var2 IS NULL) THEN b ELSE NULL END Expresin equivalente NULLIF(e1,e2)
COALESCE(e1,e2)
COALESCE(e1,e2,...,eN)
DECODE(c1,var1, a, var2, b)
181
Expresin CASE
Especificacin CAST
especificacin-cast:
CAST ( expresin NULL marcador-parmetro AS tipo-datos
tipo-datos:
tipo-incorporado nombre-tipo-diferenciado nombre-tipo-estructurado REF (nombre2-tipo)
tipo-incorporado:
182
Especificacin CAST
SMALLINT INTEGER INT BIGINT (5,0) DECIMAL DEC NUMERIC NUM (53) FLOAT (entero) REAL PRECISION DOUBLE (34) DECFLOAT (16) (1) CHARACTER CHAR VARCHAR CHARACTER CHAR CLOB CHARACTER CHAR (entero) (entero) VARYING (1M) LARGE OBJECT (entero K M G ) FOR BIT DATA FOR SBCS DATA FOR MIXED DATA ,0 (entero ,entero )
(1) GRAPHIC VARGRAPHIC DBCLOB (entero K M G (1M) BLOB BINARY LARGE OBJECT (entero K M G DATE TIME TIMESTAMP XML SYSPROC. DB2SECURITYLABEL ) ) (entero) (entero) (1M)
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).
Captulo 2. Elementos de idioma
183
Especificacin CAST
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. Al convertir una matriz, el tipo de datos de destino debe ser un tipo de datos de matriz definido por el usuario (SQLSTATE 42821). El tipo de datos de los elementos de la matriz debe ser el mismo que el tipo de datos de los elementos del tipo de datos de la matriz de destino (SQLSTATE 42846). La cardinalidad de la matriz debe ser inferior o igual a la cardinalidad mxima del tipo de datos de la matriz de destino (SQLSTATE 2202F). NULL Si el operando cast es la palabra clave NULL, el resultado es un valor nulo que tiene el tipo -datos especificado. marcador-parmetro 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 parmetro 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 del 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 tiene atributos asociados como, por ejemplo, la longitud o precisin y la escala, debera incluir estos atributos al especificar tipo-datos. (CHAR toma por omisin una longitud de 1,DECIMAL toma por omisin una precisin de 5 y una escala de 0 y DECFLOAT toma por omisin una precisin de 34 si no se especifica.) Para convertir una serie FOR BIT DATA a la pgina de cdigos de la base de datos se puede utilizar la clusula FOR SBCS DATA o la clusula FOR MIXED DATA (slo se da soporte a una, segn si la base de datos da soporte o no al tipo de datos grfico). 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 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
184
Especificacin CAST
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. 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.
185
Especificacin CAST
v Una aplicacin proporciona un valor que es una serie de bits, por ejemplo una corriente de audio, y no se debe realizar la conversin de pgina de cdigos antes de que se utilice en una sentencia de SQL. La aplicacin podra utilizar la siguiente funcin CAST:
CAST( ? AS VARCHAR(10000) FOR BIT DATA)
v Suponga que se han creado un tipo de matriz y una tabla de la siguiente manera:
CREATE TYPE PHONELIST AS DECIMAL(10, 0) ARRAY[5] CREATE TABLE EMP_PHONES (ID INTEGER, PHONENUMBER DECIMAL(10,0) )
El procedimiento siguiente devuelve una matriz con los nmeros de telfono del empleado con el ID 1775. Si hay ms de cinco nmeros de telfono de este empleado, se devuelve un error (SQLSTATE 2202F).
CREATE PROCEDURE GET_PHONES(OUT EPHONES PHONELIST) BEGIN SELECT CAST(ARRAY_AGG(PHONENUMBER) AS PHONELIST) INTO EPHONES FROM EMP_PHONES WHERE ID = 1775; END
Especificacin XMLCAST
especificacin-xmlcast:
XMLCAST ( expresin NULL marcador-parmetro AS tipo-datos )
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). 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-parmetro Si el operando cast es un marcador de parmetros, el tipo de datos de destino debe ser 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
186
Especificacin XMLCAST
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. v Para un operando cast que sea un marcador de parmetros, el tipo de datos de destino debe ser XML. Nota: 1. Soporte en bases de datos no Unicode: Cuando se utiliza XMLCAST para convertir un valor XML en un tipo de datos SQL, se realiza la conversin de pgina de cdigos. La codificacin de la expresin de conversin se convierte desde UTF-8 a la pgina de cdigos de la base de datos. Como consecuencia de esta conversin, los caracteres de la expresin original que no estn presentes en la pgina de cdigos de la base de datos se sustituirn por caracteres de sustitucin. 2. Soporte en bases de datos de varias particiones de base de datos: La especificacin XMLCAST slo est soportada en una base de datos con una nica particin de base de datos (SQLSTATE 42997).
Ejemplos
v Crear un valor XML nulo.
XMLCAST(NULL AS XML)
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))
187
La especificacin del elemento ARRAY devuelve el elemento de una matriz especificada por medio de expresin. Si algn argumento de expresin es nulo, se devuelve el valor nulo. variable-matriz Especifica una variable o parmetro del tipo ARRAY en un procedimiento de SQL (SQLSTATE 428H0). CAST (marcador-parmetro AS tipo-datos) Un marcador de parmetros (especificado como un signo de interrogacin) se suele considerar como una expresin pero en este caso debe convertirse explcitamente en un tipo de datos de matriz definido por el usuario. [expresin] Especifica el subndice del elemento que ha de extraerse de la matriz. El subndice debe ser de un tipo numrico exacto con escala cero (SQLSTATE 428H1); su valor debe estar entre 1 y la cardinalidad de la matriz (SQLSTATE 2202E).
Operacin 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. name1 Especifica un identificador no calificado.
188
Operacin de desreferencia
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). 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
Especificaciones OLAP
especificacin-OLAP:
especificacin-OLAP-ordenada especificacin-numeracin especificacin-agregacin
189
Especificaciones OLAP
especificacin-OLAP-ordenada:
funcin-lag funcin-lead RANK () DENSE_RANK () OVER ( clusula-particin-ventana
clusula-orden-ventana
funcin-lag:
LAG ( expresin ) , desplazamiento , valor-por-omisin , RESPECT NULLS IGNORE NULLS
funcin-lead:
LEAD ( expresin ) , desplazamiento , valor-por-omisin , RESPECT NULLS IGNORE NULLS
clusula-particin-ventana:
, PARTITION BY expresin-particionamiento
clusula-orden-ventana:
, ORDER BY expresin-clave-clasificacin ORDER OF designador-tabla opcin-asc opcin-desc
opcin-asc:
ASC NULLS LAST NULLS FIRST
opcin-desc:
NULLS FIRST DESC NULLS LAST
190
Especificaciones OLAP
especificacin-numeracin:
ROW_NUMBER () OVER ( clusula-particin-ventana ) clusula-orden-ventana
especificacin-agregacin:
(1) funcin-columna funcin-columna-OLAP
OVER
( clusula-particin-ventana
RANGE BETWEEN UNBOUNDED PRECEDING AND UNBOUNDED FOLLOWING ) RANGE BETWEEN UNBOUNDED PRECEDING AND CURRENT ROW clusula-orden-ventana clusula-grupo-agregacin-ventana
funcin-columna-OLAP:
funcin-first-value funcin-last-value
funcin-first-value:
FIRST_VALUE ( expresin , RESPECT NULLS IGNORE NULLS )
funcin-last-value:
LAST_VALUE ( expresin , RESPECT NULLS IGNORE NULLS )
clusula-grupo-agregacin-ventana:
ROWS RANGE inicio-grupo entre-grupo final-grupo
inicio-grupo:
UNBOUNDED PRECEDING constante-sin-signo CURRENT ROW
PRECEDING
entre-grupo:
BETWEEN lmite1-grupo AND lmite2-grupo
191
Especificaciones OLAP
lmite-grupo1:
UNBOUNDED PRECEDING constante-sin-signo constante-sin-signo CURRENT ROW
PRECEDING FOLLOWING
lmite-grupo2:
UNBOUNDED FOLLOWING constante-sin-signo constante-sin-signo CURRENT ROW
PRECEDING FOLLOWING
final-grupo:
UNBOUNDED FOLLOWING constante-sin-signo
FOLLOWING
Notas: 1 ARRAY_AGG no est soportado como funcin de columna en especificacin-agregacin (SQLSTATE 42887).
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. 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.
192
Especificaciones OLAP
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. La funcin LAG devuelve el valor de expresin para la fila situada en el desplazamiento filas antes de la fila actual. El desplazamiento debe ser un entero positivo (SQLSTATE 42815). Un valor desplazamiento de 0 significa la fila actual.Si se especifica una clusula-particin-ventana, desplazamiento significa filas desplazamiento antes de la fila actual y dentro de la particin actual. Si no se especifica desplazamiento, se utiliza el valor 1. Si se especifica valor-por-omisin (que puede ser una expresin), ste se devolver si el desplazamiento va ms all del mbito de la particin actual. De lo contrario, se devolver el valor nulo. Si se especifica IGNORE NULLS, no se considera en el clculo ninguna de las filas donde el valor de expresin para la fila es el valor nulo. Si se especifica IGNORE NULLS y todas las filas son nulas, se devuelve valor-por-omisin (o el valor nulo si no se ha especificado valor-por-omisin). La funcin LEAD devuelve el valor de expresin para la fila situada en el desplazamiento filas despus de la fila actual. El desplazamiento debe ser un entero positivo (SQLSTATE 42815). Un valor desplazamiento de 0 significa la fila actual.Si se especifica una clusula-particin-ventana, desplazamiento significa filas desplazamiento despus de la fila actual y dentro de la particin actual. Si no se especifica desplazamiento, se utiliza el valor 1. Si se especifica valor-por-omisin (que puede ser una expresin), ste se devolver si el desplazamiento va ms all del mbito de la particin actual. De lo contrario, se devolver el valor nulo. Si se especifica IGNORE NULLS, no se considera en el clculo ninguna de las filas donde el valor de expresin para la fila es el valor nulo. Si se especifica IGNORE NULLS y todas las filas son nulas, se devuelve valor-por-omisin (o el valor nulo si no se ha especificado valor-por-omisin). La funcin FIRST_VALUE devuelve el valor de expresin para la primera fila en una ventana OLAP. Si se especifica IGNORE NULLS, no se considera en el clculo ninguna de las filas donde el valor de expresin para la fila es el valor nulo. Si se especifica IGNORE NULLS y todos los valores de la ventana OLAP son nulos, FIRST_VALUE devuelve el valor nulo. La funcin LAST_VALUE devuelve el valor de expresin para la ltima fila de una ventana OLAP. Si se especifica IGNORE NULLS, no se considera en el clculo ninguna de las filas donde el valor de expresin para la fila es el valor nulo. Si se especifica IGNORE NULLS y todos los valores de la ventana OLAP son nulos, LAST_VALUE devuelve el valor nulo.
193
Especificaciones OLAP
El tipo de datos del resultado de FIRST_VALUE, LAG, LAST_VALUE y LEAD es el tipo de datos de la expresin. El resultado 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 puede incluir una seleccin completa escalar o una expresin XMLQUERY o XMLEXISTS (SQLSTATE 42822) ni tampoco ninguna funcin o consulta que no sea determinista o que tenga una accin externa (SQLSTATE 42845). clusula-orden-ventana 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). 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 o XMLEXISTS (SQLSTATE 42822) ni cualquier funcin o consulta que no sea determinante 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 designador-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.
194
Especificaciones OLAP
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 y tampoco se especifica una clusula-orden-ventana, el grupo de agregacin consta de todas las filas de la particin de ventana. Este valor por omisin se puede especificar explcitamente utilizando RANGE (como se muestra) o ROWS. 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 recuento 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 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
Captulo 2. Elementos de idioma
195
Especificaciones OLAP
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:
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
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.
196
Especificaciones OLAP
v Para cada departamento, haga una lista de los salarios de los empleados y muestre cunto gana de menos cada persona en comparacin con el empleado del mismo departamento con el siguiente salario ms alto.
SELECT EMPNO, WORKDEPT, LASTNAME, FIRSTNME, JOB, SALARY, LEAD(SALARY, 1) OVER (PARTITION BY WORKDEPT ORDER BY SALARY) - SALARY AS DELTA_SALARY FROM EMPLOYEE ORDER BY WORKDEPT, SALARY
v Calcule el salario de un empleado relativo al salario del empleado que en primer lugar se contrat para el mismo tipo de trabajo.
SELECT JOB, HIREDATE, EMPNO, LASTNAME, FIRSTNME, SALARY, FIRST_VALUE(SALARY) OVER (PARTITION BY JOB ORDER BY HIREDATE) AS FIRST_SALARY, SALARY - FIRST_VALUE(SALARY) OVER (PARTITION BY JOB ORDER BY HIREDATE) AS DELTA_SALARY FROM EMPLOYEE ORDER BY JOB, HIREDATE
v Calcule el precio de cierre medio de las acciones XYZ durante el mes de junio de 2006. Si las acciones no se negocian en un da determinado, su precio de cierre en la tabla DAILYSTOCKDATA es el valor de nulo. En vez de devolver el valor de nulo para los das en que no se negocian las acciones, utilice la funcin COALESCE y la funcin LAG para devolver el precio de cierre del da ms reciente en que se negociaron las acciones. Limite la bsqueda de un valor de cierre anterior que no sea de nulo a un mes antes del da uno de enero de 2006.
WITH V1(SYMBOL, TRADINGDATE, CLOSEPRICE) AS ( SELECT SYMBOL, TRADINGDATE, COALESCE(CLOSEPRICE, LAG(CLOSEPRICE, 1, CAST(NULL AS DECIMAL(8,2)), 'IGNORE NULLS') OVER (PARTITION BY SYMBOL ORDER BY TRADINGDATE) ) FROM DAILYSTOCKDATA WHERE SYMBOL = 'XYZ' AND TRADINGDATE BETWEEN '2005-12-01' AND '2006-01-31' ) SELECT SYMBOL, AVG(CLOSEPRICE) AS AVG FROM V1 WHERE TRADINGDATE BETWEEN '2006-01-01' AND '2006-01-31' GROUP BY SYMBOL
v Calcule el promedio variable de 30 das de las acciones ABC y XYZ durante el ao 2005.
WITH V1(SYMBOL, TRADINGDATE, MOVINGAVG30DAY) AS ( SELECT SYMBOL, TRADINGDATE, AVG(CLOSEPRICE) OVER (PARTITION BY SYMBOL ORDER BY TRADINGDATE ROWS BETWEEN 29 PRECEDING AND CURRENT ROW) FROM DAILYSTOCKDATA WHERE SYMBOL IN ('ABC', 'XYZ') AND TRADINGDATE BETWEEN DATE('2005-01-01') - 2 MONTHS AND '2005-12-31' ) SELECT SYMBOL, TRADINGDATE, MOVINGAVG30DAY FROM V1 WHERE TRADINGDATE BETWEEN '2005-01-01' AND '2005-12-31' ORDER BY SYMBOL, TRADINGDATE
197
Especificaciones OLAP
v Utilice una expresin para definir la posicin del cursor y consultar una ventana deslizante de 50 filas antes de dicha posicin.
SELECT DATE, FIRST_VALUE(CLOSEPRICE + 100) OVER (PARTITION BY SYMBOL ORDER BY DATE ROWS BETWEEN 50 PRECEDING AND 1 PRECEDING) AS FV FROM DAILYSTOCKDATA ORDER BY DATE
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)
198
Invocacin de mtodos
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 norma 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. 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
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:
199
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 exclusiva 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:
200
Referencia de secuencia
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);
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) sentencia 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
201
Referencia de secuencia
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 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 una 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
202
Referencia de secuencia
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 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: - Se pueden especificar NEXTVAL y PREVVAL en lugar de NEXT VALUE y PREVIOUS VALUE Para mantener la compatibilidad con IBM IDS: - Se puede especificar nombre-secuencia.NEXTVAL en lugar de NEXT VALUE FOR nombre-secuencia - Se puede especificar nombre-secuencia.CURRVAL en lugar de PREVIOUS VALUE FOR nombre-secuencia
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;
Una expresin ROW CHANGE devuelve un smbolo o una indicacin de fecha y hora que representa el ltimo cambio de una fila.
203
Notas
v Las aplicaciones que utilizan un bloqueo optimista pueden utilizar con la funcin escalar RID_BIT los valores devueltos por la expresin ROW CHANGE TOKEN.
Ejemplos
v Devuelva un valor de indicacin de fecha y hora que se corresponda con el cambio ms reciente de cada fila de la tabla EMPLOYEE para los empleados del departamento 20. Suponga que se ha modificado la tabla EMPLOYEE para que contenga una columna definida con la clusula ROW CHANGE TIMESTAMP.
SELECT ROW CHANGE TIMESTAMP FOR EMPLOYEE FROM EMPLOYEE WHERE DEPTNO = 20
v Devuelva un valor BIGINT que represente un punto relativo en el orden de modificacin de la fila correspondiente al empleado nmero 3.500. Devuelva tambin el valor de la funcin escalar RID_BIT que se va a utilizar en un escenario DELETE de bloqueo optimista. Especifique la opcin WITH UR para obtener el ltimo valor ROW CHANGE TOKEN.
SELECT ROW CHANGE TOKEN FOR EMPLOYEE, RID_BIT (EMPLOYEE) FROM EMPLOYEE WHERE EMPNO = '3500' WITH UR
La sentencia anterior es satisfactoria tanto si hay una columna de indicacin de fecha y hora de cambio de fila en la tabla EMPLOYEE como si no la hay. La siguiente sentencia buscada DELETE suprime la fila especificada por los valores ROW CHANGE TOKEN y RID_BIT de la anterior sentencia SELECT, suponiendo que los dos valores de marcador de parmetros estn definidos como los valores obtenidos por la sentencia anterior.
DELETE FROM EMPLOYEE E WHERE RID_BIT (E) = ? AND ROW CHANGE TOKEN FOR E = ?
204
Predicados
Predicados
Un predicado especifica una condicin que es cierta, falsa o desconocida acerca de una fila o un grupo determinado. Las siguientes normas se aplican a todos los tipos de predicados: v Todos los valores especificados en un predicado debe ser compatibles. v Una expresin utilizada en un predicado bsico, cuantificado, IN o BETWEEN no debe producir una serie de caracteres con un atributo de longitud superior a 4000, una serie grfica con un atributo de longitud superior a 2000 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 normas de conversin de series. 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.
205
c1 = 1 and c2 = 2 and c3 = 3
c1 =1 and c2 =2
No aplicable
c1 = 1 and c3 =3
No aplicable
c1 = 1 and c2 = 2 and c4 = 4
206
No aplicable
El optimizador de DB2 emplea el mecanismo de reescritura de consultas para transformar muchos predicados complejos escritos por el usuario en consultas con un mejor rendimiento, como se muestra en la tabla siguiente:
207
c1 < 5 or c1 > 10
SELECT t1.* FROM t1 SELECT * FROM t1 WHERE EXISTS (SELECT EOJOIN t2 WHERE c1 FROM t2 WHERE t1.c1 t1.c1= t2.c1 = t2.c1) SELECT t1* FROM t1 SELECT * FROM t1 WHERE t1.c1 IN (SELECT EOJOIN t2 WHERE t1.c1= t2.c1 c1 FROM t2) c1 like abc%
c1 = abc X X X and c1 Si tenemos c1 como columna inicial = abc Y Y Y de un ndice, DB2 genera estos predicados para que se puedan aplicar como predicados de inicio y detencin de delimitacin de rango. Aqu, los caracteres X e Y son smbolos que representan el carcter de clasificacin ms bajo y ms alto. c1 = abc X X X and c1 Este caso es como el anterior, a excepcin de que debemos aplicar = abc Y Y Y and c1 adems el predicado original como like abc%def predicado comparable mediante SARG de ndice. Esto asegura que los caracteres se correspondan con correccin.
c1 like abc%def
Condiciones de bsqueda
condicin-bsqueda:
predicado NOT SELECTIVITY constante-numrica (condicin-bsqueda)
AND OR
208
Condiciones de 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 19, en la que P y Q son unos predicados cualesquiera:
Tabla 19. Tablas de evaluacin para AND y OR P Verdadero Verdadero Verdadero Falso Falso Falso Desconocido Desconocido Desconocido Q Verdadero Falso Desconocido Verdadero Falso Desconocido Verdadero Falso Desconocido P AND Q Verdadero Falso Desconocido Falso Falso Falso Desconocido Falso Desconocido P OR Q Verdadero Verdadero Verdadero Verdadero Falso Desconocido Verdadero 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.
209
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
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
210
Condiciones de bsqueda
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.
Predicado bsico
expresin = (1) <> < > (1) <= (1) >= expresin
Notas: 1 Tambin se soportan los formatos siguientes de los 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 de producto de los operadores de comparacin slo estn destinados a soportar las sentencias de SQL existentes que utilizan estos operadores y no se recomienda utilizarlos al 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
211
Predicado cuantificado
Predicado cuantificado
expresin1 = (1) <> < > <= >= , ( expresin2 ) = SOME ANY (seleccin completa2) SOME ANY ALL (seleccin completa1)
Notas: 1 Tambin se soportan los formatos siguientes de los 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 de producto de los operadores de comparacin slo estn destinados a soportar las sentencias de SQL existentes que utilizan estos operadores y no se recomienda utilizarlos al 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.
212
Predicado cuantificado
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 como mnimo 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)
213
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
Predicado BETWEEN
expresin NOT BETWEEN expresin AND expresin
El predicado BETWEEN:
valor1 NOT BETWEEN valor2 AND value3
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 euros. 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.
Predicado EXISTS
EXISTS (seleccin completa)
214
Predicado EXISTS
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)
Predicado IN
expresin1 NOT IN (seleccin completa1) , ( expresin2 expresin2 , ( expresin3 ) NOT IN (seleccin completa2) )
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:
expresin = ANY (seleccin completa)
215
Predicado IN
(expresina, expresinb,..., expresink) IN (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 normas para tipos de datos del resultado para determinar los atributos del resultado utilizados en la comparacin. 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 normas 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 20. Ejemplo de predicado IN Expresiones COL_1 HV_2 HV_3 CON_1 Tipo columna variable del lenguaje principal variable del lenguaje principal constante Pgina de cdigos 850 437 437 850
las dos variables del lenguaje principal se convertirn a la pgina de cdigos 850, en base a las normas 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):
216
Predicado IN
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)
Predicado LIKE
expresin-coincidencia NOT LIKE expresin-patrn
ESCAPE
expresin-patrn
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 global 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
Captulo 2. Elementos de idioma
217
Predicado LIKE
v v v v v Una variable global Una variable del lenguaje principal Una funcin escalar cuyos operandos seas cualquiera de los anteriores Una expresin que concatene cualquiera de las anteriores 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. 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.
218
Predicado LIKE
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 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 no suplementario, incluidos el carcter de subrayado de media anchura (U&\005F) y el carcter de signo de porcentaje de media anchura (U&\0025), tiene una anchura de dos bytes. 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. v Para ser reconocidos como caracteres especiales cuando est vigente una recopilacin basada en UCA sensible a la configuracin local, el carcter de subrayado y el carcter de signo de porcentaje no deben ir seguidos por signos (diacrticos) de combinacin sin avance de espacio. Por ejemplo, el patrn U&%\0300 (carcter de signo de porcentaje seguido de un acento grave de combinacin sin avanzar espacio) se interpretar como bsqueda y no como una bsqueda de cero o ms caracteres Unicode seguido del de una letra con un acento grave. Un carcter suplementario Unicode se almacena como dos puntos de cdigo grficos en una columna grfica Unicode. Para comparar un carcter
Captulo 2. Elementos de idioma
219
Predicado LIKE
suplementario Unicode en una columna grfica Unicode, utilice un carcter de subrayado si la base de datos utiliza la clasificacin basada en la UCA sensible a la configuracin local y dos caracteres de subrayado en caso contrario. Para comparar un carcter suplementario Unicode en una columna de caracteres Unicode, utilice un carcter de subrayado para todas las clasificaciones. Para comparar un carcter base con uno o ms caracteres de combinacin sin avance de espacio de cola, utilice un carcter de subrayado si la base de datos utiliza la clasificacin basada en la UCA sensible a la configuracin local. En caso contrario, utilice tantos caracteres de subrayado como el nmero de caracteres de combinacin sin avance de espacio adems del carcter base. 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 global 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 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). v El resultado de la expresin no debe ser una secuencia de caracteres de combinacin sin avance de espacio (por ejemplo U&\0301, acento agudo de combinacin). Cuando hay caracteres de escape en la serie de patrn, un carcter de subrayado, de porcentaje o de escape puede representar una aparicin 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 normas 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 apariciones literales del carcter de escape seguidas de una aparicin literal del signo de subrayado o de porcentaje.
220
Predicado LIKE
Si n es par, S representa n/2 apariciones literales del carcter de escape. A diferencia del caso en 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 apariciones 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). 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. v El patrn se compara cotejando la base de datos, a menos que cualquiera de los operandos se defina como FOR BIT DATA, en cuyo caso el patrn se compara utilizando una comparacin binaria.
Captulo 2. Elementos de idioma
221
Predicado LIKE
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 :pattern_var ESCAPE BLOB(X'OE')
v En una base de datos Unicode definida con la clasificacin no sensible a las maysculas y minsculas UCA500R1_LEN_S1, busque todos los nombres que comiencen por Bill.
SELECT NAME FROM CUSTDATA WHERE NAME LIKE 'Bill%'
Predicado NULL
expresin IS NOT NULL
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
222
Predicado TYPE
Predicado TYPE
expresin IS NOT IS OF DYNAMIC TYPE NOT OF
, ( ONLY nombretipo )
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)
Captulo 2. Elementos de idioma
223
Predicado TYPE
devuelve un resultado verdadero cuando EMPL no es nulo y es realmente un director.
Predicado VALIDATED
expresin-XML IS NOT VALIDATED clusula-according-to
clusula-according-to:
ACCORDING TO XMLSCHEMA identificacin-esquema-XML , IN ( identificacin-esquema-XML )
Identificacin-esquema-XML:
ID nombre-esquema-XML URI uri1-XML NO NAMESPACE LOCATION
XML-uri2
El predicado VALIDATED comprueba si se ha validado o no el valor especificado por expresin-XML utilizando la funcin XMLVALIDATE. Si el valor especificado es nulo, el resultado de la restriccin de validacin ser desconocido; de lo contrario, el resultado de la restriccin de validacin ser verdadero (true) o falso (false). El valor que especifique debe ser del tipo XML. Si no se especifica la clusula ACCORDING TO XMLSCHEMA, los esquemas de XML utilizados para la validacin no afectarn al resultado de la restriccin de validacin.
Descripcin
expresin-XML Especifica el valor XML probado, donde expresin-XML puede constar de un documento XML, contenido XML, una secuencia de nodos XML, un nombre-columna de XML o un nombre-correlacin de XML. Si se especifica un nombre-columna de XML, el predicado evala si se han validado o no los documentos de XML asociados al nombre de columna especificado. Consulte CREATE TRIGGER para obtener ms informacin sobre la especificacin de nombres de correlacin del tipo XML como parte de los activadores. IS VALIDATED o IS NOT VALIDATED Especifica el estado de validacin requerido para el operando expresin-XML. Para que una restriccin que especifica IS VALIDATED se evale como verdadera (true), el operando deber haberse validado. Si una clusula ACCORDING TO XMLSCHEMA opcional incluye uno o varios esquemas XML, el operando debe haberse validado utilizando uno de los esquemas XML identificados. Para que una restriccin que especifica IS NOT VALIDATED se evale como falsa (false), el operando deber estar en estado validado. Si una clusula
224
Predicado VALIDATED
ACCORDING TO XMLSCHEMA opcional incluye uno o varios esquemas XML, el operando debe haberse validado utilizando uno de los esquemas XML identificados. clusula-according-to Especifica uno o varios esquemas XML frente a los que el operando debe o no haber sido validado. nicamente pueden especificarse los esquemas XML registrados previamente con el depsito de esquemas XML. ACCORDING TO XMLSCHEMA ID nombre-esquema-XML Especifica un identificador de SQL para el esquema XML. 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 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. 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 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 uri2-XML Especifica el URI de ubicacin del esquema XML del esquema XML. 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).
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)
Ejemplo 3: Suponga que desea seleccionar nicamente las filas de la tabla T1 con la columna de XML XMLCOL que se haya validado con el esquema de XML URI http://www.posample.org.
225
Predicado VALIDATED
SELECT XMLCOL FROM T1 WHERE XMLCOL IS VALIDATED ACCORDING TO XMLSCHEMA URI 'http://www.posample.org'
Predicado XMLEXISTS
XMLEXISTS ( constante-expresin-xquery ) , (1) PASSING BY REF argumento-xquery
argumento-xquery:
(2) expresin-variable-xquery AS identificador BY REF
Notas: 1 2 El tipo de datos no puede ser DECFLOAT. El tipo de datos de la expresin no puede ser DECFLOAT.
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 constante-expresin-xquery no debe ser una serie vaca o una 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. Por omisin, cada nombre de columna exclusivo en el mbito en el que se invoca la funcin se pasa implcitamente a la expresin XQuery utilizando el nombre de la columna como nombre de variable. Si un identificador de un argumento-xquery especificado coincide con el nombre de columna con mbito, entonces el argumento-xquery explcito se pasa a la expresin XQuery alterando temporalmente dicha columna implcita. BY REF Especifica que el mecanismo de pase por omisin es 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
226
Predicado XMLEXISTS
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, 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, 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). El tipo de datos de la expresin no puede ser DECFLOAT. 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.
Captulo 2. Elementos de idioma
227
Predicado XMLEXISTS
Notas
El predicado XMLEXISTS no puede formar parte de: v Parte de la clusula ON asociada a un operador JOIN o una sentencia MERGE (SQLSTATE 42972) v Parte de la clusula GENERATE KEY USING o RANGE THROUGH de la sentencia CREATE INDEX EXTENSION (SQLSTATE 428E3) v Parte de la clusula FILTER USING de la sentencia CREATE FUNCTION (escalar externa), o la clusula FILTER USING de la sentencia CREATE INDEX EXTENSION (SQLSTATE 428E4) v Parte de una restriccin de comprobacin o de una expresin de generacin de columnas (SQLSTATE 42621) v Una clusula-group-by (SQLSTATE 42822) 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. El predicado XMLEXISTS slo se puede utilizar en una base de datos con una nica particin de base de datos (SQLSTATE 42997).
Ejemplo
SELECT c.cid FROM customer c WHERE XMLEXISTS('$d/*:customerinfo/*:addr[ *:city = "Aurora" ]' PASSING info AS "d")
228
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 (como, por ejemplo, +), las funciones de conversin (como, por ejemplo DECIMAL) y otras (como, por ejemplo, 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 agregada es un conjunto de valores similares. Una funcin agregada 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 de 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.
229
v Funciones escalares de series (Tabla 29 en la pgina 261) v Funciones escalares diversas (Tabla 30 en la pgina 263) Para ver las listas de vistas y rutinas administrativas SQL soportadas clasificadas por funcionalidad, consulte Vistas y rutinas administrativas SQL soportadas en Rutinas y vistas administrativas . 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
230
v DOUBLE
v DOUBLE
v DOUBLE
v DOUBLE
v DOUBLE
SYSIBM
v DOUBLE, DOUBLE
v DOUBLE
v tipo-numrico4
v tipo-numrico1
v tipo-numrico v VARCHAR
v BIGINT v BIGINT
SYSIBM
Captulo 3. Funciones
231
v una matriz
v BIGINT
v SMALLINT v INTEGER v BIGINT v DOUBLE v DECFLOAT(n) v CHAR v CHAR(entero) v CHAR v CHAR v CHAR(6) v CHAR(11) v CHAR(20) v CHAR(2+precisin) v CHAR(2+precisin) v CHAR(42)
SYSIBM
Esta funcin escalar devuelve una representacin en el formato de una serie del tipo fuente.
v CHAR(24)
Esta funcin escalar devuelve una representacin en el formato de una serie de caracteres de un nmero de coma flotante. Esta funcin escalar devuelve la longitud de una expresin de la unidad-serie especificada. Esta funcin escalar devuelve el carcter que tiene el valor del cdigo ASCII especificado por el argumento. El valor del argumento debe estar comprendido entre 0 y 255; de lo contrario, el valor devuelto es nulo. Esta funcin escalar convierte del tipo fuente a CLOB, con longitud opcional. Esta funcin escalar devuelve el primer argumento no nulo del conjunto de argumentos.
v tipo-serie, unidad-serie
v INTEGER
v INTEGER
v CHAR(1)
v CLOB v CLOB
v cualquier-tipo, cualquier-tipo-compatibleunin,...
v cualquier-tipo
232
v tipo-serie, tipo-serie-compatible v tipo-numrico, tipo-numrico v tipo-numrico-no-decfloat, tipo-numrico-no-decfloat v DECFLOAT(n), tipo-numrico v tipo-numrico, DECFLOAT(n)
v tipo-serie-mx
v DOUBLE
v DOUBLE
Esta funcin escalar devuelve el coseno del argumento, donde el argumento es un ngulo expresado en radianes. Esta funcin escalar devuelve el coseno hiperblico del argumento, donde el argumento es un ngulo expresado en radianes. Esta funcin escalar devuelve la cotangente del argumento, donde el argumento es un ngulo expresado en radianes. Esta funcin agregada devuelve el nmero de filas o valores de un conjunto de filas o valores.
v DOUBLE
v DOUBLE
v DOUBLE
v DOUBLE
v cualquier-tipo-incorporado4
v INTEGER
Captulo 3. Funciones
233
Devuelve v DECIMAL(31,0)
Descripcin Esta funcin agregada devuelve el nmero de filas o valores de un conjunto de filas o valores. El resultado puede ser mayor que el valor mximo de INTEGER. Esta funcin agregada devuelve la covarianza de un conjunto de pares de nmeros.
SYSIBM
SYSIBM
v cualquier-tipo
v INTEGER
Esta funcin escalar devuelve el nmero de secuencia (SYSDATAPARTITIONS. SEQNO) de la particin de datos donde reside la fila. El argumento es cualquier nombre de columna dentro de la tabla. Esta funcin escalar devuelve una fecha a partir de un solo valor de entrada.
SYSIBM
v DATE v DATE v DATE v DATE v DATE v INTEGER v INTEGER v INTEGER v INTEGER v VARCHAR(100) v VARCHAR(100) v VARCHAR(100)
SYSFUN
Esta funcin escalar devuelve una serie que combina caracteres en maysculas 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. Esta funcin escalar devuelve el da de la semana del argumento como un valor entero comprendido entre 1 y 7, donde 1 representa el domingo. Esta funcin escalar devuelve el da de la semana del argumento como un valor entero comprendido entre 1 y 7, donde 1 representa el lunes. Esta funcin escalar devuelve el da del ao del argumento como un valor entero comprendido entre 1 y 366. Esta funcin escalar devuelve una representacin entera de una fecha.
SYSFUN
234
Descripcin Esta funcin escalar convierte del tipo fuente a DBCLOB, con longitud opcional. Esta funcin escalar devuelve el nmero de particin de base de datos de la fila. El argumento es cualquier nombre de columna dentro de la tabla. Esta funcin escalar devuelve la representacin de coma flotante decimal de un nmero con precisin opcional. Esta funcin escalar devuelve la representacin de coma flotante decimal de un nmero con precisin opcional y carcter decimal.
v cualquier-tipo
v INTEGER
v DECFLOAT(34) v DECFLOAT(n), donde n es el segundo argumento (opcional) de tipo INTEGER, 16 o 34 v DECFLOAT(34) v DECFLOAT(n), donde n es el segundo argumento (opcional) de tipo INTEGER, 16 o 34 v DECFLOAT(n), donde n es el segundo argumento (opcional) de tipo INTEGER, 16 o 34
SYSIBM
Esta funcin escalar devuelve una representacin decimal de un nmero, con precisin y escala opcionales. Esta funcin escalar devuelve una representacin decimal de una serie de caracteres, con precisin, escala y carcter decimal opcionales.
SYSIBM
v VARCHAR v VARCHAR, INTEGER v VARCHAR, INTEGER, INTEGER v VARCHAR, INTEGER, INTEGER, VARCHAR
SYSIBM
v cualquier-tipo
v cualquier-tipo
Esta funcin escalar compara cada expresin2 especificada con la expresin1. Si expresin1 es igual a expresin2, o expresin1 y expresin2 son nulas, se devuelve el valor de la siguiente expresin-resultado. Si ninguna expresin2 coincide con expresin1, se devuelve el valor de expresin-else; de lo contrario, se devuelve un valor nulo. Esta funcin escalar devuelve un valor que es el resultado de descifrar datos cifrados utilizando una serie de contrasea. Esta funcin escalar devuelve un valor que es el resultado de descifrar datos cifrados utilizando una serie de contrasea. Esta funcin escalar devuelve el nmero de grados convertidos a partir del argumento expresado en radianes.
v VARCHAR FOR BIT DATA v VARCHAR FOR BIT DATA v VARCHAR v VARCHAR
v DOUBLE v DECFLOAT(n)
v DOUBLE v DECFLOAT(n)
Captulo 3. Funciones
235
SYSFUN
v VARCHAR(4000), VARCHAR(4000)
v INTEGER
v DECIMAL
v CHAR
v tipo-numrico
v DOUBLE
SYSFUN
v VARCHAR
v DOUBLE
Funciones escalares EMPTY_BLOB, EMPTY_CLOB y EMPTY_DBCLOB Funciones escalares EMPTY_BLOB, EMPTY_CLOB y EMPTY_DBCLOB Funciones escalares EMPTY_BLOB, EMPTY_CLOB y EMPTY_DBCLOB
SYSIBM
v sin argumento
v BLOB
SYSIBM
v sin argumento
v CLOB
SYSIBM
v sin argumento
v DBCLOB
SYSIBM
v VARCHAR FOR BIT DATA v VARCHAR FOR BIT DATA v VARCHAR FOR BIT DATA
v VARCHAR
v INTEGER
Esta funcin escalar devuelve el estado operativo de un determinado supervisor de sucesos. Esta funcin escalar devuelve la funcin exponencial del argumento. Esta funcin escalar devuelve la funcin exponencial del argumento. Esta funcin escalar es igual que DOUBLE.
236
v VARCHAR o CLOB
v VARCHAR
v GRAPHIC v GRAPHIC
v cualquier-tipo-incorporado9
v cualquier-tipo
SYSIBM
v cualquier-tipo
v INTEGER
v cualquier-tipo-integrado
v VARCHAR
Esta funcin escalar devuelve el valor asignado ms reciente correspondiente a una columna de entidad.
Captulo 3. Funciones
237
SYSFUN
v VARCHAR(4000), INTEGER, INTEGER, VARCHAR(4000) v CLOB(1M), INTEGER, INTEGER, CLOB(1M) v BLOB(1M), INTEGER, INTEGER, BLOB(1M)
LCASE en la pgina 342 LCASE (sensible al entorno local) en la pgina 342 LEAST en la pgina 343
SYSIBM
SYSIBM
v INTEGER v INTEGER
v CHAR v VARCHAR
v CHAR v VARCHAR
238
v DOUBLE
v DOUBLE
SYSIBM
v tipo-serie, tipo-serie-compatible v tipo-serie, tipo-serie-compatible, INTEGER v tipo-serie, tipo-serie-compatible, unidad-serie v tipo-serie, tipo-serie-compatible, INTEGER, unidad-serie
v CHAR, serie que especifica un entorno local v VARCHAR, serie que especifica un entorno local v GRAPHIC, serie que especifica un entorno local v VARGRAPHIC, serie que especifica un entorno local v CHAR, serie que especifica un entorno local, INTEGER v VARCHAR, serie que especifica un entorno local, INTEGER v GRAPHIC, serie que especifica un entorno local, INTEGER v VARGRAPHIC, serie que especifica un entorno local, INTEGER
v VARCHAR v VARCHAR v VARGRAPHIC v VARGRAPHIC v igual que el tipo de entrada v igual que el tipo de entrada v BIGINT
Esta funcin escalar devuelve los caracteres del argumento con los blancos iniciales eliminados.
SYSIBM MAX en la pgina 273 SYSIBM MAX en la pgina 356 SYSIBM MAX_CARDINALITY en la pgina 357
v cualquier-tipo-incorporado5
Esta funcin agregada devuelve el valor mximo de un conjunto de valores. Esta funcin escalar devuelve el valor mximo de un conjunto de valores. Esta funcin escalar devuelve el nmero mximo de elementos que puede contener una matriz.
v cualquier-tipo-incorporado9
v una matriz
Captulo 3. Funciones
239
SYSFUN
SYSIBM MIN en la pgina 274 SYSIBM MIN en la pgina 359 SYSIBM MINUTE en la pgina 359
v cualquier-tipo-incorporado5
v igual que el tipo de entrada v igual que el tipo de entrada v INTEGER v INTEGER v INTEGER v INTEGER v SMALLINT v INTEGER v BIGINT
v cualquier-tipo-incorporado9
Esta funcin escalar devuelve el resto de argumento1 dividido entre argumento2. El resultado slo es negativo si argumento1 es negativo. Esta funcin escalar devuelve la parte correspondiente al mes de un valor.
SYSFUN
Esta funcin escalar devuelve una serie que combina caracteres en maysculas 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. Esta funcin escalar devuelve el producto de dos argumentos como un valor decimal. Esta funcin resulta til cuando la suma de las precisiones del argumento es mayor que 31. Esta funcin escalar devuelve un valor de coma flotante decimal que es el resultado del argumento establecido en su formato ms simple. Esta funcin escalar devuelve NULL si los argumentos son iguales o devuelve el primer argumento si no lo son. Esta funcin escalar devuelve el primer argumento que no es nulo.
SYSIBM
v tipo-numrico-exacto, tipo-numrico-exacto
v DECIMAL
v DECFLOAT(n)
v DECFLOAT(n)
v cualquier-tipo5, cualquier-tipo-comparable5
v cualquier-tipo
v cualquier-tipo, cualquier-tipo-compatibleunin,...
v cualquier-tipo
240
SYSIBM
v INTEGER
SYSIBM Funcin escalar POSITION en la pgina 369 SYSIBM Funcin escalar POSSTR en la pgina 372 SYSIBM
v INTEGER
v tipo-serie, tipo-serie-compatible
v INTEGER
v INTEGER v BIGINT v DOUBLE v DOUBLE v DECFLOAT(34) v INTEGER v BIGINT v DOUBLE v DOUBLE v DECFLOAT(n), donde n es 16 si ambos argumentos son DECFLOAT(16); de lo contrario DECFLOAT(34)
SYSIBM
v tipo-numrico, tipo-numrico
Esta funcin escalar devuelve un nmero de coma flotante decimal que es igual en valor y signo al primer argumento y cuyo exponente es igual al exponente del segundo argumento. Esta funcin escalar devuelve un valor entero comprendido entre 1 y 4 que representa el trimestre del ao correspondiente a la fecha especificada en el argumento. Esta funcin escalar devuelve el nmero de radianes convertidos a partir del argumento expresado en grados. Esta funcin escalar devuelve el nmero de radianes convertidos a partir del argumento expresado en grados.
SYSFUN
v DOUBLE v DECFLOAT(n)
v DOUBLE v DECFLOAT(n)
v DOUBLE
v DOUBLE
Captulo 3. Funciones
241
Descripcin Esta funcin escalar enva un error a la SQLCA. El sqlstate que se devolver se indica mediante argumento1. El segundo argumento contiene el texto que debe devolverse. Esta funcin escalar devuelve un valor aleatorio de coma flotante comprendido entre 0 y 1 utilizando el argumento como valor generador opcional. Esta funcin escalar devuelve la representacin en el formato de coma flotante de precisin simple de un nmero. Esta funcin escalar devuelve una serie formateada codificada en XML que contiene nombres de columna y datos de columna. La funcin agregada REGR_AVGX devuelve las cantidades utilizadas para calcular las estadsticas de diagnstico. La funcin agregada REGR_AVGY devuelve las cantidades utilizadas para calcular las estadsticas de diagnstico. La funcin agregada REGR_COUNT devuelve el nmero de pares de nmeros no nulos utilizados para acomodar la lnea de regresin. La funcin agregada REGR_INTERCEPT o REGR_ICPT devuelve la interseccin y de la lnea de regresin. La funcin agregada REGR_R2 devuelve el coeficiente de determinacin de la regresin. La funcin agregada REGR_SLOPE devuelve la inclinacin de la lnea. La funcin agregada REGR_SXX devuelve las cantidades utilizadas para calcular las estadsticas de diagnstico. La funcin agregada REGR_SXY devuelve las cantidades utilizadas para calcular las estadsticas de diagnstico. La funcin agregada REGR_SYY devuelve las cantidades utilizadas para calcular las estadsticas de diagnstico.
SYSFUN
v DOUBLE v DOUBLE
v tipo-numrico
v REAL
v VARCHAR
v DOUBLE v DECFLOAT(n)
v DOUBLE v DECFLOAT(n)
v INTEGER v DECFLOAT(n)
v DOUBLE v DECFLOAT(n)
v DOUBLE v DECFLOAT(n)
v DOUBLE v DECFLOAT(n)
v DOUBLE v DECFLOAT(n)
v DOUBLE v DECFLOAT(n)
v DOUBLE v DECFLOAT(n)
242
v Designador de tabla
v BIGINT
SYSIBM
v VARCHAR v CLOB
SYSIBM
Captulo 3. Funciones
243
SYSFUN
v DOUBLE
v DOUBLE
v DOUBLE
v DOUBLE
v DOUBLE
244
v VARCHAR(4000)
v CHAR(4)
v INTEGER
v VARCHAR(4000)
SYSIBM SQRT en la pgina 399 SYSFUN SQRT en la pgina 399 SYSIBM STDDEV en la pgina 278
v DOUBLE v DECFLOAT(n)
v DOUBLE v DECFLOAT(n)
SYSIBM
v CHAR v VARCHAR v GRAPHIC v VARGRAPHIC v CHAR, CHAR v VARCHAR, CHAR v GRAPHIC, CHAR v VARGRAPHIC, CHAR
v CHAR v VARCHAR v GRAPHIC v VARGRAPHIC v CHAR v VARCHAR v GRAPHIC v VARGRAPHIC v tipo-serie v tipo-serie
SYSIBM
Esta funcin escalar devuelve una subserie de la serie argumento1, empezando por argumento2. La subserie tiene una longitud de argumento3 bytes. Si no se especifica argumento3, se da por supuesto el resto de la serie. Esta funcin escalar devuelve una subserie de la serie argumento1, empezando por argumento2. La subserie tiene una longitud de argumento3 caracteres. Si no se especifica el otro argumento INTEGER, se dar por supuesto el resto de la serie. Esta funcin agregada devuelve la suma de un conjunto de nmeros. Esta funcin escalar devuelve un nombre no calificado de una tabla o vista 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.
SYSIBM
v tipo-serie v tipo-serie
v tipo-numrico4
v tipo-numrico-mx1
v VARCHAR(128) v VARCHAR(128)
Captulo 3. Funciones
245
v DOUBLE
v DOUBLE
v DOUBLE
v DOUBLE
v TIME v TIME v TIME v TIMESTAMP v TIMESTAMP v TIMESTAMP v TIMESTAMP v TIMESTAMP v TIMESTAMP v TIMESTAMP
SYSIBM
v TIMESTAMP v VARCHAR v VARCHAR, VARCHAR v VARCHAR, TIME v DATE, VARCHAR v DATE, TIME
SYSIBM
v VARCHAR, VARCHAR
Esta funcin escalar devuelve una indicacin de fecha y hora a partir de una serie de caracteres (argumento1) que se ha interpretado utilizando una plantilla de formato (argumento2). Esta funcin escalar 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 de CURRENT DATE para los elementos de fecha y ceros para el elemento de fraccin de hora.
SYSFUN
246
Esta funcin escalar devuelve una representacin en el formato de caracteres de una indicacin de fecha y hora. Esta funcin escalar devuelve una indicacin de la fecha y hora a partir de una serie de caracteres. Esta funcin escalar devuelve un valor SMALLINT de -1, 0 o 1 que indica el orden de comparacin de dos argumentos.
v DECFLOAT(n), DECFLOAT(n)
v SMALLINT
Captulo 3. Funciones
247
SYSIBM
v cualquier-tipo-estructurado
v INTEGER
v cualquier-tipo-estructurado
v VARCHAR(18)
v cualquier-tipo-estructurado
v VARCHAR(128)
SYSIBM SYSIBM
248
v CHAR v VARCHAR
v CHAR v VARCHAR
SYSIBM
v CHAR, serie que especifica un entorno local v VARCHAR, serie que especifica un entorno local v GRAPHIC, serie que especifica un entorno local v VARGRAPHIC, serie que especifica un entorno local v CHAR, serie que especifica un entorno local, INTEGER v VARCHAR, serie que especifica un entorno local, INTEGER v GRAPHIC, serie que especifica un entorno local, INTEGER v VARGRAPHIC, serie que especifica un entorno local, INTEGER
Esta funcin escalar es igual que COALESCE. Esta funcin escalar devuelve una representacin en el formato VARCHAR del primer argumento. Si existe un segundo argumento, especifica la longitud del resultado. Esta funcin escalar devuelve una representacin en el formato de caracteres de una indicacin de fecha y hora (argumento1) con el formato indicado en una plantilla (argumento2). Esta funcin escalar devuelve una representacin en el formato VARGRAPHIC del primer argumento. Si existe un segundo argumento, especifica la longitud del resultado. Esta funcin agregada devuelve la varianza de un conjunto de nmeros.
SYSIBM
v VARCHAR v VARCHAR
SYSIBM
v DOUBLE v DECFLOAT(n)
Captulo 3. Funciones
249
v XML
v XML
v Cualquier expresin SQL, v XML aunque no un tipo estructurado; no se puede incluir una seleccin completa escalar. v tipo-carcter v XML
Esta funcin escalar devuelve un valor XML con un nico nodo de comentario XQuery con el argumento de entrada como contenido. Esta funcin escalar devuelve una secuencia que contiene la concatenacin de un nmero variable de argumentos de entrada de XML. Esta funcin escalar devuelve un valor XML con un nico nodo de documento XQuery con ninguno o varios nodos hijo. Esta funcin escalar devuelve un valor XML que es un nodo de elemento XML. Esta funcin escalar devuelve un valor XML que es una secuencia de nodos de elemento XML.
v XML
v XML
v XML
v XML
v XML
v XML
v Cualquier expresin SQL, v XML aunque no un tipo estructurado; no se puede incluir una seleccin completa escalar. v Cualquier expresin SQL, aunque no un tipo estructurado. v XML
Esta funcin agregada devuelve un valor XML con un nodo de documento XQuery individual que contiene un nodo de elemento de nivel superior. Esta funcin escalar construye declaraciones de espacio de nombres a partir de los argumentos. Esta funcin escalar analiza el argumento como si fuera un documento XML y devuelve un valor XML.
v tipo-carcter
v XML
v tipo-carcter v BLOB
v XML v XML
250
SYSIBM
v tipo-carcter
v XML
v XML
v tipo-carcter v BLOB
v XML v XML
SYSIBM
v tipo-carcter
v XML
SYSIBM
v XML
v XML
SYSIBM
v XML
v BIGINT
SYSIBM
v XML
v XML
Captulo 3. Funciones
251
SYSIBM SYSIBM
v DECIMAL(6,0), TIME v DECIMAL(20,6), TIMESTAMP v tipo-fechahora, DOUBLE, cdigo-duracin-etiquetado v tipo-fechahora, DECFLOAT, cdigo-duracin-etiquetado SYSIBM v tipo-numrico, tipo-numrico
v tipo-numrico-mx
Resta dos operandos numricos. Si cualquiera de los operandos es un valor de coma flotante decimal especial, se aplicarn las normas para las operaciones aritmticas generales para la coma flotante decimal. Consulte el apartado General arithmetic operation rules for decimal floating-point en Normas generales de operaciones aritmticas para coma flotante decimal en la pgina 172. Operador menos unario.
SYSIBM
v tipo-numrico
v tipo-numrico1
252
SYSIBM
v tipo-numrico, tipo-numrico
v tipo-numrico-mx
? Notas
SYSIBM
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. v La funcin escalar LONG_VARCHAR y la funcin escalar LONG_VARGRAPHIC siguen estando soportadas pero han quedado obsoletas y podran eliminarse en un release futuro.
Captulo 3. Funciones
253
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-nmero-no-decfloat Cualquiera de los tipos numricos excepto coma flotante decimal: SMALLINT, INTEGER, BIGINT, DECIMAL, REAL, DOUBLE. tipo-numrico Cualquiera de los tipos numricos: SMALLINT, INTEGER, BIGINT, DECIMAL, REAL, DOUBLE, DECFLOAT. 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.
254
Esquema
Entrada
Devuelve
Descripcin
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. Las palabras clave permitidas son ISO, USA, EUR, JIS y LOCAL. Esta signatura de funcin no recibe soporte como una funcin fuente. Esta funcin no se puede utilizar como una funcin fuente. La palabra clave ALL o DISTINCT se puede utilizar antes del primer argumento. Si se especifica DISTINCT, el uso del tipo LOB o de un tipo estructurado definido por el usuario no est soportado. La utilizacin del tipo LOB o de un tipo estructurado definido por el usuario no est soportada. 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. La utilizacin de tipo-grfico o tipo-LOB no est soportada. La utilizacin de REFERENCE, SYSPROC.DB2SECURITYLABEL, XML o tipos definidos por el usuario no est soportada. La utilizacin de ARRAY, tipo-LOB, XML, un tipo diferenciado basado en cualquiera de estos tipos o un tipo estructurado no est soportada.
2 3 4
5 6
7 8 9
Tabla 22. Funciones agregadas Funcin ARRAY_AGG en la pgina 265 AVG en la pgina 266 CORRELATION en la pgina 268 COUNT en la pgina 268 COUNT_BIG en la pgina 269 COVARIANCE en la pgina 271 GROUPING en la pgina 272 Descripcin Agrega un conjunto de elementos a una matriz. Devuelve el promedio de un conjunto de nmeros. Devuelve el coeficiente de correlacin de un conjunto de pares de nmeros. Devuelve el nmero de filas o de valores de un conjunto de filas o de valores. Devuelve el nmero de filas o de valores de un conjunto de filas o de valores. El resultado puede ser mayor que el valor mximo de INTEGER. Devuelve la covarianza de un conjunto de pares de nmeros. 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 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. Devuelve el valor mximo de un conjunto de valores. Devuelve el valor mnimo de un conjunto de valores. La funcin agregada REGR_AVGX devuelve las cantidades utilizadas para calcular las estadsticas de diagnstico. La funcin agregada REGR_AVGY devuelve las cantidades utilizadas para calcular las estadsticas de diagnstico. La funcin agregada REGR_COUNT devuelve el nmero de pares de nmeros no nulos utilizados para acomodar la lnea de regresin. La funcin agregada REGR_INTERCEPT o REGR_ICPT devuelve la interseccin y de la lnea de regresin.
MAX en la pgina 273 MIN en la pgina 274 Funciones de regresin en la pgina 275 Funciones de regresin en la pgina 275 Funciones de regresin en la pgina 275 Funciones de regresin en la pgina 275
Captulo 3. Funciones
255
Tabla 23. Funciones escalares de conversin Funcin BIGINT en la pgina 288 Descripcin 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. Devuelve una representacin BLOB de una serie de cualquier tipo. Devuelve una representacin CHARACTER de un valor. Devuelve una representacin CLOB de un valor. Devuelve una representacin DATE de un valor. Devuelve una representacin DBCLOB de una serie. Devuelve la representacin de coma flotante decimal de un nmero.
BLOB en la pgina 291 CHAR en la pgina 293 CLOB en la pgina 299 DATE en la pgina 305 DBCLOB en la pgina 310 DECFLOAT en la pgina 312
DECIMAL en la pgina 313 Devuelve una representacin DECIMAL de un nmero. DOUBLE en la pgina 321 Funciones escalares EMPTY_BLOB, EMPTY_CLOB y EMPTY_DBCLOB FLOAT en la pgina 325 Devuelve una representacin DOUBLE PRECISION de un nmero. Devuelve un valor de longitud cero del tipo de datos asociado.
GRAPHIC en la pgina 328 Devuelve una representacin GRAPHIC de una serie. INTEGER en la pgina 341 REAL en la pgina 379 SMALLINT en la pgina 398 TIME en la pgina 409 TIMESTAMP en la pgina 409 Devuelve una representacin INTEGER de un nmero. Devuelve una representacin REAL de un nmero. Devuelve una representacin SMALLINT de un nmero. Devuelve una representacin TIME de un valor. Devuelve una representacin TIMESTAMP a partir de un valor o de un par de valores.
256
Tabla 24. Funciones escalares de particionamiento Funcin DATAPARTITIONNUM en la pgina 305 Descripcin Devuelve el nmero de secuencia (SYSDATAPARTITIONS.SEQNO) de la particin de datos donde reside la fila. El argumento es cualquier nombre de columna dentro de la tabla. Devuelve el nmero de particin de base de datos de la fila. El argumento es cualquier nombre de columna dentro de la tabla. Devuelve el ndice de correlacin de distribucin (de 0 a 4095) de la fila. El argumento es un nombre de columna dentro de una tabla.
Tabla 25. Funciones escalares de fecha y hora Funcin DAY en la pgina 306 DAYNAME en la pgina 307 Descripcin Devuelve la parte del da del valor. Devuelve una serie que combina caracteres en maysculas 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 308 1 es el domingo y el 7 es el sbado. DAYOFWEEK_ISO en la pgina 308 DAYOFYEAR en la pgina 308 DAYS en la pgina 309 HOUR en la pgina 333 JULIAN_DAY en la pgina 342 MICROSECOND en la pgina 357 MIDNIGHT_SECONDS en la pgina 358 MINUTE en la pgina 359 MONTH en la pgina 361 Devuelve el da de la semana a partir de un valor, donde el 1 es el lunes y el 7 es el domingo. Devuelve el da del ao a partir de un valor. Devuelve una representacin entera de una fecha. Devuelve la parte de la hora de un valor. Devuelve un valor entero que representa el nmero de das desde el 1 de enero de 4712 A.C. hasta la fecha especificada en el argumento. Devuelve la parte correspondiente a las milsimas de segundo de un valor. Devuelve un valor entero que representa el nmero de segundos entre medianoche y un valor de hora especificado. Devuelve la parte del minuto de un valor. Devuelve la parte del mes de un valor.
Captulo 3. Funciones
257
QUARTER en la pgina 376 Devuelve un entero que representa el trimestre del ao en el que reside una fecha. SECOND en la pgina 395 TIMESTAMP_FORMAT en la pgina 410 TIMESTAMP_ISO en la pgina 414 Devuelve la segunda parte de un valor. Devuelve una indicacin de fecha y hora a partir de una serie de caracteres (argumento1) que se ha interpretado utilizando una plantilla de formato (argumento2). 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 de CURRENT DATE para los elementos de fecha y ceros para el elemento de fraccin de hora. 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.
TO_CHAR en la pgina 416 Devuelve una representacin CHARACTER de una indicacin de fecha y hora. TO_DATE en la pgina 416 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 428 indicacin de fecha y hora (argumento1) con el formato indicado en una plantilla argumento2). WEEK en la pgina 434 WEEK_ISO en la pgina 434 YEAR en la pgina 470 Devuelve la semana del ao a partir de un valor, donde la semana empieza el domingo. Devuelve la semana del ao a partir de un valor, donde la semana empieza el lunes. Devuelve la parte del ao de un valor.
Tabla 26. Funciones escalares numricas Funcin ABS o ABSVAL en la pgina 285 ACOS en la pgina 286 ASIN en la pgina 287 ATAN en la pgina 287 ATANH en la pgina 288 ATAN2 en la pgina 287 CEILING en la pgina 293 Descripcin Devuelve el valor absoluto de un nmero. Devuelve el arcocoseno de un nmero, en radianes. Devuelve el arcoseno de un nmero, en radianes. Devuelve la arcotangente de un nmero, en radianes. Devuelve la arcotangente hiperblica de un nmero, en radianes. Devuelve la arcotangente de las coordenadas x e y como un ngulo expresado en radianes. Devuelve el valor del entero ms pequeo que es mayor o igual que un nmero.
258
COMPARE_DECFLOAT en Devuelve un valor SMALLINT que indica si los dos la pgina 302 argumentos son iguales o estn desordenados o si un argumento es mayor que el otro. COS en la pgina 303 COSH en la pgina 304 COT en la pgina 304 Devuelve el coseno de un nmero. Devuelve el coseno hiperblico de un nmero. Devuelve la cotangente del argumento, donde el argumento es un ngulo expresado en radianes.
DEGREES en la pgina 319 Devuelve el nmero de grados de un ngulo. DIGITS en la pgina 321 EXP en la pgina 325 FLOOR en la pgina 325 LN en la pgina 348 LOG10 en la pgina 352 MOD en la pgina 360 MULTIPLY_ALT en la pgina 362 NORMALIZE_DECFLOAT en la pgina 363 POWER en la pgina 374 QUANTIZE en la pgina 375 Devuelve la representacin en el formato de una serie de caracteres del valor absoluto de un nmero. Devuelve un valor que es la base del logaritmo natural (e) elevada a la potencia especificada por el argumento. Devuelve el valor del entero ms grande que es menor o igual que un nmero. Devuelve el logaritmo natural de un nmero. Devuelve el logaritmo comn (en base 10) de un nmero. Devuelve el resto del primer argumento dividido por el segundo argumento. Devuelve el producto de dos argumentos como un valor decimal. Esta funcin resulta til cuando la suma de las precisiones del argumento es mayor que 31. Devuelve un valor de coma flotante decimal que es el resultado del argumento establecido en su formato ms simple. Devuelve el resultado de elevar el primer argumento a la potencia del segundo argumento. Devuelve un nmero de coma flotante decimal que es igual en valor y signo al primer argumento y cuyo exponente es igual al exponente del segundo argumento.
RADIANS en la pgina 377 Devuelve el nmero de radianes de un argumento que se expresa en grados. RAND en la pgina 378 ROUND en la pgina 390 SIGN en la pgina 396 SIN en la pgina 397 SINH en la pgina 397 SQRT en la pgina 399 TAN en la pgina 408 TANH en la pgina 408 TOTALORDER en la pgina 416 TRUNCATE en la pgina 420 Devuelve un nmero aleatorio. Devuelve un valor numrico que se ha redondeado el nmero de posiciones decimales especificado. Devuelve el signo de un nmero. Devuelve el seno de un nmero. Devuelve el seno hiperblico de un nmero. Devuelve la raz cuadrada de un nmero. Devuelve la tangente de un nmero. Devuelve la tangente hiperblica de un nmero. Devuelve un valor SMALLINT de -1, 0 o 1 que indica el orden de comparacin de dos argumentos. Devuelve un valor numrico que se ha truncado en el nmero de posiciones decimales especificado.
Captulo 3. Funciones
259
XMLCONCAT en la pgina Devuelve una secuencia que contiene la concatenacin de 437 un nmero variable de argumentos de entrada de XML. en la pgina 438 XMLELEMENT en la pgina 439 XMLFOREST en la pgina 445 XMLGROUP en la pgina 282 XMLNAMESPACES en la pgina 448 XMLPARSE en la pgina 450 XMLPI en la pgina 452 XMLQUERY en la pgina 453 Devuelve un valor XML con un nico nodo de documento XQuery con ninguno o varios nodos hijo. Devuelve un valor XML que es un nodo de elemento XML. Devuelve un valor XML que es una secuencia de nodos de elemento XML. Devuelve un valor XML con un nodo de documento XQuery individual que contiene un nodo de elemento de nivel superior. Construye las declaraciones de espacios de nombres a partir de los argumentos. Analiza el argumento como un documento XML y devuelve un valor XML. Devuelve un valor XML con un nico nodo de instruccin de proceso XQuery. Devuelve un valor XML a partir de la evaluacin de una expresin XQuery posiblemente utilizando los argumentos de entrada especificados como variables XQuery.
XMLROW en la pgina 456 Devuelve un valor XML con un nodo de documento XQuery individual que contiene un nodo de elemento de nivel superior. XMLSERIALIZE en la pgina 458 Devuelve un valor XML serializado de los tipos de datos especificados, generados a partir del argumento.
260
XMLTEXT en la pgina 460 Devuelve un valor XML con un nico nodo de texto XQuery cuyo contenido es el argumento de entrada. XMLVALIDATE en la pgina 462 Devuelve una copia del valor XML de entrada aumentado con la informacin obtenida a partir de la validacin de esquema XML, incluidos las anotaciones de tipo y los valores por omisin. Devuelve un identificador de objeto XSR del esquema XML utilizado para validar el documento XML especificado en el argumento Convierte datos XML a otros formatos, incluyendo la conversin de documentos XML que se ajustan a un esquema XML en documentos que se ajustan a otro esquema.
Tabla 29. Funciones escalares de series Funcin ASCII en la pgina 286 Descripcin 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 298 especificada. CHR en la pgina 299 COLLATION_KEY_BIT en la pgina 301 CONCAT en la pgina 303 DECRYPT_BIN y DECRYPT_CHAR en la pgina 318 DIFFERENCE en la pgina 320 Devuelve el carcter que tiene el valor de cdigo ASCII especificado por el argumento. Devuelve una serie VARCHAR FOR BIT DATA que representa la clave de clasificacin de la expresin-serie especificada en el nombre-clasificacin especificado. Devuelve una serie que es la concatenacin de dos series. Devuelve un valor que es el resultado de descifrar datos cifrados utilizando una serie de contrasea. Devuelve la diferencia entre el sonido de las palabras en dos series de argumento segn se determine mediante la funcin SOUNDEX. El valor 4 significa que las series suenan igual.
ENCRYPT en la pgina 322 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 326 exclusiva comparada con cualquier ejecucin de la misma funcin. GETHINT en la pgina 327 Devuelve la contrasea sugerida, si se encuentra una. INSERT en la pgina 337 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).
Captulo 3. Funciones
261
LOWER (sensible al entorno Devuelve una serie en la que todos los caracteres se han local) en la pgina 354 convertido a minsculas utilizando las normas del estndar Unicode asociado con el entorno local especificado. LEFT en la pgina 343 Funcin escalar LOCATE en la pgina 349 LOWER en la pgina 353 LTRIM en la pgina 355 OCTET_LENGTH en la pgina 365 Devuelve los caracteres situados ms a la izquierda de una serie. Devuelve la posicin inicial de una serie contenida en otra serie. Devuelve una serie en la que todos los caracteres se han convertido a caracteres en minsculas. Elimina los blancos del principio de una expresin de serie. Devuelve la longitud de una expresin en octetos (bytes).
OVERLAY en la pgina 365 Devuelve una serie en la que, a partir de inicio en la serie-fuente especificada, se ha suprimido la longitud de las unidades de cdigo especificadas y se ha insertado serie-insercin. Funcin escalar POSITION en la pgina 369 Devuelve la posicin inicial del argumento2 en argumento1.
Funcin escalar POSSTR en Devuelve la posicin inicial de una serie contenida en otra la pgina 372 serie. REPEAT en la pgina 383 Devuelve una serie de caracteres compuesta por argumento1 repetido argumento2 veces.
REPLACE en la pgina 384 Sustituye todas las apariciones de argumento2 en argumento1 por argumento3. RIGHT en la pgina 387 RTRIM en la pgina 392 SOUNDEX en la pgina 398 SPACE en la pgina 399 STRIP en la pgina 400 Devuelve los caracteres situados ms a la derecha de una serie. Elimina los blancos del final de una expresin de serie. Devuelve un cdigo de 4 caracteres que representa el sonido de las palabras del argumento. Este resultado se puede comparar con el sonido de otras series. Devuelve una serie de caracteres formada por el nmero de blancos especificado. Elimina de una expresin de serie, los espacios en blanco iniciales o de cola o bien otros caracteres iniciales o de cola especificados. Devuelve una subserie de una serie. Devuelve una subserie de una serie. Devuelve una serie en la que uno o ms caracteres de una serie se han convertido en otros caracteres.
SUBSTR en la pgina 401 SUBSTRING en la pgina 403 Funcin escalar TRANSLATE en la pgina 417
262
UCASE (sensible al entorno local) en la pgina 423 UPPER en la pgina 424 UPPER (sensible al entorno local) en la pgina 424
Tabla 30. Funciones escalares diversas Funcin BITAND, BITANDNOT, BITOR, BITXOR y BITNOT en la pgina 289 Descripcin Estas funciones a nivel de bit operan en la representacin de complemento del dos del valor entero de los argumentos de entrada y devuelven el resultado como un correspondiente valor entero de base 10 en un tipo de datos basndose en el tipo de datos de los argumentos de entrada. Devuelve un valor de tipo BIGINT que representa el nmero de elementos de una matriz. Devuelve el primer argumento que no es nulo. Compara cada expresin2 especificada con la expresin1. Si expresin1 es igual a expresin2, o expresin1 y expresin2 son nulas, se devuelve el valor de la siguiente expresin-resultado. Si ninguna expresin2 coincide con expresin1, se devuelve el valor de expresin-else; de lo contrario, se devuelve un valor nulo. 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 324 de sucesos. GREATEST en la pgina 329 HEX en la pgina 331 IDENTITY_VAL_LOCAL en la pgina 334 LEAST en la pgina 343 LENGTH en la pgina 346 MAX en la pgina 356 Devuelve el valor mximo de un conjunto de valores. Devuelve una representacin hexadecimal de un valor. Devuelve el valor asignado ms reciente correspondiente a una columna de entidad. Devuelve el valor mnimo de un conjunto de valores. Devuelve la longitud de un valor. Devuelve el valor mximo de un conjunto de valores.
MAX_CARDINALITY en la Devuelve un valor de tipo BIGINT que representa el pgina 357 nmero mximo de elementos que puede contener una matriz.
Captulo 3. Funciones
263
REC2XML en la pgina 379 Devuelve una serie formateada codificada en XML que contiene nombres de columna y datos de columna. RID_BIT y RID en la pgina 386 La funcin escalar RID_BIT devuelve el identificador de una fila (RID) en un formato de serie de caracteres. La funcin escalar RID devuelve el RID de una fila en formato de entero largo. La funcin RID no se soporta en entornos de bases de datos particionadas. Se prefiere la funcin RID_BIT a la funcin RID. Devuelve un nombre no calificado de una tabla o vista, 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. Devuelve la parte correspondiente al nombre de esquema 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. 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. Devuelve el nombre no calificado del tipo de datos dinmico del argumento. Devuelve el nombre del esquema del tipo de datos dinmico del argumento. Devuelve el primer argumento que no es nulo.
Funciones agregadas
El argumento de una funcin agregada 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 el conjunto vaco, las funciones agregadas 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 el conjunto vaco, las funciones agregadas se aplican al conjunto vaco.
264
Funciones agregadas
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. Cuando se interpreta la clusula DISTINCT para los valores de coma flotante decimal que sean numricamente iguales, no se tiene en cuenta el nmero de dgitos significativos del valor. Por ejemplo, el nmero de coma flotante decimal 123.00 no es diferente del nmero de coma flotante decimal 123. La representacin del nmero devuelto de la consulta ser cualquiera de las representaciones que se encuentre (por ejemplo, 123.00 123). Si se especifica ALL implcita o explcitamente, no se eliminan los valores duplicados. Por compatibilidad con otras implementaciones de SQL, se puede especificar UNIQUE como sinnimo para DISTINCT en funciones agregadas. Se pueden utilizar expresiones en las funciones agregadas. Por ejemplo:
SELECT MAX(BONUS + 1000) INTO :TOP_SALESREP_BONUS FROM EMPLOYEE WHERE COMM > 5000
Las funciones agregadas se pueden calificar con un nombre de esquema (por ejemplo, SYSIBM.COUNT(*)).
ARRAY_AGG
ARRAY_AGG ( expresin , ASC ORDER BY clave-clasificacin DESC )
El esquema es SYSIBM. La funcin ARRAY_AGG agrega un conjunto de elementos a una matriz. El tipo de datos de la expresin debe ser un tipo de datos que pueda especificarse en una sentencia CREATE TYPE (matriz) (SQLSTATE 42884). Si se especifica clave-clasificacin, determina el orden de los elementos agregados en la matriz. Si no se especifica clave-clasificacin, el orden de los elementos de la matriz no ser determinante. Si no se especifica clave-clasificacin y se especifica ARRAY_AGG ms de una vez en la misma clusula SELECT, se utilizar el mismo orden de elementos de la matriz para cada resultado de ARRAY_AGG. Si una clusula SELECT tiene varias apariciones de XMLAGG o ARRAY_AGG que especifiquen clave-clasificacin, todas las claves de clasificacin debern ser idnticas (SQLSTATE 428GZ).
Captulo 3. Funciones
265
ARRAY_AGG
La funcin ARRAY_AGG slo puede especificarse en un procedimiento de SQL de los siguientes contextos especficos (SQLSTATE 42887): v La lista de seleccin de una sentencia SELECT INTO v La lista de seleccin de una seleccin completa de la definicin de un cursor que no pueda desplazarse v La lista de seleccin de una subconsulta escalar a la derecha de una sentencia SET ARRAY_AGG no puede utilizarse como parte de una funcin OLAP, la sentencia SELECT que utiliza ARRAY_AGG no puede contener una clusula ORDER BY o una clusula DISTINCT y la clusula SELECT o HAVING no pueden contener una subconsulta o llamar a una funcin SQL. Ejemplo: v Dado el siguiente DDL:
CREATE TYPE PHONELIST AS DECIMAL(10, 0)ARRAY[10] CREATE TABLE EMPLOYEE ( ID INTEGER NOT NULL, PRIORITY INTEGER NOT NULL, PHONENUMBER DECIMAL(10, 0), PRIMARY KEY(ID, PRIORITY))
Cree un procedimiento que utilice una sentencia SELECT INTO para devolver la lista priorizada de los nmeros de contacto en los que se puede contactar con un empleado.
CREATE PROCEDURE GETPHONENUMBERS (IN EMPID INTEGER, OUT NUMBERS PHONELIST) BEGIN SELECT ARRAY_AGG(PHONENUMBER ORDER BY PRIORITY) INTO NUMBERS FROM EMPLOYEE WHERE ID = EMPID; END
Cree un procedimiento que utilice una sentencia SET para devolver la lista de los nmeros de contacto de un empleado en orden aleatorio.
CREATE PROCEDURE GETPHONENUMBERS (IN EMPID INTEGER, OUT NUMBERS PHONELIST) BEGIN SET NUMBERS = (SELECT ARRAY_AGG(PHONENUMBER) FROM EMPLOYEE WHERE ID = EMPID); END
AVG
ALL AVG ( DISTINCT expresin )
266
AVG
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. v El resultado es DECFLOAT(34) si el argumento es DECFLOAT(n). 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. Cuando se interpreta la clusula DISTINCT para los valores de coma flotante decimal que sean numricamente iguales, no se tiene en cuenta el nmero de dgitos significativos del valor. Por ejemplo, el nmero de coma flotante decimal 123.00 no es diferente del nmero de coma flotante decimal 123. La representacin del nmero devuelto de la consulta ser cualquiera de las representaciones que se encuentre (por ejemplo, 123.00 123). 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.
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
267
CORRELATION
CORRELATION
CORRELATION ( expresin1 , expresin2 )
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. Si el argumento es de coma flotante decimal, el resultado es DECFLOAT(34); en caso contrario, el resultado es un nmero 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. CORR puede especificarse en lugar de CORRELATION. 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'
COUNT
ALL COUNT ( DISTINCT * expresin )
El esquema es SYSIBM.
268
COUNT
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, 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.)
COUNT_BIG
ALL COUNT_BIG ( DISTINCT * expresin )
El esquema es SYSIBM.
Captulo 3. Funciones
269
COUNT_BIG
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, 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 precisin 31 y 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 con fuente definidas por el usuario y la definicin de la va de acceso de SQL. Las siguientes series de sentencias muestran cmo crear una funcin con fuente 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 con fuente 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 PATH RICK, SYSTEM PATH; SELECT COUNT(*) FROM EMPLOYEE;
Observe que la funcin con fuente 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;
270
COUNT_BIG
Si la cuenta se efecta en una columna especfica, la funcin con fuente debe especificar el tipo de columna. Las sentencias siguientes crean una funcin con fuente que tomar cualquier columna CHAR como argumento y utilizar COUNT_BIG para realizar el recuento.
CREATE FUNCTION RICK.COUNT(CHAR()) RETURNS DOUBLE SOURCE SYSIBM.COUNT_BIG(CHAR()); SELECT COUNT(DISTINCT WORKDEPT) FROM EMPLOYEE;
COVARIANCE
COVARIANCE ( expresin1 , expresin2 )
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. Si el argumento es de coma flotante decimal, el resultado es DECFLOAT(34); en caso contrario, el resultado es un nmero 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. COVAR puede especificarse en lugar de COVARIANCE. 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'
Captulo 3. Funciones
271
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. El valor no es el de arriba.
da como resultado:
SALES_DATE ---------12/31/1995 12/31/1995 12/31/1995 12/31/1995 03/29/1996 03/29/1996 03/29/1996 03/29/1996 03/30/1996 03/30/1996 03/30/1996 03/30/1996 03/31/1996 03/31/1996 03/31/1996 03/31/1996 04/01/1996 04/01/1996 04/01/1996 04/01/1996 SALES_PERSON UNITS_SOLD DATE_GROUP SALES_GROUP --------------- ----------- ----------- ----------GOUNOT 1 0 0 LEE 6 0 0 LUCCHESSI 1 0 0 8 0 1 GOUNOT 11 0 0 LEE 12 0 0 LUCCHESSI 4 0 0 27 0 1 GOUNOT 21 0 0 LEE 21 0 0 LUCCHESSI 4 0 0 46 0 1 GOUNOT 3 0 0 LEE 27 0 0 LUCCHESSI 1 0 0 31 0 1 GOUNOT 14 0 0 LEE 25 0 0 LUCCHESSI 4 0 0 43 0 1 GOUNOT 50 1 0
272
GROUPING
LEE LUCCHESSI 91 14 155 1 1 1 0 0 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.
MAX
ALL MAX ( DISTINCT expresin )
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. El tipo de datos resultante de expresin no puede ser un LONG VARCHAR, LONG VARGRAPHIC, BLOB, CLOB, DBCLOB, 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.
Captulo 3. Funciones
273
MAX
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 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.
MIN
ALL MIN ( DISTINCT expresin )
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. El tipo de datos resultante de expresin no puede ser un LONG VARCHAR, LONG VARGRAPHIC, BLOB, CLOB, DBCLOB, 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'
274
MIN
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.
Funciones de regresin
REGR_AVGX REGR_AVGY REGR_COUNT REGR_INTERCEPT REGR_ICPT REGR_R2 REGR_SLOPE REGR_SXX REGR_SXY REGR_SYY ( expresin1 , expresin2 )
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 funciones restantes, si uno de los dos argumentos es DECFLOAT(n), el tipo de datos del
Captulo 3. Funciones
275
Funciones de regresin
resultado es DECFLOAT(34); en caso contrario, el tipo de datos del resultado es de coma flotante de precisin doble. Si cualquiera de los argumentos es un valor de coma flotante decimal especial, se aplicarn las normas para las operaciones aritmticas generales para la coma flotante decimal. Consulte el apartado General arithmetic operation rules for decimal floating-point (Operaciones aritmticas generales para coma flotante decimal) en Normas generales de operaciones aritmticas para coma flotante decimal en la pgina 172. 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) REGR_INTERCEPT(expresin1, expresin2) = AVG(expresin1) - REGR_SLOPE(expresin1, expresin2) * AVG(expresin2) REGR_R2(expresin1, expresin2) = POWER(CORRELATION(expresin1, expresin2), 2) si VARIANCE(expresin1)>0 REGR_R2(expresin1, expresin2) = 1 si 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.
276
Funciones de regresin
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: 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
Captulo 3. Funciones
277
Funciones de regresin
AVGBONUS: +8.33333333333333E+002 SXX: +2.96291666666667E+008 SYY: +8.66666666666667E+004 SXY: +5.06666666666667E+006
STDDEV
ALL STDDEV ( DISTINCT expresin )
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. Si el argumento es DECFLOAT(n), el resultado es DECFLOAT(n); en caso contrario, el 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. Cuando se interpreta la clusula DISTINCT para los valores de coma flotante decimal que sean numricamente iguales, no se tiene en cuenta el nmero de dgitos significativos del valor. Por ejemplo, el nmero de coma flotante decimal 123.00 no es diferente del nmero de coma flotante decimal 123. La representacin del nmero devuelto de la consulta ser cualquiera de las representaciones que se encuentre (por ejemplo, 123.00 123). 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'
278
SUM
SUM
ALL SUM ( DISTINCT expresin )
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. v El resultado es DECFLOAT(34) si el argumento es DECFLOAT(n). 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. Cuando se interpreta la clusula DISTINCT para los valores de coma flotante decimal que sean numricamente iguales, no se tiene en cuenta el nmero de dgitos significativos del valor. Por ejemplo, el nmero de coma flotante decimal 123.00 no es diferente del nmero de coma flotante decimal 123. La representacin del nmero devuelto de la consulta ser cualquiera de las representaciones que se encuentre (por ejemplo, 123.00 123). 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. 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 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'
Captulo 3. Funciones
279
VARIANCE
VARIANCE
ALL VARIANCE ( DISTINCT expresin )
El esquema es SYSIBM. La funcin VARIANCE devuelve la varianza de un conjunto de nmeros. Los valores del argumento deben ser nmeros. Si el argumento es DECFLOAT(n), el resultado es DECFLOAT(n); en caso contrario, el 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. Cuando se interpreta la clusula DISTINCT para los valores de coma flotante decimal que sean numricamente iguales, no se tiene en cuenta el nmero de dgitos significativos del valor. Por ejemplo, el nmero de coma flotante decimal 123.00 no es diferente del nmero de coma flotante decimal 123. La representacin del nmero devuelto de la consulta ser cualquiera de las representaciones que se encuentre (por ejemplo, 123.00 123). 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. VAR puede especificarse en lugar de VARIANCE. 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.
XMLAGG
XMLAGG ( expresin-XML , ASC ORDER BY clave-clasificacin DESC )
280
XMLAGG
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. Nota: 1. Soporte en 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.
SELECT XMLSERIALIZE( CONTENT XMLELEMENT( NAME "Department", XMLATTRIBUTES( E.WORKDEPT AS "name" ), XMLAGG( XMLELEMENT( NAME "emp", E.LASTNAME ) ORDER BY E.LASTNAME ) ) AS CLOB(110)
Captulo 3. Funciones
281
XMLAGG
) AS "dept_list" FROM EMPLOYEE E WHERE E.WORKDEPT IN ('C01','E21') GROUP BY WORKDEPT
XMLGROUP
La funcin XMLGROUP devuelve un valor XML con un nico nodo de documento XQuery que contiene un nodo de elemento de nivel superior. Esta es una expresin agregada que devolver un documento XML con una nica raz desde un grupo de filas en el que cada fila est correlacionada a un subelemento de fila.
, XMLGROUP ( expresin AS identificador-qname
) (1) OPTION ROW fila ROW nombre-fila ROOT conjuntofilas ROOT nombre-root AS ATTRIBUTES
El esquema es SYSIBM. El nombre de la funcin no puede especificarse como un nombre calificado. expresin El contenido de cada nodo de elemento XML generado (o el valor de cada atributo generado) se especifica mediante una expresin. El tipo de datos
282
XMLGROUP
expresin 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 identificador-qname. AS identificador-qname Especifica el nombre de elemento XML o nombre de atributo como identificador SQL. El identificador-qname debe tener el formato de un nombre de calificador XML o QName (SQLSTATE 42634). Para obtener ms informacin sobre los nombres vlidos, consulte 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 identificador-qname, expresin debe ser un nombre de columna (SQLSTATE 42703). El nombre de elemento o 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 QName. OPTION Especifica opciones adicionales para construir el valor XML. Si no se especifica ninguna clusula OPTION, se aplica el comportamiento por omisin. ROW nombre-fila Especifica el nombre del elemento al que est correlacionado cada fila. Si no se especifica esta opcin, el nombre de elemento por omisin es fila. ROOT nombre-root Especifica el nombre del nodo de elemento root. Si no se especifica esta opcin, el nombre de elemento root por omisin es conjuntofilas. AS ATTRIBUTES Especifica que cada expresin est correlacionada a un valor de atributo que tenga nombre de columna o identificador-qname que sirva como nombre de atributo. 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.
Notas
El comportamiento por omisin define una correlacin simple entre un conjunto de resultados y un valor XML. Se aplican algunas notas adicionales sobre el comportamiento de las funciones: v Por omisin, cada fila se transforma en un elemento XML denominado fila y cada columna se transforma en un elemento anidado en el que el nombre de columna sirve como nombre de elemento. v El comportamiento de manejo de nulos por omisin es NULL ON NULL. Un valor de NULL de una columna se correlaciona con la ausencia del subelemento. Si todos los valores de columna son NULL, no se generar ningn elemento de filas.
Captulo 3. Funciones
283
XMLGROUP
v El esquema de codificacin binario para los tipos de datos BLOB y FOR BIT DATA es la codificacin base64Binary. v Por omisin, los elementos que se corresponden con las filas de un grupo son hijos de un elemento root denominado conjuntofilas. v El orden de los subelementos de filas en el elemento root ser el mismo que el orden en el que se devuelven las filas en el conjunto de resultados de la consulta. v Un nodo de documento se aadir implcitamente al elemento root para hacer que el resultado de XML sea un documento XML con una sola raz bien formado.
Ejemplos
Suponga que existe la siguiente tabla T1 con las columnas de enteros C1 y C2 que contienen datos numricos almacenados en un formato relacional.
C1 C2 ----------- ----------1 2 2 1 4 record(s) selected.
v El siguiente ejemplo muestra un fragmento de salida y consulta XMLGroup con comportamiento por omisin, que utiliza un nico elemento de nivel superior para representar la tabla:
SELECT XMLGROUP(C1, C2)FROM T1 <conjuntofilas> <row> <C1>1</C1> <C2>2</C2> </fila> <row> <C2>2</C2> </fila> <row> <C1>1</C1> </fila> </rowset> 1 record(s) selected.
v El siguiente ejemplo muestra un fragmento de salida y consulta XMLGroup con correlacin cntrica de atributos. En vez de aparecer como elementos anidados como en el ejemplo anterior, los datos relacionales se correlacionan a los atributos de elementos:
SELECT XMLGROUP(C1, C2 OPTION AS ATTRIBUTES) FROM T1 <conjuntofilas> <row C1="1" C2="2"/> <row C2="2"/> <row C1="1"/> </rowset> 1 record(s) selected.
v El ejemplo siguiente muestra una consulta XMLGroup y un fragmento de salida con el elemento raz <rowset> por omisin sustituido por <document> y el elemento <row> por omisin sustituido por <entry>. Las columnas C1 y C2 se devuelven como elementos <column1> y <column2> y el conjunto de retorno se ordena por columna C1:
284
XMLGROUP
SELECT XMLGROUP( C1 AS "column1", C2 AS "column2" ORDER BY C1 OPTION ROW "entry" ROOT "document") FROM T1 <document> <entry> <column1>1</column1> <column2>2</column2> </entry> <entry> <column1>1</column1> </entry> <entry> <column2>2</column2> </entry> </document>
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.
ABS o ABSVAL
ABS ABSVAL ( expresin )
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.
Captulo 3. Funciones
285
ABS o ABSVAL
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)
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 numricos incorporado (excepto DECFLOAT). 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
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.
286
ASCII
El resultado de la funcin siempre es INTEGER. El resultado puede ser nulo; si el argumento es nulo, el resultado es el valor nulo.
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 incorporado (excepto DECFLOAT). 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.
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 numricos incorporado (excepto DECFLOAT). 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.
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.
Captulo 3. Funciones
287
ATAN2
El primer argumento y el segundo pueden ser de cualquier tipo de datos numricos incorporado (excepto DECFLOAT). 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.
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 numricos incorporado (excepto DECFLOAT). 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.
BIGINT
BIGINT ( expresin-numrica expresin-carcter expresin-fecha-hora )
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 grandes, 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
288
BIGINT
blancos iniciales y de cola y la serie resultante debe ajustarse a las normas 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-fecha-hora 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
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)
BITNOT
expresin
El esquema es SYSIBM. Estas funciones a nivel de bit operan en la representacin de complemento del dos del valor entero de los argumentos de entrada y devuelven el resultado como
Captulo 3. Funciones
289
Funcin BITAND
Descripcin Realiza una operacin AND a nivel de bit. Borra cualquier bit del primer argumento que est en el segundo argumento.
BITANDNOT
BITOR
Realiza una operacin OR a nivel de bit. Realiza una operacin OR exclusiva a nivel de bit.
BITXOR
BITNOT
Realiza una operacin NOT a Contrario del bit nivel de bit. correspondiente del argumento.
Los argumentos deben ser valores enteros representados por los tipos de datos SMALLINT, INTEGER, BIGINT o DECFLOAT. Los argumentos de tipo DECIMAL, REAL o DOUBLE se convierten en DECFLOAT. El valor se trunca a un nmero entero. Las funciones de manipulacin de bit pueden operar en un mximo de 16 bits para SMALLINT, 32 bits para INTEGER, 64 bits para BIGINT y 113 bits para DECFLOAT. El rango de valores DECFLOAT soportado incluye enteros de -2112 a 2112 -1 y los valores especiales tales como NaN o INFINITY no se soportan (SQLSTATE 42815). Si los dos argumentos tienen tipos de datos diferentes, el argumento que soporta menos bits se convierte en un valor con el tipo de datos del argumento que soporta ms bits. Esta conversin afecta a los bits que estn establecidos para valores negativos. Por ejemplo, -1 como un valor SMALLINT tiene 16 bits establecidos en 1, que, cuando se transforma en un valor INTEGER, tiene 32 bits establecidos en 1. El resultado de las funciones con dos argumentos tiene el tipo de datos del argumento que est ms arriba en la lista de prioridades de tipo de datos para promocin. Si alguno de los argumentos es DECFLOAT, el tipo de datos del resultado es DECFLOAT(34). Si el argumento puede ser nulo, el resultado puede ser nulo; si cualquier argumento es nulo, el resultado es el valor nulo. El resultado de la funcin BITNOT tiene el mismo tipo de datos que el argumento de entrada, excepto en que DECIMAL, REAL, DOUBLE o DECFLOAT(16) devuelve DECFLOAT(34). Si el argumento puede ser nulo, el resultado puede ser nulo; si el argumento es nulo, el resultado es el valor nulo. Debido a las diferencias en la representacin interna entre los tipos de datos y en las diferentes plataformas de hardware, la utilizacin de funciones (tales como
290
Devolver todos los elementos para los que se ha establecido el cuarto y sexto bit de propiedad.
SELECT ITEMID FROM ITEM WHERE BITAND(PROPERTIES, 40) <> 0
v Conmutar todos los bits de un valor de 16 bits que slo tiene activo el segundo bit.
VALUES BITNOT(CAST(2 AS SMALLINT))
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.
Captulo 3. Funciones
291
BLOB
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%')
CARDINALITY
CARDINALITY ( expresin-matriz )
El esquema es SYSIBM. La funcin CARDINALITY devuelve un valor del tipo BIGINT que representa el nmero de elementos de una matriz. El argumento puede ser una variable de procedimiento de SQL o parmetro de un tipo de datos de matriz o una especificacin de conversin de un marcador de parmetro para un tipo de datos de matriz. El valor devuelto por la funcin CARDINALITY es el subndice ms alto para el que la matriz tiene un elemento asignado. Esto incluye elementos a los que se les ha asignado el valor nulo. La funcin devuelve 0 si la matriz est vaca. El resultado puede ser nulo; si el argumento es nulo, el resultado es el valor nulo. Ejemplo: Suponga que el tipo INT_ARRAY se define como:
CREATE TYPE INT_ARRAY AS INTEGER ARRAY[100]
La sentencia SET del siguiente fragmento de cdigo SQL PL asigna el valor 4 a la variable LEN:
BEGIN DECLARE LEN INTEGER; DECLARE MYARRAY INT_ARRAY; SET INT_ARRAY = ARRAY[0,0,1,1]; SET LEN = CARDINALITY(MYARRAY); END
292
CEILING
CEILING
CEILING ( expresin )
El esquema es SYSIBM. (La versin SYSFUN de la funcin CEILING 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 si el argumento no es un nmero de coma flotante decimal y la base de datos est configurada con DFT_SQLMATHWARN establecido en YES; el resultado es el valor nulo si el argumento es nulo. CEIL puede especificarse en lugar de CEILING.
CHAR
De caracteres a caracteres:
CHAR ( expresin-carcter , entero )
De entero a caracteres:
CHAR ( expresin-entero )
De decimal a caracteres:
CHAR ( expresin-decimal , carcter-decimal )
Captulo 3. Funciones
293
CHAR
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 v Un nmero de coma flotante decimal, si el primer argumento es un DECFLOAT 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
294
CHAR
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-fecha-hora 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). 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).
hora
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). 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.
Captulo 3. Funciones
295
CHAR
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 de 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 de 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 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. De coma flotante decimal a caracteres expresin-coma-flotante-decimal Una expresin que devuelve un valor que es de un tipo de datos de coma flotante decimal (DECFLOAT). 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 de punto (.). El resultado es la representacin en el formato de una serie de caracteres de longitud fija del argumento. La longitud del resultado es 42. Si el
296
CHAR
nmero de caracteres del resultado es menor que 42, el resultado se rellena por la derecha con caracteres blancos hasta una longitud de 42. 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)
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 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)
Captulo 3. Funciones
297
CHARACTER_LENGTH
CHARACTER_LENGTH
CHARACTER_LENGTH CHAR_LENGTH ( expresin USING 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 bit, 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 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'
298
CHARACTER_LENGTH
SELECT CHARACTER_LENGTH(NAME, OCTETS) FROM T1 WHERE NAME = 'Jrgen' SELECT LENGTH(NAME) FROM T1 WHERE NAME = 'Jrgen'
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:
& UTF-8 UTF-16BE UTF-32BE XF09D849E N X4E ~ XCC83 X0303 X00000303 A X41 X0041 X00000041 B X42 X0042 X00000042
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
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 entre 0 y 255; de lo contrario, el valor de retorno es el carcter que tiene el valor de cdigo ASCII correspondiente a 255. El resultado de la funcin es CHAR(1). El resultado puede ser nulo; si el argumento es nulo, el resultado es el valor nulo.
CLOB
CLOB ( expresin-serie-caracteres , entero )
Captulo 3. Funciones
299
CLOB
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 estar 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.
COALESCE
COALESCE
expresin
expresin
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
300
COLLATION_KEY_BIT
COLLATION_KEY_BIT
COLLATION_KEY_BIT ( expresin-serie , nombre-clasificacin , longitud )
El esquema es SYSIBM. La funcin COLLATION_KEY_BIT devuelve una serie VARCHAR FOR BIT DATA que representa la clave de clasificacin de expresin-serie en el nombre-clasificacin especificado. En los resultados de COLLATION_KEY_BIT para dos series se pueden comparar los binarios para determinar el orden en el nombre-clasificacin especificado. Para que la comparacin sea significativa, los resultados utilizados deben ser del mismo nombre-clasificacin. expresin-serie Expresin que devuelve una serie CHAR, VARCHAR, GRAPHIC o VARGRAPHIC para la que se debe determinar la clave de clasificacin. Si expresin-serie es CHAR o VARCHAR, la expresin no debe ser FOR BIT DATA (SQLSTATE 429BM). Si expresin-serie no est en UTF-16, esta funcin realiza la conversin de pgina de cdigos de expresin-serie a UTF-16. Si el resultado de la conversin de pgina de cdigos contiene como mnimo un carcter de sustitucin, esta funcin devolver una clave de clasificacin de la serie UTF-16 con el carcter o los caracteres de sustitucin y el distintivo de aviso SQLWARN8 de SQLCA se establecer en W. nombre-clasificacin Constante de tipo carcter que especifica la clasificacin a utilizar al determinar la clave de clasificacin. el valor de nombre-clasificacin no es sensible a las maysculas y minsculas y debe ser una de las clasificaciones basadas en algoritmos de clasificacin Unicode de Internationalization Guide o clasificaciones segn el idioma para datos Unicode de Internationalization Guide (SQLSTATE 42616). longitud Expresin que especifica el atributo de longitud del resultado en bytes. Si se especifica, longitud debe ser un entero entre 1 y 32.672 (SQLSTATE 42815). Si no se especifica un valor para longitud, la longitud del resultado se determina del modo siguiente:
Tabla 32. Determinacin de la longitud del resultado Tipo de datos del argumento de la serie CHAR(n) o VARCHAR(n) GRAPHIC(n) o VARGRAPHIC(n) Longitud de tipo de datos de resultado Mnimo de 12n bytes y 32.672 bytes Mnimo de 12n bytes y 32.672 bytes
Independientemente de si se especifica longitud, si la longitud de la clave de clasificacin es mayor que la longitud del tipo de datos de resultado, se devuelve un error (SQLSTATE 42815). La longitud de resultado real de la clave de clasificacin es aproximadamente seis veces la longitud de expresin-serie despus de que sta se haya convertido a UTF-16.
Captulo 3. Funciones
301
COLLATION_KEY_BIT
Si expresin-serie es una serie vaca, el resultado es una clave de clasificacin vlida que puede tener una longitud distinta de cero. 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: La consulta siguiente ordena los empleados por los apellidos utilizando la clasificacin segn idioma para alemn de la pgina de cdigos 923:
SELECT FIRSTNME, LASTNAME FROM EMPLOYEE ORDER BY COLLATION_KEY_BIT (LASTNAME, 'SYSTEM_923_DE')
La siguiente consulta utiliza una comparacin culturalmente correcta para buscar los departamentos de empleados de la provincia de Quebec:
SELECT E.WORKDEPT FROM EMPLOYEE AS E INNER JOIN SALES AS S ON COLLATION_KEY_BIT(E.LASTNAME, 'UCA400R1_LFR') = COLLATION_KEY_BIT(S.SALES_PERSON, 'UCA400R1_LFR') WHERE S.REGION = 'Quebec'
COMPARE_DECFLOAT
COMPARE_DECFLOAT ( expresin1 , expresin2 )
El esquema es SYSIBM. La funcin COMPARE_DECFLOAT devuelve un valor SMALLINT que indica si los dos argumentos son iguales o desordenados o si un argumento es superior a otro. expresin1 Una expresin que devuelve un valor de cualquier tipo de datos numrico interno. Si el argumento no es DECFLOAT(34), se convierte de forma lgica a DECFLOAT(34) para procesarse. expresin2 Una expresin que devuelve un valor de cualquier tipo de datos numrico interno. Si el argumento no es DECFLOAT(34), se convierte de forma lgica a DECFLOAT(34) para procesarse. El valor de expresin1 se compara con el valor de expresin2 y el resultado se devuelve de acuerdo con las normas siguientes: v Si ambos argumentos son finitos, la comparacin ser algebraica y seguir el procedimiento para la resta de coma flotante decimal. Si la diferencia es exactamente cero con cualquiera de los dos signos, los argumentos son iguales. Si una diferencia diferente a cero es positiva, el primer argumento es mayor que el segundo argumento. Si una diferencia diferente a cero es negativa, el primer argumento es menor que el segundo. v El cero positivo y el cero negativo se comparan como iguales. v El infinito positivo se compara como igual al infinito positivo. v El infinito positivo se compara como superior a cualquier nmero finito. v El infinito negativo se compara como igual al infinito negativo. v El infinito negativo se compara como inferior a cualquier nmero finito.
302
COMPARE_DECFLOAT
v La comparacin numrica es exacta. El resultado se determina para operandos finitos como si el rango y la precisin fueran ilimitados. No se puede producir ninguna condicin de desbordamiento o subdesbordamiento. v Si uno de los dos argumentos es NaN o sNaN (positivo o negativo), el resultado est desordenado. El valor de resultado es el siguiente: v 0 si los argumentos son exactamente iguales v 1 si expresin1 es menor que expresin2 v 2 si expresin1 es mayor que expresin2 v 3 si los argumentos no estn ordenados El resultado de la funcin es un valor SMALLINT. Si el argumento puede ser nulo, el resultado puede ser nulo; si cualquier argumento es nulo, el resultado es el valor nulo. Ejemplos: v Los ejemplos siguientes muestran los valores que devuelve la funcin COMPARE_DECFLOAT, si se da una variedad de valores de coma flotante decimal de entrada:
COMPARE_DECFLOAT(DECFLOAT(2.17), DECFLOAT(2.17)) = 0 COMPARE_DECFLOAT(DECFLOAT(2.17), DECFLOAT(2.170)) = 2 COMPARE_DECFLOAT(DECFLOAT(2.170), DECFLOAT(2.17)) = 1 COMPARE_DECFLOAT(DECFLOAT(2.17), DECFLOAT(0.0)) = 2 COMPARE_DECFLOAT(INFINITY,INFINITY) = 0 COMPARE_DECFLOAT(INFINITY,-INFINITY) = 2 COMPARE_DECFLOAT(DECFLOAT(-2),INFINITY) = 1 COMPARE_DECFLOAT(NAN,NAN) = 3 COMPARE_DECFLOAT(DECFLOAT(-0.1),SNAN) = 3
CONCAT
(1) CONCAT ( expresin1 , expresin2 )
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.
COS
COS ( expresin )
El esquema es SYSIBM. (La versin SYSFUN de la funcin COS contina estando disponible).
Captulo 3. Funciones
303
COS
Devuelve el coseno del argumento, donde el argumento es un ngulo expresado en radianes. El argumento puede ser de cualquier tipo numrico incorporado (excepto DECFLOAT). 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.
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 numricos incorporado (excepto DECFLOAT). 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.
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 incorporado (excepto DECFLOAT). 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.
304
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. 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: SELECT DATAPARTITIONNUM (EMPNO) v
FROM EMPLOYEE
Para convertir un nmero de secuencia devuelto por DATAPARTITIONNUM (por ejemplo, 0) en un nombre de particin de datos que se pueda utilizar en otras sentencias de SQL (como por ejemplo, ALTER TABLE...DETACH PARTITION), puede consultar la vista de catlogo SYSCAT.DATAPARTITIONS. Incluya el valor de SEQNO obtenido de DATAPARTITIONNUM en la clusula WHERE, tal como se muestra en el ejemplo siguiente.
SELECT DATAPARTITIONNAME FROM SYSCAT.DATAPARTITIONS WHERE TABNAME = 'EMPLOYEE' AND SEQNO = 0
DATE
DATE ( expresin )
Captulo 3. Funciones
305
DATE
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 normas 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)
DAY
DAY ( expresin )
El esquema es SYSIBM.
306
DAY
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 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 normas 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 al da del valor, que es un entero entre 1 y 31. v Si el argumento es una duracin de fecha o duracin de 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)
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.
Captulo 3. Funciones
307
DAYNAME
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.
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.
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.
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.
308
DAYOFYEAR
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.
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
309
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 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.
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.
310
DBPARTITIONNUM
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.
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))
Captulo 3. Funciones
311
DECFLOAT
DECFLOAT
De numrico a coma flotante decimal::
, DECFLOAT ( expresin-numrica , 16 34 )
El esquema es SYSIBM. La funcin DECFLOAT devuelve una representacin de coma flotante decimal de un nmero o representacin de serie de un nmero. expresin-numrica Una expresin que devuelve un valor de cualquier tipo de datos numrico interno. expresin-serie Una expresin que devuelve un valor de serie de caracteres de longitud no mayor que la longitud mxima de una constante de caracteres (4000 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 normas para formar una constante de coma flotante decimal, de coma flotante, decimal, de entero SQL (SQLSTATE 22018) y no debe tener ms de 42 bytes (SQLSTATE 42820).. 34 16 Especifica el nmero de dgitos de precisin para el resultado. El valor por omisin es 34. 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 El resultado es el mismo nmero que sera el resultado de CAST(expresin-serie AS DECFLOAT(n)) o CAST(expresin-numrica AS DECFLOAT(n)). Los blancos iniciales o de cola se eliminan de la serie. El resultado de la funcin es un nmero de coma flotante decimal con el nmero de dgitos de precisin especificado de forma implcita o explcita. 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 es necesario, la fuente se redondea a la precisin del destino. El registro especial CURRENT DECFLOAT ROUNDING MODE determina la modalidad de redondeo.
312
DECFLOAT
Nota: Para aumentar la portabilidad de las aplicaciones, utilice la especificacin CAST. Nota: Todos los valores numricos se interpretan como constantes de coma flotante, decimal o entero y despus convertirse a la coma flotante decimal. El uso de una constante de coma flotante puede dar como resultado un redondeo de errores y por tanto se desaconseja vivamente. En su lugar, utilice la serie para la versin de coma flotante decimal de la funcin DECFLOAT. Ejemplo: v Utilice la funcin DECFLOAT a fin de forzar que se devuelva un tipo de datos DECFLOAT en una lista de 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, DECFLOAT(EDLEVEL,16) FROM EMPLOYEE
DECIMAL
De numrico a decimal :
DECIMAL ( expresin-numrica ) , precisin-entero , entero-escala
De carcter a decimal:
DECIMAL ( expresin-carcter ) , precisin-entero , entero-escala , carcter-decimal
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
Captulo 3. Funciones
313
DECIMAL
v Una representacin de serie de caracteres de un nmero de coma flotante decimal 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. precisin-entero 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 31 para coma flotante decimal 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 p-s. 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 normas 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. precisin-entero 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.
314
DECIMAL
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 mayor que p-s (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-fecha-hora 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. Esta 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 p-s (SQLSTATE 22003). DEC puede especificarse en lugar de DECIMAL. 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
Captulo 3. Funciones
315
DECIMAL
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. 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.
DECIMAL(argumentos) DECIMAL(2000-03-21) DECIMAL(2000-03-21, 10) DECIMAL(2000-03-21, 12, 2) DECIMAL(12:02:21) DECIMAL(12:02:21, 10) DECIMAL(12:02:21, 10, 2) DECIMAL(2000-03-2112.02.21.123456) DECIMAL(2000-03-2112.02.21.123456, 23) DECIMAL(2000-03-2112.02.21.123456, 23, 4) Precisin y escala (8,0) (10,0) (12,2) (6,0) (10,0) (10,2) (20, 6) (23, 6) (23, 4) Resultado 20000321 20000321 20000321.00 120221 120221 120221.00 20000321120221.123456 20000321120221.123456 20000321120221.1234
316
DECODE
DECODE
DECODE ( expresin1 , expresin2 , expresin-resultado , expresin-else )
El esquema es SYSIBM. La funcin DECODE compara cada expresin2 con la expresin1. Si expresin1 es igual a expresin2, o expresin1 y expresin2 son nulas, se devuelve el valor de la siguiente expresin-resultadoSi ninguna expresin2 coincide con expresin1, se devuelve el valor de expresin-else; de lo contrario, se devuelve un valor nulo. La funcin DECODE es similar a la expresin CASE excepto en el manejo de los valores nulos: v Un valor nulo de expresin1 coincidir con un valor nulo correspondiente de expresin2. v Si se utiliza la palabra clave NULL como argumento de la funcin DECODE, se deber convertir en un tipo de datos apropiado. Las normas para determinar el tipo de resultado de una expresin DECODE se basan en la expresin CASE correspondiente. Ejemplos: La expresin DECODE:
DECODE (c1, 7, 'a', 6, 'b', 'c')
donde los valores de c1, var1 y var2 pueden ser valores nulos, obtiene el mismo resultado que la expresin CASE siguiente:
CASE WHEN c1 = var1 OR (c1 IS NULL AND var1 IS NULL) THEN 'a' WHEN c1 = var2 OR (c1 IS NULL AND var2 IS NULL) THEN 'b' ELSE NULL END
Captulo 3. Funciones
317
DECODE
SELECT ID, CASE WHEN STATUS = 'A' THEN 'Accepted' WHEN STATUS = 'D' THEN 'Denied' WHEN STATUS IS NULL THEN 'Unknown' ELSE 'Other' END FROM CONTRACTS
DECRYPT_BIN y DECRYPT_CHAR
DECRYPT_BIN DECRYPT_CHAR ( datos-cifrados , 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.
318
DECRYPT_BIN y DECRYPT_CHAR
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;
DEGREES
DEGREES ( expresin )
El esquema es SYSIBM. (La versin SYSFUN de la funcin DEGREES contina estando disponible.) La funcin DEGREES devuelve el nmero de grados del argumento, el cual es un ngulo expresado en radianes. El argumento puede ser de cualquier tipo de datos numrico interno. Si el argumento es de coma flotante decimal, la operacin se realiza como coma flotante decimal; en caso contrario, el argumento se convierte a coma flotante de precisin doble para que la procese la funcin. Si el argumento es DECFLOAT(n), el resultado es DECFLOAT(n); en caso contrario, el resultado 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. Ejemplo: v Supongamos que RAD es una variable del lenguaje principal DECIMAL(4,3) con un valor de 3,142.
VALUES DEGREES(:RAD)
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.
Captulo 3. Funciones
319
DEREF
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
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 y que no superen los 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. La funcin interpreta los datos que se le pasan como si se tratase de caracteres ASCII, aunque la codificacin sea UTF-8. 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'))
En la primera fila, las palabras tienen el mismo resultado de SOUNDEX, mientras que en la segunda fila las palabras slo tienen algn parecido.
320
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.
DOUBLE
De numrico a doble :
DOUBLE FLOAT DOUBLE_PRECISION ( expresin-numrica )
Captulo 3. Funciones
321
DOUBLE
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 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
ENCRYPT
ENCRYPT ( expresin-serie-datos , expresin-serie-contrasea , expresin-serie-indicacin )
322
ENCRYPT
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: v Algoritmo de cifrado: El algoritmo de cifrado interno es la cifra de bloque RC2 con relleno; la clave secreta de 128 bits se deriva de la contrasea utilizando un resumen 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).
Captulo 3. Funciones
323
ENCRYPT
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');
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 1 El supervisor de sucesos est inactivo. 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:
324
EVENT_MON_STATE
SELECT EVMONNAME, CASE WHEN EVENT_MON_STATE(EVMONNAME) = 0 THEN 'Inactive' WHEN EVENT_MON_STATE(EVMONNAME) = 1 THEN 'Active' END FROM SYSCAT.EVENTMONITORS
EXP
EXP ( expresin )
El esquema es SYSIBM. (La versin SYSFUN de la funcin EXP contina estando disponible.) La funcin EXP devuelve un valor que es la base del logaritmo natural (e) elevada a la potencia especificada por el argumento. Las funciones EXP y LN son operaciones opuestas. El argumento debe ser una expresin que devuelve un valor de cualquier tipo de datos numrico interno. Si el argumento es de coma flotante decimal, la operacin se realiza como coma flotante decimal; en caso contrario, el argumento se convierte a coma flotante de precisin doble para que la procese la funcin. Si el argumento es DECFLOAT(n), el resultado es DECFLOAT(n); en caso contrario, el resultado 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. Ejemplo: v Supongamos que E es una variable del lenguaje principal DECIMAL(10,9) con un valor de 3,453789832.
VALUES EXP(:E)
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.
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.
Captulo 3. Funciones
325
FLOOR
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 si el argumento no es un nmero de coma flotante decimal y 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 Utilice la funcin FLOOR para truncar los dgitos que haya a la derecha de la coma decimal.
SELECT FLOOR(SALARY) FROM EMPLOYEE
GENERATE_UNIQUE
GENERATE_UNIQUE ( )
El esquema es SYSIBM. La funcin GENERATE_UNIQUE devuelve una serie de caracteres de datos de bit 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 fecha y 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.
326
GENERATE_UNIQUE
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 bit.
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', 'Update entry...'), (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.
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', 'Update entry 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.
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
Captulo 3. Funciones
327
GETHINT
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;
GRAPHIC
De grfico a grfico:
GRAPHIC ( expresin-grfica , entero )
De carcter a grfico:
GRAPHIC ( expresin-carcter )
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 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 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
328
GRAPHIC
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 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-fecha-hora 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). 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).
hora
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.
GREATEST
GREATEST
expresin
expresin
Captulo 3. Funciones
329
GREATEST
El esquema es SYSIBM. La funcin GREATEST devuelve el valor mximo de un conjunto de valores. Los argumentos deben ser compatibles y cada argumento debe ser una expresin que devuelve un valor de cualquier tipo de datos distinto de ARRAY, LOB, LONG VARCHAR, LONG VARGRAPHIC, XML, un tipo diferenciado basado en cualquiera de estos tipos o un tipo estructurado (SQLSTATE 42815). Esta funcin no puede utilizarse como una funcin fuente cuando se crea una funcin definida por el usuario. Dado que esta funcin acepta cualquier tipo de datos compatible como argumento, no es necesario crear signaturas adicionales para soportar tipos diferenciados definidos por el usuario. El argumento seleccionado se convierte, si es necesario, a los atributos del resultado. Los atributos del resultado los determinan todos los operandos basndose en las normas de los tipos de datos de resultado. El resultado de la funcin es el valor de argumento ms grande. Si como mnimo un argumento puede ser nulo, el resultado puede ser nulo; si cualquier argumento es nulo, el resultado es el valor nulo. La funcin escalar GREATEST es sinnimo de la funcin escalar MAX. Ejemplos: Suponga que la tabla T1 contiene tres columnas C1, C2 y C3 con los valores 1, 7 y 4, respectivamente. La consulta:
SELECT GREATEST (C1, C2, C3) FROM T1
devuelve 7. Si la columna C3 tiene un valor de NULL en lugar de 4, la misma consulta devuelve NULL.
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
330
HASHEDVALUE
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
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))
HEX
HEX ( expresin )
El esquema es SYSIBM. La funcin HEX devuelve una representacin hexadecimal de un valor como una serie de caracteres.
Captulo 3. Funciones
331
HEX
El argumento puede ser una expresin que sea un valor de cualquier tipo de datos incorporados 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. 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.
332
HEX
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 X42. 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.
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 normas 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
Captulo 3. Funciones
333
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 para una columna de identidad, donde la asignacin se ha producido como resultado de una sentencia INSERT 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 operacin de insercin 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 operacin de insercin. 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 operacin de insercin 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. 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.
334
IDENTITY_VAL_LOCAL
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 la invocacin de la funcin IDENTITY_VAL_LOCAL desde la accin activada de un activador de insercin posterior (after) es el valor asignado a una columna de identidad de la tabla identificada en la operacin de insercin 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 (C1 DECIMAL(15,0) GENERATED BY DEFAULT AS IDENTITY (START WITH 10), C2 INTEGER)
Captulo 3. Funciones
335
IDENTITY_VAL_LOCAL
INSERT INTO T1 (C2) VALUES (5) INSERT INTO T1 (C2) VALUES (6) SELECT * FROM T1
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
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 operacin de insercin activada inserta una fila en la tabla EMP_ACT. La sentencia utiliza una variable de transicin activadora para la columna EMPNO de la tabla EMPLOYEE para indicar que el valor de identidad de 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 obtener el valor asignado a la columna EMPNO de la tabla EMPLOYEE, ya que no
336
IDENTITY_VAL_LOCAL
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 operacin de insercin en la tabla EMP_ACT tambin hace que se genere un nuevo valor de identidad para la columna ACNT_NUM. La segunda operacin de insercin activada inserta una fila en la tabla ACCT_LOG. La 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 operacin de insercin 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 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.
INSERT
INSERT ( serie-fuente , inicio , longitud , serie-insercin , CODEUNITS16 CODEUNITS32 OCTETS )
El esquema es SYSIBM. La versin SYSFUN de la funcin INSERT contina estando disponible. La funcin INSERT devuelve una serie donde, a partir de inicio en serie-fuente, se han seleccionado longitud bytes y se ha insertado serie-insercin.
Captulo 3. Funciones
337
INSERT
La funcin INSERT es idntica a la funcin OVERLAY, excepto en que el argumento de longitud es obligatorio. serie-fuente Expresin que especifica la serie fuente. La expresin debe devolver un valor que sea un tipo de datos de serie grfica o de caracteres incorporado (SQLSTATE 22011). inicio Expresin que devuelve un valor entero. El valor entero especifica el punto de partida en la serie fuente donde debe empezar la supresin de bytes y la insercin de otra serie. El valor entero debe estar entre 1 y la longitud de serie-fuente ms uno (SQLSTATE 42815). Si se especifica OCTETS y el resultado son datos grficos, el valor debe ser un nmero impar entre 1 y el doble del atributo de longitud de serie-fuente ms uno (SQLSTATE 428GC). longitud Expresin que especifica el nmero de unidades de cdigo (en las unidades de serie especificadas) que se deben suprimir de la serie fuente, a partir de la posicin identificada por inicio. El valor debe estar entre 0 y la longitud de serie-fuente, expresado en unidades que se especifiquen implcita o explcitamente (SQLSTATE 22011). Si se especifica OCTETS y el resultado son datos grficos, el valor debe ser un nmero par entre 0 y el doble del atributo de longitud de serie-fuente (SQLSTATE 428GC). serie-insercin Expresin que especifica la serie que se debe insertar en serie-fuente, a partir de la posicin identificada por inicio. La expresin debe devolver un valor que sea un tipo de datos de serie grfica o de caracteres incorporado compatible con serie-fuente (SQLSTATE 22011). CODEUNITS16, CODEUNITS32 u OCTETS Especifica la unidad de la serie de inicio y longitud. CODEUNITS16 especifica que inicio y longitud se expresan en unidades de cdigo UTF-16 de 16 bits. CODEUNITS32 especifica que inicio y longitud se expresan en unidades de cdigo UTF-32 de 32 bits. OCTETS especifica que inicio y longitud se expresan en bytes. Si la unidad de serie se especifica como CODEUNITS16 o CODEUNITS32 y el resultado es una serie binaria o datos de bit, se devuelve un error (SQLSTATE 428GC). Si la unidad de serie se especifica como OCTETS y serie-insercin y serie-fuente son series binarias, se devuelve un error (SQLSTATE 42815). Si la unidad de serie se especifica como OCTETS, la operacin se realiza en la pgina de cdigos de la serie-fuente. 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 longitud se expresan en unidades de dos bytes; de lo contrario, se expresan en bytes. Para obtener ms informacin sobre CODEUNITS16, CODEUNITS32 y OCTETS, consulte el apartado Unidades de serie en funciones incorporadas en Series de caracteres. El tipo de datos del resultado depende de los tipos de datos de serie-fuente y serie-insercin, como se muestra en la tabla siguiente de combinaciones de tipos soportadas.
338
INSERT
Tabla 33. Tipo de datos del resultado como funcin de los tipos de datos de serie-fuente y serie-insercin serie-fuente CHAR o VARCHAR GRAPHIC o VARGRAPHIC CLOB DBCLOB CHAR o VARCHAR CHAR FOR BIT DATA o VARCHAR FOR BIT DATA serie-insercin CHAR o VARCHAR GRAPHIC o VARGRAPHIC CHAR, VARCHAR o CLOB GRAPHIC, VARGRAPHIC o DBCLOB CHAR FOR BIT DATA o VARCHAR FOR BIT DATA Resultado VARCHAR VARGRAPHIC CLOB DBCLOB VARCHAR FOR BIT DATA
VARCHAR FOR BIT DATA CHAR, VARCHAR, CHAR FOR BIT DATA o VARCHAR FOR BIT DATA
Slo para bases de datos Unicode: CHAR o VARCHAR GRAPHIC o VARGRAPHIC CLOB DBCLOB GRAPHIC o VARGRAPHIC CHAR o VARCHAR GRAPHIC, VARGRAPHIC o DBCLOB CHAR, VARCHAR o CLOB VARCHAR VARGRAPHIC CLOB DBCLOB
Una serie-fuente puede tener una longitud de 0; en este caso, inicio debe ser 1 y longitud debe ser 0 (como lo implican los vnculos para inicio y longitud descritos ms arriba) y el resultado de la funcin es una copia de la serie-insercin. Una serie-insercin tambin puede tener una longitud de 0. Esto tiene el efecto de suprimir las unidades de cdigo de las posiciones inicio a inicio + longitud - 1 de la serie-fuente. El atributo de longitud del resultado es el atributo de longitud de serie-fuente ms el atributo de longitud de serie-insercin. La longitud real del resultado es A1 MIN((A1 - V2 + 1), V3) + A4, donde: v A1 es la longitud real de serie-fuente v V2 es el valor de inicio v V3 es el valor de longitud v A4 es la longitud real de serie-insercin Si la longitud real de la serie de resultado excede el mximo del tipo de datos de retorno, se devuelve un error (SQLSTATE 54006). 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 Cree las series INSISTING, INSISERTING e INSTING a partir de la serie INSERTING insertando texto en medio del texto existente.
SELECT INSERT('INSERTING',4,2,'IS'), INSERT('INSERTING',4,0,'IS'), INSERT('INSERTING',4,2,'') FROM SYSIBM.SYSDUMMY1
Captulo 3. Funciones
339
INSERT
v Cree las series XXINSERTING, XXNSERTING, XXSERTING y XXERTING a partir de la serie INSERTING insertando texto antes del texto existente, utilizando 1 como punto de partida.
SELECT INSERT('INSERTING',1,0,'XX'), INSERT('INSERTING',1,1,'XX'), INSERT('INSERTING',1,2,'XX'), INSERT('INSERTING',1,3,'XX') FROM SYSIBM.SYSDUMMY1
v Cree la serie ABCABCXX a partir de la serie ABCABC insertando texto despus del texto existente. Dado que la serie fuente tiene una longitud de 6 caracteres, establezca la posicin inicial en 7 (uno ms la longitud de la serie fuente).
SELECT INSERT('ABCABC',7,0,'XX') FROM SYSIBM.SYSDUMMY1
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:
& UTF-8 UTF-16BE XF09D849E N X4E ~ XCC83 X0303 A X41 X0041 B X42 X0042
XD834DD1E X004E
Supongamos que las variables UTF8_VAR y UTF16_VAR contienen las representaciones de la serie en UTF-8 y UTF-16BE respectivamente. Utilice la funcin INSERT para insertar una C en la serie Unicode &N~AB.
SELECT INSERT(UTF8_VAR, 1, 4, 'C', CODEUNITS16), INSERT(UTF8_VAR, 1, 4, 'C', CODEUNITS32), INSERT(UTF8_VAR, 1, 4, 'C', OCTETS) FROM SYSIBM.SYSDUMMY1
340
INTEGER
INTEGER
INTEGER INT ( expresin-numrica expresin-carcter 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 normas 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.
Captulo 3. Funciones
341
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)
JULIAN_DAY
JULIAN_DAY ( expresin )
El esquema es SYSFUN. Devuelve un valor entero que representa el nmero de das desde el 1 de enero de 4713 AC (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.
LCASE
LCASE ( expresin-serie )
El esquema es SYSIBM. La funcin LCASE devuelve una serie en la que todos los caracteres SBCS se han convertido a minsculas. LCASE es sinnimo de LOWER.
El esquema es SYSIBM.
342
LEAST
LEAST
expresin
expresin
El esquema es SYSIBM. La funcin LEAST devuelve el valor mnimo de un conjunto de valores. Los argumentos deben ser compatibles y cada argumento debe ser una expresin que devuelve un valor de cualquier tipo de datos distinto de ARRAY, LOB, LONG VARCHAR, LONG VARGRAPHIC, XML, un tipo diferenciado basado en cualquiera de estos tipos o un tipo estructurado (SQLSTATE 42815). Esta funcin no puede utilizarse como una funcin fuente cuando se crea una funcin definida por el usuario. Dado que esta funcin acepta cualquier tipo de datos compatible como argumento, no es necesario crear signaturas adicionales para soportar tipos diferenciados definidos por el usuario. El argumento seleccionado se convierte, si es necesario, a los atributos del resultado. Los atributos del resultado los determinan todos los operandos basndose en las normas de los tipos de datos de resultado. El resultado de la funcin es el valor de argumento ms pequeo. Si como mnimo un argumento puede ser nulo, el resultado puede ser nulo; si cualquier argumento es nulo, el resultado es el valor nulo. La funcin escalar LEAST es sinnimo de la funcin escalar MIN. Ejemplos: Suponga que la tabla T1 contiene tres columnas C1, C2 y C3 con los valores 1, 7 y 4, respectivamente. La consulta:
SELECT LEAST (C1, C2, C3) FROM T1
devuelve 1. Si la columna C3 tiene un valor de NULL en lugar de 4, la misma consulta devuelve NULL.
LEFT
LEFT ( expresin-serie , longitud , CODEUNITS16 CODEUNITS32 OCTETS )
Captulo 3. Funciones
343
LEFT
El esquema es SYSIBM. La versin SYSFUN de la funcin LEFT contina estando disponible. La funcin LEFT devuelve la serie situada ms a la izquierda de expresin-serie de la longitud longitud, expresada en la unidad de serie especificada. Si expresin-serie es una serie de caracteres, el resultado es una serie de caracteres. Si expresin-serie es una serie grfica, el resultado es una serie grfica. expresin-serie Una expresin que especifica la serie de la que se deriva el resultado. La expresin debe devolver un valor que sea un tipo de datos de serie grfica o de caracteres incorporado (SQLSTATE 42815). Una subserie de expresin-serie es cero o ms elementos de cdigo contiguos de expresin-serie. longitud Una expresin que especifica la longitud del resultado. El resultado debe ser un tipo de datos entero incorporado (SQLSTATE 42815). El valor debe estar entre 0 y la longitud de expresin-serie, expresado en unidades que se especifiquen implcita o explcitamente (SQLSTATE 22011). Si se especifica OCTETS y el resultado son datos grficos, el valor debe ser un nmero par entre 0 y el doble del atributo de longitud de expresin-serie (SQLSTATE 428GC). CODEUNITS16, CODEUNITS32 u OCTETS Especifica la unidad de serie de longitud. CODEUNITS16 especifica que longitud se expresa en unidades de cdigo UTF-16 de 16 bits. CODEUNITS32 especifica que longitud se expresa en unidades de cdigo UTF-32 de 32 bits. OCTETS especifica que longitud se expresa en bytes. Si la unidad de serie se especifica como CODEUNITS16 o CODEUNITS32 y expresin-serie es una serie binaria o datos de bit, se devuelve un error (SQLSTATE 428GC). Si la unidad de serie se especifica como OCTETS y expresin-serie es una serie grfica, longitud debe ser un nmero par; de lo contrario, se devuelve un error (SQLSTATE 428GC). 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, longitud se expresa en unidades de dos bytes; de lo contrario, se expresa en bytes. Para obtener ms informacin sobre CODEUNITS16, CODEUNITS32 y OCTETS, consulte el apartado Unidades de serie en funciones incorporadas en Series de caracteres. La expresin-serie se rellena a la derecha con el nmero necesario de caracteres de relleno para que exista siempre la subserie especificada de expresin-serie. El carcter utilizado para el relleno es el mismo carcter que se utiliza para rellenar la serie en contextos donde se debe producir relleno. Para obtener ms informacin sobre el relleno, consulte Asignaciones de serie en Asignaciones y comparaciones. El resultado de la funcin es una serie de longitud variable con un atributo de longitud que es el mismo atributo de longitud que el de expresin-serie y un tipo de datos que depende del tipo de datos de expresin-serie: v VARCHAR si expresin-serie es CHAR o VARCHAR v CLOB si expresin-serie es CLOB v VARGRAPHIC si expresin-serie es GRAPHIC o VARGRAPHIC v DBCLOB si expresin-serie es DBCLOB
344
LEFT
La longitud real del resultado (en unidades de serie) es longitud. 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 Suponga que la variable ALPHA tiene un valor de ABCDEF. La siguiente sentencia:
SELECT LEFT(ALPHA,3) FROM SYSIBM.SYSDUMMY1
devuelve ABC, que son los tres caracteres situados ms a la izquierda en ALPHA. v Suponga que la variable NAME, que se define como VARCHAR(50), tiene un valor de KATIE AUSTIN y que la variable de entero FIRSTNAME_LEN tiene un valor de 5. La siguiente sentencia:
SELECT LEFT(NAME,FIRSTNAME_LEN) FROM SYSIBM.SYSDUMMY1
devuelve el valor KATIE. v La siguiente sentencia devuelve una serie de longitud cero.
SELECT LEFT('ABCABC',0) FROM SYSIBM.SYSDUMMY1
v La columna FIRSTNME de la tabla EMPLOYEE se define como VARCHAR(12). Se busca el nombre de un empleado cuyo apellido es BROWN y se debe devolver el nombre en una serie de 10 bytes.
SELECT LEFT(FIRSTNME, 10) FROM EMPLOYEE WHERE LASTNAME = 'BROWN'
devuelve una serie VARCHAR(12) que tiene el valor DAVID seguido de cinco caracteres en blanco. v En una base de datos Unicode, FIRSTNAME es una columna VARCHAR(12). Uno de sus valores es la serie de 6 caracteres Jrgen. Cuanto FIRSTNAME tiene este valor:
Funcin... LEFT(FIRSTNAME,2,CODEUNITS32) LEFT(FIRSTNAME,2,CODEUNITS16) LEFT(FIRSTNAME,2,OCTETS) Devuelve... 'J' -- x'4AC3BC' 'J' -- x'4AC3BC' 'J' -- x'4A20', una serie truncada
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:
& UTF-8 UTF-16BE XF09D849E N X4E ~ XCC83 X0303 A X41 X0041 B X42 X0042
XD834DD1E X004E
Suponga que la variable UTF8_VAR, con un atributo de longitud de 20 bytes, contiene la representacin UTF-8 de la serie.
SELECT LEFT(UTF8_VAR, 2, CODEUNITS16), LEFT(UTF8_VAR, 2, CODEUNITS32), LEFT(UTF8_VAR, 2, OCTETS) FROM SYSIBM.SYSDUMMY1
Captulo 3. Funciones
345
LEFT
devuelve los valores &, &N y bb, respectivamente, donde b representa el carcter en blanco.
SELECT LEFT(UTF8_VAR, 5, CODEUNITS16), LEFT(UTF8_VAR, 5, CODEUNITS32), LEFT(UTF8_VAR, 5, OCTETS) FROM SYSIBM.SYSDUMMY1
devuelve los valores &N~ABbbbb, &N~ABbbbbb y &N~ABb, respectivamente, donde b representa el carcter en blanco. Suponga que la variable UTF16_VAR, con un atributo de longitud de 20 unidades de cdigo, contiene la representacin UTF-16BE de la serie.
SELECT LEFT(UTF16_VAR, 2, CODEUNITS16), LEFT(UTF16_VAR, 2, CODEUNITS32), HEX (LEFT(UTF16_VAR, 2, OCTETS)) FROM SYSIBM.SYSDUMMY1
devuelve los valores &, &N y XD834, respectivamente, donde XD834 es un carcter de sustitucin no coincidente.
SELECT LEFT(UTF16_VAR, 5, CODEUNITS16), LEFT(UTF16_VAR, 5, CODEUNITS32), LEFT(UTF16_VAR, 6, OCTETS) FROM SYSIBM.SYSDUMMY1
devuelve los valores &N~ABbbbb, &N~ABbbbbb y &N~A, respectivamente, donde b representa el carcter en blanco.
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
346
LENGTH
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 bit, 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 v v v v v v v (p/2)+1 para nmeros decimales con una precisin p 8 para DECFLOAT(16) 16 para DECFLOAT(34) La longitud de la serie para series binarias La longitud de la serie para series de caracteres 4 para coma flotante de precisin simple 8 para coma flotante de precisin doble 4 para fecha
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))
Captulo 3. Funciones
347
LENGTH
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:
& UTF-8 UTF-16BE UTF-32BE XF09D849E N X4E ~ XCC83 X0303 X00000303 A X41 X0041 X00000041 B X42 X0042 X00000042
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
LN
LN ( expresin )
El esquema es SYSIBM. (La versin SYSFUN de la funcin LN contina estando disponible.) La funcin LN devuelve el logaritmo natural de un nmero. Las funciones EXP y LN son operaciones opuestas. El argumento debe ser una expresin que devuelve un valor de cualquier tipo de datos numrico interno. Si el argumento es de coma flotante decimal, la operacin se realiza como coma flotante decimal; en caso contrario, el argumento se convierte a coma flotante de precisin doble para que la procese la funcin. El valor del argumento debe ser superior a cero (SQLSTATE 22003). Si el argumento es DECFLOAT(n), el resultado es DECFLOAT(n); en caso contrario, el resultado 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. Alternativas de sintaxis: Se puede especificar LOG en lugar de LN. Slo se soporta por compatibilidad con las versiones anteriores de DB2. LN debe utilizarse en vez de LOG, ya que algunas aplicaciones y gestores de base de datos implementan LOG como logaritmo comn de un nmero en vez del logaritmo natural de un nmero.
348
LN
Ejemplo: v Supongamos que NATLOG es una variable del lenguaje principal DECIMAL(4,2) con un valor de 31,62.
VALUES LN(:NATLOG)
El esquema es SYSIBM. La versin SYSFUN de la funcin LOCATE contina estando disponible, pero no es sensible a la clasificacin de base de datos. 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. La bsqueda se realiza utilizando la clasificacin de la base de datos, a menos que se defina serie-bsqueda o serie-fuente como FOR BIT DATA, en cuyo caso la bsqueda se realiza utilizando una comparacin binaria. 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 serie-bsqueda tiene una longitud de cero, el resultado que devuelve la funcin es 1. En cambio, si serie-fuente tiene una longitud de cero, el resultado que devuelve la funcin es 0. En caso contrario: 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 global v Una variable del lenguaje principal v Una funcin escalar cuyos operandos seas cualquiera de los anteriores
Captulo 3. Funciones
349
donde unidad-serie es CODEUNITS16, CODEUNITS32 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 bit, se devuelve un error (SQLSTATE 428GC). Si se especifica una unidad de la serie como OCTETS y serie-bsqueda y serie-fuente son series binarias, de 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.
350
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 26. 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 26. 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 27. 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 sin avance de espacio. A continuacin se muestra esta cadena en distintos formatos de codificacin Unicode:
Captulo 3. Funciones
351
XD834DD1E X004E
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
devuelve los valores 4, 3 y 7, respectivamente. v En una base de datos Unicode creada con la clasificacin no sensible a las maysculas y UCA500R1_LEN_S1, busque la posicin de la palabra Brown en la frase The quick brown fox.
SET :LOCATION = LOCATE('Brown', 'The quick brown fox', CODEUNITS16)
LOG10
LOG10 ( expresin )
El esquema es SYSIBM. (La versin SYSFUN de la funcin LOG10 contina estando disponible.) La funcin LOG10 devuelve el logaritmo comn (en base 10) de un nmero. El argumento debe ser una expresin que devuelve un valor de cualquier tipo de datos numrico interno. Si el argumento es de coma flotante decimal, la operacin se realiza como coma flotante decimal; en caso contrario, el argumento se convierte a coma flotante de precisin doble para que la procese la funcin. El valor del argumento debe ser superior a cero (SQLSTATE 22003). Si el argumento es DECFLOAT(n), el resultado es DECFLOAT(n); en caso contrario, el resultado 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. Ejemplo: v Supongamos que L es una variable del lenguaje principal DECIMAL(4,2) con un valor de 31,62.
VALUES LOG10(:L)
352
LONG_VARCHAR
LONG_VARCHAR
LONG_VARCHAR ( expresin-serie-caracteres )
La funcin LONG_VARCHAR ha quedado obsoleta y se puede eliminar en un futuro release. La funcin es compatible con versiones de DB2 anteriores.
LONG_VARGRAPHIC
LONG_VARGRAPHIC ( expresin-grfica )
La funcin LONG_VARGRAPHIC ha quedado obsoleta y se puede eliminar en un futuro release. La funcin es compatible con versiones de DB2 anteriores.
LOWER
LOWER ( 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 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 correlacin con . Si la longitud de elemento de cdigo del carcter de resultado no es la misma que la del elemento de cdigo del carcter fuente, el carcter fuente no se convierte. Dado que no todos los caracteres se convierten, LOWER(UPPER(expresin-serie)) no devuelve necesariamente el mismo resultado que LOWER(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 LOWER(JOB) FROM EMPLOYEE WHERE EMPNO = '000020';
Captulo 3. Funciones
353
El esquema es SYSIBM. La funcin LOWER devuelve una serie en la que todos los caracteres se han convertido a minsculas utilizando las normas asociadas con el entorno local especificado. expresin-serie Expresin que devuelve una serie CHAR, VARCHAR, GRAPHIC o VARGRAPHIC. Si expresin-serie es CHAR o VARCHAR, la expresin no debe ser FOR BIT DATA (SQLSTATE 42815). nombre-entorno-local Constante de tipo carcter que especifica el entorno local que define las normas de conversin a minsculas. El valor de nombre-entorno-local no es sensible a las maysculas y minsculas y debe ser un entorno local vlido (SQLSTATE 42815). Para obtener informacin sobre los entornos locales vlidos y su significado, consulte Nombres de entorno local para SQL y XQuery. unidades-cdigo Constante entera que especifica el nmero de unidades de cdigo en el resultado. Si se especifica, unidades-cdigo debe ser un entero entre 1 y 32.672 si el resultado son datos de tipo carcter o entre 1 y 16.336 si el resultado son datos grficos (SQLSTATE 42815). Si unidades-cdigo no se especifica de forma explcita, es implcitamente el atributo de longitud de expresin-serie. Si se especifica OCTETS y el resultado son datos grficos, el valor de unidades-cdigo debe ser par (SQLSTATE 428GC). CODEUNITS16, CODEUNITS32 u OCTETS Especifica la unidad de serie de unidades-cdigo. CODEUNITS16 especifica que unidades-cdigo se expresa en unidades de cdigo UTF-16 de 16 bits. CODEUNITS32 especifica que unidades-cdigo se expresa en unidades de cdigo UTF-32 de 32 bits. OCTETS especifica que unidades-cdigo se expresa en bytes. 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, unidades-cdigo se expresa en unidades de dos bytes; de lo contrario, se expresa en bytes. Para obtener ms informacin sobre CODEUNITS16, CODEUNITS32 y OCTETS, consulte el apartado Unidades de serie en funciones incorporadas en Series de caracteres. El resultado de la funcin es VARCHAR si expresin-serie es CHAR o VARCHAR y VARGRAPHIC si expresin-serie es GRAPHIC o VARGRAPHIC. El atributo de longitud del resultado lo determina el valor implcito o explcito de unidades-cdigo, la unidad de serie implcita o explcita y el tipo de datos de resultado, como se muestra en la tabla siguiente:
354
La longitud real del resultado puede ser mayor que la longitud de expresin-serie. Si la longitud real del resultado es mayor que el atributo de longitud del resultado, se devuelve un error (SQLSTATE 42815). Si el nmero de unidades de cdigo del resultado excede el valor de unidades-cdigo, se devuelve un error (SQLSTATE 42815). Si expresin-serie no est en UTF-16, esta funcin realiza la conversin de pgina de cdigos de expresin-serie a UTF-16 y del resultado de UTF-16 a la pgina de cdigos de expresin-serie. Si cualquiera de las conversiones de pgina de cdigos produce como mnimo un carcter de sustitucin, el resultado incluye el carcter de sustitucin, se devuelve un aviso (SQLSTATE 01517) y el distintivo de aviso SQLWARN8 de la SQLCA se establece en W. 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 Asegrese de que los caracteres del valor de la columna JOB de la tabla EMPLOYEE se devuelvan en minsculas.
SELECT LOWER(JOB, 'en_US') FROM EMPLOYEE WHERE EMPNO = '000020'
El resultado es el valor director. v Busque las minsculas de todos los caracteres I de una serie en idioma turco.
VALUES LOWER('IIii', 'tr_TR', CODEUNITS16)
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.
Captulo 3. Funciones
355
LTRIM
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.
MAX
MAX
expresin
expresin
El esquema es SYSIBM. La funcin MAX devuelve el valor mximo de un conjunto de valores. Los argumentos deben ser compatibles y cada argumento debe ser una expresin que devuelve un valor de cualquier tipo de datos distinto de ARRAY, LOB, LONG VARCHAR, LONG VARGRAPHIC, XML, un tipo diferenciado basado en cualquiera de estos tipos o un tipo estructurado (SQLSTATE 42815). Esta funcin no puede utilizarse como una funcin fuente cuando se crea una funcin definida por el usuario. Dado que esta funcin acepta cualquier tipo de datos compatible como argumento, no es necesario crear signaturas adicionales para soportar tipos diferenciados definidos por el usuario. El argumento seleccionado se convierte, si es necesario, a los atributos del resultado. Los atributos del resultado los determinan todos los operandos basndose en las normas de los tipos de datos de resultado.
356
MAX
El resultado de la funcin es el valor de argumento ms grande. Si como mnimo un argumento puede ser nulo, el resultado puede ser nulo; si cualquier argumento es nulo, el resultado es el valor nulo. La funcin escalar MAX es sinnimo de la funcin escalar GREATEST. Ejemplo: Devolver la bonificacin de un empleado, el valor que sea mayor entre 500 y el 5% del salario del empleado.
SELECT EMPNO, MAX(SALARY * 0.05, 500) FROM EMPLOYEE
MAX_CARDINALITY
MAX_CARDINALITY ( expresin-matriz )
El esquema es SYSIBM. La funcin MAX_CARDINALITY devuelve un valor del tipo BIGINT que representa el nmero mximo de elementos que puede contener una matriz. Esta es la cardinalidad que se especific en la sentencia CREATE TYPE para el tipo de matriz definida por el usuario. El argumento puede ser una variable de procedimiento de SQL o parmetro de un tipo de datos de matriz o una especificacin de conversin de un marcador de parmetro para un tipo de datos de matriz. Ejemplo: Suponga que el tipo PHONE_LIST se define como:
CREATE TYPE PHONE_LIST AS INTEGER ARRAY[100]
La matriz NUMBERS es del tipo PHONE_LIST. La siguiente sentencia SET asigna a la variable CARD el valor 100, con arreglo a la definicin de PHONE_LIST:
SET CARD = MAX_CARDINALITY(NUMBERS)
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.
Captulo 3. Funciones
357
MICROSECOND
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 normas 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 de 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)
MIDNIGHT_SECONDS
MIDNIGHT_SECONDS ( expresin )
El esquema es SYSFUN. Devuelve un valor entero en el rango de 0 a 86.400, que representa el nmero de segundos entre medianoche y el valor de 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'))
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, lo que da como resultado 47.410 segundos entre la hora especificada y la medianoche.
358
MIDNIGHT_SECONDS
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'))
Observe que estos dos valores representan el mismo momento en el tiempo, pero devuelven distintos valores MIDNIGHT_SECONDS.
MIN
MIN
expresin
expresin
El esquema es SYSIBM. La funcin MIN devuelve el valor mnimo de un conjunto de valores. Los argumentos deben ser compatibles y cada argumento debe ser una expresin que devuelve un valor de cualquier tipo de datos distinto de ARRAY, LOB, LONG VARCHAR, LONG VARGRAPHIC, XML, un tipo diferenciado basado en cualquiera de estos tipos o un tipo estructurado (SQLSTATE 42815). Esta funcin no puede utilizarse como una funcin fuente cuando se crea una funcin definida por el usuario. Dado que esta funcin acepta cualquier tipo de datos compatible como argumento, no es necesario crear signaturas adicionales para soportar tipos diferenciados definidos por el usuario. El argumento seleccionado se convierte, si es necesario, a los atributos del resultado. Los atributos del resultado los determinan todos los operandos basndose en las normas de los tipos de datos de resultado. El resultado de la funcin es el valor de argumento ms pequeo. Si como mnimo un argumento puede ser nulo, el resultado puede ser nulo; si cualquier argumento es nulo, el resultado es el valor nulo. La funcin escalar MIN es sinnimo de la funcin escalar LEAST. Ejemplo: Devolver la bonificacin de un empleado, el valor que sea menor entre 5000 y el 5% del salario del empleado.
SELECT EMPNO, MIN(SALARY * 0.05, 5000) FROM EMPLOYEE
MINUTE
MINUTE ( expresin )
El esquema es SYSIBM.
Captulo 3. Funciones
359
MINUTE
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 normas 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
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.
360
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 normas 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
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.
Captulo 3. Funciones
361
MONTHNAME
El resultado de la funcin es VARCHAR(100). El resultado puede ser nulo; si el argumento es nulo, el resultado es el valor nulo.
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. v La precisin es MIN(31, p + p) v 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(26,23) DECIMAL(18,17) DECIMAL(16,3) DECIMAL(26,5) DECIMAL(15,8) DECIMAL(10,1) DECIMAL(20,19) DECIMAL(17,8) DECIMAL(11,0) DECIMAL(31,3) DECIMAL(31,19) DECIMAL(31,29) DECIMAL(31,9) DECIMAL(31,3) DECIMAL(31,11) DECIMAL(31,24) DECIMAL(31,31) DECIMAL(31,11) DECIMAL(31,5)
362
MULTIPLY_ALT
Tipo de argumento 1 Tipo de argumento 2 Resultado utilizando Resultado utilizando MULTIPLY_ALT el operador de multiplicacin DECIMAL(21,1) DECIMAL(15,1) DECIMAL(31,2) DECIMAL(31,2)
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.
NORMALIZE_DECFLOAT
NORMALIZE_DECFLOAT ( expresin )
El esquema es SYSIBM. La funcin NORMALIZE_DECFLOAT devuelve un valor de coma flotante decimal igual al argumento de entrada establecido en su formato ms simple; es decir, en un nmero distinto de cero con ceros de cola en el coeficiente se eliminan dichos ceros. Para ello es posible que sea necesario representar el nmero en formato normalizado dividiendo el coeficiente por la potencia de diez apropiada y ajustando el exponente como corresponde. El exponente de un valor cero se establece en 0. expresin Una expresin que devuelve un valor de cualquier tipo de datos numrico interno. Los argumentos del tipo SMALLINT, INTEGER, REAL, DOUBLE o DECIMAL(p,s), donde p <= 16, se convierten a DECFLOAT(16) para su proceso. Los argumentos del tipo BIGINT o DECIMAL(p,s), donde p > 16, se convierten a DECFLOAT(34) para su proceso. El resultado de la funcin es un valor DECFLOAT(16) si el tipo de datos de la expresin despus de la conversin a coma flotante decimal es DECFLOAT(16). De lo contrario, el resultado de la funcin es un valor DECFLOAT(34). Si el argumento es un valor de coma flotante decimal especial, el resultado es el mismo valor de coma flotante decimal especial. Si el argumento puede ser nulo, el resultado puede ser nulo; si el argumento es nulo, el resultado es el valor nulo. Ejemplos:
Captulo 3. Funciones
363
NORMALIZE_DECFLOAT
v Los ejemplos siguientes muestran los valores que devuelve la funcin NORMALIZE_DECFLOAT, si se da una variedad de valores de coma flotante decimal de entrada:
NORMALIZE_DECFLOAT(DECFLOAT(2.1)) = 2.1 NORMALIZE_DECFLOAT(DECFLOAT(-2.0)) = -2 NORMALIZE_DECFLOAT(DECFLOAT(1.200)) = 1.2 NORMALIZE_DECFLOAT(DECFLOAT(-120)) = -1.2E+2 NORMALIZE_DECFLOAT(DECFLOAT(120.00)) = 1.2E+2 NORMALIZE_DECFLOAT(DECFLOAT(0.00)) = 0 NORMALIZE_DECFLOAT(-NAN) = -NaN NORMALIZE_DECFLOAT(-INFINITY) = -Infinity
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) o de un tipo de datos diferenciado (que no est basado en una serie larga). (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 )
NVL
NVL
expresin
expresin
364
OCTET_LENGTH
NVL es sinnimo de COALESCE.
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:
& UTF-8 UTF-16BE XF09D849E N X4E ~ XCC83 X0303 A X41 X0041 B X42 X0042
XD834DD1E X004E
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
OVERLAY
OVERLAY ( serie-fuente PLACING serie-insercin FROM inicio FOR , serie-insercin , inicio , longitud longitud , CODEUNITS16 CODEUNITS32 OCTETS USING CODEUNITS16 CODEUNITS32 OCTETS )
Captulo 3. Funciones
365
OVERLAY
El esquema es SYSIBM. La funcin OVERLAY devuelve una serie en la que, a partir de inicio en serie-fuente, se han suprimido longitud de las unidades de cdigo especificadas y se ha insertado serie-insercin. serie-fuente Expresin que especifica la serie fuente. La expresin debe devolver un valor que sea un tipo de datos de serie grfica o de caracteres incorporado (SQLSTATE 42815). serie-insercin Expresin que especifica la serie que se debe insertar en serie-fuente, a partir de la posicin identificada por inicio. La expresin debe devolver un valor que sea un tipo de datos de serie grfica o de caracteres incorporado compatible con serie-fuente (SQLSTATE 22011). Si la pgina de cdigos de la serie-insercin difiere de la pgina de cdigos de la serie-fuente, serie-insercin se convierte a la pgina de cdigos de la serie-fuente. inicio Expresin que devuelve un valor entero. El valor entero especifica el punto de partida en la serie fuente donde debe empezar la supresin de bytes y la insercin de otra serie. El valor entero debe estar entre 1 y la longitud de serie-fuente ms uno (SQLSTATE 42815). Si se especifica OCTETS y el resultado son datos grficos, el valor debe ser un nmero impar entre 1 y el doble del atributo de longitud de serie-fuente ms uno (SQLSTATE 428GC). longitud Expresin que especifica el nmero de unidades de cdigo (en las unidades de serie especificadas) que se deben suprimir de la serie fuente, a partir de la posicin identificada por inicio. El valor debe estar entre 0 y la longitud de serie-fuente, expresado en unidades que se especifiquen implcita o explcitamente (SQLSTATE 22011). Si se especifica OCTETS y el resultado son datos grficos, el valor debe ser un nmero par entre 0 y el doble del atributo de longitud de serie-fuente (SQLSTATE 428GC). El hecho de no especificar longitud equivale a especificar un valor de 1, excepto cuando se especifica OCTETS y el resultado son datos grficos, en cuyo caso el hecho de no especificar longitud equivale a especificar un valor de 2. CODEUNITS16, CODEUNITS32 u OCTETS Especifica la unidad de la serie de inicio y longitud. CODEUNITS16 especifica que inicio y longitud se expresan en unidades de cdigo UTF-16 de 16 bits. CODEUNITS32 especifica que inicio y longitud se expresan en unidades de cdigo UTF-32 de 32 bits. OCTETS especifica que inicio y longitud se expresan en bytes. Si la unidad de serie se especifica como CODEUNITS16 o CODEUNITS32 y el resultado es una serie binaria o datos de bit, se devuelve un error (SQLSTATE 428GC). Si la unidad de serie se especifica como OCTETS y serie-insercin y serie-fuente son series binarias, se devuelve un error (SQLSTATE 42815). Si la unidad de serie se especifica como OCTETS, la operacin se realiza en la pgina de cdigos de la serie-fuente. Para obtener ms informacin sobre CODEUNITS16, CODEUNITS32 y OCTETS, consulte el apartado Unidades de serie en funciones incorporadas en Series de caracteres. El tipo de datos del resultado depende de los tipos de datos de serie-fuente y serie-insercin, como se muestra en la tabla siguiente de combinaciones de tipos soportadas.
366
OVERLAY
Tabla 35. Tipo de datos del resultado como funcin de los tipos de datos de serie-fuente y serie-insercin serie-fuente CHAR o VARCHAR GRAPHIC o VARGRAPHIC CLOB DBCLOB CHAR o VARCHAR CHAR FOR BIT DATA o VARCHAR FOR BIT DATA serie-insercin CHAR o VARCHAR GRAPHIC o VARGRAPHIC CHAR, VARCHAR o CLOB GRAPHIC, VARGRAPHIC o DBCLOB CHAR FOR BIT DATA o VARCHAR FOR BIT DATA Resultado VARCHAR VARGRAPHIC CLOB DBCLOB VARCHAR FOR BIT DATA
VARCHAR FOR BIT DATA CHAR, VARCHAR, CHAR FOR BIT DATA o VARCHAR FOR BIT DATA
Slo para bases de datos Unicode: CHAR o VARCHAR GRAPHIC o VARGRAPHIC CLOB DBCLOB GRAPHIC o VARGRAPHIC CHAR o VARCHAR GRAPHIC, VARGRAPHIC o DBCLOB CHAR, VARCHAR o CLOB VARCHAR VARGRAPHIC CLOB DBCLOB
Una serie-fuente puede tener una longitud de 0; en este caso, inicio debe ser 1 y longitud debe ser 0 (como lo implican los vnculos para inicio y longitud descritos ms arriba) y el resultado de la funcin es una copia de la serie-insercin. En este caso, si no se especifica explcitamente la longitud, se devuelve un error porque la longitud que se supone es distinta de cero (SQLSTATE 22011). Una serie-insercin tambin puede tener una longitud de 0. Esto tiene el efecto de suprimir las unidades de cdigo de las posiciones inicio a inicio + longitud - 1 de la serie-fuente. El atributo de longitud del resultado es el atributo de longitud de serie-fuente ms el atributo de longitud de serie-insercin. La longitud real del resultado es A1 MIN((A1 - V2 + 1), V3) + A4, donde: v A1 es la longitud real de serie-fuente v V2 es el valor de inicio v V3 es el valor de longitud v A4 es la longitud real de serie-insercin Si la longitud real de la serie de resultado excede el mximo del tipo de datos de retorno, se devuelve un error (SQLSTATE 54006). 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 Cree las series INSISTING, INSISERTING e INSTING a partir de la serie INSERTING insertando texto en medio del texto existente.
SELECT OVERLAY('INSERTING','IS',4,2,OCTETS), OVERLAY('INSERTING','IS',4,0,OCTETS), OVERLAY('INSERTING','',4,2,OCTETS) FROM SYSIBM.SYSDUMMY1
Captulo 3. Funciones
367
OVERLAY
v Cree las series XXINSERTING, XXNSERTING, XXSERTING y XXERTING a partir de la serie INSERTING insertando texto antes del texto existente, utilizando 1 como punto de partida.
SELECT OVERLAY('INSERTING','XX',1,0,CODEUNITS16)), OVERLAY('INSERTING','XX',1,1,CODEUNITS16)), OVERLAY('INSERTING','XX',1,2,CODEUNITS16)), OVERLAY('INSERTING','XX',1,3,CODEUNITS16)) FROM SYSIBM.SYSDUMMY1
v Cree la serie ABCABCXX a partir de la serie ABCABC insertando texto despus del texto existente. Dado que la serie fuente tiene una longitud de 6 caracteres, establezca la posicin inicial en 7 (uno ms la longitud de la serie fuente).
SELECT OVERLAY('ABCABC','XX',7,0,CODEUNITS16)) FROM SYSIBM.SYSDUMMY1
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:
& UTF-8 UTF-16BE XF09D849E N X4E ~ XCC83 X0303 A X41 X0041 B X42 X0042
XD834DD1E X004E
Supongamos que las variables UTF8_VAR y UTF16_VAR contienen las representaciones de la serie en UTF-8 y UTF-16BE respectivamente. Utilice la funcin OVERLAY para insertar una C en la serie Unicode &N~AB.
SELECT OVERLAY(UTF8_VAR, 'C', 1, CODEUNITS16), OVERLAY(UTF8_VAR, 'C', 1, CODEUNITS32), OVERLAY(UTF8_VAR, 'C', 1, OCTETS) FROM SYSIBM.SYSDUMMY1
devuelve los valores C?N~AB, CN~AB y CbbbN~AB, respectivamente, donde ? representa XEDB49E, que corresponde a XDD1E en el formato UTF-16 intermedio, y bbb sustituye los caracteres UTF-8 incompletos X9D849E.
SELECT OVERLAY(UTF8_VAR, 'C', 5, CODEUNITS16), OVERLAY(UTF8_VAR, 'C', 5, CODEUNITS32), OVERLAY(UTF8_VAR, 'C', 5, OCTETS) FROM SYSIBM.SYSDUMMY1
devuelve los valores C?N~AB y CN~AB, respectivamente, donde ? representa el carcter de sustitucin bajo no coincidente U+DD1E.
SELECT OVERLAY(UTF16_VAR, 'C', 5, CODEUNITS16), OVERLAY(UTF16_VAR, 'C', 5, CODEUNITS32) FROM SYSIBM.SYSDUMMY1
368
PARAMETER
PARAMETER
La funcin PARAMETER representa una posicin en una sentencia de SQL en la que XQuery proporciona dinmicamente el valor como parte de la invocacin de la funcin db2-fn:sqlquery.
PARAMETER ( constante-entero )
El esquema es SYSIBM. El constante-entero es un ndice de posicin para un valor de los argumentos de db2-fn:sqlquery. El valor debe estar entre 1 y el nmero total de argumentos especificados en la sentencia de SQL db2-fn:sqlquery SQL (SQLSTATE 42815). La funcin PARAMETER representa una posicin en una sentencia de SQL en la que XQuery proporciona dinmicamente el valor como parte de la invocacin de la funcin db2-fn:sqlquery. El argumento de la funcin PARAMETER determina el valor que se sustituye por la funcin PARAMETER cuando se ejecuta la funcin db2-fn:sqlquery. Se puede hacer referencia al valor proporcionado por la funcin PARAMETER varias veces dentro de la misma sentencia de SQL. Esta funcin slo puede utilizarse en una seleccin completa contenida en el argumento literal de serie de la funcin db2-fn:sqlquery en una expresin XQuery (SQLSTATE 42887). Ejemplo: En el ejemplo siguiente, la llamada a la funcin db2-fn:sqlquery utiliza una llamada a la funcin PARAMETER y la expresin XQuery $po/@OrderDate, el atributo de fecha de pedido. La llamada a la funcin PARAMETER devuelve el valor del atributo de fecha de pedido:
xquery declare default element namespace "http://posample.org"; for $po in db2-fn:xmlcolumn('PURCHASEORDER.PORDER')/PurchaseOrder, $item in $po/item/partid for $p in db2-fn:sqlquery( "select description from product where promostart < PARAMETER(1)", $po/@OrderDate ) where $p//@pid = $item return <RESULT> <PoNum>{data($po/@PoNum)}</PoNum> <PartID>{data($item)} </PartID> <PoDate>{data($po/@OrderDate)}</PoDate> </RESULT>
El ejemplo devuelve el ID de compra, el ID de pieza y la fecha de compra de todas las piezas vendidas a partir de la fecha de inicio de la promocin.
Captulo 3. Funciones
369
serie-bsqueda
serie-fuente
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 serie-bsqueda no se encuentra y ninguno de los argumentos 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. La bsqueda se realiza utilizando la clasificacin de la base de datos, a menos que se defina serie-bsqueda o serie-fuente como FOR BIT DATA, en cuyo caso la bsqueda se realiza utilizando una comparacin binaria. Si serie-fuente tiene una longitud real de 0, el resultado de la funcin es 0. Si serie-bsqueda tiene una longitud real de 0 y 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 v v v v Una constante Un registro especial Una variable del lenguaje principal Una funcin escalar cuyos operandos seas cualquiera de los anteriores Una expresin que concatene (mediante CONCAT o ||) cualquiera de los elementos anteriores v Un parmetro de procedimiento de 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 v Un nombre de columna
370
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 26. 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 )
Captulo 3. Funciones
371
XD834DD1E X004E
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. v En una base de datos Unicode creada con la clasificacin no sensible a las maysculas y UCA500R1_LEN_S1, busque la posicin de la palabra Brown en la frase The quick brown fox.
SET :LOCATION = POSITION('Brown', 'The quick brown fox', CODEUNITS16)
El esquema es SYSIBM. La funcin POSSTR devuelve la posicin inicial de la primera aparicin 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
372
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 superar los 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 En una base de datos Unicode, si un argumento es de tipo carcter (no FOR BIT DATA) y el otro argumento es grfico, la serie-bsqueda se convierta al tipo de datos de la serie-fuente para el proceso. Si un argumento es de tipo carcter FOR BIT DATA, el otro argumento no debe ser grfico (SQLSTATE 42846). 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 basndose estrictamente en el nmero de bytes, ajeno a la clasificacin de base de datos y a los cambios entre caracteres de un solo byte y de mltiples bytes. Se aplican las siguientes normas: 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, serie-bsqueda debe ser una serie de caracteres, pero no una CLOB o LONG VARCHAR, con una longitud real de 32.672 bytes o menos.
Captulo 3. Funciones
373
POWER
POWER ( expresin1 , expresin2 )
El esquema es SYSIBM. (La versin SYSFUN de la funcin POWER contina estando disponible.) La funcin POWER devuelve el resultado de elevar el primer argumento a la potencia del segundo argumento. 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. Si uno de los dos argumentos es una coma flotante decimal, los argumentos se convierten a DECFLOAT(34) para que los procese la funcin. 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 DECFLOAT(34) si uno de los argumentos es una coma flotante decimal. Si uno de los dos argumentos es DECFLOAT y se cumple como verdadero una de las siguientes sentencias, el resultado ser NAN y una condicin de operacin no vlida: Ambos argumentos son cero El segundo argumento tiene una parte fraccionaria diferente a cero El segundo argumento tiene ms de 9 dgitos
374
POWER
El segundo argumento es INFINITY v DOUBLE en caso contrario Si el argumento es un valor de coma flotante decimal especial, se aplicarn las normas para las operaciones aritmticas generales para la coma flotante decimal. Consulte el apartado General arithmetic operation rules for decimal floating-point (Operaciones aritmticas generales para coma flotante decimal) en Normas generales de operaciones aritmticas para coma flotante decimal en la pgina 172. El resultado puede ser nulo; si cualquier argumento es nulo, el resultado es el valor nulo. Ejemplo: v Suponga que la variable del lenguaje principal HPOWER es un entero con un valor de 3.
VALUES POWER(2,:HPOWER)
Devuelve el valor 8.
QUANTIZE
QUANTIZE ( expresin-numrica , expresin-exp )
El esquema es SYSIBM. La funcin QUANTIZE devuelve un valor de coma flotante decimal que equivale en valor (excepto para el redondeo) y signo con expresin-numrica y que tiene un exponente igual al exponente de expresin-exp. El nmero de dgitos (16 34) es igual al nmero de dgitos de expresin-numrica. expresin-numrica Una expresin que devuelve un valor de cualquier tipo de datos numrico interno. Si el argumento no es un valor de coma flotante decimal, se convertir a DECFLOAT(34) para su proceso. expresin-exp Una expresin que devuelve un valor de cualquier tipo de datos numrico interno. Si el argumento no es un valor de coma flotante decimal, se convertir a DECFLOAT(34) para su proceso. La expresin-exp se usa como patrn de ejemplo para volver a dar escala a expresin-numrica. Se ignora el signo y el coeficiente de expresin-exp. El coeficiente del resultado deriva del de expresin-numrica. Se redondeo, si es necesario (si el exponente se est aumentando), multiplicado por una potencia de diez (si el exponente se est disminuyendo), o permanece inalterado (si el exponente es ya igual al de expresin-exp). El registro especial CURRENT DECFLOAT ROUNDING MODE determina la modalidad de redondeo. Al contrario que otras operaciones aritmticas del tipo de datos de coma flotante decimal, en el caso de que la longitud del coeficiente posterior a la operacin de quantize sea superior a la precisin especificada por expresin-exp, el resultado ser
Captulo 3. Funciones
375
QUANTIZE
NaN y se devolver un aviso (SQLSTATE 0168D). Esta accin asegurar que, a menos que haya una condicin de aviso, el exponente del resultado de QUANTIZE siempre ser igual al de expresin-exp. v Si cualquiera de los argumentos es NaN, se devolver NaN v Si cualquiera de los argumentos es sNaN, se devolver NaN y se devolver un aviso (SQLSTATE 01565) v Si ambos argumentos son infinito (positivo o negativo), se devolver infinito con el mismo signo que el primer argumento v Si un argumento es infinito (positivo o negativo) y el otro argumento no es infinito se devolver NaN y se devolver un aviso (SQLSTATE 0168D) El resultado de la funcin es un valor de DECFLOAT(16) si ambos argumentos son DECFLOAT(16). En caso contrario, el resultado de la funcin es un valor DECFLOAT(34). El resultado puede ser nulo; si cualquier argumento es nulo, el resultado es el valor nulo. Ejemplos: v Los ejemplos siguientes muestran los valores devueltos por la funcin QUANTIZE, si se dan varios valores coma flotante decimal de entrada y se supone una modalidad de redondeo de ROUND_HALF_UP:
QUANTIZE(2.17, DECFLOAT(0.001)) = 2.170 QUANTIZE(2.17, DECFLOAT(0.01)) = 2.17 QUANTIZE(2.17, DECFLOAT(0.1)) = 2.2 QUANTIZE(2.17, DECFLOAT('1E+0')) = 2 QUANTIZE(2.17, DECFLOAT('1E+1')) = 0E+1 QUANTIZE(2, DECFLOAT(INFINITY)) = NaN -- aviso QUANTIZE(0, DECFLOAT('1E+5')) = 0E+5 QUANTIZE(217, DECFLOAT('1E-1')) = 217.0 QUANTIZE(217, DECFLOAT('1E+0')) = 217 QUANTIZE(217, DECFLOAT('1E+1')) = 2.2E+2 QUANTIZE(217, DECFLOAT('1E+2')) = 2E+2
v En el ejemplo siguiente, se devuelve el valor -0 para la funcin QUANTIZE. Se utiliza la funcin CHAR para evitar la potencial eliminacin del signo menos por parte de un programa cliente:
CHAR(QUANTIZE(-0.1, DECFLOAT(1))) = -0
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.
376
RADIANS
RADIANS
RADIANS ( expresin )
El esquema es SYSIBM. (La versin SYSFUN de la funcin RADIANS contina estando disponible.) La funcin RADIANS devuelve el nmero de radianes de un argumento que se expresa en grados. El argumento puede ser de cualquier tipo de datos numrico interno. Si el argumento es de coma flotante decimal, la operacin se realiza como coma flotante decimal; en caso contrario, el argumento se convierte a coma flotante de precisin doble para que la procese la funcin. Si el argumento es DECFLOAT(n), el resultado es DECFLOAT(n); en caso contrario, el resultado 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. Ejemplo: v Suponga que la variable del lenguaje principal HDEG es INTEGER con un valor de 180. La siguiente sentencia:
VALUES RADIANS(:HDEG)
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 normas 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
Captulo 3. Funciones
377
RAISE_ERROR
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 normas 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 normas 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
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 entre 0 y 2147483647. 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.
378
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
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).
Captulo 3. Funciones
379
REC2XML
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 >
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. 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)
380
REC2XML
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)
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 37 en la pgina 382 se sustituye por la representacin correspondiente. Esto asegura que la serie resultante sea un smbolo de valor de elemento o atributo XML vlido. rn es equivalente a una representacin de serie como se indican en la Tabla 36
Tabla 36. Resultado de serie de valores de columna Tipo de datos de cn CHAR, VARCHAR rn 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 37 en la pgina 382, como se indica. El atributo de longitud es: dc * el atributo de longitud de cn. El valor es LTRIM(RTRIM(CHAR(cn))). El atributo de longitud es la longitud de resultado de CHAR(cn). El carcter decimal es siempre el carcter de punto (.). El valor es CHAR(cn,ISO). El atributo de longitud es la longitud de resultado de CHAR(cn,ISO). El valor es CHAR(cn,JIS). El atributo de longitud es la longitud de resultado de CHAR(cn,JIS)
DATE
TIME
Captulo 3. Funciones
381
REC2XML
Tabla 36. Resultado de serie de valores de columna (continuacin) Tipo de datos de cn TIMESTAMP rn 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 37. Sustituciones de caracteres para valores de atributo y valores de elemento XML Carcter < > & Sustitucin < > " & '
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.
SELECT REC2XML (1.0, 'COLATTVAL', '', DEPTNO, MGRNO, ADMRDEPT) FROM DEPARTMENT WHERE DEPTNO = 'D01'
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.
382
REC2XML
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'
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:
<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.
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.
Captulo 3. Funciones
383
REPEAT
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 una 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)
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.
REPLACE
REPLACE ( serie-fuente , serie-bsqueda , serie-sustitucin )
El esquema es SYSIBM. La versin SYSFUN de la funcin REPLACE contina estando disponible pero no es sensible a la clasificacin de base de datos. Sustituye todas las apariciones de serie-bsqueda en serie-fuente por serie-sustitucin. Si no se encuentra serie-bsqueda en serie-fuente, se devuelve serie-bsqueda sin modificar. La bsqueda se realiza utilizando la clasificacin de la base de datos a menos que serie-fuente, serie-bsqueda o serie-sustitucin se haya definido como FOR BIT DATA, en cuyo caso la bsqueda se realiza utilizando una comparacin binaria. serie-fuente Expresin que especifica la serie fuente. La expresin debe devolver un valor que sea un tipo de datos CHAR, VARCHAR, GRAPHIC o VARGRAPHIC. serie-bsqueda Expresin que especifica la serie que se debe eliminar de la serie fuente. La expresin debe devolver un valor que sea un tipo de datos CHAR, VARCHAR, GRAPHIC o VARGRAPHIC. serie-sustitucin Expresin que especifica la serie de sustitucin. La expresin debe devolver un valor que sea un tipo de datos CHAR, VARCHAR, GRAPHIC o VARGRAPHIC. Si la expresin es una serie vaca, la serie que se elimina de la serie fuente no se sustituye por nada.
384
REPLACE
La longitud real de cada serie debe ser de 32.672 bytes o menos para series de caracteres o de 16.336 o menos para series grficas. Los tres argumentos deben tener tipos de datos compatibles. Si serie-fuente, serie-bsqueda o serie-sustitucin se ha definido como FOR BIT DATA, el resultado es VARCHAR FOR BIT DATA. Si serie-fuente es una serie de caracteres, el resultado es VARCHAR. Si serie-fuente es una serie grfica, el resultado es VARGRAPHIC. Si un argumento es de tipo carcter FOR BIT DATA, los dems argumentos no deben ser grficos (SQLSTATE 42846). El atributo de longitud del resultado depende de los argumentos: v Si el atributo de longitud de serie-sustitucin es menor que o igual al atributo de longitud serie-bsqueda, el atributo de longitud del resultado es el atributo de longitud de serie-fuente. v Si el atributo de longitud de serie-sustitucin es mayor que el atributo de longitud de serie-bsqueda, el atributo de longitud del resultado se determina del modo siguiente, en funcin del tipo de datos del resultado: Para VARCHAR: - Si L1 < = 4000, el atributo de longitud del resultado es MIN(4000, (L3*(L1/L2)) + MOD(L1,L2)) - De lo contrario, el atributo de longitud del resultado es MIN(32672, (L3*(L1/L2)) + MOD(L1,L2)) Para VARGRAPHIC: - Si L1 < = 2000, el atributo de longitud del resultado es MIN(2000, (L3*(L1/L2)) + MOD(L1,L2)) - De lo contrario, el atributo de longitud del resultado es MIN(16336, (L3*(L1/L2)) + MOD(L1,L2)) donde: L1 es el atributo de longitud de serie-fuente L2 es el atributo de longitud de la serie-bsqueda si la serie de bsqueda es una constante de serie. De lo contrario, L2 es 1. L3 es el atributo de longitud de serie-sustitucin Si el resultado es una serie de caracteres, el atributo de longitud del resultado no debe exceder de 32.672. Si el resultado es una serie grfica, el atributo de longitud del resultado no debe exceder de 16.336. La longitud real del resultado es la longitud real de serie-fuente ms el nmero de apariciones de serie-bsqueda que existen en serie-fuente multiplicado por la longitud real de serie-sustitucin menos la longitud real de serie-bsqueda. Si la longitud real de la serie-sustitucin excede el mximo del tipo de datos de retorno, se devuelve un error. 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 Sustituya todas las apariciones de la letra N en la palabra DINING por VID.
VALUES CHAR (REPLACE ('DINING', 'N', 'VID'), 10)
Captulo 3. Funciones
385
REPLACE
v En una base de datos Unicode con clasificacin no sensible a las maysculas y minsculas UCA500R1_LEN_S1, sustituya la palabra QUICK por la palabra LARGE.
VALUES REPLACE ('The quick brown fox', 'QUICK', 'LARGE')
RID_BIT y RID
RID_BIT RID ( designador-tabla )
El esquema es SYSIBM. El nombre de la funcin no puede especificarse como un nombre calificado. Las funciones RID_BIT y RID devuelven el identificador de fila (RID) de una fila en formatos diferentes. El RID se utiliza para identificar de manera exclusiva una fila. Es posible que cada funcin devuelva valores diferentes cuando se invoca varias veces para una fila. Por ejemplo, despus de ejecutar el programa de utilidad reorg para una tabla, es posible que las funciones RID_BIT y RID devuelvan valores de una fila diferentes de los que se habran devuelto antes de ejecutar el programa de utilidad. Las funciones RID_BIT y RID no son determinantes. El resultado de la funcin RID_BIT, a diferencia de la funcin RID, contiene informacin de tabla para evitar usarla involuntariamente con una tabla diferente. No se da soporte a la funcin RID en un entorno de bases de datos particionadas. designador-tabla Identifica de manera exclusiva una tabla base, una vista o una expresin de tabla anidada (SQLSTATE 42867). Si designador-tabla especifica una vista o una expresin de tabla anidada, las funciones RID_BIT y RID devuelven el RID de la tabla base de la vista o expresin de tabla anidada. La vista especificada o expresin de tabla anidada debe contener slo una tabla base en su subseleccin exterior (SQLSTATE 42867). El designador-tabla debe ser suprimible (SQLSTATE 42703). Para obtener ms informacin sobre vistas suprimibles, consulte el apartado Notas o CREATE VIEW. El resultado de la funcin RID_BIT es VARCHAR (16) FOR BIT DATA. El resultado puede ser nulo. El resultado de la funcin RID es BIGINT. El resultado puede ser nulo. Notas: v Para implementar un bloqueo optimista en una aplicacin, utilice los valores devueltos por la expresin ROW CHANGE TOKEN como argumentos para la funcin escalar RID_BIT. Ejemplos: v Devolver el RID y el apellido de todos los trabajadores del departamento 20 a partir de la tabla EMPLOYEE.
SELECT RID_BIT (EMPLOYEE), ROW CHANGE TOKEN FOR EMPLOYEE, LASTNAME FROM EMPLOYEE WHERE DEPTNO = '20'
386
RID_BIT y RID
CREATE TABLE EMP1 ( EMPNO CHAR(6), NAME CHAR(30), SALARY DECIMAL(9,2), PICTURE BLOB(250K), RESUME CLOB(32K) )
Establecer la variable de lenguaje principal HV_EMP_RID en el valor de la funcin escalar incorporada RID_BIT y HV_EMP_RCT en el valor de la expresin ROW CHANGE TOKEN para la fila correspondiente al trabajador nmero 3500.
SELECT RID_BIT(EMP1), ROW CHANGE TOKEN FOR EMP1 INTO :HV_EMP_RID, :HV_EMP_RCT FROM EMP1 WHERE EMPNO = '3500'
Utilizando el valor RID para identificar al trabajador y la funcin definida por el usuario UPDATE_RESUME, aumentar el salario del trabajador en 1.000 y actualizar el currculum del trabajador.
UPDATE EMP1 SET SALARY = SALARY + 1000, RESUME = UPDATE_RESUME(:HV_RESUME) WHERE RID_BIT(EMP1) = :HV_EMP_RID AND ROW CHANGE TOKEN FOR EMP1 = :HV_EMP_RCT
RIGHT
RIGHT ( expresin-serie , longitud , CODEUNITS16 CODEUNITS32 OCTETS )
El esquema es SYSIBM. La versin SYSFUN de la funcin RIGHT contina estando disponible. La funcin RIGHT devuelve la serie situada ms a la derecha de expresin-serie de longitud longitud, expresado en la unidad de serie especificada. Si expresin-serie es una serie de caracteres, el resultado es una serie de caracteres. Si expresin-serie es una serie grfica, el resultado es una serie grfica expresin-serie Una expresin que especifica la serie de la que se deriva el resultado. La expresin debe devolver un valor que sea un tipo de datos de serie grfica o de caracteres incorporado (SQLSTATE 42815). Una subserie de expresin-serie es cero o ms elementos de cdigo contiguos de expresin-serie. longitud Una expresin que especifica la longitud del resultado. El resultado debe ser un tipo de datos entero incorporado (SQLSTATE 42815). El valor debe estar entre 0 y la longitud de expresin-serie, expresado en unidades que se especifiquen implcita o explcitamente (SQLSTATE 22011). Si se especifica OCTETS y el resultado son datos grficos, el valor debe ser un nmero par entre 0 y el doble del atributo de longitud de expresin-serie (SQLSTATE 428GC). CODEUNITS16, CODEUNITS32 u OCTETS Especifica la unidad de serie de longitud.
Captulo 3. Funciones
387
RIGHT
CODEUNITS16 especifica que longitud se expresa en unidades de cdigo UTF-16 de 16 bits. CODEUNITS32 especifica que longitud se expresa en unidades de cdigo UTF-32 de 32 bits. OCTETS especifica que longitud se expresa en bytes. Si la unidad de serie se especifica como CODEUNITS16 o CODEUNITS32 y expresin-serie es una serie binaria o datos de bit, se devuelve un error (SQLSTATE 428GC). Si la unidad de serie se especifica como OCTETS y expresin-serie es una serie grfica, longitud debe ser un nmero par; de lo contrario, se devuelve un error (SQLSTATE 428GC). 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, longitud se expresa en unidades de dos bytes; de lo contrario, se expresa en bytes. Para obtener ms informacin sobre CODEUNITS16, CODEUNITS32 y OCTETS, consulte el apartado Unidades de serie en funciones incorporadas en Series de caracteres. La expresin-serie se rellena a la derecha con el nmero necesario de caracteres de relleno para que exista siempre la subserie especificada de expresin-serie. El carcter utilizado para el relleno es el mismo carcter que se utiliza para rellenar la serie en contextos donde se debe producir relleno. Para obtener ms informacin sobre el relleno, consulte Asignaciones de serie en Asignaciones y comparaciones. El resultado de la funcin es una serie de longitud variable con un atributo de longitud que es el mismo atributo de longitud que el de expresin-serie y un tipo de datos que depende del tipo de datos de expresin-serie: v VARCHAR si expresin-serie es CHAR o VARCHAR v CLOB si expresin-serie es CLOB v VARGRAPHIC si expresin-serie es GRAPHIC o VARGRAPHIC v DBCLOB si expresin-serie es DBCLOB La longitud real del resultado (en unidades de serie) es longitud. 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 Suponga que la variable ALPHA tiene un valor de ABCDEF. La siguiente sentencia:
SELECT RIGHT(ALPHA,3) FROM SYSIBM.SYSDUMMY1
devuelve DEF, que son los tres caracteres situados ms a la derecha en ALPHA. v Suponga que la variable NAME, que se define como VARCHAR(50), tiene un valor de KATIE AUSTIN y la variable entera LASTNAME_LEN tiene un valor de 6. La sentencia siguiente:
SELECT RIGHT(NAME,LASTNAME_LEN) FROM SYSIBM.SYSDUMMY1
devuelve el valor AUSTIN. v La siguiente sentencia devuelve una serie de longitud cero.
SELECT RIGHT('ABCABC',0) FROM SYSIBM.SYSDUMMY1
388
RIGHT
v La columna FIRSTNME de la tabla EMPLOYEE se define como VARCHAR(12). Se busca el nombre de un empleado cuyo apellido es BROWN y se debe devolver el nombre en una serie de 10 bytes.
SELECT RIGHT(FIRSTNME, 10) FROM EMPLOYEE WHERE LASTNAME = 'BROWN'
devuelve una serie VARCHAR(12) que tiene el valor DAVID seguido de cinco caracteres en blanco. v En una base de datos Unicode, FIRSTNAME es una columna VARCHAR(12). Uno de sus valores es la serie de 6 caracteres Jrgen. Cuanto FIRSTNAME tiene este valor:
Funcin... Devuelve...
RIGHT(FIRSTNAME,5,CODEUNITS32) 'rgen' -- x'C3BC7267656E' RIGHT(FIRSTNAME,5,CODEUNITS16) 'rgen' -- x'C3BC7267656E' RIGHT(FIRSTNAME,5,OCTETS) 'rgen' -- x'207267656E', una serie truncada
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:
& UTF-8 UTF-16BE XF09D849E N X4E ~ XCC83 X0303 A X41 X0041 B X42 X0042
XD834DD1E X004E
Suponga que la variable UTF8_VAR, con un atributo de longitud de 20 bytes, contiene la representacin UTF-8 de la serie.
SELECT RIGHT(UTF8_VAR, 2, CODEUNITS16), RIGHT(UTF8_VAR, 2, CODEUNITS32), RIGHT(UTF8_VAR, 2, OCTETS) FROM SYSIBM.SYSDUMMY1
devuelve los valores &N~ABbbbb, &N~ABbbbbb y &N~ABb, respectivamente, donde b representa el carcter en blanco. Suponga que la variable UTF16_VAR, con un atributo de longitud de 20 unidades de cdigo, contiene la representacin UTF-16BE de la serie.
SELECT RIGHT(UTF16_VAR, 2, CODEUNITS16), RIGHT(UTF16_VAR, 2, CODEUNITS32), RIGHT(UTF16_VAR, 2, OCTETS)) FROM SYSIBM.SYSDUMMY1
389
RIGHT
SELECT RIGHT(UTF16_VAR, 5, CODEUNITS16), RIGHT(UTF16_VAR, 5, CODEUNITS32), RIGHT(UTF16_VAR, 6, OCTETS) FROM SYSIBM.SYSDUMMY1
devuelve los valores ?N~AB, &N~AB y ~AB, respectivamente, donde ? es el carcter de sustitucin bajo autnomo XDD1E.
SELECT RIGHT(UTF16_VAR, 10, CODEUNITS16), RIGHT(UTF16_VAR, 10, CODEUNITS32), RIGHT(UTF16_VAR, 10, OCTETS) FROM SYSIBM.SYSDUMMY1
devuelve los valores &N~ABbbbb, &N~ABbbbbb y ?N~AB, respectivamente, donde b representa el carcter en blanco y ? es XDD1E.
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.
390
ROUND
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 si el argumento no es un nmero de coma flotante decimal y 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. Esta funcin no queda afectada por el valor del registro especial CURRENT DECFLOAT ROUNDING MODE, incluso para argumentos de coma flotante decimal. El comportamiento de redondeo de ROUND corresponde a un valor de ROUND_HALF_UP. Si para un valor de coma flotante decimal desea un comportamiento que se ajuste a la modalidad de redondeo especificada por el registro especial CURRENT DECFLOAT ROUNDING MODE, utilice la funcin QUANTIZE en su lugar. Ejemplos: 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) )
Captulo 3. Funciones
391
ROUND
1 ----3.12400
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.
SECLABEL
SECLABEL ( nombre-poltica-seguridad , serie-etiqueta-seguridad )
El esquema es SYSIBM.
392
SECLABEL
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 Una serie identifica una poltica de seguridad que exista en el servidor actual (SQLSTATE 42704). La serie debe ser una constante de serie grfica o de caracteres o una variable de lenguaje principal. serie-etiqueta-seguridad Expresin que devuelve una representacin vlida de una etiqueta de seguridad para la poltica de seguridad nombrada por nombre-poltica-seguridad (SQLSTATE 4274I). La expresin debe devolver un valor que sea un tipo de datos incorporado CHAR, VARCHAR, GRAPHIC o VARGRAPHIC. 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')
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 Una serie identifica una poltica de seguridad que exista en el servidor actual (SQLSTATE 42704). La serie debe ser una constante de serie grfica o de caracteres o una variable de lenguaje principal. nombre-etiqueta-seguridad Expresin que devuelve el nombre de una etiqueta de seguridad existente en el servidor actual para la poltica de seguridad nombrada por nombre-poltica-seguridad (SQLSTATE 4274I). La expresin debe devolver un valor que sea un tipo de datos incorporado CHAR, VARCHAR, GRAPHIC o VARGRAPHIC.
Captulo 3. Funciones
393
SECLABEL_BY_NAME
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
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 Una serie identifica una poltica de seguridad que exista en el servidor actual (SQLSTATE 42704). La serie debe ser una constante de serie grfica o de caracteres o una variable de lenguaje principal. etiqueta-seguridad Expresin que devuelve un valor de etiqueta de seguridad vlido para la poltica de seguridad nombrada por nombre-poltica-seguridad (SQLSTATE 4274I). La expresin debe devolver un valor que sea un tipo diferenciado incorporado SYSPROC.DB2SECURITYLABEL.
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.
394
SECLABEL_TO_CHAR
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
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.
SECOND
SECOND ( expresin )
El esquema es SYSIBM.
Captulo 3. Funciones
395
SECOND
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 normas 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)
SIGN
SIGN ( expresin )
El esquema es SYSIBM. (La versin SYSFUN de la funcin SIGN contina estando disponible.) Devuelve un indicador del signo del argumento. Si el argumento es menor que cero, se devuelve -1. Si el argumento es el valor de coma flotante decimal de -0, se devuelve el valor de coma flotante decimal de -0. 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
396
SIGN
v BIGINT si el argumento es BIGINT v DECFLOAT(n) si el argumento es DECFLOAT(n) v de lo contrario, DOUBLE. El resultado puede ser nulo; si el argumento es nulo, el resultado es el valor nulo. Ejemplo: v Suponga que la variable del lenguaje principal PROFIT es un entero grande con un valor de 50000.
VALUES SIGN(:PROFIT)
Devuelve el valor 1.
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 numricos incorporado (excepto DECFLOAT). 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.
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 numricos incorporado (excepto DECFLOAT). 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
397
SMALLINT
SMALLINT
SMALLINT ( expresin-numrica expresin-carcter )
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 normas 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.
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. La funcin interpreta los datos que se le pasan como si se tratase de caracteres ASCII, aunque la codificacin sea UTF-8. El resultado de la funcin es CHAR(4). El resultado puede ser nulo; si el argumento es nulo, el resultado es el valor nulo.
398
SOUNDEX
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')
SPACE
SPACE ( expresin )
El esquema es SYSFUN. Devuelve una serie de caracteres que consta de espacios en blanco con la longitud especificada por el 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.
SQRT
SQRT ( expresin )
El esquema es SYSIBM. (La versin SYSFUN de la funcin SQRT contina estando disponible.) La funcin SQRT devuelve la raz cuadrada de un nmero. El argumento debe ser una expresin que devuelve un valor de cualquier tipo de datos numrico interno. Si el argumento es de coma flotante decimal, la operacin se realiza como coma flotante decimal; en caso contrario, el argumento se convierte a coma flotante de precisin doble para que la procese la funcin. Si el argumento es DECFLOAT(n), el resultado es DECFLOAT(n); en caso contrario, el resultado es un nmero de coma flotante de precisin doble. Si el argumento es un valor de coma flotante decimal especial, se aplicarn las normas para las operaciones aritmticas generales para la coma flotante decimal.
Captulo 3. Funciones
399
SQRT
Consulte el apartado Normas generales de operaciones aritmticas para coma flotante decimal en Normas generales de operaciones aritmticas para coma flotante decimal en la pgina 172. El resultado puede ser nulo; si el argumento es nulo, el resultado es el valor nulo. Ejemplo: v Supongamos que SQUARE es una variable del lenguaje principal DECIMAL(2,1) con un valor de 9,0.
VALUES SQRT(:SQUARE)
STRIP
STRIP ( expresin-serie , BOTH B LEADING L TRAILING T , carcter-supresin )
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. El carcter-supresin puede ser cualquier carcter cuya codificacin UTF-32 sea un carcter individual. Se compara la representacin binaria del carcter. 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 grfica UCS-2, el carcter-supresin por omisin es un espacio en blanco UCS-2 (X0020) v De lo contrario, el carcter-supresin por omisin es un espacio en blanco SBCS (X20) 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
400
STRIP
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
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
Captulo 3. Funciones
401
SUBSTR
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 38 muestra que el tipo del resultado y la longitud de la funcin SUBSTR depende del tipo y los atributos de sus entradas.
Tabla 38. Tipo de datos y longitud del resultado de SUBSTR Tipo de datos del argumento de la serie CHAR(A) CHAR(A) CHAR(A) VARCHAR(A) VARCHAR(A) VARCHAR(A) LONG VARCHAR LONG VARCHAR LONG VARCHAR LONG VARCHAR CLOB(A) CLOB(A) GRAPHIC(A) GRAPHIC(A) GRAPHIC(A) VARGRAPHIC(A) VARGRAPHIC(A) VARGRAPHIC(A) LONG VARGRAPHIC LONG VARGRAPHIC LONG VARGRAPHIC LONG VARGRAPHIC DBCLOB(A) DBCLOB(A) BLOB(A) BLOB(A) Argumento de la longitud constant (l<255) no especificado pero el argumento inicio es una constante no es una constante constant (l<255) constant (254<l<32673) no es una constante o no se especifica constant (l<255) constant (254<l<4001) constant (l>4000) no es una constante o no se especifica constant (l) no es una constante o no se especifica constant (l<128) no especificado pero el argumento inicio es una constante no es una constante constant (l<128) constant (127<l<16337) no es una constante constant (l<128) constant (127<l<2001) constant (l>2000) no es una constante o no se especifica constant (l) no es una constante o no se especifica constant (l) no es una constante o no se especifica Tipo de datos del resultado CHAR(l) CHAR(A-inicio+1) VARCHAR(A) CHAR(l) VARCHAR(l) VARCHAR(A) CHAR(l) VARCHAR(l) LONG VARCHAR LONG VARCHAR CLOB(l) CLOB(A) GRAPHIC(l) GRAPHIC(A-inicio+1) VARGRAPHIC(A) GRAPHIC(l) VARGRAPHIC(l) VARGRAPHIC(A) GRAPHIC(l) VARGRAPHIC(l) LONG VARGRAPHIC LONG VARGRAPHIC DBCLOB(l) DBCLOB(A) BLOB(l) BLOB(A)
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
402
SUBSTR
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 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. Nota: 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 de resultado anteriores, se deriva a partir de esta semntica que si 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, en funcin de 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.
SUBSTRING
SUBSTRING expresin ( FROM inicio FOR expresin , inicio , longitud longitud , CODEUNITS16 CODEUNITS32 OCTETS CODEUNITS16 CODEUNITS32 OCTETS USING )
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
Captulo 3. Funciones
403
SUBSTRING
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 real mxima de la subserie resultante. 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 u 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 igual o mayor que cero. Si se especifica un valor superior a n, donde n sea (atributo de longitud de expresin) - inicio + 1, n se utilizar como longitud de la subserie resultante. El valor se expresa en las unidades que se especifican explcitamente. Si se especifica OCTETS y la expresin son datos grficos, la longitud debe 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. 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 bit, se devuelve un error (SQLSTATE 428GC). Si la unidad de la serie se especifica como OCTETS y expresin es una serie binaria, se devolver un error (SQLSTATE 42815). Para obtener ms informacin sobre CODEUNITS16, CODEUNITS32 y OCTETS, consulte el apartado Unidades de serie en funciones incorporadas en Series de caracteres. Cuando se invoca la funcin SUBSTRING utilizando OCTETS, y la serie-fuente 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.
404
SUBSTRING
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 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 ... -----------------------------------SUBSTRING(FIRSTNAME,1,2,CODEUNITS32) SUBSTRING(FIRSTNAME,1,2,CODEUNITS16) SUBSTRING(FIRSTNAME,1,2,OCTETS) SUBSTRING(FIRSTNAME,8,CODEUNITS16) SUBSTRING(FIRSTNAME,8,4,OCTETS) Devuelve ... -----------------------------------'J' -- x'4AC3BC' 'J' -- x'4AC3BC' 'J ' -- x'4A20' (una serie truncada) una serie de longitud cero 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
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)
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 alias. 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 alias, 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.
Captulo 3. Funciones
405
TABLE_NAME
nombreobjeto Una expresin de caracteres que representa el nombre no calificado (normalmente de un alias 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 alias que se ha resuelto en la tabla cuyo nombre se devuelve. El valor para el nombreobjeto era un nombre de vista (se devuelve el valor de entrada) o un alias que se ha resuelto en la vista cuyo nombre se devuelve.
vista
objeto no definido El valor para el nombreobjeto era un objeto no definido (se devuelve el valor de entrada) o un alias 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. Nota: Para mejorar el rendimiento en configuraciones de bases de datos particionadas evitando la comunicacin innecesaria que se produce entre la particin de coordinacin y la particin de catlogo al utilizar las funciones escalares TABLE_SCHEMA y TABLE_NAME, en su lugar se puede utilizar la funcin de tabla BASE_TABLE.
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 alias. 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 alias, 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
406
TABLE_SCHEMA
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 alias 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 alias que se ha resuelto en una tabla para la que se devuelve el nombre de esquema. El valor para el nombreobjeto era un nombre de vista (se devuelve la entrada o el valor por omisin de esquemaobjeto) o un alias que se ha resuelto en una vista para la que se devuelve el nombre de esquema.
vista
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 alias 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. Nota: Para mejorar el rendimiento en configuraciones de bases de datos particionadas evitando la comunicacin innecesaria que se produce entre la particin de coordinacin y la particin de catlogo al utilizar las funciones escalares TABLE_SCHEMA y TABLE_NAME, en su lugar se puede utilizar la funcin de tabla BASE_TABLE. Ejemplos: v PBIRD intenta seleccionar las estadsticas para una tabla determinada de SYSCAT.TABLES utilizando un alias PBIRD.A1 definido en la tabla HEDGES.T1.
SELECT NPAGES, CARD FROM SYSCAT.TABLES WHERE TABNAME = TABLE_NAME ('A1') AND TABSCHEMA = TABLE_SCHEMA ('A1')
Captulo 3. Funciones
407
TABLE_SCHEMA
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 alias 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 alias 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 alias.
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 alias) para cualquier entrada de alias. Para todas las entradas que no son alias, BASE_TABNAME y BASE_TABSCHEMA son nulos, por lo tanto las columnas REAL_SCHEMA y REAL_NAME contendrn nulos.
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 cualquier tipo de datos numricos incorporado (excepto DECFLOAT). 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.
TANH
TANH ( expresin )
El esquema es SYSIBM.
408
TANH
Devuelve la tangente hiperblica del argumento, donde el argumento es un ngulo expresado en radianes. El argumento puede ser de cualquier tipo de datos numricos incorporado (excepto DECFLOAT). 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.
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 normas 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
TIMESTAMP
TIMESTAMP ( expresin ,expresin )
Captulo 3. Funciones
409
TIMESTAMP
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 normas 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 normas 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 v Si slo se especifica un argumento y es una indicacin de fecha y hora: El resultado es esa indicacin de fecha y hora. 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)
TIMESTAMP_FORMAT
TIMESTAMP_FORMAT ( expresin-serie , serie-formato )
410
TIMESTAMP_FORMAT
El esquema es SYSIBM. La funcin TIMESTAMP_FORMAT devuelve una indicacin de fecha y hora que se basa en la interpretacin de la serie de entrada utilizando el formato especificado. expresin-serie Expresin que devuelve un valor del tipo de datos CHAR o VARCHAR, con un atributo de longitud que no es superior a 254 (SQLSTATE 42815). La expresin-serie debe contener los componentes de una indicacin de fecha y hora que corresponden al formato especificado por serie-formato. serie-formato Expresin que devuelve un valor de un tipo de datos de serie de caracteres incorporado, con un atributo de longitud que no es superior a 254 bytes (SQLSTATE 22007). La serie-formato contiene una plantilla de cmo la expresin-serie se interpreta y, a continuacin, se convierte en un valor de indicacin de fecha y hora. El contenido de serie-formato puede especificarse de forma mixta. Una serie-formato vlida debe contener como mnimo un elemento de formato, no debe contener varias especificaciones para cualquier componente de una indicacin de fecha y hora y puede contener cualquier combinacin de los elementos de formato, a menos que se indique lo contrario en Tabla 39 (SQLSTATE 22007). Por ejemplo, serie-formato no puede contener YY e YYYY, porque ambos se utilizan para interpretar el componente de ao de expresin-serie. Consulte la tabla para determinar qu elementos de formato no se pueden especificar juntos. Dos elementos de formato se pueden separar opcionalmente por uno o varios de los siguientes caracteres separadores: v guin (-) v punto (.) v barra inclinada (/) v coma (,) v apstrofo () v punto y coma (;) v dos puntos (:) v espacio en blanco ( ) Tambin se pueden especificar caracteres separadores al principio o al final de serie-formato. Los caracteres separadores en serie-formato no tienen que coincidir exactamente con las especificaciones de expresin (se ignoran los separadores).
Tabla 39. Elementos de formato para la funcin TIMESTAMP_FORMAT Componentes relacionados de una indicacin de fecha y hora da mes, da microsegundos
Descripcin Da del mes (01-31). Da del ao (001-366). Segundos fraccionados (0-999999). El nmero n se utiliza para especificar el nmero de dgitos esperados en la expresin-serie. Los valores vlidos para n son 1-6. El valor por omisin es 6.
Captulo 3. Funciones
411
TIMESTAMP_FORMAT
Tabla 39. Elementos de formato para la funcin TIMESTAMP_FORMAT (continuacin) Componentes relacionados de una indicacin de fecha y hora hora hora
Descripcin HH se comporta igual que HH12. Hora del da (01-12) en formato de 12 horas. AM es el indicador de meridiano por omisin. Hora del da (00-24) en formato de 24 horas. Da del calendario juliano (nmero de das desde el 1 de enero, 4713 AC). Minuto (00-59). Mes (01-12). Microsegundos (000000-999999). Igual que FF6. Dos ltimos dgitos del ao ajustado (00-99). Ao ajustado de 4 dgitos (0000-9999). Segundos (00-59). Segundos desde la medianoche anterior (00000-86400). ltimo dgito del ao (0-9). Se utilizan los tres primeros dgitos del ao actual para determinar el ao completo de 4 dgitos. Dos ltimos dgitos del ao (00-99). Se utilizan los dos primeros dgitos del ao actual para determinar el ao completo de 4 dgitos. Tres ltimos dgitos del ao (000-999). Se utiliza el primer dgito del ao actual para determinar el ao completo de 4 dgitos. Ao de 4 dgitos (0000-9999).
HH24 J
MI MM NNNNNN
RR RRRR SS SSSSS
ao
AA
ao
AAA
ao
AAAA
ao
Los elementos de formato RR y RRRR se pueden utilizar para modificar cmo se debe interpretar una especificacin de un ao ajustando el valor para producir un valor de 2 dgitos o un valor de 4 dgitos en funcin de los dos dgitos situados ms a la izquierda del ao actual de acuerdo con la tabla siguiente.
412
TIMESTAMP_FORMAT
Dos primeros dgitos del componente de ao de la indicacin de fecha y hora Dos primeros dgitos del ao actual Dos primeros dgitos del ao actual + 1 Dos primeros dgitos del ao actual - 1 Dos primeros dgitos del ao actual
Por ejemplo, si el ao actual es 2007, 86 con el formato RR significa 1986, pero si el ao actual es 2052, significa 2086. Se utilizan los valores por omisin siguientes cuando una serie-formato no incluye un elemento de formato para uno de los siguientes componentes de una indicacin de fecha y hora:
Componente de indicacin de fecha y hora ao mes da hora minuto segundo microsegundo Valor por omisin ao actual mes actual 01 (primer da del mes) 00 00 00 000000
Se pueden especificar ceros iniciales para cualquier componente del valor de indicacin de fecha y hora (es decir mes, da, hora, minutos, segundos) que no tenga el nmero mximo de dgitos significativos para el elemento de formato correspondiente en serie-formato. Una subserie de expresin-serie que representa un componente de una indicacin de fecha y hora (por ejemplo ao, mes, da, hora, minutos, segundos) puede incluir un nmero menor de dgitos que el nmero mximo para dicho componente de la indicacin de fecha y hora indicada por el elemento de formato correspondiente. Los dgitos que faltan toman por omisin cero. Por ejemplo, con una serie-formato de YYYY-MM-DD HH24:MI:SS, un valor de entrada de 999-3-9 5:7:2 producir el mismo resultado que 0999-03-09 05:07:02. El resultado de la funcin es una indicacin de fecha y hora. 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. Notas: v Determinismo: La funcin TIMESTAMP_FORMAT se define generalmente como no determinista. La funcin slo es determinista si todo lo siguiente es verdadero: La serie-formato es una constante La serie-formato incluye un elemento de formato que define por completo el ao sin tener que utilizar el ao actual (incluye el elemento de formato YYYY o J)
Captulo 3. Funciones
413
TIMESTAMP_FORMAT
La serie-formato define el mes sin tener que utilizar el mes actual (incluye el elemento de formato MM o J) v Alternativas de sintaxis: TO_DATE y TO_TIMESTAMP son sinnimos de TIMESTAMP_FORMAT. Ejemplos: 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 que el principio del ao 2000 (31 de diciembre de 1999 a las 23:59:59).
INSERT INTO IN_TRAY (RECEIVED) VALUES (TIMESTAMP_FORMAT('1999-12-31 23:59:59', 'AAAA-MM-DD HH24:MI:SS'))
v Una aplicacin recibe series de informacin de fecha en una variable denominada INDATEVAR. Este valor no se formatea de forma estricta y puede incluir dos o cuatro dgitos para aos y uno o dos dgitos para meses y das. Los componentes de fecha se pueden separar con caracteres de guin (-) o barra inclinada (/) y se espera que estn en el orden de da, mes y ao. La informacin de hora consta de horas (en formato de 24 horas) y minutos y se suele separar mediante dos puntos. 15/12/98 13:48 y 9-3-2004 8:02 son valores de ejemplo. Inserte valores de este tipo en la tabla IN_TRAY.
INSERT INTO IN_TRAY (RECEIVED) VALUES (TIMESTAMP_FORMAT(:INDATEVAR, 'DD/MM/RRRR HH24:MI'))
El uso de RRRR en el formato permite valores de ao de 2 y 4 dgitos y asigna los dos primeros dgitos que faltan basndose en el ao actual. Si se utiliza YYYY, los valores de entrada con un ao de 2 dgitos tendr ceros iniciales. El separador de barra inclinada tambin permite el carcter de guin. Suponiendo un ao actual de 2007, las indicaciones de fecha y hora resultantes de los valores de ejemplo son:
'15/12/98 13:48' --> 1998-12-15-13.48.00.000000 '9-3-2004 8:02' --> 2004-03-09-08.02.00.000000
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.
414
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 2 4 8 16 32 64 128 256 Fracciones de segundo Segundos Minutos Horas Das Semanas Meses Trimestres 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
415
TIMESTAMPDIFF
TIMESTAMPDIFF(4,CHAR(TIMESTAMP('2001-09-29-11.25.42.483219') TIMESTAMP('2001-09-26-12.07.58.065497')))
TO_CHAR
TO_CHAR ( expresin-fecha-hora ,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 sinnimo de VARCHAR_FORMAT.
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 sinnimo de TIMESTAMP_FORMAT.
TOTALORDER
TOTALORDER ( expresin-decfloat1 , expresin-decfloat2 )
El esquema es SYSIBM. La funcin TOTALORDER devuelve un valor SMALLINT de -1, 0 1 que indica el orden de comparacin de dos argumentos. expresin-decfloat1 Una expresin que devuelve un valor de cualquier tipo de datos numrico interno. Si el argumento no es DECFLOAT(34), se convierte de forma lgica a DECFLOAT(34) para procesarse. expresin-decfloat2 Una expresin que devuelve un valor de cualquier tipo de datos numrico interno. Si el argumento no es un valor de coma flotante decimal, se convertir a DECFLOAT(34) para su proceso. La comparacin numrica es exacta y el resultado se determina para operandos finitos como si el rango y la precisin fueran ilimitados. Una condicin de desbordamiento o subdesbordamiento no puede producirse. Si un valor es DECFLOAT(16) y el otro es DECFLOAT(34), el valor DECFLOAT(16) se convierte a DECFLOAT(34) antes de que se efecte la comparacin. La semntica de la funcin TOTALORDER se basa en las normas de predicado de orden total de IEEE 754R. TOTALORDER devuelve los valores siguientes:
416
TOTALORDER
v -1 si expresin-decfloat1 es inferior en orden en comparacin con expresin-decfloat2 v 0 si tanto expresin-decfloat1 como expresin-decfloat2 tienen el mismo orden v -1 si expresin-decfloat1 es superior en orden en comparacin con expresin-decfloat2 El orden de los valores especiales y nmeros finitos es como sigue:
-NAN<-SNAN<-INFINITY<-0.10<-0.100<-0<0<0.100<0.10<INFINITY<SNAN<NAN
El resultado de la funcin es un valor SMALLINT. Si el argumento puede ser nulo, el resultado puede ser nulo; si cualquier argumento es nulo, el resultado es el valor nulo. Ejemplos: v Los ejemplos siguientes muestran el uso de la funcin TOTALORDER para comparar valores de coma flotante decimal:
TOTALORDER(-INFINITY, -INFINITY) = 0 TOTALORDER(DECFLOAT(-1.0), DECFLOAT(-1.0)) = 0 TOTALORDER(DECFLOAT(-1.0), DECFLOAT(-1.00)) = -1 TOTALORDER(DECFLOAT(-1.0), DECFLOAT(-0.5)) = -1 TOTALORDER(DECFLOAT(-1.0), DECFLOAT(0.5)) = -1 TOTALORDER(DECFLOAT(-1.0), INFINITY) = -1 TOTALORDER(DECFLOAT(-1.0), SNAN) = -1 TOTALORDER(DECFLOAT(-1.0), NAN) = -1 TOTALORDER(NAN, DECFLOAT(-1.0)) = 1 TOTALORDER(-NAN, -NAN) = 0 TOTALORDER(-SNAN, -SNAN) = 0 TOTALORDER(NAN, NAN) = 0 TOTALORDER(SNAN, SNAN) = 0 TOTALORDER(-1.0, -1.0) = 0 TOTALORDER(-1.0, -1.00) = -1 TOTALORDER(-1.0, -0.5) = -1 TOTALORDER(-1.0, 0.5) = -1 TOTALORDER(-1.0, INFINITY) = -1 TOTALORDER(-1.0, SNAN) = -1 TOTALORDER(-1.0, NAN) = -1
, ,
) car-relleno
Captulo 3. Funciones
417
418
TRIM
TRIM ( BOTH FROM B LEADING L TRAILING T carcter-supresin expresin-serie )
Captulo 3. Funciones
419
TRIM
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. El carcter-supresin puede ser cualquier carcter cuya codificacin UTF-32 sea un carcter individual. Se compara la representacin binaria del carcter. 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 grfica UCS-2, el carcter-supresin por omisin es un espacio en blanco UCS-2 (X0020) v De lo contrario, el carcter-supresin por omisin es un espacio en blanco SBCS (X20) 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
TRUNCATE
TRUNCATE ( expresin1 , expresin2 )
420
TRUNCATE
El esquema es SYSIBM. (La versin SYSFUN de la funcin TRUNCATE 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 si el argumento no es un nmero de coma flotante decimal y la base de datos est configurada con DFT_SQLMATHWARN establecido en YES; el resultado es el valor nulo si el argumento es nulo. Puede especificarse TRUNC en lugar de TRUNCATE. 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 ( TRUNCATE(873.726,2), TRUNCATE(873.726,1), TRUNCATE(873.726,0), TRUNCATE(873.726,-1), TRUNCATE(873.726,-2), TRUNCATE(873.726,-3) );
Este ejemplo devuelve 873.720, 873.700, 873.000, 870.000, 800.000 y 0.000. v Visualice el nmero de coma flotante decimal 873.726 truncado 0 decimales.
VALUES(TRUNCATE(DECFLOAT(873.726),0))
Captulo 3. Funciones
421
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
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
422
TYPE_NAME
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
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.
UCASE
UCASE ( expresin )
El esquema es SYSIBM. La funcin UCASE es idntica a la funcin TRANSLATE excepto en que slo se especifica el primer argumento (exp-serie-car). UCASE es sinnimo de UPPER.
Captulo 3. Funciones
423
UPPER
UPPER ( expresin )
El esquema es SYSIBM. (La versin SYSFUN de esta funcin sigue estando disponible para la compatibilidad con versiones superiores.) La funcin UPPER es idntica a la funcin TRANSLATE excepto en 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.
El esquema es SYSIBM. La funcin UPPER devuelve una serie en la que todos los caracteres se han convertido a maysculas utilizando las normas asociadas con el entorno local especificado. expresin-serie Expresin que devuelve una serie CHAR, VARCHAR, GRAPHIC o VARGRAPHIC. Si expresin-serie es CHAR o VARCHAR, la expresin no debe ser FOR BIT DATA (SQLSTATE 42815). nombre-entorno-local Constante de tipo carcter que especifica el entorno local que define las normas de conversin a caracteres en maysculas. El valor de nombre-entorno-local no es sensible a las maysculas y minsculas y debe ser un entorno local vlido (SQLSTATE 42815). Para obtener informacin sobre los entornos locales vlidos y su significado, consulte Nombres de entorno local para SQL y XQuery. unidades-cdigo Constante entera que especifica el nmero de unidades de cdigo en el resultado. Si se especifica, unidades-cdigo debe ser un entero entre 1 y 32.672 si el resultado son datos de tipo carcter o entre 1 y 16.336 si el resultado son datos grficos (SQLSTATE 42815). Si unidades-cdigo no se especifica de forma explcita, es implcitamente el atributo de longitud de expresin-serie. Si se especifica OCTETS y el resultado son datos grficos, el valor de unidades-cdigo debe ser par (SQLSTATE 428GC). CODEUNITS16, CODEUNITS32 u OCTETS Especifica la unidad de serie de unidades-cdigo.
424
La longitud real del resultado puede ser mayor que la longitud de expresin-serie. Si la longitud real del resultado es mayor que el atributo de longitud del resultado, se devuelve un error (SQLSTATE 42815). Si el nmero de unidades de cdigo del resultado excede el valor de unidades-cdigo, se devuelve un error (SQLSTATE 42815). Si expresin-serie no est en UTF-16, esta funcin realiza la conversin de pgina de cdigos de expresin-serie a UTF-16 y del resultado de UTF-16 a la pgina de cdigos de expresin-serie. Si cualquiera de las conversiones de pgina de cdigos produce como mnimo un carcter de sustitucin, el resultado incluye el carcter de sustitucin, se devuelve un aviso (SQLSTATE 01517) y el distintivo de aviso SQLWARN8 de la SQLCA se establece en W. 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 Asegrese de que los caracteres del valor de la columna JOB de la tabla EMPLOYEE se devuelvan en maysculas.
SELECT UPPER(JOB, 'en_US') FROM EMPLOYEE WHERE EMPNO = '000020'
El resultado es el valor MANAGER. v Busque las maysculas de todos los caracteres I de una serie en idioma turco.
Captulo 3. Funciones
425
El resultado es la serie SS. Tenga en cuenta que en este ejemplo se deben especificar unidades-cdigo porque hay ms unidades de cdigo en el resultado que en expresin-serie.
VALUE
VALUE
expresin
,expresin
El esquema es SYSIBM. La funcin VALUE devuelve el primer argumento que no es nulo. VALUE es sinnimo de COALESCE.
VARCHAR
De caracteres a varchar:
VARCHAR ( expresin-carcter , entero )
De grfico a varchar:
VARCHAR ( expresin-grfica , entero )
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:
426
VARCHAR
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 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-fecha-hora 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'
VARCHAR_BIT_FORMAT
VARCHAR_BIT_FORMAT ( expresin-character-expression , serie-formato )
El esquema es SYSIBM.
Captulo 3. Funciones
427
VARCHAR_BIT_FORMAT
La funcin VARCHAR_BIT_FORMAT devuelve una representacin de serie de bits de una serie de caracteres que se ha formateado 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-caracteres Expresin que devuelve un valor que es una serie de caracteres incorporada que no es un CLOB (SQLSTATE 42815). La longitud necesaria la determinan la serie de formato especificada y el modo en que se interpreta el valor. serie-formato Constante de caracteres que contiene una plantilla que indica cmo se debe interpretar el valor de expresin-carcter. Las series de formato vlidas incluyen: 'xxxxxxxx-xxxx-xxxx-xxxxxxxxxxxxxxxx' y 'XXXXXXXX-XXXX-XXXX-XXXX-XXXXXXXXXXXX' (SQLSTATE 42815) donde cada x o X corresponde a un dgito hexadecimal en el resultado. El resultado de la funcin es una serie de caracteres de longitud variable FOR BIT DATA con el atributo de longitud y la longitud real basada en la serie de formato. Para las dos series de formato vlidas listadas ms arriba, el atributo de longitud es 36 y la longitud real es 16 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. Ejemplos v Representar un identificador exclusivo universal en su formato binario:
VARCHAR_BIT_FORMAT('d83d6360-1818-11db-9804-b622a1ef5492', 'xxxxxxxx-xxxx-xxxx-xxxx-xxxxxxxxxxxx')
Resultado devuelto:
x'D83D6360181811DB9804B622A1EF5492'
Resultado devuelto:
x'D83D6360181811DB9804B622A1EF5492'
VARCHAR_FORMAT
VARCHAR_FORMAT ( expresin-indicacin-fecha-hora , serie-formato )
El esquema es SYSIBM. La funcin VARCHAR_FORMAT devuelve una representacin de serie de una indicacin de fecha y hora que se ha formateado de acuerdo con una plantilla de caracteres especificada. expresin-indicacin-fecha-hora Expresin que devuelve un valor de una indicacin de fecha y hora incorporada o de un tipo de datos de serie de caracteres incorporado cuyo atributo de longitud no es superior a 254. El valor devuelto contiene una representacin de serie vlida de una indicacin de fecha y hora (SQLSTATE 42815 o SQLSTATE 22007). Para conocer los formatos vlidos de las
428
VARCHAR_FORMAT
representaciones de serie de indicaciones de fecha y hora, consulte Representacin mediante series de los valores de fecha y hora en la pgina 88. Si expresin-indicacin-fecha-hora es una serie de caracteres, se eliminan los espacios en blanco iniciales y de cola antes de convertir el valor en una indicacin de fecha y hora. serie-formato Expresin que devuelve un valor de un tipo de datos de serie de caracteres incorporado, con un atributo de longitud que no es superior a 254 bytes (SQLSTATE 22007). La serie-formato contiene una plantilla de cmo se debe formatear expresin-indicacin-fecha-hora. Una serie-formato vlida debe contener una combinacin de los elementos de formato listados ms abajo (SQLSTATE 22007). Dos elementos de formato se pueden separar opcionalmente por uno o varios de los siguientes caracteres separadores: v guin (-) v punto (.) v barra inclinada (/) v coma (,) v apstrofo () v punto y coma (;) v dos puntos (:) v espacio en blanco ( ) Tambin se pueden especificar caracteres separadores al principio o al final de serie-formato.
Tabla 41. Elementos de formato para la funcin VARCHAR_FORMAT Elemento de formato CC Descripcin Siglo (01-99). Si los dos ltimos dgitos del ao de cuatro dgitos son cero, el resultado son los dos primeros dgitos del ao. De lo contrario, el resultado son los dos primeros dgitos del ao ms uno. Da del mes (01-31). Da del ao (001-366). Segundos fraccionados (0-999999). El nmero n se utiliza para especificar el nmero de dgitos a incluir en el valor devuelto. Los valores vlidos para n son 1-6. El valor por omisin es 6. HH se comporta igual que HH12. Hora del da (01-12) en formato de 12 horas. AM es el indicador de meridiano por omisin. Hora del da (00-24) en formato de 24 horas. Semana ISO del ao (01-53). La semana empieza el lunes e incluye siete das. La semana 1 es la primera semana del ao que contiene un jueves, lo que es equivalente a la primera semana del ao que contiene el 4 de enero.
DD DDD FF[n]
HH HH12
HH24 IW
Captulo 3. Funciones
429
VARCHAR_FORMAT
Tabla 41. Elementos de formato para la funcin VARCHAR_FORMAT (continuacin) Elemento de formato I IY IYY Descripcin Ao ISO (0-9). ltimo dgito del ao basado en la semana ISO que se devuelve. Ao ISO (00-99). Dos ltimos dgitos del ao basado en la semana ISO que se devuelve. Ao ISO (000-999). Tres ltimos dgitos del ao basado en la semana ISO que se devuelve. Ao ISO (0000-9999). 4 dgitos del ao basado en la semana ISO que se devuelve. Da del calendario juliano (nmero de das desde el 1 de enero, 4713 AC). Minuto (00-59). Mes (01-12). Microsegundos (000000-999999). Igual que FF6. Trimestre (1-4), donde los meses de enero a marzo devuelven 1. RR se comporta igual que YY. RRRR se comporta igual que YYYY. Segundos (00-59). Segundos desde la medianoche anterior (00000-86400). Semana del mes (1-5), donde la semana 1 empieza el primer da del mes y finaliza el sptimo da. Semana del ao (01-53), donde la semana 1 empieza el 1 de enero y finaliza el 7 de enero. ltimo dgito del ao (0-9). Dos ltimos dgitos del ao (00-99). Tres ltimos dgitos del ao (000-999). Ao de 4 dgitos (0000-9999).
WW
Y AA AAA AAAA
El resultado es una representacin de expresin-indicacin-fecha-hora en el formato especificado por serie-formato. La serie-formato se interpreta como una serie de elementos de formato que opcionalmente se pueden separar mediante uno o ms caracteres separadores. Una serie de caracteres en serie-formato se interpreta como el elemento de formato coincidente ms largo de Tabla 41 en la pgina 429. Si dos elementos de formato que contienen los mismos caracteres no estn delimitados por un carcter separador, la especificacin se interpreta, empezando desde la izquierda, como el elemento de formato coincidente ms largo de la tabla y contina hasta que se encuentran coincidencias para el resto de la serie de formato. Por ejemplo, YYYYYYDD se interpreta como los elementos de formato YYYY, YY y DD. El resultado es una serie de caracteres de longitud variable. El atributo de longitud es el valor mayor entre 100 y el atributo de longitud de la serie-formato. La
430
VARCHAR_FORMAT
serie-formato tambin determina el atributo de longitud y la longitud real del resultado. La serie resultante no debe exceder el atributo de longitud del resultado (SQLSTATE 22007). Si el argumento puede ser nulo, el resultado puede ser nulo; si cualquier argumento es nulo, el resultado es el valor nulo. Notas: v Alternativas de la sintaxis: TO_CHAR es sinnimo de VARCHAR_FORMAT. 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(TABNAME, 20) AS TABLE_NAME, VARCHAR_FORMAT(CREATE_TIME, 'YYYY-MM-DD HH24:MI:SS') AS CREATION_TIME FROM SYSCAT.TABLES WHERE TABNAME LIKE 'SYSU%'
v Suponga que la variable TMSTAMP tiene el valor siguiente: 2007-03-09-14.07.38.123456. Los ejemplos siguientes muestran varias invocaciones de la funcin y los valores de serie resultantes. En cada caso el tipo de resultado es VARCHAR(100).
Invocacin de funcin Resultado -----------------------VARCHAR_FORMAT(TMSTAMP,'YYYYMMDDHHMISSFF3') 20070309020738123 VARCHAR_FORMAT(TMSTAMP,'YYYYMMDDHH24MISS') 20070309140738 VARCHAR_FORMAT(TMSTAMP,'YYYYMMDDHHMI') 200703090207 VARCHAR_FORMAT(TMSTAMP,'DD/MM/YY') 09/03/07 VARCHAR_FORMAT(TMSTAMP,'MM-DD-YYYY') 03-09-2007 VARCHAR_FORMAT(TMSTAMP,'J') 2454169 VARCHAR_FORMAT(TMSTAMP,'Q') 1 VARCHAR_FORMAT(TMSTAMP,'W') 2 VARCHAR_FORMAT(TMSTAMP,'IW') 10 VARCHAR_FORMAT(TMSTAMP,'WW') 10
VARCHAR_FORMAT_BIT
VARCHAR_FORMAT_BIT ( expresin-datos-bits , serie-formato )
El esquema es SYSIBM. La funcin VARCHAR_FORMAT_BIT devuelve una representacin de caracteres de una serie de bits a la que se ha dado formato utilizando una plantilla de caracteres. expresin-datos-bits Expresin que devuelve un valor que es un tipo de datos FOR BIT DATA de serie de caracteres incorporada (SQLSTATE 42815). La longitud necesaria la determinan la serie de formato especificada y el modo en que se interpreta el valor.
Captulo 3. Funciones
431
VARCHAR_FORMAT_BIT
serie-formato Una constante de caracteres que contiene una plantilla para el formato que deben darse al resultado. Las series de formato vlidas incluyen: 'xxxxxxxx-xxxx-xxxx-xxxxxxxxxxxxxxxx' y 'XXXXXXXX-XXXX-XXXX-XXXX-XXXXXXXXXXXX' (SQLSTATE 42815) donde cada x o X corresponde a un dgito hexadecimal de expresin-datos-bit. El resultado de la funcin es una serie de caracteres de longitud variable con el atributo de longitud y la longitud real basada en la serie de formato. Para las dos series de formato vlidas listadas ms arriba, el atributo de longitud es 36 y la longitud real es 36 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. Ejemplos v Representar un identificador exclusivo universal en su forma con formato:
VARCHAR_FORMAT_BIT(cast(x'd83d6360181811db9804b622a1ef5492' as varchar(16) for bit data), 'xxxxxxxx-xxxx-xxxx-xxxx-xxxxxxxxxxxx')
Resultado devuelto:
'd83d6360-1818-11db-9804-b622a1ef5492'
Resultado devuelto:
'D83D6360-1818-11DB-9804-B622A1EF5492'
VARGRAPHIC
De grfico a vargraphic:
VARGRAPHIC ( expresin-grfica , entero )
De caracteres a vargraphic:
VARGRAPHIC ( expresin-carcter )
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
432
VARGRAPHIC
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). 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.
Captulo 3. Funciones
433
VARGRAPHIC
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-fecha-hora Una expresin cuyo valor debe ser del tipo de datos DATE, TIME o TIMESTAMP.
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.
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:
434
WEEK_ISO
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
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, consulte 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. Nota: 1. Soporte en 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).
Captulo 3. Funciones
435
XMLATTRIBUTES
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" ) ) AS "Result" FROM EMPLOYEE E WHERE E.EDLEVEL = 12
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' )
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 - '-')))*
436
XMLCOMMENT
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. Nota: 1. Soporte en bases de datos de varias particiones de base de datos: XMLCOMMENT no est soportado (SQLSTATE 42997).
XMLCONCAT
XMLCONCAT
expresin-XML
XML-expresin
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. Nota: 1. Soporte en bases de datos de 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" ),
Captulo 3. Funciones
437
XMLCONCAT
XMLAGG( XMLELEMENT( NAME "emp", E.FIRSTNME ) ORDER BY E.FIRSTNME ) ) ) FROM EMPLOYEE E WHERE E.WORKDEPT IN ('A00', 'B01') GROUP BY E.WORKDEPT
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.
438
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. Nota: 1. Soporte en bases de datos de varias particiones de base de datos: XMLDOCUMENT no est soportado (SQLSTATE 42997). Ejemplo: v Insertar un documento construido en una columna XML.
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' ) )
XMLELEMENT
XMLELEMENT ( NAME nombre-elemento , declaracin-xmlnamespaces
funcin-xmlattributes , expresin-contenido-elemento ) (1) EMPTY ON NULL NULL ON NULL XMLBINARY USING XMLBINARY HEX (2) USING BASE64 (3)
OPTION
Notas: 1 2 3 La clusula OPTION slo puede especificarse si, como mnimo, se ha especificado una funcin-xmlattributes o una expresin-contenido-elemento. NULL ON NULL o EMPTY ON NULL slo puede especificarse si, como mnimo, se ha especificado una expresin-contenido-elemento. Una misma clusula no se debe especificar ms de una vez.
Captulo 3. Funciones
439
XMLELEMENT
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, consulte 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 expresin o una lista de expresiones. El tipo de datos de expresin-contenidoelemento 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.
440
XMLELEMENT
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. 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. Nota: 1. Soporte en bases de datos de varias particiones de base de datos: la funcin slo recibe el soporte que reciba en la Versin 8. El resultado, en el nivel externo del anidamiento de la funcin de valor XML, debe ser 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
Captulo 3. Funciones
441
XMLELEMENT
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 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. 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. 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. 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. 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.
d.
e.
f.
g.
442
XMLELEMENT
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-contenidoelemento, 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 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" ) )
Captulo 3. Funciones
443
XMLELEMENT
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
v Producir un elemento con una lista de elementos anidados como elementos hijos.
SELECT XMLELEMENT( NAME "Department", XMLATTRIBUTES( E.WORKDEPT AS "name" ), 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
444
XMLFOREST
XMLFOREST
XMLFOREST ( declaracin-xmlnamespaces ,
, expresin-contenido-elemento AS nombre-elemento ) NULL ON NULL EMPTY ON NULL USING XMLBINARY USING XMLBINARY HEX BASE64 (1)
OPTION
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, consulte 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,
Captulo 3. Funciones
445
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-contenidoelemento. 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
446
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 ) ... )
Nota: 1. Soporte en bases de datos de varias particiones de base de datos: la funcin slo recibe el soporte que reciba en la Versin 8. El resultado, en el nivel externo del anidamiento de la funcin de valor XML, debe ser 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
447
XMLFOREST
XMLNAMESPACES
declaracin-xmlnamespaces:
XMLNAMESPACES
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
448
XMLNAMESPACES
de nombres por omisin en el mbito salvo que una declaracin DEFAULT altere temporalmente este valor en un mbito anidado. 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'
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
Captulo 3. Funciones
449
XMLNAMESPACES
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>
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 parmetro, 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. Nota: 1. Soporte en bases de datos de varias particiones de base de datos: XMLPARSE no est soportado (SQLSTATE 42997).
450
XMLPARSE
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 bases de datos. Esta 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. 4. Conversin de caracteres en bases de datos no UTF-8: La conversin de pgina de cdigos se produce cuando se analiza un documento XML en un servidor de bases de datos no Unicode, si el documento se pasa desde una variable del lenguaje principal o marcador de parmetro de un tipo de datos de caracteres o desde una literal de serie de caracteres. La accin de analizar un documento XML utilizando un marcador de parmetro o variable del lenguaje principal del tipo XML, BLOB o FOR BIT DATA (CHAR FOR BIT DATA o VARCHAR FOR BIT DATA) impedir la conversin de pgina de cdigos. Cuando se utiliza un tipo de datos de caracteres, deben tomarse precauciones para asegurarse de que todos los caracteres del documento XML tengan un elemento de cdigo coincidente en la pgina de cdigos de la base de datos destino, en caso contrario es posible que se introduzcan caracteres de sustitucin. Puede utilizarse el parmetro de configuracin enable_xmlchar para ayudar a asegurar la integridad de los datos XML almacenados en una base de datos no Unicode. Establecer este parmetro en NO bloquea la insercin de documentos XML de tipos de datos de caracteres. Los tipos de datos BLOB y FOR BIT DATA se siguen permitiendo, porque los documentos pasados a una base de datos utilizando estos tipos de datos evitan la conversin de pgina de cdigos.
Ejemplo
Si se utiliza la opcin PRESERVE WHITESPACE se conservan los caracteres de espacio en blanco del documento XML insertado en la tabla, incluidos los existentes en el elemento de descripcin.
Captulo 3. Funciones
451
XMLPARSE
INSERT INTO PRODUCT VALUES ('100-103-99','Bolsa herram',14.95,NULL,NULL,NULL, XMLPARSE( DOCUMENT '<produce xmlns="http://posample.org" pid="100-103-99"> <description> <name>Bolsa de herramientas</name> <details> Bolsa de herramientas Super Deluxe: - 26 pulgadas de longitud, 12 pulgadas de ancho - Mango almohadillado curvo - Cerradura de bloqueo - Bolsillos exteriores reforzados </details> <price>14,95</price> <weight>3 kg</weight> </description> </product>' PRESERVE WHITESPACE ));
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.
452
XMLPI
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. Nota: 1. Soporte en bases de datos de varias particiones de base de datos: XMLPI no est soportado (SQLSTATE 42997). Ejemplos: v Generar un nodo de instruccin de proceso XML.
SELECT XMLPI( NAME "Instruction", 'Push the red button' ) FROM SYSIBM.SYSDUMMY1
XMLQUERY
XMLQUERY ( constante-expresin-xquery
argumento-xquery:
(1) expresin-variable-xquery AS identificador BY REF
453
XMLQUERY
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 a UTF-8 antes de analizarse como sentencia XQuery. 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 constante-expresin-xquery no debe ser una serie vaca o una 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. Por omisin, cada nombre de columna exclusivo en el mbito en el que se invoca la funcin se pasa implcitamente a la expresin XQuery utilizando el nombre de la columna como nombre de variable. Si un identificador de un argumento-xquery especificado coincide con el nombre de columna con mbito, entonces el argumento-xquery explcito se pasa a la expresin XQuery alterando temporalmente dicha columna implcita. 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. 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, 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, se presenta un valor igual a valor-xml-entrada a una variable XQuery y la clusula AS especifica un nombre.
454
XMLQUERY
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). El tipo de datos de la expresin no puede ser DECFLOAT. 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 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. 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).
Captulo 3. Funciones
455
XMLQUERY
Nota: 1. Restricciones de uso de XMLQUERY: La funcin XMLQUERY no puede formar parte de los elementos siguientes: v Parte de la clusula ON asociada a un operador JOIN o una sentencia MERGE (SQLSTATE 42972) v Parte de la clusula GENERATE KEY USING o RANGE THROUGH de la sentencia CREATE INDEX EXTENSION (SQLSTATE 428E3) v Parte de la clusula FILTER USING de la sentencia CREATE FUNCTION (escalar externa) o 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 de varias particiones de base de datos: XMLQUERY no est soportado (SQLSTATE 42997).
XMLROW
La funcin XMLROW devuelve un valor XML con un nico nodo de documento XQuery que contiene un nodo de elemento de nivel superior.
, XMLROW ( expresin AS identificador-qname ) (1) OPTION ROW fila ROW nombre-fila AS ATTRIBUTES
El esquema es SYSIBM. El nombre de la funcin no puede especificarse como un nombre calificado. expresin El contenido de cada nodo de elemento XML generado se especifica mediante una expresin. El tipo de datos de la expresin 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 identificador-qname Especifica el nombre de elemento XML o nombre de atributo como identificador SQL. El identificador-qname debe tener el formato de un nombre de calificador XML o QName (SQLSTATE 42634). Para obtener ms informacin
456
XMLROW
sobre los nombres vlidos, consulte 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 identificador-qname. expresin debe ser un nombre de columna (SQLSTATE 42703, SQLCODE -206). El nombre de elemento o 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 QName. OPTION Especifica opciones adicionales para construir el valor XML. Si no se especifica ninguna clusula OPTION, se aplica el comportamiento por omisin. AS ATTRIBUTES Especifica que cada expresin est correlacionada a un valor de atributo que tenga nombre de columna o identificador-qname que sirva como nombre de atributo. ROW nombre-fila Especifica el nombre del elemento al que est correlacionado cada fila. Si no se especifica esta opcin, el nombre de elemento por omisin es fila.
Notas
Por omisin, cada fila del conjunto de resultados se correlaciona con un valor XML del siguiente modo: v Cada fila se transforma en un elemento XML denominado fila y cada columna se transforma en un elemento anidado con el nombre de columna como nombre de elemento. v El comportamiento de manejo de nulos por omisin es NULL ON NULL. Un valor de NULL de una columna se correlaciona con la ausencia del subelemento. Si todos los valores de columna son NULL, la funcin devolver un valor NULL. v El esquema de codificacin binario para los tipos de datos BLOB y FOR BIT DATA es la codificacin base64Binary. v Un nodo de documento se aadir implcitamente al elemento de fila para hacer que el resultado de XML sea un documento XML con una sola raz bien formado.
Ejemplos
Suponga que existe la siguiente tabla T1 en la que las columnas C1 y C2 contienen datos numricos almacenados en un formato relacional:
C1 C2 ----------- ----------1 2 2 1 4 record(s) selected.
v El ejemplo siguiente muestra una consulta XMLRow y un fragmento de salida con el comportamiento por omisin, utilizando una secuencia de los elementos de fila para representar la tabla:
SELECT XMLROW(C1, C2) FROM T1
Captulo 3. Funciones
457
XMLROW
<row><C1>1</C1><C2>2</C2></row> <row><C2>2</C2></row> <row><C1>1</C1></row> 4 record(s) selected.
v El siguiente ejemplo muestra un fragmento de salida y consulta XMLRow con correlacin cntrica de atributos. En vez de aparecer como elementos anidados como en el ejemplo anterior, los datos relacionales se correlacionan a los atributos de elementos:
SELECT XMLROW(C1, C2 OPTION AS ATTRIBUTES) FROM T1 <row C1="1" C2="2"/> <row C2="2"/> <row C1="1"/> 4 record(s) selected.
v El ejemplo siguiente muestra una consulta XMLRow y un fragmento de salida en el que el elemento <row> por omisin se sustituye por <entry>. Las columnas C1 y C2 se devuelven como los elementos <column1> y <column2> y el total de C1 y C2 se devuelve dentro de un elemento <total>:
SELECT XMLROW( C1 AS "column1", C2 AS "column2", C1+C2 AS "total" OPTION ROW "entry") FROM T1 <entry><column1>1</column1><column2>2</column2><total>3</total></entry> <entry><column2>2</column2></entry> <entry><column1>1</column1></entry> 4 record(s) selected.
XMLSERIALIZE
CONTENT XMLSERIALIZE ( expresin-XML AS tipo-datos
VERSION
1.0
(1) )
tipo-datos:
458
XMLSERIALIZE
(1) CHARACTER CHAR VARCHAR CHARACTER CHAR CLOB CHARACTER CHAR ( entero ) (
entero
BLOB BINARY
LARGE OBJECT
entero K M G
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). 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
Captulo 3. Funciones
459
XMLSERIALIZE
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. Nota: 1. Soporte 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.
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. Nota: 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.
460
XMLTEXT
VALUES ( XMLTEXT( 'El smbolo para las acciones de Johnson&Johnson es JNJ.' ) )
Tenga en cuenta que el signo & se correlaciona con & 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:
Captulo 3. Funciones
461
XMLTEXT
seqno -----1 2 3 plaintext ----------------------------------------------------------Esta consulta muestra cmo construir utilizando XMLAGG y XMLTEXT. Sin XMLAGG no tendr nodos de texto para agrupar con otros nodos, por lo tanto, no puede generar emphtext ------------conten. mixto XMLTEXT conten. mixto
SELECT XMLELEMENT( NAME "para", XMLAGG( XMLCONCAT( XMLTEXT( PLAINTEXT ), XMLELEMENT( NAME "emphasis", EMPHTEXT ) ) ORDER BY SEQNO ), '.' ) AS "result" FROM T
XMLVALIDATE
DOCUMENT XMLVALIDATE ( expresin-XML validar-XML-segn-clusula )
validar-XML-segn-clusula:
ACCORDING TO XMLSCHEMA ID nombre-esquema-XML URI uri1-XML NO NAMESPACE LOCATION
XML-uri2
clusula-elemento-vlido-XML
clusula-elemento-vlido-XML:
ELEMENT NAMESPACE uri3-XML NO NAMESPACE nombre-elemento-XML
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.
462
XMLVALIDATE
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 de lenguaje 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 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 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 uri2-XML 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 uri3-XML o NO NAMESPACE Especifica el espacio de nombres de destino para el elemento que se deba
Captulo 3. Funciones
463
XMLVALIDATE
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 uri3-XML 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). 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 de lenguaje 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 eliminarn 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. Nota: 1. Soporte en bases de datos de varias particiones de base de datos: XMLVALIDATE no est soportado (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
464
XMLVALIDATE
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(?))
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 identificador 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
Captulo 3. Funciones
465
XMLVALIDATE
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.
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. Nota: 1. Soporte en bases de datos de varias particiones de base de datos: XMLXSROBJECTID no est soportado (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
466
XMLXSROBJECTID
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
XSLTRANSFORM
Utilice XSLTRANSFORM para convertir datos XML a otros formatos, incluyendo la conversin de documentos XML que se ajustan a un esquema XML en documentos que se ajustan a otro esquema.
XSLTRANSFORM
tipo-datos:
( CHARACTER CHAR VARCHAR CHARACTER CHAR CLOB CHARACTER CHAR ( -1 ) ) (
entero
entero
entero
entero
El esquema es SYSIBM. Esta funcin no puede especificarse como nombre calificado. La funcin XSLTRANSFORM transforma un documento XML en un formato de datos diferente. Los datos pueden transformarse a cualquier formato posible para el procesador XSLT, incluido XML, HTML o texto plano (pero sin limitarse a stos).
Captulo 3. Funciones
467
XSLTRANSFORM
Todas las vas de acceso que utiliza XSLTRANSFORM son internas para el sistema de base de datos. Este mandato no puede utilizarse directamente en la actualidad con archivos u hojas de estilos que residan en un sistema de archivos externos. documento-xml Expresin que devuelve un documento XML bien formado con un tipo de datos de XML, CHAR, VARCHAR, CLOB o BLOB. Este es el documento que se transforma utilizando la hoja de estilos XSL especificada en hoja-estilos-xsl. Nota: EL documento XML debe como mnimo tener una nica raz y estar bien formado. hoja-estilos-xsl Expresin que devuelve un documento XML bien formado con un tipo de datos de XML, CHAR, VARCHAR, CLOB o BLOB. El documento es una hoja de estilos XSL que se adecua a la Recomendacin W3C XSLT Versin 1.0. No se soportan las hojas de estilo que incorporan sentencias XQUERY o la declaracin xsl:include. Esta hoja de estilos se aplica al objeto de transformar el valor especificado en documento-xml. parmetros-xsl Expresin que devuelve un nulo o un documento XML bien formado con un tipo de datos de XML, CHAR, VARCHAR, CLOB o BLOB. Este es un documento que proporciona valores de parmetros a la hoja de estilos XSL especificada en hoja-estilos-xsl. El valor del parmetro puede especificarse como atributo o como nodo de texto. La sintaxis del documento del parmetro es la siguiente:
<params xmlns="http://www.ibm.com/XSLTransformParameters"> <param name="..." value="..."/> <param name="...">enter value here</param> ... </params>
Nota: El documento de hoja de estilos debe tener xsl:param elemento(s) en el mismo con valores de atributo de nombres que coincidan con los especificados en el documento del parmetro. AS tipo-datos Especifica el tipo de datos del resultado. El atributo de longitud implcito o explcito del tipo especificado de datos de resultados debe ser suficiente para contener la salida transformada (SQLSTATE 22001). El tipo de datos de resultados por omisin es CLOB(2G). Nota: Si el argumento documento-xml o el argumento hoja-estilos-xsl es nulo, el resultado ser nulo. La conversin de pgina de cdigos puede producirse al almacenar cualquiera de los documentos anteriores en una columna CHAR, VARCHAR o CLOB, lo cual podra dar como resultado una prdida de caracteres.
Ejemplo
468
Consulta de SQL, Volumen 1
XSLTRANSFORM
Este ejemplo ilustra el modo de utilizar XSLT como motor de formato. Para obtener la configuracin, inserte en primer lugar los dos documentos de ejemplo que hay a continuacin en la base de datos.
INSERT INTO XML_TAB VALUES (1, '<?xml version="1.0"?> <students xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xsi:noNamespaceSchemaLocation = "/home/steffen/xsd/xslt.xsd"> <student studentID="1" firstName="Steffen" lastName="Siegmund" age=23 university=Rostock/> </students>', '<?xml version="1.0" encoding="UTF-8"?> <xsl:stylesheet version="1.0" xmlns:xsl="http://www.w3.org/1999/XSL/Transform"> <xsl:param name="headline"/> <xsl:param name="showUniversity"/> <xsl:template match="students"> <html> <head/> <body> <h1><xsl:value-of select="$headline"/></h1> <table border="1"> <th> <tr> <td width="80">IDestudiante</td> <td width="200">Nombre</td> <td width="200">Apellido</td> <td width="50">Edad</td> <xsl:choose> <xsl:when test="$showUniversity ='true'"> <td width="200">Universidad</td> </xsl:when> </xsl:choose> </tr> </th> <xsl:apply-templates/> </table> </body> </html> </xsl:template> <xsl:template match="student"> <tr> <td><xsl:value-of select="@studentID"/></td> <td><xsl:value-of select="@firstName"/></td> <td><xsl:value-of select="@lastName"/></td> <td><xsl:value-of select="@age"/></td> <xsl:choose> <xsl:when test="$showUniversity = 'true' "> <td><xsl:value-of select="@university"/></td> </xsl:when> </xsl:choose> </tr> </xsl:template> </xsl:stylesheet>' );
A continuacin, llame la funcin XSLTRANSFORM para convertir los datos XML a HTML y visualcelos.
SELECT XSLTRANSFORM (XML_DOC USING XSL_DOC AS CLOB(1M)) FROM XML_TAB;
469
XSLTRANSFORM
</head> <body> <h1></h1> <table border="1"> <th> <tr> <td width="80">IDestudiante</td> <td width="200">Nombre</td> <td width="200">Apellido</td> <td width="50">Edad</td> </tr> </th> <tr> <td>1</td> <td>Steffen</td><td>Siegmund</td> <td>23</td> </tr> </table> </body> </html>
En este ejemplo, la salida es HTML y los parmetros slo influyen el HTML que se produce y los datos convertidos en el mismos. Como tal, ilustra la utilizacin de XSLT como motor de formato para la salida de usuario final.
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 normas 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 en el formato de una serie de una fecha o indicacin de fecha y hora: El resultado es la parte correspondiente al ao del valor, que es un entero entre 1 y 9999. v Si el argumento es una duracin de fecha o duracin de la indicacin de fecha y hora:
470
YEAR
El resultado es la parte correspondiente al ao del valor, que es un entero entre -9999 y 9999. 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
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.
XMLTABLE
XMLTABLE ( declaracin-xmlnamespaces constante-expresin-xquery-fila , BY REF PASSING , (1) COLUMNS definicin-columna-regular-tabla-xml definicin-columna-ordinalidad-tabla-xml ) argumento-xquery-fila ,
argumento-xquery-fila:
(2) 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
Captulo 3. Funciones
471
XMLTABLE
definicin-columna-ordinalidad-tabla-xml:
nombre-columna FOR ORDINALITY
Notas: 1 2 La clusula definicin-columna-ordinalidad-tabla-xml no debe especificarse ms de una vez (SQLSTATE 42614, SQLCODE -637). El tipo de datos de la expresin no puede ser DECFLOAT.
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). 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. Por omisin, cada nombre de columna exclusivo en el mbito en el que se invoca la funcin se pasa implcitamente a la expresin XQuery utilizando el nombre de la columna como nombre de variable. Si un identificador de un argumento-xquery-fila especificado coincide con el nombre de columna con mbito, entonces el argumento-xquery-fila se pasa a la expresin XQuery alterando temporalmente dicha columna implcita. 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
472
XMLTABLE
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). El tipo de datos de la expresin no puede ser DECFLOAT. 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 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 variable-expresin-xquery, los argumentos XML se pasan mediante el mecanismo de pase por omisin que se ofrece mediante la sintaxis
Captulo 3. Funciones
473
XMLTABLE
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 Especifica las columnas de salida de la tabla de resultados.. Si no se especifica esta clusula, se devuelve por referencia una columna sin nombre exclusivo de tipo de datos XML, con el valor basado en el elemento de secuencia de la evaluacin de la expresin XQuery en la constante-expresin-xquery-fila (equivalente a especificar PATH .). Para hacer referencia a la columna de resultados, se debe especificar un nombre-columna en la clusula-correlacin que sigue a la funcin. definicin-columna-regular-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
474
XMLTABLE
resultado de procesar la constante-expresin-xquery-fila como elemento de contexto proporcionado exteriormente, se 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. definicin-columna-ordinalidad-tabla-xml Especifica la columna de ordinalidad de la tabla de resultados. 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). FOR ORDINALITY Especifica que nombre-columna es la columna de ordinalidad de la tabla de resultados. El tipo de datos de esta columna es BIGINT. El valor de esta columna en la tabla de resultados es el nmero secuencial del elemento para la fila en la secuencia resultante de evaluar la expresin XQuery en constante-expresin-xquery-fila. Si la evaluacin de cualquiera de las expresiones XQuery produce un error, la funcin XMLTABLE devuelve un error de XQuery (clase de SQLSTATE 10). Nota: 1. Soporte en bases de datos de varias particiones de base de datos: XMLTABLE no est soportado (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'
Captulo 3. Funciones
475
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.
476
Captulo 3. Funciones
477
478
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.
Procedimiento XSR_ADDSCHEMADOC
XSR_ADDSCHEMADOC ( contenido rschema ) , nombre , ubicacin-esquema ,
, 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 autorizacin 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
479
Procedimiento XSR_ADDSCHEMADOC
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 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)
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 autorizacin de quien realiza la llamada del procedimiento debe ser el propietario del objeto de XSR, como aparece en la vista de catlogo SYSCAT.XSROBJECTS.
480
Procedimiento XSR_COMPLETE
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. Ejemplo:
CALL SYSPROC.XSR_COMPLETE( 'user1', 'POschema', :schemaproperty_host_var, 0)
Procedimiento XSR_DTD
XSR_DTD ( contenido ) rschema , nombre , id-sistema , id-pblico ,
El esquema es SYSPROC. El procedimiento XSR_DTD registra una declaracin de tipo de documento (DTD) con el depsito de esquemas XML (XSR).
Captulo 4. Procedimientos
481
Procedimiento XSR_DTD
Autorizacin
El ID de autorizacin 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 y salida 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. id-sistema 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 de sistema se puede especificar junto con un ID pblico. id-pblico 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 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:
482
Procedimiento XSR_DTD
Procedimiento XSR_EXTENTITY
XSR_EXTENTITY ( contenido ) rschema , nombre , id-sistema , id-pblico ,
El esquema es SYSPROC. El procedimiento XSR_EXTENTITY registra una entidad externa con el depsito de esquemas XML (XSR).
Autorizacin
El ID de autorizacin 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 y salida 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. id-sistema 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
Captulo 4. Procedimientos
483
Procedimiento XSR_EXTENTITY
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 de sistema se puede especificar junto con un ID pblico. id-pblico 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 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 )
Procedimiento XSR_REGISTER
XSR_REGISTER ( propiedad-doc ) rschema , nombre , ubicacin-esquema , contenido ,
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 autorizacin 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.
484
Procedimiento XSR_REGISTER
rschema Argumento de entrada y salida 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. 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: El ejemplo siguiente muestra cmo llamar al procedimiento XSR_REGISTER desde la lnea de mandatos:
CALL SYSPROC.XSR_REGISTER( 'user1', 'POschema', 'http://myPOschema/PO.xsd', :content_host_var, :docproperty_host_var)
Ejemplo: El ejemplo siguiente muestra cmo llamar al procedimiento XSR_REGISTER desde un programa de aplicacin Java:
stmt = con.prepareCall("CALL SYSPROC.XSR_REGISTER (?, ?, ?, ?, ?)"); String xsrObjectName = "myschema1"; String xmlSchemaLocation = "po.xsd"; stmt.setNull(1, java.sql.Types.VARCHAR); stmt.setString(2, xsrObjectName); stmt.setString(3, xmlSchemaLocation); stmt.setBinaryStream(4, buffer, (int)length);
Captulo 4. Procedimientos
485
Procedimiento XSR_REGISTER
stmt.setNull(5, java.sql.Types.BLOB); stmt.registerOutParameter(1, java.sql.Types.VARCHAR); stmt.registerOutParameter(2, java.sql.Types.VARCHAR); stmt.execute();
Procedimiento XSR_UPDATE
XSR_UPDATE ( dropnewschema ) rschema1 , name1 , rschema2 , name2 ,
El esquema es SYSPROC. El procedimiento almacenado XSR_UPDATE se utiliza para desarrollar un esquema XML existente en depsito de esquemas XML (XSR). Esto le permite modificar o ampliar un esquema XML existente de modo que pueda utilizarse para validar tanto los documentos XML ya existentes como los recin insertados. El esquema XML original y el nuevo esquema XML especificados como argumentos en XSR_UPDATE deben registrarse y completarse en el XSR antes de que se llame el procedimiento. Estos esquemas XML tambin deben ser compatibles. Para obtener ms detalles sobre los requisitos de compatibilidad consulte Requisitos de compatibilidad para desarrollar un esquema XML.
Autorizacin
El ID de autorizacin de la sentencia del que llama debe tener al menos uno de los privilegios siguientes: v OWNER del esquema XML especificado por medio del esquema de SQL rschema1 y el nombre del objeto name1 v Autorizacin SYSADM o DBADM. v El privilegio ALTERIN del esquema SQL especificado por medio del argumento rschema1 y, si el argumento dropnewschema no es igual a cero, el privilegio DROPIN del esquema de SQL especificado por medio del argumento rschema2. rschema1 Argumento de entrada de tipo VARCHAR (128) que especifica el esquema de SQL para el esquema XML original que ha de actualizarse. 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 name1.) 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. name1 Argumento de entrada de tipo VARCHAR (128) que especifica el nombre del esquema XML original que ha de actualizarse. El identificador de SQL completo para el esquema XML es rschema1.name1. Este esquema XML ya debe estar registrado y finalizado en el XSR. 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. rschema2 Argumento de entrada de tipo VARCHAR (128) que especifica el esquema de SQL para el esquema XML nuevo que se utilizar para actualizar el esquema XML original. El esquema de SQL es una parte del identificador de SQL
486
Procedimiento XSR_UPDATE
utilizado para identificar este esquema XML en el XSR. (La otra parte del identificador de SQL viene suministrada por el argumento de name2.) 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. name2 Argumento de entrada de tipo VARCHAR (128) que especifica el nombre del esquema XML nuevo que se utilizar para actualizar el esquema XML original. El identificador de SQL completo para el esquema XML es rschema2.name2. Este esquema XML ya debe estar registrado y finalizado en el XSR. 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. dropnewschema Un parmetro de entrada de tipo entero que indica si el nuevo esquema XML nuevo debe descartarse despus de utilizarlo para actualizar el esquema XML original. Establecer este parmetro en un valor diferente a cero har que se descarte el nuevo esquema XML. Este argumento no puede tener un valor nulo. Ejemplo:
CALL SYSPROC.XSR_UPDATE( 'STORE', 'PROD', 'STORE', 'NEWPROD', 1)
El contenido del esquema XML STORE.PROD se actualiza con el contenido de STORE.NEWPROD y se descarta el esquema XML STORE.NEWPROD.
Captulo 4. Procedimientos
487
Procedimiento XSR_UPDATE
488
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
Copyright IBM Corp. 1993, 2009
489
Subseleccin
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 * ORDER UNION SELECT * ORDER FROM T1 BY C1 FROM T2 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.
clusula-select
ALL SELECT DISTINCT * , expresin AS nuevo-nombre-columna nombre-expuesto.*
La clusula SELECT especifica las columnas de la tabla de resultados final, R. La aplicacin produce los valores de columna 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. ste 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 o
490
Subseleccin
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 y dos representaciones de coma flotante decimal diferentes del mismo nmero se consideran iguales. Por ejemplo, -0 es igual a +0 y 2,0 es igual a 2,00. Tambin se consideran iguales a cada uno de los valores especiales de coma flotante decimal: -NAN equivale a -NAN, -SNAN equivale s -SNAN, -INFINITY equivale a -INFINITY, INFINITY equivale a INFINITY, SNAN equivale a SNAN y NAN equivale a NAN. Cuando el tipo de datos de una columna es de coma flotante decimal y hay varias representaciones del mismo nmero en la columna, el valor de particin que se devuelve para SELECT DISTINCT puede ser cualquiera de las representaciones de la columna. Para obtener ms informacin, consulte el apartado Comparaciones numricas en la pgina 111. Por compatibilidad con otras implementaciones de SQL, se puede especificar UNIQUE como sinnimo de DISTINCT.
491
Subseleccin
resultante identificada por nombre-expuesto, excluidas las columnas definidas como IMPLICITLY HIDDEN. 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.
492
Subseleccin
493
Subseleccin
El tipo de datos de la columna del resultado es ... el mismo que el tipo de datos de la columna, con la misma precisin y escala que para las columnas DECIMAL, o la misma precisin que para las columnas DECFLOAT. INTEGER. DECIMAL, con la precisin y la escala de la constante. DOUBLE. DECFLOAT(34) el mismo que el tipo de datos de la variable, con la misma precisin y escala que para las variables DECIMAL, o la misma precisin que para las variables DECFLOAT. VARCHAR(n); la pgina de cdigos es la pgina de cdigos de la base de datos. el mismo que el tipo de datos de la columna, con el mismo atributo de longitud. 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. VARCHAR(n). VARGRAPHIC(n). el mismo tipo de datos de la columna. el mismo tipo de datos de la columna. el mismo tipo de datos de la columna.
una constante de enteros una constante decimal una constante de coma flotante una constante decimal de coma flotante el nombre de cualquier variable numrica
una constante hexadecimal que representa n bytes el nombre de cualquier columna de serie el nombre de cualquier variable de serie.
una constante de serie de caracteres de longitud n una constante de serie grfica de longitud n el nombre de una columna de indicacin de fecha y hora el nombre de una columna de tipo definido por el usuario el nombre de una columna de tipo de referencia
clusula-from
, FROM referencia-tabla
La clusula FROM especifica una tabla resultante intermedia. Si se especifica slo una referencia-tabla, la tala resultante intermedia es simplemente el resultado de dicha referencia-tabla. Si se especifican ms de una referencia-tabla, la tabla resultante intermedia consta de todas las combinaciones posibles de las filas de la referencia-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, y as sucesivamente. El nmero de filas del resultado es el producto del nmero de filas de todas las referencias a tabla individuales. Para obtener una
494
Subseleccin
descripcin de referencia-tabla, consulte referencia-tabla.
referencia-tabla
nombre-tabla clusula-correlacin apodo nombre-vista ONLY ( nombre-tabla ) OUTER nombre-vista TABLE ( nombre-funcin ( , expresin (1) expresin-xmltable clusula-correlacin expresin-tabla-anidada clusula-correlacin referencia-tabla-cambio-datos clusula-correlacin tabla-derivada-coleccin tabla-unida clusula-tablesample clusula-correlacin
) ) clusula-correlacin
clusula-correlacin:
AS nombre-correlacin , ( nombre-columna )
clusula-tablesample:
TABLESAMPLE BERNOULLI SYSTEM ( expresin1-numrica )
REPEATABLE
expresin2-numrica
expresin-tabla-anidada:
(seleccin completa) (2) LATERAL manejador-continuo WITHIN
manejador-continuo:
, RETURN DATA UNTIL valor-condicin-especfica
Captulo 5. Consultas
495
Subseleccin
valor-condicin-especfica:
VALUE FEDERATED SQLSTATE constante-serie , SQLCODE constante-entera
referencia-tabla-cambio-datos:
FINAL NEW FINAL NEW OLD OLD TABLE TABLE TABLE ( ( sentencia-insert ) )
sentencia-update-buscada
sentencia-delete-suprimida
tabla-derivada-coleccin:
, UNNEST ( nombre-variable-matriz CAST ( marcador-parmetro clusula-correlacin WITH ORDINALITY ) ) AS tipo-datos
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. 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:
496
Subseleccin
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. Una seleccin completa entre parntesis se denomina 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 ms informacin, consulte el apartado tabla-unida en la pgina 504. Los nombres expuestos de todas las referencias a tabla deben ser exclusivos. Un nombre expuesto es: v v v v Un Un Un Un nombre-correlacin nombre-tabla que no va seguido de un nombre-correlacin nombre-vista que no va seguido de un nombre-correlacin apodo que no va seguido de un nombre-correlacin
v Un nombre-alias que no va seguido de un nombre-correlacin Si una clusula-correlacin no sigue a una referencia nombre-funcin, una expresin-tablaxml, una expresin de tabla anidada o una referencia-tabla-cambio-datos, no hay ningn nombre expuesto para dicha referencia de tabla. Cada nombre-correlacin se define como designador del nombre-tabla, del nombre-vista, del apodo, de la referencia nombre-funcin, de la expresin-tablaxml, de la expresin de tabla anidada o de la referencia-tabla-cambio-datos inmediatamente anterior. Cualquier referencia calificada a una columna 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 proporcionar nombres a las columnas de la referencia de tabla. Si la clusula-correlacin no incluye nombres-columna, los nombres de columna expuestos se determinan del modo siguiente:. v Nombres de columna de la tabla, vista o apodo de referencia cuando la referencia-tabla es un nombre-tabla, nombre-vista, apodo o nombre-alias v Nombres de columna especificados en la clusula RETURNS de la sentencia CREATE FUNCTION cuando la referencia-tabla es una referencia de nombre-funcin
Captulo 5. Consultas
497
Subseleccin
v Nombre de columna especificados en la clusula COLUMNS de la expresin-tablaxml cuando la referencia-tabla es una expresin-tablaxml v Nombres de columna expuestos por la seleccin completa cuando la referencia-tabla es una expresin-tabla-anidada v Nombres de columna de la tabla de destino de la sentencia de cambio de datos, junto con las columnas INCLUDE definidas cuando la referencia-tabla es una referencia-tabla-cambio-datos En general, las tablas-derivadas-coleccin, las funciones de tabla y las expresiones de tabla anidadas se pueden especificar en cualquier clusula-from. Se puede hacer referencia a las columnas de las funciones de tabla, de las expresiones de tablas anidadas o de las tablas derivadas de coleccin en la lista de seleccin y en el resto de la subseleccin utilizando el nombre de correlacin. El mbito de este nombre de correlacin es el mismo que los nombres de correlacin de otras tablas, vistas o apodos 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 Se puede utilizar una tabla-derivada-coleccin para desanidar los elementos de matrices en filas. Si se especifica ms de una matriz, la primera matriz proporciona la primera columna de la tabla resultante, la segunda matriz proporciona la segunda columna y as sucesivamente. Si se especifica WITH ORDINALITY, se aade una columna de tipo INTEGER, que contiene la posicin de los elementos de las matrices. Si las cardinalidades de las matrices no son idnticas, la cardinalidad de la tabla resultante es la misma que la matriz con la mayor cardinalidad. Los valores de columna de la tabla se establecen en valor nulo para todas las filas cuyo valor de subndice es mayor que la cardinalidad de la matriz correspondiente. En otras palabras, si se visualiza cada matriz como una tabla con dos columnas (una para los subndices y otra para los datos), UNNEST realiza OUTER JOIN entre las matrices, utilizando equality en los subndices como predicado de unin. UNNEST slo se puede especificar en un procedimiento de SQL (SQLSTATE 42887). 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 predicados de la clusula WHERE no se vuelven a evaluar y las operaciones ORDER BY o FETCH FIRST no se vuelven a realizar.
498
Subseleccin
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 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
Captulo 5. Consultas
499
Subseleccin
muestreo de una 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
500
Subseleccin
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'; SELECT c1 FROM TABLE( tf2 (:hostvar1, CURRENT DATE) ) AS z; SELECT c1 FROM t WHERE c2 IN (SELECT c3 FROM TABLE( tf5(t.c4) ) AS z -- correlated reference ) -- a clusula FROM ant.
Ejemplo 2: Ejemplo 3:
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: Ejemplo 2: Ejemplo 3: SELECT c1 FROM TABLE( tfmod('Jones') ) AS z SELECT c1 FROM t1, t2, TABLE( tfmod(t1.c1, t2.c1) ) AS z SET var = (SELECT c1 FROM TABLE( tfmod('Jones') ) AS z RETURN SELECT c1 FROM TABLE( tfmod('Jones') ) AS z WITH v1(c1) AS (SELECT c1 FROM TABLE( tfmod(:hostvar1) ) AS z) SELECT c1 FROM v1, t1 WHERE v1.c1 = t1.c1
Ejemplo 4: Ejemplo 5:
501
Subseleccin
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 porttiles, 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 tolera, incluso en caso de especificarse 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.
Ejemplo 2:
SELECT t.c1, z.c5 FROM t, TABLE( tf4(2 * t.c2) ) AS z -- t precedes tf4 WHERE t.c3 = z.c4; -- en FROM, por lo que t.c2 -- se conoce
502
Subseleccin
Ejemplo 3: SELECT d.deptno, d.deptname, 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
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! SELECT d.deptno, d.deptname, empinfo.avgsal, empinfo.empcount FROM department d, (SELECT AVG(e.salary) AS avgsal, COUNT(*) AS empcount FROM employee e -WHERE e.workdept=d.deptno -) AS empinfo; ---
Ejemplo 6:
503
Subseleccin
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 cambiadas por la sentencia de cambio de datos de SQL tal como aparecan antes de la aplicacin de la sentencia 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 exterior referencia-tabla CROSS JOIN referencia-tabla ( 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 aplicando uno de los operadores de unin: CROSS, INNER, LEFT OUTER, RIGHT OUTER o FULL OUTER a los operandos.
504
Subseleccin
Las uniones cruzadas representan el producto cruzado de las tablas, donde cada fila de la tabla izquierda se combina con cada fila de la tabla derecha. Las uniones internas se pueden considerar el producto cruzado de las tablas, conservando slo las filas donde la condicin de unin es verdadera. Es posible que en la tabla de resultados 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 de 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 normas (SQLSTATE 42972). Las referencias a columnas se resuelven utilizando las normas para la resolucin de calificadores de nombres de columna. Las mismas normas que se aplican a los predicados se aplican a las condiciones de unin.
Captulo 5. Consultas
505
Subseleccin
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 CROSS JOIN T2 consta de todos los emparejamientos posibles de las filas. 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 normas 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
506
Subseleccin
una referencia correlacionada puede tener que ejecutarse una vez para cada fila.
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 expresin o nombre de columna incluido en la expresin-agrupacin debe identificar sin ambigedades 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 una expresin o funcin que sea variante o que tenga una accin externa (SQLSTATE 42845). Nota: Las expresiones siguientes, que no contienen una referencia a columna explcita, se pueden utilizar en una expresin-agrupacin para identificar una columna de R: v ROW CHANGE TIMESTAMP FOR designador-tabla v ROW CHANGE TOKEN FOR designador-tabla v Funcin escalar RID_BIT o RID 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 508 y supergrupos en la pgina 509, 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. Si una expresin-agrupacin contiene columnas de coma flotante decimal y hay varias representaciones del mismo nmero en dichas columnas, el nmero que se devuelve puede ser cualquiera de las representaciones de dicho nmero. 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 514 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 normas 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
Captulo 5. Consultas
507
Subseleccin
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 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.
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 509. Tenga en cuenta que los conjuntos de agrupaciones 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
508
Subseleccin
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 hasta el Ejemplo C7 se ilustra la utilizacin de los conjuntos de agrupaciones.
supergrupos
ROLLUP CUBE ( total ( lista-expresiones-agrupacin lista-expresiones-agrupacin ) (1) ) (2)
lista-expresiones-agrupacin:
, expresin-agrupacin , ( expresin-agrupacin )
total:
( )
Notas: 1 2 Una especificacin alternativa cuando se utiliza sola en la clusula Group By es: lista-expresiones-agrupacin WITH ROLLUP. 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 agregados cuyos valores se obtienen al aplicar las mismas funciones de columna que se han utilizado para obtener las filas agrupadas. Estas 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 el Ejemplo C8. 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
Captulo 5. Consultas
509
Subseleccin
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 agrupaciones. 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)
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 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 tres elementos de CUBE se convierten en ocho 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 ilustra la utilizacin de CUBE.
510
Subseleccin
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 normas para la expresin-agrupacin se describen en el apartado clusula-group-by en la pgina 507. Por ejemplo, supongamos que una consulta tiene 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)
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) () )
El Ejemplo C2 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 utiliza la sintaxis del total.
es equivalente a
Captulo 5. Consultas
511
Subseleccin
GROUP BY GROUPING SETS((a,b,c) (a,b) (a) )
O de manera parecida,
GROUP BY a, b, ROLLUP(c,d)
es equivalente a
GROUP BY GROUPING SETS((a,b,c,d) (a,b,c) (a,b) )
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) () )
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 agrupaciones elimina tambin los duplicados dentro de cada conjunto de agrupacin. Por ejemplo,
GROUP BY a, ROLLUP(a,b)
512
Subseleccin
es equivalente a
GROUP BY GROUPING SETS((a,b) (a) )
Un ejemplo ms completo de la combinacin de conjuntos de agrupaciones es crear un conjunto resultante que elimine ciertas filas que se devolveran para una agregacin CUBE completa. 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 las diferencias, consulte el Ejemplo A6 y el Ejemplo A7. Una referencia correlacionada a un grupo de R debe identificar una columna de agrupacin o estar contenida en una funcin de columna.
Captulo 5. Consultas
513
Subseleccin
Cuando se utiliza HAVING sin GROUP BY, la lista de seleccin slo puede incluir nombres de columnas cuando son argumentos de una funcin agregada, referencias de columna correlacionada, variables globales, variables de lenguaje principal, literales, registros especiales, variables de SQL o parmetros de SQL. Nota: Las expresiones siguientes slo se pueden especificar en una clusula HAVING si estn contenidas en una funcin agregada (SQLSTATE 42803): v ROW CHANGE TIMESTAMP FOR designador-tabla v ROW CHANGE TOKEN FOR designador-tabla v Funcin escalar RID_BIT o RID
clusula-order-by
, ASC ORDER BY clave-clasificacin DESC ORDER OF designador-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 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-claveclasificacin). 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 normas de comparacin. Si una clusula ORDER BY contiene columnas de coma flotante decimal y hay varias representaciones del mismo nmero en dichas columnas, el orden de las diversas representaciones del mismo nmero no est especificado. 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.
514
Subseleccin
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. Esto incluye columnas definidas como ocultas implcitamente. 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. 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 una seleccin completa escalar correlacionada (SQLSTATE 42703), ni una expresin XMLQUERY o XMLEXISTS (SQLSTATE 42822), ni ninguna funcin con una accin externa (SQLSTATE 42845). Cualquier nombre-columna de una expresin-clave-clasificacin debe ajustarse a las normas 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 designador-tabla Especifica que debe aplicarse el mismo orden utilizado en diseador-tabla a la
Captulo 5. Consultas
515
Subseleccin
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:
(SELECT C1 FROM T1 ORDER BY C1) UNION SELECT C1 FROM T2 ORDER BY ORDER OF T1
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). Consulte el apartado referencia-tabla en la pgina 495. 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).
516
Subseleccin
- 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.
clusula-fetch-first
1 FETCH FIRST entero ROW ROWS ONLY
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. Utilizacin de clusula-fetch-first influye en la optimizacin de consultas de subseleccin o seleccin completa, basndose en el hecho de que como mximo se recuperarn entero filas. Si se especifica tanto la clusula-fetch-first en la seleccin completa ms exterior como la clusula-optimize-for para la sentencia SELECT, el gestor de la base de datos utilizar el entero de la clusula-optimize-for para influir en la optimizacin de consultas de la seleccin completa ms exterior. 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. 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.
Captulo 5. Consultas
517
Subseleccin
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
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 tendra que ejecutar para cada grupos.
518
Subseleccin
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. 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)
Ejemplo A11: partiendo de que PHONES e IDS son dos variables de SQL con valores de matriz de la misma cardinalidad, convierta estas matrices en una tabla con tres columnas (una por cada matriz y una por la posicin) y una fila por elemento de la matriz.
SELECT T.PHONE, T.ID, T.INDEX FROM UNNEST(PHONES, IDS) WITH ORDINALITY AS T(PHONE, ID, INDEX) ORDER BY T.INDEX
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.
Captulo 5. Consultas
519
Subseleccin
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 --- -----A 11 C 13 Y Z --- -----A 21 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.
SELECT * FROM J1 LEFT OUTER JOIN J2 ON W=Y W X --- -----A 11 B 12 C 13 Y Z --- -----A 21 C 22
La siguiente unin externa derecha recuperar la fila que falta de J2 con nulos para las columnas de J1. Se incluyen todas las filas de J2.
SELECT * FROM J1 RIGHT OUTER JOIN J2 ON W=Y W X --- -----A 11 C 13 Y Z --- -----A 21 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 --- -----A 11 C 13 B 12 Y Z --- -----A 21 C 22 D 23 -
520
Subseleccin
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 seleccione 1 fila en comparacin con la unin interna del Ejemplo B1. 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 --- -----C 13 A 11 B 12 Y Z --- -----A 21 C 22 D 23 -
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.
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. 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 --- -----A 11 B 12 C 13 Y Z --- -----A 21 C 22 D 23 -
Captulo 5. Consultas
521
Subseleccin
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.
da como resultado:
WEEK DAY_WEEK ----------- ----------13 6 13 6 13 6 13 6 13 6 13 6 13 6 13 6 13 6 13 7 13 7 13 7 13 7 13 7 13 7 13 7 13 7 13 7 13 7 SALES_PERSON UNITS_SOLD --------------- ----------LUCCHESSI 3 LUCCHESSI 1 LEE 2 LEE 2 LEE 3 LEE 5 GOUNOT 3 GOUNOT 1 GOUNOT 7 LUCCHESSI 1 LUCCHESSI 2 LUCCHESSI 1 LEE 7 LEE 3 LEE 7 LEE 4 GOUNOT 2 GOUNOT 18 GOUNOT 1
522
Subseleccin
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 ----------- ----------13 6 13 6 13 6 13 7 13 7 13 7 SALES_PERSON UNITS_SOLD --------------- ----------GOUNOT 11 LEE 12 LUCCHESSI 4 GOUNOT 21 LEE 21 LUCCHESSI 4
Ejemplo C2: Genere el resultado basndose en dos conjuntos de agrupaciones 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 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
Da como resultado:
WEEK DAY_WEEK ----------- ----------13 13 13 6 6 6 7 7 7 SALES_PERSON UNITS_SOLD --------------- ----------GOUNOT 32 LEE 33 LUCCHESSI 8 GOUNOT 11 LEE 12 LUCCHESSI 4 GOUNOT 21 LEE 21 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 agrupaciones del Ejemplo C2 y realiza ROLLUP, puede ver los conjuntos de agrupaciones 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
Da como resultado:
Captulo 5. Consultas
523
Subseleccin
WEEK DAY_WEEK ----------- ----------13 6 13 6 13 6 13 6 13 7 13 7 13 7 13 7 13 SALES_PERSON UNITS_SOLD --------------- ----------GOUNOT 11 LEE 12 LUCCHESSI 4 27 GOUNOT 21 LEE 21 LUCCHESSI 4 46 73 73
Ejemplo C4: si ejecuta la misma consulta que el Ejemplo C3 sustituyendo slo ROLLUP por CUBE, puede ver conjuntos de agrupaciones 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:
WEEK DAY_WEEK ----------- ----------13 6 13 6 13 6 13 6 13 7 13 7 13 7 13 7 13 13 13 13 6 6 6 6 7 7 7 7 SALES_PERSON UNITS_SOLD --------------- ----------GOUNOT 11 LEE 12 LUCCHESSI 4 27 GOUNOT 21 LEE 21 LUCCHESSI 4 46 GOUNOT 32 LEE 33 LUCCHESSI 8 73 GOUNOT 11 LEE 12 LUCCHESSI 4 27 GOUNOT 21 LEE 21 LUCCHESSI 4 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
524
Subseleccin
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 agrupaciones en un slo conjunto resultante y especifica el orden de filas para cada columna implicada en los conjuntos de agrupaciones. Ejemplo C6-1:
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 ----------3 3 3 3 3 4 4 4 4 4 12 REGION UNITS_SOLD --------------- ----------Manitoba 22 Ontario-North 8 Ontario-South 34 Quebec 40 104 Manitoba 17 Ontario-North 1 Ontario-South 14 Quebec 11 43 Manitoba 2
Captulo 5. Consultas
525
Subseleccin
12 12 12 Ontario-South Quebec 4 2 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 ----------- ----------- ----------13 6 13 7 13 14 1 14 2 14 53 1 53 3 3 3 3 3 4 4 4 4 4 12 12 12 12 REGION UNITS_SOLD --------------- ----------27 46 73 31 43 74 8 8 Manitoba 22 Ontario-North 8 Ontario-South 34 Quebec 40 104 Manitoba 17 Ontario-North 1 Ontario-South 14 Quebec 11 43 Manitoba 2 Ontario-South 4 Quebec 2 8 155 155
La utilizacin de los dos ROLLUP como conjuntos de agrupaciones 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, el Ejemplo C6-3), tiene la posibilidad de indicar, si lo desea, qu conjunto de agrupaciones ha producido cada fila. Los pasos siguientes demuestran cmo proporcionar una columna (denominada GROUP) que indica la fuente de cada fila del conjunto resultante. Por fuente se quiere decir cual de los dos conjuntos de agrupaciones ha producido la fila del conjunto resultante.
526
Subseleccin
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)
Esto aade las columnas R1 y R2 a cada fila. Paso 3: Ahora se pueden combinar estas columnas con los conjuntos de agrupaciones 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 ------GROUP 1 GROUP 1 GROUP 1 GROUP 1 GROUP 1 GROUP 1 GROUP 1 GROUP 1 R2 WEEK ------- -------GROUP 2 GROUP 2 GROUP 2 GROUP 2 GROUP 2 GROUP 2 GROUP 2 GROUP 2 GROUP 2 GROUP 2 GROUP 2 GROUP 2 GROUP 2 DAY_WEEK MONTH REGION UNITS_SOLD --------- --------- --------------- ----------13 6 - 27 13 7 - 46 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
Captulo 5. Consultas
527
Subseleccin
GROUP 2 GROUP 2 GROUP 1 12 - - 8 155 155
Paso 4: Tenga en cuenta que puesto que R1 y R2 se utilizan en conjuntos de agrupaciones 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 agrupaciones 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:
GROUP WEEK DAY_WEEK MONTH ------- ----------- ----------- ----------GROUP 1 13 6 GROUP 1 13 7 GROUP 1 13 GROUP 1 14 1 GROUP 1 14 2 GROUP 1 14 GROUP 1 53 1 GROUP 1 53 GROUP 1 GROUP 2 3 GROUP 2 3 GROUP 2 3 GROUP 2 3 GROUP 2 3 GROUP 2 4 GROUP 2 4 GROUP 2 4 GROUP 2 4 GROUP 2 4 GROUP 2 12 GROUP 2 12 GROUP 2 12 GROUP 2 12 GROUP 2 REGION UNITS_SOLD --------------- ----------27 46 73 31 43 74 8 8 155 Manitoba 22 Ontario-North 8 Ontario-South 34 Quebec 40 104 Manitoba 17 Ontario-North 1 Ontario-South 14 Quebec 11 43 Manitoba 2 Ontario-South 4 Quebec 2 8 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:
528
Subseleccin
MONTH ----------3 3 3 3 3 4 4 4 4 4 12 12 12 12 REGION UNITS_SOLD BEST_SALE AVG_UNITS_SOLD --------------- ----------- ----------- -------------Manitoba 22 7 3.14 Ontario-North 8 3 2.67 Ontario-South 34 14 4.25 Quebec 40 18 5.00 104 18 4.00 Manitoba 17 9 5.67 Ontario-North 1 1 1.00 Ontario-South 14 8 4.67 Quebec 11 8 5.50 43 9 4.78 Manitoba 2 2 2.00 Ontario-South 4 3 2.00 Quebec 2 1 1.00 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
Seleccin completa
subselect (seleccin completa) valores-clusula
clusula-order-by
clusula-fetch-first
clusula-values:
, VALUES valores-fila
Captulo 5. Consultas
529
Seleccin completa
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. 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 debe tener el mismo nmero de expresiones en cada fila-valores (SQLSTATE 42826). A continuacin encontrar ejemplos de clusulas-values y su significado.
VALUES VALUES VALUES VALUES (1),(2),(3) 1, 2, 3 (1, 2, 3) (1,21),(2,22),(3,23) 3 3 1 3 filas de 1 columna filas de 1 columna fila de 3 columnas 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.
530
Seleccin completa
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. Por compatibilidad con otras implementaciones de SQL, se puede especificar MINUS como sinnimo de EXCEPT. 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. 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, 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. Filas duplicadas: 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 y dos representaciones de coma flotante decimal diferentes del mismo nmero se consideran iguales. Por ejemplo, 2,00 y 2,0 tienen el mismo valor (2,00 y 2,0 se comparan como iguales) pero tienen diferentes exponentes, que le permite representar tanto 2,00 como 2,0. Por tanto, si por ejemplo la tabla de resultados de una operacin de UNION contiene una columna de coma flotante decimal y hay varias representaciones del mismo nmero, la que se devuelve (por ejemplo, 2,00 2,0) es imprevisible. Para obtener ms informacin, consulte el apartado Comparaciones numricas en la pgina 111.
Captulo 5. Consultas
531
Seleccin completa
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.
UNION ALL 1 1 1 1 1 2 2 2 3 3 3 3 3 4 4 4 5 EXCEPT ALL 1 2 2 2 4 5 INTERSECT ALL 1 1 3 4 INTERSECT 1 3 4
R1 1 1 1 2 2 2 3 4 4 5
R2 1 1 3 3 3 3 4
UNION 1 2 3 4 5
EXCEPT 2 5
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
532
Seleccin completa
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
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...)
Captulo 5. Consultas
533
Sentencia Select
Sentencia Select
seleccin completa ? , WITH expresin-tabla-comn ? clusula-read-only clusula-update clusula-optimize-for ?
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-tabla-comn
nombre-tabla , (1) ( AS ( nombre-columna ) )
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. Las expresiones de tabla comunes subsiguientes tambin pueden referirse por nombre en su clusula FROM a cualquier expresin de tabla comn especificada. 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
534
Sentencia Select
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 alias 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 comunes 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
535
Sentencia Select
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).
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
536
Sentencia Select
00 01 01 01 01 02 02 03 04 04 05 05 06 06 07 07 05 02 03 04 06 05 06 07 08 09 10 11 12 13 14 12 3 2 3 4 3 7 6 6 10 11 10 10 10 10 8 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
537
Sentencia Select
PIEZA -------01 01 01 01 02 02 03 04 04 05 05 06 06 07 07 SUBPIEZA CANTIDAD -------- ----------02 2 03 3 04 4 06 3 05 7 06 6 07 6 08 10 09 11 10 10 11 10 12 10 13 10 12 8 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
538
Sentencia Select
) 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 -------01 01 01 01 01 01 01 01 01 01 01 01 01 SUBPIEZA Cant tot usada -------- -------------02 2 03 3 04 4 05 14 06 15 07 18 08 40 09 44 10 140 11 140 12 294 13 150 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
539
Sentencia Select
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 -------- ----------01 1 01 1 01 1 01 1 02 2 02 2 03 2 04 2 04 2 06 2 06 2 SUBPIEZA CANTIDAD -------- ----------02 2 03 3 04 4 06 3 05 7 06 6 07 6 08 10 09 11 12 10 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 FETCH ONLY
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.
540
Sentencia Select
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
541
Sentencia Select
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-select para acceder a datos de fuentes de datos de la familia DB2 y de Microsoft SQL Server, se puede incluir la clusula-isolation en la sentencia para especificar el nivel de aislamiento de sentencia. 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 UPDATE EXCLUSIVE LOCKS
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 sentencia-select
Ejemplo 1: Seleccin de todas las columnas y filas de la tabla EMPLOYEE.
SELECT * FROM EMPLOYEE
542
Sentencia Select
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.
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 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
Captulo 5. Consultas
543
Sentencia Select
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.
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
544
545
Mximo en bytes 18 128 128 128 128 128 255 128 128 128 128 128 128 128 128 128
1
Nombre de restriccin Nombre de correlacin Nombre de cursor Nombre de particin de datos Nombre de columna de fuente de datos Nombre de ndice de fuente de datos Nombre de fuente de datos Nombre de tabla de fuente de datos (nombre-tabla-remota) Nombre de grupo de particiones de base de datos Nombre de particin de base de datos Nombre de supervisor de sucesos Nombre de programa externo Nombre de correlacin de funciones Nombre de grupo Identificador del lenguaje principal
Identificador de un usuario de fuente de datos (nombre-autorizacin-remota) Identificador en un procedimiento SQL (nombre de condicin, para identificador de bucle, etiqueta, localizador de conjunto de resultados, nombre de sentencia, nombre de variable) Nombre de ndice Nombre de extensin del ndice Nombre de especificacin del ndice Nombre de etiqueta Identificador de recursos uniforme (URI) de espacios de nombre Apodo Nombre de paquete ID de versin del paquete Nombre de parmetro Contrasea para acceder a una fuente de datos Nombre de procedimiento Nombre de funcin Nombre de punto de salvaguarda Nombre de esquema
2
128 18 128 128 1000 128 128 64 128 32 128 128 128 128 128 128 128
Nombre de componente de etiqueta de seguridad Nombre de etiqueta de seguridad Nombre de poltica de seguridad
546
Mximo en bytes 128 8 128 128 128 128 128 18 18 128 128 18 128 128 128 128 128 1000 1000
547
548
Lmite
Lmite 254 32.672 32.700 2.147.483.647 2.147.483.647 127 16.336 16.350 1.073.741.823 2.147.483.647 32.672 16.336 2.147.483.647 1.073.741.823 2.147.483.647 32.672 1 254
549
550
Lmite 256
almacenamiento 64 8192
64 8192 65.535
999
32.767 o almacenamiento 64 tamaopginandice/4 1022 o almacenamiento 16.384 512 16.384 2 tamaopgina/4 - 207
32
32.767 90 64 64
551
Lmite 2048
64 65.535 16
2.097.152 almacenamiento 32.767 almacenamiento 1.012 almacenamiento 1.012 32.677 1.012 32.677 almacenamiento almacenamiento 1.012 1.012
Nmero mximo de predicados en una clusula WHERE o HAVING Nmero mximo de columnas en una clusula GROUP BY7 Longitud total mxima de las columnas en una clusula GROUP BY (en bytes)7 Nmero mximo de columnas en una clusula ORDER BY7 Longitud total mxima de las columnas en una clusula ORDER BY (en bytes)7 Nivel mximo de anidamiento de subconsultas El nmero mximo de subconsultas en una sola sentencia Nmero mximo de valores en una operacin de insercin7 Nmero mximo de clusulas SET en una sola operacin de actualizacin7 Tablas y vistas Nmero mximo de columnas en una tabla Nmero mximo de columnas en una vista
1 7
El nmero mximo de columnas en una vista o tabla de fuente de datos a la que se hace referencia mediante un apodo Nmero mximo de columnas en una clave de distribucin5 Longitud mxima de una fila que incluye toda la actividad general2 7 Nmero mximo de filas en una tabla no particionada por particin de base de datos Nmero mximo de filas en una particin de datos por particin de base de datos Tamao mximo de una tabla por particin de base de datos en un espacio de tablas normal (en gigabytes)3 7
552
553
Descripcin Nmero mximo de columnas en una tabla Longitud mxima de una fila que incluye toda la actividad general Tamao mximo de una tabla por particin de base de datos en un espacio de tablas normal (en gigabytes) Tamao mximo de una tabla por particin de base de datos en un espacio de tablas grande (en gigabytes) Longitud mxima de la clave de ndice que incluye toda la actividad general (en bytes) Tamao mximo de un ndice por particin de base de datos en un espacio de tablas SMS (en gigabytes)
64
128
256
512
2048
4096
8192
16.384
1024
2048
4096
8192
2048
4096
8192
16.384
554
Descripcin Tamao mximo de un ndice por particin de base de datos en un espacio de tablas DMS normal (en gigabytes) Tamao mximo de un ndice por particin de base de datos en un espacio de tablas DMS grande (en gigabytes) Tamao mximo de un ndice sobre datos XML por particin de base de datos (en terabytes) Tamao mximo de un espacio de tablas DMS normal (en gigabytes) Tamao mximo de un espacio de tablas DMS grande (en gigabytes) Tamao mximo de un espacio de tablas DMS temporal (en terabytes) Nmero mximo de elementos en una lista de seleccin El nmero mximo de columnas en una clusula GROUP BY Longitud total mxima de las columnas en una clusula GROUP BY (en bytes) El nmero mximo de columnas en una clusula ORDER BY Longitud total mxima de las columnas en una clusula ORDER BY (en bytes) Nmero mximo de valores de una operacin de insercin Nmero mximo de clusulas SET en una sola sentencia de actualizacin
2048
4096
8192
16.384
64
128
256
512
2048
4096
8192
16.384
16
500
1.012
1.012
1.012
500
1.012
1.012
1.012
4.005
8.101
16.293
32.677
500
1.012
1.012
1.012
4.005
8.101
16.293
32.677
500
1.012
1.012
1.012
500
1.012
1.012
1.012
555
556
sqlcabc sqlcode
INTEGER INTEGER
557
sqlerrd(1)
INTEGER
558
sqlerrd(5)
INTEGER
559
sqlwarn
Matriz
sqlwarn0
CHAR(1)
sqlwarn1
CHAR(1)
sqlwarn2
CHAR(1)
560
sqlwarn9
CHAR(1)
sqlwarn10
CHAR(1)
sqlstate
CHAR(5)
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.
561
562
563
Nombre C sqldaid
sqldabc
INTEGER
sqln
SMALLINT
sqld
SMALLINT
564
El atributo de longitud de la variable del lenguaje principal. Consulte la Tabla 53 en la pgina 570.
Observe que el gestor de bases de datos 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 en su lugar. para las series de objeto grande (incluso 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 lenguaje principal (donde se almacenarn la pgina de cdigos. En las SQLVAR de los datos ledos). serie-caracteres, si la columna est 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.
565
566
sqlflag4
El valor es X01 si la SQLVAR representa un tipo de referencia con un tipo de destino denominado en sqldatatype_name. El valor es X12 si SQLVAR representa un tipo estructurado, y nombre_tipodatosSQL contiene el nombre del tipo definido por el usuario. En otro caso, el valor es X00. No utilizado.
Se establece en X01 si la SQLVAR representa un tipo de referencia con un tipo de destino mencionado en nombre_tipodatosSQL. El valor es X12 si SQLVAR representa un tipo estructurado, y nombre_tipodatosSQL contiene el nombre del tipo definido por el usuario. En otro caso, el valor es X00.
sqldatalen
puntero
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.
sqldatatype_name
VARCHAR(27)
Para un tipo definido por el usuario, el gestor de bases de datos establece este campo en el nombre del tipo definido por el usuario, 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. No utilizado.
Para los tipos estructurados, se establece en el nombre del tipo definido por el usuario, calificado al completo, con el formato indicado en la nota de la tabla.1
reservado
CHAR(3)
No utilizado.
567
Tipo de datos
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 --------A.B INTEGER "Frank's".SMINT MY."type " longit -----10 16 13 15 sqldatatype_name ---------------A .B SYSIBM .INTEGER Frank's .SMINT MY .type
568
SQLTYPE y SQLLEN
La Tabla 53 en la pgina 570 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.
569
SQLTYPE 384/385
SQLLEN 10
SQLLEN
representacin de una atributo de longitud de la variable del fecha en serie de caracteres de longitud lenguaje principal fija representacin de una atributo de longitud de la variable del hora en serie de caracteres de longitud lenguaje principal fija representacin de una atributo de longitud indicacin de fecha y de la variable del lenguaje principal hora en serie de caracteres de longitud fija serie grfica de terminacin nula BLOB CLOB DBCLOB serie de caracteres de longitud variable serie de caracteres de longitud fija atributo de longitud de la variable del lenguaje principal No utilizado. No utilizado. No utilizado.
* * *
388/389
hora
392/393
26
400/401
N/D
N/D
BLOB CLOB DBCLOB serie de caracteres de longitud variable serie de caracteres de longitud fija
0 0 0
* * *
atributo de longitud de la variable del lenguaje principal atributo de longitud de la variable del lenguaje principal
452/453
456/457
atributo de longitud serie larga de caracteres de longitud de la columna variable no aplicable no aplicable
atributo de longitud serie larga de caracteres de longitud de la variable del lenguaje principal variable serie de caracteres de terminacin nula serie grfica de longitud variable serie grfica de longitud fija serie grfica larga atributo de longitud de la variable del lenguaje principal atributo de longitud de la variable del lenguaje principal atributo de longitud de la variable del lenguaje principal atributo de longitud de la variable del lenguaje principal 8 para precisin doble, 4 para precisin simple
460/461
464/465
serie grfica de longitud variable serie grfica de longitud fija serie grfica de longitud variable larga coma flotante
atributo de longitud de la columna atributo de longitud de la columna atributo de longitud de la columna 8 para precisin doble, 4 para precisin simple
468/469
472/473
480/481
coma flotante
484/485 492/493
570
SQLTYPE 496/497 500/501 916/917 920/921 924/925 960/961 964/965 968/969 988/989
996
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.
571
ROWID est soportado por DB2 Universal Database para z/OS Versin 8.
Tenga en cuenta que en SQLDA no se proporciona ninguna indicacin de que se sustituya el tipo de datos.
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 DEC(8,3) DEC(6,2) DEC(7,5) DEC(5,2) Valor Nybbles en hexadecimal agrupados por bytes 6574.23 00 65 74 23 0C -334.02 00 33 40 2D 5.2323 05 23 23 0C -23.5 02 35 0D
572
573
574
575
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
columnas referenciadas por restricciones de comprobacin SYSCAT.COLCHECKS en la pgina 588 columnas utilizadas en dimensiones columnas utilizadas en claves SYSCAT.COLUSE en la pgina 598 SYSCAT.KEYCOLUSE en la pgina 628
576
SYSCAT.COLOPTIONS en la pgina 593 SYSCAT.COLDIST en la pgina 589 SYSCAT.PARTITIONMAPS en la pgina 641 SYSCAT.EVENTMONITORS en la pgina 608 SYSCAT.EVENTS en la pgina 610 SYSCAT.EVENTTABLES en la pgina 610
SYSCAT.ROUTINEDEP en la pgina 645 SYSCAT.FUNCMAPPINGS en la pgina 613 SYSCAT.FUNCMAPOPTIONS en la pgina 612 SYSCAT.FUNCMAPPARMOPTIONS en la pgina 612 SYSCAT.ROUTINEPARMS en la pgina 647 SYSCAT.ROUTINES en la pgina 649 SYSCAT.VARIABLEAUTH en la pgina 694 SYSCAT.VARIABLEDEP en la pgina 695 SYSCAT.VARIABLES en la pgina 696
opciones de correlacin de funciones opciones de correlacin de parmetros de funcin parmetros de funciones funciones
1 1
variables globales
columnas de identidad columnas de ndice dependencias de ndice explotacin del ndice dependencias de extensin de ndice parmetros de extensin de ndice mtodos de bsqueda de extensiones de ndice extensiones de ndice opciones de ndice privilegios de ndice ndices
SYSCAT.COLIDENTATTRIBUTES en la pgina 592 SYSCAT.INDEXCOLUSE en la pgina 616 SYSCAT.INDEXDEP en la pgina 617 SYSCAT.INDEXEXPLOITRULES en la pgina 624 SYSCAT.INDEXEXTENSIONDEP en la pgina 624 SYSCAT.INDEXEXTENSIONPARMS en la pgina 626 SYSCAT.INDEXEXTENSIONMETHODS en la pgina 625 SYSCAT.INDEXEXTENSIONS en la pgina 627 SYSCAT.INDEXOPTIONS en la pgina 627 SYSCAT.INDEXAUTH en la pgina 616 SYSCAT.INDEXES en la pgina 618
Apndice D. Vistas de catlogo
577
Vista de catlogo SYSCAT.ROUTINEDEP en la pgina 645 SYSCAT.ROUTINES en la pgina 649 SYSCAT.ROUTINES en la pgina 649 SYSCAT.NICKNAMES en la pgina 629 SYSCAT.NAMEMAPPINGS en la pgina 629 SYSCAT.PACKAGEDEP en la pgina 633 SYSCAT.PACKAGEAUTH en la pgina 632 SYSCAT.PACKAGES en la pgina 634 SYSCAT.TABDETACHEDDEP en la pgina 675 SYSCAT.PASSTHRUAUTH en la pgina 642 SYSCAT.PREDICATESPECS en la pgina 642 SYSCAT.ROUTINEOPTIONS en la pgina 646 SYSCAT.ROUTINEPARMOPTIONS en la pgina 647 SYSCAT.ROUTINEPARMS en la pgina 647 SYSCAT.ROUTINES en la pgina 649 SYSCAT.SECURITYLABELACCESS en la pgina 661 SYSCAT. SECURITYLABELCOMPONENTELEMENTS en la pgina 661 SYSCAT.SECURITYLABELCOMPONENTS en la pgina 662 SYSCAT.SECURITYLABELS en la pgina 662 SYSCAT.SECURITYPOLICIES en la pgina 663 SYSCAT.SECURITYPOLICYCOMPONENTRULES en la pgina 664 SYSCAT.SECURITYPOLICYEXEMPTIONS en la pgina 665 SYSCAT.SURROGATEAUTHIDS en la pgina 670
tablas protegidas
proporciona DB2 para compatibilidad con z/OS restricciones de referencia opciones de tabla remota funciones
SYSIBM.SYSDUMMY1 en la pgina 710 SYSCAT.REFERENCES en la pgina 642 SYSCAT.TABOPTIONS en la pgina 684 SYSCAT.ROLEAUTH en la pgina 643 SYSCAT.ROLES en la pgina 644
SYSCAT.ROUTINEDEP en la pgina 645 SYSCAT.ROUTINEPARMS en la pgina 647 SYSCAT.ROUTINEAUTH en la pgina 644 SYSCAT.ROUTINES en la pgina 649 SYSCAT.ROUTINESFEDERATED en la pgina 658
SYSCAT.SCHEMAAUTH en la pgina 659 SYSCAT.SCHEMATA en la pgina 660 SYSCAT.SEQUENCEAUTH en la pgina 665 SYSCAT.SEQUENCES en la pgina 666
578
579
Todava estn disponibles las vistas de catlogo siguientes para funciones, mtodos y procedimientos definidos en DB2 Versin 7.1 y anterior: Funciones: SYSCAT.FUNCTIONS, SYSCAT.FUNCDEP, SYSCAT.FUNCPARMS Mtodos: SYSCAT.FUNCTIONS, SYSCAT.FUNCDEP, SYSCAT.FUNCPARMS Procedimientos: SYSCAT.PROCEDURES, SYSCAT.PROCPARMS No obstante, estas vistas no se han actualizado desde DB2 Versin 7.1. Utilice en su lugar la vista de catlogo SYSCAT.ROUTINES, SYSCAT.ROUTINEDEP o SYSCAT.ROUTINEPARMS.
Tabla 56. Gua bsica para las vistas de catlogo actualizables Descripcin columnas estadsticas detalladas de grupo de columnas Vista de catlogo SYSSTAT.COLUMNS en la pgina 713 SYSSTAT.COLGROUPDIST en la pgina 711 SYSSTAT.COLGROUPDISTCOUNTS en la pgina 712 SYSSTAT.COLGROUPS en la pgina 712 estadsticas detalladas de columna ndices rutinas1 tablas
1
SYSSTAT.COLDIST en la pgina 710 SYSSTAT.INDEXES en la pgina 714 SYSSTAT.ROUTINES en la pgina 717 SYSSTAT.TABLES en la pgina 718
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.
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 57. Vista de catlogo SYSCAT.ATTRIBUTES Posibilidad de nulos
Tipo de datos VARCHAR (128) VARCHAR (128) VARCHAR (128) VARCHAR (128)
Descripcin Nombre de esquema del tipo de datos estructurado que incluye el atributo. Nombre no calificado del tipo de datos estructurado que incluye el atributo. Nombre del atributo. Nombre de esquema del tipo de datos de un atributo.
580
SYSCAT.ATTRIBUTES
Tabla 57. Vista de catlogo SYSCAT.ATTRIBUTES (continuacin) Posibilidad de nulos
Nombre de esquema del tipo de fila de destino. Slo se aplica a los tipos de referencia; valor nulo en caso contrario. Nombre no calificado del tipo de fila de destino. Slo se aplica a los tipos de referencia; valor nulo en caso contrario. 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. 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. Posicin del atributo en la definicin del tipo de datos estructurado, empezando por 0. Para tipos de serie, contiene la longitud mxima. Para el tipo decimal, contiene la precisin (nmero de dgitos); 0 en caso contrario. Para el tipo decimal, contiene la escala (nmero de dgitos a la derecha de la coma decimal); 0 en caso contrario. Para tipos de serie, indica la pgina de cdigos; 0 indica FOR BIT DATA; 0 para tipos que no sean de serie.
TARGET_TYPENAME
VARCHAR (128)
SOURCE_TYPESCHEMA
VARCHAR (128)
SOURCE_TYPENAME
VARCHAR (128)
ORDINAL LENGTH
SMALLINT INTEGER
SCALE
SMALLINT
CODEPAGE
SMALLINT
COLLATIONSCHEMA
VARCHAR (128)
Para tipos de serie, el nombre de esquema de la clasificacin para el atributo; un valor nulo en caso contrario. Para tipos de serie, el nombre no calificado de la clasificacin para el atributo; un valor nulo en caso contrario. Slo se aplica a los tipos LOB; blanco en caso contrario. v N = Los cambios no se anotan cronolgicamente v Y = Los cambios se anotan cronolgicamente
COLLATIONNAME
VARCHAR (128)
LOGGED
CHAR (1)
COMPACT
CHAR (1)
Slo se aplica a los tipos LOB; blanco en caso contrario. v N = Se almacena en formato no compacto v Y = Se almacena en formato compacto
DL_FEATURES
CHAR(10)
581
SYSCAT.ATTRIBUTES
Tabla 57. Vista de catlogo SYSCAT.ATTRIBUTES (continuacin) Posibilidad de nulos Y
SYSCAT.AUDITPOLICIES
Cada fila representa una poltica de comprobacin.
Tabla 58. Vista de catlogo SYSCAT.AUDITPOLICIES Posibilidad de nulos
Descripcin Nombre de la poltica de comprobacin. Identificador de la poltica de comprobacin. Hora a la que se ha creado la poltica de comprobacin. Hora a la que se modific por ltima vez la poltica de comprobacin. Estado para la categora AUDIT. v B = Ambos v F = Error v N = Ninguno v S = Satisfactorio
CONTEXTSTATUS
CHAR (1)
VALIDATESTATUS
CHAR (1)
CHECKINGSTATUS
CHAR (1)
SECMAINTSTATUS
CHAR (1)
582
SYSCAT.AUDITPOLICIES
Tabla 58. Vista de catlogo SYSCAT.AUDITPOLICIES (continuacin) Posibilidad de nulos
SYSADMINSTATUS
CHAR (1)
EXECUTESTATUS
CHAR (1)
EXECUTEWITHDATA
CHAR (1)
Variables del lenguaje principal y marcadores de parmetro conectados con la categora EXECUTE. v N = No v Y = S
ERRORTYPE
CHAR (1)
REMARKS
VARCHAR(254)
SYSCAT.AUDITUSE
Cada fila representa una poltica de comprobacin asociada a un objeto no de base de datos, como por ejemplo, USER, GROUP o autorizacin (SYSADM, SYSCTRL, SYSMAINT).
Tabla 59. Vista de catlogo SYSCAT.AUDITUSE Posibilidad de nulos
583
SYSCAT.AUDITUSE
Tabla 59. Vista de catlogo SYSCAT.AUDITUSE (continuacin) Posibilidad de nulos
Descripcin El tipo de objeto al que est asociada esta poltica de comprobacin. v S = MQT v T = Tabla v g = Autorizacin v i = ID de autorizacin v x = Contexto fiable v Blanco = Base de datos
SUBOBJECTTYPE
CHAR(1)
Si OBJECTTYPE es i, este es el tipo que representa el ID de autorizacin. v G = Grupo v R = Funcin v U = Usuario v Blanco = No se aplica
OBJECTSCHEMA
VARCHAR (128)
Nombre de esquema del objeto para el se est utilizando la poltica de comprobacin. OBJECTSCHEMA es nulo si OBJECTTYPE identifica un objeto para el que no se aplica un esquema. Nombre no calificado del objeto para el se est utilizando esta poltica de comprobacin.
OBJECTNAME
VARCHAR (128)
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 60. Vista de catlogo SYSCAT.BUFFERPOOLDBPARTITIONS Posibilidad de nulos
Descripcin Identificador interno de la agrupacin de almacenamientos intermedios. Nmero de particin de base de datos. Nmero de pginas de esta agrupacin de almacenamientos intermedios en esta particin de base de datos.
584
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 61. Vista de catlogo SYSCAT.BUFFERPOOLS Posibilidad de nulos
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). 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. 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. Siembre N. El almacenamiento ampliado ya no se aplica. 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. Nmero de pginas de un bloque.
NPAGES
INTEGER
PAGESIZE
INTEGER
ESTORE NUMBLOCKPAGES
BLOCKSIZE NGNAME
1
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).
Nota: 1. La columna NGNAME se incluye por razones de compatibilidad con versiones anteriores. Consulte DBPGNAME.
SYSCAT.CASTFUNCTIONS
Cada fila representa una funcin de conversin, sin incluir las funciones de conversin incorporadas.
585
SYSCAT.CASTFUNCTIONS
Tabla 62. Vista de catlogo SYSCAT.CASTFUNCTIONS Posibilidad de nulos
Nombre de columna FROM_TYPESCHEMA FROM_TYPENAME TO_TYPESCHEMA TO_TYPENAME FUNCSCHEMA FUNCNAME SPECIFICNAME ASSIGN_FUNCTION
Tipo de datos VARCHAR (128) VARCHAR (128) VARCHAR (128) VARCHAR (128) VARCHAR (128) VARCHAR (128) VARCHAR (128) CHAR (1)
Descripcin Nombre de esquema del tipo de datos del parmetro. Nombre del tipo de datos del parmetro. Nombre de esquema del tipo de datos del resultado despus de la conversin. Nombre del tipo de datos del resultado despus de la conversin. Nombre de esquema de la funcin. Nombre no calificado de la funcin. Nombre de la instancia de la rutina (puede ser un nombre generado por el sistema). v N = No es una funcin de asignacin v Y = Funcin de asignacin implcita
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 63. Vista de catlogo SYSCAT.CHECKS Posibilidad de nulos
Descripcin Nombre de la restriccin de comprobacin. ID de autorizacin bajo el que se ha creado la restriccin de comprobacin. v S = El sistema es el propietario v U = El propietario es un usuario individual
Nombre de esquema de la tabla a la que se aplica esta restriccin. Nombre de la tabla a la que se aplica esta restriccin. 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. Valor del esquema por omisin en el momento de la definicin del objeto. Se utiliza para completar cualquier referencia no calificada.
QUALIFIER
VARCHAR (128)
586
SYSCAT.CHECKS
Tabla 63. Vista de catlogo SYSCAT.CHECKS (continuacin) Posibilidad de nulos
Descripcin Tipo de restriccin de comprobacin: v C = Restriccin de comprobacin v F = Dependencia funcional v O = La restriccin es una propiedad del objeto v S = Restriccin de comprobacin generada por el sistema para la columna GENERATED ALWAYS
FUNC_PATH
CLOB (2K)
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. Texto de la condicin de comprobacin o definicin de la columna derivad.1 Nmero de filas para las que es vlida la restriccin informativa, expresado como un porcentaje del total. Nombre de esquema de la clasificacin para la restriccin. Nombre no calificado de la clasificacin para la restriccin. Nombre de esquema de la clasificacin para clusulas ORDER BY en la restriccin. Nombre no calificado de la clasificacin para clusulas ORDER BY en la restriccin. ID de autorizacin bajo el que se ha creado la restriccin de comprobacin.
TEXT PERCENTVALID
CLOB(2M) SMALLINT
VARCHAR (128) VARCHAR (128) VARCHAR (128) VARCHAR (128) VARCHAR (128)
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.
SYSCAT.COLAUTH
Cada fila representa un usuario o un grupo al que se ha otorgado uno o ms privilegios sobre una columna.
Tabla 64. Vista de catlogo SYSCAT.COLAUTH Posibilidad de nulos
587
SYSCAT.COLAUTH
Tabla 64. Vista de catlogo SYSCAT.COLAUTH (continuacin) Posibilidad de nulos
Descripcin v S = El sistema es el otorgante v U = El otorgante es un usuario individual El que mantiene un privilegio. v G = Se otorga a un grupo v R = Se otorga a una funcin v U = Se otorga a un usuario individual
GRANTEE GRANTEETYPE
Nombre de esquema de la tabla o vista en la que se mantiene el privilegio. Nombre no calificado de la tabla o vista en la que se mantiene el privilegio. Nombre de la columna a la que se aplica este privilegio. Nmero de columna de esta columna dentro de la tabla (empezando por 0). v R = Hace referencia a privilegio v U = Actualiza privilegio
GRANTABLE
CHAR (1)
Nota: 1. Los privilegios se pueden otorgar por columna, pero slo se pueden revocar en base a una tabla.
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 65. Vista de catlogo SYSCAT.COLCHECKS Posibilidad de nulos
Descripcin Nombre de la restriccin de comprobacin. Nombre de esquema de la tabla que contiene la columna a la que se hace referencia. Nombre no calificado de la tabla que contiene la columna a la que se hace referencia. Nombre de la columna.
COLNAME
VARCHAR (128)
588
SYSCAT.COLCHECKS
Tabla 65. Vista de catlogo SYSCAT.COLCHECKS (continuacin) Posibilidad de nulos
Descripcin v D = La columna es el hijo de una dependencia funcional v P = La columna es el padre de una dependencia funcional v R = Se hace referencia a la columna en la restriccin de comprobacin v 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 v 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
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 66. Vista de catlogo SYSCAT.COLDIST Posibilidad de nulos
Tipo de datos VARCHAR (128) VARCHAR (128) VARCHAR (128) CHAR (1)
Descripcin Nombre de esquema de la tabla a la que se aplican las estadsticas. Nombre no calificado de la tabla a la que se aplican las estadsticas. Nombre de la columna a la que se aplican las estadsticas. v F = Valor de frecuencia v Q = Valor cuantil 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.
SEQNO
SMALLINT
COLVALUE1 VALCOUNT
VARCHAR(254) BIGINT
El valor de los datos como un literal de caracteres o un valor nulo. Si TYPE = F, VALCOUNT es el nmero de apariciones de COLVALUE en la columna. Si TYPE = Q, VALCOUNT es el nmero de filas cuyo valor es menor o igual que COLVALUE.
589
SYSCAT.COLDIST
Tabla 66. Vista de catlogo SYSCAT.COLDIST (continuacin) Posibilidad de nulos Y
Descripcin Si TYPE = Q, esta columna registra el nmero de valores diferenciados que son menores o iguales que COLVALUE (nulo si no est disponible).
Nota: 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.
SYSCAT.COLGROUPCOLS
Cada fila representa una columna que forma parte de un grupo de columnas.
Tabla 67. Vista de catlogo SYSCAT.COLGROUPCOLS Posibilidad de nulos
Descripcin Identificador del grupo de columnas. Nombre de la columna del grupo de columnas. Nmero de esquema de la tabla correspondiente a la columna del grupo de columnas. Nmero no calificado de la tabla correspondiente a la columna del grupo de columnas. Nmero ordinal de la columna del grupo de columnas.
TABNAME
VARCHAR (128)
ORDINAL
SMALLINT
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 68. Vista de catlogo SYSCAT.COLGROUPDIST Posibilidad de nulos
Descripcin Identificador del grupo de columnas. v F = Valor de frecuencia v Q = Valor cuantil Nmero ordinal de la columna del grupo de columnas.
ORDINAL
SMALLINT
590
SYSCAT.COLGROUPDIST
Tabla 68. Vista de catlogo SYSCAT.COLGROUPDIST (continuacin) Posibilidad de nulos
Descripcin 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. El valor de los datos como un literal de caracteres o un valor nulo.
COLVALUE1 Nota:
VARCHAR(254)
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.
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 69. Vista de catlogo SYSCAT.COLGROUPDISTCOUNTS Posibilidad de nulos
Descripcin Identificador del grupo de columnas. v F = Valor de frecuencia v Q = Valor cuantil El nmero de secuencia n que representa el valor n de TYPE. Si TYPE = F, VALCOUNT es el nmero de apariciones 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. 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).
SEQNO VALCOUNT
SMALLINT BIGINT
DISTCOUNT
BIGINT
SYSCAT.COLGROUPS
Cada fila representa un grupo de columnas y estadsticas que se aplican a todo el grupo de columnas.
591
SYSCAT.COLGROUPS
Tabla 70. Vista de catlogo SYSCAT.COLGROUPS Posibilidad de nulos
Tipo de datos VARCHAR (128) VARCHAR (128) INTEGER BIGINT SMALLINT SMALLINT
Descripcin Nombre de esquema del grupo de columnas. Nombre no calificado del grupo de columnas. Identificador del grupo de columnas. Cardinalidad del grupo de columnas. Nmero de valores frecuentes recopilados para el grupo de columnas. Nmero de valores cuantiles recopilados para el grupo de columnas.
SYSCAT.COLIDENTATTRIBUTES
Cada fila representa una columna de identidad definida para una tabla.
Tabla 71. Vista de catlogo SYSCAT.COLIDENTATTRIBUTES Posibilidad de nulos
Nombre de columna TABSCHEMA TABNAME COLNAME START INCREMENT MINVALUE MAXVALUE CYCLE
Tipo de datos VARCHAR (128) VARCHAR (128) VARCHAR (128) DECIMAL(31,0) DECIMAL(31,0) DECIMAL(31,0) DECIMAL(31,0) CHAR (1)
Descripcin Nombre de esquema de la tabla o vista que contiene la columna. Nombre no calificado de la tabla o vista que contiene la columna. Nombre de la columna. Valor inicial de la secuencia. Valor de incremento. Valor mnimo de la secuencia. Valor mximo de la secuencia. Indica si la secuencia puede o no continuar generando valores despus de alcanzar su valor mximo o mnimo. v N = La secuencia no puede continuar v 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. Indica si los nmeros de secuencia se deben o no generar en orden de peticin. v N = No es necesario que los nmeros de secuencia se generen en orden de peticin v Y = Los nmeros de secuencia se deben generar en orden de peticin
ORDER
CHAR (1)
592
SYSCAT.COLIDENTATTRIBUTES
Tabla 71. Vista de catlogo SYSCAT.COLIDENTATTRIBUTES (continuacin) Posibilidad de nulos Y
Descripcin 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. Identificador de la secuencia.
SEQID
INTEGER
SYSCAT.COLOPTIONS
Cada fila contiene los valores de las opciones especficas de columna.
Tabla 72. Vista de catlogo SYSCAT.COLOPTIONS Posibilidad de nulos
Tipo de datos VARCHAR (128) VARCHAR (128) VARCHAR (128) VARCHAR (128) CLOB(32K)
Descripcin Nombre de esquema de un apodo. Apodo de la columna para la que se establecen opciones. Nombre de columna local. Nombre de la opcin de columna. Valor.
SYSCAT.COLUMNS
Cada fila representa una columna definida para una tabla, vista o apodo.
Tabla 73. Vista de catlogo SYSCAT.COLUMNS Posibilidad de nulos
Tipo de datos VARCHAR (128) VARCHAR (128) VARCHAR (128) SMALLINT VARCHAR (128) VARCHAR (128)
Descripcin Nombre de esquema de la tabla, vista o apodo que contiene la columna. Nombre no calificado de la tabla, vista o apodo que contiene la columna. Nombre de la columna. Nmero de esta columna en la tabla (empezando por 0). Nombre de esquema del tipo de datos de la columna. Nombre no calificado del tipo de datos de la columna.
593
SYSCAT.COLUMNS
Tabla 73. Vista de catlogo SYSCAT.COLUMNS (continuacin) Posibilidad de nulos
Descripcin Longitud mxima de los datos; 0 para tipos diferenciados. La columna LENGTH indica la precisin para campos DECIMAL e indica el nmero de bytes de almacenamiento necesarios para las columnas de coma flotante decimal; es decir, 8 y 16 para DECFLOAT(16) y DECFLOAT(34), respectivamente. Escala si el tipo de columna es DECIMAL; 0 en caso contrario.
SCALE DEFAULT1
SMALLINT 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. Atributo de capacidad de nulos para la columna. v N = La columna no puede contener nulos v 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.
NULLS2
CHAR (1)
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. Y Para tipos de serie, el nombre de esquema de la clasificacin para la columna; un valor nulo en caso contrario. Para tipos de serie, el nombre no calificado de la clasificacin para la columna; un valor nulo en caso contrario. Slo se aplica a las columnas cuyo tipo es LOB o diferenciado en base a LOB; blanco en caso contrario. v N = La columna no se anota cronolgicamente v Y = La columna se anota cronolgicamente
COLLATIONSCHEMA
VARCHAR (128)
COLLATIONNAME
VARCHAR (128)
LOGGED
CHAR (1)
594
SYSCAT.COLUMNS
Tabla 73. Vista de catlogo SYSCAT.COLUMNS (continuacin) Posibilidad de nulos
Descripcin Slo se aplica a las columnas cuyo tipo es LOB o diferenciado en base a LOB; blanco en caso contrario. v N = La columna no se compacta v 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. 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. 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. 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. Y La posicin numrica de la columna dentro de la clave primaria de la tabla. Nulo para columnas de subtablas y tablas jerrquicas. 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. 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. 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. Nmero de valores nulos de la columna; -1 si no se recopilan estadsticas. Y Nombre de esquema del tipo de fila de destino, si el tipo de esta columna es REFERENCE; valor nulo en caso contrario.
HIGH2KEY3
VARCHAR(254)
LOW2KEY3
VARCHAR(254)
AVGCOLLEN
INTEGER
KEYSEQ
SMALLINT
PARTKEYSEQ
SMALLINT
NQUANTILES
SMALLINT
NMOSTFREQ
SMALLINT
NUMNULLS TARGET_TYPESCHEMA
595
SYSCAT.COLUMNS
Tabla 73. Vista de catlogo SYSCAT.COLUMNS (continuacin) Posibilidad de nulos Y
Descripcin Nombre no calificado del tipo de fila de destino, si el tipo de esta columna es REFERENCE; valor nulo en caso contrario. Nombre de esquema del mbito (valor de destino), si el tipo de esta columna es REFERENCE; valor nulo en caso contrario. Nombre no calificado del mbito (tabla de destino), si el tipo de esta columna es REFERENCE; valor nulo en caso contrario. 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. 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. Esta columna ya no se utiliza y se eliminar en un prximo release. Slo se aplica a columnas de tipo REFERENCE; blancos en caso contrario. Cada posicin de byte se define de la manera siguiente: v 1 = Columna identificador de objeto (OID) (Y para s; N para no) v 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.
SCOPE_TABSCHEMA
VARCHAR (128)
SCOPE_TABNAME
VARCHAR (128)
SOURCE_TABSCHEMA
VARCHAR (128)
SOURCE_TABNAME
VARCHAR (128)
DL_FEATURES SPECIAL_PROPS
CHAR(10) CHAR(8)
Y Y
HIDDEN
CHAR (1)
Tipo de columna oculta. v I = La columna se define como IMPLICITLY HIDDEN v S = Columna oculta gestionada por el sistema v Blanco = La columna no est oculta
INLINE_LENGTH
INTEGER
Tamao mximo en bytes de la representacin interna de una instancia de un documento XML de un tipo estructurado que puede almacenarse en la tabla base; 0 cuando no es de aplicacin. v N = No es una columna de identidad v T = Columna de indicacin de fecha y hora de cambio de fila v Y = Columna de identidad
IDENTITY
CHAR (1)
596
SYSCAT.COLUMNS
Tabla 73. Vista de catlogo SYSCAT.COLUMNS (continuacin) Posibilidad de nulos
Descripcin v N = No es una columna de indicacin de fecha y hora de cambio de fila v Y = Columna de indicacin de fecha y hora de cambio de fila
GENERATED
CHAR (1)
Tipo de columna generada. v A = Siembre se genera un valor de columna v D = Por omisin se genera un valor de columna v 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. v O = Compresin desactivada v S = Comprimir valores por omisin del sistema
COMPRESS
CHAR (1)
Y Y
Para su utilizacin en el futuro. Para su utilizacin en el futuro. Nmero medio de subelementos de la columna. Slo se aplica a columnas de tipo serie de caracteres. Longitud media de los delimitadores que separan cada subelemento de la columna. Slo se aplica a columnas de tipo serie de caracteres. Promedio del nmero de caracteres (basndose en la clasificacin en vigor para la columna) necesarios para la columna; -1 si es un campo tipo long o LOB o no se han recopilado estadsticas; -2 par columnas heredadas y columnas de tablas jerrquicas.
SUB_DELIM_LENGTH
SMALLINT
AVGCOLLENCHAR
INTEGER
IMPLICITVALUE4
VARCHAR(254)
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. Nombre de la etiqueta de seguridad asociada a la columna si se trata de una columna protegida; valor nulo en caso contrario. Comentarios proporcionados por el usuario o nulo.
SECLABELNAME
VARCHAR(128)
REMARKS
VARCHAR(254)
597
SYSCAT.COLUMNS
Tabla 73. Vista de catlogo SYSCAT.COLUMNS (continuacin) Posibilidad de nulos
Tipo de datos
Descripcin
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.
SYSCAT.COLUSE
Cada fila representa una columna a la que se hace referencia en la clusula DIMENSIONS de una sentencia CREATE TABLE.
Tabla 74. Vista de catlogo SYSCAT.COLUSE Posibilidad de nulos
Descripcin Nombre de esquema de la tabla que contiene la columna. Nombre no calificado de la tabla que contiene la columna. Nombre de la columna. 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.
598
SYSCAT.COLUSE
Tabla 74. Vista de catlogo SYSCAT.COLUSE (continuacin) Posibilidad de nulos
Descripcin 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. Tipo de dimensin. v C = Clster o clster de varias dimensiones v P = Particionamiento
TYPE
CHAR (1)
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 75. Vista de catlogo SYSCAT.CONSTDEP Posibilidad de nulos
Tipo de datos VARCHAR (128) VARCHAR (128) VARCHAR (128) CHAR (1)
Descripcin Nombre no calificado de la restriccin. Nombre de esquema de la tabla a la que se aplica la restriccin. Nombre no calificado de la tabla a la que se aplica la restriccin. Tipo de objeto del que depende la restriccin. Los valores posibles son: v F = Instancia de rutina v I = ndice v R = Tipo estructurado
BSCHEMA BNAME
Nombre de esquema del objeto del que depende la restriccin. Nombre no calificado del objeto del que depende la restriccin.
SYSCAT.CONTEXTATTRIBUTES
Cada fila representa un atributo de contexto fiable.
Tabla 76. Vista de catlogo SYSCAT.CONTEXTATTRIBUTES Posibilidad de nulos
599
SYSCAT.CONTEXTATTRIBUTES
Tabla 76. Vista de catlogo SYSCAT.CONTEXTATTRIBUTES (continuacin) Posibilidad de nulos
ATTR_VALUE ATTR_OPTIONS
Valor del atributo. Si ATTR_NAME es ADDRESS, especifica el nivel de cifrado necesario para esta direccin especfica. Un valor nulo indica que se aplica el atributo ENCRYPTION global.
SYSCAT.CONTEXTS
Cada fila representa un contexto fiable.
Tabla 77. Vista de catlogo SYSCAT.CONTEXTS Posibilidad de nulos
Tipo de datos VARCHAR (128) INTEGER VARCHAR (128) VARCHAR (128) TIMESTAMP TIMESTAMP CHAR (1)
Descripcin Nombre del contexto fiable. Identificador del contexto fiable. ID de autorizacin del sistema asociado al contexto fiable.
La funcin por omisin para el contexto. Hora a la que se ha creado el contexto fiable. Hora a la que se modific por ltima vez el contexto fiable. Estado de contexto fiable. v N = Inhabilitado v Y = Habilitado
Y Y Y
Identificador de la poltica de comprobacin. Nombre de la poltica de comprobacin. Comentarios proporcionados por el usuario o nulo.
SYSCAT.DATAPARTITIONEXPRESSION
Cada fila representa una expresin correspondiente a esta parte de la clave de particionamiento de tabla.
Tabla 78. Vista de catlogo SYSCAT.DATAPARTITIONEXPRESSION Posibilidad de nulos
600
SYSCAT.DATAPARTITIONEXPRESSION
Tabla 78. Vista de catlogo SYSCAT.DATAPARTITIONEXPRESSION (continuacin) Posibilidad de nulos
Descripcin Nombre no calificado de la tabla particionada. ID de secuencia de la parte de clave de expresin, empezando por 1. Expresin correspondiente a esta entrada en la secuencia, en sintaxis de SQL. v N = Los valores nulos de esta expresin se comparan altos v Y = Los valores nulos de esta expresin se comparan bajos
SYSCAT.DATAPARTITIONS
Cada fila representa una particin de datos.
Tabla 79. Vista de catlogo SYSCAT.DATAPARTITIONS Posibilidad de nulos
Tipo de datos VARCHAR (128) VARCHAR (128) VARCHAR (128) INTEGER INTEGER
Descripcin Nombre de la particin de datos Nombre de esquema de la tabla a la que pertenece esta particin de datos. Nombre no calificado de la tabla a la que pertenece esta particin de datos. Identificador de la particin de datos.
Identificador del espacio de tablas en el que est almacenada esta particin de datos. Nulo si STATUS es I. Identificador de la particin de datos dentro del espacio de tablas. Identificador del espacio de tablas en el que se almacenan los datos largos. Nulo si STATUS es I. 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: v D = No hay movimiento de datos v F = Acceso completo v N = No hay acceso v R = Acceso de slo lectura
PARTITIONOBJECTID LONG_TBSPACEID
INTEGER INTEGER
Y Y
ACCESS_MODE
CHAR (1)
601
SYSCAT.DATAPARTITIONS
Tabla 79. Vista de catlogo SYSCAT.DATAPARTITIONS (continuacin) Posibilidad de nulos
Descripcin v A = La particin de datos se acaba de enlazar v D = La particin de datos est desenlazada v 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 v 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 LOWINCLUSIVE
Nmero de secuencia de la particin de datos (empezando por 0). v N = No incluye el valor de clave bajo v Y = Incluye el valor de clave bajo Valor de clave bajo (una representacin de serie de un valor de SQL) correspondiente a esta particin de datos. v N = No incluye el valor de clave alto v Y = Incluye el valor de clave alto Valor de clave alto (una representacin de serie de un valor de SQL) correspondiente a esta particin de datos.
LOWVALUE
VARCHAR(512)
HIGHINCLUSIVE
CHAR (1)
HIGHVALUE
VARCHAR(512)
SYSCAT.DATATYPES
Cada fila representa un tipo de datos incorporado o definido por el usuario.
Tabla 80. Vista de catlogo SYSCAT.DATATYPES Posibilidad de nulos
Descripcin Nombre de esquema del tipo de datos. El nombre de esquema para tipos incorporados es SYSIBM. Nombre no calificado del tipo de datos. ID de autorizacin bajo el cual se ha creado el tipo. v S = El sistema es el propietario v U = El propietario es un usuario individual
602
SYSCAT.DATATYPES
Tabla 80. Vista de catlogo SYSCAT.DATATYPES (continuacin) Posibilidad de nulos Y
Descripcin 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. 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. v A = Tipo de matriz v R = Tipo estructurado definido por el usuario v S = Tipo predefinido por el sistema v T = Tipo diferenciado definido por el usuario
SOURCENAME
VARCHAR (128)
METATYPE
CHAR (1)
TYPEID SOURCETYPEID
SMALLINT SMALLINT S
Identificador del tipo de datos 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. 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. Escala para los tipos diferenciados o tipos de representacin de referencia basados en el tipo DECIMAL incorporado; o cero 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. 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. S Para tipos de serie, el nombre de esquema de la clasificacin para el tipo de datos; un valor nulo en caso contrario. Para tipos de serie, el nombre no calificado de la clasificacin para el tipo de datos; un valor nulo en caso contrario. Cardinalidad mxima de la matriz. Nulo si el tipo no es una matriz. Tiempo de creacin del tipo de datos. Nmero de atributos del tipo de datos.
LENGTH
INTEGER
SCALE
SMALLINT
CODEPAGE
SMALLINT
COLLATIONSCHEMA
VARCHAR (128)
COLLATIONNAME
VARCHAR (128)
603
SYSCAT.DATATYPES
Tabla 80. Vista de catlogo SYSCAT.DATATYPES (continuacin) Posibilidad de nulos
Descripcin v N = No se pueden crear instancias del tipo v Y = Se pueden crear instancias del tipo
WITH_FUNC_ACCESS
CHAR (1)
v N = Los mtodos correspondientes a este tipo no se pueden invocar utilizando notacin de funcin v Y = Todos los mtodos correspondientes a este tipo se pueden invocar utilizando notacin de funcin
FINAL
CHAR (1)
v N = El tipo definido por el usuario puede tener subtipos v 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. S Longitud en lnea natural generada por el sistema de una instancia de un tipo estructurado. Nulo si este tipo no es un tipo estructurado. 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. Identificador del archivo Jar que contiene la clase Java que implementa el tipo de SQL. Nulo si no se especifica la clusula EXTERNAL NAME. Clase Java que implementa el tipo de SQL. Nulo si no se especifica la clusula EXTERNAL NAME. SQLJ espec_representacin de la clase Java que implementa el tipo de SQL. Nulo si no se especifica la clusula EXTERNAL NAME ... LANGUAGE JAVA REPRESENTATION SPEC. v D = datos SQL v S = Serializable
NATURAL_INLINE_LENGTH
INTEGER
JARSCHEMA
VARCHAR (128)
JAR_ID
VARCHAR (128)
CLASS
VARCHAR (384)
SQLJ_REPRESENTATION
CHAR (1)
Hora a la que se modific por ltima vez el tipo de datos. ID de autorizacin bajo el cual se ha creado el tipo. Comentarios proporcionados por el usuario o nulo.
1. La columna DEFINER se incluye por razones de compatibilidad con versiones anteriores. Consulte OWNER.
604
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 81. Vista de catlogo SYSCAT.DBAUTH Posibilidad de nulos
Descripcin El que ha otorgado la autorizacin. v S = El sistema es el otorgante v U = El otorgante es un usuario individual El que mantiene la autorizacin. v G = Se otorga a un grupo v R = Se otorga a una funcin v U = Se otorga a un usuario individual
GRANTEE GRANTEETYPE
BINDADDAUTH
CHAR (1)
CONNECTAUTH
CHAR (1)
CREATETABAUTH
CHAR (1)
DBADMAUTH
CHAR (1)
EXTERNALROUTINEAUTH
CHAR (1)
IMPLSCHEMAAUTH
CHAR (1)
Autorizacin para crear esquemas de forma implcita, creando objetos en esquemas no existentes. v N = No se mantiene v Y = Se mantiene
LOADAUTH
CHAR (1)
NOFENCEAUTH
CHAR (1)
Autorizacin para crear funciones definidas por el usuario no delimitadas. v N = No se mantiene v Y = Se mantiene
605
SYSCAT.DBAUTH
Tabla 81. Vista de catlogo SYSCAT.DBAUTH (continuacin) Posibilidad de nulos
Descripcin Autorizacin para acceder a la base de datos mientras est inactiva. v N = No se mantiene v Y = Se mantiene
LIBRARYADMAUTH SECURITYADMAUTH
SYSCAT.DBPARTITIONGROUPDEF
Cada fila representa una particin de base de datos que est contenida en un grupo de particiones de base de datos.
Tabla 82. Vista de catlogo SYSCAT.DBPARTITIONGROUPDEF Posibilidad de nulos
Descripcin Nombre del grupo de particiones de base de datos que contiene la particin de base de datos. 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.
DBPARTITIONNUM
SMALLINT
606
SYSCAT.DBPARTITIONGROUPDEF
Tabla 82. Vista de catlogo SYSCAT.DBPARTITIONGROUPDEF (continuacin) Posibilidad de nulos
Descripcin Estado de la particin de base de datos. v A = La particin de base de datos recin aadida no est en el mapa de distribucin, pero los contenedores correspondientes a los espacios de tablas 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 v D = La particin de base de datos se eliminar cuando la operacin de redistribucin del grupo de particiones de base de datos finalice satisfactoriamente v 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 tablas del grupo de particiones de base de datos v Y = La particin de base de datos est en el mapa de distribucin
SYSCAT.DBPARTITIONGROUPS
Cada fila representa un grupo de particiones de base de datos.
Tabla 83. Vista de catlogo SYSCAT.DBPARTITIONGROUPS Posibilidad de nulos
Descripcin Nombre del grupo de particiones de base de datos. ID de autorizacin bajo el que se ha creado el grupo de particiones de base de datos. v S = El sistema es el propietario v U = El propietario es un usuario individual
PMAP_ID REDISTRIBUTE_PMAP_ID
SMALLINT SMALLINT
Identificador del mapa de distribucin en la vista de catlogo SYSCAT.PARTITIONMAPS. Identificador del mapa de distribucin que se utiliza actualmente para la redistribucin; -1 si actualmente no se est realizando ninguna redistribucin. Hora de creacin del grupo de particiones de base de datos.
CREATE_TIME
TIMESTAMP
607
SYSCAT.DBPARTITIONGROUPS
Tabla 83. Vista de catlogo SYSCAT.DBPARTITIONGROUPS (continuacin) Posibilidad de nulos
REMARKS Nota:
1. La columna DEFINER se incluye por razones de compatibilidad con versiones anteriores. Consulte OWNER.
SYSCAT.EVENTMONITORS
Cada fila representa un supervisor de sucesos.
Tabla 84. Vista de catlogo SYSCAT.EVENTMONITORS Posibilidad de nulos
Descripcin Nombre del supervisor de sucesos. ID de autorizacin bajo el que se ha creado el supervisor de sucesos. v S = El sistema es el propietario v U = El propietario es un usuario individual
TARGET_TYPE
CHAR (1)
Tipo del destino en el que se graban los datos del suceso. v F = Archivo v P = Conducto v T = Tabla
TARGET
VARCHAR (762)
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. 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). 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).
MAXFILES
INTEGER
MAXFILESIZE
INTEGER
608
SYSCAT.EVENTMONITORS
Tabla 84. Vista de catlogo SYSCAT.EVENTMONITORS (continuacin) Posibilidad de nulos Y
Descripcin Tamao del almacenamiento intermedio (en pginas de 4K) utilizado por los supervisores de sucesos con los destinos de archivo; nulo en caso contrario. Modalidad de entrada/salida (I/O) de archivo. v B = Bloqueado v N = No bloqueado v Nulo = TARGET_TYPE no es F (archivo) ni T (tabla)
IO_MODE
CHAR (1)
WRITE_MODE
CHAR (1)
Indica cmo maneja este supervisor de sucesos los datos de sucesos existentes cuando se activa el supervisor. v A = Adjuntar v R = Sustituir v Nulo = TARGET_TYPE no es F (archivo)
AUTOSTART
CHAR (1)
Indica si este supervisor de sucesos se debe activar automticamente cuando se inicia la base de datos. v N = No v 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. mbito de supervisin. v G = Global v L = Local v T = Cada particin de base de datos en la que haya espacio de tablas v Blanco = Supervisor de sucesos WRITE TO TABLE
MONSCOPE
CHAR (1)
EVMON_ACTIVATES NODENUM1
INTEGER SMALLINT
Nmero de veces que se ha activado el supervisor de sucesos. Nmero de la particin de base de datos en la que el supervisor de sucesos ejecuta y anota cronolgicamente los sucesos. ID de autorizacin bajo el que se ha creado el supervisor de sucesos. Y Reservado para su utilizacin en el futuro.
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.
609
SYSCAT.EVENTS
SYSCAT.EVENTS
Cada fila representa un suceso que se est supervisando. En general, un supervisor de sucesos supervisa varios sucesos.
Tabla 85. Vista de catlogo SYSCAT.EVENTS Posibilidad de nulos
Descripcin Nombre del supervisor de sucesos que est supervisando este suceso. Tipo del suceso que se supervisa. Los valores posibles son: v ACTIVITIES v CONNECTIONS v DATABASE v DEADLOCKS v DETAILDEADLOCKS v STATEMENTS v TABLES v TABLESPACES v THRESHOLD_VIOLATIONS v TRANSACTIONS v STATISTICS
FILTER
CLOB (64K)
SYSCAT.EVENTTABLES
Cada fila representa la tabla de destino de un supervisor de sucesos que escribe en tablas SQL.
Tabla 86. Vista de catlogo SYSCAT.EVENTTABLES Posibilidad de nulos
610
SYSCAT.EVENTTABLES
Tabla 86. Vista de catlogo SYSCAT.EVENTTABLES (continuacin) Posibilidad de nulos
Descripcin Nombre del grupo de datos lgicos. Los valores posibles son: v ACTIVITYHISTORY v BUFFERPOOL v CONN v CONNHEADER v CONTROL v DATAVAL v DB v DEADLOCK v DLCONN v DLLOCK v SCSTATS v STMT v STMTHIST v STMTVALS v SUBSECTION v TABLE v TABLESPACE v THRESHOLDVIOLATIONS v WCSTATS v WLSTATS v XACT
Nombre de esquema de la tabla de destino. Nombre no calificado de la tabla de destino. Un valor de porcentaje que especifica hasta qu punto debe estar lleno un espacio de tablas DMS para que un supervisor de sucesos lo desactive de forma automtica. Establecido en 100 para los espacios de tablas SMS.
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.
611
SYSCAT.FULLHIERARCHIES
Tabla 87. Vista de catlogo SYSCAT.FULLHIERARCHIES Posibilidad de nulos
Descripcin Tipo de relacin. v R = Entre tipos estructurados v U = Entre tablas con tipo v W = Entre vistas con tipo
VARCHAR (128) VARCHAR (128) VARCHAR (128) VARCHAR (128) VARCHAR (128) VARCHAR (128) Y Y
Nombre de esquema de subtipo, subtabla o subvista. Nombre no calificado de subtipo, subtabla o subvista. Nombre de esquema de supertipo, supertabla o supervista. Nombre no calificado de supertipo, supertabla o supervista. Nombre de esquema de la tabla, vista o tipo que est en la raz de la jerarqua. Nombre no calificado de la tabla, vista o tipo que est en la raz de la jerarqua.
SYSCAT.FUNCMAPOPTIONS
Cada fila representa un valor de opcin de correlacin de funciones.
Tabla 88. Vista de catlogo SYSCAT.FUNCMAPOPTIONS Posibilidad de nulos
Descripcin Nombre de la correlacin de funciones. Nombre de la opcin de correlacin de funciones. Valor de la opcin de correlacin de funciones.
SYSCAT.FUNCMAPPARMOPTIONS
Cada fila representa un valor de opcin de parmetro de correlacin de funciones.
Tabla 89. Vista de catlogo SYSCAT.FUNCMAPPARMOPTIONS Posibilidad de nulos
Descripcin Nombre de la correlacin de funciones. Posicin del parmetro Ubicacin del parmetro v L = Parmetro local v R = Parmetro remoto
612
SYSCAT.FUNCMAPPARMOPTIONS
Tabla 89. Vista de catlogo SYSCAT.FUNCMAPPARMOPTIONS (continuacin) Posibilidad de nulos
Descripcin Nombre de la opcin de parmetro de correlacin de funciones. Valor de la opcin de parmetro de correlacin de funciones.
SYSCAT.FUNCMAPPINGS
Cada fila representa una correlacin de funciones.
Tabla 90. Vista de catlogo SYSCAT.FUNCMAPPINGS Posibilidad de nulos
Nombre de esquema de la funcin. Si es nulo, se supone que la funcin es una funcin incorporada. Nombre no calificado de la funcin definida por el usuario o incorporada. Identificador de la funcin. Nombre de la instancia de la rutina (puede ser un nombre generado por el sistema). ID de autorizacin bajo el cual se ha creado la correlacin. SYSIBM indica que se trata de una funcin incorporada. v S = El sistema es el propietario v U = El propietario es un usuario individual
Y Y Y
OWNERTYPE
CHAR (1)
VARCHAR (128) VARCHAR (128) VARCHAR (30) VARCHAR (18) TIMESTAMP VARCHAR (128)
Y Y Y Y
Derivador al que se aplica esta correlacin. Nombre de la fuente de datos. Tipo de fuente de datos al que se aplica esta correlacin. Versin del tipo de servidor al que se aplica sta correlacin. Hora a la que se ha creado la correlacin. ID de autorizacin bajo el cual se ha creado la correlacin. SYSIBM indica que se trata de una funcin incorporada.
REMARKS Nota:
VARCHAR(254)
1. La columna DEFINER se incluye por razones de compatibilidad con versiones anteriores. Consulte OWNER.
613
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 91. Vista de catlogo SYSCAT.HIERARCHIES Posibilidad de nulos
Descripcin Tipo de relacin. v R = Entre tipos estructurados v U = Entre tablas con tipo v W = Entre vistas con tipo
VARCHAR (128) VARCHAR (128) VARCHAR (128) VARCHAR (128) VARCHAR (128) VARCHAR (128)
Nombre de esquema de subtipo, subtabla o subvista. Nombre no calificado de subtipo, subtabla o subvista. Nombre de esquema de supertipo, supertabla o supervista. Nombre no calificado de supertipo, supertabla o supervista. Nombre de esquema de la tabla, vista o tipo que est en la raz de la jerarqua. Nombre no calificado de la tabla, vista o tipo que est en la raz de la jerarqua.
SYSCAT.HISTOGRAMTEMPLATEBINS
Cada fila representa un binario de plantilla de histograma.
Tabla 92. Vista de catlogo SYSCAT.HISTOGRAMTEMPLATEBINS Posibilidad de nulos Y
Descripcin Nombre de la plantilla de histograma. Identificador de la plantilla de histograma. Identificador del binario de plantilla de histograma. El valor superior de un nico binario de la plantilla de histograma.
SYSCAT.HISTOGRAMTEMPLATES
Cada fila representa una plantilla de histograma.
614
SYSCAT.HISTOGRAMTEMPLATES
Tabla 93. Vista de catlogo SYSCAT.HISTOGRAMTEMPLATES Posibilidad de nulos
Descripcin Identificador de la plantilla de histograma. Nombre de la plantilla de histograma. Hora a la que se ha creado la plantilla de histograma. Hora a la que se modific por ltima vez la plantilla de histograma. Nmero de binarios de la plantilla de histograma, incluido el ltimo binario con valor superior no vinculado.
REMARKS
VARCHAR(254)
SYSCAT.HISTOGRAMTEMPLATEUSE
Cada fila representa una relacin entre un objeto de gestin de carga de trabajo que puede utilizar plantillas de histograma y una plantilla de histograma.
Tabla 94. Vista de catlogo SYSCAT.HISTOGRAMTEMPLATEUSE Posibilidad de nulos Y
Descripcin Nombre de la plantilla de histograma. Identificador de la plantilla de histograma. El tipo de informacin recopilada por histogramas basados en esta plantilla. v C = Histograma de coste estimado de la actividad v E = Histograma de tiempo de ejecucin de la actividad v I = Histograma de tiempo hasta la llegada de la actividad v L = Histograma de tiempo de vida de la actividad v Q = Histograma de tiempo de cola de la actividad v R = Histograma de tiempo de ejecucin de la actividad
OBJECTTYPE
CHAR (1)
Identificador del objeto WLM. Nombre de la clase de servicio. Nombre de la clase de servicio padre. Nombre de la accin de trabajo. Nombre del conjunto de acciones de trabajo.
Apndice D. Vistas de catlogo
615
SYSCAT.HISTOGRAMTEMPLATEUSE
SYSCAT.INDEXAUTH
Cada fila representa un usuario o grupo al que se ha otorgado el privilegio CONTROL sobre un ndice.
Tabla 95. Vista de catlogo SYSCAT.INDEXAUTH Posibilidad de nulos
Descripcin El que ha otorgado el privilegio. v S = El sistema es el otorgante v U = El otorgante es un usuario individual El que mantiene el privilegio. v G = Se otorga a un grupo v R = Se otorga a una funcin v U = Se otorga a un usuario individual
GRANTEE GRANTEETYPE
Nombre de esquema del ndice. Nombre no calificado del ndice. Privilegio CONTROL. v N = No se mantiene v Y = Se mantiene
SYSCAT.INDEXCOLUSE
Cada fila representa una columna que interviene en un ndice.
Tabla 96. Vista de catlogo SYSCAT.INDEXCOLUSE Posibilidad de nulos
Tipo de datos VARCHAR (128) VARCHAR (128) VARCHAR (128) SMALLINT CHAR (1)
Descripcin Nombre de esquema del ndice. Nombre no calificado del ndice. Nombre de la columna. Posicin numrica de la columna en el ndice (la posicin inicial es 1). Orden de los valores de esta columna del ndice. Los valores posibles son: v A = Ascendente v D = Descendente v I = Columna INCLUDE (se pasa por alto el orden)
COLLATIONSCHEMA
VARCHAR (128)
Para tipos de serie, el nombre de esquema de la clasificacin para la columna; un valor nulo en caso contrario.
616
SYSCAT.INDEXCOLUSE
Tabla 96. Vista de catlogo SYSCAT.INDEXCOLUSE (continuacin) Posibilidad de nulos Y
Descripcin Para tipos de serie, el nombre no calificado de la clasificacin para la columna; un valor nulo en caso contrario.
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 97. Vista de catlogo SYSCAT.INDEXDEP Posibilidad de nulos
Descripcin Nombre de esquema del ndice. Nombre no calificado del ndice. Tipo de objeto sobre el que hay una dependencia. Los valores posibles son: v A = Alias v B = Activador v F = Instancia de rutina v H = Tabla de jerarqua v K = Paquete v L = Tabla desenlazada v O = Dependencia de privilegios en todas las subtablas o subvistas de una jerarqua de tablas o de vistas v Q = Secuencia v R = Tipo estructurado v S = Tabla de consultas materializadas v T = Tabla (sin tipo) v U = Tabla con tipo v V = Vista (sin tipo) v W = Vista con tipo v X = Extensin de ndice v Z = Objeto XSR v v = Variable global
BSCHEMA BNAME
Nombre de esquema del objeto sobre el que hay una dependencia. Nombre no calificado del objeto sobre el que hay una dependencia. Para rutinas (BTYPE = F), es el nombre especfico. Y Si BTYPE = O, S, T, U, V, W o v, codifica los privilegios sobre la tabla o vista que necesita el ndice dependiente; valor nulo en caso contrario.
Apndice D. Vistas de catlogo
TABAUTH
SMALLINT
617
SYSCAT.INDEXDEP
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 98. Vista de catlogo SYSCAT.INDEXES Posibilidad de nulos
Tipo de datos VARCHAR (128) VARCHAR (128) VARCHAR (128) CHAR (1)
Descripcin Nombre de esquema del ndice. Nombre no calificado del ndice. ID de autorizacin bajo el cual se ha creado el ndice. v S = El sistema es el propietario v U = El propietario es un usuario individual
Nombre de esquema de la tabla o apodo en el que se define el ndice. Nombre no calificado de la tabla o apodo en el que se define el ndice. Esta columna ya no se utiliza y se eliminar en el prximo release. Utilice SYSCAT.INDEXCOLUSE para obtener esta informacin. Norma de unicidad. v D = Permite duplicados v U = Unicidad v P = Implanta clave primaria
UNIQUERULE
CHAR (1)
MADE_UNIQUE
CHAR (1)
v N = El ndice permanece tal como se ha creado v 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. 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 exclusiva (es decir, permite duplicados).
UNIQUE_COLCOUNT
SMALLINT
618
SYSCAT.INDEXES
Tabla 98. Vista de catlogo SYSCAT.INDEXES (continuacin) Posibilidad de nulos
Descripcin Tipo de ndice. v BLOK = ndice de bloques v CLUS = ndice de clster (controla la ubicacin fsica de las filas recin insertadas) v DIM = ndice de bloques de dimensin v REG = ndice regular v XPTH = ndice de vas de acceso XML v XRGN = ndice de regiones XML v XVIL = ndice sobre columna XML (lgico) v XVIP = ndice sobre columna XML (fsico)
ENTRYTYPE
CHAR (1)
v H = Esta fila representa un ndice en una tabla de jerarqua v L = Esta fila representa un ndice lgico en una tabla con tipo v 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. Identificador del ndice. Nmero de pginas de ndice; -1 si no se recopilan estadsticas. Nmero de niveles de ndice; -1 si no se recopilan estadsticas. Nmero de valores de primera clave diferenciada; -1 si no se recopilan estadsticas. Nmero de claves diferenciadas que utilizan las dos primeras columnas del ndice; -1 si no se recopilan estadsticas o si no se aplica. Nmero de claves diferenciadas que utilizan las tres primeras columnas del ndice; -1 si no se recopilan estadsticas o si no se aplica. Nmero de claves diferenciadas que utilizan las cuatro primeras columnas del ndice; -1 si no se recopilan estadsticas o si no se aplica. Nmero de valores de clave completa diferenciada; -1 si no se recopilan estadsticas. 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).
FIRST2KEYCARD
BIGINT
FIRST3KEYCARD
BIGINT
FIRST4KEYCARD
BIGINT
FULLKEYCARD
BIGINT
CLUSTERRATIO3
SMALLINT
619
SYSCAT.INDEXES
Tabla 98. Vista de catlogo SYSCAT.INDEXES (continuacin) Posibilidad de nulos
Descripcin Mejor medicin del grado de clster; -1 si no se recopilan estadsticas o si el ndice se define sobre un apodo. 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. 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. 1 si un usuario ha definido este ndice y no se ha eliminado; 0 en caso contrario. v 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. v 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 del ndice en la columna OID de una tabla con tipo. v De lo contrario, 0.
SEQUENTIAL_PAGES
BIGINT
DENSITY
INTEGER
USER_DEFINED SYSTEM_REQUIRED
SMALLINT SMALLINT
CREATE_TIME STATS_TIME
TIMESTAMP TIMESTAMP Y
Hora en que se ha creado el ndice. ltima vez que se ha realizado un cambio en las estadsticas registradas para este ndice. Nulo si no hay estadsticas disponibles. 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.
PAGE_FETCH_PAIRS3
VARCHAR(520)
620
SYSCAT.INDEXES
Tabla 98. Vista de catlogo SYSCAT.INDEXES (continuacin) Posibilidad de nulos
Descripcin Un valor entero distinto de cero indica que el ndice est habilitado para la desfragmentacin 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. v N = El ndice no da soporte a las exploraciones invertidas v Y = El ndice da soporte a las exploraciones invertidas
REVERSE_SCANS
CHAR (1)
INTERNAL_FORMAT
SMALLINT
Los valores posibles son: v 1 = El ndice no tiene punteros que apunten hacia atrs v 2 o mayor = El ndice tiene punteros que apuntan hacia atrs v 6 = El ndice es un ndice de bloques compuestos
Y Y Y
Nombre de esquema de la extensin del ndice. Nulo para ndices ordinarios. Nombre no calificado de la extensin del ndice. Nulo para ndices ordinarios. Informacin externa del parmetro especificado cuando se crea el ndice. Nulo para ndices ordinarios. Identificador del objeto de ndice. Nmero total de identificadores de fila (RID) o identificadores de bloque (BID) del ndice; -1 si no se conoce. 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. Nmero total de pginas de hoja del ndice que tienen todos los identificadores de filas (o identificadores de bloqueo) marcados como suprimidos. Promedio de pginas de la tabla aleatorias entre los accesos a pginas secuenciales al captar utilizando el ndice; -1 si no se conoce. Promedio de pginas de la tabla aleatorias entre los accesos a pginas secuenciales; -1 si no se conoce.
INDEX_OBJECTID NUMRIDS
INTEGER BIGINT
NUMRIDS_DELETED
BIGINT
NUM_EMPTY_LEAFS
BIGINT
AVERAGE_RANDOM_FETCH_ PAGES1,2
DOUBLE
AVERAGE_RANDOM_PAGES2
DOUBLE
621
SYSCAT.INDEXES
Tabla 98. Vista de catlogo SYSCAT.INDEXES (continuacin) Posibilidad de nulos
Descripcin 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. Espacio entre las secuencias de pginas 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. 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. Promedio de pginas de la tabla 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. Identificador del espacio de tablas del ndice. 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. Comportamiento de divisin de pginas del ndice. v H = Alto v L = Bajo v S = Simtrico
AVERAGE_SEQUENCE_PAGES2
DOUBLE
TBSPACEID LEVEL2PCTFREE
INTEGER SMALLINT
PAGESPLIT
CHAR (1)
AVGPARTITION_ CLUSTERRATIO3
SMALLINT
Nivel de clster de los datos dentro de 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). Mejor medicin del nivel de clster 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_ CLUSTERFACTOR3
DOUBLE
622
SYSCAT.INDEXES
Tabla 98. Vista de catlogo SYSCAT.INDEXES (continuacin) Posibilidad de nulos
Nombre de columna
Tipo de datos
Descripcin Una lista de pares de enteros en formato 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. Una medicin estadstica del clster 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. 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. Tamao de palabra de autorizacin bajo el cual se ha creado el ndice. v 32 = 32 bits v 64 = 64 bits
DATAPARTITION_ CLUSTERFACTOR
DOUBLE
INDCARD
BIGINT
OS_PTR_SIZE
INTEGER
COLLECTSTATISTICS
CHAR (1)
Especifica el modo en que se renen las estadsticas al crear ndices. v D = Reunir estadsticas de ndice detalladas v S = Reunir estadsticas de ndice detalladas muestreadas v Y = Reunir estadsticas de ndice bsicas v Blanco = No reunir estadsticas de ndice
DEFINER
ID de autorizacin bajo el cual se ha creado el ndice. Comentarios proporcionados por el usuario o nulo.
REMARKS Nota:
1. Cuando se utilizan espacios de tablas 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.
623
SYSCAT.INDEXEXPLOITRULES
SYSCAT.INDEXEXPLOITRULES
Cada fila representa una norma de explotacin de ndice.
Tabla 99. Vista de catlogo SYSCAT.INDEXEXPLOITRULES Posibilidad de nulos
Nombre de columna FUNCID SPECID IESCHEMA IENAME RULEID SEARCHMETHODID SEARCHKEY SEARCHARGUMENT EXACT
Tipo de datos INTEGER SMALLINT VARCHAR (128) VARCHAR (128) SMALLINT SMALLINT VARCHAR(640) VARCHAR (2700) CHAR (1)
Descripcin Identificador de la funcin. Nmero de la especificacin de predicado. Nombre de esquema de la extensin del ndice. Nombre no calificado de la extensin del ndice. Identificador de la norma de explotacin. Identificador del mtodo de bsqueda en la extensin de ndice especfica. Clave utilizada para explotar el ndice. Argumentos de bsqueda utilizados para explotar el ndice. v N = La bsqueda en el ndice no es exacta en trminos de evaluacin del predicado v Y = La bsqueda en el ndice es exacta en trminos de evaluacin del predicado
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 100. Vista de catlogo SYSCAT.INDEXEXTENSIONDEP Posibilidad de nulos
Descripcin Nombre de esquema de la extensin del ndice. Nombre no calificado de la extensin del ndice.
624
SYSCAT.INDEXEXTENSIONDEP
Tabla 100. Vista de catlogo SYSCAT.INDEXEXTENSIONDEP (continuacin) Posibilidad de nulos
Descripcin Tipo de objeto sobre el que hay una dependencia. Los valores posibles son: v A = Alias v B = Activador v F = Instancia de rutina v H = Tabla de jerarqua v K = Paquete v L = Tabla desenlazada v O = Dependencia de privilegios en todas las subtablas o subvistas de una jerarqua de tablas o de vistas v Q = Secuencia v R = Tipo estructurado v S = Tabla de consultas materializadas v T = Tabla (sin tipo) v U = Tabla con tipo v V = Vista (sin tipo) v W = Vista con tipo v X = Extensin de ndice v Z = Objeto XSR v v = Variable global
BSCHEMA BNAME
Nombre de esquema del objeto sobre el que hay una dependencia. Nombre no calificado del objeto sobre el que hay una dependencia. Para rutinas (BTYPE = F), es el nombre especfico. Y Si BTYPE = O, S, T, U, V, W o v, codifica los privilegios sobre la tabla o vista que necesita la extensin de ndice dependiente; valor nulo en caso contrario.
TABAUTH
SMALLINT
SYSCAT.INDEXEXTENSIONMETHODS
Cada fila representa un mtodo de bsqueda. Una extensin de ndice puede contener ms de un mtodo de bsqueda.
Tabla 101. Vista de catlogo SYSCAT.INDEXEXTENSIONMETHODS Posibilidad de nulos
Descripcin Nombre del mtodo de bsqueda. El nmero del mtodo en la extensin de ndice. Nombre de esquema de la extensin de ndice en la que est definido este mtodo.
625
SYSCAT.INDEXEXTENSIONMETHODS
Tabla 101. Vista de catlogo SYSCAT.INDEXEXTENSIONMETHODS (continuacin) Posibilidad de nulos
Nombre de columna IENAME RANGEFUNCSCHEMA RANGEFUNCNAME RANGESPECIFICNAME FILTERFUNCSCHEMA FILTERFUNCNAME FILTERSPECIFICNAME REMARKS
Tipo de datos VARCHAR (128) VARCHAR (128) VARCHAR (128) VARCHAR (128) VARCHAR (128) VARCHAR (128) VARCHAR (128) VARCHAR(254)
Descripcin Nombre no calificado de la extensin de ndice en la que est definido este mtodo. Nombre de esquema de la funcin del rango. Nombre no calificado de la funcin del rango. Nombre especfico de la funcin de la funcin del rango.
Y Y Y Y
Nombre de esquema de la funcin de filtro. Nombre no calificado de la funcin de filtro. Nombre especfico de la funcin de la funcin de filtro. Comentarios proporcionados por el usuario o nulo.
SYSCAT.INDEXEXTENSIONPARMS
Cada fila representa un parmetro de instancia de la extensin de ndice o una columna de la clave fuente.
Tabla 102. Vista de catlogo SYSCAT.INDEXEXTENSIONPARMS Posibilidad de nulos
Nombre de columna IESCHEMA IENAME ORDINAL PARMNAME TYPESCHEMA TYPENAME LENGTH SCALE PARMTYPE
Tipo de datos VARCHAR (128) VARCHAR (128) SMALLINT VARCHAR (128) VARCHAR (128) VARCHAR (128) INTEGER SMALLINT CHAR (1)
Descripcin Nombre de esquema de la extensin del ndice. Nombre no calificado de la extensin del ndice. Nmero de secuencia del parmetro o de la columna clave. Nombre del parmetro o de la columna clave. Nombre de esquema del tipo de datos del parmetro o de la columna clave. Nombre no calificado del tipo de datos del parmetro o de la columna clave. Longitud del tipo de datos del parmetro o de la columna clave. Escala del tipo de datos del parmetro o de la columna clave; 0 si no se aplica. v K = Columna de clave fuente v 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.
626
SYSCAT.INDEXEXTENSIONPARMS
Tabla 102. Vista de catlogo SYSCAT.INDEXEXTENSIONPARMS (continuacin) Posibilidad de nulos Y
Descripcin Para tipos de serie, el nombre de esquema de la clasificacin para el parmetro; un valor nulo en caso contrario. Para tipos de serie, el nombre no calificado de la clasificacin para el parmetro; un valor nulo en caso contrario.
COLLATIONNAME
VARCHAR (128)
SYSCAT.INDEXEXTENSIONS
Cada fila representa una extensin de ndice.
Tabla 103. Vista de catlogo SYSCAT.INDEXEXTENSIONS Posibilidad de nulos
Tipo de datos VARCHAR (128) VARCHAR (128) VARCHAR (128) CHAR (1)
Descripcin Nombre de esquema de la extensin del ndice. Nombre no calificado de la extensin del ndice. ID de autorizacin con el cual se ha creado la extensin de ndice. v S = El sistema es el propietario v U = El propietario es un usuario individual
Hora en la que se defini la extensin de ndice. Nombre de esquema de la funcin de generacin de claves. Nombre calificado de la funcin de generacin de claves. Nombre de la instancia de generacin de claves (puede ser un nombre generado por el sistema). Texto completo de la sentencia CREATE INDEX EXTENSION. ID de autorizacin con el cual se ha creado la extensin de ndice. Y Comentarios proporcionados por el usuario o nulo.
1. La columna DEFINER se incluye por razones de compatibilidad con versiones anteriores. Consulte OWNER.
SYSCAT.INDEXOPTIONS
Cada fila representa un valor de opcin especfico del ndice.
Apndice D. Vistas de catlogo
627
SYSCAT.INDEXOPTIONS
Tabla 104. Vista de catlogo SYSCAT.INDEXOPTIONS Posibilidad de nulos
Descripcin Nombre de esquema del ndice. Nombre no calificado del ndice. Nombre de la opcin de ndice. Valor de la opcin de ndice.
SYSCAT.INDEXXMLPATTERNS
Cada fila representa una clusula de patrn en un ndice sobre una columna XML.
Tabla 105. Vista de catlogo SYSCAT.INDEXXMLPATTERNS Posibilidad de nulos
Tipo de datos VARCHAR (128) VARCHAR (128) VARCHAR (128) SMALLINT CHAR (1)
Descripcin Nombre de esquema del ndice lgico. Nombre no calificado del ndice lgico. Nombre no calificado del ndice fsico. Identificador del ndice fsico. v Q = SQL DATA TYPE (Ignorar valores no vlidos) v R = SQL DATA TYPE (Rechazar valores no vlidos)
DATATYPE HASHED
Nombre del tipo de datos. Indica si el valor se ha generado o no de forma aleatoria. v N = No generado de forma aleatoria v Y = Generado de forma aleatoria
Longitud VARCHAR(n); 0 en caso contrario. Identificador del patrn. Definicin del patrn.
1. Cuando se crean 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.
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.
628
SYSCAT.KEYCOLUSE
Tabla 106. Vista de catlogo SYSCAT.KEYCOLUSE Posibilidad de nulos
Tipo de datos VARCHAR (128) VARCHAR (128) VARCHAR (128) VARCHAR (128) SMALLINT
Descripcin Nombre de la restriccin. Nombre de esquema de la tabla que contiene la columna. Nombre no calificado de la tabla que contiene la columna. Nombre de la columna. Posicin numrica de la columna en la clave (la posicin inicial es 1).
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 107. Vista de catlogo SYSCAT.NAMEMAPPINGS Posibilidad de nulos
VARCHAR (128) VARCHAR (128) VARCHAR (128) VARCHAR (128) VARCHAR (128) VARCHAR (128) Y Y
Nombre de esquema del objeto lgico. Nombre no calificado del objeto lgico. Nombre de la columna lgica si TYPE = C; valor nulo en caso contrario. Nombre de esquema del objeto de implantacin que implanta el objeto lgico. Nombre no calificado del objeto de implantacin que implanta el objeto lgico. Nombre de la columna de implantacin si TYPE = C; valor nulo en caso contrario.
SYSCAT.NICKNAMES
Cada fila representa un apodo.
Tabla 108. Vista de catlogo SYSCAT.NICKNAMES Posibilidad de nulos
629
SYSCAT.NICKNAMES
Tabla 108. Vista de catlogo SYSCAT.NICKNAMES (continuacin) Posibilidad de nulos
Descripcin Usuario que ha creado el apodo. v S = El sistema es el propietario v U = El propietario es un usuario individual
STATUS
CHAR (1)
CREATE_TIME STATS_TIME
TIMESTAMP TIMESTAMP Y
Hora a la que se ha creado el objeto. 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. Nmero de columnas, incluidas las columnas heredadas (si las hay). Identificador interno del objeto lgico. Identificador lgico interno del espacio de tablas primario correspondiente a este objeto. Nmero total de filas; -1 si no se recopilan estadsticas. Nmero total de pginas en las que hay filas del apodo; -1 si no se recopilan estadsticas. Nmero total de pginas; -1 si no se recopilan estadsticas. Nmero total de registros de desbordamiento; -1 si no se recopilan estadsticas. Y Nmero de tablas padre de este objeto; es decir, el nmero de restricciones de referencia de las que depende este objeto. Nmero de tablas dependientes de este objeto; es decir, el nmero de restricciones de referencia de las que depende este objeto. 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. Nmero de columnas de la clave primaria. Identificador de ndice correspondiente al ndice de clave primaria; 0 o el valor nulo si no hay clave primaria. Nmero de restricciones de clave exclusiva (que no sean la restriccin de clave primara) definidas en este objeto. Nmero de restricciones de comprobacin definidas en este objeto.
PARENTS
SMALLINT
CHILDREN
SMALLINT
SELFREFS
SMALLINT
KEYCOLUMNS KEYINDEXID
SMALLINT SMALLINT
Y Y
KEYUNIQUE
SMALLINT
CHECKCOUNT
SMALLINT
630
SYSCAT.NICKNAMES
Tabla 108. Vista de catlogo SYSCAT.NICKNAMES (continuacin) Posibilidad de nulos
Descripcin v L = El apodo interviene en la replicacin de datos, incluida la replicacin de las columnas LONG VARCHAR y LONG VARGRAPHIC v N = El apodo no interviene en la replicacin de datos v Y = El apodo participa en la replicacin de datos
CONST_CHECKED
CHAR(32)
v El byte 1 representa restriccin de clave fornea. v El byte 2 representa restriccin de comprobacin. v El byte 5 representa la tabla de consultas materializadas. v El byte 6 representa columna generada. v El byte 7 representa la tabla dispuesta con antelacin. v El byte 8 representa restriccin de particionamiento de datos. v Otros bytes estn reservados para su utilizacin en el futuro. Los valores posibles son: v 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. v N = No comprobado v U = Comprobado por el usuario v W = Estaba en el estado U cuando la tabla se coloc en el estado de pendiente de establecer integridad v Y = Comprobado por el sistema
PARTITION_MODE STATISTICS_PROFILE
Reservado para su utilizacin en el futuro. Mandato RUNSTATS utilizado para registrar un perfil estadstico para el objeto.
631
SYSCAT.NICKNAMES
Tabla 108. Vista de catlogo SYSCAT.NICKNAMES (continuacin) Posibilidad de nulos
Descripcin 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: v D = No hay movimiento de datos v F = Acceso completo v N = No hay acceso v 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. Y 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. 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. Nombre de la fuente de datos que contiene la tabla o la vista para la cual se ha creado el apodo. Tipo de objeto en la fuente de datos. v A = Alias v N = Apodo v S = Tabla de consultas materializadas v T = Tabla (sin tipo) v V = Vista (sin tipo)
REMOTE_TABLE
VARCHAR (128)
REMOTE_SCHEMA
VARCHAR (128)
SERVERNAME
VARCHAR (128)
REMOTE_TYPE
CHAR (1)
CACHINGALLOWED
VARCHAR(1)
ID de autorizacin bajo el que se ha creado la tabla, vista, alias o apodo. Comentarios proporcionados por el usuario o nulo.
1. La columna DEFINER se incluye por razones de compatibilidad con versiones anteriores. Consulte OWNER.
SYSCAT.PACKAGEAUTH
Cada fila representa un usuario o un grupo al que se ha otorgado uno o ms privilegios sobre un paquete.
632
SYSCAT.PACKAGEAUTH
Tabla 109. Vista de catlogo SYSCAT.PACKAGEAUTH Posibilidad de nulos
Descripcin El que ha otorgado el privilegio. v S = El sistema es el otorgante v U = El otorgante es un usuario individual El que mantiene el privilegio. v G = Se otorga a un grupo v R = Se otorga a una funcin v U = Se otorga a un usuario individual
GRANTEE GRANTEETYPE
Nombre de esquema del paquete. Nombre no calificado del paquete. Privilegio CONTROL. v N = No se mantiene v Y = Se mantiene
BINDAUTH
CHAR (1)
EXECUTEAUTH
CHAR (1)
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 110. Vista de catlogo SYSCAT.PACKAGEDEP Posibilidad de nulos
Tipo de datos VARCHAR (128) VARCHAR (128) VARCHAR (128) CHAR (1)
Descripcin Nombre de esquema del paquete. Nombre no calificado del paquete. Vinculador del paquete. v U = El vinculador es un usuario individual
633
SYSCAT.PACKAGEDEP
Tabla 110. Vista de catlogo SYSCAT.PACKAGEDEP (continuacin) Posibilidad de nulos
Descripcin Tipo de objeto sobre el que hay una dependencia. Los valores posibles son: v A = Alias v B = Activador v D = Definicin de servidor v F = Instancia de rutina v I = ndice v M = Correlacin de funciones v N = Apodo v O = Dependencia de privilegios en todas las subtablas o subvistas de una jerarqua de tablas o de vistas v P = Tamao de pgina v Q = Objeto de secuencia v R = Tipo de datos definido por el usuario v S = Tabla de consultas materializadas v T = Tabla (sin tipo) v U = Tabla con tipo v V = Vista (sin tipo) v W = Vista con tipo v Z = Objeto XSR v v = Variable global
Nombre de esquema de un objeto del que depende el paquete. Nombre no calificado de un objeto del que depende el paquete. Si BTYPE es O, S, T, U, V, W o v, codifica los privilegios que necesita este paquete (SELECT, INSERT, UPDATE o DELETE). Identificador de un paquete especfico cuando existen varios paquetes con el mismo nombre. Y Identificador de versin del paquete.
UNIQUE_ID
PKGVERSION Nota:
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.
SYSCAT.PACKAGES
Cada fila representa un paquete que se ha creado mediante la vinculacin de un programa de aplicacin.
634
SYSCAT.PACKAGES
Tabla 111. Vista de catlogo SYSCAT.PACKAGES Posibilidad de nulos
Tipo de datos VARCHAR (128) VARCHAR (128) VARCHAR (128) CHAR (1) VARCHAR (128) CHAR (1)
Descripcin Nombre de esquema del paquete. Nombre no calificado del paquete. ID de autorizacin del vinculador del paquete. v U = El vinculador es un usuario individual ID de autorizacin bajo el cual se ha vinculado el paquete. v S = El sistema es el propietario v U = El propietario es un usuario individual
DEFAULT_SCHEMA
VARCHAR (128)
Nombre de esquema por omisin para nombres no calificados en sentencias de SQL esttico. v N = Necesita revinculacin v V = Validar en el momento de la ejecucin v 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 v Y = Vlido
VALID1
CHAR (1)
UNIQUE_ID
Identificador de un paquete especfico cuando existen varios paquetes con el mismo nombre. Nmero de secciones del paquete. Formato de fecha y hora asociado al paquete. v 0 = Formato asociado con el cdigo territorial del cliente v 1 = USA v 2 = EUR v 3 = ISO v 4 = JIS v 5 = LOCAL
TOTAL_SECT FORMAT
ISOLATION
CHAR (2)
Nivel de aislamiento. v CS = Estabilidad del cursor v RR = Lectura repetible v RS = Estabilidad de lectura v UR = Lectura no confirmada
BLOCKING
CHAR (1)
Opcin de bloqueo del cursor. v B = Bloqueo de todos los cursores v N = Sin bloqueo v U = Bloqueo de cursores no ambiguos
635
SYSCAT.PACKAGES
Tabla 111. Vista de catlogo SYSCAT.PACKAGES (continuacin) Posibilidad de nulos
Descripcin Establecimiento de la opcin de vinculacin INSERT (se aplica a sistemas de bases de datos particionadas). v N = Las inserciones no se colocan en almacenamiento intermedio v 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)
FUNC_PATH
CLOB (2K)
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. La clase de optimizacin bajo la que se ha vinculado este paquete. Utilizado para operaciones de revinculacin. Indica si se ha invocado Explain utilizando la opcin de vinculacin EXPLAIN o EXPLSNAP. v P = Nivel de seleccin del paquete v Blanco = No se invoca Explain
QUERYOPT
INTEGER
EXPLAIN_LEVEL
CHAR (1)
EXPLAIN_MODE
CHAR (1)
EXPLAIN_SNAPSHOT
CHAR (1)
SQLWARN
CHAR (1)
Indica si se devuelven o no a la aplicacin los SQLCODE positivos resultantes de las sentencias de SQL dinmico. v N = No, se suprimen v Y = S
636
SYSCAT.PACKAGES
Tabla 111. Vista de catlogo SYSCAT.PACKAGES (continuacin) Posibilidad de nulos
Descripcin 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. v N = No, se devuelven errores v 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. 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. Pgina de cdigos de la aplicacin en el momento de la vinculacin; -1 si no se conoce. Nombre de esquema de la clasificacin para el paquete. Nombre no calificado de la clasificacin para el paquete. Nombre de esquema de la clasificacin para clusulas ORDER BY en el paquete. Nombre no calificado de la clasificacin para clusulas ORDER BY en el paquete. Grado de paralelismo intraparticin que se especific cuando se vincul el paquete. v 1 = Sin paralelismo v 2-32767 = Lmite especificado por el usuario v ANY = Grado determinado por el sistema (no se especifica lmite)
LAST_BIND_TIME
TIMESTAMP
CODEPAGE
SMALLINT
MULTINODE_PLANS
CHAR (1)
v N = El paquete no se ha vinculado en un entorno de bases de datos particionadas v Y = El paquete se ha vinculado en un entorno de bases de datos particionadas
637
SYSCAT.PACKAGES
Tabla 111. Vista de catlogo SYSCAT.PACKAGES (continuacin) Posibilidad de nulos
Descripcin Utilizacin del paralelismo intraparticin por las sentencias de SQL esttico dentro del paquete. v 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. v N = Ninguna sentencia de SQL esttico utiliza paralelismo intraparticin v Y = Una o ms sentencias de SQL esttico del paquete utilizan paralelismo intraparticin
VALIDATE
CHAR (1)
Indica que la comprobacin de validez se puede diferir hasta el momento de la ejecucin. v B = Toda comprobacin debe realizarse en el momento de la vinculacin v 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
638
SYSCAT.PACKAGES
Tabla 111. Vista de catlogo SYSCAT.PACKAGES (continuacin) Posibilidad de nulos
Descripcin v B = BIND; las sentencias de SQL dinmico se ejecutan con comportamiento DYNAMICRULES BIND v 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 v 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 v 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 v 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 v R = RUN; las sentencias de SQL dinmico se ejecutan con comportamiento RUN; es el valor por omisin
SQLERROR
CHAR (1)
Opcin SQLERROR en el submandato ms reciente que ha vinculado o revinculado el paquete. v C = CONTINUE; crea un paquete, aunque se produzcan errores al vincular sentencias de SQL v 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.
Apndice D. Vistas de catlogo
639
SYSCAT.PACKAGES
Tabla 111. Vista de catlogo SYSCAT.PACKAGES (continuacin) Posibilidad de nulos
Descripcin v N = La opcin de vinculacin o de preparacin FEDERATED est desactivada v U = La opcin de vinculacin o de preparacin FEDERATED no se ha especificado v Y = La opcin de vinculacin o de preparacin FEDERATED est activada
TRANSFORMGROUP
VARCHAR(1024)
Valor de la opcin de vinculacin TRANSFORM GROUP; nulo si no se especifica ningn grupo de transformacin. Indica si la va de acceso se vuelve a determinar en el momento de la ejecucin utilizando valores de variables de entrada. v A = La va de acceso se vuelve a optimizar para cada peticin OPEN o EXECUTE v N = La va de acceso se determina en el momento de la vinculacin v O = La va de acceso slo se vuelve a optimizar en la primera peticin OPEN o EXECUTE; luego se coloca en antememoria
REOPTVAR
CHAR (1)
OS_PTR_SIZE
INTEGER
Tamao de las palabras para la plataforma en la que se ha creado el paquete: v 32 = El paquete es un paquete de 32 bits v 64 = El paquete es un paquete de 64 bits
Identificador de versin del paquete. Hora a la que se ha vinculado el paquete por primera vez. Indica si los cursores estticos se van a tratar o no como READ ONLY. Los valores posibles son: v 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 v Y = Cualquier cursor esttico que no contenga la clusula FOR UPDATE o FOR READ ONLY se considera READ ONLY
640
SYSCAT.PACKAGES
Tabla 111. Vista de catlogo SYSCAT.PACKAGES (continuacin) Posibilidad de nulos
Descripcin Indica el lmite de asincrona (el nmero de ATQ del plan) como una opcin de vinculacin cuando se vincul el paquete. v 0 = Sin asincrona v n = Lmite especificado por el usuario (32 767 mximo) v -1 = Grado de asincrona determinado por el sistema v -2 = Grado de asincrona no especificado Para un sistema no federado, el valor es 0.
OPTPROFILESCHEMA
VARCHAR (128)
Valor del esquema de perfil de optimizacin como parte de la opcin de vinculacin OPTPROFILE. Valor del nombre de perfil de optimizacin como parte de la opcin de vinculacin OPTPROFILE. ID de autorizacin bajo el cual se ha vinculado el paquete.
OPTPROFILENAME
VARCHAR (128)
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.
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 112. Vista de catlogo SYSCAT.PARTITIONMAPS Posibilidad de nulos
Descripcin Identificador del mapa de distribucin. Mapa de distribucin, un vector de 4096 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.
641
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 113. Vista de catlogo SYSCAT.PASSTHRUAUTH Posibilidad de nulos
Descripcin El que ha otorgado el privilegio. v S = El sistema es el otorgante v U = El otorgante es un usuario individual El que mantiene el privilegio. v G = Se otorga a un grupo v R = Se otorga a una funcin v U = Se otorga a un usuario individual
GRANTEE GRANTEETYPE
SERVERNAME
VARCHAR (128)
SYSCAT.PREDICATESPECS
Cada fila representa una especificacin del predicado.
Tabla 114. Vista de catlogo SYSCAT.PREDICATESPECS Posibilidad de nulos
Tipo de datos VARCHAR (128) VARCHAR (128) VARCHAR (128) INTEGER SMALLINT CHAR(8)
Descripcin Nombre de esquema de la funcin. Nombre no calificado de la funcin. Nombre de la instancia de la funcin. Identificador de la funcin. Nmero de esta especificacin de predicado. Operador de comparacin, uno de los operadores relacionales incorporados (=, <, >, >=, etc.) Constante o una expresin SQL.
CONTEXTEXP FILTERTEXT
CLOB(2M) CLOB(32K) Y
SYSCAT.REFERENCES
Cada fila representa una restriccin de integridad referencial (clave fornea).
Tabla 115. Vista de catlogo SYSCAT.REFERENCES Posibilidad de nulos
642
SYSCAT.REFERENCES
Tabla 115. Vista de catlogo SYSCAT.REFERENCES (continuacin) Posibilidad de nulos
Tipo de datos VARCHAR (128) VARCHAR (128) VARCHAR (128) CHAR (1)
Descripcin Nombre de esquema de la tabla dependiente. Nombre no calificado de la tabla dependiente. ID de autorizacin bajo el que se ha creado la restriccin. v S = El sistema es el propietario v U = El propietario es un usuario individual
Nombre de la clave padre. Nombre de esquema de la tabla padre. Nombre no calificado de la tabla padre. El nmero de columnas de la clave fornea. Norma de supresin. v A = NO ACTION v C = CASCADE v N = SET NULL v R = RESTRICT
UPDATERULE
CHAR (1)
CREATE_TIME FK_COLNAMES
TIMESTAMP VARCHAR(640)
Hora a la que se ha definido la restriccin. Esta columna ya no se utiliza y se eliminar en un prximo release. Utilice SYSCAT.KEYCOLUSE para obtener esta informacin. Esta columna ya no se utiliza y se eliminar en un prximo release. Utilice SYSCAT.KEYCOLUSE para obtener esta informacin. ID de autorizacin bajo el que se ha creado la restriccin.
PK_COLNAMES
VARCHAR(640)
DEFINER1 Nota:
VARCHAR (128)
1. La columna DEFINER se incluye por razones de compatibilidad con versiones anteriores. Consulte OWNER.
SYSCAT.ROLEAUTH
Cada fila representa una funcin otorgada a un usuario, grupo, funcin o PUBLIC.
Tabla 116. Vista de catlogo SYSCAT.ROLEAUTH Posibilidad de nulos
643
SYSCAT.ROLEAUTH
Tabla 116. Vista de catlogo SYSCAT.ROLEAUTH (continuacin) Posibilidad de nulos
Descripcin v U = El otorgante es un usuario individual ID de autorizacin al que se le ha otorgado la funcin. v G = Se otorga a un grupo v R = Se otorga a una funcin v U = Se otorga a un usuario individual
Nombre de la funcin. Identificador de la funcin. Privilegio para otorgar o revocar la funcin a otros o para comentar la funcin. v N = No se mantiene v Y = Se mantiene
SYSCAT.ROLES
Cada fila representa una funcin.
Tabla 117. Vista de catlogo SYSCAT.ROLES Posibilidad de nulos
Tipo de datos VARCHAR (128) INTEGER TIMESTAMP INTEGER VARCHAR (128) VARCHAR(254)
Y Y Y
Identificador de la poltica de comprobacin. Nombre de la poltica de comprobacin. Comentarios proporcionados por el usuario o nulo.
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 118. Vista de catlogo SYSCAT.ROUTINEAUTH Posibilidad de nulos
Descripcin El que otorga el privilegio. SYSIBM si el privilegio lo ha otorgado el sistema. v S = El sistema es el otorgante v U = El otorgante es un usuario individual
644
SYSCAT.ROUTINEAUTH
Tabla 118. Vista de catlogo SYSCAT.ROUTINEAUTH (continuacin) Posibilidad de nulos
Descripcin El que mantiene el privilegio. v G = Se otorga a un grupo v R = Se otorga a una funcin v U = Se otorga a un usuario individual
SCHEMA SPECIFICNAME
Nombre de esquema de la rutina. 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. Nombre de esquema del tipo correspondiente al mtodo. Nulo si ROUTINETYPE no es M. 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. Tipo de la rutina. v F = Funcin v M = Mtodo v P = Procedimiento
TYPESCHEMA
VARCHAR (128)
TYPENAME
VARCHAR (128)
ROUTINETYPE
CHAR (1)
EXECUTEAUTH
CHAR (1)
GRANT_TIME
TIMESTAMP
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.
645
SYSCAT.ROUTINEDEP
Tabla 119. Vista de catlogo SYSCAT.ROUTINEDEP Posibilidad de nulos
Descripcin Nombre de esquema de la rutina que tiene dependencias sobre otro objeto. Nombre especfico de la rutina que tiene dependencias sobre otro objeto. Tipo de objeto sobre el que hay una dependencia. Los valores posibles son: v A = Alias v B = Activador v F = Instancia de rutina v H = Tabla de jerarqua v K = Paquete v L = Tabla desenlazada v O = Dependencia de privilegios en todas las subtablas o subvistas de una jerarqua de tablas o de vistas v Q = Secuencia v R = Tipo estructurado v S = Tabla de consultas materializadas v T = Tabla (sin tipo) v U = Tabla con tipo v V = Vista (sin tipo) v W = Vista con tipo v X = Extensin de ndice v Z = Objeto XSR v v = Variable global
BSCHEMA BNAME
Nombre de esquema del objeto sobre el que hay una dependencia. Nombre no calificado del objeto sobre el que hay una dependencia. Para rutinas (BTYPE = F), es el nombre especfico. Y Si BTYPE = O, S, T, U, V, W o v, codifica los privilegios sobre la tabla o vista que necesita la rutina dependiente; valor nulo en caso contrario. Esta columna ya no se utiliza y se eliminar en un prximo release. Consulte SPECIFICNAME.
TABAUTH
SMALLINT
ROUTINENAME
VARCHAR (128)
SYSCAT.ROUTINEOPTIONS
Cada fila representa un valor de opcin especfico de la rutina.
646
SYSCAT.ROUTINEOPTIONS
Tabla 120. Vista de catlogo SYSCAT.ROUTINEOPTIONS Posibilidad de nulos
Tipo de datos VARCHAR (128) VARCHAR (128) VARCHAR (128) VARCHAR (128) VARCHAR(2048)
Descripcin Nombre de esquema de la rutina. Nombre no calificado de la rutina. Nombre de la instancia de la rutina (puede ser un nombre generado por el sistema). Nombre de la opcin de rutina federada. Valor de la opcin de rutina federada.
SYSCAT.ROUTINEPARMOPTIONS
Cada fila representa un valor de opcin especfico del parmetro de rutina.
Tabla 121. Vista de catlogo SYSCAT.ROUTINEPARMOPTIONS Posibilidad de nulos
Tipo de datos VARCHAR (128) VARCHAR (128) VARCHAR (128) SMALLINT VARCHAR (128) VARCHAR(2048)
Descripcin Nombre de esquema de la rutina. Nombre no calificado de la rutina. Nombre de la instancia de la rutina (puede ser un nombre generado por el sistema). Posicin del parmetro dentro de la signatura de la rutina. Nombre de la opcin de rutina federada. Valor de la opcin de rutina federada.
SYSCAT.ROUTINEPARMS
Cada fila representa un parmetro o el resultado de una rutina definida en SYSCAT.ROUTINES.
Tabla 122. Vista de catlogo SYSCAT.ROUTINEPARMS Posibilidad de nulos Y Y Y Y
Tipo de datos VARCHAR (128) VARCHAR (128) VARCHAR (128) VARCHAR (128)
Descripcin Nombre de esquema de la rutina. Nombre no calificado de la rutina. Nombre de la instancia de la rutina (puede ser un nombre generado por el sistema). Nombre del parmetro o columna de resultado, o nulo si no existe ningn nombre.
647
SYSCAT.ROUTINEPARMS
Tabla 122. Vista de catlogo SYSCAT.ROUTINEPARMS (continuacin) Posibilidad de nulos
Descripcin v B = Tanto parmetro de entrada como de salida v C = Resultado despus de conversin v O = Parmetro de salida v P = Parmetro de entrada v 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. Y Nombre de esquema del tipo de datos. El nombre de esquema para tipos incorporados es SYSIBM. Nombre no calificado del tipo de datos. v N = El parmetro o resultado no se pasa en forma de localizador v Y = El parmetro o resultado se pasa en forma de localizador
TYPESCHEMA
VARCHAR (128)
TYPENAME LOCATOR
LENGTH1
INTEGER
Longitud del parmetro o resultado; 0 si el parmetro o resultado es un tipo de datos definido por el usuario. Escala del parmetro o resultado; 0 si el parmetro o resultado es un tipo de datos definido por el usuario. 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. Y Para tipos de serie, el nombre de esquema de la clasificacin para el parmetro; un valor nulo en caso contrario. Para tipos de serie, el nombre no calificado de la clasificacin para el parmetro; un valor nulo en caso contrario. Nombre de esquema de la funcin utilizada para convertir un argumento o un resultado. Se aplica a funciones con fuente y externas; valor nulo en caso contrario. Nombre no calificado de la funcin utilizada para convertir un argumento o resultado. Se aplica a funciones con fuente y externas; valor nulo en caso contrario.
SCALE1
SMALLINT
CODEPAGE
SMALLINT
COLLATIONSCHEMA
VARCHAR (128)
COLLATIONNAME
VARCHAR (128)
CAST_FUNCSCHEMA
VARCHAR (128)
CAST_FUNCSPECIFIC
VARCHAR (128)
648
SYSCAT.ROUTINEPARMS
Tabla 122. Vista de catlogo SYSCAT.ROUTINEPARMS (continuacin) Posibilidad de nulos Y
Descripcin 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. 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. Nombre de esquema del mbito (valor de destino), si el tipo del parmetro es REFERENCE; valor nulo en caso contrario. Nombre no calificado del mbito (valor de destino), si el tipo del parmetro es REFERENCE; valor nulo en caso contrario. Nombre del grupo de transformacin correspondiente a un parmetro o resultado de tipo estructurado. Comentarios proporcionados por el usuario o nulo.
TARGET_TYPENAME
VARCHAR (128)
SCOPE_TABSCHEMA
VARCHAR (128)
SCOPE_TABNAME
VARCHAR (128)
TRANSFORMGRPNAME
VARCHAR (128)
REMARKS Nota:
VARCHAR(254)
1. LENGTH y SCALE se establecen en 0 para las funciones con fuente (funciones definidas con una referencia a otra funcin), porque heredan la longitud y escala de los parmetros de su fuente.
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 123. Vista de catlogo SYSCAT.ROUTINES Posibilidad de nulos
Descripcin Nombre de esquema de la rutina. Nombre no calificado de la rutina. Tipo de rutina. v F = Funcin v M = Mtodo v P = Procedimiento
OWNER OWNERTYPE
ID de autorizacin bajo el cual se ha creado la rutina. v S = El sistema es el propietario v U = El propietario es un usuario individual
SPECIFICNAME
VARCHAR (128)
649
SYSCAT.ROUTINES
Tabla 123. Vista de catlogo SYSCAT.ROUTINES (continuacin) Posibilidad de nulos
Nombre de esquema del tipo de retorno correspondiente a una funcin escalar o a un mtodo. Nombre no calificado del tipo de retorno correspondiente a una funcin escalar o a un mtodo. v B = Incorporado v E = Definido por el usuario, externo v M = Funcin de plantilla v F = Procedimiento federado v Q = Con cuerpo de SQL1 v S = Generado por el sistema v T = Funcin de transformacin generada por el sistema (no se puede invocar directamente) v U = Definido por el usuario, basado en una fuente
RETURN_TYPENAME
VARCHAR (128)
ORIGIN
CHAR (1)
FUNCTIONTYPE
CHAR (1)
PARM_COUNT LANGUAGE
SMALLINT CHAR(8)
Nmero de parmetros de la rutina. Lenguaje de implantacin del cuerpo de la rutina (o del cuerpo de la funcin fuente, si esta funcin es la fuente de otra funcin). Los valores posibles son C, COBOL, JAVA, OLE, OLEDB o SQL. Blancos si ORIGIN no es E ni Q. 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. 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 para valor incorporado. Nulo si ORIGIN no es U.
SOURCESCHEMA
VARCHAR (128)
SOURCESPECIFIC
VARCHAR (128)
650
SYSCAT.ROUTINES
Tabla 123. Vista de catlogo SYSCAT.ROUTINES (continuacin) Posibilidad de nulos
Descripcin v N = Los resultados no son determinantes (algunos parmetros pueden tener distintos resultados si llama otra rutina) v Y = Los resultados son determinantes v Blanco = ORIGIN no es E, F ni Q
EXTERNAL_ACTION
CHAR (1)
v E = La funcin tiene efectos adicionales externos (por lo tanto el nmero de invocaciones es importante) v N = Ningn efecto adicional v Blanco = ORIGIN no es E, F ni Q
NULLCALL
CHAR (1)
v 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) v Y = CALLED ON NULL INPUT v Blanco = ORIGIN no es E ni Q
CAST_FUNCTION
CHAR (1)
ASSIGN_FUNCTION
CHAR (1)
SCRATCHPAD
CHAR (1)
v N = La rutina no tiene rea reutilizable v Y = La rutina tiene un rea reutilizable v Blanco = ORIGIN no es E o ROUTINETYPE es P
SCRATCHPAD_LENGTH
SMALLINT
Tamao (en bytes) del rea reutilizable de la rutina. v -1 = LANGUAGE es OLEDB y SCRATCHPAD es Y v 0 = SCRATCHPAD no es Y
FINALCALL
CHAR (1)
v N = No se realiza ninguna llamada final v Y = Se realiza una llamada final a esta rutina al ejecutar el fin de sentencia v Blanco = ORIGIN no es E o ROUTINETYPE es P
PARALLEL
CHAR (1)
v N = La rutina no se puede ejecutar en paralelo v Y = La rutina se puede ejecutar en paralelo v Blanco = ORIGIN no es E
651
SYSCAT.ROUTINES
Tabla 123. Vista de catlogo SYSCAT.ROUTINES (continuacin) Posibilidad de nulos
Descripcin Estilo de parmetro que se ha declarado al crearse la rutina. Los valores posibles son: v DB2DARI v DB2GENRL v DB2SQL v GENERAL v GNRLNULL v JAVA v SQL v Blanco si ORIGIN no es E
FENCED
CHAR (1)
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. v C = Contiene SQL (slo expresiones simples sin subconsultas) v M = Contiene sentencias de SQL que modifican datos v N = No contiene sentencias de SQL v R = Contiene sentencias de SQL de slo lectura v Blanco = ORIGIN no es E, F ni Q
DBINFO
CHAR (1)
Indica si se pasa un parmetro DBINFO a una rutina externa. v N = No se pasa DBINFO v Y = Se pasa DBINFO v Blanco = ORIGIN no es E
PROGRAMTYPE
CHAR (1)
COMMIT_ON_RETURN
CHAR (1)
Indica se la transaccin se confirma tras un retorno satisfactorio por parte de este procedimiento. v N = La unidad de trabajo no se confirma v Y = La unidad de trabajo se confirma v Blanco = ROUTINETYPE no es P
RESULT_SETS
SMALLINT
652
SYSCAT.ROUTINES
Tabla 123. Vista de catlogo SYSCAT.ROUTINES (continuacin) Posibilidad de nulos
Descripcin 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. v D = Registros especiales por omisin v I = Registros especiales heredados v 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. v N = No se puede acceder a los objetos federados v Y = Se puede acceder a los objetos federados v 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. v N = La rutina no est protegida de hebras v Y = La rutina est protegida de hebras v Blanco = ORIGIN no es E
VALID
CHAR (1)
Slo se aplica a LANGUAGE = SQL; blanco en caso contrario. v N = La rutina que tiene que volver a vincular v Y = La rutina es vlida v X = La rutina no est operativa y se tiene que volver a crear
METHODIMPLEMENTED
CHAR (1)
v N = El cuerpo del mtodo no se ha implantado v Y = El cuerpo del mtodo se ha implantado v Blanco = ROUTINETYPE no es M
METHODEFFECT
CHAR (2)
v CN = Mtodo constructor v MU = Mtodo mutador v OB = Mtodo observador v Blancos = No es un mtodo del sistema
TYPE_PRESERVING
CHAR (1)
v N = El tipo de retorno es el tipo de retorno declarado del mtodo v 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 v Blanco = ROUTINETYPE no es M
653
SYSCAT.ROUTINES
Tabla 123. Vista de catlogo SYSCAT.ROUTINES (continuacin) Posibilidad de nulos
Descripcin v N = Este mtodo no se puede invocar utilizando una notacin funcional v Y = Este mtodo se puede invocar utilizando una notacin funcional; es decir, se especifica el atributo WITH FUNCTION ACCESS v Blanco = ROUTINETYPE no es M
OVERRIDDEN_METHODID
INTEGER
Identificador del mtodo alterado temporalmente cuando se especifica la opcin OVERRIDING para un mtodo definido por el usuario. Nulo si ROUTINETYPE no es M. Nombre de esquema del tipo de sujeto para el mtodo definido por el usuario. Nulo si ROUTINETYPE no es M. Nombre no calificado del tipo de sujeto para el mtodo definido por el usuario. Nulo si ROUTINETYPE no es M. Para LANGUAGE JAVA, CLR o OLE, sta es la clase que implementa esta rutina; valor nulo en caso contrario. 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. 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. Para LANGUAGE JAVA, es la signatura 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. Hora a la que se ha creado la rutina. Hora a la que se ha modificado por ltima vez la rutina.
SUBJECT_TYPESCHEMA
VARCHAR (128)
SUBJECT_TYPENAME
VARCHAR (128)
CLASS
VARCHAR (384)
JAR_ID
VARCHAR (128)
JARSCHEMA
VARCHAR (128)
JAR_SIGNATURE
VARCHAR(2048)
Va de acceso de SQL en el momento en que se defini la rutina. Nulo si LANGUAGE no es SQL. Valor del esquema por omisin en el momento de la definicin del objeto. Se utiliza para completar cualquier referencia no calificada.
QUALIFIER
VARCHAR (128)
654
SYSCAT.ROUTINES
Tabla 123. Vista de catlogo SYSCAT.ROUTINES (continuacin) Posibilidad de nulos
Descripcin Nmero estimado de entradas/salidas (I/O) por invocacin; 0 es el valor por omisin; -1 si no se conoce. Nmero estimado de instrucciones por invocacin; 450 es el valor por omisin; -1 si no se conoce. Nmero estimado de I/O por byte de argumento de entrada; 0 es el valor por omisin; -1 si no se conoce. Nmero estimado de instrucciones por byte de argumento de entrada; 0 es el valor por omisin; -1 si no se conoce. 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. 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. 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. Cardinalidad prevista de una funcin de tabla; -1 si no se conoce o si la rutina no es una funcin de tabla. Para predicados definidos por el usuario; -1 si no hay ningn predicado definido por el usuario. 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.
INSTS_PER_INVOC
DOUBLE
IOS_PER_ARGBYTE
DOUBLE
INSTS_PER_ARGBYTE
DOUBLE
PERCENT_ARGBYTES
SMALLINT
INITIAL_IOS
DOUBLE
INITIAL_INSTS
DOUBLE
CARDINALITY
BIGINT
SELECTIVITY2
DOUBLE
RESULT_COLS
SMALLINT
IMPLEMENTATION
VARCHAR (762)
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. Reservado para su utilizacin en el futuro. Si LANGUAGE = SQL, el desplazamiento respecto al inicio del cuerpo del procedimiento de SQL del texto completo de la sentencia CREATE PROCEDURE; -1 si LANGUAGE no es SQL.
LIB_ID TEXT_BODY_OFFSET
INTEGER INTEGER
655
SYSCAT.ROUTINES
Tabla 123. Vista de catlogo SYSCAT.ROUTINES (continuacin) Posibilidad de nulos Y
Descripcin Si LANGUAGE = SQL, el texto completo de la sentencia CREATE FUNCTION, CREATE METHOD o CREATE PROCEDURE; valor nulo en caso contrario. Indica si la rutina inicia un nivel de punto de salvaguarda nuevo cuando se invoca. v 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 v Y = Se inicia un nivel de punto de salvaguarda nuevo cuando se invoca la rutina v Blanco = No se aplica
NEWSAVEPOINTLEVEL
CHAR (1)
DEBUG_MODE
VARCHAR(8)
Indica si la rutina se puede depurar o no, utilizando el depurador de DB2. v DISALLOW = La rutina no se puede depurar v ALLOW = La rutina se puede depurar y puede participar en una sesin de depuracin de cliente con el depurador de DB2 v DISABLE = La rutina no se puede depurar y este valor no se puede modificar sin eliminar y volver a crear la rutina v Blanco = El depurador de DB2 no soporta actualmente el tipo de rutina
Y Y Y
Reservado para su utilizacin en el futuro. Reservado para su utilizacin en el futuro. ID del usuario que ha realizando una extraccin del objeto; nulo si el objeto no se ha extrado. Opciones de precompilacin especificadas para la rutina. Opciones de compilacin especificadas para la rutina. Modalidad de control de ejecucin de una rutina de tipo CLR (tiempo de ejecucin de lenguaje comn) Los valores posibles son: v N = Red v R = Lectura de archivo v S = Seguro v U = No seguro v W = Escritura de archivo v Blanco = LANGUAGE no es CLR
Y Y
656
SYSCAT.ROUTINES
Tabla 123. Vista de catlogo SYSCAT.ROUTINES (continuacin) Posibilidad de nulos
Descripcin 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. Nombre de esquema de la clasificacin para la rutina. Nombre no calificado de la clasificacin para la rutina. Nombre de esquema de la clasificacin para clusulas ORDER BY en la rutina. Nombre no calificado de la clasificacin para clusulas ORDER BY en la rutina. Esquema de codificacin de la rutina, segn lo especificado en la clusula PARAMETER CCSID. Los valores posibles son: v A = ASCII v U = UNICODE v Blanco = No se ha especificado la clusula PARAMETER CCSID
COLLATIONSCHEMA COLLATIONNAME
LAST_REGEN_TIME
TIMESTAMP
Hora a la que se ha vuelto a generar por ltima vez el descriptor empaquetado de la rutina SQL. v 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 v 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 v Blanco = LANGUAGE no es SQL o ROUTINETYPE es P
INHERITLOCKREQUEST
CHAR (1)
ID de autorizacin bajo el cual se ha creado la rutina. Comentarios proporcionados por el usuario o nulo.
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 de 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.
657
SYSCAT.ROUTINESFEDERATED
SYSCAT.ROUTINESFEDERATED
Cada fila representa un procedimiento federado.
Tabla 124. Vista de catlogo SYSCAT.ROUTINESFEDERATED Posibilidad de nulos
Tipo de datos VARCHAR (128) VARCHAR (128) CHAR (1) VARCHAR (128) CHAR (1)
Descripcin Nombre de esquema de la rutina. Nombre no calificado de la rutina. Tipo de rutina. v P = Procedimiento ID de autorizacin bajo el cual se ha creado la rutina. v S = El sistema es el propietario v U = El propietario es un usuario individual
Nombre de la instancia de la rutina (puede ser un nombre generado por el sistema). Identificador de la rutina. Nmero de parmetros de la rutina. v N = Los resultados no son determinantes (algunos parmetros pueden tener distintos resultados si llama otra rutina) v Y = Los resultados son determinantes
EXTERNAL_ACTION
CHAR (1)
v E = La rutina tiene efectos adicionales externos (por lo tanto el nmero de invocaciones es importante) v N = Ningn efecto adicional 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. v C = Contiene SQL (slo expresiones simples sin subconsultas) v M = Contiene sentencias de SQL que modifican datos v N = No contiene sentencias de SQL v R = Contiene sentencias de SQL de slo lectura
SQL_DATA_ACCESS
CHAR (1)
COMMIT_ON_RETURN
CHAR (1)
Indica se la transaccin se confirma tras un retorno satisfactorio por parte de este procedimiento. v N = La unidad de trabajo no se confirma v Y = La unidad de trabajo se confirma v Blanco = ROUTINETYPE no es P
RESULT_SETS CREATE_TIME
SMALLINT TIMESTAMP
658
SYSCAT.ROUTINESFEDERATED
Tabla 124. Vista de catlogo SYSCAT.ROUTINESFEDERATED (continuacin) Posibilidad de nulos
Descripcin Hora a la que se ha modificado por ltima vez la rutina. Valor del esquema por omisin en el momento de la definicin del objeto. Se utiliza para completar cualquier referencia no calificada. Para un procedimiento (ROUTINETYPE = P), contiene 0; en caso contrario, contiene 1. 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. Hora a la que se ha vuelto a generar por ltima vez el descriptor empaquetado de la rutina SQL.
RESULT_COLS CODEPAGE
SMALLINT SMALLINT
LAST_REGEN_TIME
TIMESTAMP
REMOTE_PROCEDURE
VARCHAR (128)
Nombre no calificado del procedimiento fuente para el que se ha creado la rutina federada. Nombre del esquema del procedimiento fuente para el que se ha creado la rutina federada. Nombre de la fuente de datos que contiene el procedimiento fuente para el cual se ha creado la rutina federada. Nombre del paquete al que pertenece el procedimiento fuente (se aplica nicamente a los derivadores para fuentes de datos Oracle). Reservado para su utilizacin en el futuro. Comentarios proporcionados por el usuario o nulo.
REMOTE_SCHEMA
VARCHAR (128)
SERVERNAME
VARCHAR (128)
REMOTE_PACKAGE
VARCHAR (128)
Y Y
SYSCAT.SCHEMAAUTH
Cada fila representa un usuario o un grupo al que se ha otorgado uno o ms privilegios sobre un esquema.
Tabla 125. Vista de catlogo SYSCAT.SCHEMAAUTH Posibilidad de nulos
Descripcin El que ha otorgado un privilegio. v S = El sistema es el otorgante v U = El otorgante es un usuario individual El que mantiene un privilegio.
Apndice D. Vistas de catlogo
GRANTEE
VARCHAR (128)
659
SYSCAT.SCHEMAAUTH
Tabla 125. Vista de catlogo SYSCAT.SCHEMAAUTH (continuacin) Posibilidad de nulos
SCHEMANAME ALTERINAUTH
Nombre del esquema al que se aplica este privilegio. Privilegio para modificar o realizar comentarios sobre los objetos del esquema nombrado. v G = Se mantiene y se puede otorgar v N = No se mantiene v Y = Se mantiene
CREATEINAUTH
CHAR (1)
Privilegio para crear objetos en el esquema nombrado. v G = Se mantiene y se puede otorgar v N = No se mantiene v Y = Se mantiene
DROPINAUTH
CHAR (1)
Privilegio para eliminar objetos del esquema nombrado. v G = Se mantiene y se puede otorgar v N = No se mantiene v Y = Se mantiene
SYSCAT.SCHEMATA
Cada fila representa un esquema.
Tabla 126. Vista de catlogo SYSCAT.SCHEMATA Posibilidad de nulos
Descripcin Nombre del esquema. 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. v S = El sistema es el propietario v U = El propietario es un usuario individual
OWNERTYPE
CHAR (1)
DEFINER DEFINERTYPE
ID de autorizacin bajo el cual se ha creado el esquema. v S = El sistema es el definidor v U = El definidor es un usuario individual Hora a la que se ha creado el esquema.
CREATE_TIME
TIMESTAMP
660
SYSCAT.SCHEMATA
Tabla 126. Vista de catlogo SYSCAT.SCHEMATA (continuacin) Posibilidad de nulos Y
SYSCAT.SECURITYLABELACCESS
Cada fila representa la etiqueta de seguridad que se ha otorgado al ID de autorizacin de base de datos.
Tabla 127. Vista de catlogo SYSCAT.SECURITYLABELACCESS Posibilidad de nulos
Descripcin El que otorga la etiqueta de seguridad. El que mantiene la etiqueta de seguridad. v U = Se otorga a un usuario individual v R = Se otorga a una funcin de usuario v G = Se otorga a un usuario de grupo
SECLABELID
INTEGER
Identificador de la etiqueta de seguridad. Como nombre de la etiqueta de seguridad, seleccione la columna SECLABELNAME del valor correspondiente de SECLABELID en la vista de catlogo SYSCAT.SECURITYLABELS. Identificador de la poltica de seguridad asociada a la etiqueta de seguridad. Como nombre de la poltica de seguridad, seleccione la columna SECPOLICYNAME del valor correspondiente de SECPOLICYID en la vista de catlogo SYSCAT.SECURITYPOLICIES. v B = Tanto acceso de lectura como de grabacin v R = Acceso de lectura v W = Acceso de grabacin
SECPOLICYID
INTEGER
ACCESSTYPE
CHAR (1)
GRANT_TIME
TIMESTAMP
SYSCAT. SECURITYLABELCOMPONENTELEMENTS
Cada fila representa un valor de elemento de un componente de etiqueta de seguridad.
661
SYSCAT. SECURITYLABELCOMPONENTELEMENTS
Tabla 128. Vista de catlogo SYSCAT.SECURITYLABELCOMPONENTELEMENTS Posibilidad de nulos
Tipo de datos INTEGER VARCHAR (32) CHAR(8) FOR BIT DATA VARCHAR (32)
Descripcin Identificador del componente de etiqueta de seguridad. Valor de elemento del componente de etiqueta de seguridad. Formato codificado del valor del elemento.
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.
SYSCAT.SECURITYLABELCOMPONENTS
Cada fila representa un componente de etiqueta de seguridad.
Tabla 129. Vista de catlogo SYSCAT.SECURITYLABELCOMPONENTS Posibilidad de nulos
Descripcin Nombre del componente de etiqueta de seguridad. Identificador del componente de etiqueta de seguridad. Tipo de componente de etiqueta de seguridad. v A = Matriz v S = Conjunto v T = rbol
Nmero de elementos del componente de etiqueta de seguridad. Hora a la que se ha creado el componente de etiqueta de seguridad. Comentarios proporcionados por el usuario o nulo.
SYSCAT.SECURITYLABELS
Cada fila representa una etiqueta de seguridad.
Tabla 130. Vista de catlogo SYSCAT.SECURITYLABELS Posibilidad de nulos
662
SYSCAT.SECURITYLABELS
Tabla 130. Vista de catlogo SYSCAT.SECURITYLABELS (continuacin) Posibilidad de nulos
Descripcin Identificador de la poltica de seguridad a la que pertenece la etiqueta de seguridad. Representacin interna de la etiqueta de seguridad. Hora a la que se ha creado la etiqueta de seguridad.
SYSCAT.SECURITYPOLICIES
Cada fila representa una poltica de seguridad.
Tabla 131. Vista de catlogo SYSCAT.SECURITYPOLICIES Posibilidad de nulos
Descripcin Nombre de la poltica de seguridad. Identificador de la poltica de seguridad. Nmero de componentes de etiqueta de seguridad de la poltica de seguridad. Relacin entre las etiquetas de seguridad correspondientes al acceso de lectura y de grabacin otorgado al mismo ID de autorizacin. v 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. v O = Alterar temporalmente v R = Restringir
CREATE_TIME USERAUTHS
Hora a la que se ha creado la poltica de seguridad. Indica si se utilizarn o ignorarn las autorizaciones de etiquetas de seguridad y exenciones otorgadas a un ID de autorizacin que representa a un usuario. v I = Ignorada v U = Utilizada
663
SYSCAT.SECURITYPOLICIES
Tabla 131. Vista de catlogo SYSCAT.SECURITYPOLICIES (continuacin) Posibilidad de nulos
Descripcin Indica si se utilizarn o ignorarn las autorizaciones de etiquetas de seguridad y exenciones otorgadas a un ID de autorizacin que representa a un grupo. v I = Ignorada v U = Utilizada
ROLEAUTHS
CHAR (1)
Indica si se utilizarn o ignorarn las autorizaciones de etiquetas de seguridad y exenciones otorgadas a un ID de autorizacin que representa a una funcin. v I = Ignorada v U = Utilizada
REMARKS
VARCHAR(254)
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 132. Vista de catlogo SYSCAT.SECURITYPOLICYCOMPONENTRULES Posibilidad de nulos
Descripcin Identificador de la poltica de seguridad. Identificador del componente de etiqueta de seguridad de la poltica de seguridad. Posicin del componente de etiqueta de seguridad tal como aparece en la poltica de seguridad, empezando por 1. Nombre de la norma de acceso de lectura asociada al componente de etiqueta de seguridad. Texto de la norma de acceso de lectura asociada al componente de etiqueta de seguridad. Nombre de la norma de acceso de grabacin asociada al componente de etiqueta de seguridad. Texto de la norma de acceso de grabacin asociada al componente de etiqueta de seguridad.
READACCESSRULENAME
VARCHAR (128)
READACCESSRULETEXT
VARCHAR(512)
WRITEACCESSRULENAME
VARCHAR (128)
WRITEACCESSRULETEXT
VARCHAR(512)
664
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 133. Vista de catlogo SYSCAT.SECURITYPOLICYEXEMPTIONS Posibilidad de nulos
Descripcin El que otorga la exencin. El que mantiene la exencin. v U = Se otorga a un usuario individual v R = Se otorga a una funcin de usuario v G = Se otorga a un usuario de grupo
SECPOLICYID
INTEGER
Identificador de la poltica de seguridad a la que se ha otorgado la exencin. Como nombre de la poltica de seguridad, seleccione la columna SECPOLICYNAME del valor correspondiente de SECPOLICYID en la vista de catlogo SYSCAT.SECURITYPOLICIES. Nombre de la norma de acceso para la que se ha otorgado la exencin. Tipo de acceso al que se aplica la norma. v R = Acceso de lectura v W = Acceso de grabacin
ACCESSRULENAME ACCESSTYPE
ORDINAL
INTEGER
Posicin del componente de etiqueta de seguridad en la poltica de seguridad a la que se aplica la norma. Si la norma es DB2LBACWRITEARRAY, entonces: v D = Escritura hacia abajo v U = Escritura hacia arriba Blanco en caso contrario.
ACTIONALLOWED
CHAR (1)
GRANT_TIME
TIMESTAMP
SYSCAT.SEQUENCEAUTH
Cada fila representa un usuario o un grupo al que se ha otorgado uno o ms privilegios sobre una secuencia.
Tabla 134. Vista de catlogo SYSCAT.SEQUENCEAUTH Posibilidad de nulos
Descripcin El que ha otorgado un privilegio. v S = El sistema es el otorgante v U = El otorgante es un usuario individual El que mantiene un privilegio.
Apndice D. Vistas de catlogo
GRANTEE
VARCHAR (128)
665
SYSCAT.SEQUENCEAUTH
Tabla 134. Vista de catlogo SYSCAT.SEQUENCEAUTH (continuacin) Posibilidad de nulos
Nombre de esquema de la secuencia. Nombre no calificado de la secuencia. Privilegio para modificar la secuencia. v G = Se mantiene y se puede otorgar v N = No se mantiene v Y = Se mantiene
USAGEAUTH
CHAR (1)
Privilegio para hacer referencia a la secuencia. v G = Se mantiene y se puede otorgar v N = No se mantiene v Y = Se mantiene
SYSCAT.SEQUENCES
Cada fila representa una secuencia.
Tabla 135. Vista de catlogo SYSCAT.SEQUENCES Posibilidad de nulos
Tipo de datos VARCHAR (128) VARCHAR (128) VARCHAR (128) CHAR (1)
Descripcin Nombre de esquema de la secuencia. Nombre no calificado de la secuencia. ID de autorizacin bajo el cual se ha creado la secuencia. v S = El sistema es el definidor v U = El definidor es un usuario individual ID de autorizacin bajo el cual se ha creado la secuencia. v S = El sistema es el propietario v U = El propietario es un usuario individual
DEFINERTYPE
OWNER OWNERTYPE
SEQID SEQTYPE
Valor de incremento. Valor inicial de la secuencia. Valor mximo de la secuencia. Valor mnimo de la secuencia.
666
SYSCAT.SEQUENCES
Tabla 135. Vista de catlogo SYSCAT.SEQUENCES (continuacin) Posibilidad de nulos Y
Descripcin 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. Indica si la secuencia puede o no continuar generando valores despus de alcanzar su valor mximo o mnimo. v N = La secuencia no puede continuar v Y = La secuencia puede continuar
CYCLE
CHAR (1)
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. Indica si los nmeros de secuencia se deben o no generar en orden de peticin. v N = No es necesario que los nmeros de secuencia se generen en orden de peticin v Y = Los nmeros de secuencia se deben generar en orden de peticin
ORDER
CHAR (1)
DATATYPEID
INTEGER
Para tipos incorporados, el identificador interno del tipo incorporado. Para tipos diferenciados, el identificador interno del tipo diferenciado. 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. Hora a la que se ha creado la secuencia. Hora a la que se ha modificado por ltima vez la secuencia. Precisin del tipo de datos de la secuencia. Los valores posibles son: v 5 = SMALLINT v 10 = INTEGER v 19 = BIGINT Para DECIMAL, es la precisin del tipo de datos DECIMAL especificado.
SOURCETYPEID
INTEGER
ORIGIN
CHAR (1)
Origen de la secuencia. v S = Secuencia generada por el sistema v U = Secuencia generada por el usuario
REMARKS
VARCHAR(254)
667
SYSCAT.SEQUENCES
Tabla 135. Vista de catlogo SYSCAT.SEQUENCES (continuacin) Posibilidad de nulos
Tipo de datos
Descripcin
1. La columna DEFINER se incluye por razones de compatibilidad con versiones anteriores. Consulte OWNER.
SYSCAT.SERVEROPTIONS
Cada fila representa un valor de opcin especfico del servidor.
Tabla 136. Vista de catlogo SYSCAT.SERVEROPTIONS Posibilidad de nulos Y Y Y Y
Nombre de columna WRAPNAME SERVERNAME SERVERTYPE SERVERVERSION CREATE_TIME OPTION SETTING SERVEROPTIONKEY REMARKS
Tipo de datos VARCHAR (128) VARCHAR (128) VARCHAR (30) VARCHAR (18) TIMESTAMP VARCHAR (128) VARCHAR(2048) VARCHAR (18) VARCHAR(254)
Descripcin Nombre del derivador. Nombre en maysculas del servidor. Tipo de servidor. Versin de servidor. Hora a la que se ha creado la entrada. Nombre de la opcin de servidor. Valor de la opcin de servidor. Identifica una fila de forma exclusiva.
SYSCAT.SERVERS
Cada fila representa una fuente de datos.
Tabla 137. Vista de catlogo SYSCAT.SERVERS Posibilidad de nulos
Tipo de datos VARCHAR (128) VARCHAR (128) VARCHAR (30) VARCHAR (18) VARCHAR(254)
Y Y Y
SYSCAT.SERVICECLASSES
Cada fila representa una clase de servicio.
668
SYSCAT.SERVICECLASSES
Tabla 138. Vista de catlogo SYSCAT.SERVICECLASSES Posibilidad de nulos
Nombre de clase de servicio de la superclase de servicio padre. Identificador de la clase de servicio. Identificador de la clase de servicio padre para esta clase de servicio. 0 si esta clase de servicio es una super clase de servicio. Hora en que se ha creado la clase de servicio. Hora en que se modific por ltima vez la clase de servicio. Estado de la clase de servicio. v N = Inhabilitada v Y = Habilitada
AGENTPRIORITY
SMALLINT
Prioridad de hebra de los agentes de la clase de servicio relacionados con la prioridad normal de las hebras de DB2. v De -20 a 20 (Linux y UNIX) v De -6 a 6 (Windows) v -32768 = no establecido
PREFETCHPRIORITY
CHAR (1)
Prioridad de los agentes en la clase de servicio. v H = Alto v L = Bajo v M = Medio v Blanco = no establecido
INBOUNDCORRELATOR OUTBOUNDCORRELATOR
Y Y
Para su utilizacin en el futuro. Serie utilizada para asociar la clase de servicio a una clase de servicio del gestor de carga de trabajo del sistema operativo. Especifica los datos de actividad agregados que deben capturarse para la clase de servicio por medio del supervisor de sucesos aplicable. v B = Recopilar datos de actividad agregados bsicos v E = Recopilar datos de actividad agregados ampliados v N = Ninguno
COLLECTAGGACTDATA
CHAR (1)
COLLECTAGGREQDATA
CHAR (1)
Especifica los datos de actividad agregados que deben capturarse para la clase de servicio por medio del supervisor de sucesos aplicable. v B = Recopilar datos de peticin agregados bsicos v N = Ninguno
669
SYSCAT.SERVICECLASSES
Tabla 138. Vista de catlogo SYSCAT.SERVICECLASSES (continuacin) Posibilidad de nulos
Descripcin Especifica los datos de actividad que deben recopilarse por medio del supervisor de sucesos aplicable. v D = Datos de actividad con detalles v N = Ninguno v V = Datos de actividad con detalles y valores v W = Datos de actividad sin detalles
COLLECTACTPARTITION
CHAR (1)
Especifica el lugar en el que se recopilarn los datos de actividad. v C = Particin de base de datos del coordinador de la actividad v D = Todas las particiones de base de datos
REMARKS
VARCHAR(254)
SYSCAT.STATEMENTS
Cada fila representa una sentencia de SQL de un paquete.
Tabla 139. Vista de catlogo SYSCAT.STATEMENTS Posibilidad de nulos
Descripcin Nombre de esquema del paquete. Nombre no calificado del paquete. El nmero de lnea de la sentencia de SQL del mdulo fuente del programa de aplicacin. El nmero de la seccin del paquete que contiene la sentencia de SQL. Siempre 1. Texto de la sentencia de SQL. Identificador de un paquete especfico cuando existen varios paquetes con el mismo nombre.
VERSION
SYSCAT.SURROGATEAUTHIDS
Cada fila representa un usuario o un grupo al que se ha otorgado el privilegio SETSESSIONUSER sobre un usuario o PUBLIC.
670
SYSCAT.SURROGATEAUTHIDS
Tabla 140. Vista de catlogo SYSCAT.SURROGATEAUTHIDS Posibilidad de nulos
Descripcin ID de autorizacin que ha otorgado a TRUSTEDID la capacidad para actuar como un sustituto. Cuando TRUSTEDID representa un objeto de contexto fiable, este campo representa el ID de autorizacin que ha creado o modificado el objeto de contexto fiable. Identificador de la entidad en la que se confa para que acte como un sustituto. v C = Contexto fiable v G = Grupo v U = Usuario
TRUSTEDID TRUSTEDIDTYPE
SURROGATEAUTHID
VARCHAR (128)
ID de autorizacin del sustituto que puede adoptar TRUSTEDID. PUBLIC indica que TRUSTEDID puede adoptar cualquier ID de autorizacin. v G = Grupo v U = Usuario
SURROGATEAUTHIDTYPE
CHAR (1)
AUTHENTICATE
CHAR (1)
v N = No se requiere ninguna autentificacin. v Y = Se necesita un smbolo de autentificacin con el ID de autorizacin para autentificar al usuario antes de que pueda asumirse el ID de autorizacin v Blanco = TRUSTEDIDTYPE no es C
CONTEXTROLE
VARCHAR (128)
Ha de asignarse una funcin especfica para el ID de autorizacin asumido, que reemplaza la funcin por omisin, si la hay, definida por el contexto fiable. Valor nulo cuando TRUSTEDIDTYPE no es C. Hora a la que se ha efectuado el otorgamiento.
GRANT_TIME
TIMESTAMP
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 141. Vista de catlogo SYSCAT.TABAUTH Posibilidad de nulos
Descripcin El que ha otorgado el privilegio. v S = El sistema es el otorgante v U = El otorgante es un usuario individual El que mantiene el privilegio.
Apndice D. Vistas de catlogo
GRANTEE
VARCHAR (128)
671
SYSCAT.TABAUTH
Tabla 141. Vista de catlogo SYSCAT.TABAUTH (continuacin) Posibilidad de nulos
Nombre de esquema de la tabla o vista. Nombre no calificado de la tabla o vista. Privilegio CONTROL. v N = No se mantiene v 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. v G = Se mantiene y se puede otorgar v N = No se mantiene v Y = Se mantiene
DELETEAUTH
CHAR (1)
Privilegio para suprimir filas de una tabla o vista actualizable. v G = Se mantiene y se puede otorgar v N = No se mantiene v Y = Se mantiene
INDEXAUTH
CHAR (1)
Privilegio para crear un ndice sobre una tabla. v G = Se mantiene y se puede otorgar v N = No se mantiene v 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. v G = Se mantiene y se puede otorgar v N = No se mantiene v Y = Se mantiene
REFAUTH
CHAR (1)
Privilegio para crear y eliminar una clave fornea que hace referencia a una tabla como la tabla padre. v G = Se mantiene y se puede otorgar v N = No se mantiene v Y = Se mantiene
672
SYSCAT.TABAUTH
Tabla 141. Vista de catlogo SYSCAT.TABAUTH (continuacin) Posibilidad de nulos
Descripcin 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. v G = Se mantiene y se puede otorgar v N = No se mantiene v Y = Se mantiene
UPDATEAUTH
CHAR (1)
Privilegio para ejecutar la sentencia UPDATE sobre una tabla o vista actualizable. v G = Se mantiene y se puede otorgar v N = No se mantiene v Y = Se mantiene
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 142. Vista de catlogo SYSCAT.TABCONST Posibilidad de nulos
Tipo de datos VARCHAR (128) VARCHAR (128) VARCHAR (128) VARCHAR (128) CHAR (1)
Descripcin Nombre de la restriccin. Nombre de esquema de la tabla a la que se aplica esta restriccin. Nombre no calificado de la tabla a la que se aplica esta restriccin. ID de autorizacin bajo el que se ha creado la restriccin. v S = El sistema es el propietario v U = El propietario es un usuario individual
TYPE
CHAR (1)
Indica el tipo de restriccin. v F = Clave fornea v I = Dependencia funcional v K = Comprobacin v P = Clave primaria v U = Unicidad
ENFORCED
CHAR (1)
673
SYSCAT.TABCONST
Tabla 142. Vista de catlogo SYSCAT.TABCONST (continuacin) Posibilidad de nulos
Descripcin v D = Diferir la comprobacin de los datos existentes v I = Comprobacin inmediata de los datos existentes v N = No comprobar nunca los datos existentes
ENABLEQUERYOPT
CHAR (1)
v N = Optimizacin de consulta desactivada v Y = Optimizacin de consulta activada ID de autorizacin bajo el que se ha creado la restriccin. Y Comentarios proporcionados por el usuario o nulo.
DEFINER
REMARKS Nota:
1. La columna DEFINER se incluye por razones de compatibilidad con versiones anteriores. Consulte OWNER.
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 143. Vista de catlogo SYSCAT.TABDEP Posibilidad de nulos
Descripcin Nombre de esquema de la vista o tabla de consultas materializadas. Nombre no calificado de la vista o tabla de consultas materializadas. Tipo de objeto dependiente. v S = Tabla de consultas materializadas v T = Tabla (slo de etapas) v V = Vista (sin tipo) v W = Vista con tipo
OWNER OWNERTYPE
ID de autorizacin del creador de la vista o tabla de consultas materializadas. v U = El propietario es un usuario individual
674
SYSCAT.TABDEP
Tabla 143. Vista de catlogo SYSCAT.TABDEP (continuacin) Posibilidad de nulos
Descripcin Tipo de objeto sobre el que hay una dependencia. Los valores posibles son: v A = Alias v F = Instancia de rutina v I = ndice si se registra una dependencia de una tabla base v N = Apodo v O = Dependencia de privilegios en todas las subtablas o subvistas de una jerarqua de tablas o de vistas v R = Tipo estructurado v S = Tabla de consultas materializadas v T = Tabla (sin tipo) v U = Tabla con tipo v V = Vista (sin tipo) v W = Vista con tipo v Z = Objeto XSR v v = Variable global
BSCHEMA
VARCHAR (128)
Nombre de esquema del objeto del que depende la vista o tabla de consultas materializadas. Nombre no calificado del objeto del que depende la vista o tabla de consultas materializadas. 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. ID de autorizacin del creador de la vista o tabla de consultas materializadas.
BNAME
VARCHAR (128)
TABAUTH
SMALLINT
DEFINER1 Nota:
VARCHAR (128)
1. La columna DEFINER se incluye por razones de compatibilidad con versiones anteriores. Consulte OWNER.
SYSCAT.TABDETACHEDDEP
Cada fila representa una dependencia desenlazada entre una tabla dependiente desenlazada y una tabla desenlazada.
Tabla 144. Vista de catlogo SYSCAT.TABDETACHEDDEP Posibilidad de nulos
675
SYSCAT.TABDETACHEDDEP
Tabla 144. Vista de catlogo SYSCAT.TABDETACHEDDEP (continuacin) Posibilidad de nulos
Descripcin Nombre de esquema de la tabla dependiente desenlazada.. Nombre no calificado de la tabla dependiente desenlazada.
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 145. Vista de catlogo SYSCAT.TABLES Posibilidad de nulos
Tipo de datos VARCHAR (128) VARCHAR (128) VARCHAR (128) CHAR (1)
Descripcin Nombre de esquema del objeto. Nombre no calificado del objeto. ID de autorizacin bajo el que se ha creado la tabla, vista, alias o apodo. v S = El sistema es el propietario v U = El propietario es un usuario individual
TYPE
CHAR (1)
Tipo de objeto. v A = Alias v G = Tabla temporal global v H = Tabla de jerarqua v L = Tabla desenlazada v N = Apodo v S = Tabla de consultas materializadas v T = Tabla (sin tipo) v U = Tabla con tipo v V = Vista (sin tipo) v W = Vista con tipo
STATUS
CHAR (1)
BASE_TABSCHEMA
VARCHAR (128)
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. 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.
BASE_TABNAME
VARCHAR (128)
676
SYSCAT.TABLES
Tabla 145. Vista de catlogo SYSCAT.TABLES (continuacin) Posibilidad de nulos Y
Descripcin Nombre de esquema del tipo de fila correspondiente a esta tabla, si se aplica; valor nulo en caso contrario. Nombre de no calificado del tipo de fila correspondiente a esta tabla, si se aplica; valor nulo en caso contrario. Hora a la que se ha creado el objeto. Hora a la que se ha modificado por ltima vez el objeto. Hora a la que se ha invalidado por ltima vez el objeto.
ROWTYPENAME
VARCHAR (128)
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. Nmero de columnas, incluidas las columnas heredadas (si las hay). Identificador interno del objeto lgico. Identificador lgico interno del espacio de tablas primario correspondiente a este objeto. Nmero total de filas; -1 si no se recopilan estadsticas. 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. Nmero total de pginas; -1 para una vista o alias, o si no se recopilan estadsticas; -2 para una subtabla o tabla de jerarqua. 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.
FPAGES
BIGINT
OVERFLOW
BIGINT
TBSPACE
VARCHAR (128)
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. 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.
INDEX_TBSPACE
VARCHAR (128)
677
SYSCAT.TABLES
Tabla 145. Vista de catlogo SYSCAT.TABLES (continuacin) Posibilidad de nulos Y
Descripcin 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. Nmero de tablas padre de este objeto; es decir, el nmero de restricciones de referencia de las que depende este objeto. Nmero de tablas dependientes de este objeto; es decir, el nmero de restricciones de referencia de las que depende este objeto. 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. Nmero de columnas de la clave primaria. Identificador de ndice correspondiente al ndice de clave primaria; 0 o el valor nulo si no hay clave primaria. Nmero de restricciones de clave exclusiva (que no sean la restriccin de clave primara) definidas en este objeto. Nmero de restricciones de comprobacin definidas en este objeto. v L = La tabla interviene en la duplicacin de datos, incluida la duplicacin de las columnas LONG VARCHAR y LONG VARGRAPHIC v N = La tabla no interviene en la duplicacin de datos v Y = La tabla interviene en la duplicacin de datos, sin incluir la duplicacin de las columnas LONG VARCHAR y LONG VARGRAPHIC
PARENTS
SMALLINT
CHILDREN
SMALLINT
SELFREFS
SMALLINT
KEYCOLUMNS KEYINDEXID
SMALLINT SMALLINT
Y Y
KEYUNIQUE
SMALLINT
CHECKCOUNT DATACAPTURE
678
SYSCAT.TABLES
Tabla 145. Vista de catlogo SYSCAT.TABLES (continuacin) Posibilidad de nulos
Descripcin v El byte 1 representa restriccin de clave fornea. v El byte 2 representa restriccin de comprobacin. v El byte 5 representa la tabla de consultas materializadas. v El byte 6 representa columna generada. v El byte 7 representa la tabla dispuesta con antelacin. v El byte 8 representa restriccin de particionamiento de datos. v Otros bytes estn reservados para su utilizacin en el futuro. Los valores posibles son: v 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. v N = No comprobado v U = Comprobado por el usuario v W = Estaba en el estado U cuando la tabla se coloc en el estado de pendiente de establecer integridad v Y = Comprobado por el sistema
PMAP_ID
SMALLINT
Identificador del mapa de distribucin que utiliza actualmente esta tabla (nulo para alias o vistas). Indica la forma en que los datos se distribuyen entre particiones de base de datos en un sistema de bases de datos particionadas. v H = Generacin aleatoria v R = Duplicado entre particiones de base de datos v Blanco = No hay particionamiento de base de datos
PARTITION_MODE
CHAR (1)
LOG_ATTRIBUTE PCTFREE
v Siempre 0. Esta columna ya no se utiliza. Porcentaje de cada pgina que se ha de reservar para inserciones posteriores.
679
SYSCAT.TABLES
Tabla 145. Vista de catlogo SYSCAT.TABLES (continuacin) Posibilidad de nulos
Descripcin Controla la forma en que se insertan filas en pginas. v N = Las filas nuevas se insertan en los espacios existentes, si los hay v Y = Las filas nuevas se aaden al final de los datos
REFRESH
CHAR (1)
Modalidad de renovacin. v D = Diferida v I = Inmediata v O = Una vez v Blanco = No es una tabla de consultas materializadas
REFRESH_TIME
TIMESTAMP
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. 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: v I = Insercin de bloque v R = Fila v T = Tabla v Blanco = No se aplica
LOCKSIZE
CHAR (1)
VOLATILE
CHAR (1)
v C = La cardinalidad de la tabla es voltil v Blanco = No se aplica No utilizado. Propiedades para una tabla. Un solo blanco indica que la tabla no tiene propiedades. Lo que se menciona a continuacin es la posicin en la serie, valor y significado: v 1, Y = tabla de consultas materializadas mantenida por el usuario v 2, Y = Tabla por etapas v 3, Y = Propagacin inmediata v 11, Y = Apodo que no se pondr en la antememoria
ROW_FORMAT PROPERTY
STATISTICS_PROFILE
CLOB(10M)
680
SYSCAT.TABLES
Tabla 145. Vista de catlogo SYSCAT.TABLES (continuacin) Posibilidad de nulos
Descripcin v B = Tanto la compresin de valores como la de filas estn activadas v N = No hay ninguna compresin activada; se utiliza un formato de fila que no da soporte a la compresin v R = La compresin de filas est activada; puede que se utilice un formato de fila que da soporte a la compresin v V = La compresin de valores est activada; se utiliza un formato de fila que da soporte a la compresin v 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: v D = No hay movimiento de datos v F = Acceso completo v N = No hay acceso v R = Acceso de slo lectura
CLUSTERED
CHAR (1)
v Y = La tabla est en un clster de varias dimensiones (aunque slo segn una dimensin) v 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). v N = No hay norma v R = Se aplica la norma restrictiva a la eliminacin
DROPRULE
CHAR (1)
MAXFREESPACESEARCH AVGCOMPRESSEDROWSIZE
SMALLINT SMALLINT
Reservado para su utilizacin en el futuro. Longitud media (en bytes) de filas comprimidas en esta tabla; -1 si no se recopilan estadsticas. 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. Longitud media (en bytes) de filas comprimidas y no comprimidas de esta tabla; -1 si no se recopilan estadsticas.
AVGROWCOMPRESSIONRATIO
REAL
AVGROWSIZE
SMALLINT
681
SYSCAT.TABLES
Tabla 145. Vista de catlogo SYSCAT.TABLES (continuacin) Posibilidad de nulos
Descripcin Filas comprimidas como un porcentaje del nmero total de filas de la tabla; -1 si no se recopilan estadsticas.
LOGINDEXBUILD
VARCHAR(3)
Nivel de anotacin cronolgica que se debe realizar durante las operaciones de crear, volver a crear o reorganizar el ndice de la tabla. v OFF = las operaciones de creacin del ndice de la tabla se anotarn cronolgicamente de forma mnima v ON = las operaciones de creacin del ndice de la tabla se anotarn cronolgicamente por completo v 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. Nombre de esquema de la clasificacin para la tabla. Nombre no calificado de la clasificacin para la tabla. Nombre de esquema de la clasificacin para clusulas ORDER BY en la tabla. Nombre no calificado de la clasificacin para clusulas ORDER BY en la tabla. v A = Se ha especificado CCSID ASCII v U = Se ha especificado CCSID UNICODE v Blanco = No se ha especificado la clusula CCSID
COLLATIONSCHEMA COLLATIONNAME
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. Y Hora a la que se han vuelto a generar por ltima vez las vistas y restricciones de comprobacin de la tabla. Identificador de la poltica de seguridad que protege la tabla; 0 para tablas no protegidas.
LAST_REGEN_TIME
TIMESTAMP
SECPOLICYID
INTEGER
682
SYSCAT.TABLES
Tabla 145. Vista de catlogo SYSCAT.TABLES (continuacin) Posibilidad de nulos
Descripcin v B = Granularidad tanto a nivel de columna como a nivel de fila v C = Granularidad a nivel de columna v R = Granularidad a nivel de fila v Blanco = Tabla no protegida
Y Y
Identificador de la poltica de comprobacin. Nombre de la poltica de comprobacin. ID de autorizacin bajo el que se ha creado la tabla, vista, alias o apodo.
REMARKS Nota:
1. La columna DEFINER se incluye por razones de compatibilidad con versiones anteriores. Consulte OWNER.
SYSCAT.TABLESPACES
Cada fila representa un espacio de tablas.
Tabla 146. Vista de catlogo SYSCAT.TABLESPACES Posibilidad de nulos
Descripcin Nombre del espacio de tablas. ID de autorizacin bajo el que se ha creado el espacio de tablas. v S = El sistema es el propietario v U = El propietario es un usuario individual
Hora a la que se ha creado el espacio de tablas. Identificador del espacio de tablas. Tipo de espacio de tablas. v D = Espacio gestionado por la base de datos v S = Espacio gestionado por el sistema
DATATYPE
CHAR (1)
Tipo de datos que se pueden almacenar en este espacio de tablas. v A = todos los tipos de datos permanentes; espacio de tablas regular v L = Todos los tipos de datos permanentes; espacio de tablas grande v T = Slo tablas temporales del sistema v U = Slo tablas temporales declaradas
683
SYSCAT.TABLESPACES
Tabla 146. Vista de catlogo SYSCAT.TABLESPACES (continuacin) Posibilidad de nulos
Descripcin 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. Nmero de pginas de tamao PAGESIZE que se van a leer cuando se realice la captacin previa; -1 para el valor AUTOMATIC. Actividad general del controlador y tiempo de latencia y de bsqueda en disco, en milisegundos (promedio para los contenedores de este espacio de tablas). Tiempo para leer una pgina de tamao PAGESIZE en el almacenamiento intermedio (promedio para los contenedores de este espacio de tablas). Tamao (en bytes) de pginas en este espacio de tablas. Nombre del grupo de particiones de base de datos asociado a este espacio de tablas. Identificador de la agrupacin de almacenamientos intermedios utilizada por este espacio de tablas (1 indica la agrupacin de almacenamientos intermedios por omisin). Indica si las tablas de este espacio de tablas se pueden o no recuperar tras una operacin de eliminacin de la tabla. v N = Las tablas no se pueden recuperar v Y = Las tablas se pueden recuperar
PREFETCHSIZE
INTEGER
OVERHEAD
DOUBLE
TRANSFERRATE
DOUBLE
DROP_RECOVERY
CHAR (1)
NGNAME DEFINER2
Nombre del grupo de particiones de base de datos asociado a este espacio de tablas. ID de autorizacin bajo el que se ha creado el espacio de tablas. Comentarios proporcionados por el usuario o nulo.
REMARKS Nota:
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.
SYSCAT.TABOPTIONS
Cada fila representa una opcin que est asociada a una tabla remota.
684
SYSCAT.TABOPTIONS
Tabla 147. Vista de catlogo SYSCAT.TABOPTIONS Posibilidad de nulos
Descripcin Nombre de esquema de una tabla, vista, alias o apodo. Nombre no calificado de una tabla, vista, alias o apodo. Nombre de la opcin de tabla. Valor de la opcin de tabla.
SYSCAT.TBSPACEAUTH
Cada fila representa un usuario o grupo al que se ha otorgado el privilegio USE sobre un determinado espacio de tablas de la base de datos.
Tabla 148. Vista de catlogo SYSCAT.TBSPACEAUTH Posibilidad de nulos
Descripcin El que ha otorgado el privilegio. v S = El sistema es el otorgante v U = El otorgante es un usuario individual El que mantiene el privilegio. v G = Se otorga a un grupo v R = Se otorga a una funcin v U = Se otorga a un usuario individual
GRANTEE GRANTEETYPE
TBSPACE USEAUTH
Nombre del espacio de tablas. Privilegio para crear tablas dentro del espacio de tablas. v G = Se mantiene y se puede otorgar v N = No se mantiene v Y = Se mantiene
SYSCAT.THRESHOLDS
Cada fila representa un umbral.
Tabla 149. Vista de catlogo SYSCAT.THRESHOLDS Posibilidad de nulos
685
SYSCAT.THRESHOLDS
Tabla 149. Vista de catlogo SYSCAT.THRESHOLDS (continuacin) Posibilidad de nulos
Descripcin Origen del umbral. v U = El usuario cre el umbral. v W = Un conjunto de acciones de trabajo cre el umbral.
THRESHOLDCLASS
CHAR (1)
THRESHOLDPREDICATE
VARCHAR (15)
Tipo de umbral. Los valores posibles son: v CONCDBC v CONCWCN v CONCWOC v CONNIDLETIME v DBCONN v ESTSQLCOST v ROWSRET v SCCONN v TEMPSPACE v TOTALTIME
THRESHOLDPREDICATEID DOMAIN
Identificador del predicado de umbral. Dominio del umbral. v DB = Base de datos v SB = Subclase de servicio v SP = Superclase de servicio v WA = Conjunto de acciones de trabajo v WD = Definicin de carga de trabajo
DOMAINID
INTEGER
Identificador del objeto con el que est asociado el umbral. Puede ser una clase de servicio, accin de trabajo o ID exclusivo de carga de trabajo. Si es un umbral de base de datos, este valor es 0. mbito de implantacin para el umbral. v D = Base de datos v P = Particin de base de datos v W = Aparicin de carga de trabajo
ENFORCEMENT
CHAR (1)
QUEUEING
CHAR (1)
v N = El umbral no est en cola v Y = El umbral est en cola Lmite superior especificado por el umbral. Si QUEUEING es Y, el tamao de la cola. -1 en caso contrario.
MAXVALUE QUEUESIZE
BIGINT INTEGER
686
SYSCAT.THRESHOLDS
Tabla 149. Vista de catlogo SYSCAT.THRESHOLDS (continuacin) Posibilidad de nulos
Descripcin Especifica los datos de actividad que deben recopilarse por medio del supervisor de sucesos aplicable. v D = Datos de actividad con detalles v N = Ninguno v V = Datos de actividad con detalles y valores v W = Datos de actividad sin detalles
COLLECTACTPARTITION
CHAR (1)
Especifica el lugar en el que se recopilarn los datos de actividad. v C = Particin de base de datos del coordinador de la actividad v D = Todas las particiones de base de datos
EXECUTION
CHAR (1)
Indica si contina o no la ejecucin despus de que se haya superado el umbral. v C = La ejecucin contina v S = La ejecucin se detiene
ENABLED
CHAR (1)
v N = Se ha inhabilitado este umbral. v Y = Se ha habilitado este umbral. Hora en que se ha creado el umbral. Hora a la que se ha modificado por ltima vez el umbral. S Comentarios proporcionados por el usuario o nulo.
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 150. Vista de catlogo SYSCAT.TRANSFORMS Posibilidad de nulos
Descripcin Identificador del tipo de datos Nombre de esquema del tipo de datos. El nombre de esquema para tipos incorporados es SYSIBM. Nombre no calificado del tipo de datos. Nombre del grupo de transformacin. Identificador de la rutina. Nombre de esquema de la rutina. Nombre no calificado de la rutina.
687
SYSCAT.TRANSFORMS
Tabla 150. Vista de catlogo SYSCAT.TRANSFORMS (continuacin) Posibilidad de nulos
Descripcin Nombre de la instancia de la rutina (puede ser un nombre generado por el sistema). v FROM SQL = La funcin de transformacin transforma un tipo estructurado desde SQL v TO SQL = La funcin de transformacin transforma un tipo estructurado a SQL
FORMAT
CHAR (1)
Formato generado por la transformacin de SQL FROM. v S = Tipo de datos estructurado v 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. Fuente de este grupo de transformaciones. v O = Grupo de transformaciones original (incorporado o definido por el usuario) v R = Grupo de transformaciones redefinido (slo los grupos incorporados se pueden redefinir)
ORIGIN
CHAR (1)
REMARKS
VARCHAR(254)
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 151. Vista de catlogo SYSCAT.TRIGDEP Posibilidad de nulos
688
SYSCAT.TRIGDEP
Tabla 151. Vista de catlogo SYSCAT.TRIGDEP (continuacin) Posibilidad de nulos
Descripcin Tipo de objeto sobre el que hay una dependencia. Los valores posibles son: v A = Alias v B = Activador v F = Instancia de rutina v H = Tabla de jerarqua v K = Paquete v L = Tabla desenlazada v O = Dependencia de privilegios en todas las subtablas o subvistas de una jerarqua de tablas o de vistas v Q = Secuencia v R = Tipo estructurado v S = Tabla de consultas materializadas v T = Tabla (sin tipo) v U = Tabla con tipo v V = Vista (sin tipo) v W = Vista con tipo v X = Extensin de ndice v Z = Objeto XSR v v = Variable global
BSCHEMA BNAME
Nombre de esquema del objeto sobre el que hay una dependencia. Nombre no calificado del objeto sobre el que hay una dependencia. Para rutinas (BTYPE = F), es el nombre especfico. Y Si BTYPE = O, S, T, U, V, W o v, codifica los privilegios sobre la tabla o vista que necesita un activador dependiente; valor nulo en caso contrario.
TABAUTH
SMALLINT
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 152. Vista de catlogo SYSCAT.TRIGGERS Posibilidad de nulos
Descripcin Nombre de esquema del activador. Nombre no calificado del activador. ID de autorizacin bajo el cual se ha creado el activador.
689
SYSCAT.TRIGGERS
Tabla 152. Vista de catlogo SYSCAT.TRIGGERS (continuacin) Posibilidad de nulos
Nombre de esquema de la tabla o vista a la que se aplica este activador. Nombre no calificado de la tabla o vista a la que se aplica este activador. Momento en que se aplican las acciones activadas a la base de datos, en relacin al suceso que ha disparado el activador. v A = El activador se aplica despus del suceso v B = El activador se aplica antes del suceso v I = El activador se aplica en lugar del suceso
TRIGEVENT
CHAR (1)
Suceso que dispara el activador. v D = Operacin de supresin v I = Operacin de insercin v U = Operacin de actualizacin
GRANULARITY
CHAR (1)
VALID
CHAR (1)
v N = El activador no es vlido v Y = El activador es vlido v X = El activador no est operativo y se debe volver a crear
CREATE_TIME QUALIFIER
Hora en la que se ha definido el activador. Utilizada para resolver las funciones y tipos. Valor del esquema por omisin en el momento de la definicin del objeto. Se utiliza para completar cualquier referencia no calificada. Va de acceso de SQL en el momento en que se ha definido el activador. Utilizada para resolver las funciones y tipos. Texto completo de la sentencia CREATE TRIGGER, tal como se ha escrito. Hora a la que se ha vuelto a generar por ltima ves el descriptor de paquete correspondiente al activador. Nombre de esquema de la clasificacin para el activador. Nombre no calificado de la clasificacin para el activador. Nombre de esquema de la clasificacin para clusulas ORDER BY en el activador.
FUNC_PATH
CLOB (2K)
TEXT LAST_REGEN_TIME
CLOB(2M) TIMESTAMP
690
SYSCAT.TRIGGERS
Tabla 152. Vista de catlogo SYSCAT.TRIGGERS (continuacin) Posibilidad de nulos
Descripcin Nombre no calificado de la clasificacin para clusulas ORDER BY en el activador. ID de autorizacin bajo el cual se ha creado el activador.
1. La columna DEFINER se incluye por razones de compatibilidad con versiones anteriores. Consulte OWNER.
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 153. Vista de catlogo SYSCAT.TYPEMAPPINGS Posibilidad de nulos
Descripcin Nombre de la correlacin de tipos (puede ser una correlacin generada por el sistema). Indica si esta correlacin de tipos es una correlacin hacia adelante o hacia atrs. v F = Correlacin de tipos hacia adelante v R = Correlacin de tipos hacia atrs
TYPESCHEMA
VARCHAR (128)
Nombre de esquema del tipo local en una correlacin de tipos de datos; nulo para tipos incorporados. Nombre no calificado del tipo local en una correlacin de tipos de datos. Identificador del tipo de datos Identificador del tipo de fuente. ID de autorizacin bajo el cual se ha creado esta correlacin de tipos. SYSIBM indica una correlacin de tipos incorporada. v S = El sistema es el propietario v U = El propietario es un usuario individual
OWNERTYPE
CHAR (1)
691
SYSCAT.TYPEMAPPINGS
Tabla 153. Vista de catlogo SYSCAT.TYPEMAPPINGS (continuacin) Posibilidad de nulos Y
Descripcin 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. 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. 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. 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. 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. 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. 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. Indica si este tipo de caracteres es o no para datos de bit. Los valores posibles son: v N = Este tipo no es para datos de bits v Y = Este tipo es para datos de bits v Valor nulo = No es un tipo de datos de caracteres o el sistema determina el atributo de datos de bit
SCALE
SMALLINT
LOWER_LEN
INTEGER
UPPER_LEN
INTEGER
LOWER_SCALE
SMALLINT
UPPER_SCALE
SMALLINT
S_OPR_P
CHAR (2)
BIT_DATA
CHAR (1)
VARCHAR (128) VARCHAR (128) VARCHAR (30) VARCHAR (18) VARCHAR (128) VARCHAR (128)
Y Y Y Y Y
Protocolo de acceso a datos (derivador) al que se aplica esta correlacin. Nombre en maysculas del servidor. Tipo de servidor. Versin de servidor. Nombre de esquema del tipo de datos de la fuente de datos. Nombre no calificado del tipo de datos de fuente de datos.
692
SYSCAT.TYPEMAPPINGS
Tabla 153. Vista de catlogo SYSCAT.TYPEMAPPINGS (continuacin) Posibilidad de nulos Y
Descripcin Indica si este tipo remoto es un tipo incorporado del sistema o un tipo diferenciado. v S = Tipo incorporado del sistema v T = Tipo diferenciado
REMOTE_LOWER_LEN
INTEGER
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. 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. Nmero mnimo de dgitos de la parta fraccional de un valor decimal remoto en esta correlacin, o el valor nulo. Nmero mximo de dgitos de la parta fraccional de un valor decimal remoto en esta correlacin, o el valor nulo. 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. Indica si este tipo de caracteres remoto es o no para datos de bit. Los valores posibles son: v N = Este tipo no es para datos de bits v Y = Este tipo es para datos de bits v Valor nulo = No es un tipo de datos de caracteres o el sistema determina el atributo de datos de bit
REMOTE_UPPER_LEN
INTEGER
REMOTE_LOWER_SCALE
SMALLINT
REMOTE_UPPER_SCALE
SMALLINT
REMOTE_S_OPR_P
CHAR (2)
REMOTE_BIT_DATA
CHAR (1)
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. Hora en que se ha creado esta correlacin. ID de autorizacin bajo el cual se ha creado esta correlacin de tipos. SYSIBM indica una correlacin de tipos incorporada.
CREATE_TIME DEFINER
1
693
SYSCAT.TYPEMAPPINGS
Tabla 153. Vista de catlogo SYSCAT.TYPEMAPPINGS (continuacin) Posibilidad de nulos Y
1. La columna DEFINER se incluye por razones de compatibilidad con versiones anteriores. Consulte OWNER.
SYSCAT.USEROPTIONS
Cada fila representa un valor de opcin de usuario especfico del servidor.
Tabla 154. Vista de catlogo SYSCAT.USEROPTIONS Posibilidad de nulos
Tipo de datos VARCHAR (128) CHAR (1) VARCHAR (128) VARCHAR (128) VARCHAR(2048)
Descripcin ID de autorizacin local, en maysculas. v U = Se otorga a un usuario individual Nombre del servidor en el que se ha definido el usuario. Nombre de la opcin de usuario. Valor de la opcin de usuario.
SYSCAT.VARIABLEAUTH
Cada fila representa un usuario, un grupo o una funcin al que un otorgante de una variable global de la base de datos ha otorgado uno o ms privilegios.
Tabla 155. Vista de catlogo SYSCAT.VARIABLEAUTH Posibilidad de nulos
Descripcin El que ha otorgado el privilegio. v S = El sistema es el otorgante v U = El otorgante es un usuario individual El que mantiene el privilegio. v G = Se otorga a un grupo v R = Se otorga a una funcin v U = Se otorga a un usuario individual
GRANTEE GRANTEETYPE
Nombre de esquema de la variable global. Nombre no calificado de la variable global. Identificador de la variable global.
694
SYSCAT.VARIABLEAUTH
Tabla 155. Vista de catlogo SYSCAT.VARIABLEAUTH (continuacin) Posibilidad de nulos
Descripcin Privilegio para leer la variable global. v G = Se mantiene y se puede otorgar v N = No se mantiene v Y = Se mantiene
WRITEAUTH
CHAR (1)
Privilegio para escribir la variable global. v G = Se mantiene y se puede otorgar v N = No se mantiene v Y = Se mantiene
SYSCAT.VARIABLEDEP
Cada fila representa una dependencia de una variable global sobre algn otro objeto. La variable global depende del objeto de tipo BTYPE de nombre BNAME, de modo que un cambio en el objeto afecta a la variable global.
Tabla 156. Vista de catlogo SYSCAT.VARIABLEDEP Posibilidad de nulos
Descripcin Nombre de esquema de la variable global que tiene dependencias sobre otro objeto. Nombre no calificado de la variable global que tiene dependencias sobre otro objeto. Tipo de objeto sobre el que hay una dependencia. Los valores posibles son: v A = Alias v F = Instancia de rutina v H = Tabla de jerarqua v N = Apodo v O = Dependencia de privilegios en todas las subtablas o subvistas de una jerarqua de tablas o de vistas v S = Tabla de consultas materializadas v T = Tabla (sin tipo) v U = Tabla con tipo v V = Vista (sin tipo) v W = Vista con tipo v v = Variable global
BSCHEMA BNAME
Nombre de esquema del objeto sobre el que hay una dependencia. Nombre no calificado del objeto sobre el que hay una dependencia. Para rutinas (BTYPE = F), es el nombre especfico.
695
SYSCAT.VARIABLEDEP
Tabla 156. Vista de catlogo SYSCAT.VARIABLEDEP (continuacin) Posibilidad de nulos Y
Descripcin Si BTYPE = O, S, T, U, V, W o v, codifica los privilegios sobre la tabla o vista que necesita la variable global dependiente; valor nulo en caso contrario.
SYSCAT.VARIABLES
Cada fila representa una variable global.
Tabla 157. Vista de catlogo SYSCAT.VARIABLES Posibilidad de nulos
Nombre de columna VARSCHEMA VARNAME VARID OWNER OWNERTYPE CREATE_TIME LAST_REGEN_TIME TYPESCHEMA
Tipo de datos VARCHAR (128) VARCHAR (128) INTEGER VARCHAR (128) CHAR (1) TIMESTAMP TIMESTAMP VARCHAR (128)
Descripcin Nombre de esquema de la variable global. Nombre no calificado de la variable global. Identificador de la variable global. ID de autorizacin del propietario de la variable global. v U = El propietario es un usuario individual Hora a la que se ha creado la variable global. Hora a la que se ha vuelto a generar por ltima vez la expresin por omisin. Nombre de esquema del tipo de datos. El nombre de esquema para tipos incorporados es SYSIBM. Nombre no calificado del tipo de datos. Longitud mxima de la variable global. Escala de la variable global. Pgina de cdigos de la variable global. Nombre de esquema de la clasificacin para la variable. Nombre no calificado de la clasificacin para la variable. Nombre de esquema de la clasificacin para clusulas ORDER BY en la variable. Nombre no calificado de la clasificacin para clusulas ORDER BY en la variable. mbito de la variable global. v S = Sesin
TYPENAME LENGTH SCALE CODEPAGE COLLATIONSCHEMA COLLATIONNAME COLLATIONSCHEMA_ ORDERBY COLLATIONNAME_ORDERBY SCOPE DEFAULT
VARCHAR (128) INTEGER SMALLINT SMALLINT VARCHAR (128) VARCHAR (128) VARCHAR (128) VARCHAR (128) CHAR (1) CLOB (64K) Y
Expresin utilizada para calcular el valor inicial de la variable global la primera vez que se hace referencia a la misma.
696
SYSCAT.VARIABLES
Tabla 157. Vista de catlogo SYSCAT.VARIABLES (continuacin) Posibilidad de nulos Y Y Y
Descripcin Valor del esquema por omisin en el momento de la definicin de la variable. Va de acceso de SQL en el momento en que se defini la variable. Comentarios proporcionados por el usuario o nulo.
SYSCAT.VIEWS
Cada fila representa una vista.
Tabla 158. Vista de catlogo SYSCAT.VIEWS Posibilidad de nulos
Tipo de datos VARCHAR (128) VARCHAR (128) VARCHAR (128) CHAR (1)
Descripcin Nombre de esquema de la vista. Nombre no calificado de la vista. ID de autorizacin bajo el cual se ha creado la vista. v S = El sistema es el propietario v U = El propietario es un usuario individual
SEQNO VIEWCHECK
Siempre 1. Tipo de comprobacin de vista. v C = Opcin de comprobacin en cascada v L = Opcin de comprobacin local v N = Sin opcin de comprobacin
READONLY
CHAR (1)
v N = Pueden actualizar la vista los usuarios con la autorizacin adecuada v Y = La vista es de slo lectura debido a su definicin
VALID
CHAR (1)
v X = La definicin de la vista o tabla de consultas materializadas no est operativa y se debe volver a crear v 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.
697
SYSCAT.VIEWS
Tabla 158. Vista de catlogo SYSCAT.VIEWS (continuacin) Posibilidad de nulos
Descripcin 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. Texto completo de la sentencia CREATE VIEW, tal como se ha escrito. ID de autorizacin bajo el cual se ha creado la vista.
1. La columna DEFINER se incluye por razones de compatibilidad con versiones anteriores. Consulte OWNER.
SYSCAT.WORKACTIONS
Cada fila representa una accin de trabajo definida para un conjunto de acciones de trabajo.
Tabla 159. Vista de catlogo SYSCAT.WORKACTIONS Posibilidad de nulos
Nombre del conjunto de acciones de trabajo. Identificador del conjunto de acciones de trabajo al que pertenece esta accin de trabajo. Esta columna hace referencia a la columna ACTIONSETID en la vista SYSCAT.WORKACTIONSETS.
WORKCLASSNAME WORKCLASSID
Nombre de la clase de trabajo. Identificador de la clase de trabajo. Esta columna hace referencia a la columna WORKCLASSID en la vista SYSCAT.WORKCLASSES. Hora a la que se ha creado la accin de trabajo. Hora a la que se modific por ltima vez la accin de trabajo. v N = Se ha inhabilitado esta accin de trabajo. v Y = Se ha habilitado esta accin de trabajo.
698
SYSCAT.WORKACTIONS
Tabla 159. Vista de catlogo SYSCAT.WORKACTIONS (continuacin) Posibilidad de nulos
Descripcin El tipo de accin que se va a efectuar ene cada actividad de DB2 que coincide con los atributos de clase de trabajo especificados en la clase de trabajo bajo el mbito coincidente. Para esta descripcin de columna, OBJECTTYPE hace referencia a la columna OBJECTTYPE de SYSCAT.WORKACTIONSETS. v B - Recopilar datos de actividad agregada bsica. Este tipo de accin slo puede especificarse si OBJECTTYPE es b (clase de servicio). v C - Permitir la ejecucin de cualquier actividad de DB2 que est bajo la clase de trabajo con la que esta accin de trabajo est asociada para ejecutarse y aumentar el contador para la clase de trabajo. v D - Recopilar datos de actividad con detalles en la particin de la base de datos del coordinador de la actividad. v E - Recopilar datos de actividad agregados ampliados. Este tipo de accin slo puede especificarse si OBJECTTYPE es b (clase de servicio). v M - Correlacionar con una subclase de servicio. Este tipo de accin slo puede especificarse si OBJECTTYPE es b (clase de servicio). v P - Impedir la ejecucin de cualquier actividad de DB2 que est bajo la clase de trabajo con la que est asociada esta accin de trabajo. v T - La accin estar en forma de umbral. Este tipo de accin slo puede especificarse si OBJECTTYPE est en blanco (base de datos). v U - Correlacionar todas las actividades que tengan un nivel de anidamiento de cero y todas las actividades anidadas bajo esta actividad con una subclase de servicio. Este tipo de accin slo puede especificarse si OBJECTTYPE es b (clase de servicio).
699
SYSCAT.WORKACTIONS
Tabla 159. Vista de catlogo SYSCAT.WORKACTIONS (continuacin) Posibilidad de nulos
Tipo de datos
Descripcin v V - Recopilar datos de actividad con detalles y valores en la particin de la base de datos del coordinador de la actividad. v W - Recopilar datos de actividad sin detalles en la particin de la base de datos del coordinador de la actividad. v X - Recopilar datos de actividad con detalles en la particin de la base de datos del coordinador de la actividad y recopilar datos de actividad en todas las particiones de la base de datos. v Y - Recopilar datos de actividad con detalles y valores en la particin de la base de datos del coordinador de la actividad y recopilar datos de actividad en todas las particiones de la base de datos. v Z - Recopilar datos de actividad sin detalles en todas las particiones de la base de datos.
REFOBJECTID
INTEGER
Si ACTIONTYPE es M (correlacin) o N (correlacin anidada), este valor se establece en el ID de la subclase de servicio con la que se correlaciona la actividad de DB2. Si ACTIONTYPE es T (umbral), este valor se establece en el ID del umbral a utilizar. Para todas las dems acciones, este valor es NULL. Si ACTIONTYPE es M o N, este valor se establece en SERVICE CLASS; si ACTIONTYPE es T, este valor es THRESHOLD; en caso contrario es un valor nulo.
REFOBJECTTYPE
VARCHAR (30)
SYSCAT.WORKACTIONSETS
Cada fila representa un conjunto de acciones de trabajo.
Tabla 160. Vista de catlogo SYSCAT.WORKACTIONSETS Posibilidad de nulos
Descripcin Nombre del conjunto de acciones de trabajo. Identificador del conjunto de acciones de trabajo.
700
SYSCAT.WORKACTIONSETS
Tabla 160. Vista de catlogo SYSCAT.WORKACTIONSETS (continuacin) Posibilidad de nulos
Descripcin El identificador del conjunto de clases de trabajo que ha de correlacionarse con el objeto especificado por medio de OBJECTID. Esta columna hace referencia a WORKCLASSSETID en la vista SYSCAT.WORKCLASSSETS. Hora a la que se ha creado el conjunto de acciones de trabajo. Hora a la que se modific por ltima vez el conjunto de acciones de trabajo. v N = Se ha inhabilitado este conjunto de acciones de trabajo. v Y = Se ha habilitado este conjunto de acciones de trabajo.
OBJECTTYPE
CHAR (1)
v b = Superclase de servicio v Blanco = Base de datos Y Nombre de la clase de servicio. El identificador del objeto al que est correlacionado el conjunto de clases de trabajo (especificado mediante WORKCLASSSETID). Si OBJECTTYPE es un blanco, OBJECTID es -1. Si OBJECTTYPE es b, OBJECTID es el ID de la superclase de servicio. Y Comentarios proporcionados por el usuario o nulo.
OBJECTNAME OBJECTID
REMARKS
VARCHAR(254)
SYSCAT.WORKCLASSES
Cada fila representa una clase de trabajo definida para un conjunto de clases de trabajo.
Tabla 161. Vista de catlogo SYSCAT.WORKCLASSES Posibilidad de nulos
Nombre del conjunto de clases de trabajo. Identificador de la clase de trabajo. Identificador del conjunto de clases de trabajo al que pertenece esta clase de trabajo. Esta columna hace referencia a la columna WORKCLASSSETID en la vista SYSCAT.WORKCLASSSETS. Hora a la que se ha creado la clase de trabajo.
CREATE_TIME
TIMESTAMP
701
SYSCAT.WORKCLASSES
Tabla 161. Vista de catlogo SYSCAT.WORKCLASSES (continuacin) Posibilidad de nulos
Descripcin Hora a la que se modific por ltima vez la clase de trabajo. El tipo de actividad de DB2. v 1 = ALL v 2 = READ v 3 = WRITE v 4 = CALL v 5 = DML v 6 = DDL v 7 = LOAD
RANGEUNITS
CHAR (1)
Las unidades a utilizar para el rango superior y el inferior. v C = Cardinalidad v T = Activaciones de temporizador v Blanco = No se aplica
FROMVALUE
DOUBLE
El valor inferior del rango en las unidades que especifica RANGEUNITS. Valor nulo cuando RANGEUNITS es un blanco. El valor superior del rango en las unidades que especifica RANGEUNITS. Valor nulo cuando RANGEUNITS es un blanco. El valor -1 se utiliza para indicar que no hay vinculacin superior. Nombre de esquema de los procedimientos que se llaman desde la sentencia CALL. Valor nulo cuando WORKTYPE no es 4 (CALL) o 1 (ALL). Identifica exclusivamente el orden de evaluacin para seleccionar una clase de trabajo en un conjunto de clases de trabajo.
TOVALUE
DOUBLE
ROUTINESCHEMA
VARCHAR (128)
EVALUATIONORDER
SMALLINT
SYSCAT.WORKCLASSSETS
Cada fila representa un conjunto de clases de trabajo.
Tabla 162. Vista de catlogo SYSCAT.WORKCLASSSETS Posibilidad de nulos
Descripcin Nombre del conjunto de clases de trabajo. Identificador del conjunto de clases de trabajo. Hora a la que se ha creado el conjunto de clases de trabajo. Hora a la que se modific por ltima vez el conjunto de clases de trabajo.
702
SYSCAT.WORKCLASSSETS
Tabla 162. Vista de catlogo SYSCAT.WORKCLASSSETS (continuacin) Posibilidad de nulos Y
SYSCAT.WORKLOADAUTH
Cada fila representa un usuario, grupo o funcin al que se ha otorgado el privilegio USAGE sobre una carga de trabajo.
Tabla 163. Vista de catlogo SYSCAT.WORKLOADAUTH Posibilidad de nulos
Tipo de datos INTEGER VARCHAR (128) VARCHAR (128) CHAR (1) VARCHAR (128) CHAR (1)
Descripcin Identificador para la carga de trabajo. Nombre de la carga de trabajo. El que ha otorgado el privilegio. v U = Se otorga a un usuario individual El que mantiene el privilegio. v G = Se otorga a un grupo v R = Se otorga a una funcin v U = Se otorga a un usuario individual
USAGEAUTH
CHAR (1)
SYSCAT.WORKLOADCONNATTR
Cada fila representa un atributo de conexin en la definicin de una carga de trabajo.
Tabla 164. Vista de catlogo SYSCAT.WORKLOADCONNATTR Posibilidad de nulos
703
SYSCAT.WORKLOADCONNATTR
Tabla 164. Vista de catlogo SYSCAT.WORKLOADCONNATTR (continuacin) Posibilidad de nulos
Descripcin Tipo del atributo de conexin. v 1 = APPLNAME v 2 = SYSTEM_USER v 3 = SESSION_USER v 4 = SESSION_USER GROUP v 5 = SESSION_USER ROLE v 6 = CURRENT CLIENT_USERID v 7 = CURRENT CLIENT_APPLNAME v 8 = CURRENT CLIENT_WRKSTNNAME v 9 = CURRENT CLIENT_ACCTNG
CONNATTRVALUE
VARCHAR (1000)
SYSCAT.WORKLOADS
Cada fila representa una carga de trabajo.
Tabla 165. Vista de catlogo SYSCAT.WORKLOADS Posibilidad de nulos
Tipo de datos INTEGER VARCHAR (128) SMALLINT TIMESTAMP TIMESTAMP CHAR (1)
Descripcin Identificador para la carga de trabajo. Nombre de la carga de trabajo. Orden de evaluacin utilizado para seleccionar una carga de trabajo. Hora a la que se ha creado la carga de trabajo. Hora a la que se ha modificado por ltima vez la carga de trabajo. v N = Se ha inhabilitado esta carga de trabajo. v Y = Se ha habilitado esta carga de trabajo.
ALLOWACCESS
CHAR (1)
v N = Una UOW asociada a esta carga de trabajo se rechazar. v Y = Una unidad de trabajo (UOW) asociada a esta carga de trabajo podr acceder a la base de datos.
SERVICECLASSNAME
VARCHAR (128)
Nombre de la subclase de servicio a la que se asigna una unidad de trabajo (asociada a esta carga de trabajo). Y Nombre de la superclase de servicio a la que se asigna una unidad de trabajo (asociada a esta carga de trabajo).
PARENTSERVICECLASSNAME
VARCHAR (128)
704
SYSCAT.WORKLOADS
Tabla 165. Vista de catlogo SYSCAT.WORKLOADS (continuacin) Posibilidad de nulos
Descripcin Especifica los datos de actividad agregados que deben capturarse para la carga de trabajo por medio del supervisor de sucesos aplicable. v N = Ninguno Especifica los datos de actividad que deben recopilarse por medio del supervisor de sucesos aplicable. v D = Datos de actividad con detalles v N = Ninguno v V = Datos de actividad con detalles y valuesApplies cuando la columna COLLECT se establece en C v W = Datos de actividad sin detalles
COLLECTACTDATA
CHAR (1)
COLLECTACTPARTITION
CHAR (1)
Especifica el lugar en el que se recopilarn los datos de actividad. v C = Particin de base de datos del coordinador de la actividad v D = Todas las particiones de base de datos
EXTERNALNAME REMARKS
Y Y
SYSCAT.WRAPOPTIONS
Cada fila representa una opcin especfica del derivador.
Tabla 166. Vista de catlogo SYSCAT.WRAPOPTIONS Posibilidad de nulos
Descripcin Nombre del derivador. Nombre de la opcin del derivador. Valor de la opcin del derivador.
SYSCAT.WRAPPERS
Cada fila representa un derivador registrado.
Tabla 167. Vista de catlogo SYSCAT.WRAPPERS Posibilidad de nulos
705
SYSCAT.WRAPPERS
Tabla 167. Vista de catlogo SYSCAT.WRAPPERS (continuacin) Posibilidad de nulos
WRAPVERSION LIBRARY
Versin del derivador. Nombre del archivo que contiene el cdigo utilizado para comunicarse con las fuentes de datos asociadas a este derivador. Y Comentarios proporcionados por el usuario o nulo.
REMARKS
VARCHAR(254)
SYSCAT.XDBMAPGRAPHS
Cada fila representa un grfico de esquema para un mapa XDB (objeto XSR).
Tabla 168. Vista de catlogo SYSCAT.XDBMAPGRAPHS Posibilidad de nulos
Descripcin Identificador exclusivo generado para un objeto XSR. Nombre de esquema del objeto XSR. Nombre no calificado del objeto XSR. Identificador del grfico de esquema, que es exclusivo dentro de un identificador de mapa XDB.
NAMESPACE ROOTELEMENT
VARCHAR(1001) VARCHAR(1001)
Y Y
Identificador de serie para el URI de espacio de nombres del elemento raz. Identificador de serie para el nombre del elemento raz.
SYSCAT.XDBMAPSHREDTREES
Cada fila representa un rbol de trocear para un determinado grfico de esquema.
Tabla 169. Vista de catlogo SYSCAT.XDBMAPSHREDTREES Posibilidad de nulos
Descripcin Identificador exclusivo generado para un objeto XSR. Nombre de esquema del objeto XSR. Nombre no calificado del objeto XSR. Identificador del grfico de esquema, que es exclusivo dentro de un identificador de mapa XDB.
706
SYSCAT.XDBMAPSHREDTREES
Tabla 169. Vista de catlogo SYSCAT.XDBMAPSHREDTREES (continuacin) Posibilidad de nulos
Descripcin Identificador del rbol de trocear, que es exclusivo dentro de un identificador de mapa XDB.
MAPPINGDESCRIPTION
CLOB(1M)
SYSCAT.XSROBJECTAUTH
Cada fila representa un usuario o un grupo al que se ha otorgado el privilegio USAGE sobre un determinado objeto XSR.
Tabla 170. Vista de catlogo SYSCAT.XSROBJECTAUTH Posibilidad de nulos
Descripcin El que ha otorgado el privilegio. v S = El sistema es el otorgante v U = El otorgante es un usuario individual El que mantiene el privilegio. v G = Se otorga a un grupo v R = Se otorga a una funcin v U = Se otorga a un usuario individual
GRANTEE GRANTEETYPE
OBJECTID USAGEAUTH
Identificador del objeto XSR. Privilegio para utilizar el objeto XSR y sus componentes. v N = No se mantiene v Y = Se mantiene
SYSCAT.XSROBJECTCOMPONENTS
Cada fila representa un componente de objeto XSR.
Tabla 171. Vista de catlogo SYSCAT.XSROBJECTCOMPONENTS Posibilidad de nulos
Descripcin Identificador exclusivo generado para un objeto XSR. Nombre de esquema del objeto XSR. Nombre no calificado del objeto XSR. Identificador exclusivo generado para un componente del objeto XSR.
707
SYSCAT.XSROBJECTCOMPONENTS
Tabla 171. Vista de catlogo SYSCAT.XSROBJECTCOMPONENTS (continuacin) Posibilidad de nulos Y
Descripcin Identificador de serie de la ubicacin del esquema. Representacin externa del componente. Hora a la que se ha registrado el componente de objeto XSR. Estado de registro v C = Completo v I = Incompleto
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 172. Vista de catlogo SYSCAT.XSROBJECTDEP Posibilidad de nulos
Descripcin Identificador exclusivo generado para un objeto XSR. Nombre de esquema del objeto XSR. Nombre no calificado del objeto XSR. Tipo de objeto sobre el que hay una dependencia. Los valores posibles son: v A = Alias v B = Activador v F = Instancia de rutina v H = Tabla de jerarqua v K = Paquete v L = Tabla desenlazada v O = Dependencia de privilegios en todas las subtablas o subvistas de una jerarqua de tablas o de vistas v Q = Secuencia v R = Tipo estructurado v S = Tabla de consultas materializadas v T = Tabla (sin tipo) v U = Tabla con tipo v V = Vista (sin tipo) v W = Vista con tipo v X = Extensin de ndice v Z = Objeto XSR v v = Variable global
708
SYSCAT.XSROBJECTDEP
Tabla 172. Vista de catlogo SYSCAT.XSROBJECTDEP (continuacin) Posibilidad de nulos
Descripcin Nombre de esquema del objeto sobre el que hay una dependencia. Nombre no calificado del objeto sobre el que hay una dependencia. Para rutinas (BTYPE = F), es el nombre especfico.
TABAUTH
SMALLINT
Si BTYPE = O, S, T, U, V, W o v, codifica los privilegios sobre la tabla o vista que necesita un activador dependiente; valor nulo en caso contrario.
SYSCAT.XSROBJECTHIERARCHIES
Cada fila representa la relacin jerrquica entre un objeto XSR y sus componentes.
Tabla 173. Vista de catlogo SYSCAT.XSROBJECTHIERARCHIES Posibilidad de nulos
Descripcin Identificador de un objeto XSR. Identificador de un componente de XSR. Tipo de jerarqua. v D = Documento v N = Espacio de nombres de nivel superior v P = Documento primario
TARGETNAMESPACE SCHEMALOCATION
VARCHAR(1001) VARCHAR(1001)
Y Y
Identificador de serie del espacio de nombres de destino del componente. Identificador de serie de la ubicacin del esquema del componente.
SYSCAT.XSROBJECTS
Cada fila representa un objeto de depsito del esquema XML.
Tabla 174. Vista de catlogo SYSCAT.XSROBJECTS Posibilidad de nulos
Descripcin Identificador exclusivo generado para un objeto XSR. Nombre de esquema del objeto XSR. Nombre no calificado del objeto XSR.
Y Y
Identificador de serie del espacio de nombres de destino o identificador pblico. Identificador de serie de la ubicacin del esquema o identificador del sistema.
Apndice D. Vistas de catlogo
709
SYSCAT.XSROBJECTS
Tabla 174. Vista de catlogo SYSCAT.XSROBJECTS (continuacin) Posibilidad de nulos Y
Descripcin Documento de metadatos. Tipo de objeto XSR. v D = DTD v E = Entidad externa v S = Esquema XML
OWNER OWNERTYPE
ID de autorizacin bajo el que se ha registrado el objeto XSR. v S = El sistema es el propietario v U = El propietario es un usuario individual
Hora a la que se ha registrado el objeto. Hora a la que se ha actualizado (sustituido) por ltima vez el objeto. Estado de registro v C = Completo v I = Incompleto v R = Sustituir v T = Temporal
DECOMPOSITION
CHAR (1)
Indica si la descomposicin (troceamiento) est o no habilitada sobre este objeto XSR. v N = No habilitada v X = No operativa v Y = Habilitada
REMARKS
VARCHAR(254)
SYSIBM.SYSDUMMY1
Contiene una fila. Esta vista est disponible para las aplicaciones que necesitan compatibilidad con DB2 Universal Database para z/OS.
Tabla 175. Vista de catlogo SYSIBM.SYSDUMMY1 Posibilidad de nulos
Descripcin Y
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.
710
SYSSTAT.COLDIST
Tabla 176. Vista de catlogo SYSSTAT.COLDIST Posibilidad de nulos Actualizable
Tipo de datos VARCHAR (128) VARCHAR (128) VARCHAR (128) CHAR (1)
Descripcin Nombre de esquema de la tabla a la que se aplican las estadsticas. Nombre no calificado de la tabla a la que se aplican las estadsticas. Nombre de la columna a la que se aplican las estadsticas. v F = Valor de frecuencia v Q = Valor cuantil 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.
SEQNO
SMALLINT
COLVALUE1 VALCOUNT
VARCHAR(254) BIGINT
Y Y
El valor de los datos como un literal de caracteres o un valor nulo. Si TYPE = F, VALCOUNT es el nmero de apariciones de COLVALUE en la columna. Si TYPE = Q, VALCOUNT es el nmero de filas cuyo valor es menor o igual que COLVALUE. Si TYPE = Q, esta columna registra el nmero de valores diferenciados que son menores o iguales que COLVALUE (nulo si no est disponible).
DISTCOUNT2
BIGINT
Nota: 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.
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 177. Vista de catlogo SYSSTAT.COLGROUPDIST Posibilidad de nulos Actualizable
Descripcin Identificador del grupo de columnas. v F = Valor de frecuencia v Q = Valor cuantil Nmero ordinal de la columna del grupo de columnas.
ORDINAL
SMALLINT
711
SYSSTAT.COLGROUPDIST
Tabla 177. Vista de catlogo SYSSTAT.COLGROUPDIST (continuacin) Posibilidad de nulos Actualizable
Descripcin 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)
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 178. Vista de catlogo SYSSTAT.COLGROUPDISTCOUNTS Posibilidad de nulos Actualizable
Descripcin Identificador del grupo de columnas. v F = Valor de frecuencia v Q = Valor cuantil El nmero de secuencia n que representa el valor n de TYPE.
SEQNO VALCOUNT
SMALLINT BIGINT Y
Si TYPE = F, VALCOUNT es el nmero de apariciones 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. 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).
DISTCOUNT
BIGINT
SYSSTAT.COLGROUPS
Cada fila representa un grupo de columnas y estadsticas que se aplican a todo el grupo de columnas.
Tabla 179. Vista de catlogo SYSSTAT.COLGROUPS Posibilidad de nulos Actualizable
712
SYSSTAT.COLGROUPS
Tabla 179. Vista de catlogo SYSSTAT.COLGROUPS (continuacin) Posibilidad de nulos Actualizable
Descripcin Nombre no calificado del grupo de columnas. Identificador del grupo de columnas.
Cardinalidad del grupo de columnas. Nmero de valores frecuentes recopilados para el grupo de columnas. Nmero de valores cuantiles recopilados para el grupo de columnas.
SYSSTAT.COLUMNS
Cada fila representa una columna definida para una tabla, vista o apodo.
Tabla 180. Vista de catlogo SYSSTAT.COLUMNS Posibilidad de nulos Actualizable
Descripcin Nombre de esquema de la tabla, vista o apodo que contiene la columna. Nombre no calificado de la tabla, vista o apodo que contiene la columna. Nombre de la columna.
Nmero de valores diferenciados de la columna; -1 se no se recopilan estadsticas; -2 para columnas heredadas y columnas de tablas de jerarqua. 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. 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. 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. Nmero de valores nulos de la columna; -1 si no se recopilan estadsticas. Nmero medio de subelementos de la columna. Slo se aplica a columnas de tipo serie de caracteres.
Apndice D. Vistas de catlogo
HIGH2KEY1
VARCHAR(254)
LOW2KEY1
VARCHAR(254)
AVGCOLLEN
INTEGER
NUMNULLS SUB_COUNT
BIGINT SMALLINT
Y Y
713
SYSSTAT.COLUMNS
Tabla 180. Vista de catlogo SYSSTAT.COLUMNS (continuacin) Posibilidad de nulos Actualizable Y
Descripcin Longitud media de los delimitadores que separan cada subelemento de la columna. Slo se aplica a columnas de tipo serie de caracteres. Promedio del nmero de caracteres (basndose en la clasificacin en vigor para la columna) necesarios para la columna; -1 si es un campo tipo long o LOB o no se han recopilado estadsticas; -2 par columnas heredadas y columnas de tablas jerrquicas.
AVGCOLLENCHAR
INTEGER
Nota: 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.
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 181. Vista de catlogo SYSSTAT.INDEXES Posibilidad de nulos Actualizable
Nombre de columna INDSCHEMA INDNAME TABSCHEMA TABNAME COLNAMES NLEAF NLEVELS FIRSTKEYCARD
Tipo de datos VARCHAR (128) VARCHAR (128) VARCHAR (128) VARCHAR (128) VARCHAR(640) BIGINT SMALLINT BIGINT
Descripcin Nombre de esquema del ndice. Nombre no calificado del ndice. Nombre de esquema de la tabla o apodo en el que se define el ndice. Nombre no calificado de la tabla o apodo en el que se define el ndice. Esta columna ya no se utiliza y se eliminar en el prximo release.
Y Y Y
Nmero de pginas de ndice; -1 si no se recopilan estadsticas. Nmero de niveles de ndice; -1 si no se recopilan estadsticas. Nmero de valores de primera clave diferenciada; -1 si no se recopilan estadsticas. Nmero de claves diferenciadas que utilizan las dos primeras columnas del ndice; -1 si no se recopilan estadsticas o si no se aplica.
FIRST2KEYCARD
BIGINT
714
SYSSTAT.INDEXES
Tabla 181. Vista de catlogo SYSSTAT.INDEXES (continuacin) Posibilidad de nulos Actualizable Y
Descripcin Nmero de claves diferenciadas que utilizan las tres primeras columnas del ndice; -1 si no se recopilan estadsticas o si no se aplica. Nmero de claves diferenciadas que utilizan las cuatro primeras columnas del ndice; -1 si no se recopilan estadsticas o si no se aplica. Nmero de valores de clave completa diferenciada; -1 si no se recopilan estadsticas. 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). Mejor medicin del grado de clster; -1 si no se recopilan estadsticas o si el ndice se define sobre un apodo. 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. 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. 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. Nmero total de identificadores de fila (RID) o identificadores de bloque (BID) del ndice; -1 si no se conoce. 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.
FIRST4KEYCARD
BIGINT
FULLKEYCARD
BIGINT
CLUSTERRATIO4
SMALLINT
CLUSTERFACTOR4
DOUBLE
SEQUENTIAL_PAGES
BIGINT
DENSITY
INTEGER
PAGE_FETCH_PAIRS4
VARCHAR(520)
NUMRIDS4
BIGINT
NUMRIDS_DELETED4
BIGINT
715
SYSSTAT.INDEXES
Tabla 181. Vista de catlogo SYSSTAT.INDEXES (continuacin) Posibilidad de nulos Actualizable Y
Descripcin Nmero total de pginas de hoja del ndice que tienen todos los identificadores de filas (o identificadores de bloqueo) marcados como suprimidos. Promedio de pginas de la tabla aleatorias entre los accesos a pginas secuenciales al captar utilizando el ndice; -1 si no se conoce. Promedio de pginas de la tabla aleatorias entre los accesos a pginas secuenciales; -1 si no se conoce. 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. Espacio entre las secuencias de pginas 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. 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. Promedio de pginas de la tabla 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. Nivel de clster de los datos dentro de 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). Mejor medicin del nivel de clster 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.
AVERAGE_RANDOM_ FETCH_PAGES1,2,4
DOUBLE
DOUBLE
DOUBLE
AVERAGE_SEQUENCE_ FETCH_GAP1,2,4
DOUBLE
AVERAGE_SEQUENCE_ PAGES2
DOUBLE
AVERAGE_SEQUENCE_ FETCH_PAGES1,2,4
DOUBLE
AVGPARTITION_ CLUSTERRATIO3,4
SMALLINT
AVGPARTITION_ CLUSTERFACTOR3,4
DOUBLE
716
SYSSTAT.INDEXES
Tabla 181. Vista de catlogo SYSSTAT.INDEXES (continuacin) Posibilidad de nulos Actualizable Y
Descripcin Una lista de pares de enteros en formato 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. Una medicin estadstica del clster 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. 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.
DATAPARTITION_ CLUSTERFACTOR
DOUBLE
INDCARD
BIGINT
Nota: 1. Cuando se utilizan espacios de tablas 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.
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 182. Vista de catlogo SYSSTAT.ROUTINES Posibilidad de nulos Actualizable
717
SYSSTAT.ROUTINES
Tabla 182. Vista de catlogo SYSSTAT.ROUTINES (continuacin) Posibilidad de nulos Actualizable
SPECIFICNAME
VARCHAR (128)
Nombre de la instancia de la rutina (puede ser un nombre generado por el sistema). Y Nmero estimado de entradas/salidas (I/O) por invocacin; 0 es el valor por omisin; -1 si no se conoce. Nmero estimado de instrucciones por invocacin; 450 es el valor por omisin; -1 si no se conoce. Nmero estimado de I/O por byte de argumento de entrada; 0 es el valor por omisin; -1 si no se conoce. Nmero estimado de instrucciones por byte de argumento de entrada; 0 es el valor por omisin; -1 si no se conoce. 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. 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. 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. Cardinalidad prevista de una funcin de tabla; -1 si no se conoce o si la rutina no es una funcin de tabla. Para predicados definidos por el usuario; -1 si no hay ningn predicado definido por el usuario.
IOS_PER_INVOC
DOUBLE
INSTS_PER_INVOC
DOUBLE
IOS_PER_ARGBYTE
DOUBLE
INSTS_PER_ARGBYTE
DOUBLE
PERCENT_ARGBYTES
SMALLINT
INITIAL_IOS
DOUBLE
INITIAL_INSTS
DOUBLE
CARDINALITY
BIGINT
SELECTIVITY
DOUBLE
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.
718
SYSSTAT.TABLES
Tabla 183. Vista de catlogo SYSSTAT.TABLES
Posibilidad de nulos Actualizable
Y Y
Nmero total de filas; -1 si no se recopilan estadsticas. 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. Nmero total de pginas; -1 para una vista o alias, o si no se recopilan estadsticas; -2 para una subtabla o tabla de jerarqua. 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. v Y = La tabla est en un clster de varias dimensiones (aunque slo segn una dimensin) v Valor nulo = La tabla no est en un clster de varias dimensiones
FPAGES
BIGINT
OVERFLOW
BIGINT
CLUSTERED
CHAR (1)
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). Longitud media (en bytes) de filas comprimidas en esta tabla; -1 si no se recopilan estadsticas. 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. Longitud media (en bytes) de filas comprimidas y no comprimidas de esta tabla; -1 si no se recopilan estadsticas.
AVGCOMPRESSEDROWSIZE
SMALLINT
AVGROWCOMPRESSIONRATIO
REAL
AVGROWSIZE
SMALLINT
PCTROWSCOMPRESSED
REAL
Filas comprimidas como un porcentaje del nmero total de filas de la tabla; -1 si no se recopilan estadsticas. 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.
PCTPAGESSAVED
SMALLINT
719
SYSSTAT.TABLES
720
ODBC
OLE DB Oracle
721
REMOTE_NAME
722
VARGRAPH VARGRAPHIC -
VARGRAPHIC VARGRAPHIC -
723
VARGRAPHIC 1
VARGRAPHIC 1 VARGRAPH 1
724
VARGRAPHIC VARGRAPHIC -
VARGRAPHIC 1
725
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 Informix. Las constantes son: 0 = YEAR 2 = MONTH 4 = DAY 6 = HOUR 8 = MINUTE 10 = SECOND 11 = FRACTION(1) 12 = FRACTION(2) 13 = FRACTION(3) 14 = FRACTION(4) 15 = FRACTION(5)
726
bit char char datetime decimal decimal float float image int money nchar nchar numeric numeric ntext nvarchar real smallint smalldatetime smallmoney SQL_BIGINT SQL_BINARY SQL_BINARY SQL_BIT SQL_CHAR SQL_CHAR SQL_DATE SQL_DECIMAL SQL_DECIMAL SQL_DOUBLE SQL_FLOAT SQL_GUID SQL_INTEGER SQL_ LONGVARCHAR SQL_ LONGVARBINARY SQL_NUMERIC SQL_NUMERIC SQL_REAL SQL_SMALLINT SQL_TIME SQL_TIMESTAMP
2147483647 4 19 8 4 -
2147483647 4 2 10 10 2 4 8 8 8 4 4 -
2147483647 8 8 2 3 10 -
727
SQL_WLONGVARCHAR SQL_WVARCHAR 1
1073741823 16336 -
2147483647 -
1 1 1
Y -
8 2 16 -
N Y
Y Y N
1. Esta correlacin de tipos slo es vlida con Microsoft SQL Server Versin 2000.
CHARACTER VARCHAR SMALLINT CHAR VARCHAR DECIMAL DOUBLE DOUBLE FLOAT FLOAT INTEGER CLOB BLOB DECIMAL DOUBLE REAL SMALLINT 2 8 8 8 4 4
2147483647 2147483647 8 4 2 -
728
SQL_ WLONGVARCHAR
1073741823 -
2147483647 -
Remote Remote Remote Remote Remote Remote Data Operators Lower Upper Lower Upper Bit Data Scale Scale Len Len 0 1 255 0 0 1 0 0 10 1 1 1 5 1 0 1 0 254 2000 0 0 126 0 0 18 38 31 4 9 10 2000 0 4000 0 0 0 0 0 0 0 0 0 -84 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 127 31 0 0 0 0 NULL 0 \0 \0 \0 \0 \0 \0 \0 \0 \0 \0 >= \0 \0 \0 \0 \0 \0
Federated Typename BLOB CHAR VARCHAR CLOB TIMESTAMP DOUBLE CLOB BLOB BIGINT DOUBLE DECIMAL SMALLINT INTEGER DECIMAL VARCHAR CHAR TIMESTAMP VARCHAR
Federated Length
2147483647 0 0 0 0 0
2147483647 0 0 0 0 0
2147483647 0 2147483647 0 0 0 0 0 0 0 0 18 10 0 0 0 0 0 0 0 0 0 0
729
730
731
732
CHARACTER CHARACTER CLOB DATE DBCLOB DECIMAL DOUBLE FLOAT GRAPHIC INTEGER REAL SMALLINT TIME TIMESTAMP VARCHAR VARCHAR VARGRAPH -
VARGRAPHIC VARGRAPHIC -
VARGRAPHIC -
733
VARGRAPHIC -
CHARACTER CHARACTER CLOB DATE DBCLOB DECIMAL DOUBLE GRAPHIC INTEGER REAL SMALLINT TIME -
734
VARGRAPHIC -
VARGRAPHIC -
Federated Federated Federated Federated Bit Data Data Upper Lower Operators Scale Scale N Y -
Remote Typename DECIMAL INT8 BYTE CHAR BYTE TEXT DATE DECIMAL FLOAT INTEGER SMALLFLOAT SMALLINT
Remote Length 19 -
Remote Scale -
2147483647 -
2147483647 4 8 4 4 2 -
735
TIMESTAMP VARCHAR VARCHAR1 VARCHAR VARCHAR2 VARCHAR2 Nota: 1 255 255 2049
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 Informix. Las constantes son: 0 = YEAR 2 = MONTH 4 = DAY 6 = HOUR 8 = MINUTE 10 = SECOND 11 = FRACTION(1) 12 = FRACTION(2) 13 = FRACTION(3) 14 = FRACTION(4) 15 = FRACTION(5)
Federated Federated Upper Lower Len Len 1 8001 1 4 8 4 3 10 8000 32672 8000
Federated Federated Federated Federated Bit Data Data Upper Lower Operators Scale Scale Y N N N Y -
Remote Remote Typename Length bigint image binary char text datetime decimal float int smallint real datetime datetime varchar text -
Remote Scale -
varbinary -
736
Federated Federated Federated Federated Remote Typename Bit Data Data Upper Lower Operators Scale Scale 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 N Y N Y N N N N N N N N N N N N Y \0 \0 \0 \0 \0 \0 \0 \0 \0 \0 \0 \0 \0 \0 \0 \0 \0 NUMBER BLOB CHAR RAW CLOB DATE NUMBER FLOAT FLOAT NUMBER FLOAT NUMBER DATE DATE
Remote Scale 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
737
Remote Federated Federated Federated Federated Federated Federated Remote Typename Length Bit Data Data Upper Lower Upper Lower Operators Scale Scale Len Len 1 256 1 16385 1 256 1 16385 255 32672 16384 32672 255 32672 16384 32672 N N N N Y Y Y Y text datetime decimal float integer real smallint datetime datetime varchar text varchar text -
Remote Scale -
VARCHAR1 VARCHAR
2
VARCHAR2 VARCHAR
1
varbinary image -
varbinary image -
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).
Federated Federated Federated Federated Federated Federated Bit Data Data Upper Lower Upper Lower Operators Scale Scale Len Len 1 1 64000 64000 64000 18 31 0 0 18 31 Y -
Remote Length -
Remote Scale -
1 1 19 -
VARGRAPHIC DECIMAL FLOAT FLOAT GRAPHIC INTEGER FLOAT SMALLINT TIME TIMESTAMP 8 8 15 26
738
VARGRAPHIC -
739
740
Tabla ACT
Nombre: Tipo: Valores: ACTNO ACTKWD SMALLINT CHAR(6) 10 MANAGE 20 ECOST 30 DEFINE 40 LEADPR 50 SPECS 60 LOGIC 70 CODE 80 TEST 90 ADMQS 100 TEACH 110 COURSE 120 STAFF 130 OPERAT 140 MAINT 150 ADMSYS 160 ADMDB 170 ADMDC 180 DOC ACTDESC VARCHAR(20) MANAGE/ADVISE ESTIMATE COST DEFINE SPECS LEAD PROGRAM/DESIGN WRITE SPECS DESCRIBE LOGIC CODE PROGRAMS TEST PROGRAMS ADM QUERY SYSTEM TEACH CLASSES DEVELOP COURSES PERS AND STAFFING OPER COMPUTER SYS MAINT SOFTWARE SYS ADM OPERATING SYS ADM DATA BASES ADM DATA COMM DOCUMENT
741
Tabla ADEFUSER
Nombre: Tipo: Valores: WORKDEPT CHAR(3) A00 B01 C01 D11 D21 E01 E11 E21 NO_OF_EMPLOYEES INTEGER 5 1 4 11 7 1 7 6
Tabla CL_SCHED
Nombre: Tipo: Desc: CLASS_CODE CHAR(7) Cdigo de clase (aula:profesor) 042:BF 553:MJA 543:CWM 778:RES 044:HD DAY SMALLINT Da nm de programacin de 4 das 4 1 3 2 3 STARTING TIME Hora de inicio de la clase 12:10:00 10:30:00 09:10:00 12:10:00 17:12:30 ENDING TIME Hora de finalizacin de la clase 14:00:00 11:00:00 10:30:00 14:00:00 18:00:00
Valores:
Tabla DEPT
Nombre: Tipo: Valores: DEPTNO CHAR(3) A00 B01 C01 D01 D11 D21 E01 E11 E21 F22 G22 H22 I22 J22 DEPTNAME VARCHAR(36) SPIFFY COMPUTER SERVICE DIV. PLANNING INFORMATION CENTER DEVELOPMENT CENTER MANUFACTURING SYSTEMS ADMINISTRATION SYSTEMS SUPPORT SERVICES OPERATIONS SOFTWARE SUPPORT BRANCH OFFICE F2 BRANCH OFFICE G2 BRANCH OFFICE H2 BRANCH OFFICE I2 BRANCH OFFICE J2 000060 000070 000050 000090 000100 MGRNO CHAR(6) 000010 000020 000030 ADMRDEPT CHAR(3) A00 A00 A00 A00 D01 D01 A00 E01 E01 E01 E01 E01 E01 E01 LOCATION CHAR(16)
742
Tabla DEPARTMENT
Nombre: Tipo: Desc: DEPTNO CHAR(3) NOT NULL Nmero de departamento DEPTNAME VARCHAR(29) NOT NULL Nombre que describe las actividades generales del departamento MGRNO CHAR(6) Nmero de empleado (EMPNO) del jefe de departamento 000010 000020 000030 ADMRDEPT CHAR(3) NOT NULL Departamento (DEPTNO) del que depende este departamento A00 A00 A00 A00 D01 D01 A00 E01 E01 E01 E01 E01 E01 E01 LOCATION CHAR(16) Nombre de la ubicacin remota.
Valores:
A00 B01 C01 D01 D11 D21 E01 E11 E21 F22 G22 H22 I22 J22
MANUFACTURING SYSTEMS 000060 ADMINISTRATION SYSTEMS SUPPORT SERVICES OPERATIONS SOFTWARE SUPPORT BRANCH OFFICE F2 BRANCH OFFICE G2 BRANCH OFFICE H2 BRANCH OFFICE I2 BRANCH OFFICE J2 000070 000050 000090 000100
CHAR(6) NOT VARCHAR(12) NULL NOT NULL Nmero de empleado Nombre propio
+
JOB CHAR(8) Trabajo EDLEVEL SMALLINT NOT NULL Nmero de aos de educacin formal SEX CHAR(1) Sexo (V varn, M mujer) BIRTHDATE DATE Fecha de nacimiento SALARY DECIMAL(9,2) Salario anual BONUS DECIMAL(9,2) Plus anual COMM DECIMAL(9,2) Comisin anual
743
EMPNO CHAR(6) NOT NULL 000010 000020 000030 000050 000060 000070 000090 000100 000110 000120 000130 000140 000150 000160 000170 000180 000190 000200 000210 000220 000230 000240 000250 000260 000270 000280 000290 000300 000310 000320 000330 000340
FIRSTNME VARCHAR(12) NOT NULL CHRISTINE MICHAEL SALLY JOHN IRVING EVA EILEEN THEODORE VINCENZO SEAN DOLORES HEATHER BRUCE ELIZABETH MASATOSHI MARILYN JAMES DAVID WILLIAM JENNIFER JAMES SALVATORE DANIEL SYBIL MARIA ETHEL JOHN PHILIP MAUDE RAMLAL WING JASON
LASTNAME VARCHAR(15) NOT NULL HAAS THOMPSON KWAN GEYER STERN PULASKI HENDERSON SPENSER LUCCHESSI OCONNELL
HIREDATE DATE
JOB CHAR(8)
SEX
BIRTHDATE DATE
SALARY DECIMAL (9,2) 52750 41250 38250 40175 32250 36170 29750 26150 46500 29250 23800 28420 25280 22250 24680 21340 20450 27740 18270 29840 22180 28760 19180 17250 27380 26250 15340 17750 15900 19950 25370 23840
BONUS DECIMAL (9,2) 1000 800 800 800 500 700 600 500 900 600 500 600 500 400 500 500 400 600 400 600 400 600 400 300 500 500 300 400 300 400 500 500
COMM DECIMAL (9,2) 4220 3300 3060 3214 2580 2893 2380 2092 3720 2340 1904 2274 2022 1780 1974 1707 1636 2217 1462 2387 1774 2301 1534 1380 2190 2100 1227 1420 1272 1596 2030 1907
A00 B01 C01 E01 D11 D21 E11 E21 A00 A00 C01 C01 D11 D11 D11 D11 D11 D11 D11 D11 D21 D21 D21 D21 D21 E11 E11 E11 E11 E21 E21 E21
3978 3476 4738 6789 6423 7831 5498 0972 3490 2167 4578 1793 4510 3782 2890 1682 2986 4501 0942 0672 2094 3780 0961 8953 9001 8997 4502 2095 3332 9990 2103 5698
1965-01-01 1973-10-10 1975-04-05 1949-08-17 1973-09-14 1980-09-30 1970-08-15 1980-06-19 1958-05-16 1963-12-05 1971-07-28 1976-12-15 1972-02-12 1977-10-11 1978-09-15 1973-07-07 1974-07-26 1966-03-03 1979-04-11 1968-08-29 1966-11-21 1979-12-05 1969-10-30 1975-09-11 1980-09-30 1967-03-24 1980-05-30 1972-06-19 1964-09-12 1965-07-07 1976-02-23 1947-05-05
PRES MANAGER MANAGER MANAGER MANAGER MANAGER MANAGER MANAGER SALESREP CLERK ANALYST ANALYST DESIGNER DESIGNER DESIGNER DESIGNER DESIGNER DESIGNER DESIGNER DESIGNER CLERK CLERK CLERK CLERK CLERK OPERATOR OPERATOR OPERATOR OPERATOR FIELDREP FIELDREP FIELDREP
1933-08-24 1948-02-02 1941-05-11 1925-09-15 1945-07-07 1953-05-26 1941-05-15 1956-12-18 1929-11-05 1942-10-18 1925-09-15 1946-01-19 1947-05-17 1955-04-12 1951-01-05 1949-02-21 1952-06-25 1941-05-29 1953-02-23 1948-03-19 1935-05-30 1954-03-31 1939-11-12 1936-10-05 1953-05-26 1936-03-28 1946-07-09 1936-10-27 1931-04-21 1932-08-11 1941-07-18 1926-05-17
M A
R J S H
T K J M S P L R R X F V
JONES LUTZ JEFFERSON MARINO SMITH JOHNSON PEREZ SCHNEIDER PARKER SMITH SETRIGHT MEHTA LEE
GOUNOT
Tabla EMP_ACT
Nombre: Tipo: Desc: EMPNO CHAR(6) NOT NULL Nmero de empleado PROJNO CHAR(6) NOT NULL Nmero de proyecto ACTNO SMALLINT NOT NULL Nmero de actividad EMPTIME DEC(5,2) Proporcin del tiempo de empleado que se ha invertido en el proyecto .50 1.00 1.00 .50 .50 .50 1.00 1.00 1.00 1.00 .50 .50 1.00 .50 1.00 .25 .25 .50 .50 .50 1.00 1.00 .50 .50 1.00 .50 .50 EMSTDATE DATE Fecha de inicio de la actividad 1982-01-01 1982-01-01 1982-01-01 1982-03-15 1982-03-15 1982-04-15 1982-10-15 1982-02-15 1982-09-15 1982-01-01 1982-02-01 1982-12-01 1983-01-01 1982-02-01 1982-03-15 1982-08-15 1982-08-15 1982-10-15 1982-08-15 1982-06-15 1982-07-01 1982-01-01 1982-03-01 1982-03-01 1982-04-15 1982-06-01 1982-03-01 EMENDATE DATE Fecha de finalizacin de la actividad 1982-07-01 1983-02-01 1982-03-15 1982-04-15 1982-10-15 1982-10-15 1983-01-01 1982-09-15 1983-01-01 1982-02-01 1982-03-15 1983-01-01 1983-02-01 1982-03-15 1982-08-15 1982-10-15 1982-10-15 1982-12-01 1983-01-01 1982-07-01 1983-02-01 1982-03-01 1982-04-15 1982-04-15 1982-06-01 1982-07-01 1982-04-01
Valores:
000010 000070 000230 000230 000230 000230 000230 000240 000240 000250 000250 000250 000250 000250 000250 000250 000250 000250 000250 000260 000260 000260 000260 000260 000260 000260 000270
AD3100 AD3110 AD3111 AD3111 AD3111 AD3111 AD3111 AD3111 AD3111 AD3112 AD3112 AD3112 AD3112 AD3112 AD3112 AD3112 AD3112 AD3112 AD3112 AD3113 AD3113 AD3113 AD3113 AD3113 AD3113 AD3113 AD3113
744
Tabla EMP_PHOTO
Nombre: Tipo: Desc: Valores: EMPNO CHAR(6) NOT NULL Nmero de empleado 000130 000130 000140 000140 000150 000150 000190 000190 PHOTO_FORMAT VARCHAR(10) NOT NULL Formato de foto mapa de bits gif mapa de bits gif mapa de bits gif mapa de bits gif PICTURE BLOB(100K) Foto del empleado db200130.bmp db200130.gif db200140.bmp db200140.gif db200150.bmp db200150.gif db200190.bmp db200190.gif
745
Tabla EMPPROJACT
Nombre: Tipo: Valores: EMPNO CHAR(6) 000070 000230 000230 000230 000230 000230 000240 000240 000250 000250 000250 000250 000250 000250 000250 000250 000250 000260 000260 000260 000260 000260 000260 000260 000270 000270 000270 000270 000270 000270 000270 000030 000130 000130 000140 000030 000140 000140 PROJNO CHAR(6) AD3110 AD3111 AD3111 AD3111 AD3111 AD3111 AD3111 AD3111 AD3112 AD3112 AD3112 AD3112 AD3112 AD3112 AD3112 AD3112 AD3112 AD3113 AD3113 AD3113 AD3113 AD3113 AD3113 AD3113 AD3113 AD3113 AD3113 AD3113 AD3113 AD3113 AD3113 IF1000 IF1000 IF1000 IF1000 IF2000 IF2000 IF2000 ACTNO SMALLINT 10 60 60 70 80 180 70 80 60 60 60 70 70 70 80 80 180 70 70 80 80 180 180 180 60 60 60 70 70 80 80 10 90 100 90 10 100 100 EMPTIME DEC(5,2) 1.00 1.00 0.50 0.50 0.50 0.50 1.00 1.00 1.00 0.50 1.00 0.50 1.00 0.25 0.25 0.50 0.50 0.50 1.00 1.00 0.50 0.50 1.00 1.00 0.50 1.00 0.25 0.75 1.00 1.00 0.50 0.50 1.00 0.50 0.50 0.50 1.00 0.50 EMSTDATE DATE 01/01/1982 01/01/1982 03/15/1982 03/15/1982 04/15/1982 10/15/1982 02/15/1982 09/15/1982 01/01/1982 02/01/1982 01/01/1983 02/01/1982 03/15/1982 08/15/1982 08/15/1982 10/15/1982 08/15/1982 06/15/1982 07/01/1982 01/01/1982 03/01/1982 03/01/1982 04/15/1982 06/01/1982 03/01/1982 04/01/1982 09/01/1982 09/01/1982 10/15/1982 01/01/1982 03/01/1982 06/01/1982 10/01/1982 10/01/1982 10/01/1982 01/01/1982 01/01/1982 03/01/1982 EMENDATE DATE 02/01/1983 03/15/1982 04/15/1982 10/15/1982 10/15/1982 01/01/1983 09/15/1982 01/01/1983 02/01/1982 03/15/1982 02/01/1983 03/15/1982 08/15/1982 10/15/1982 10/15/1982 12/01/1982 01/01/1983 07/01/1982 02/01/1983 03/01/1982 04/15/1982 04/15/1982 06/01/1982 07/01/1982 04/01/1982 09/01/1982 10/15/1982 10/15/1982 02/01/1983 03/01/1982 04/01/1982 01/01/1983 01/01/1983 01/01/1983 01/01/1983 01/01/1983 03/01/1982 07/01/1982
746
Tabla EMP_RESUME
Nombre: Tipo: Desc: Valores: EMPNO CHAR(6) NOT NULL Nmero de empleado 000130 RESUME_FORMAT VARCHAR(10) NOT NULL Formato del currculum ascii RESUME CLOB(5K) Currculum del empleado db200130.asc
747
Tabla IN_TRAY
Nombre: Tipo: Desc: RECEIVED TIMESTAMP Fecha y hora recibida SOURCE CHAR(8) ID de usuario de la persona que enva la nota BADAMSON SUBJECT CHAR(64) Descripcin breve NOTE_TEXT VARCHAR(3000) La nota
1988-12-2517.12.30.000000
A: JWALKER Cc: QUINTANA, NICHOLLS Jim, Parece que el trabajo duro ha dado resultado. Tengo unas buenas cervezas en la nevera si desean celebrarlo. Delores y Heather, Estis tambin interesadas? Bruce <Reenvo desde ISTERN> Tema: FWD: Ao fantstico! Plus del 4 trimestre. Ao: Dept_D11 Felicidades por un trabajo bien hecho. Disfruten del plus de este ao. Irv <Reenvo desde CHAAS> Tema: Un ao fantstico! Plus del 4 trimestre. A: Todos_los_jefes_ de_departamento Han llegado los resultados del 4 trimestre. Hemos cooperado como equipo y hemos superado lo planificado! Me complace anunciar un plus este ao del 18%. Disfruten las vacaciones. Christine Haas
748
1988-12-2214.07.21.136421
CHAAS
Tabla ORG
Nombre: Tipo: Desc: Valores: DEPTNUMB SMALLINT NOT NULL Nmero de departamento 10 15 20 38 42 51 66 84 DEPTNAME VARCHAR(14) Nombre del departamento Oficina principal Nueva Inglaterra Atlntico Medio Atlntico Sur Grandes lagos Grandes llanos Pacfico Montaas MANAGER SMALLINT Nmero del jefe de departamento 160 50 10 30 100 140 270 290 DIVISION VARCHAR(10) Divisin corporativa Corporativo Costa Este Costa Este Costa Este Medio Oeste Medio Oeste Oeste Oeste LOCATION VARCHAR(13) Ciudad Nueva York Boston Washington Atlanta Chicago Dallas San Francisco Denver
749
Tabla PROJ
Nombre: Tipo: Valores: PROJNO CHAR(6) AD3100 AD3110 PROJNAME VARCHAR(36) ADMIN SERVICES GENERAL ADMIN SYSTEMS PAYROLL PROGRAMMING PERSONNEL PROGRAMMING ACCOUNT PROGRAMMING QUERY SERVICES USER EDUCATION WELD LINE AUTOMATION WL PROGRAMMING W L PROGRAM DESIGN W L ROBOT DESIGN W L PROD CONT PROGS OPERATION SUPPORT OPERATION GEN SYSTEMS SERVICES SYSTEMS SUPPORT SCP SYSTEMS SUPPORT APPLICATIONS SUPPORT DB/DC SUPPORT WELD LINE PLANNING DEPTNO CHAR(3) D01 D21 RESPEMP CHAR(6) 000010 000070 PRSTAFF DEC(5,2) 6.50 6.00 PRSTDATE DATE 01/01/1982 01/01/1982 PRENDATE DATE 02/01/1983 02/01/1983 AD3100 MAJPROJ CHAR(6)
AD3111 AD3112 AD3113 IF1000 IF2000 MA2100 MA2110 MA2111 MA2112 MA2113 OP1000 OP1010 OP2000 OP2010 OP2011 OP2012 OP2013 PL2100
D21 D21 D21 C01 C01 D01 D11 D11 D11 D11 E01 E11 E01 E21 E21 E21 E21 B01
000230 000250 000270 000030 000030 000010 000060 000220 000150 000160 000050 000090 000050 000100 000320 000330 000340 000020
2.00 1.00 2.00 2.00 1.00 12.00 9.00 2.00 3.00 3.00 6.00 5.00 5.00 4.00 1.00 1.00 1.00 1.00
01/01/1982 01/01/1982 01/01/1982 01/01/1982 01/01/1982 01/01/1982 01/01/1982 01/01/1982 01/01/1982 02/15/1982 01/01/1982 01/01/1982 01/01/1982 01/01/1982 01/01/1982 01/01/1982 01/01/1982 01/01/1982
02/01/1983 02/01/1983 02/01/1983 02/01/1983 02/01/1983 02/01/1983 02/01/1983 12/01/1982 12/01/1982 12/01/1982 02/01/1983 02/01/1983 02/01/1983 02/01/1983 02/01/1983 02/01/1983 02/01/1983 09/15/1982
OP1000
Tabla PROJACT
Nombre: Tipo: Valores: PROJNO CHAR(6) AD3100 AD3110 AD3111 AD3111 AD3111 AD3111 AD3111 AD3111 ACTNO SMALLINT 10 10 60 60 70 80 180 70 ACSTAFF DEC(5,2) ACSTDATE DATE 01/01/1982 01/01/1982 01/01/1982 03/15/1982 03/15/1982 04/15/1982 10/15/1982 02/15/1982 ACENDATE DATE
750
ACENDATE
751
Tabla PROJECT
Nombre: Tipo: Desc: Valores: PROJNO CHAR(6) NOT NULL Nmero de proyecto AD3100 AD3110 AD3111 AD3112 AD3113 IF1000 IF2000 MA2100 MA2110 MA2111 MA2112 MA2113 OP1000 OP1010 OP2000 OP2010 OP2011 OP2012 OP2013 PL2100 PROJNAME VARCHAR(24) NOT NULL Nombre del proyecto ADMIN SERVICES GENERAL ADMIN SYSTEMS PAYROLL PROGRAMMING PERSONNEL PROGRAMMING ACCOUNT PROGRAMMING QUERY SERVICES USER EDUCATION WELD LINE AUTOMATION WL PROGRAMMING W L PROGRAM DESIGN W L ROBOT DESIGN W L PROD CONT PROGS OPERATION SUPPORT OPERATION GEN SYSTEMS SERVICES SYSTEMS SUPPORT SCP SYSTEMS SUPPORT APPLICATIONS SUPPORT DB/DC SUPPORT WELD LINE PLANNING DEPTNO CHAR(3) NOT NULL Departamento responsable D01 D21 D21 D21 D21 C01 C01 D01 D11 D11 D11 D11 E01 E11 E01 E21 E21 E21 E21 B01 RESPEMP CHAR(6) NOT NULL Empleado responsable 000010 000070 000230 000250 000270 000030 000030 000010 000060 000220 000150 000160 000050 000090 000050 000100 000320 000330 000340 000020 PRSTAFF DEC(5,2) Dotacin media de personal estimada 6.5 6 2 1 2 2 1 12 9 2 3 3 6 5 5 4 1 1 1 1 PRSTDATE DATE Fecha de inicio estimada 1982-01-01 1982-01-01 1982-01-01 1982-01-01 1982-01-01 1982-01-01 1982-01-01 1982-01-01 1982-01-01 1982-01-01 1982-01-01 1982-02-15 1982-01-01 1982-01-01 1982-01-01 1982-01-01 1982-01-01 1982-01-01 1982-01-01 1982-01-01 PRENDATE DATE Fecha de finalizacin estimada 1983-02-01 1983-02-01 1983-02-01 1983-02-01 1983-02-01 1983-02-01 1983-02-01 1983-02-01 1983-02-01 1982-12-01 1982-12-01 1982-12-01 1983-02-01 1983-02-01 1983-02-01 1983-02-01 1983-02-01 1983-02-01 1983-02-01 1982-09-15 MAJPROJ CHAR(6) Proyecto importante, para un subproyecto AD3100 AD3110 AD3110 AD3110 MA2100 MA2110 MA2110 MA2110 OP1000 OP2000 OP2010 OP2010 OP2010 MA2100
752
Tabla SALES
Nombre: Tipo: Desc: Valores: SALES_DATE DATE Fecha de venta 12/31/2005 12/31/2005 12/31/2005 12/31/2005 12/31/2005 03/29/2006 03/29/2006 03/29/2006 03/29/1996 03/29/2006 03/29/2006 03/29/2006 03/29/2006 03/29/2006 03/30/2006 03/30/2006 03/30/2006 03/30/2006 03/30/2006 03/30/2006 03/30/2006 03/30/2006 03/30/2006 03/30/2006 03/31/2006 03/31/2006 03/31/2006 03/31/2006 03/31/2006 03/31/2006 03/31/2006 04/01/2006 04/01/2006 04/01/2006 04/01/2006 04/01/2006 04/01/2006 SALES_PERSON VARCHAR(15) Apellido del empleado LUCCHESSI LEE LEE LEE GOUNOT LUCCHESSI LUCCHESSI LEE LEE LEE LEE GOUNOT GOUNOT GOUNOT LUCCHESSI LUCCHESSI LUCCHESSI LEE LEE LEE LEE GOUNOT GOUNOT GOUNOT LUCCHESSI LEE LEE LEE LEE GOUNOT GOUNOT LUCCHESSI LUCCHESSI LEE LEE LEE LEE REGION VARCHAR(15) Regin de venta Ontario-Sur Ontario-Sur Quebec Manitoba Quebec Ontario-Sur Quebec Ontario-Sur Ontario-Norte Quebec Manitoba Ontario-Sur Quebec Manitoba Ontario-Sur Quebec Manitoba Ontario-Sur Ontario-Norte Quebec Manitoba Ontario-Sur Quebec Manitoba Manitoba Ontario-Sur Ontario-Norte Quebec Manitoba Ontario-Sur Quebec Ontario-Sur Manitoba Ontario-Sur Ontario-Norte Quebec Manitoba SALES INTEGER Nmero de venta 1 3 1 2 1 3 1 2 2 3 5 3 1 7 1 2 1 7 3 7 4 2 18 1 1 14 3 7 3 2 1 3 1 8 8 9
753
Tabla STAFF
Nombre: Tipo: Desc: Valores: ID SMALLINT NOT NULL Nmero de empleado 10 20 30 40 50 60 70 80 90 100 110 120 130 140 150 160 170 180 190 200 210 220 230 240 250 260 270 280 290 300 310 320 330 340 350 NAME VARCHAR(9) Nombre del empleado Sanders Pernal Marenghi OBrien Hanes Quigley Rothman James Koonitz Plotz Ngan Naughton Yamaguchi Fraye Williams Molinare Kermisch Abrahams Sneider Scoutten Lu Smith Lundquist Daniels Wheeler Jones Lea Wilson Quill Davis Graham Gonzales Burke Edwards Gafney DEPT SMALLINT Nmero de departamento 20 20 38 38 15 38 15 20 42 42 15 38 42 51 51 10 15 38 20 42 10 51 51 10 51 10 66 66 84 84 66 66 66 84 84 JOB CHAR(5) Tipo de trabajo Dir Ventas Dir Ventas Dir Ventas Ventas Oficinista Ventas Dir Oficinista Oficinista Oficinista Dir Ventas Dir Oficinista Oficinista Oficinista Oficinista Dir Ventas Oficinista Dir Oficinista Dir Dir Ventas Dir Ventas Ventas Ventas Oficinista Ventas Oficinista YEARS SMALLINT Aos de servicio 7 8 5 6 10 7 6 7 5 6 6 6 7 4 3 8 10 7 3 5 6 12 9 9 10 5 13 4 1 7 5 SALARY DECIMAL(7,2) Salario actual 18357,50 18171,25 17506,75 18006,00 20659,80 16808,30 16502,83 13504,60 18001,75 18352,80 12508,20 12954,75 10505,90 21150,00 19456,50 22959,20 12258,50 12009,75 14252,75 11508,60 20010,00 17654,50 13369,80 19260,25 14460,00 21234,00 18555,50 18674,50 19818,00 15454,50 21000,00 16858,20 10988,00 17844,00 13030,50 COMM DECIMAL(7,2) Comisin 612,45 846,55 650,25 1152,00 128,20 1386,70 206,60 180,00 75,60 637,65 110,10 236,50 126,50 84,20 992,80 189,65 513,30 811,50 806,10 200,30 844,00 55,50 1285,00 188,00
Tabla PRODUCT
Nombre: Tipo: Valores: PID VARCHAR(10) NOT NULL 100-100-01 NAME VARCHAR(128) Pala para la nieve, modelo base de 22 pulgadas Pala para la nieve, modelo de lujo de 24 pulgadas Pala para la nieve, modelo de superlujo de 26 pulgadas Esptula para el hielo, Parabrisas de 4 pulgadas PRICE DECIMAL(30,2) 9,99 PROMOPRICE DECIMAL(30,2) 7,25 PROMOSTART DATE 11/19/2004 PROMOEND DATE 12/19/2004 DESCRIPTION XML p1.xml
100-101-01
19,99
15,99
12/18/2005
02/28/2006
p2.xml
100-103-01
49,99
39,99
12/22/2005
02/22/2006
p3.xml
100-201-01
3,99
--
--
--
p4.xml
754
Tabla PURCHASEORDER
Nombre: Tipo: Valores: POID BIGINT NOT NULL 5000 5001 5002 5003 5004 5006 STATUS VARCHAR(10) NOT NULL No enviado Enviado Enviado Enviado Enviado Enviado CUSTID BIGINT 1002 1003 1001 1002 1005 1002 ORDERDATE DATE 02/18/2006 02/03/2005 02/29/2004 02/28/2005 11/18/2005 03/01/2006 PORDER XML po1.xml po2.xml po3.xml po4.xml po5.xml po6.xml COMMENTS VARCHAR(1000) THIS IS A NEW PURCHASE ORDER THIS IS A NEW PURCHASE ORDER THIS IS A NEW PURCHASE ORDER THIS IS A NEW PURCHASE ORDER THIS IS A NEW PURCHASE ORDER THIS IS A NEW PURCHASE ORDER
A continuacin se facilita el archivo de definicin de esquemas de XML para la columna XML de la tabla anterior: porder.xsd
Tabla CUSTOMER
Nombre: Tipo: Valores: CID BIGINT NOT NULL 1000 1001 1002 1003 1004 1005 INFO XML c1.xml c2.xml c3.xml c4.xml c5.xml c6.xml
A continuacin se facilita el archivo de definicin de esquemas de XML para la columna XML de la tabla anterior: customer.xsd
Tabla CATALOG
Nombre: Tipo: Valores: NAME VARCHAR(128) NOT NULL Catlogo de primavera Catlogo de verano Catlogo de otoo Catlogo de invierno CATALOG XML cat1.xmlcat1.xml cat2.xmlcat2.xml cat3.xmlcat3.xml cat4.xmlcat4.xml
A continuacin se facilita el archivo de definicin de esquemas de XML para la columna XML de la tabla anterior: catalog.xsd
Tabla INVENTORY
Nombre: Tipo: Valores: PID VARCHAR(10) NOT NULL 100-100-01 QUANTITY INTEGER 5 LOCATION VARCHAR(128) --
755
Tabla PRODUCTSUPPLIER
Nombre: Tipo: Valores: PID VARCHAR(10) NOT NULL 100-100-01 100-101-01 100-103-01 100-201-01 SID VARCHAR(10) NOT NULL 123-456-78 123-456-78 555-789-00 989-897-23
Tabla SUPPLIERS
Nombre: Tipo: Valores: SID VARCHAR(10) NOT NULL 123-456-78 555-789-00 989-897-23 111-898-45 ADDR XML s1.xmls1.xml s2.xmls2.xml s3.xmls3.xml s4.xmls4.xml
A continuacin se facilita el archivo de definicin de esquemas de XML para la columna XML de la tabla anterior: supplier.xsd
756
Foto de Quintana
Currculum de Quintana
El texto siguiente se ha encontrado en el archivo db200130.asc. Currculum: Dolores M. Quintana Informacin personal Direccin: 1150 Eglinton Ave Mellonville, Idaho 83725 Telfono: (208) 555-9933 Fecha de nacimiento: 15 de Setiembre de 1925 Sexo: Mujer
Informacin del departamento Nmero de empleada: 000130 Nmero del departamento: C01 Director: Sally Kwan Empleo: Analista
Apndice F. La base de datos de ejemplo
757
Historial laboral 10/91 - presente Analista de sistemas consultivos Produccin de herramientas de documentacin para el departamento de ingeniera. 12/85 - 9/91 Redactora tcnica, Redactora, Programadora de textos y planificadora. 1/79 - 11/85 Programadora de nminas en COBOL Escribir programas de nminas para una empresa de venta de gasleo. Intereses v v v v Cocinar Leer Coser Remodelar
758
759
Foto de Nicholls
Currculum de Nicholls
El texto siguiente se ha encontrado en el archivo db200140.asc. Currculum: Heather A. Nicholls Informacin personal Direccin: 844 Don Mills Ave Mellonville, Idaho 83734 Telfono: (208) 555-2310 Fecha de nacimiento: 19 de Enero de 1946 Sexo: Mujer
Informacin del departamento Nmero de empleada: 000140 Nmero del departamento: C01
760
Historial laboral 2/83 - presente Diseo, Desarrollo de OCR, Diseo de la arquitectura de productos de OCR. 12/76 - 1/83 Programador de textos, Programacin del reconocimiento de caracteres pticos (OCR) en PL/I. 9/72 - 11/76 Analista de calidad de tarjetas perforadas Comprobar si las tarjetas perforadas satisfacen las especificaciones de calidad. Intereses v Ferrocarriles en miniatura v Decorar interiores v Bordar v Hacer punto A continuacin se muestra el contenido del archivo db200140.htm.
<!DOCTYPE HTML PUBLIC "-//IETF//DTD HTML 3//EN"> <HTML><HEAD> <TITLE>Currculum: Heather A. Nicholls <!-- Begin Header Records ========================================== --> <!-- DB200140 SCRIPT A converted by B2H R4.1 (346) (CMS) by MJA at --> <!-- RCHVMW2 on 16 Aug 2000 at 11:35:21 --> <META HTTP-EQUIV="updated" CONTENT="Wed, 16 Aug 2000 11:34:17"> <META HTTP-EQUIV="review" CONTENT="Thu, 16 Aug 2001 11:34:17"> <META HTTP-EQUIV="expires" CONTENT="Fri, 16 Aug 2002 11:34:17"><BODY> <!-- End Header Records ============================================ --> <A NAME="Top_Of_Page"><H1>Currculum: Heather A. Nicholls<HR> <H2><A NAME="ToC">Tabla de contenidos<A NAME="ToC_1" HREF="#Header_1"> Currculum: Heather A. Nicholls<BR> <A NAME="ToC_2" HREF="#Header_2">Informacin personal<BR> <A NAME="ToC_3" HREF="#Header_3">Informacin del departamento<BR> <A NAME="ToC_4" HREF="#Header_4">Formacin<BR> <A NAME="ToC_5" HREF="#Header_5">Historial de trabajo<BR> <A NAME="ToC_6" HREF="#Header_6">Intereses<BR> <HR><P> <P> <H3><A NAME="Header_1">Currculum: Heather A. Nicholls<P> <H3><A NAME="Header_2">Informacin personal<DL COMPACT> <DT>Direccin: <DD>844 Don Mills Ave
Apndice F. La base de datos de ejemplo
761
762
Foto de Adamson
Currculum de Adamson
El texto siguiente se ha encontrado en el archivo db200150.asc. Currculum: Bruce Adamson Informacin personal Direccin: 3600 Steeles Ave Mellonville, Idaho 83757 Telfono: (208) 555-4489 Fecha de nacimiento: 17 de Mayo de 1947 Sexo: Varn
Informacin del departamento Nmero de empleada: 000150 Nmero del departamento: D11
Apndice F. La base de datos de ejemplo
763
Historial laboral 8/79 - presente Diseo de redes neuronales, Desarrollo de redes neuronales para productos de inteligencia artificial. 2/72 - 7/79 Desarrollo de visin robtica; Desarrollo de sistemas basados en reglas para emular la vista. 9/71 - 1/72 Especialista en integracin numrica, Ayudar a los sistemas bancarios a comunicarse entre s. Intereses v Motocicletas de carreras v Fabricar altavoces v Ensamblar ordenadores personales v Hacer bosquejos A continuacin se muestra el contenido del archivo db200150.htm.
<!DOCTYPE HTML PUBLIC "-//IETF//DTD HTML 3//EN"> <HTML><HEAD> <TITLE>Currculum: Bruce Adamson <!-- Begin Header Records ========================================== --> <!-- DB200150 SCRIPT A converted by B2H R4.1 (346) (CMS) by MJA at --> <!-- RCHVMW2 on 16 Aug 2000 at 11:35:21 --> <META HTTP-EQUIV="updated" CONTENT="Wed, 16 Aug 2000 11:34:39"> <META HTTP-EQUIV="review" CONTENT="Thu, 16 Aug 2001 11:34:39"> <META HTTP-EQUIV="expires" CONTENT="Fri, 16 Aug 2002 11:34:39"><BODY> <!-- End Header Records ============================================ --> <A NAME="Top_Of_Page"><H1>Currculum: Bruce Adamson<HR> <H2><A NAME="ToC">Tabla de contenidos<A NAME="ToC_1" HREF="#Header_1"> Currculum: Bruce Adamson<BR> <A NAME="ToC_2" HREF="#Header_2">Informacin personal<BR> <A NAME="ToC_3" HREF="#Header_3">Informacin del departamento<BR> <A NAME="ToC_4" HREF="#Header_4">Formacin<BR> <A NAME="ToC_5" HREF="#Header_5">Historial de trabajo<BR> <A NAME="ToC_6" HREF="#Header_6">Intereses<BR> <HR><P> <P> <H3><A NAME="Header_1">Currculum: Bruce Adamson<P> <H3><A NAME="Header_2">Informacin personal<DL COMPACT> <DT>Direccin: <DD>3600 Steeles Ave
764
765
Foto de Walker
Currculum de Walker
El texto siguiente se ha encontrado en el archivo db200190.asc. Currculum: James H. Walker Informacin personal Direccin: 3500 Steeles Ave Mellonville, Idaho 83757 Telfono: (208) 555-7325 Fecha de nacimiento: 25 de Junio de 1952 Sexo: Varn
Informacin del departamento Nmero de empleada: 000190 Nmero del departamento: D11
766
Historial laboral 6/87 - presente Diseo de microcdigos Optimizacin de algoritmos para funciones matemticas. 4/77 - 5/87 Soporte tcnico a impresoras, Instalacin y soporte de impresoras lser. 9/74 - 3/77 Programacin de mantenimiento, Parchear compilador de lenguaje assembly para sistemas principales. Intereses v Catar vinos v Esquiar v Nadar v Bailar A continuacin se muestra el contenido del archivo db200190.htm.
<!DOCTYPE HTML PUBLIC "-//IETF//DTD HTML 3//EN"> <HTML><HEAD> <TITLE>Currculum: James H. Walker <!-- Begin Header Records ========================================== --> <!-- DB200190 SCRIPT A converted by B2H R4.1 (346) (CMS) by MJA at --> <!-- RCHVMW2 on 16 Aug 2000 at 11:35:20 --> <META HTTP-EQUIV="updated" CONTENT="Wed, 16 Aug 2000 11:34:59"> <META HTTP-EQUIV="review" CONTENT="Thu, 16 Aug 2001 11:34:59"> <META HTTP-EQUIV="expires" CONTENT="Fri, 16 Aug 2002 11:34:59"><BODY> <!-- End Header Records ============================================ --> <A NAME="Top_Of_Page"><H1>Currculum: James H. Walker<HR> <H2><A NAME="ToC">Tabla de contenidos<A NAME="ToC_1" HREF="#Header_1"> Currculum: James H. Walker<BR> <A NAME="ToC_2" HREF="#Header_2">Informacin personal<BR> <A NAME="ToC_3" HREF="#Header_3">Informacin del departamento<BR> <A NAME="ToC_4" HREF="#Header_4">Formacin<BR> <A NAME="ToC_5" HREF="#Header_5">Historial de trabajo<BR> <A NAME="ToC_6" HREF="#Header_6">Intereses<BR> <HR><P> <P> <H3><A NAME="Header_1">Currculum: James H. Walker<P> <H3><A NAME="Header_2">Informacin personal<DL COMPACT> <DT>Direccin: <DD>3500 Steeles Ave <BR>
Apndice F. La base de datos de ejemplo
767
768
769
770
La lista siguiente contiene las palabras reservadas de ISO/ANSI SQL2003 que no se encuentran en la lista anterior:
ABS ARE ARRAY ASYMMETRIC ATOMIC AVG BIGINT BLOB BOOLEAN BOTH CEIL CEILING CHAR_LENGTH CHARACTER_LENGTH CLOB COALESCE COLLATE COLLECT CONVERT CORR CORRESPONDING COVAR_POP COVAR_SAMP CUBE CUME_DIST CURRENT_DEFAULT_TRANSFORM_GROUP CURRENT_ROLE CURRENT_TRANSFORM_GROUP_FOR_TYPE DEC DECIMAL DEREF GROUPING INT INTEGER INTERSECTION INTERVAL LARGE LEADING LN LOWER MATCH MAX MEMBER MERGE METHOD MIN MOD MODULE MULTISET NATIONAL NATURAL NCHAR NCLOB NORMALIZE NULLIF NUMERIC OCTET_LENGTH ONLY OVERLAPS OVERLAY PERCENT_RANK PERCENTILE_CONT REGR_INTERCEPT REGR_R2 REGR_SLOPE REGR_SXX REGR_SXY REGR_SYY ROLLUP SCOPE SIMILAR SMALLINT SPECIFICTYPE SQLEXCEPTION SQLSTATE SQLWARNING SQRT STDDEV_POP STDDEV_SAMP SUBMULTISET SUM SYMMETRIC TABLESAMPLE TIMEZONE_HOUR TIMEZONE_MINUTE TRAILING TRANSLATE TRANSLATION TREAT TRUE UESCAPE UNKNOWN UNNEST
771
772
La Figura 19 muestra el orden general de proceso para una sentencia que actualiza una tabla. Supone una situacin donde la tabla incluye activadores BEFORE, restricciones de referencia, restricciones de comprobacin y activadores AFTER en cascada. A continuacin encontrar una descripcin de los recuadros y de los dems elementos que se encuentran en la Figura 19. v sentencia S1 Es la sentencia DELETE, INSERT o UPDATE que empieza el proceso. La sentencia SQL S1 identifica una tabla (o una vista actualizable de alguna tabla) a la que se hace referencia como la tabla objetivo en toda la descripcin. v Determinacin del conjunto de filas afectadas 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 AFTER.
Copyright IBM Corp. 1993, 2009
773
774
775
776
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.
Tabla ADVISE_INDEX
La tabla ADVISE_INDEX representa los ndices recomendados.
Tabla 205. 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. Posibilidad de nulos? No No No
Clave? Descripcin No No No ID de autorizacin del iniciador de esta peticin de Explain. Hora de inicio de la peticin de Explain. 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. Esquema, o calificador, de la fuente de la peticin de Explain. Versin de la fuente de la peticin de Explain.
SOURCE_SCHEMA SOURCE_VERSION
VARCHAR(128) VARCHAR(64)
No No
No No
777
Tabla ADVISE_INDEX
Tabla 205. 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. Posibilidad de nulos? No No No No
Clave? Descripcin No No No No Nivel de informacin de Explain para el que esta fila es aplicable. El nmero de sentencia en el paquete con el que est relacionado esta informacin de Explain. El nmero de seccin en el paquete con el que est relacionada esta informacin de Explain. 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. 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. Nombre del ndice. Calificador del nombre de ndice. Nombre de la tabla o apodo en el que se define el ndice. Calificador del nombre de tabla. Lista de nombres de columnas. Norma de unicidad: v D = Los duplicados estn permitidos v P = ndice primario v U = Slo se permiten entradas exclusivas
QUERYTAG
CHAR(20)
No
No
No No No No No No
No No No No No No
No No No No No No
No No No No No No
El nmero de columnas de la clave ms el nmero de columnas INCLUDE si hay alguna. ID interno de ndice. El nmero de pginas; -1 si no se renen estadsticas. Nmero de niveles de ndices; -1 si no se renen estadsticas. El nmero de valores de primera clave diferenciada; -1 si no se renen estadsticas. El nmero de valores de clave completa diferenciada; -1 si no se renen estadsticas.
778
Tabla ADVISE_INDEX
Tabla 205. 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. Posibilidad de nulos? No
Clave? Descripcin 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). Nivel de clster de los datos dentro de una sola 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). Mejor medicin del nivel de clster dentro de una sola 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. Una lista de pares de enteros en formato 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 en tablas. Una medicin estadstica del clster de claves de 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. 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. Definido por el usuario.
AVGPARTITION_ CLUSTERRATIO
SMALLINT
No
No
AVGPARTITION_ CLUSTERFACTOR
DOUBLE
No
No
No
No
DATAPARTITION_ CLUSTERFACTOR
DOUBLE
No
No
CLUSTERFACTOR
DOUBLE
No
No
USERDEFINED
SMALLINT
No
No
779
Tabla ADVISE_INDEX
Tabla 205. 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. Posibilidad de nulos? No
Clave? Descripcin No v 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. v 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. v De lo contrario, 0.
CREATE_TIME STATS_TIME
TIMESTAMP TIMESTAMP
No S
No No
Hora en que se ha creado el ndice. ltima vez que se ha realizado un cambio en las estadsticas registradas para este ndice. Nulo si no hay estadsticas disponibles. 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.) Comentario suministrado por el usuario o nulo. Usuario que ha creado el ndice. Reservado para su utilizacin en el futuro. 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.) 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.) El nmero de claves diferenciadas que utilizan las dos primeras columnas del ndice (-1 si no hay estadsticas o no son aplicables)
PAGE_FETCH_PAIRS
VARCHAR(520)
No
No
S No No No
No No No No
DENSITY
INTEGER
No
No
FIRST2KEYCARD
BIGINT
No
No
780
Tabla ADVISE_INDEX
Tabla 205. 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. Posibilidad de nulos? No
Clave? Descripcin No El nmero de claves diferenciadas que utilizan las tres primeras columnas del ndice (-1 si no hay estadsticas o si no son aplicables) El nmero de claves diferenciadas que utilizan las cuatro primeras columnas del ndice (-1 si no hay estadsticas o no son aplicables) 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. El nmero de columnas necesarias para una clave exclusiva. Siempre <=COLCOUNT. < COLCOUNT solamente si hay columnas INCLUDE. -1 si el ndice no tiene clave exclusiva (permite duplicados) 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. v Y = El ndice da soporte a las exploraciones invertidas v N = El ndice no da soporte a las exploraciones invertidas
FIRST4KEYCARD
BIGINT
No
No
PCTFREE
SMALLINT
No
No
UNIQUE_COLCOUNT
SMALLINT
No
No
MINPCTUSED
SMALLINT
No
No
REVERSE_SCANS
CHAR(1)
No
No
USE_INDEX
CHAR(1)
No
v Y = ndice recomendado o evaluado v N = ndice no recomendado v 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.
No S S
No No FK
La sentencia de SQL se utiliza para crear el ndice. Descripcin interna de la tabla. Valor correspondiente a START_TIME de una fila de la tabla ADVISE_INSTANCE que la enlaza con la misma ejecucin del Asesor de diseo. Tipo de ndice. v CLUS = Agrupacin en clster v REG = Regular v DIM = ndice de bloques de dimensin v BLOK = ndice de bloques
INDEXTYPE
VARCHAR(4)
No
No
EXISTS RIDTOBLOCK
CHAR(1) CHAR(1)
No No
No No
Debe definirse en Y si el ndice ya existe en el catlogo de la base de datos. Debe definirse en Y si se ha utilizado el ndice RID para crear un ndice de bloques en el Asesor de diseo.
781
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 206. 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. Posibilidad de nulos? No No No
Clave? Descripcin PK No No Hora en la que empieza la ejecucin de db2advis. Hora en la que finaliza la ejecucin de db2advis. El valor que se ha especificado con la opcin -m en el Asesor de diseo; por ejemplo, MC para especificar MQT y MDC. La compresin de carga de trabajo bajo la que se ha ejecutado el Asesor de diseo. 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.
WKLD_COMPRESSION STATUS
CHAR(4) CHAR(9)
No No
No No
Tabla ADVISE_MQT
La tabla ADVISE_MQT contiene informacin acerca de las tablas de consultas materializadas (MQT) recomendadas por el Asesor de diseo.
Tabla 207. 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. Posibilidad de nulos? No No No
Clave? Descripcin No No No ID de autorizacin del iniciador de esta peticin de Explain. Hora de inicio de la peticin de Explain. 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. Esquema, o calificador, de la fuente de la peticin de Explain. Versin de la fuente de la peticin de Explain. Nivel de informacin de Explain para el que esta fila es aplicable. El nmero de sentencia en el paquete con el que est relacionado esta informacin de Explain.
No No No No
No No No No
782
Tabla ADVISE_MQT
Tabla 207. 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. Posibilidad de nulos? No No No No No S No No No No S S
Nombre de columna SECTNO NAME CREATOR IID CREATE_TIME STATS_TIME NUMROWS NUMCOLS ROWSIZE BENEFIT USE_MQT MQT_SOURCE
Tipo de datos INTEGER VARCHAR(128) VARCHAR(128) SMALLINT TIMESTAMP TIMESTAMP DOUBLE SMALLINT DOUBLE FLOAT CHAR(1) CHAR(1)
Clave? Descripcin No No No No No No No No No No No No El nmero de sentencia en el paquete con el que est relacionado esta informacin de Explain. Nombre de la MQT. Nombre del creador de la MQT. Identificador interno. Hora en que se ha creado la MQT. Hora en que se han recogido las estadsticas. Nmero estimado de filas de la MQT. Nmero de columnas definido en la MQT. Longitud media (en bytes) de una fila de la MQT. Reservado para su utilizacin en el futuro. Debe definirse en Y si se recomienda la MQT. 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. Contiene la consulta que define la MQT. Contiene el DDL de CREATE TABLE para la MQT. 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. 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. Reservado para salidas varias. El espacio de tablas que se recomienda para la MQT. Valor correspondiente a START_TIME de una fila de la tabla ADVISE_INSTANCE que la enlaza con la misma ejecucin del Asesor de diseo. Debe definirse en I para inmediato o en D para diferido. Debe definirse en Y si la MQT ya existe en el catlogo de la base de datos.
No No No
No No No
COLSTATS
CLOB(2M)
No
No
No No S
No No FK
REFRESH_TYPE EXISTS
CHAR(1) CHAR(1)
No No
No No
783
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 208. 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. Posibilidad de nulos? No No No
Clave? Descripcin No No No ID de autorizacin del iniciador de esta peticin de Explain. Hora de inicio de la peticin de Explain. 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. Esquema, o calificador, de la fuente de la peticin de Explain. Versin de la fuente de la peticin de Explain. Nivel de informacin de Explain para el que esta fila es aplicable. El nmero de sentencia en el paquete con el que est relacionado esta informacin de Explain. El nmero de sentencia en el paquete con el que est relacionado esta informacin de Explain. 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. 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. Especifica el nombre de la tabla. Especifica el nombre del creador de la tabla. Especifica el ID de correlacin de la distribucin. Especifica el espacio de tablas en el que reside la tabla. Especifica los nombres de las columnas de las particiones de base de datos, separados por comas.
No No No No No No
No No No No No No
QUERYTAG
CHAR(20)
No
No
S S S S S
No No No No No
784
Tabla ADVISE_PARTITION
Tabla 208. 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. Posibilidad de nulos? S S S S
Clave? Descripcin No No No No Especifica el nmero de columnas de particionamiento de base de datos. Especifica si la particin de base de datos se duplica o no se duplica. Especifica el coste del uso de la particin de base de datos. 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. Valor correspondiente a START_TIME de una fila de la tabla ADVISE_INSTANCE que la enlaza con la misma ejecucin del Asesor de diseo.
RUN_ID
TIMESTAMP
FK
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 209. 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. Posibilidad de nulos? S
Clave? Descripcin 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. Nombre de la tabla. Nombre del creador de la tabla. El espacio de tablas en el que va a crearse la tabla. 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. Debe definirse en Y si la tabla ya existe en el catlogo de la base de datos. Debe definirse en Y si la tabla tiene recomendaciones del Asesor de diseo. 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.
No No No No
No No No No
No No No
No No No
785
Tabla ADVISE_TABLE
Tabla 209. Tabla ADVISE_TABLE (continuacin). PK significa que la columna forma parte de una clave primaria; FK significa que la columna forma parte de una clave fornea. Posibilidad de nulos? No
Clave? Descripcin No Para las recomendaciones de MDC, contiene la clusula ORGANIZE BY del DDL de creacin de tablas. Contiene el DDL de creacin de tablas. Contiene una sentencia ALTER TABLE para la tabla.
CREATION_TEXT ALTER_COMMAND
CLOB(2M) CLOB(2M)
No No
No No
Tabla ADVISE_WORKLOAD
La tabla ADVISE_WORKLOAD representa la sentencia que forma la carga de trabajo.
Tabla 210. 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. Posibilidad de nulos? No No
Clave? Descripcin No No Nombre del conjunto de sentencias de SQL (carga de trabajo) a la que esta sentencia pertenece. El nmero de sentencias de la carga de trabajo con el que est relacionada esta informacin de explicacin. Contenido de la sentencia de SQL. Distintivo identificador para cada sentencia de SQL explicada. Las veces que esta sentencia aparece en la carga de trabajo. Importancia de la sentencia. Prioridad de la sentencia. Coste de la consulta (en timerons) si no se han creado las recomendaciones. Coste de la consulta (en 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). 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.
No No No No No S S
No No No No No No No
COMPILABLE
CHAR(17)
No
786
Tabla ADVISE_WORKLOAD
Tabla EXPLAIN_ARGUMENT
La tabla EXPLAIN_ARGUMENT representa las caractersticas exclusivas para cada operador individual, si hay alguno.
Tabla 211. 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. Posibilidad de nulos? Clave? Descripcin No No No FK FK FK ID de autorizacin del iniciador de esta peticin de Explain. Hora de inicio de la peticin de Explain. 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. Esquema, o calificador, de la fuente de la peticin de Explain. Versin de la fuente de la peticin de Explain. Nivel de informacin de Explain para el que esta fila es aplicable. El nmero de sentencia en el paquete con el que est relacionado esta informacin de Explain. El nmero de seccin en el paquete con el que est relacionada esta informacin de Explain. ID exclusivo para este operador en esta consulta. El tipo de argumento para este operador. El valor del argumento para este operador. NULL si el valor est en LONG_ARGUMENT_VALUE. El valor del argumento para este operador, cuando el texto no encaja ARGUMENT_VALUE. NULL si el valor est en ARGUMENT_VALUE.
No No No No No No No
FK FK FK FK FK No No No
VARCHAR(1024) S
LONG_ARGUMENT_ VALUE
CLOB(2M)
No
Tabla 212. Valores de las columnas ARGUMENT_TYPE y ARGUMENT_VALUE Valor de ARGUMENT_TYPE AGGMODE COMPLETE PARTIAL INTERMEDIATE FINAL BITFLTR INTEGER FALSE BLD_LEVEL Identificador de nivel de creacin de DB2 El tamao del filtro de bits utilizado por la unin de generacin aleatoria. Serie de identificacin interna de la versin del cdigo fuente. Valores de ARGUMENT_VALUE posibles Descripcin Indicadores de agregacin parcial.
787
Tabla EXPLAIN_ARGUMENT
Tabla 212. Valores de las columnas ARGUMENT_TYPE y ARGUMENT_VALUE (continuacin) Valor de ARGUMENT_TYPE BLKLOCK EXCLUSIVE INTENT EXCLUSIVE INTENT SHARE NONE SHARE UPDATE CSERQY TRUE FALSE CSETEMP TRUE FALSE DIRECT TRUE DPESTFLG TRUE FALSE Indica si el valor DPNUMPRT se utiliza en una 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). Representa las particiones de datos a las que se ha 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. Representa el nmero real o estimado de particiones de datos a las que se ha accedido. Servidor de destino (enviar desde). Duplica el distintivo de Aviso. TRUE FALSE EARLYOUT LEFT RIGHT GROUPBY NONE Indicador de pronto fuera. LEFT indica que cada fila de la tabla externa nicamente puede unirse a una fila de la tabla interna como mximo. RIGHT indica que cada fila de la tabla interna nicamente puede unirse a una fila de la tabla externa como mximo. NONE indica que no hay proceso externo anticipado. GROUPBY indica que se permite el proceso externo anticipado debido a una operacin group by. Variable de entorno que afecta al optimizador La consulta remota es una subexpresin comn. Tabla temporal sobre el Distintivo de subexpresin comn. Indicador de lectura directa. Valores de ARGUMENT_VALUE posibles Descripcin Intento de bloqueo del nivel de bloqueo.
ENVVAR
Cada fila de este tipo contendr: v Nombre de la variable de entorno v Valor de la variable de entorno
ERRTOL
788
Tabla EXPLAIN_ARGUMENT
Tabla 212. Valores de las columnas ARGUMENT_TYPE y ARGUMENT_VALUE (continuacin) Valor de ARGUMENT_TYPE FETCHMAX IGNORE INTEGER GREEDY GLOBLOCK EXCLUSIVE INTENT EXCLUSIVE INTENT NONE INTENT SHARE NO LOCK OBTAINED SHARE SHARE INTENT EXCLUSIVE SUPER EXCLUSIVE UPDATE GROUPBYC TRUE FALSE GROUPBYN GROUPBYR Integer Cada fila de este tipo contendr: v El valor ordinal de la columna en grupo en clave (seguido por dos puntos y un espacio) v Nombre de columna HASHCODE 24 32 INNERCOL Cada fila de este tipo contendr: 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) (D) INPUTXID ISCANMAX IGNORE INTEGER JN INPUT INNER OUTER LISTENER TRUE FALSE Ascendente Descendente INPUTXID identifica el nodo de contexto de entrada que utiliza el operador XSCAN. Altera temporalmente el valor del argumento MAXPAGES en el operador ISCAN. Indica si el operador es el operador que alimenta la parte interna o externa de una unin. Indicador de Cola de tabla receptora. Tamao (en bits) del cdigo de generacin aleatoria utilizado para la unin de generacin aleatoria. Columnas de orden interno. TRUE Valores de ARGUMENT_VALUE posibles Descripcin Altera temporalmente el valor del argumento MAXPAGES en el operador FETCH. Indica que el optimizador ha utilizado el algoritmo vido para planificar el acceso. Representa informacin de intento de bloqueo global para un objeto de tabla particionada.
Indica si se proporcionan columnas Agrupar por. El nmero de columnas de comparacin. Requisito de Agrupar por.
789
Tabla EXPLAIN_ARGUMENT
Tabla 212. Valores de las columnas ARGUMENT_TYPE y ARGUMENT_VALUE (continuacin) Valor de ARGUMENT_TYPE MAXPAGES ALL NONE INTEGER MAXRIDS NONE INTEGER NUMROWS INTEGER ONEFETCH TRUE FALSE OUTERCOL Cada fila de este tipo contendr: 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) (D) OUTERJN LEFT RIGHT FULL LEFT (ANTI) RIGHT (ANTI) PARTCOLS PREFETCH LIST NONE SEQUENTIAL REOPT ALWAYS ONCE RMTQTEXT RNG_PROD ROWLOCK EXCLUSIVE NONE REUSE SHARE SHORT (INSTANT) SHARE UPDATE ROWWIDTH RSUFFIX INTEGER Texto de consulta Anchura de fila que se ha de clasificar. Sufijo de SQL remoto. Texto de consulta Nombre de funcin La sentencia se ha optimizado utilizando valores enlazados para los marcadores de parmetro, las variables del lenguaje principal y los registros especiales. Texto de consulta remoto Funcin que produce rangos para el acceso ampliado al ndice. Intento de bloqueo de fila. Nombre de columna Columnas de particin para el operador. Tipo de lectura anticipada admisible. Ascendente Descendente Indicador de unin externa. Columnas de orden externo. Un indicador de lectura. Valores de ARGUMENT_VALUE posibles Descripcin El nmero mximo de pginas esperadas para la lectura anticipada.
El nmero mximo de Identificadores de fila que se incluirn en cada peticin de lectura anticipada por lista. El nmero de filas que se espera clasificar.
790
Tabla EXPLAIN_ARGUMENT
Tabla 212. Valores de las columnas ARGUMENT_TYPE y ARGUMENT_VALUE (continuacin) Valor de ARGUMENT_TYPE SCANDIR FORWARD REVERSE SCANGRAN INTEGER Paralelismo intraparticin, granularidad de la exploracin paralela de intraparticin, expresada en SCANUNIT. Paralelismo intraparticin, exploracin de ndice o Tabla. Paralelismo intraparticin, unidad de granularidad de exploracin. Paralelismo intraparticin, indicador TEMP compartido. Distintivo de materializacin lenta. TRUE FALSE SNGLPROD TRUE FALSE SORTKEY Cada fila de este tipo contendr: 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) (D) SORTTYPE PARTITIONED SHARED ROUND ROBIN REPLICATED SRCSEVER SPILLED INTEGER SQLCA Informacin de advertencia STMTHEAP INTEGER STREAM TRUE FALSE Nombre del servidor Servidor fuente (enviar a). El nmero estimado de pginas del vertido SORT Cdigos de advertencia y de razn emitidos durante la operacin Explain. Tamao de la pila de sentencia al iniciar la compilacin de una sentencia. La fuente remota es de modalidad continua. Ascendente Descendente Paralelismo intraparticin, tipo SORT. Indicador SORT o TEMP de paralelismo intraparticin generado por un solo agente. Columnas de clave de clasificacin. Valores de ARGUMENT_VALUE posibles Descripcin Direccin de exploracin.
SCANTYPE SCANUNIT
LOCAL PARALLEL
791
Tabla EXPLAIN_ARGUMENT
Tabla 212. Valores de las columnas ARGUMENT_TYPE y ARGUMENT_VALUE (continuacin) Valor de ARGUMENT_TYPE TABLOCK EXCLUSIVE INTENT EXCLUSIVE INTENT NONE INTENT SHARE REUSE SHARE SHARE INTENT EXCLUSIVE SUPER EXCLUSIVE UPDATE TEMPSIZE TQDEGREE TQMERGE TRUE FALSE TQREAD READ AHEAD STEPPING SUBQUERY STEPPING TQSEND BROADCAST DIRECTED SCATTER SUBQUERY DIRECTED TQ TYPE TQ_ORIGIN TRUNCTQ LOCAL ASYNCHRONY INPUT OUTPUT INPUT AND OUTPUT Paralelismo intraparticin, Cola de tabla. La razn por la que la Cola de tabla se introdujo en el plan de acceso. Indicador de Cola de tabla truncada. INPUT indica que el truncado se produce en la entrada de la Cola de tabla. OUPUT indica que el truncado se produce en la salida de la Cola de tabla. INPUT y OUTPUT indica que el truncado se produce tanto en la entrada como en la salida de la Cola de tabla. SORT truncado (limita el nmero de filas generadas). Indicador de exclusividad. TRUE FALSE UNIQKEY Cada fila de este tipo contendr: v El valor ordinal de la columna en clave (seguido por dos puntos y un espacio) v Nombre de columna VOLATILE XDFOUT TRUE DECIMAL Tabla voltil XDFOUT indica el nmero esperado de documentos que devolver el operador XISCAN para cada nodo de contexto. Columnas de claves de unicidad. Propiedad de envo de Cola de tabla. INTEGER INTEGER Tamao de pgina de la tabla temporal. Paralelismo intraparticin, nmero de subagentes que acceden a la Cola de tabla. Indicador de Fusin de cola de tabla (clasificada). Propiedad de lectura de Cola de tabla. Valores de ARGUMENT_VALUE posibles Descripcin Intento de bloqueo de tabla.
TRUNCSRT UNIQUE
TRUE
792
Tabla EXPLAIN_ARGUMENT
Tabla 212. Valores de las columnas ARGUMENT_TYPE y ARGUMENT_VALUE (continuacin) Valor de ARGUMENT_TYPE XLOGID Valores de ARGUMENT_VALUE posibles Un identificador que consiste en un nombre de esquema SQL y el nombre de un ndice sobre datos XML Una expresin XPATH y el conjunto de resultados en un formato interno Un identificador que consiste en un nombre de esquema SQL y el nombre de un ndice sobre datos XML fsico Descripcin XLOGID identifica el ndice sobre datos XML elegido por el optimizador para el operador XISCAN. Este argumento indica la evaluacin de una expresin XPATH del operador XSCAN. XPHYID identifica el ndice fsico asociado con un ndice sobre datos XML que utiliza el operador XISCAN.
XPATH XPHYID
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 213. 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. Posibilidad de nulos? No No No
Clave? Descripcin PK, FK PK, FK PK, FK ID de autorizacin del iniciador de esta peticin de Explain. Hora de inicio de la peticin de Explain. 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. Esquema, o calificador, de la fuente de la peticin de Explain. Versin de la fuente de la peticin de Explain. Nivel de informacin de Explain para el que esta fila es aplicable. Los valores vlidos son: O P Texto original (introducido por el usuario) PLAN SELECTION
No No No
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.
793
Tabla EXPLAIN_DIAGNOSTIC
Tabla 213. Tabla EXPLAIN_DIAGNOSTIC (continuacin). PK significa que la columna forma parte de una clave primaria; FK significa que la columna forma parte de una clave fornea. Posibilidad de nulos? No
Clave? Descripcin 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. ID del diagnstico para una instancia concreta de una sentencia en la tabla EXPLAIN_STATEMENT. 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.
DIAGNOSTIC_ID CODE
INTEGER INTEGER
No No
PK No
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 214. 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. Posibilidad de nulos? No No No
Clave? Descripcin FK FK FK ID de autorizacin del iniciador de esta peticin de Explain. Hora de inicio de la peticin de Explain. 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. Esquema, o calificador, de la fuente de la peticin de Explain. Versin de la fuente de la peticin de Explain. Nivel de informacin de Explain para el que esta fila es aplicable. Los valores vlidos son: O P Texto original (introducido por el usuario) PLAN SELECTION
No No No
FK FK FK
794
Tabla EXPLAIN_DIAGNOSTIC_DATA
Tabla 214. Tabla EXPLAIN_DIAGNOSTIC_DATA (continuacin). PK significa que la columna forma parte de una clave primaria; FK significa que la columna forma parte de una clave fornea. Posibilidad de nulos? No
Clave? Descripcin 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. 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. ID del diagnstico para una instancia concreta de una sentencia en la tabla EXPLAIN_STATEMENT. Posicin del smbolo en el texto de mensaje completo. Smbolo de mensaje que insertar en el texto de mensaje completo; es posible que est truncado. Ms informacin detallada, si est disponible.
SECTNO
INTEGER
No
FK
No No S S
PK No No No
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 215. 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. Posibilidad de nulos? No No No
Clave? Descripcin PK PK PK ID de autorizacin del iniciador de esta peticin de Explain. Hora de inicio de la peticin de Explain. 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. Esquema, o calificador, de la fuente de la peticin de Explain. Versin de la fuente de la peticin de Explain.
SOURCE_SCHEMA SOURCE_VERSION
VARCHAR(128) VARCHAR(64)
No No
PK PK
795
Tabla EXPLAIN_INSTANCE
Tabla 215. 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. Posibilidad de nulos? No
Clave? Descripcin 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. No se ha tomado ninguna instantnea de Explain. Se ha capturado informacin de Explain normal. 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 rr m Nmero de versin Nmero de release 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 D SQL esttico SQL dinmico
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.
796
Tabla EXPLAIN_INSTANCE
Tabla 215. 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. Posibilidad de nulos? No
Clave? Descripcin 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 U B Sin bloqueo Bloqueo de cursores no ambiguos 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 RS CS UR Lectura repetible Estabilidad de lectura Estabilidad del cursor 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. Contiene el valor del parmetro de configuracin avg_appls en el momento de la invocacin de Explicar. Contiene el valor del parmetro de configuracin de la base de datos sortheap en el momento de la invocacin de Explicar. Contiene el valor del parmetro de configuracin de la base de datos locklist en el momento de la invocacin de Explicar. Contiene el valor del parmetro de configuracin de la base de datos maxlocks en el momento de la invocacin de Explicar. Contiene el nmero de bloqueos que el optimizador supone que estn disponibles para cada usuario. (Derivado de locklist y maxlocks.) Contiene el valor del parmetro de configuracin del gestor de base de datos cpuspeed en el momento de la invocacin de Explicar. Comentario suministrado por el usuario. Contiene el valor del parmetro de configuracin de la base de datos dbheap en el momento de la invocacin de Explicar.
AVG_APPLS
INTEGER
No
No
SORTHEAP
INTEGER
No
No
LOCKLIST
INTEGER
No
No
MAXLOCKS
SMALLINT
No
No
LOCKS_AVAIL
INTEGER
No
No
CPU_SPEED
DOUBLE
No
No
REMARKS DBHEAP
VARCHAR(254) INTEGER
S No
No No
797
Tabla EXPLAIN_INSTANCE
Tabla 215. 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. Posibilidad de nulos? No
Clave? Descripcin No Contiene el valor del parmetro de configuracin de la base de datos comm_bandwidth en el momento de la invocacin de Explicar. Los valores posibles son: v N = Sin paralelismo v P = Paralelismo intraparticin v IP = Paralelismo interparticiones v BP = Paralelismo intraparticin y paralelismo interparticiones
PARALLELISM
CHAR(2)
No
No
DATAJOINER
CHAR(1)
No
No
Los valores posibles son: v N = Plan de sistemas no federados v Y = Plan de sistemas federados
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 216. 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. Posibilidad de nulos? No No No
Clave? Descripcin FK FK FK ID de autorizacin del iniciador de esta peticin de Explain. Hora de inicio de la peticin de Explain. 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. Esquema, o calificador, de la fuente de la peticin de Explain. Versin de la fuente de la peticin de Explain. Nivel de informacin de Explain para el que esta fila es aplicable. El nmero de sentencia en el paquete con el que est relacionado esta informacin de Explain. El nmero de seccin en el paquete con el que est relacionada esta informacin de Explain. Esquema al que pertenece este objeto. Nombre del objeto. Etiqueta descriptiva del tipo de objeto.
No No No No No No No No
FK FK FK FK FK No No No
798
Tabla EXPLAIN_OBJECT
Tabla 216. 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. Posibilidad de nulos? S S
Clave? Descripcin No No Hora de creacin del objeto; nulo si es una funcin de tabla. ltima vez que se actualizaron las estadsticas para este objeto; nulo si no existen estadsticas para este objeto. El nmero de columnas en este objeto. El nmero estimado de filas en este objeto. La anchura media del objeto en bytes. Se establece en -1 para un ndice. El nmero estimado de pginas que ocupa el objeto en la agrupacin de almacenamientos intermedios. Establecido en -1 para una funcin de tabla. Indica si las filas del objeto son diferenciadas (es decir, si hay duplicados) Los valores posibles son: Y N S No
No No No No
No No No No
DISTINCT
CHAR(1)
No
No
TABLESPACE_NAME
VARCHAR(128)
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. 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. 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. 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. 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. 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.
OVERHEAD
DOUBLE
No
No
TRANSFER_RATE
DOUBLE
No
No
PREFETCHSIZE
INTEGER
No
No
EXTENTSIZE
INTEGER
No
No
CLUSTER
DOUBLE
No
No
799
Tabla EXPLAIN_OBJECT
Tabla 216. 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. Posibilidad de nulos? No
Clave? Descripcin 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. 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. 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. 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. 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. El nmero de valores de primera clave diferenciada utilizando las primeras columnas {2,3,4} del ndice. Se establece en -1 para una tabla, una funcin de tabla o si no est disponible esta estadstica. 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. 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. Indica la fuente para las estadsticas. Se establece en 1 si se trata de un solo nodo. Espacio entre secuencias. Espacio entre las secuencias al captar utilizando el ndice. Promedio de pginas del ndice accesibles en secuencia. Promedio de pginas de la tabla accesibles en secuencia al captar utilizando el ndice. Promedio de pginas del ndice aleatorias entre los accesos a pginas secuenciales.
NLEVELS
INTEGER
No
No
FULLKEYCARD
BIGINT
No
No
OVERFLOW
BIGINT
No
No
FIRSTKEYCARD
BIGINT
No
No
No No No No
No No No No
DENSITY
INTEGER
No
No
STATS_SRC
CHAR(1)
No No No No No No
No No No No No No
AVERAGE_SEQUENCE_ DOUBLE GAP AVERAGE_SEQUENCE_ DOUBLE FETCH_GAP AVERAGE_SEQUENCE_ DOUBLE PAGES AVERAGE_SEQUENCE_ DOUBLE FETCH_PAGES AVERAGE_RANDOM_ PAGES DOUBLE
800
Tabla EXPLAIN_OBJECT
Tabla 216. 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. Posibilidad de nulos? No
Clave? Descripcin No Promedio de pginas de la tabla aleatorias entre los accesos a pginas secuenciales al captar utilizando el ndice. Nmero total de identificadores de filas del ndice. Nmero total de identificadores de filas pseudosuprimidos del ndice. Nmero total de pginas hojas vacas del ndice. Nmero total de bloques de clster multidimensional (MDC) activos de la tabla. Nmero de particiones de datos para una tabla particionada. Se establece en 1 si la tabla no est particionada.
No No No No No
No No No No No
Tabla 217. Valores de OBJECT_TYPE posibles Valor IX NK RX DP_TABLE TA TF +A +C +F +G +N +T +V Descripcin ndice Apodo ndice RCT Tabla de particin de datos Tabla Funcin de tabla Alias de referencia del compilador Restriccin de referencia del compilador Funcin de referencia del compilador Activador de referencia del compilador Apodo de referencia del compilador Tabla de referencia del compilador Vista de referencia del compilador
Tabla EXPLAIN_OPERATOR
La tabla EXPLAIN_OPERATOR contiene todos los operadores necesarios para que el compilador de consultas satisfaga la sentencia de consulta.
Tabla 218. 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. Posibilidad de nulos? No
801
Tabla EXPLAIN_OPERATOR
Tabla 218. 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. Posibilidad de nulos? No No
Clave? Descripcin FK FK Hora de inicio de la peticin de Explain. 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. Esquema, o calificador, de la fuente de la peticin de Explain. Versin de la fuente de la peticin de Explain. Nivel de informacin de Explain para el que esta fila es aplicable. El nmero de sentencia en el paquete con el que est relacionado esta informacin de Explain. El nmero de seccin en el paquete con el que est relacionada esta informacin de Explain. ID exclusivo para este operador en esta consulta. Etiqueta descriptiva para el tipo de operador. Coste total acumulado estimado (en timerons) de la ejecucin del plan de acceso elegido hasta este operador inclusive. 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). Coste de CPU acumulado estimado (en las instrucciones) de la ejecucin del plan de acceso elegido hasta este operador (inclusive). 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. Coste acumulado estimado (en timerons) de la lectura de la siguiente fila para el plan de acceso elegido hasta este operador inclusive. 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. Coste de CPU acumulado estimado (en instrucciones) de la lectura de la siguiente fila para el plan de acceso elegido hasta este operador inclusive. Coste de comunicacin acumulado estimado (en tramas TCP/IP) de la ejecucin del plan de acceso elegido hasta este operador (inclusive).
No No No No No No No No
FK FK FK FK FK No No No
IO_COST
DOUBLE
No
No
CPU_COST
DOUBLE
No
No
FIRST_ROW_COST
DOUBLE
No
No
RE_TOTAL_COST
DOUBLE
No
No
RE_IO_COST
DOUBLE
No
No
RE_CPU_COST
DOUBLE
No
No
COMM_COST
DOUBLE
No
No
802
Tabla EXPLAIN_OPERATOR
Tabla 218. 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. Posibilidad de nulos? No
Clave? Descripcin 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. Requisitos estimados de almacenamiento intermedio para este operador y sus entradas. Coste total acumulado estimado (en timerons) de la ejecucin de operacin(es) en base(s) de datos remota(s). Coste de comunicacin acumulado estimado de la ejecucin del plan de acceso remoto elegido hasta este operador (inclusive).
BUFFERS
DOUBLE
No No
No No
REMOTE_TOTAL_COST DOUBLE
REMOTE_COMM_COST DOUBLE
No
No
Tabla 219. Valores de OPERATOR_TYPE Valor DELETE EISCAN FETCH FILTER GENROW GRPBY HSJOIN INSERT IXAND IXSCAN MSJOIN NLJOIN RETURN RIDSCN RPD SHIP SORT TBSCAN TEMP TQ UNION UNIQUE UPDATE XISCAN XSCAN Descripcin Suprimir Exploracin de ndice ampliada Leer Filtrar filas Generar fila Agrupar por Unin de generacin aleatoria Insertar Aplicacin de AND de ndice de mapas de bits dinmico Exploracin del ndice relacional Fusionar unin de exploracin Unin de bucle anidado Resultado Exploracin de identificador de fila (RID) Desplazamiento descendente remoto Enviar consulta a sistema remoto Clasificar Exploracin de tabla Construccin de tabla temporal Cola de tabla Unin Eliminacin de duplicados Actualizar Exploracin del ndice sobre datos XML Exploracin mediante navegacin de documento XML
Apndice I. Tablas de Explain
803
Tabla EXPLAIN_OPERATOR
Tabla 219. Valores de OPERATOR_TYPE (continuacin) Valor XANDOR Descripcin Aadir AND u OR al ndice sobre datos XML
Tabla EXPLAIN_PREDICATE
La tabla EXPLAIN_PREDICATE identifica los predicados que aplica un operador especfico.
Tabla 220. 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. Posibilidad de nulos? No No No
Clave? Descripcin FK FK FK ID de autorizacin del iniciador de esta peticin de Explain. Hora de inicio de la peticin de Explain. 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. Esquema, o calificador, de la fuente de la peticin de Explain. Versin de la fuente de la peticin de Explain. Nivel de informacin de Explain para el que esta fila es aplicable. El nmero de sentencia en el paquete con el que est relacionado esta informacin de Explain. El nmero de seccin en el paquete con el que est relacionada esta informacin de Explain. ID exclusivo para este operador en esta consulta. 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.
No No No No No No No
FK FK FK FK FK No No
HOW_APPLIED
CHAR(10)
No
No
804
Tabla EXPLAIN_PREDICATE
Tabla 220. 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. Posibilidad de nulos? No
Clave? Descripcin No Indica cundo se evala la subconsulta utilizada en este predicado. Los valores posibles 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. 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. Hay ms de una subconsulta en este predicado.
EAO
El tipo de operador relacional utilizado en este predicado. Si es necesaria una corriente de datos de una subconsulta o no para este predicado. Puede ser necesarias mltiples corrientes de subconsultas. Los valores posibles son: N Y No es necesaria ninguna corriente de subconsulta 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.
805
Tabla EXPLAIN_PREDICATE
Tabla 220. 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. Posibilidad de nulos? S
Clave? Descripcin 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, en un comentario. El 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, aparecer un comentario vaco al final del texto del predicado. Nulo si no est disponible.
RANGE_NUM
INTEGER
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 221. Valores de HOW_APPLIED posibles Valor BSARG DPSTART DPSTOP JOIN RESID SARG START STOP Descripcin Evaluado como un predicado comparable una vez para cada bloque Predicado de clave de inicio utilizado en la eliminacin de particiones de datos Predicado de clave de parada utilizado en la eliminacin de particiones de datos Utilizado para unir tablas Evaluado como un predicado residual Evaluado como un predicado comparable para un ndice o pgina de datos Utilizado como una condicin de inicio Utilizado como una condicin de detencin
Tabla 222. Valores de RELOP_TYPE posibles Valor blancos EQ GE GT IN LE LK LT NE Descripcin No aplicable Igual Mayor o igual que Mayor que En lista Menor o igual que Igual Menor que Diferente a
Consulta de SQL, Volumen 1
806
Tabla EXPLAIN_PREDICATE
Tabla 222. Valores de RELOP_TYPE posibles (continuacin) Valor NL NN Descripcin Es nulo No es nulo
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 223. 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. Posibilidad de nulos? No No No
Clave? Descripcin PK, FK PK, FK PK, FK ID de autorizacin del iniciador de esta peticin de Explain. Hora de inicio de la peticin de Explain. 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. Esquema, o calificador, de la fuente de la peticin de Explain. Versin de la fuente de la peticin de Explain. Nivel de informacin de Explain para el que esta fila es aplicable. Los valores vlidos son: O P Texto original (tal como lo ha entrado el usuario) PLAN SELECTION
No No No
PK, FK FK PK
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. 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.
Apndice I. Tablas de Explain
SECTNO
INTEGER
No
PK
807
Tabla EXPLAIN_STATEMENT
Tabla 223. 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. Posibilidad de nulos? No
Clave? Descripcin 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. 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. Etiqueta descriptiva para el tipo de consulta que se est explicando. Los valores posibles son: CL CP D DC I M S SI U UC Llamada SQL compuesto (Dinmico) Suprimir Supresin en la ubicacin actual del cursor Insertar Fusionar Seleccin Establecer integridad o Renovar tabla Actualizar Actualizacin en la ubicacin actual del cursor
QUERYTAG
CHAR(20)
No
No
STATEMENT_TYPE
CHAR(2)
No
No
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 valores posibles son: N Y No aplicable (blanco) No S
808
Tabla EXPLAIN_STATEMENT
Tabla 223. 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. Posibilidad de nulos? No
Clave? Descripcin No Indica si esta sentencia se considera suprimible. Es relevante en particular para las sentencias SELECT que pueden determinarse como suprimibles en potencia. Los valores posibles son: N Y No aplicable (blanco) No 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. 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. 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.
STATEMENT_TEXT
CLOB(2M)
No
No
SNAPSHOT
BLOB(10M)
No
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.
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.
809
Tabla EXPLAIN_STREAM
Tabla 224. 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. Posibilidad de nulos? No No No
Clave? Descripcin FK FK FK ID de autorizacin del iniciador de esta peticin de Explain. Hora de inicio de la peticin de Explain. 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. Esquema, o calificador, de la fuente de la peticin de Explain. Versin de la fuente de la peticin de Explain. Nivel de informacin de Explain para el que esta fila es aplicable. El nmero de sentencia en el paquete con el que est relacionado esta informacin de Explain. El nmero de seccin en el paquete con el que est relacionada esta informacin de Explain. ID exclusivo para esta corriente de datos en el operador especificado. Indica la fuente de la corriente de datos: O D Operador Objeto de datos
No No No No No No No
FK FK FK FK FK No No
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. Indica el destino de la corriente de datos: O D Operador Objeto de datos
TARGET_TYPE
CHAR(1)
No
No
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. El esquema al que pertenece el objeto de datos afectado. Se establece en nulo si SOURCE_TYPE y TARGET_TYPE son O. Nombre del objeto que es el sujeto de la corriente de datos. Se establece en nulo si SOURCE_TYPE y TARGET_TYPE son O. Cardinalidad estimada de la corriente de datos. El nmero de columnas en la corriente de datos. 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.
OBJECT_SCHEMA
VARCHAR(128)
No
OBJECT_NAME
VARCHAR(128)
No
No No No
No No No
810
Tabla EXPLAIN_STREAM
Tabla 224. 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. Posibilidad de nulos? S
Clave? Descripcin 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 SINGLE_NODE
SMALLINT CHAR(5)
No S
No No
ID de correlacin de distribucin. 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 FUNC Dirigido utilizando el ID de fila Dirigido utilizando una funcin (HASHEDVALUE() o DBPARTITIONNUM()) Dirigido utilizando un valor de correlacin
CORR
Numberic Dirigido hacia un nodo individual predeterminado PARTITION_COLUMNS CLOB(2M) SEQUENCE_SIZES CLOB(2M) S S No No Lista de las columnas en las que este flujo de datos se distribuye. 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.
811
Tabla EXPLAIN_STREAM
812
v Las tablas de v Se rellenan las explicacin se tablas de rellenan explicacin. cuando una v Los resultados sentencia est de la consulta calificada para no se su devuelven (las reoptimizacin sentencias durante la dinmicas no ejecucin. se ejecutan). v Se devuelven v Se los resultados recomiendan de la consulta. los ndices. v Las tablas de v Se rellenan las explicacin se tablas de rellenan explicacin. cuando una v Se toma una sentencia est Instantnea de calificada para explicacin. su v Los resultados reoptimizacin de la consulta durante la no se ejecucin. devuelven (las v Se toma una sentencias Instantnea de dinmicas no explicacin. se ejecutan). v Se devuelven v Se los resultados recomiendan de la consulta. los ndices.
YES
v Se rellenan las tablas de explicacin. v Se toma una Instantnea de explicacin. v Se devuelven los resultados de la consulta.
v Se rellenan las tablas de explicacin. v Se toma una Instantnea de explicacin. v Los resultados de la consulta no se devuelven (las sentencias dinmicas no se ejecutan).
813
v Las tablas de v Se rellenan las explicacin se tablas de rellenan explicacin. cuando una v Se toma una sentencia est Instantnea de calificada para explicacin. su v Los resultados reoptimizacin de la consulta durante la no se ejecucin. devuelven (las v Instantnea de sentencias explicacin dinmicas no tomada se ejecutan). cuando una v Se sentencia est recomiendan calificada para los ndices. su reoptimizacin durante la ejecucin. v Los resultados de la consulta no se devuelven (las sentencias dinmicas o de vinculacin incremental no se ejecutan).
REOPT
v Instantnea de v Se rellenan las v Se rellenan las v Las tablas de v Se rellenan las explicacin tablas de tablas de explicacin se tablas de tomada explicacin. explicacin. rellenan explicacin. cuando una cuando una v Instantnea de v Instantnea de v Instantnea de sentencia est sentencia est explicacin explicacin explicacin calificada para calificada para tomada tomada tomada su su cuando una cuando una cuando una reoptimizacin reoptimizacin sentencia est sentencia est sentencia est durante la durante la calificada para calificada para calificada para ejecucin. ejecucin. su su su v Se devuelven reoptimizacin reoptimizacin v Instantnea de reoptimizacin los resultados durante la durante la explicacin durante la de la consulta. ejecucin. ejecucin. tomada ejecucin. cuando una v Se devuelven v Los resultados v Los resultados sentencia est los resultados de la consulta de la consulta calificada para de la consulta. no se no se su devuelven (las devuelven (las reoptimizacin sentencias sentencias durante la dinmicas o de dinmicas o de ejecucin. vinculacin vinculacin incremental no v Se devuelven incremental no se ejecutan). los resultados se ejecutan). de la consulta. v Se recomiendan los ndices.
v Se rellenan las tablas de explicacin. v Instantnea de explicacin tomada cuando una sentencia est calificada para su reoptimizacin durante la ejecucin. v Los resultados de la consulta no se devuelven (las sentencias dinmicas o de vinculacin incremental no se ejecutan). v Se evalan los ndices.
El registro especial CURRENT EXPLAIN MODE interacta con la opcin de vinculacin EXPLAIN de la siguiente manera en SQL dinmico.
814
v Las tablas de v Las tablas de explicacin se explicacin se rellenan para SQL rellenan para SQL esttico. esttico cuando una sentencia est v Las tablas de calificada para su explicacin se 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 explicacin se rellenan para SQL dinmico. v Se devuelven los resultados de la consulta.
v Las tablas de explicacin se rellenan para SQL esttico. v Las tablas de explicacin se rellenan para SQL dinmico. v Se devuelven los resultados de la consulta.
v Las tablas de v Las tablas de explicacin se explicacin se rellenan para SQL rellenan para SQL esttico. esttico cuando una sentencia est v Las tablas de calificada para su explicacin se 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.
815
v Las tablas de v Las tablas de explicacin se explicacin se rellenan para SQL rellenan para SQL esttico. esttico cuando una sentencia est v Las tablas de v Los resultados de la v Las tablas de calificada para su explicacin se explicacin se consulta no se reoptimizacin rellenan para SQL rellenan para SQL devuelven (las durante la dinmico. dinmico. sentencias ejecucin. dinmicas no se v Los resultados de la v Los resultados de la v Las tablas de ejecutan). consulta no se consulta no se explicacin se devuelven (las devuelven (las rellenan para SQL sentencias sentencias esttico cuando una dinmicas no se dinmicas no se sentencia est ejecutan). 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 resultados de la consulta. v Las tablas de v Las tablas de v Las tablas de explicacin se explicacin se explicacin se 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 resultados de la consulta. v Se devuelven los resultados de la consulta. v Se devuelven los resultados de la consulta.
816
v Las tablas de v Las tablas de explicacin se explicacin se rellenan para SQL rellenan para SQL esttico. esttico cuando una sentencia est v Las tablas de v Los resultados de la v Las tablas de calificada para su explicacin se explicacin se consulta no se reoptimizacin rellenan para SQL rellenan para SQL devuelven (las durante la dinmico. dinmico. sentencias ejecucin. dinmicas no se v Los resultados de la v Los resultados de la v Las tablas de ejecutan). consulta no se consulta no se explicacin se devuelven (las devuelven (las v Se recomiendan los rellenan para SQL sentencias sentencias ndices. esttico cuando una dinmicas no se dinmicas no se sentencia est ejecutan). 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.
v Las tablas de v Las tablas de explicacin se explicacin se rellenan para SQL rellenan para SQL esttico. esttico cuando una sentencia est v Las tablas de v Los resultados de la v Las tablas de calificada para su explicacin se explicacin se consulta no se reoptimizacin rellenan para SQL rellenan para SQL devuelven (las durante la dinmico. dinmico. sentencias ejecucin. dinmicas no se v Los resultados de la v Los resultados de la v Las tablas de ejecutan). consulta no se consulta no se explicacin se devuelven (las devuelven (las v Se evalan los rellenan para SQL sentencias sentencias ndices. esttico cuando una dinmicas no se dinmicas no se sentencia est ejecutan). ejecutan). calificada para su v Se evalan los v Se evalan los reoptimizacin ndices. ndices. durante la ejecucin. v Las tablas de explicacin se rellenan para SQL esttico. v Los resultados de la consulta no se devuelven (las sentencias dinmicas no se ejecutan). v Se evalan los ndices.
817
818
v Se toma una Instantnea de explicacin para SQL esttico cuando una v Los resultados de la v Se toma una sentencia est Instantnea de consulta no se calificada para su explicacin para devuelven (las reoptimizacin SQL dinmico. sentencias durante la dinmicas no se v Los resultados de la ejecucin. ejecutan). consulta no se v Se toma una devuelven (las Instantnea de sentencias explicacin para dinmicas no se 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 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.
v Se toma una Instantnea de explicacin para SQL esttico cuando una sentencia est calificada para su reoptimizacin durante la ejecucin. v Se toma una 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.
v Se toma una Instantnea de explicacin para SQL esttico cuando una sentencia est calificada para su reoptimizacin durante la ejecucin. v Se toma una 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.
v Se toma una Instantnea de explicacin para SQL esttico cuando una sentencia est calificada para su reoptimizacin durante la ejecucin. v Se toma una 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.
819
820
821
Tablas 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 tiene la estructura siguiente:
Tabla 228. Estructura de la columna de mensajes de la tabla de excepciones
Nmero de campo Contenido 1 2 Nmero de violaciones de restriccin
Tamao 5 bytes
Comentarios Justificada por la derecha rellenada con 0 K - Violacin de 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 particionamiento de datos S - Etiqueta de seguridad de fila no vlida L - Violacin de normas de grabacin LBAC de DB2
3 4 5 6
Longitud de restriccin/columnab /ID de ndicec Nombre de restriccin/Nombre de columnab/ID de ndicec Separador Tipo de la siguiente violacin de restriccin
<espacio><dos puntos><espacio> K - Violacin de 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 particionamiento de datos S - Etiqueta de seguridad de fila no vlida L - Violacin de normas de grabacin LBAC de DB2
7 8 .....
822
Tablas de excepciones
Tabla 228. Estructura de la columna de mensajes de la tabla de excepciones (continuacin)
Nmero de campo Contenido v
a
Tamao
Comentarios
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. 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>)
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.
823
Tablas de excepciones
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';
824
825
Nota: 1. Aunque la opcin NO SQL implica que no puede especificarse ninguna sentencia de SQL, las sentencias no ejecutables no estn restringidas.
826
827
828
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. Es una sentencia ejecutable que no se puede preparar dinmicamente. 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-lenguaje-principal
829
Descripcin
nombre-procedimiento o variable-lenguaje-principal 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). 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-lenguaje-principal. Si se especifica variable-lenguaje-principal, 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 sistemas UNIX, el directorio por omisin para las bibliotecas de procedimiento 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.
830
831
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 de SQL: Si un procedimiento de 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 de 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
832
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);
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) ; ...
Apndice M. CALL invocada desde una sentencia compilada
833
834
835
SC23-5845-02
Abril de 2009
SC11-3506-02
S S S
Data Movement Utilities SC23-5847-02 Guide and Reference Data Recovery and High Availability Guide and Reference Data Servers, Databases, and Database Objects Guide Database Security Guide SC23-5848-02
SC23-5849-02
Abril de 2009
SC23-5850-02
S S S S No S
Abril de 2009 Abril de 2009 Abril de 2009 Abril de 2009 Abril de 2009 Abril de 2009
Desarrollo de aplicaciones SC11-3499-02 ADO.NET y OLE DB Desarrollo de aplicaciones SC11-3500-02 de SQL incorporado Desarrollo de aplicaciones SC11-3501-02 Java Desarrollo de aplicaciones SC11-3502-02 Perl y PHP Desarrollo de rutinas definidas por el usuario (SQL y externas) SC11-3503-02
836
Iniciacin al desarrollo de GC11-3504-02 aplicaciones de bases de datos Iniciacin a la instalacin GC11-3511-02 y administracin de DB2 en Linux y Windows Internationalization Guide Consulta de mensajes, Volumen 1 Consulta de mensajes, Volumen 2 Gua de migracin SC23-5858-02 GI11-7823-01 GI11-7824-01 GC11-3510-02
Abril de 2009
S No No S S
Abril de 2009 Abril de 2009 Abril de 2009 Abril de 2009 Abril de 2009
SC11-3615-02 Net Search Extender Gua de administracin y del usuario Partitioning and Clustering Guide Query Patroller Administration and Users Guide SC23-5860-02 SC23-8507-01
S S
Gua rpida para clientes GC11-3513-02 de IBM Data Server Gua rpida para servidores DB2 Spatial Extender and Geodetic Data Management Feature Gua del usuario y manual de consulta Consulta de SQL, Volumen 1 Consulta de SQL, Volumen 2 System Monitor Guide and Reference Gua de Text Search Troubleshooting Guide Tuning Database Performance Gua de aprendizaje de Visual Explain Novedades Workload Manager Guide and Reference pureXML Guide XQuery Reference GC11-3512-02 SC11-3614-02
No S S
SC11-3508-02 SC11-3509-02 SC23-5865-02 SC11-3717-01 GI11-7857-02 SC23-5867-02 SC11-3518-00 SC11-3517-02 SC23-5870-02 SC23-5871-02 SC23-5872-02
S S S S No S No S S S No
Abril de 2009 Abril de 2009 Abril de 2009 Abril de 2009 Abril de 2009 Abril de 2009
837
Tabla 231. Informacin tcnica especfica de DB2 Connect Nombre Nmero de documento Copia impresa disponible S S S ltima actualizacin Abril de 2009 Abril de 2009 Abril de 2009
Gua rpida para DB2 GC11-3515-02 Connect Personal Edition Gua rpida para servidores DB2 Connect GC11-3516-02
Tabla 232. Informacin tcnica de Information Integration Nombre Nmero de documento Copia impresa disponible S ltima actualizacin Marzo de 2008
Information Integration: SC19-1020-01 Administration Guide for Federated Systems Information Integration: ASNCLP Program Reference for Replication and Event Publishing Information Integration: Configuration Guide for Federated Data Sources Information Integration: SQL Replication Guide and Reference Information Integration: Introduction to Replication and Event Publishing SC19-1018-02
Marzo de 2008
SC19-1034-01
No
SC19-1030-01
Marzo de 2008
SC19-1028-01
Marzo de 2008
838
donde sqlstate representa un estado de SQL vlido de cinco dgitos y cdigo de clase representa los dos primeros dgitos del estado de SQL. Por ejemplo, ? 08003 visualiza la ayuda para el estado de SQL 08003, y ? 08 visualiza la ayuda para el cdigo de clase 08.
839
840
2. Inicie el Centro de informacin en modalidad autnoma. v En Windows: a. Abra una ventana de mandatos. b. Navegue hasta la va de acceso en la que est instalado el Centro de informacin. De manera predeterminada, el Centro de informacin de DB2 est instalado en el directorio Archivos_de_programa\IBM\DB2 Information Center\Version 9.5, donde Archivos_de_programa representa la ubicacin del directorio Archivos de programa. c. Navegue desde el directorio de instalacin al directorio doc\bin. d. Ejecute el archivo help_start.bat:
help_start.bat
v En Linux: a. Navegue hasta la va de acceso en la que est instalado el Centro de informacin. De forma predeterminada, el Centro de informacin de DB2 se instala en el directorio /opt/ibm/db2ic/V9.5. b. Navegue desde el directorio de instalacin al directorio doc/bin. c. Ejecute el script help_start:
help_start
Se inicia el navegador Web por omisin de los sistemas para visualizar el Centro de informacin autnomo.
Apndice N. Visin general de la informacin tcnica de DB2
841
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, navegue hasta el directorio de instalacin doc/bin y ejecute el script help_end:
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 Centro de informacin de DB2: v En Windows, pulse Inicio Panel de control Herramientas administrativas Servicios. A continuacin, pulse con el botn derecho del ratn en el servicio Centro de informacin de DB2 y seleccione Iniciar. v En Linux, especifique el mandato siguiente:
/etc/init.d/db2icdv95 start
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.
842
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.
843
Trminos y condiciones
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.
844
Apndice O. Avisos
Esta informacin ha sido desarrollada para productos y servicios que se ofrecen en Estados Unidos de Amrica Es posible que IBM no comercialice en otros 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.
845
Avisos
Este documento puede proporcionar enlaces o referencias a sitios y recursos que no son de IBM. IBM no representa, no da garantas, ni se compromete con los recursos de terceros ni con los recursos que no son de IBM a los cuales se puede hacer referencia, acceder desde o enlazarse con desde este documento. Un enlace a un sitio que no es de IBM no implica que IBM apruebe el contenido o la utilizacin de dicho sitio Web o a su propietario. Adems, IBM no forma parte ni es responsable de ninguna transaccin que el usuario pueda realizar con terceros, an cuando llegue a conocerlos (o utilice un enlace a ellos) desde un sitio de IBM. De acuerdo a esto, el usuario reconoce y acepta que IBM no es responsable de la disponibilidad de dichos recursos o sitios externos ni tampoco es responsable de ningn contenido, servicio, producto u otros materiales que estn o se encuentren disponibles desde dichos sitios o recursos. Cualquier software que proporcionen terceras partes, estarn sujetos a los trminos y condiciones de licencia que acompaen al software. 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.
846
Avisos
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 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
IBM, el logotipo de IBM e ibm.com son marcas registradas de International Business Machines Corp., que se han registrado en muchas otras jurisdicciones. Otros nombres de productos y servicios pueden ser marcas registradas de IBM o de otras empresas. Puede consultarse en lnea una lista actualizada de las marcas registradas de IBM en la seccin Copyright and trademark information de la web www.ibm.com/legal/copytrade.shtml. Los siguientes trminos son marcas registradas de otras empresas. v Linux es una marca registrada de Linus Torvalds en los Estados Unidos y/o en otros pases. v 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. v UNIX es una marca registrada de The Open Group en los Estados Unidos y/o en otros pases. v Intel, el logotipo de Intel, Intel Inside, el logotipo de Intel Inside, Intel Centrino, el logotipo de Intel Centrino, Celeron, Intel Xeon, Intel SpeedStep, Itanium y Pentium son marcas registradas de Intel Corporation o de sus empresas subsidiarias en Estados Unidos y/o en otros pases. Informacin sobre marcas registradas de Intel v Microsoft, Windows, Windows NT y el logotipo de Windows son marcas registradas de Microsoft Corporation 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 O. Avisos
847
848
ndice A
ABS, funcin escalar 285 ABSVAL, funcin escalar 285 ACOS, funcin escalar descripcin 286 valores y argumentos 286 activadores cascada 7 descripcin 7 interacciones 773 longitud mxima de nombre 545 nombres 53 restricciones, interaccin 773 tablas de Explain 777 actualizaciones Centro de informacin de DB2 840 registros especiales actualizables 130 ADVISE_INDEX, tabla 777 ADVISE_INSTANCE, tabla 782 ADVISE_MQT, tabla 782 ADVISE_PARTITION, tabla 784 ADVISE_TABLE, tabla 785 ADVISE_WORKLOAD, tabla 786 agrupaciones de almacenamientos intermedios nombres 53 alias descripcin 53 nombre de alias 53 proceso de encadenamiento 11 TABLE_NAME, funcin 405 TABLE_SCHEMA, funcin 406 visin general 11 ALL, clusula predicado cuantificado 212 SELECT, sentencia 489 ALL, opcin 529 mbito definicin 90 anlisis de envo descripcin 46 AND, tabla de evaluacin 208 ANY, clusula 212 aplicaciones peticionarios 30 aplicaciones de SQL incorporado Java 3 apodos calificacin de un nombre de columna 53 definicin 53 descripcin 39 FROM, clusula nombres expuestos 53 nombres no expuestos 53 subseleccin 489 SELECT, clusula 489 archivo, variables de referencia BLOB 53 CLOB 53 DBCLOB 53 archivos con estructura de tabla versiones que reciben soporte 42 Copyright IBM Corp. 1993, 2009 archivos Excel versiones que reciben soporte 42 archivos planos vase archivos con estructura de tabla 42 argumentos de COALESCE 117 aritmtica AVG, operacin de la funcin 266 buscar valor mximo 273 expresiones, adicin de valores (SUM) 279 valores de coma flotante de expresiones numricas 321 aritmticas columnas, adicin de valores (SUM) 279 CORRELATION, operacin de funcin 268 COVARIANCE, operacin de funcin 271 devolucin de valores de enteros pequeos de expresiones 398 funciones de regresin 275 STDDEV, funcin 278 valores de coma flotante de expresiones numricas 379 valores decimales de expresiones numricas 313 valores enteros, devolucin de expresiones 288, 341 VARIANCE, operacin de funcin 280 aritmticos operadores 164 ARRAY, elemento especificacin 188 ARRAY_AGG, funcin 265 AS, clusula en clusula SELECT 489 ORDER BY, clusula 489 ASC, clusula SELECT, sentencia 489 ASCII, funcin escalar descripcin 286 valores y argumentos 286 asignacin dinmica descripcin 156 asignaciones operaciones de SQL bsicas 103 ASIN, funcin escalar descripcin 287 valores y argumentos 287 asterisco (*) en COUNT 268 en COUNT_BIG 269 en nombres de columna de seleccin 489 en nombres de columna de subseleccin 489 asteriscos nombres de columna de seleccin 489 nombres de columna de subseleccin 489 ATAN, funcin escalar descripcin 287 valores y argumentos 287 ATAN2, funcin escalar descripcin 287 valores y argumentos 287 ATANH, funcin escalar descripcin 288 valores y argumentos 288 atributos nombre de atributo 53
849
autorizacin, niveles vase privilegios 11 autorizacin de administrador de seguridad (SECADM) AVG, funcin agregada 266 avisos 845 ayuda idioma de configuracin 840 sentencias SQL 839
11
B
base de datos federada derivadores 37 mdulos de derivador 37 bases de datos borrar, de ejemplo 741 creacin de ejemplo 741 distribuidas 1 particionadas 1 relacionales 1 bases de datos federadas catlogo del sistema 46 descripcin 36 bases de datos relacionales distribuidas conexin con 30 BETWEEN, predicado 214 BIGINT, funcin 288 BIGINT, tipo de datos 79 signo y precisin 79 BITAND, funcin 289 BITANDNOT, funcin 289 BITNOT, funcin 289 BITOR, funcin 289 BITXOR, funcin 289 BLAST versiones que reciben soporte 42 BLOB (objetos grandes binarios) descripcin 85 funciones escalares 291 bloqueo de actualizacin 20 bloqueos compartidos (S) 20 de actualizacin (U) 20 definicin 18 exclusivos (X) 20 bloqueos de compartimiento 20
C
calificadores nombre de objeto 53 reservados 769 calificados, nombres de columna 53 CALL, sentencia invocadas desde una sentencia compilada 829 caracteres conversin 26 elementos de lenguaje SQL 51 caracteres comodn LIKE, predicado 217 caracteres de desplazamiento a teclado estndar no truncados por asignaciones 103 CARDINALITY, funcin 292 CASE expresin 179
CASE, expresiones de resultado tipo de datos del resultado 117 CAST especificacin 182 catlogo global descripcin 46 catlogo local vase catlogo global 46 catlogos del sistema vistas en tablas del sistema 575 CEIL, funcin escalar descripcin 293 valores y argumentos 293 CEILING, funcin escalar descripcin 293 valores y argumentos 293 Centro de informacin de DB2 actualizacin 840 idiomas 840 versiones 839 visualizacin en distintos idiomas 840 CHAR, funcin escalar descripcin 293 CHAR, tipo de datos descripcin 81 CHARACTER_LENGTH, funcin escalar descripcin 298 CHR, funcin escalar descripcin 299 valores y argumentos 299 cifrado ENCRYPT, funcin 322 GETHINT, funcin 327 XMLGROUP, funcin 282 XMLROW, funcin 456 clasificacin 47 clasificacin de los resultados 103 comparaciones de series 103 CLI (interfaz de nivel de llamada) definicin 2 CLIENT USERID, registro especial 133 CLIENT WRKSTNNAME, registro especial 134 CLOB (objetos grandes de caracteres) funcin descripcin 299 valores y argumentos 299 tipo de datos descripcin 81 CLSCHED, tabla de ejemplo 741 COALESCE, funcin 300 codificacin, esquemas conversin de caracteres 26 coherencia puntos de 18 coincidencia de patrn bases de datos Unicode 123 COLLATING_SEQUENCE, opcin de servidor ejemplo 47 COLLATION_KEY_BIT, funcin escalar descripcin 301 colocacin tabla 32 columnas adicin de valores (SUM) 279 BASIC, predicado en series coincidentes 211 BETWEEN, predicado en series coincidentes 214 buscar valor mximo 273
850
columnas (continuacin) bsqueda utilizando la clusula WHERE 489 convenios de denominacin 53 correlacin 268 covarianza 271 datos de resultado 489 desviacin estndar 278 diagrama de sintaxis de la clusula SELECT 489 errores de referencia de nombre ambigua 53 errores de referencia de nombre no definida 53 escalares, seleccin completa 53 expresin de tabla anidada 53 GROUP BY utilizacin para limitar en la clusula SELECT 489 HAVING utilizacin para limitar en la clusula SELECT 489 HAVING, clusula normas de bsqueda de nombres 489 nombre de columna calificacin en sentencia COMMENT ON 53 definicin 53 usos 53 nombres condiciones calificadas 53 condiciones no calificadas 53 en clusula ORDER BY 489 nombres de columnas de agrupacin en GROUP BY 489 normas de asignacin de serie 103 normas para nombre de columna calificado 53 predicado EXISTS, en series coincidentes 214 predicado IN, seleccin completa, valores devueltos 215 predicado LIKE, en series coincidentes 217 promedio de un conjunto de valores (AVG) 266 subconsulta 53 valores nulos en columnas de resultado 489 varianza 280 columnas del resultado subseleccin 489 coma flotante a conversin decimal 103 constante 126 combinacin de conjuntos de agrupaciones 489 comentarios lenguaje principal, formato 52 SQL, formato 52 comparacin 103 de condiciones verdaderas de dos predicados 211 de un valor con una coleccin 214 dos predicados, condiciones verdaderas 223 operacin SQL 103 COMPARE_DECFLOAT, funcin escalar descripcin 302 compatibilidad normas 103 normas para los tipos de operaciones 103 tipos de datos 103 compatibilidad entre particiones de base de datos visin general 124 compilador de SQL en un sistema federado 36 compuestos, valores de columna 489 CONCAT, funcin escalar descripcin 303 valores y argumentos 303 concatenacin operadores 164
concatenacin (continuacin) tipo diferenciado 164 condicin desconocida valor nulo 208 condiciones de bsqueda AND, operador lgico 208 descripcin 208 HAVING, clusula argumentos y normas 489 NOT, operador lgico 208 OR, operador lgico 208 orden de evaluacin 208 WHERE, clusula 489 confirmar liberacin de bloqueos 18 constante de serie grfica descripcin 126 constante entera descripcin 126 constante hexadecimal descripcin 126 constantes coma flotante 126 con tipos definidos por el usuario 126 decimal 126 elemento de lenguaje SQL 126 entero 126 hexadecimal 126 serie de caracteres 126 serie grfica 126 consultas definicin 489 descripcin 2 ejemplos SELECT, sentencia 534 fragmentos 46 ID de autorizacin 489 recursiva 534 control de acceso basado en etiquetas (LBAC) lmites 545 tablas de excepciones 821 convenios de denominacin identificadores 53 normas para columna calificada 53 conversin entre tipos de datos 95 expresin de tipo estructurado a subtipo 199 tipo de datos 182 tipos de referencia 95 tipos definidos por el usuario 95 valores XML 186 conversin de caracteres codificacin de sentencias de SQL 29 normas al comparar series 121 normas para asignaciones 103 normas para comparaciones 103 normas para operaciones que combinan series 121 conversin decimal 103 conversiones CHAR, devolucin de valores de indicacin de fecha y hora convertidos 293 DBCS de SBCS y DBCS mezclados 432 de fecha y hora a variable de serie 103 normas asignaciones 103 comparaciones 103 comparaciones de series 121 ndice
851
conversiones (continuacin) normas (continuacin) operaciones que combinan series 121 numrico, escala y precisin, resumen 103 serie de caracteres de doble byte 432 serie de caracteres en indicacin de fecha y hora 409 valores de coma flotante de expresiones numricas 321, 379 valores decimales de expresiones numricas 313 correlacin de tipos nombre 53 correlacin lateral 489 correlaciones de funciones correlacin de nombre 53 opciones 722 correlaciones de tipos de datos descripcin 41 directas 722 inversas 732 correlaciones de tipos directas correlaciones por omisin 722 correlaciones de tipos inversas correlaciones por omisin 732 correlaciones de usuarios almacenar 38 descripcin 38 CORRELATION, funcin 268 COS, funcin escalar descripcin 303 valores y argumentos 303 COSH, funcin escalar descripcin 304 valores y argumentos 304 COT, funcin escalar descripcin 304 valores y argumentos 304 COUNT, funcin 268 COUNT_BIG, funcin descripcin de formato detallado 269 valores y argumentos 269 COVARIANCE, funcin 271 CREATE SERVER, sentencia 41 CS (estabilidad del cursor) nivel de aislamiento 20 CUBE, agrupacin descripcin de consulta 489 ejemplos 489 CURRENT CLIENT_ACCTNG, registro especial 133 CURRENT CLIENT_APPLNAME, registro especial 133 CURRENT CLIENT_USERID, registro especial 133 CURRENT CLIENT_WRKSTNNAME, registro especial 134 CURRENT DATE, registro especial 134 CURRENT DBPARTITIONNUM, registro especial 135 CURRENT DECFLOAT ROUNDING MODE, registro especial 135 CURRENT DEFAULT TRANSFORM GROUP, registro especial 136 CURRENT DEGREE, registro especial descripcin 137 CURRENT EXPLAIN MODE, registro especial descripcin 137 CURRENT EXPLAIN SNAPSHOT, registro especial descripcin 138 CURRENT FEDERATED ASYNCHRONY, registro especial 139 CURRENT FUNCTION PATH, registro especial descripcin 142
CURRENT IMPLICIT XMLPARSE OPTION, registro especial 139 CURRENT ISOLATION, registro especial 140 CURRENT LOCK TIMEOUT, registro especial 141 CURRENT MAINTAINED TABLE TYPES FOR OPTIMIZATION, registro especial 141 CURRENT OPTIMIZATION PROFILE, registro especial CURRENT PACKAGE PATH, registro especial 142 CURRENT PATH, registro especial descripcin 142 CURRENT QUERY OPTIMIZATION, registro especial descripcin 143 CURRENT REFRESH AGE, registro especial descripcin 143 CURRENT SCHEMA, registro especial 144 CURRENT SERVER, registro especial 144 CURRENT SQLID, registro especial 144 CURRENT TIME, registro especial 144 CURRENT TIMESTAMP, registro especial 145 CURRENT TIMEZONE, registro especial 145 CURRENT USER, registro especial 146
142
D
Data Definition Language (DDL) descripcin 1 sentencias descripcin 1 DATALINK, tipo de datos no soportados 41 DATAPARTITIONNUM, funcin escalar 305 DATE, funcin 305 DATE, tipo de datos visin general 87 WEEK_ISO, funcin escalar 434 datos particin 32 datos de bit 81 datos mixtos definicin 81 LIKE, predicado 217 datos SBCS (juego de caracteres de un solo byte) visin general 81 DAY, funcin escalar 306 DAYNAME, funcin escalar descripcin 307 DAYOFWEEK, funcin escalar descripcin 308 DAYOFWEEK_ISO, funcin escalar descripcin 308 DAYOFYEAR, funcin escalar descripcin 308 DAYS, funcin escalar 309 DB2 para Linux, UNIX y Windows correlaciones de tipos directas por omisin 722 correlaciones de tipos inversas por omisin 732 versiones que reciben soporte 42 DB2 para System i correlaciones de tipos directas por omisin 722 correlaciones de tipos inversas por omisin 732 versiones que reciben soporte 42 DB2 para VM y VSE correlaciones de tipos directas por omisin 722 correlaciones de tipos inversas por omisin 732 versiones que reciben soporte 42 DB2 para z/OS versiones que reciben soporte 42
852
DB2 para z/OS y OS/390 correlaciones de tipos directas por omisin 722 correlaciones de tipos inversas por omisin 732 db2nodes.cfg, archivo DBPARTITIONNUM, funcin 310 DBCLOB, funcin descripcin 310 DBCLOB, tipo de datos descripcin 84 DBPARTITIONNUM, funcin descripcin 310 DDL (Data Definition Language) consulte Data Definition Language (DDL) 1 DECFLOAT, funcin escalar 312 DECIMAL, funcin escalar 313 DECIMAL, tipo de datos conversin coma flotante 103 precisin 79 signo 79 DECIMAL con precisin de entero, funcin 313 decimales, constantes 126 declaraciones XMLNAMESPACES 448 DECODE, funcin escalar descripcin 317 DECRYPT_BIN, funcin 318 DECRYPT_CHAR, funcin 318 definiciones de servidor descripcin 38 DEGREES, funcin escalar descripcin 319 delimitadores smbolo 52 DEPARTMENT, tabla de ejemplo 741 DEREF, funcin descripcin 319 derivadores descripcin 37 nombres 53 desagrupacin parcial 32 descifrar informacin 318 desreferencia, operacin 188 determinacin de problemas guas de aprendizaje 843 informacin disponible 843 devolucin de la indicacin de la fecha y hora de valores TIMESTAMP, funcin 409 devolucin de la parte correspondiente a la hora de los valores HOUR, funcin 333 devolucin de mes del valor MONTH, funcin 361 devolucin de microsegundo del valor MICROSECOND, funcin 357 devolucin de minuto del valor MINUTE, funcin 359 devolucin de segundos del valor SECOND, funcin 395 devolucin de subseries de una serie SUBSTR, funcin 401 devolver valor de columna de identidad IDENTITY_VAL_LOCAL, funcin 334 DIFFERENCE, funcin escalar descripcin 320 DIGITS, funcin 321
DISABLE, opcin de correlacin de funciones valores vlidos 722 diseo de aplicaciones conversin de caracteres en sentencias de SQL 29 elementos de cdigo para caracteres especiales 29 soporte de caracteres de doble byte (DBCS) 29 DISTINCT, palabra clave funcin agregada 264 sentencia de subseleccin 489 documentacin copia impresa 836 PDF 836 trminos y condiciones de uso 843 visin general 835 DOUBLE, funcin escalar 321 DOUBLE, tipo de datos CHAR, funcin escalar 293 precisin 79 signo 79 duraciones visin general 175
E
EMPACT, tabla de ejemplo 741 EMPLOYEE, tabla de ejemplo 741 EMPPHOTO, tabla de ejemplo 741 EMPRESUME, tabla de ejemplo 741 ENCRYPT, funcin escalar 322 enteros en clusula ORDER BY 489 resumen de conversin decimal 103 enteros grandes 79 enteros pequeos vase SMALLINT, tipo de datos 79 entornos de bases de datos particionadas compatibilidad entre particiones 124 visin general 32 Entrez versiones que reciben soporte 42 errores de referencia ambigua 53 errores de referencia no definida 53 escala datos comparacin en SQL 103 conversin de nmero en SQL 103 determinada por la variable SQLLEN nmeros determinada por la variable SQLLEN ESCAPE, clusula LIKE, predicado 217 espacio normas que controlan 52 espacios de tablas descripcin 24 nombre 53 especificaciones ARRAY, elemento 188 CAST 182 OLAP 189 XMLCAST 186 esquemas descripcin 3 nombres 53 reservados 769 estabilidad de lectura (RS) descripcin 20
563 563
ndice
853
estabilidad del cursor (CS) nivel de aislamiento 20 estructuras de datos decimal empaquetado 563 etiquetas duraciones 175 nombres de objetos en procedimientos SQL 53 etiquetas de seguridad (LBAC) longitud de nombre de componente 545 longitud del nombre 545 polticas longitud del nombre 545 EXCEPT, operador de seleccin completa 529 exclusivos, bloqueos 20 EXECUTE, privilegio funciones 148 mtodos 156 EXECUTE, sentencia SQL dinmico 1 EXECUTE IMMEDIATE, sentencia SQL dinmico 1 EXISTS, predicado 214 EXP, funcin escalar descripcin 325 explain, tablas visin general 777 EXPLAIN_ARGUMENT, tabla 787 EXPLAIN_DIAGNOSTIC, tabla 793 EXPLAIN_DIAGNOSTIC_DATA, tabla 794 EXPLAIN_INSTANCE, tabla 795 EXPLAIN_OBJECT, tabla 798 EXPLAIN_OPERATOR, tabla 801 EXPLAIN_PREDICATE, tabla 804 EXPLAIN_STATEMENT, tabla 807 EXPLAIN_STREAM, tabla 809 expresin-agrupacin 489 expresiones CASE 179 descripcin 164 GROUP BY, clusula 489 ORDER BY, clusula 489 ROW CHANGE 203 SELECT, clusula 489 subseleccin 489 tipo estructurado 199 expresiones de seleccin completa escalares 164 expresiones de tabla anidadas 489 expresiones de tabla comunes definicin 534 recursiva 534 sentencia select 534
F
fechas formatos de representacin de serie 87 fila del total 489 fila fantasma 20 filas condiciones de bsqueda, sintaxis 208 COUNT_BIG, funcin 269 GROUP BY, clusula 489 HAVING, clusula 489 SELECT, clusula diagrama de sintaxis 489 filas de subtotales 489 filas de superagregados 489
filas superagregadas simtricas 489 FLOAT, funcin descripcin 325 valores y argumentos 325 FLOAT, tipo de datos signo y precisin 79 FLOOR, funcin descripcin 325 valores y argumentos 325 FOR FETCH ONLY, clusula SELECT, sentencia 534 FOR READ ONLY, clusula SELECT, sentencia 534 FROM, clusula ejemplo de nombre de correlacin 53 nombres expuestos explicados 53 nombres no expuestos explicados 53 sintaxis de subseleccin 489 uso de nombres de correlacin 53 fuentes de datos 36 descripcin 35 identificacin 53 tipos de servidor vlidos 721 fuentes de datos no relacionales especificacin de correlaciones de tipos de datos funcin sobrecargada instancias de mltiples funciones 148 funciones agregadas ARRAY_AGG 265 COUNT 268 descripcin 264 MIN 274 XMLAGG 280 argumentos 229 columna ARRAY_AGG 265 AVG 266 CORR 268 CORRELATION 268 COUNT 268 COUNT_BIG 269 COVAR 271 COVARIANCE 271 descripcin 148, 264 funciones de regresin 275 MAX 273 MIN 274 REGR_AVGX 275 REGR_AVGY 275 REGR_COUNT 275 REGR_ICPT 275 REGR_INTERCEPT 275 REGR_R2 275 REGR_SLOPE 275 REGR_SXX 275 REGR_SXY 275 REGR_SYY 275 STDDEV 278 SUM 279 VAR, opciones 280 VAR, resultados 280 VARIANCE, opciones 280 VARIANCE, resultados 280 XMLAGG 280 con fuente 148
41
854
funciones (continuacin) conversin CAST 182 XMLCAST 186 definidas por el usuario 148, 476 descripcin 229 elemento de lenguaje SQL 148 en expresiones 229 en una base de datos Unicode 285 escalar INSERT 337 escalares ABS 285 ABSVAL 285 ACOS 286 ASCII 286 ASIN 287 ATAN 287 ATAN2 287 ATANH 288 AVG 266 BIGINT 288 BITAND 289 BITANDNOT 289 BITNOT 289 BITOR 289 BITXOR 289 BLOB 291 CARDINALITY 292 CEIL 293 CEILING 293 CHAR 293 CHARACTER_LENGTH 298 CHR 299 CLOB 299 COALESCE 300 COLLATION_KEY_BIT 301 COMPARE_DECFLOAT 302 CONCAT 303 COS 303 COSH 304 COT 304 DATE 305 DAY 306 DAYNAME 307 DAYOFWEEK 308 DAYOFWEEK_ISO 308 DAYOFYEAR 308 DAYS 309 DBCLOB 310 DBPARTITIONNUM 310 DECFLOAT 312 DECIMAL 313 DECODE 317 DECRYPTBIN 318 DECRYPTCHAR 318 DEGREES 319 DEREF 319 descripcin 148, 285 DIFFERENCE 320 DIGITS 321 DOUBLE 321 DOUBLE_PRECISION 321 ENCRYPT 322 EVENT_MON_STATE 324 EXP 325 FLOAT 325
funciones (continuacin) escalares (continuacin) FLOOR 325 GENERATE_UNIQUE 326 GETHINT 327 GRAPHIC 328 GREATEST 329 GROUPING 272 HASHEDVALUE 330 HEX 331 HOUR 333 IDENTITY_VAL_LOCAL 334 INTEGER 341 JULIAN_DAY 342 LCASE 342 LCASE (sensible al entorno local) 342 LEAST 343 LEFT 343 LENGTH 346 LN 348 LOCATE 349 LOG10 352 LONG_VARCHAR 353 LONG_VARGRAPHIC 353 LOWER 353 LOWER (sensible al entorno local) 354 LTRIM 355 MAX 356 MAX_CARDINALITY 357 MICROSECOND 357 MIDNIGHT_SECONDS 358 MIN 359 MINUTE 359 MOD 360 MONTH 361 MONTHNAME 361 MULTIPLY_ALT 362 NODENUMBER (vase DBPARTITIONNUM) NORMALIZE_DECFLOAT 363 NULLIF 364 NVL 364 OCTET_LENGTH 365 OVERLAY 365 PARAMETER 369 PARTITION (vase HASHEDVALUE) 330 POSITION 369 POSSTR 372 POWER 374, 377 QUANTIZE 375 QUARTER 376 RAISE_ERROR 377 RAND 378 REAL 379 REC2XML 379 REPEAT 383 REPLACE 384 RID 386 RID_BIT 386 RIGHT 387 ROUND 390 RTRIM 392 SECLABEL 392 SECLABEL_BY_NAME 393 SECLABEL_TO_CHAR 394 SECOND 395 SIGN 396 SIN 397
310
ndice
855
funciones (continuacin) escalares (continuacin) SINH 397 SMALLINT 398 SOUNDEX 398 SPACE 399 SQRT 399 STRIP 400 SUBSTR 401 SUBSTRING 403 TABLE_NAME 405 TABLE_SCHEMA 406 TAN 408 TANH 408 TIME 409 TIMESTAMP 409 TIMESTAMP_FORMAT 410 TIMESTAMP_ISO 414 TIMESTAMPDIFF 415 TO_CHAR 416 TO_DATE 416 TOTALORDER 416 TRANSLATE 417 TRIM 419 TRUNC 420 TRUNCATE 420 TYPE_ID 422 TYPE_NAME 422 TYPE_SCHEMA 423 UCASE 423 UCASE (sensible al entorno local) 423 UPPER 424 UPPER (sensible al entorno local) 424 VALUE 426 VARCHAR 426 VARCHAR_FORMAT 428 VARGRAPHIC 432 WEEK 434 WEEK_ISO 434 XMLATTRIBUTES 435 XMLCOMMENT 436 XMLCONCAT 437 XMLDOCUMENT 438 XMLELEMENT 439 XMLFOREST 445 XMLGROUP 282 XMLNAMESPACES 448 XMLPARSE 450 XMLPI 452 XMLQUERY 453 XMLROW 456 XMLSERIALIZE 458 XMLTEXT 460 XMLVALIDATE 462 XMLXSROBJECTID 466 XSLTRANSFORM 467 YEAR 470 externas 148 fila 148 funciones de tabla descripcin 148, 471 incorporadas 148 manipulacin de bits 289 OLAP (proceso analtico en lnea) 189 procedimientos 479 sobrecargadas 148 soportadas 230
funciones (continuacin) SQL 148 tabla XMLTABLE 471 funciones agregadas ARRAY_AGG 265 COUNT 268 descripcin 264 MIN 274 funciones con fuente 148 funciones de bases de datos de columna descripcin 148 funciones de fecha DAY 306 DAYS 309 MONTH 361 YEAR 470 funciones de fila descripcin 148 funciones de manipulacin de bits 289 funciones de regresin descripcin 275 REGR_AVGX 275 REGR_AVGY 275 REGR_COUNT 275 REGR_ICPT 275 REGR_INTERCEPT 275 REGR_R2 275 REGR_SLOPE 275 REGR_SXX 275 REGR_SXY 275 REGR_SYY 275 funciones de SQL 148 funciones de tabla descripcin 148, 471 funciones definidas por el usuario descripcin 148, 229, 476 funciones escalares DECIMAL, funcin 313 funciones escalares 285 funciones regulares 148 VARCHAR_BIT_FORMAT 427 VARCHAR_FORMAT_BIT 431 funciones externas visin general 148 funciones incorporadas descripcin 148 unidades de serie 81 funciones soportadas 230
G
GENERATE_UNIQUE, funcin sintaxis 326 gestor de bases de datos interpretacin de SQL 1 lmites 545 GETHINT, funcin descripcin 327 valores y argumentos 327 GRAPHIC, espacio 29 GRAPHIC, funcin descripcin 328 valores y argumentos 328 GRAPHIC, tipo de datos descripcin 84 GREATEST, funcin 329
856
GROUP BY, clusula normas de subseleccin y sintaxis 489 resultados de subseleccin 489 GROUPING, funcin 272 grupos definicin de nombres 53 guas de aprendizaje determinacin de problemas 843 resolucin de problemas 843 Visual Explain 842
H
HASHEDVALUE, funcin 330 HAVING, clusula 489 HEX, funcin 331 HMMER, fuente de datos versiones que reciben soporte 42 hora CHAR, utilizacin en conversin de formato 293 devolucin indicacin de fecha y hora a partir de valores 409 microsegundos de segundo, a partir del valor de indicacin de fecha y hora 357 minutos, a partir del valor de indicacin de fecha y hora 359 segundos, a partir del valor de indicacin de fecha y hora 395 valores basados en la hora 409 en expresiones, funcin TIME 409 formatos de representacin de serie 87 utilizacin de la hora en expresiones 409 valores de hora, utilizacin en una expresin (HOUR) 333 HOUR, funcin escalar descripcin 333
inicializacin seleccin completa 534 INSERT, funcin descripcin 337 valores y argumentos 337 INTEGER, funcin descripcin 341 valores y argumentos 341 INTEGER, tipo de datos signo y precisin 79 interfaz de nivel de llamada (CLI) definicin 2 INTERSECT, operador de seleccin completa, papel en la comparacin 529 filas duplicadas, utilizacin de ALL 529 INTO, clusula FETCH, uso de la sentencia en variable lenguaje principal 53 SELECT INTO, uso de la sentencia en variable lenguaje principal 53 valores de programas de aplicacin 53 INTRAY, tabla de ejemplo 741 invocacin funcin 148 mtodos 198
J
Java Database Connectivity (JDBC) SQL incorporado para Java (SQLJ) 3 visin general 3 juego de caracteres de doble byte (DBCS) caracteres truncados durante la asignacin series de retorno 432 juegos de caracteres definicin 26 descripcin 47 JULIAN_DAY, funcin escalar descripcin 342
103
I
ID de autorizacin 53 ID de autorizacin de ejecucin 53 identificadores delimitados 53 lenguaje principal 53 lmites de longitud 545 ordinarios 53 SQL 53 identificadores del lenguaje principal visin general 53 IDENTITY_VAL_LOCAL, funcin descripcin 334 valores y argumentos 334 IMPLICIT_SCHEMA, autoridad 3 IN, predicado 215 indicaciones de la fecha y hora formatos de representacin de serie 87 GENERATE_UNIQUE 326 ndices descripcin 5 nombre definicin 53 visin general 5 informacin de catlogo remota 46 Informix correlaciones de tipos directas por omisin 722 correlaciones de tipos inversas por omisin 732 versiones que reciben soporte 42
L
LBAC (control de acceso basado en etiquetas) etiquetas de seguridad longitud de nombre de componente 545 longitud del nombre 545 lmites 545 polticas de seguridad longitud del nombre 545 tablas de excepciones 821 LCASE (sensible al entorno local), funcin escalar visin general 342 LEAST, funcin 343 lectura no confirmada (UR) niveles de aislamiento 20 lectura repetible (RR) descripcin 20 LEFT, funcin escalar descripcin 343 valores y argumentos 343 LENGTH, funcin escalar descripcin 346 valores y argumentos 346 Lenguaje de consulta estructurada (SQL) asignaciones 103 operacin de comparacin, visin general 103 ndice
857
Lenguaje de consulta estructurada (SQL) (continuacin) operandos bsicos, asignaciones y comparaciones 103 LIKE, predicado 217 lmites longitud de identificador 545 SQL 545 lmites de tamao longitud de identificador 545 SQL 545 lista de seleccin descripcin 489 normas de aplicacin y sintaxis 489 normas de notacin y convenciones 489 literales descripcin 126 LN, funcin descripcin 348 valores y argumentos 348 LOB, localizadores 86 LOB (objetos grandes) descripcin 86 localizadores descripcin de variable 53 objeto grande (LOB) 86 LOCATE, funcin escalar descripcin 349 valores y argumentos 349 LOG10, funcin escalar descripcin 352 valores y argumentos 352 lgica de evaluacin verdadera 208 LONG_VARCHAR, funcin descripcin 353 LONG_VARGRAPHIC, funcin descripcin 353 longitud LENGTH, funcin escalar 346 longitud de byte valores de tipos de datos 346 LOWER, funcin escalar descripcin 353 valores y argumentos 353 LOWER (sensible al entorno local), funcin escalar descripcin 354 valores y argumentos 354 LTRIM, funcin escalar descripcin 355 valores y argumentos 355
mtodo sobrecargado 156 mtodos asignacin dinmica de 156 con conservacin de tipo 156 definidos por el usuario 156 elemento de lenguaje SQL 156 externos 156 incorporados 156 invocacin 198 sobrecargados 156 SQL 156 mtodos definidos por el usuario descripcin 156 MICROSECOND, funcin descripcin 357 valores y argumentos 357 Microsoft Excel vase archivos Excel 42 Microsoft SQL Server correlaciones de tipos directas por omisin 722 correlaciones de tipos inversas por omisin 732 versiones que reciben soporte 42 MIDNIGHT_SECONDS, funcin descripcin 358 valores y argumentos 358 MIN, funcin 274, 359 MINUTE, funcin escalar descripcin 359 valores y argumentos 359 MOD, funcin descripcin 360 valores y argumentos 360 MONTH, funcin descripcin 361 valores y argumentos 361 MONTHNAME, funcin descripcin 361 valores y argumentos 361 muestreo clusulas tablesample de subseleccin 489 MULTIPLY_ALT, funcin descripcin de formato detallado 362 valores y argumentos, normas para 362
N
nivel de aislamiento RR (lectura repetible) descripcin 20 nivel de aislamiento RS (estabilidad de lectura) descripcin 20 nivel de aislamiento UR (lectura no confirmada) niveles de aislamiento descripcin 20 en sentencia DELETE 534 estabilidad de lectura (RS) 20 estabilidad del cursor 20 lectura no confirmada (UR) 20 lectura repetible (RR) 20 NODENUMBER, funcin DBPARTITIONNUM 310 nombre-componente descripcin 53 nombre de autorizacin remota 53 nombre de condicin procedimientos SQL 53 nombre de correlacin definicin 53
M
manuales copia impresa pedido 838 marcadores de parmetro SQL dinmico variables del lenguaje principal 53 ms apropiada funcin 148 mtodo 156 MAX, funcin 356 descripcin de formato detallado 273 valores y argumentos 273 MAX_CARDINALITY,funcin 357 mensajes de error definiciones de SQLCA 557 mtodo con conservacin de tipo 156
20
858
nombre de correlacin (continuacin) en clusula SELECT diagrama de sintaxis 489 FROM, clusula normas de subseleccin 489 normas 53 referencia calificada 53 nombre de correlacin no expuesto en clusula FROM 53 nombre de cursor definicin 53 nombre de funcin 53 nombre de mtodo 53 nombre de tipo 53 nombre de variable de SQL 53 nombre de vista definicin 53 nombre-descriptor diagrama de sintaxis 53 nombre especfico definicin 53 nombre-esquema-remoto 53 nombre-etiqueta-seguridad 53 nombre-objeto-remoto 53 nombre-poltica-seguridad 53 nombre-tabla-remota 53 nombres columnas de subseleccin 489 nombres de autorizacin definicin 53 descripcin 53 restricciones que rigen 53 nombres de correlacin exclusivos designadores de tabla 53 nombres de correlacin expuestos FROM, clusula 53 NORMALIZE_DECFLOAT, funcin escalar descripcin 363 NOT NULL, clusula en predicado NULL 222 NULL, normas del predicado 222 NULL, valor SQL apariciones en filas duplicadas 489 asignacin 103 columnas del resultado 489 condicin desconocida 208 definicin 77 especificado por variable indicadora 53 expresiones-agrupacin, utilizaciones permitidas 489 NULLIF, funcin descripcin 364 valores y argumentos 364 NUMERIC o DECIMAL, tipo de datos signo y precisin 79 numricas asignaciones en operaciones SQL 103 comparaciones 103 numricos tipos de datos 79 nmeros escala 563 precisin 563 NVL, funcin escalar visin general 364
O
objetos de fuente de datos descripcin 39 objetos grandes (LOB) comportamiento 33 con tablas particionadas 33 descripcin 86 localizador 86 objetos grandes binarios (BLOB) definicin 85 funciones escalares 291 OCTET_LENGTH, funcin escalar descripcin 365 ODBC correlaciones de tipos directas por omisin 722 versiones que reciben soporte 42 ODBC (Open Database Connectivity - Conectividad de bases de datos abierta) descripcin 2 OLAP especificacin 189 OLAP (proceso analtico en lnea) funciones 189 OLE DB versiones que reciben soporte 42 opciones de columna descripcin 40 opciones de columna de apodo descripcin 40 opciones de servidor descripcin 38 temporales 38 Open Database Connectivity (ODBC) 2 operaciones asignaciones 103 comparaciones 103 desreferencia 188 fecha y hora 175 operaciones de SQL bsicas 103 operadores aritmticos 164 operadores de conjunto EXCEPT, comparacin de diferencias 529 INTERSECT, papel de AND en comparaciones 529 tipo de datos del resultado 117 UNION, correspondencia con OR 529 operadores lgicos normas de bsqueda 208 operadores unitarios signo ms 164 signo menos 164 operandos coma flotante 164 decimal 164 enteros 164 series 164 tipo de datos del resultado 117 optimizacin de consultas descripcin 46 optimizador descripcin 46 OR, tabla de evaluacin 208 Oracle correlaciones de tipos directas por omisin 722 correlaciones de tipos inversas por omisin 732
ndice
859
orden de evaluacin expresiones 164 ORDER BY, clusula clasificacin culturalmente correcta sentencia select 489 ORG, tabla de ejemplo 741 OVERLAY, funcin escalar descripcin 365
301
P
pginas de cdigos atributos 26 definicin 26 descripcin 47 palabras reservadas SQL 769 paquetes ID de autorizacin sentencias dinmicas 53 vinculacin 53 nombres visin general 53 visin general 11 PARAMETER, funcin descripcin 369 parmetros convenios de denominacin 53 particin de generacin aleatoria 32 PARTITION, funcin sustitucin para nombre de HASHEDVALUE 330 pedido de manuales de DB2 838 planes de acceso descripcin 46 POSITION, funcin escalar 369 POSSTR, funcin 372 POWER, funcin escalar descripcin 374 precisin nmeros SQLLEN, variable 563 precisin doble, tipo de datos de coma flotante visin general 79 precisin simple, tipo de datos de coma flotante 79 predicado bsico 211 predicado cuantificado 212 predicados bsicos 211 BETWEEN 214 cuantificados 212 EXISTS 214 IN 215 LIKE 217 NULL 222 proceso de consultas 205 TYPE 223 VALIDATED 224 visin general 205 XMLEXISTS 226 PREPARE, sentencia SQL dinmico 1 prioridad visin general 164 privilegios de propiedad (CONTROL) 11 EXECUTE funciones 148
privilegios (continuacin) EXECUTE (continuacin) mtodos 156 implcitos para paquetes 11 individuales 11 jerarqua 11 visin general 11 procedimientos nombres visin general 53 procedimientos almacenados CALL, sentencia 829 XSR_ADDSCHEMADOC 479 XSR_COMPLETE 480 XSR_DTD 481 XSR_ENTITY 483 XSR_REGISTER 484 XSR_UPDATE 486 proceso analtico en lnea (OLAP) funciones 189 proceso de aplicacin definicin 18 PROJECT, tabla de ejemplo 741 propiedad objetos de base de datos 11 punto de coherencia base de datos 18 puntos de cdigo conversin de caracteres 26 puntos de salvaguarda nombres 53
Q
QUANTIZE, funcin escalar descripcin 375 QUARTER, funcin descripcin 376 valores y argumentos 376
R
RADIANS, funcin escalar descripcin 377 valores y argumentos 377 RAISE_ERROR, funcin escalar descripcin 377 valores y argumentos 377 RAND, funcin escalar descripcin 378 valores y argumentos 378 REAL, funcin conversin de precisin simple 379 descripcin 379 valores y argumentos 379 REAL SQL, tipo de datos signo y precisin 79 REC2XML, funcin escalar descripcin 379 valores y argumentos 379 recursin, consultas 534 recursiva, expresin de tabla comn 534 referencia correlacionada en expresin de tabla anidada 53 en seleccin completa escalar 53 en subconsulta 53
860
referencia correlacionada (continuacin) en subselecciones 489 referencia de tabla alias 489 apodo 489 expresiones de tabla anidadas 489 nombre de tabla 489 nombre de vista 489 Registro especial CURRENT MDC ROLLOUT MODE 141 registros especiales actualizables 130 CLIENT ACCTNG 133 CLIENT APPLNAME 133 CURRENT CLIENT_ACCTNG 133 CURRENT CLIENT_APPLNAME 133 CURRENT CLIENT_USERID 133 CURRENT CLIENT_WRKSTNNAME 134 CURRENT DATE 134 CURRENT DBPARTITIONNUM 135 CURRENT DECFLOAT ROUNDING MODE 135 CURRENT DEFAULT TRANSFORM GROUP 136 CURRENT DEGREE 137 CURRENT EXPLAIN MODE 137 CURRENT EXPLAIN SNAPSHOT 138 CURRENT FEDERATED ASYNCHRONY 139 CURRENT FUNCTION PATH 142 CURRENT IMPLICIT XMLPARSE OPTION 139 CURRENT ISOLATION 140 CURRENT LOCK TIMEOUT 141 CURRENT MAINTAINED TABLE TYPES FOR OPTIMIZATION 141 CURRENT MDC ROLLOUT MODE 141 CURRENT NODE (vase CURRENT DBPARTITIONNUM) 135 CURRENT OPTIMIZATION PROFILE 142 CURRENT PACKAGE PATH 142 CURRENT PATH 142 CURRENT QUERY OPTIMIZATION 143 CURRENT REFRESH AGE 143 CURRENT SCHEMA 144 CURRENT SERVER 144 CURRENT SQLID 144 CURRENT TIME 144 CURRENT TIMESTAMP 145 CURRENT TIMEZONE 145 CURRENT USER 146 elemento de lenguaje SQL 130 interaccin, Explain 813 SESSION USER 146 SYSTEM USER 147 USER 147 remota nombre de funcin 53 nombre de tipo 53 REMOTE_NAME, opcin de correlacin valores vlidos 722 REPEAT, funcin escalar descripcin 383 valores y argumentos 383 REPLACE, funcin escalar descripcin 384 valores y argumentos 384 reservadas calificadores 769 palabras 769 reservados esquemas 769
resolucin funcin 148 mtodo 156 resolucin de problemas guas de aprendizaje 843 informacin en lnea 843 restricciones definicin de nombres 53 descripcin 5 tablas de Explain 777 retrotraccin definicin 18 RID, funcin 386 RID_BIT, funcin 386 RIGHT, funcin escalar descripcin 387 valores y argumentos 387 ROLLUP, agrupacin de clusula GROUP BY ROUND, funcin escalar descripcin 390 valores y argumentos 390 ROW CHANGE expresin 203 RTRIM, funcin escalar descripcin 392 rutinas administrativas de SQL soportadas 230 procedimientos 479 sentencias de SQL permitidas 825 rutinas administrativas de SQL soportadas 230
489
S
SALES, tabla de ejemplo 741 SAMPLE, base de datos borrar 741 creacin 741 descripcin 741 script versiones que reciben soporte 42 SECADM autorizacin de base de datos 11 secciones definicin 11 SECLABEL funcin escalar 392 SECLABEL_BY_NAME, funcin escalar descripcin 393 SECLABEL_TO_CHAR, funcin escalar descripcin 394 SECOND, funcin escalar descripcin 395 valores y argumentos 395 secuencias orden 326 valores 200 secuencias de clasificacin COLLATION_KEY_BIT, funcin escalar descripcin 47 normas de comparacin de series 103 planificacin 47 seleccin completa ejemplos 529 escalar 164 inicializacin 534
301
ndice
861
seleccin completa (continuacin) iterativa 534 mltiples operaciones, orden de ejecucin 529 ORDER BY, clusula 489 referencia de tabla 489 rol de subconsulta, condicin de bsqueda 53 sintaxis detallada 529 seleccin completa iterativa 534 SELECT, clusula con palabra clave DISTINCT 489 notacin de lista referencia de columna 489 SELECT, sentencia definicin 534 ejemplos 534 sintaxis detallada de seleccin completa 529 subselecciones 489 VALUES, clusula 529 sensibilidad a maysculas y minsculas en identificadores simblicos 52 sentencias nombres 53 sentencias de SQL CALL 829 esttico definicin 1 permitidas en rutinas 825 preparacin y ejecucin de SQL dinmico 1 SQL dinmico definicin 1 ejecucin inmediata 1 SQL interactivo definicin 1 sentencias SQL visualizacin de la ayuda 839 serie de caracteres de longitud fija 81 serie de caracteres de longitud variable 81 serie grfica de longitud fija 84 serie grfica de longitud variable 84 series comparaciones de Unicode 123 definicin 26 normas de conversin de asignaciones 103 secuencias de clasificacin 47 series de caracteres asignacin 103 BLOB, representacin de serie 291 comparaciones 103 constantes de serie 126 conversin de sintaxis de serie 417 devolucin de nombre de variable del lenguaje principal 417 igualdad definicin 103 ejemplos de orden de clasificacin 103 POSSTR, funcin escalar 372 serie de caracteres de doble byte 432 tipos de datos 81 VARCHAR, funcin escalar 426 VARGRAPHIC, funcin escalar 432 series de caracteres terminadas en NULL 81 series de caracteres vacas carcter 81 grficas 84 series grficas conversin de sintaxis de serie 417
series grficas (continuacin) devolucin de nombre de variable del lenguaje principal 417 servidor federado 35 descripcin 41 servidores nombres 53 SESSION USER, registro especial 146 SET SERVER OPTION, sentencia establecimiento de una opcin temporalmente 38 SIGN, funcin escalar descripcin 396 valores y argumentos 396 signatura de funcin 148 signatura de mtodo 156 signaturas funcin 148 mtodo 156 smbolos delimitadores 52 elemento de lenguaje SQL 52 ordinarios 52 sensibilidad a maysculas y minsculas 52 smbolos ordinarios 52 SIN, funcin escalar descripcin 397 valores y argumentos 397 SINH, funcin escalar descripcin 397 valores y argumentos 397 sinnimos calificacin de un nombre de columna 53 sintaxis descripcin x sintaxis de SQL comparacin de dos predicados, condiciones verdaderas 211, 223 condiciones de bsqueda, formatos y normas 208 condiciones de bsqueda de clusula WHERE 489 descripcin de la clusula SELECT 489 descripcin del predicado IN 215 EXISTS, predicado 214 funcin agregada AVG, resultado en conjunto de columnas 266 funcin agregada CORRELATION, resultados 268 funcin agregada COVARIANCE, resultados 271 funcin agregada STDDEV, resultados 278 funcin agregada VARIANCE, resultados 280 funcin COUNT_BIG, argumentos y resultados 269 GENERATE_UNIQUE, funcin 326 GROUP BY, clusula subseleccin 489 mltiples operaciones, orden de ejecucin 529 predicado bsico, diagrama detallado 211 predicado BETWEEN, normas 214 predicado LIKE, normas 217 resultados de las funciones de regresin 275 TYPE, predicado 223 sistema de gestin de bases de datos distribuidas 34 sistemas federados visin general 34 SMALLINT, funcin descripcin 398 valores y argumentos 398 SMALLINT, tipo de datos signo y precisin 79 SOME, predicado cuantificado 212
862
soporte de caracteres de varios bytes elementos de cdigo para caracteres especiales 29 SOUNDEX, funcin escalar descripcin 398 valores y argumentos 398 SPACE, funcin escalar descripcin 399 valores y argumentos 399 SQL (Structured Query Language - Lenguaje de consulta estructurada) lmites 545 va de acceso 148 SQL dinmico SQLDA descripcin 563 SQL esttico descripcin 1 SQL interactivo 1 SQLCA (rea de comunicaciones SQL) descripcin 557 informe de errores 557 sistemas de bases de datos particionadas 557 visualizacin interactiva 557 SQLD, campo en SQLDA 563 SQLDA (rea de descriptores de SQL) contenido 563 SQLDABC, campo en SQLDA 563 SQLDAID, campo en SQLDA 563 SQLDATA, campo de SQLDA 563 SQLDATALEN, campo en SQLDA 563 SQLDATATYPE_NAME, campo en SQLDA 563 SQLIND, campo en SQLDA 563 SQLJ conectividad 3 SQLLEN, campo en SQLDA 563 SQLLONGLEN, campo en SQLDA 563 SQLN, campo en SQLDA 563 SQLNAME, campo en SQLDA 563 SQLSTATE en la funcin RAISE_ERROR 377 SQLTYPE, campo en SQLDA 563 SQLVAR, campo en SQLDA 563 SQRT, funcin escalar descripcin 399 STAFF, tabla de ejemplo 741 STAFFG, tabla de ejemplo 741 STDDEV, funcin 278 STRIP, funcin escalar descripcin 400 subconsulta SQL WHERE, clusula 489 subconsultas HAVING, clusula 489 utilizar seleccin completa como condicin de bsqueda 53 WHERE, clusula 489 subseleccin descripcin 489 ejemplo de secuencia de operaciones 489 ejemplos 489 FROM, clusula subseleccin 489 subseries 401 SUBSTR, funcin fragmentos 401 SUBSTR, funcin escalar descripcin 401
SUBSTR, funcin escalar (continuacin) valores y argumentos 401 SUBSTRING, funcin escalar descripcin 403 subtipos de caracteres 81 SUM, funcin descripcin de formato detallado 279 valores y argumentos 279 supergrupos 489 supertipos nombres de identificadores 53 supervisin sucesos de la base de datos 31 supervisores de sucesos EVENT_MON_STATE, funcin 324 nombres 53 visin general 31 Sybase correlaciones de tipos directas por omisin 722 correlaciones de tipos inversas por omisin 732 versiones que reciben soporte 42 SYSTEM USER, registro especial 147
T
tabla de objetos 53 tabla de resultados consulta 489 tablas alias 11 colocacin 32 descripcin 4 designador para evitar ambigedad 53 escalares, seleccin completa 53 excepciones 821 expresin de tabla anidada 53 expresiones comunes 2 descripcin 2 expresiones de tabla comunes 534 FROM, clusula convenios de denominacin de subseleccin 489 nombre de columna calificado 53 nombre de correlacin 53 nombres descripcin 53 en clusula FROM 489 SELECT, diagrama de sintaxis en la clusula 489 nombres de correlacin exclusivos 53 nombres expuestos en clusula FROM 53 nombres no expuestos en clusula FROM 53 referencia 489 SAMPLE, base de datos 741 subconsulta 53 vistas de catlogo en tablas del sistema 575 tablas con tipo nombres 53 tablas de evaluacin 208 tablas de excepciones estructura 821 tablas particionadas objetos grandes (LOB) 33 tablas resultantes intermedias 489 TABLE, clusula referencia de tabla 489 TABLE_NAME, funcin alias 405 ndice
863
TABLE_NAME, funcin (continuacin) descripcin 405 valores y argumentos 405 TABLE_SCHEMA, funcin alias 406 descripcin 406 valores y argumentos 406 tabulacin cruzada, filas 489 TAN, funcin escalar descripcin 408 valores y argumentos 408 TANH, funcin escalar descripcin 408 valores y argumentos 408 Teradata correlaciones de tipos directas por omisin 722 correlaciones de tipos inversas por omisin 732 trminos y condiciones uso de publicaciones 843 TIME, funciones descripcin 409 valores y argumentos 409 TIME, tipos de datos descripcin 87 operaciones 175 TIMESTAMP, funcin descripcin 409 valores y argumentos 409 TIMESTAMP, tipo de datos descripcin 87 WEEK, funcin escalar 434 WEEK_ISO, funcin escalar 434 TIMESTAMP_FORMAT, funcin descripcin 410 valores y argumentos 410 TIMESTAMP_ISO, funcin descripcin 414 valores y argumentos 414 TIMESTAMPDIFF, funcin escalar descripcin 415 valores y argumentos 415 tipo de datos del resultado CASE, expresiones de resultado 117 COALESCE, argumentos 117 operador de conjunto 117 operandos 117 VALUES, clusula de mltiples filas 117 tipos diferenciado definidos por el usuario 90 estructurado 90 referencia 90 tipos de datos BIGINT 79 BLOB 85 CHAR 81 CLOB 81 columnas del resultado 489 coma flotante visin general 79 compatibilidad entre particiones 124 conversin 95 DATE 87 DBCLOB 84 DECIMAL visin general 79
tipos de datos (continuacin) definidos por el usuario visin general 90 DOUBLE 79 fecha y hora 87 INTEGER visin general 79 no soportados 41 numricos visin general 79 promocin visin general 93 REAL 79 serie binaria 85 serie de caracteres 81 serie grfica 84 SMALLINT 79 SQL visin general 77 TIME 87 TIMESTAMP 87 TYPE_ID, funcin 422 TYPE_NAME, funcin 422 TYPE_SCHEMA, funcin 423 VARCHAR visin general 81 VARGRAPHIC 84 XML valores 90 tipos de datos de fecha operaciones 175 tipos de datos de serie binaria 85 tipos de datos de serie grfica descripcin 84 tipos de referencia comparaciones 103 conversin 95 DEREF, funcin 319 descripcin 90 tipos de servidor tipos federados vlidos 721 tipos definidos por el usuario conversin 95 descripcin 90 tipo de referencia 90 tipos diferenciados descripcin 90 tipos estructurados 90 tipos definidos por el usuario (UDT) tipos de datos no soportados 41 tipos diferenciados comparaciones visin general 103 concatenacin 164 constantes 126 nombres 53 operandos aritmticos 164 visin general 90 tipos estructurados descripcin 90 expresin conversin en un subtipo 199 variables del lenguaje principal 53 TO_CHAR, funcin descripcin 416 valores y argumentos 416
864
TO_DATE, funcin descripcin 416 valores y argumentos 416 TOTALORDER, funcin escalar descripcin 416 transacciones simultneas 30 TRANSLATE, funcin escalar descripcin 417 serie de caracteres 417 serie grfica 417 valores y argumentos 417 TRIM, funcin escalar descripcin 419 truncamiento nmeros 103 TRUNCATE, funcin escalar 420 TYPE, predicado formato 223 TYPE_ID, funcin descripcin 422 tipos de datos 422 valores y argumentos 422 TYPE_NAME, funcin descripcin 422 valores y argumentos 422 TYPE_SCHEMA, funcin descripcin 423 tipos de datos 423 valores y argumentos 423
V
VALIDATED, predicado descripcin 224 valores definicin 77 nulo 77 secuencia 200 valores de enteros pequeos de expresiones SMALLINT, funcin 398 valores enteros de expresiones INTEGER, funcin 341 VALUE, funcin descripcin 426 valores y argumentos 426 VALUES, clusula seleccin completa 529 VALUES, clusula de mltiples filas tipo de datos del resultado 117 VARCHAR, funcin descripcin 426 valores y argumentos 426 VARCHAR, tipo de datos descripcin 81 DOUBLE, funcin escalar 321 WEEK, funcin escalar 434 WEEK_ISO, funcin escalar 434 VARCHAR_BIT_FORMAT, funcin descripcin 427 VARCHAR_FORMAT, funcin descripcin 428 valores y argumentos 428 VARCHAR_FORMAT_BIT, funcin descripcin 431 VARGRAPHIC, funcin descripcin 432 valores y argumentos 432 VARGRAPHIC, tipo de datos descripcin 84 variables globales 147 variables del lenguaje principal BLOB 53 CLOB 53 DBCLOB 53 diagramas de sintaxis 53 variables indicadoras 53 visin general 53 variables globales 147 variables indicadoras descripcin 53 variable del lenguaje principal, usos de declaracin VARIANCE, funcin agregada 280 va de acceso SQL 148 va de acceso de SQL incorporada 148 vinculacin recuperacin de datos papel en la optimizacin 1 semntica de funcin 148 semntica de mtodo 148 vista alias 11 vistas calificacin de un nombre de columna 53 descripcin 9
U
UCASE, funcin escalar 423 UCASE, funcin escalar (sensible al entorno local) 423 UDF vase funciones definidas por el usuario 476 Unicode conversin a maysculas 52 Unicode (UCS-2) coincidencia de patrn 123 comparaciones de series 123 funciones en 285 unidades de serie funciones incorporadas 81 unidades de trabajo (UOW) definicin 18 UNION, operador papel en comparaciones de seleccin completa 529 uniones componentes de subseleccin de seleccin completa 489 tablas clusula de subseleccin 489 tipos completas externas 489 derechas externas 489 internas 489 izquierdas externas 489 uniones externas tabla unida 489 UPPER, funcin escalar descripcin 424 valores y argumentos 424 UPPER (sensible al entorno local), funcin escalar descripcin 424 valores y argumentos 424 USER, registro especial 147
53
ndice
865
vistas (continuacin) FROM, clusula convenios de denominacin de subseleccin nombres en clusula FROM 489 nombres en clusula SELECT diagrama de sintaxis 489 nombres expuestos en clusula FROM 53 nombres no expuestos en clusula FROM 53 visin general 9 vistas con tipo descripcin 9 nombres 53 vistas de catlogo actualizables 575 ATTRIBUTES 580 AUDITPOLICIES 582 AUDITUSE 583 BUFFERPOOLDBPARTITIONS 584 BUFFERPOOLS 585 CASTFUNCTIONS 585 CHECKS 586 COLAUTH 587 COLCHECKS 588 COLDIST 589, 710 COLGROUPCOLS 590 COLGROUPDIST 590, 711 COLGROUPDISTCOUNTS 591, 712 COLGROUPS 591, 712 COLIDENTATTRIBUTES 592 COLOPTIONS 593 COLUMNS 593, 713 COLUSE 598 CONSTDEP 599 CONTEXTATTRIBUTES 599 CONTEXTS 600 DATAPARTITIONEXPRESSION 600 DATAPARTITIONS 601 DATATYPES 602 DBAUTH 605 DBPARTITIONGROUPDEF 606 DBPARTITIONGROUPS 607 descripcin 17 EVENTMONITORS 608 EVENTS 610 EVENTTABLES 610 FULLHIERARCHIES 611 FUNCMAPOPTIONS 612 FUNCMAPPARMOPTIONS 612 FUNCMAPPINGS 613 HIERARCHIES 614 HISTOGRAMTEMPLATEBINS 614 HISTOGRAMTEMPLATES 614 HISTOGRAMTEMPLATEUSE 615 INDEXAUTH 616 INDEXCOLUSE 616 INDEXDEP 617 INDEXES 618, 714 INDEXEXPLOITRULES 624 INDEXEXTENSIONDEP 624 INDEXEXTENSIONMETHODS 625 INDEXEXTENSIONPARMS 626 INDEXEXTENSIONS 627 INDEXOPTIONS 627 INDEXXMLPATTERNS 628 KEYCOLUSE 628 NAMEMAPPINGS 629 NICKNAMES 629
489
vistas de catlogo (continuacin) PACKAGEAUTH 632 PACKAGEDEP 633 PACKAGES 634 PARTITIONMAPS 641 PASSTHRUAUTH 642 PREDICATESPECS 642 REFERENCES 642 ROLEAUTH 643 ROLES 644 ROUTINEAUTH 644 ROUTINEDEP 645 ROUTINEOPTIONS 646 ROUTINEPARMOPTIONS 647 ROUTINEPARMS 647 ROUTINES 649, 717 ROUTINESFEDERATED 658 SCHEMAAUTH 659 SCHEMATA 660 SECURITYLABELACCESS 661 SECURITYLABELCOMPONENTELEMENTS 661 SECURITYLABELCOMPONENTS 662 SECURITYLABELS 662 SECURITYPOLICIES 663 SECURITYPOLICYCOMPONENTRULES 664 SECURITYPOLICYEXEMPTIONS 665 SEQUENCEAUTH 665 SEQUENCES 666 SERVEROPTIONS 668 SERVERS 668 SERVICECLASSES 668 slo lectura 575 STATEMENTS 670 SURROGATEAUTHIDS 670 SYSDUMMY1 710 TABAUTH 671 TABCONST 673 TABDEP 674 TABDETACHEDDEP 675 TABLES 676, 718 TABLESPACES 683 TABOPTIONS 684 TBSPACEAUTH 685 THRESHOLDS 685 TRANSFORMS 687 TRIGDEP 688 TRIGGERS 689 TYPEMAPPINGS 691 USEROPTIONS 694 VARIABLEAUTH 694 VARIABLEDEP 695 VARIABLES 696 VIEWS 697 visin general 575, 576 WORKACTIONS 698 WORKACTIONSETS 700 WORKCLASSES 701 WORKCLASSSETS 702 WORKLOADAUTH 703 WORKLOADCONNATTR 703 WORKLOADS 704 WRAPOPTIONS 705 WRAPPERS 705 XDBMAPGRAPHS 706 XDBMAPSHREDTREES 706 XSROBJECTAUTH 707 XSROBJECTCOMPONENTS 707
866
vistas de catlogo (continuacin) XSROBJECTDEP 708 XSROBJECTHIERARCHIES 709 XSROBJECTS 709 vistas de catlogo del sistema descripcin 17 Visual Explain gua de aprendizaje 842
XSR_DTD, procedimiento almacenado 481 XSR_ENTITY, procedimiento almacenado 483 XSR_REGISTER, procedimiento almacenado 484 XSR_UPDATE, procedimiento almacenado 486
Y
YEAR, funcin escalar descripcin 470 valores y argumentos 470
W
WEEK, funcin escalar descripcin 434 WEEK_ISO, funcin escalar descripcin 434 WHERE, clusula componentes de subseleccin de seleccin completa WITH, expresin de tabla comn sentencia-select 534
489
X
XML tipo de datos 90 versiones que reciben soporte 42 XMLAGG, funcin agregada descripcin 280 XMLATTRIBUTES, funcin escalar descripcin 435 XMLCAST, especificacin descripcin 186 XMLCOMMENT, funcin escalar descripcin 436 XMLCONCAT, funcin escalar descripcin 437 XMLDOCUMENT, funcin escalar descripcin 438 XMLELEMENT, funcin escalar descripcin 439 XMLEXISTS, predicado 226 XMLFOREST, funcin escalar descripcin 445 XMLGROUP, funcin escalar 282 XMLNAMESPACES, declaracin descripcin 448 XMLPARSE, funcin escalar descripcin 450 XMLPI, funcin escalar descripcin 452 XMLQUERY, funcin escalar descripcin 453 XMLROW, funcin escalar 456 XMLSERIALIZE, funcin escalar descripcin 458 XMLTABLE, funcin de tabla descripcin 471 XMLTEXT, funcin escalar descripcin 460 XMLVALIDATE, funcin escalar descripcin 462 XMLXSROBJECTID, funcin escalar descripcin 466 XSLTRANSFORM, funcin escalar descripcin 467 XSR_ADDSCHEMADOC, procedimiento almacenado XSR_COMPLETE, procedimiento almacenado 480
479
ndice
867
868
Impreso en Espaa
SC11-3508-02
Spine information: