db2/400 manual de consulta...

853
PORTADA Tapa del Libro -------------------------------------------------------------------------- AS/400 Advanced Series DB2/400 Manual de consulta SQL Versión 3 Release 7 Número de Documento SC10-9632-01 -------------------------------------------------------------------------- DB2/400 Manual de Consulta SQL V3R7 Tapa del Libro © Copyright IBM Corp. 1995, 1996 PORTADA - 1

Upload: lykhuong

Post on 24-Jan-2019

232 views

Category:

Documents


2 download

TRANSCRIPT

Page 1: DB2/400 Manual de Consulta SQLmarce.com/docs/systems/manuales/db2_400_manual_consulta_sql_v3r7.pdf · VERSION Nota de Versión Segunda edición (noviembre de 1996) Este manual es

PORTADA Tapa del Libro --------------------------------------------------- ----------------------- AS/400 Advanced Series DB2/400 Manual de consulta SQL Versión 3 Release 7 Número de Documento SC10-9632-01 --------------------------------------------------- -----------------------

DB2/400 Manual de Consulta SQL V3R7 Tapa del Libro

© Copyright IBM Corp. 1995, 1996 PORTADA - 1

Page 2: DB2/400 Manual de Consulta SQLmarce.com/docs/systems/manuales/db2_400_manual_consulta_sql_v3r7.pdf · VERSION Nota de Versión Segunda edición (noviembre de 1996) Este manual es

AVISOS Avisos +--- ¡Atención! -------------------------------------------------- ---+ ¦ ¦ ¦ Antes de utilizar esta información y el producto al que da ¦ ¦ soporte, asegúrese de leer la información general del apartado ¦ ¦ "Avisos" en el tema PORTADA_1 . ¦ ¦ ¦ +-------------------------------------------------- ------------------+

DB2/400 Manual de Consulta SQL V3R7 Avisos

© Copyright IBM Corp. 1995, 1996 AVISOS - 1

Page 3: DB2/400 Manual de Consulta SQLmarce.com/docs/systems/manuales/db2_400_manual_consulta_sql_v3r7.pdf · VERSION Nota de Versión Segunda edición (noviembre de 1996) Este manual es

VERSION Nota de Versión Segunda edición (noviembre de 1996) Este manual es la traducción del original en inglés AS/400 Advanced Series DB2 for OS/400 SQL Reference , SC41-4612-01. Esta edición es aplicable a los programas bajo lice ncia IBM DB2 Gestor de Consultas y Kit de Desarrollo SQL para OS/400 (P rograma 5716-ST1), Versión 3 Release 7 Modificación 0 e IBM Operating System/400 (Programa 5716-SS1), Versión 3 Release 7 Modificaci ón 0, y a todos los releases y modificaciones posteriores hasta que se indique lo contrario en nuevas ediciones. Asegúrese de que está utilizando la edición adecuad a para el nivel del producto. Efectúe el pedido de publicaciones a su representan te de ventas IBM o a la sucursal de IBM de su localidad. Si vive en l os Estados Unidos, Puerto Rico o Guam, puede solicitar publicaciones a través de IBM Software Manufacturing Solutions en el teléfono 800 +879-2755. En la dirección que figura más abajo no hay existencias d e publicaciones. IBM agradece sus comentarios. Al final de cada pub licación, normalmente encontrará un formulario para los comen tarios del lector. También puede enviar sus comentarios por correo a l a dirección siguiente: IBM S.A. National Language Solutions Center Avda Diagonal 571 08029 - Barcelona España o puede enviar sus comentarios por fax a: Desde España: (93) 321 61 34 Desde otros países: 34 3 321 61 34 Si tiene acceso a Internet, puede enviar sus coment arios electrónicamente a la dirección [email protected] om. Cuando envía información a IBM, otorga a IBM un der echo no exclusivo para utilizar o distribuir dicha información de la manera que crea adecuada sin incurrir por ello en ninguna obligació n con usted. © Copyright International Business Machines Corpora tion 1995, 1996. Reservados todos los derechos.

DB2/400 Manual de Consulta SQL V3R7 Nota de Versión

© Copyright IBM Corp. 1995, 1996 VERSION - 1

Page 4: DB2/400 Manual de Consulta SQLmarce.com/docs/systems/manuales/db2_400_manual_consulta_sql_v3r7.pdf · VERSION Nota de Versión Segunda edición (noviembre de 1996) Este manual es

CONTENIDO Contenido PORTADA Tapa del Libro AVISOS Avisos VERSION Nota de Versión CONTENIDO Contenido PORTADA_1 Avisos PORTADA_1.1 Información de la interfaz de programación PORTADA_1.2 Marcas registradas PREFACIO Acerca de DB2/400 Manual de Consulta SQL (SC 10-9632 (SC41-4612)) PREFACIO.1 Conformidad con estándares PREFACIO.2 Supuestos relacionados con los ejemplos de s entencias SQL PREFACIO.3 A quién va dirigido este manual PREFACIO.4 Innovaciones de este manual PREFACIO.5 Cómo interpretar los diagramas de sintaxis PREFACIO.6 Convenciones para describir valores de datos mixtos 1.0 Capítulo 1. Conceptos 1.1 Base de datos relacional 1.2 Lenguaje de Consulta Estructurada 1.3 SQL estático 1.4 SQL dinámico 1.5 SQL interactivo 1.6 Interfaz de nivel de llamada de SQL 1.7 Colecciones 1.8 Tablas 1.9 Claves 1.10 Claves principales y claves exclusivas 1.11 Integridad referencial 1.12 Desencadenantes 1.13 Índices 1.14 Vistas 1.15 Paquetes y planes de acceso 1.16 Procedimientos 1.17 Catálogo 1.18 Procesos de aplicación, concurrencia y recuperación 1.19 Nivel de aislamiento 1.20 Base de datos relacional distribuida 1.20.1 Servidores de la aplicación 1.20.2 CONNECT (tipo 1) y CONNECT (tipo 2) 1.20.3 Unidad de trabajo remota 1.20.4 Unidad de trabajo distribuida dirigida por la aplicación 1.20.5 Consideraciones sobre la representació n de datos 1.21 Conversión de caracteres 1.21.1 Juegos de caracteres y páginas de códi gos 1.21.2 Juegos de caracteres codificados y CCS ID 1.21.3 CCSID por omisión 1.22 Secuencia de clasificación 1.23 Autorización y privilegios 2.0 Capítulo 2. Elementos del lenguaje 2.1 Caracteres 2.2 Símbolos 2.3 Identificadores 2.3.1 Identificadores de SQL 2.3.2 Identificadores del sistema 2.3.3 Identificadores del lenguaje principa l 2.4 Convenios de denominación 2.4.1 Nombres SQL y nombres del sistema: c onsideraciones especiales 2.5 ID de autorización y nombres-autoriza ción 2.6 Tipos de datos 2.6.1 Series de caracteres 2.6.2 Subtipos de caracteres 2.6.3 Series gráficas 2.6.4 Subtipos gráficos 2.6.5 Números 2.6.6 Valores de fecha y hora 2.7 Asignaciones y comparaciones 2.7.1 Asignaciones numéricas 2.7.2 Asignaciones de serie 2.7.3 Reglas de conversión para asignacione s 2.7.4 Asignaciones de fecha y hora 2.7.5 Comparaciones numéricas 2.7.6 Comparaciones de serie 2.7.7 Reglas de conversión para comparación 2.7.8 Comparaciones de fecha y hora 2.8 Constantes 2.8.1 Constantes de enteros 2.8.2 Constantes de coma flotante 2.8.3 Constantes decimales 2.8.4 Constantes de serie de caracteres 2.8.5 Constantes de serie gráfica 2.8.6 Coma decimal 2.8.7 Delimitadores 2.9 Registros especiales 2.9.1 CURRENT DATE o CURRENT_DATE 2.9.2 CURRENT SERVER o CURRENT_SERVER 2.9.3 CURRENT TIME o CURRENT_TIME 2.9.4 CURRENT TIMESTAMP o CURRENT_TIMESTAMP 2.9.5 CURRENT TIMEZONE o CURRENT_TIMEZONE 2.9.6 USER 2.10 Nombres de columna 2.10.1 Nombres de columna calificados 2.10.2 Nombres de correlación 2.10.3 Calificadores de nombre de columna par a evitar la ambigüedad 2.10.4 Calificadores de nombre de columna en referencias correlacionadas 2.10.5 Nombres de columna no calificados 2.11 Referencias a variables del lenguaje p rincipal 2.12 Estructuras del lenguaje principal en C, COBOL, PL/I y RPG 2.13 Matrices de estructuras del lenguaje p rincipal en C, COBOL, PL/I y RPG 2.14 Expresiones

DB2/400 Manual de Consulta SQL V3R7 Contenido

© Copyright IBM Corp. 1995, 1996 CONTENIDO - 1

Page 5: DB2/400 Manual de Consulta SQLmarce.com/docs/systems/manuales/db2_400_manual_consulta_sql_v3r7.pdf · VERSION Nota de Versión Segunda edición (noviembre de 1996) Este manual es

2.14.1 Sin operadores 2.14.2 Con el operador de concatenación 2.14.3 Con operadores aritméticos 2.14.4 Dos operandos enteros 2.14.5 Operandos enteros y decimales 2.14.6 Dos operandos decimales 2.14.7 Aritmética decimal en SQL 2.14.8 Operandos de coma flotante 2.14.9 Operandos de fecha y hora y duraciones 2.14.10 Aritmética de fecha y hora en SQL 2.14.11 Orden de precedencia de las operaciones 2.15 Predicados 2.15.1 Predicado básico 2.15.2 Predicado cuantificado 2.15.3 Predicado BETWEEN 2.15.4 Predicado EXISTS 2.15.5 Predicado IN 2.15.6 Predicado LIKE 2.15.7 Predicado NULL 2.16 Condiciones de búsqueda 3.0 Capítulo 3. Funciones 3.1 Funciones de columna 3.1.2 AVG 3.1.3 COUNT 3.1.4 MAX 3.1.5 MIN 3.1.6 STDDEV 3.1.7 SUM 3.1.8 VARIANCE o VAR 3.2 Funciones escalares 3.2.2 ABS o ABSVAL 3.2.3 ACOS 3.2.4 ANTILOG 3.2.5 ASIN 3.2.6 ATAN 3.2.7 ATANH 3.2.8 CHAR 3.2.9 CHARACTER_LENGTH o CHAR_LENGTH 3.2.10 COALESCE 3.2.11 CONCAT 3.2.12 COS 3.2.13 COSH 3.2.14 COT 3.2.15 CURDATE 3.2.16 CURTIME 3.2.17 DATE 3.2.18 DAY 3.2.19 DAYOFMONTH 3.2.20 DAYOFWEEK 3.2.21 DAYOFYEAR 3.2.22 DAYS 3.2.23 DECIMAL 3.2.24 DEGREES 3.2.25 DIGITS 3.2.26 DOUBLE_PRECISION o DOUBLE 3.2.27 EXP 3.2.28 FLOAT 3.2.29 FLOOR 3.2.30 HASH 3.2.31 HEX 3.2.32 HOUR 3.2.33 IFNULL 3.2.34 INTEGER 3.2.35 LAND 3.2.36 LEFT 3.2.37 LENGTH 3.2.38 LN 3.2.39 LNOT 3.2.40 LOG o LOG10 3.2.41 LOR 3.2.42 LTRIM 3.2.43 MAX 3.2.44 MICROSECOND 3.2.45 MIN 3.2.46 MINUTE 3.2.47 MOD 3.2.48 MONTH 3.2.49 NODENAME 3.2.50 NODENUMBER 3.2.51 NOW 3.2.52 PARTITION 3.2.53 POWER 3.2.54 QUARTER 3.2.55 RRN 3.2.56 RTRIM 3.2.57 SECOND 3.2.58 SIN 3.2.59 SINH 3.2.60 SQRT 3.2.61 STRIP 3.2.62 SUBSTRING o SUBSTR 3.2.63 TAN 3.2.64 TANH 3.2.65 TIME 3.2.66 TIMESTAMP 3.2.67 TRANSLATE 3.2.68 TRIM 3.2.69 UCASE o UPPER

DB2/400 Manual de Consulta SQL V3R7 Contenido

© Copyright IBM Corp. 1995, 1996 CONTENIDO - 2

Page 6: DB2/400 Manual de Consulta SQLmarce.com/docs/systems/manuales/db2_400_manual_consulta_sql_v3r7.pdf · VERSION Nota de Versión Segunda edición (noviembre de 1996) Este manual es

3.2.70 VALUE 3.2.71 VARCHAR 3.2.72 VARGRAPHIC 3.2.73 WEEK 3.2.74 XOR 3.2.75 YEAR 3.2.76 ZONED 4.0 Capítulo 4. Consultas 4.1 Autorización 4.2 subselección 4.2.1 cláusula select 4.2.2 cláusula from 4.2.3 cláusula where 4.2.4 cláusula group-by 4.2.5 cláusula having 4.2.6 Ejemplos de una subselección 4.3 selección completa 4.3.1 Ejemplos de una selección completa 4.3.2 Reglas para tipos de datos de resulta do 4.3.3 Reglas de conversión para operaciones que combinan series 4.4 sentencia select 4.4.1 cláusula order-by 4.4.2 cláusula update 4.4.3 cláusula read-only 4.4.4 cláusula optimize 4.4.5 cláusula isolation 4.4.6 Ejemplos de una sentencia select 5.0 Capítulo 5. Sentencias 5.1 Cómo se invocan las sentencias SQL 5.2 Códigos de retorno SQL 5.3 Comentarios SQL 5.4 ALTER TABLE 5.4.1 Invocación 5.4.2 Autorización 5.4.3 Sintaxis 5.4.4 Descripción 5.4.5 ADD COLUMN 5.4.6 ALTER COLUMN 5.4.7 DROP COLUMN 5.4.8 ADD Restricción-unicidad 5.4.9 ADD restricción-referencial 5.4.10 DROP 5.4.11 Notas 5.4.12 Efectos en cascada 5.4.13 Ejemplos 5.5 BEGIN DECLARE SECTION 5.5.1 Invocación 5.5.2 Autorización 5.5.3 Sintaxis 5.5.4 Descripción 5.5.5 Ejemplos 5.6 CALL 5.6.1 Invocación 5.6.2 Autorización 5.6.3 Sintaxis 5.6.4 Descripción 5.6.5 Notas 5.6.6 Ejemplo 5.7 CLOSE 5.7.1 Invocación 5.7.2 Autorización 5.7.3 Sintaxis 5.7.4 Descripción 5.7.5 Notas 5.7.6 Ejemplo 5.8 COMMENT ON 5.8.1 Invocación 5.8.2 Autorización 5.8.3 Sintaxis 5.8.4 Descripción 5.8.5 Ejemplos 5.9 COMMIT 5.9.1 Invocación 5.9.2 Autorización 5.9.3 Sintaxis 5.9.4 Descripción 5.9.5 Notas 5.9.6 Ejemplo 5.10 CONNECT (Tipo 1) 5.10.1 Invocación 5.10.2 Autorización 5.10.3 Sintaxis 5.10.4 Descripción 5.10.5 Notas 5.10.6 Ejemplos 5.11 CONNECT (Tipo 2) 5.11.1 Invocación 5.11.2 Autorización 5.11.3 Sintaxis 5.11.4 Descripción 5.11.5 Notas 5.11.6 Ejemplos 5.12 CREATE COLLECTION 5.12.1 Invocación 5.12.2 Autorización 5.12.3 Sintaxis 5.12.4 Descripción 5.12.5 Notas

DB2/400 Manual de Consulta SQL V3R7 Contenido

© Copyright IBM Corp. 1995, 1996 CONTENIDO - 3

Page 7: DB2/400 Manual de Consulta SQLmarce.com/docs/systems/manuales/db2_400_manual_consulta_sql_v3r7.pdf · VERSION Nota de Versión Segunda edición (noviembre de 1996) Este manual es

5.12.6 Ejemplo 5.13 CREATE INDEX 5.13.1 Invocación 5.13.2 Autorización 5.13.3 Sintaxis 5.13.4 Descripción 5.13.5 Notas 5.13.6 Ejemplos 5.14 CREATE PROCEDURE 5.14.1 Invocación 5.14.2 Autorización 5.14.3 Sintaxis 5.14.4 Descripción 5.14.5 Notas 5.14.6 Ejemplo 5.15 CREATE SCHEMA 5.15.1 Invocación 5.15.2 Autorización 5.15.3 Sintaxis 5.15.4 Descripción 5.15.5 Notas 5.15.6 Ejemplos 5.16 CREATE TABLE 5.16.1 Invocación 5.16.2 Autorización 5.16.3 Sintaxis 5.16.4 Descripción 5.16.5 definición-columna 5.16.6 Restricción-unicidad 5.16.7 restricción-referencia 5.16.8 cláusula-grupo-nodos 5.16.9 Notas 5.16.10 Reglas para la generación de nombres de l sistema 5.16.11 Ejemplos 5.17 CREATE VIEW 5.17.1 Invocación 5.17.2 Autorización 5.17.3 Sintaxis 5.17.4 Descripción 5.17.5 Notas 5.17.6 Ejemplos 5.18 DECLARE CURSOR 5.18.1 Invocación 5.18.2 Autorización 5.18.3 Sintaxis 5.18.4 Descripción 5.18.5 Notas 5.18.6 Ejemplos 5.19 DECLARE PROCEDURE 5.19.1 Invocación 5.19.2 Autorización 5.19.3 Sintaxis 5.19.4 Descripción 5.19.5 Notas 5.19.6 Ejemplo 5.20 DECLARE STATEMENT 5.20.1 Invocación 5.20.2 Autorización 5.20.3 Sintaxis 5.20.4 Descripción 5.20.5 Ejemplo 5.21 DECLARE VARIABLE 5.21.1 Invocación 5.21.2 Autorización 5.21.3 Sintaxis 5.21.4 Descripción 5.21.5 Notas 5.21.6 Ejemplo 5.22 DELETE 5.22.1 Invocación 5.22.2 Autorización 5.22.3 Sintaxis 5.22.4 Descripción 5.22.5 Reglas de DELETE 5.22.6 Notas 5.22.7 Ejemplos 5.23 DESCRIBE 5.23.1 Invocación 5.23.2 Autorización 5.23.3 Sintaxis 5.23.4 Descripción 5.23.5 Notas 5.23.6 Ejemplo 5.24 DESCRIBE TABLE 5.24.1 Invocación 5.24.2 Autorización 5.24.3 Sintaxis 5.24.4 Descripción 5.24.5 Notas 5.24.6 Ejemplo 5.25 DISCONNECT 5.25.1 Invocación 5.25.2 Autorización 5.25.3 Sintaxis 5.25.4 Descripción 5.25.5 Notas 5.25.6 Ejemplos 5.26 DROP

DB2/400 Manual de Consulta SQL V3R7 Contenido

© Copyright IBM Corp. 1995, 1996 CONTENIDO - 4

Page 8: DB2/400 Manual de Consulta SQLmarce.com/docs/systems/manuales/db2_400_manual_consulta_sql_v3r7.pdf · VERSION Nota de Versión Segunda edición (noviembre de 1996) Este manual es

5.26.1 Invocación 5.26.2 Autorización 5.26.3 Sintaxis 5.26.4 Descripción 5.26.5 Ejemplos 5.27 END DECLARE SECTION 5.27.1 Invocación 5.27.2 Autorización 5.27.3 Sintaxis 5.27.4 Descripción 5.27.5 Ejemplos 5.28 EXECUTE 5.28.1 Invocación 5.28.2 Autorización 5.28.3 Sintaxis 5.28.4 Descripción 5.28.5 Sustitución de los marcadores de parám etros 5.28.6 Ejemplo 5.29 EXECUTE IMMEDIATE 5.29.1 Invocación 5.29.2 Autorización 5.29.3 Sintaxis 5.29.4 Descripción 5.29.5 Nota 5.29.6 Ejemplo 5.30 FETCH 5.30.1 Invocación 5.30.2 Autorización 5.30.3 Sintaxis 5.30.4 Descripción 5.30.5 operación-fetch-única 5.30.6 operación-fecth-varias-filas 5.30.7 Notas 5.30.8 Ejemplo 5.31 GRANT (Privilegios de paquete) 5.31.1 Invocación 5.31.2 Autorización 5.31.3 Sintaxis 5.31.4 Descripción 5.31.5 Nota 5.31.6 Ejemplo 5.32 GRANT (Privilegios de tabla) 5.32.1 Invocación 5.32.2 Autorización 5.32.3 Sintaxis 5.32.4 Descripción 5.32.5 Notas 5.32.6 Ejemplos 5.33 INCLUDE 5.33.1 Invocación 5.33.2 Autorización 5.33.3 Sintaxis 5.33.4 Descripción 5.33.5 Notas 5.33.6 Ejemplo 5.34 INSERT 5.34.1 Invocación 5.34.2 Autorización 5.34.3 Sintaxis 5.34.4 Descripción 5.34.5 insertar-múltiples-filas 5.34.6 Reglas de INSERT 5.34.7 Notas 5.34.8 Ejemplos 5.35 LABEL ON 5.35.1 Invocación 5.35.2 Autorización 5.35.3 Sintaxis 5.35.4 Descripción 5.35.5 Notas 5.35.6 Ejemplos 5.36 LOCK TABLE 5.36.1 Invocación 5.36.2 Autorización 5.36.3 Sintaxis 5.36.4 Descripción 5.36.5 Ejemplo 5.37 OPEN 5.37.1 Invocación 5.37.2 Autorización 5.37.3 Sintaxis 5.37.4 Descripción 5.37.5 Sustitución de los marcadores de parám etros 5.37.6 Notas 5.37.7 Ejemplos 5.38 PREPARE 5.38.1 Invocación 5.38.2 Autorización 5.38.3 Sintaxis 5.38.4 Descripción 5.38.5 Notas 5.38.6 Ejemplos 5.39 RELEASE 5.39.1 Invocación 5.39.2 Autorización 5.39.3 Sintaxis 5.39.4 Descripción 5.39.5 Notas

DB2/400 Manual de Consulta SQL V3R7 Contenido

© Copyright IBM Corp. 1995, 1996 CONTENIDO - 5

Page 9: DB2/400 Manual de Consulta SQLmarce.com/docs/systems/manuales/db2_400_manual_consulta_sql_v3r7.pdf · VERSION Nota de Versión Segunda edición (noviembre de 1996) Este manual es

5.39.6 Ejemplos 5.40 RENAME 5.40.1 Invocación 5.40.2 Autorización 5.40.3 Sintaxis 5.40.4 Descripción 5.40.5 Notas 5.40.6 Ejemplos 5.41 REVOKE (Privilegios de paquete) 5.41.1 Invocación 5.41.2 Autorización 5.41.3 Sintaxis 5.41.4 Descripción 5.41.5 Notas 5.41.6 Ejemplo 5.42 REVOKE (Privilegios de tabla) 5.42.1 Invocación 5.42.2 Autorización 5.42.3 Sintaxis 5.42.4 Descripción 5.42.5 Notas 5.42.6 Ejemplos 5.43 ROLLBACK 5.43.1 Invocación 5.43.2 Autorización 5.43.3 Sintaxis 5.43.4 Descripción 5.43.5 Notas 5.43.6 Ejemplo 5.44 SELECT INTO 5.44.1 Invocación 5.44.2 Autorización 5.44.3 Sintaxis 5.44.4 Descripción 5.44.5 Ejemplos 5.45 SET CONNECTION 5.45.1 Invocación 5.45.2 Autorización 5.45.3 Sintaxis 5.45.4 Descripción 5.45.5 Notas 5.45.6 Ejemplo 5.46 SET OPTION 5.46.1 Invocación 5.46.2 Autorización 5.46.3 Sintaxis 5.46.4 Descripción 5.46.5 Notas 5.46.6 Ejemplos 5.47 SET RESULT SETS 5.47.1 Invocación 5.47.2 Autorización 5.47.3 Sintaxis 5.47.4 Descripción 5.47.5 Notas 5.47.6 Ejemplo 5.48 SET TRANSACTION 5.48.1 Invocación 5.48.2 Autorización 5.48.3 Sintaxis 5.48.4 Descripción 5.48.5 Notas 5.48.6 Ejemplos 5.49 UPDATE 5.49.1 Invocación 5.49.2 Autorización 5.49.3 Sintaxis 5.49.4 Descripción 5.49.5 Reglas de UPDATE 5.49.6 Notas 5.49.7 Ejemplos 5.50 WHENEVER 5.50.1 Invocación 5.50.2 Autorización 5.50.3 Sintaxis 5.50.4 Descripción 5.50.5 Notas 5.50.6 Ejemplo A.0 Apéndice A. Límites en SQL B.0 Apéndice B. Área de comunicaciones SQL B.1 Descripciones de campo B.2 Declaraciones INCLUDE SQLCA C.0 Apéndice C. Área de descriptor SQL (SQ LDA) C.1 Descripciones de campo C.2 Descripciones de campo en una apari ción de SQLVAR C.3 SQLTYPE y SQLLEN C.4 SQLDATA o SQLNAME C.5 Declaraciones INCLUDE SQLDA D.0 Apéndice D. Palabras reservadas E.0 Apéndice E. Valores CCSID F.0 Apéndice F. Consideraciones para la ut ilización de la base de datos relacional distribuid a G.0 Apéndice G. Excepciones a los estándar es G.1 Nivel de entrada ANS/ISO/FIPS 1992 G.2 SQL de IBM H.0 Apéndice H. Vistas de catálogo de DB2 para OS/400 H.1 Notas H.2 SQL_LANGUAGES H.3 SYSCOLUMNS

DB2/400 Manual de Consulta SQL V3R7 Contenido

© Copyright IBM Corp. 1995, 1996 CONTENIDO - 6

Page 10: DB2/400 Manual de Consulta SQLmarce.com/docs/systems/manuales/db2_400_manual_consulta_sql_v3r7.pdf · VERSION Nota de Versión Segunda edición (noviembre de 1996) Este manual es

H.4 SYSCST H.5 SYSCSTCOL H.6 SYSCSTDEP H.7 SYSINDEXES H.8 SYSKEYCST H.9 SYSKEYS H.10 SYSPACKAGE H.11 SYSPARMS H.12 SYSPROCS H.13 SYSREFCST H.14 SYSTABLES H.15 SYSVIEWDEP H.16 SYSVIEWS BIBLIOGRAFIA Bibliografía INDICE Índice COMENTARIOS Hoja de Comentarios

DB2/400 Manual de Consulta SQL V3R7 Contenido

© Copyright IBM Corp. 1995, 1996 CONTENIDO - 7

Page 11: DB2/400 Manual de Consulta SQLmarce.com/docs/systems/manuales/db2_400_manual_consulta_sql_v3r7.pdf · VERSION Nota de Versión Segunda edición (noviembre de 1996) Este manual es

PORTADA_1 Avisos Las referencias hechas en esta publicación a produc tos, programas o servicios de IBM no implican que IBM tenga la inten ción de anunciarlos en todos los países en los que realiza operaciones. C ualquier referencia a un producto, programa o servicio IBM no establece n i implica que únicamente pueda utilizarse dicho producto, program a o servicio IBM. Puede utilizarse cualquier producto, programa o ser vicio funcionalmente equivalente, siempre que no infrinja la propiedad i ntelectual vigente de IBM ni otros derechos legalmente protegibles, en lu gar del producto, programa o servicio IBM. La evaluación y la verifi cación de la operación conjunta con otros productos, excepto aquellos expr esamente designados por IBM, son responsabilidad del usuario. IBM puede tener patentes o patentes pendientes de a plicación que cubran el tema tratado en este documento. La entrega de este documento no le otorga ninguna licencia sobre dichas patentes. Puede envi ar consultas sobre las licencias, por escrito, al IBM Director of Licensin g, IBM Corporation, 500 Columbus Avenue, Thornwood, NY 10594, U.S.A. Los usuarios bajo licencia de este programa que des een obtener información acerca del mismo con el propósito de habilitar: (i ) el intercambio de información entre programas creados independienteme nte y otros programas (incluido éste) y (ii) la utilización mutua de la i nformación que se haya intercambiado, deben ponerse en contacto con el coo rdinador de interoperabilidad de software. Dicha información p uede estar disponible, sujeta a los términos y condiciones apropiados, inc luyendo en algunos casos el pago de una tarifa. Dirija sus preguntas a: IBM Corporation Software Interoperability Coordinator 3605 Highway 52 N Rochester, MN 55901-7829 USA Este manual puede contener imprecisiones técnicas y /o errores tipográficos. Esta publicación puede hacer referencia a productos que estén anunciados pero que no estén disponibles actualmente en su paí s. Este publicación también puede hacer referencia a productos que no s e hayan anunciado en su país. IBM no se compromete a hacer disponible ning ún producto no anunciado al que se haga referencia en esta publica ción. La decisión final de anunciar cualquier producto depende del ju icio comercial y técnico de IBM. Este manual contiene ejemplos de datos e informes q ue se utilizan en operaciones diarias de negocios. Para ilustrarlos l o más completamente posible, los ejemplos incluyen nombres de personas, empresas, marcas y productos. Todos estos nombres son ficticios y cua lquier parecido con nombres y direcciones utilizados por una empresa re al es pura coincidencia. Esta publicación contiene pequeños programas que en trega IBM como ejemplos sencillos a modo de ilustración. Estos ejemplos no se han probado meticulosamente bajo todas las condiciones. IBM, p or consiguiente, no puede garantizar ni da por supuestos la fiabilidad, el servicio ni la funcionalidad de estos programas. Todos los progra mas aquí incluidos se proporcionan "TAL CUAL". SE DESCARTAN EXPRESAMENTE LAS GARANTÍAS DE COMERCIABILIDAD E IDONEIDAD IMPLÍCITAS PARA UN PROP ÓSITO DETERMINADO. Subtemas PORTADA_1.1 Información de la interfaz de programación PORTADA_1.2 Marcas registradas

DB2/400 Manual de Consulta SQL V3R7 Avisos

© Copyright IBM Corp. 1995, 1996 PORTADA_1 - 1

Page 12: DB2/400 Manual de Consulta SQLmarce.com/docs/systems/manuales/db2_400_manual_consulta_sql_v3r7.pdf · VERSION Nota de Versión Segunda edición (noviembre de 1996) Este manual es

PORTADA_1.1 Información de la interfaz de programac ión Esta publicación se propone mostrar a los programad ores y administradores de bases de datos cómo acceder a los datos de una b ase de datos y cómo preparar, ejecutar y probar un programa de aplicaci ón utilizando el programa bajo licencia DB2 Gestor de Consultas y Ki t de Desarrollo SQL. A menos que se indique lo contrario de forma específi ca, la información de esta publicación se debe utilizar sólo con el manua l DB/2 for OS/400 SQL Programming .

DB2/400 Manual de Consulta SQL V3R7 Información de la interfaz de programación

© Copyright IBM Corp. 1995, 1996 PORTADA_1.1 - 1

Page 13: DB2/400 Manual de Consulta SQLmarce.com/docs/systems/manuales/db2_400_manual_consulta_sql_v3r7.pdf · VERSION Nota de Versión Segunda edición (noviembre de 1996) Este manual es

PORTADA_1.2 Marcas registradas Los siguientes términos son marcas registradas de I BM Corporation en los Estados Unidos y/o en otros países: AIX IBM AIX/6000 Integrated L anguage Environment Application System/400 Operating Sy stem/400 AS/400 OS/2 BookManager OS/400 C/400 RPG/400 COBOL/400 SQL/DS DB2 System/370 Distributed Relational Database ArchiteSystem/38 DRDA 400 Microsoft, Windows, y el logotipo de Windows 95 son marcas registradas de Microsoft Corporation. PC Direct es una marca registrada de Ziff Communica tions Company e IBM Corporation la utiliza bajo licencia. UNIX es una marca registrada en los Estados Unidos y otros países, para la cual se concede licencia exclusivamente a través de X/Open Company Limited. C-bus es una marca registrada de Corollary, Inc. Otros nombres de empresas, productos y servicios, q ue pueden estar marcados con doble asterisco (**), son marcas regis tradas o marcas de servicio de terceros.

DB2/400 Manual de Consulta SQL V3R7 Marcas registradas

© Copyright IBM Corp. 1995, 1996 PORTADA_1.2 - 1

Page 14: DB2/400 Manual de Consulta SQLmarce.com/docs/systems/manuales/db2_400_manual_consulta_sql_v3r7.pdf · VERSION Nota de Versión Segunda edición (noviembre de 1996) Este manual es

PREFACIO Acerca de DB2/400 Manual de Consulta SQL ( SC10-9632 (SC41-4612)) En este manual se define el Lenguaje de Consulta Es tructurada (SQL) tal como se le da soporte en DB2 Gestor de Consultas y Kit de Desarrollo SQL. Contiene información de consulta referente a las ta reas propias de la administración del sistema, administración de bases de datos, programación de aplicaciones y funcionamiento. Este manual incl uye la sintaxis, notas sobre utilización, palabras clave y ejemplos de cad a una de las sentencias SQL utilizadas en el sistema AS/400. | Para obtener información acerca de otras publicacio nes del AS/400,| consulte uno de las siguientes manuales: | � El manual Consulta de Publicaciones , SC10-9613 (SC41-4003), en la| biblioteca en soporte software del AS/400.| � La interfaz Directorio de Información del AS/400 , una interfaz| multimedia exclusiva para una base de datos en la que puede buscarse y| que contiene descripciones de títulos disponibl es en IBM o en otras| editoriales seleccionadas. El manual Directorio de Información del| AS/400 se envía con el sistema sin gastos adicionales. Subtemas PREFACIO.1 Conformidad con estándares PREFACIO.2 Supuestos relacionados con los ejemplos de sentenc ias SQL PREFACIO.3 A quién va dirigido este manual PREFACIO.4 Innovaciones de este manual PREFACIO.5 Cómo interpretar los diagramas de sintaxis PREFACIO.6 Convenciones para describir valores de datos mixto s

DB2/400 Manual de Consulta SQL V3R7 Acerca de DB2/400 Manual de Consulta SQL (SC10-9632 (SC41-4612))

© Copyright IBM Corp. 1995, 1996 PREFACIO - 1

Page 15: DB2/400 Manual de Consulta SQLmarce.com/docs/systems/manuales/db2_400_manual_consulta_sql_v3r7.pdf · VERSION Nota de Versión Segunda edición (noviembre de 1996) Este manual es

PREFACIO.1 Conformidad con estándares | DB2 para OS/400 Versión 3 Release 7 se ajusta en gr an medida a los siguientes estándares SQL industriales y de IBM: � Estándar ISO (Organización de Estándares Interna cionales) 9075-1992 sobre el lenguaje SQL de bases de datos � Estándar ANSI (Instituto Nacional Americano de E stándares) X3.135-1992 sobre el lenguaje SQL de bases de datos � La publicación FIPS (Estándares para el Proceso de Información Federal) 127-2 sobre el lenguaje SQL de bases d e datos � IBM SQL Reference Version 2 , SC26-8416 La lista con las diferencias y omisiones conocidas de SQL de IBM y el nivel de entrada de los estándares ISO, ANSI y FIPS se encuentra en el Apéndice G, "Excepciones a los estándares" en el te ma G.0 . Si desea consultar una lista de las publicaciones r elacionadas, consulte el apartado de bibliografía.

DB2/400 Manual de Consulta SQL V3R7 Conformidad con estándares

© Copyright IBM Corp. 1995, 1996 PREFACIO.1 - 1

Page 16: DB2/400 Manual de Consulta SQLmarce.com/docs/systems/manuales/db2_400_manual_consulta_sql_v3r7.pdf · VERSION Nota de Versión Segunda edición (noviembre de 1996) Este manual es

PREFACIO.2 Supuestos relacionados con los ejemplos de sentencias SQL | Los ejemplos de sentencias SQL mostrados en esta gu ía están basados en las| tablas de ejemplos del Apéndice A de la publicación DB/2 for OS/400 SQL| Programming y en ellos se presupone lo siguiente: � Se muestran en el entorno del SQL interactivo o están escritos en COBOL. Para delimitar una sentencia SQL dentro de un programa en COBOL, se utiliza EXEC SQL y END-EXEC. Si desea una descripción de cómo utilizar sentencias SQL en un programa en COBOL, se facilita una| en . el capítulo 6 del manual DB/2 for OS/400 SQL Programming . � Cada uno de los ejemplos de SQL consta de varias líneas; cada una de las cláusulas de la sentencia figura en una lín ea aparte. � La palabras clave SQL están resaltadas. | � Los nombres de tablas que se proporcionan en el apéndice A de la| publicación DB/2 for OS/400 SQL Programming utilizan la colección CORPDATA. Los nombres de tablas que no se prop orcionan en el apéndice| A de la publicación DB/2 for OS/400 SQL Programming deben utilizar las colecciones creadas por el usuario. � La columnas calculadas están encerradas entre pa réntesis, (). � Se utiliza el convenio de denominación de SQL. � Se presuponen las opciones de precompilador APOS T y APOSTSQL (aunque no sean valores por omisión en COBOL). Las con stantes de serie de caracteres dentro de SQL y las sentencias de le nguaje principal están delimitadas por medio de apóstrofos ('). � Se utiliza la secuencia de clasificación *HEX. Siempre que los ejemplos se aparten de estos supues tos, se indicará oportunamente.

DB2/400 Manual de Consulta SQL V3R7 Supuestos relacionados con los ejemplos de sentencias SQL

© Copyright IBM Corp. 1995, 1996 PREFACIO.2 - 1

Page 17: DB2/400 Manual de Consulta SQLmarce.com/docs/systems/manuales/db2_400_manual_consulta_sql_v3r7.pdf · VERSION Nota de Versión Segunda edición (noviembre de 1996) Este manual es

PREFACIO.3 A quién va dirigido este manual Este manual está pensado para programadores que des een escribir aplicaciones que utilicen SQL para acceder a una ba se de datos de AS/400. Se supone que usted ya posee conocimientos de admin istración del sistema,| administración de base de datos o de programación d e aplicaciones para el| AS/400, tal y como se indica en el manual DB/2 for OS/400 SQL Programming , SC41-4611, así como conocimientos de: � COBOL/400, ILE C/400, ILE COBOL/400, ILE RPG/400 , AS/400 PL/I, REXX, o el lenguaje de programación RPG/400 Las referencias hechas en este manual a RPG y C OBOL se refieren al lenguaje RPG o COBOL en general. Las referenci as hechas a COBOL/400, ILE COBOL/400, ILE RPG/400 o RPG/400 se refiere n a elementos específicos del producto en los que difieren un os de otros. � Lenguaje de Consulta Estructurada (SQL) Este manual es un libro de consulta más que una guí a de aprendizaje. Se da por supuesto que usted ya está familiarizado con la programación en SQL. También se da por supuesto que va a escribir aplicaciones única y exclusivamente para el AS/400. | Si necesita más información sobre la utilización de sentencias SQL, la| sintaxis de las sentencias y los parámetros, consul te el manual DB/2 for| OS/400 SQL Programming . Si desea diseñar aplicaciones que sean transportabl es a otros entornos IBM, será preciso que consulte los manuales corresp ondientes a dichos entornos, además del presente manual (por ejemplo IBM SQL Reference Version 2, SC26-8416).

DB2/400 Manual de Consulta SQL V3R7 A quién va dirigido este manual

© Copyright IBM Corp. 1995, 1996 PREFACIO.3 - 1

Page 18: DB2/400 Manual de Consulta SQLmarce.com/docs/systems/manuales/db2_400_manual_consulta_sql_v3r7.pdf · VERSION Nota de Versión Segunda edición (noviembre de 1996) Este manual es

PREFACIO.4 Innovaciones de este manual Las innovaciones más importantes incorporadas en es te manual son: � Sentencia RENAME � COMMENT ON INDEX � Soporte de DB2 Multisystem for OS/400 Una línea vertical (|) a la izquierda del texto señ ala un cambio o una adición.

DB2/400 Manual de Consulta SQL V3R7 Innovaciones de este manual

© Copyright IBM Corp. 1995, 1996 PREFACIO.4 - 1

Page 19: DB2/400 Manual de Consulta SQLmarce.com/docs/systems/manuales/db2_400_manual_consulta_sql_v3r7.pdf · VERSION Nota de Versión Segunda edición (noviembre de 1996) Este manual es

PREFACIO.5 Cómo interpretar los diagramas de sintax is En este manual la sintaxis se describe utilizando l a siguiente estructura: � Los diagramas de sintaxis se leen de izquierda a derecha, y de arriba a abajo, siguiendo la dirección de la línea. El símbolo --- indica el principio de la sent encia. El símbolo --- indica que la sintaxis de la se ntencia continúa en la línea siguiente. El símbolo --- indica que la sentencia viene d e la línea anterior. � El símbolo --- indica el final de una sentenci a. Los diagramas correspondientes a unidades sintá cticas que no sean sentencias completas empiezan con el símbolo - -- y terminan con el símbolo --- . � Los elementos obligatorios aparecen en la línea horizontal (línea principal). >>-- elemento_obligatorio -------------------------------------------->< � Los elementos opcionales aparecen debajo de la l ínea principal. >>-- elemento_obligatorio -------------------------------------------->< +- elemento_opcional -+ Si aparece algún elemento opcional por encima d e la línea principal, ese elemento no tiene ninguna repercusión en la ejecución de la sentencia y sólo se utiliza para mayor claridad . +- elemento_opcional -+ >>-- elemento_obligatorio -------------------------------------------->< � Si se puede elegir entre dos o más elementos, és tos aparecen verticalmente formado una pila. Si debe elegir uno de los elementos de la pila, uno de ell os aparecerá en la línea principal. >>-- elemento_obligatorio ---- elección_obligatoria1 ------------------->< +- elección_obligatoria2 -+ Si la elección de uno de los elementos es opcio nal, la pila entera aparece debajo de la línea principal. >>-- elemento_obligatorio -------------------------------------------->< +- elección_opcional1 -¦ +- elección_opcional2 -+ Si uno de los elementos es el valor por omisión , éste aparecerá por encima de la línea principal y las restantes op ciones aparecerán debajo de la línea. +- elección_por_omisión -+ >>-- elemento_obligatorio --+----------------------+------------------>< +- elección_opcional ----¦ +- elección_opcional ----+ � Para indicar que un elemento puede repetirse, ap arece una flecha que retrocede hacia la izquierda por encima de la l ínea principal. <-------------------- + >>-- elemento_obligatorio ---- elemento_repetible ---------------------->< Si la flecha de repetición contiene una coma, s ignifica que debe separar los elementos repetidos con una coma. <-,------------------ + >>-- elemento_obligatorio ---- elemento_repetible ---------------------->< Si la flecha de repetición está situada encima de una pila, esto indica que puede repetir los elementos contenid os en la pila. � Las palabras clave aparecen en mayúsculas (por e jemplo, FROM). Deben escribirse exactamente igual que se indica. La s variables aparecen todas en minúsculas (por ejemplo, nombre-columna ). Representan nombres o valores dados por el usuario. � Si aparecen signos de puntuación, paréntesis, op eradores aritméticos u otros símbolos, debe introducirlos como parte d e la sintaxis.

DB2/400 Manual de Consulta SQL V3R7 Cómo interpretar los diagramas de sintaxis

© Copyright IBM Corp. 1995, 1996 PREFACIO.5 - 1

Page 20: DB2/400 Manual de Consulta SQLmarce.com/docs/systems/manuales/db2_400_manual_consulta_sql_v3r7.pdf · VERSION Nota de Versión Segunda edición (noviembre de 1996) Este manual es

PREFACIO.6 Convenciones para describir valores de d atos mixtos Cuando en los ejemplos se incluyen valores de datos mixtos, se aplican las convenciones siguientes:

DB2/400 Manual de Consulta SQL V3R7 Convenciones para describir valores de datos mixtos

© Copyright IBM Corp. 1995, 1996 PREFACIO.6 - 1

Page 21: DB2/400 Manual de Consulta SQLmarce.com/docs/systems/manuales/db2_400_manual_consulta_sql_v3r7.pdf · VERSION Nota de Versión Segunda edición (noviembre de 1996) Este manual es

1.0 Capítulo 1. Conceptos Subtemas 1.1 Base de datos relacional 1.2 Lenguaje de Consulta Estructurada 1.3 SQL estático 1.4 SQL dinámico 1.5 SQL interactivo 1.6 Interfaz de nivel de llamada de SQL 1.7 Colecciones 1.8 Tablas 1.9 Claves 1.10 Claves principales y claves exclusivas 1.11 Integridad referencial 1.12 Desencadenantes 1.13 Índices 1.14 Vistas 1.15 Paquetes y planes de acceso 1.16 Procedimientos 1.17 Catálogo 1.18 Procesos de aplicación, concurrencia y recuperació n 1.19 Nivel de aislamiento 1.20 Base de datos relacional distribuida 1.21 Conversión de caracteres 1.22 Secuencia de clasificación 1.23 Autorización y privilegios

DB2/400 Manual de Consulta SQL V3R7 Capítulo 1. Conceptos

© Copyright IBM Corp. 1995, 1996 1.0 - 1

Page 22: DB2/400 Manual de Consulta SQLmarce.com/docs/systems/manuales/db2_400_manual_consulta_sql_v3r7.pdf · VERSION Nota de Versión Segunda edición (noviembre de 1996) Este manual es

1.1 Base de datos relacional Una base de datos relacional es una base de datos q ue puede percibirse como un conjunto de tablas y que puede manipularse de acuerdo con el modelo relacional de datos. Una base de datos rela cional es un conjunto de objetos utilizados para almacenar, acceder y ges tionar datos. El conjunto de objetos incluye tablas, vistas, índices y paquetes. En los sistemas AS/400 sólo existe una base de dato s relacional. Consta de todos los objetos de base de datos almacenados l ocalmente en el sistema AS/400. El nombre de la base de datos relacional l ocal puede asignarse mediante el mandato ADDRDBDIRE (añadir la entrada d e directorio RDB). También se puede acceder a otras bases de datos rel acionales de otros sistemas de forma remota. El gestor de base de datos es el nombre que se util iza de forma genérica para identificar el Código Interno bajo Licencia de l AS/400 y la parte DB2 para OS/400 del código que gestiona la base de dato s relacional.

DB2/400 Manual de Consulta SQL V3R7 Base de datos relacional

© Copyright IBM Corp. 1995, 1996 1.1 - 1

Page 23: DB2/400 Manual de Consulta SQLmarce.com/docs/systems/manuales/db2_400_manual_consulta_sql_v3r7.pdf · VERSION Nota de Versión Segunda edición (noviembre de 1996) Este manual es

1.2 Lenguaje de Consulta Estructurada El Lenguaje de Consulta Estructurada (SQL) es un le nguaje estandarizado para definir y manipular datos de una base de datos relacional. De acuerdo con el modelo relacional de los datos, se c onceptúa la base de datos como un conjunto de tablas, las relaciones se representan mediante los valores contenidos en las tablas, y los datos s e recuperan especificando una tabla de resultados derivable a p artir de una o más tablas base. Las sentencias SQL las ejecuta el gestor de base de datos. Una de las funciones del gestor de base de datos consiste en t ransformar la especificación de una tabla de resultados en una se cuencia de operaciones internas que optimicen la recuperación de datos. E sta transformación se produce cuando la sentencia SQL está preparada . Dicha transformación recibe también el nombre de enlace . Todas las sentencias SQL ejecutables deben preparar se antes de poderlas ejecutar. El resultado de la preparación es el for mato ejecutable u operativo de la sentencia. El método de preparar u na sentencia SQL y la continuidad de su formato operativo es lo que disti ngue al SQL estático del SQL dinámico.

DB2/400 Manual de Consulta SQL V3R7 Lenguaje de Consulta Estructurada

© Copyright IBM Corp. 1995, 1996 1.2 - 1

Page 24: DB2/400 Manual de Consulta SQLmarce.com/docs/systems/manuales/db2_400_manual_consulta_sql_v3r7.pdf · VERSION Nota de Versión Segunda edición (noviembre de 1996) Este manual es

1.3 SQL estático El formato fuente de una sentencia SQL estática está hospedado en un programa de aplicación escrito en un lenguaje princ ipal como COBOL. La sentencia se prepara antes de que se ejecute el pro grama y el formato operativo de la sentencia continúa después de la ej ecución del programa. Antes de que se compile un programa fuente que cont enga sentencias SQL estáticas, debe procesarlo un precompilador SQL. E l precompilador comprueba la sintaxis de las sentencias SQL, las tr ansforma en comentarios del lenguaje principal y genera sentencias de lengu aje principal para llamar al gestor de base de datos. La preparación de un programa de aplicación SQL inc luye la precompilación, la preparación de sus sentencias SQL estáticas y la compilación del programa fuente modificado.

DB2/400 Manual de Consulta SQL V3R7 SQL estático

© Copyright IBM Corp. 1995, 1996 1.3 - 1

Page 25: DB2/400 Manual de Consulta SQLmarce.com/docs/systems/manuales/db2_400_manual_consulta_sql_v3r7.pdf · VERSION Nota de Versión Segunda edición (noviembre de 1996) Este manual es

1.4 SQL dinámico Una sentencia SQL dinámica se prepara durante la ejecución de la aplicación SQL y el formato operativo de la misma n o continúa más allá de la unidad de trabajo (a menos que se utilice COMMIT HOLD o ROLLBACK HOLD). (1) El formato fuente de la sentencia es una serie de caracteres que el programa pasa al gestor de bases de datos ut ilizando la sentencia de SQL estática PREPARE o EXECUTE IMMEDIATE. Las sentencias SQL hospedadas en una aplicación REX X son sentencias de SQL dinámicas. Las sentencias SQL sometidas al recurso de SQL interactivo también son sentencias de SQL dinámicas. (1) Se exceptúan las sentencias SELECT preparadas que están asociadas con un cursor declarado con WITH HOLD .

DB2/400 Manual de Consulta SQL V3R7 SQL dinámico

© Copyright IBM Corp. 1995, 1996 1.4 - 1

Page 26: DB2/400 Manual de Consulta SQLmarce.com/docs/systems/manuales/db2_400_manual_consulta_sql_v3r7.pdf · VERSION Nota de Versión Segunda edición (noviembre de 1996) Este manual es

1.5 SQL interactivo Con cada gestor de bases de datos hay asociado un r ecurso de SQL interactivo. En esencia, cada recurso de SQL inter activo es un programa de aplicación SQL que lee sentencias de un terminal , las prepara y ejecuta dinámicamente y visualiza los resultados al usuario . De tales sentencias SQL se dice que se emiten interactivamente . Los recursos interactivos de DB2 para OS/400 se invocan mediante el mandato STRS QL o el mandato STRQM. Para obtener más información acerca de los recursos interactivos de SQL, consulte los manuales DB2/400 Utilización de Gestor de Consultas y DB/2 for OS/400 SQL Programming .

DB2/400 Manual de Consulta SQL V3R7 SQL interactivo

© Copyright IBM Corp. 1995, 1996 1.5 - 1

Page 27: DB2/400 Manual de Consulta SQLmarce.com/docs/systems/manuales/db2_400_manual_consulta_sql_v3r7.pdf · VERSION Nota de Versión Segunda edición (noviembre de 1996) Este manual es

1.6 Interfaz de nivel de llamada de SQL DB2 para OS/400 da soporte a la Interfaz de nivel d e llamada X/Open de SQL. Esto permite a los usuarios de cualquier leng uaje del ILE acceder a las funciones SQL directamente a través de llamadas de procedimiento a un programa de servicio que proporciona DB2 para OS/40 0. Utilizando la Interfaz de nivel de llamada de SQL se pueden ejecu tar todas las funciones SQL sin que sea necesaria una precompilación. Se tr ata de un conjunto de llamadas de procedimiento estándar para preparar se ntencias SQL, ejecutar sentencias SQL, buscar filas de datos, e incluso re alizar funciones avanzadas como por ejemplo acceder a los catálogos, y enlazar variables de programa con columnas de salida. Para obtener una descripción completa de todas las funciones disponibles y su sintaxis, consulte el manual DB2 for OS/400 SQL Call Level Interface .

DB2/400 Manual de Consulta SQL V3R7 Interfaz de nivel de llamada de SQL

© Copyright IBM Corp. 1995, 1996 1.6 - 1

Page 28: DB2/400 Manual de Consulta SQLmarce.com/docs/systems/manuales/db2_400_manual_consulta_sql_v3r7.pdf · VERSION Nota de Versión Segunda edición (noviembre de 1996) Este manual es

1.7 Colecciones Los objetos de una base de datos relacional se orga nizan en conjuntos llamados colecciones. Una colección proporciona un a clasificación lógica de los objetos de la base de datos. Las coleccione s también reciben el nombre de esquemas. Cuando se crea una tabla, una vista o un índice, se asignan a una sola colección. La colección a la que se asigna un obje to viene determinada por el nombre del objeto. CREATE TABLE C.X, por ej emplo, crea la tabla X en la colección C.

DB2/400 Manual de Consulta SQL V3R7 Colecciones

© Copyright IBM Corp. 1995, 1996 1.7 - 1

Page 29: DB2/400 Manual de Consulta SQLmarce.com/docs/systems/manuales/db2_400_manual_consulta_sql_v3r7.pdf · VERSION Nota de Versión Segunda edición (noviembre de 1996) Este manual es

1.8 Tablas Una tabla es un objeto en el que se almacenan datos de usuario. Las tablas son estructuras lógicas mantenidas por el ge stor de bases de datos. Están compuestas de filas y columnas. Dentro de la tabla no existe un orden inherente en las filas. En la intersección d e cada fila y columna hay un dato específico llamado valor . Una columna es un conjunto de valores del mismo tipo. Una fila es una secuencia de valores tal que en ella el enésimo valor es un valor de la enésima columna de la tabla. Con la sentencia CREATE TABLE se crean tablas base , que se utilizan para contener datos de usuario permanentes. Una tabla de resultados es un conjunto de filas que el gestor de base de datos se lecciona o genera a partir de una o más tablas base. Toda tabla base tiene un nombre propio y puede tene r un nombre del sistema diferente. El nombre del sistema es el nombre que utiliza el OS/400. Se acepta cualquiera de los dos nombres para especific ar un nombre de tabla en sentencias SQL. Para obtener más información co nsulte el apartado "CREATE TABLE" en el tema 5.16 . Una columna de una tabla base tiene un nombre y pue de tener un nombre de columna del sistema diferente. El nombre de column a del sistema es el nombre que utiliza el OS/400. Se acepta cualquiera de los dos nombres para especificar un nombre de columna en sentencias SQL. Para obtener más información consulte el apartado "CREATE TABLE" en el tema 5.16 . | Un grupo de nodos es un objeto que proporciona una agrupación lógica de un| conjunto de dos o más sistemas AS/400. Una tabla distribuida es una tabla| cuyos datos están particionados a lo largo de un gr upo de nodos. Una| clave de partición es un conjunto de una o varias columnas de una tab la| distribuida que se utilizan para determinar a qué s istema AS/400 pertenece| una fila. Para obtener más información sobre tabla s distribuidas,| consulte la publicación DB2 Multisystem for OS/400 .

DB2/400 Manual de Consulta SQL V3R7 Tablas

© Copyright IBM Corp. 1995, 1996 1.8 - 1

Page 30: DB2/400 Manual de Consulta SQLmarce.com/docs/systems/manuales/db2_400_manual_consulta_sql_v3r7.pdf · VERSION Nota de Versión Segunda edición (noviembre de 1996) Este manual es

1.9 Claves Una clave es una o más columnas que se identifican como tale s en la descripción de un índice, restricción de unicidad o restricción de referencia. Una misma columna puede formar parte d e más de una clave. Una clave compuesta por más de una columna recibe e l nombre de clave compuesta. Una clave compuesta es un conjunto ordenado de columnas de la misma ta bla. La ordenación de las columnas no está restringida p or su orden dentro de la tabla. El término valor , cuando se utiliza con respecto a una clave compuesta, denota un valor compuesto. Por tanto, u na regla como "el valor de la clave foránea debe ser igual al valor de la c lave principal" significa que cada uno de los componentes del valor de la clave foránea debe ser igual al componente correspondiente del va lor de la clave principal.

DB2/400 Manual de Consulta SQL V3R7 Claves

© Copyright IBM Corp. 1995, 1996 1.9 - 1

Page 31: DB2/400 Manual de Consulta SQLmarce.com/docs/systems/manuales/db2_400_manual_consulta_sql_v3r7.pdf · VERSION Nota de Versión Segunda edición (noviembre de 1996) Este manual es

1.10 Claves principales y claves exclusivas Una restricción de unicidad es la regla que establece que los valores de una clave son válidos únicamente si son exclusivos. Una clave restringida a tener valores exclusivos recibe el nombre de clave exclusiva y puede definirse utilizando la sentencia CREATE UNIQUE IND EX. El índice exclusivo resultante lo utiliza el gestor de bases de datos para asegurar que se respeta la exclusividad de la clave durante la ejecución de las sentencias INSERT y UPDATE. De manera alternativa, la claves exclusivas se pueden definir: � Como claves principales utilizando una sentencia CREATE TABLE o ALTER TABLE. Una tabla no puede tener más de una cla ve principal y las columnas de la clave deben estar definidas como NOT NULL. El índice exclusivo de una clave principal recibe el nomb re de índice principal. � Utilizando la cláusula UNIQUE de las sentencias CREATE TABLE o ALTER TABLE. Una tabla puede tener un número arbitra rio de claves exclusivas. Una clave exclusiva a la que haga referencia la cla ve foránea de una restricción de referencia recibe el nombre de clave padre. Una clave padre es o bien una clave primaria o una clave excl usiva. Cuando una tabla está definida como padre en una restricción d e referencia, la clave padre por omisión es su clave principal.

DB2/400 Manual de Consulta SQL V3R7 Claves principales y claves exclusivas

© Copyright IBM Corp. 1995, 1996 1.10 - 1

Page 32: DB2/400 Manual de Consulta SQLmarce.com/docs/systems/manuales/db2_400_manual_consulta_sql_v3r7.pdf · VERSION Nota de Versión Segunda edición (noviembre de 1996) Este manual es

1.11 Integridad referencial Integridad referencial es el estado de una base de datos en la que todos los valores de todas las claves foráneas son válido s. Una clave foránea es una clave que forma parte de la definición de un a restricción de referencia. Una restricción de referencia es la regla que establece que los valores de la clave foránea son válidos si: � Aparecen como valores de una clave padre o bien � Alguno de los componentes de la clave foránea es nulo. La tabla que contiene la clave padre recibe el nomb re de tabla padre de la restricción de referencia y de la que contiene la c lave foránea se dice que es dependiente de dicha tabla. Las restricciones de referencia son opcionales y pu eden definirse en sentencias CREATE TABLE y ALTER TABLE. El gestor d e bases de datos se encarga de asegurar el cumplimiento de las restricc iones de referencia durante la ejecución de las sentencias INSERT, UPDA TE y DELETE. El cumplimiento se realiza de forma efectiva al finali zar la sentencia excepto en el caso de las reglas de supresión y act ualización de RESTRICT, que se hacen cumplir a medida que se procesan las f ilas. Las restricciones de referencia con una regla de ac tualización o supresión de RESTRICT se hacen cumplir siempre antes de cualq uier otra restricción de referencia. Las demás restricciones de referenc ia se hacen cumplir de una manera independiente del orden. Es decir, el o rden no afecta al resultado de la operación. Dentro de una sentencia SQL: � Una fila puede estar marcada para su supresión p or un número cualquiera de restricciones de referencia con u na regla de supresión de CASCADE. � Una fila sólo puede actualizarla una restricción de referencia con una regla de supresión de SET NULL o SET DEFAULT. � Una fila actualizada por una restricción de refe rencia no puede estar marcada también para su supresión por otra rest ricción de referencia con una regla se supresión de CASCADE. Las reglas de integridad referencial abarcan los si guientes conceptos y terminología: Clave padre Clave principal o exclusiva de una res tricción de referencia. Fila padre Fila que tiene al menos una fila depe ndiente. Tabla padre Tabla que es padre en al menos una res tricción de referencia. Una tabla pued e estar definida como padre en un número arbitrar io de restricciones de referencia. Tabla dependiente Tabla que es dependiente en al menos una restricción de referencia. Una tabla puede estar definida como dependiente e n un número arbitrario de restricciones de referen cia. Una tabla dependiente también puede s er una tabla padre. Tabla descendiente Una tabla es descendiente de una tabla T si e s dependiente de T o es desce ndiente de una dependiente de T. Fila dependiente Fila que tiene al menos una fila padre. Fila descendiente Una fila es descendiente de una fila p si es dependiente de p o a una de scendiente de una dependiente de p. Ciclo de referencia Conjunto de restricciones de referencia tal qu e cada una de la tablas del c onjunto es descendiente de sí misma. Fila autorreferente Fila que es padre de sí misma. Tabla autorreferente Tabla que es padre y dependiente en la misma restricción de referencia. La restricción recibe el nombre de restricción autorreferente . La regla de inserción de una restricción de referen cia es que un valor de inserción no nulo de la clave foránea debe coincidi r con algún valor de la clave padre de la tabla padre. El valor de una cla ve foránea compuesta es nulo si cualquiera de los componentes del valor es nulo. La regla de actualización de una restricción de ref erencia se especifica cuando se define la restricción. La opciones son N O ACTION y RESTRICT. La regla de actualización se aplica cuando se actua liza una fila de la tabla padre o dependiente. La regla de actualizaci ón es que un valor de actualización no nulo de una clave foránea debe coi ncidir con algún valor de la clave padre de la tabla padre. El valor de u na clave foránea compuesta es nulo si cualquiera de los componentes del valor es nulo. La regla de supresión de una restricción de referen cia se especifica cuando se define la restricción. Las opciones son NO ACTION, RESTRICT, CASCADE, SET NULL o SET DEFAULT. SET NULL puede es pecificarse sólo si alguna de las columnas de la clave foránea permite valores nulos.

DB2/400 Manual de Consulta SQL V3R7 Integridad referencial

© Copyright IBM Corp. 1995, 1996 1.11 - 1

Page 33: DB2/400 Manual de Consulta SQLmarce.com/docs/systems/manuales/db2_400_manual_consulta_sql_v3r7.pdf · VERSION Nota de Versión Segunda edición (noviembre de 1996) Este manual es

La regla de supresión de una restricción de referen cia se aplica cuando se suprime una fila de la tabla padre. Más exactament e, se aplica cuando una fila de la tabla padre es el objeto de una operació n de supresión propagada (definida más abajo) o de supresión simpl emente y dicha fila tiene dependientes en la tabla dependiente de la re stricción de referencia. Sea P la tabla padre, D la tabla depen diente y p una fila padre objeto de una operación de supresión o de sup resión propagada. Si la regla de supresión es: � RESTRICT o NO ACTION, se produce un error y no s e suprime ninguna fila � CASCADE, la operación de supresión se propaga a las dependientes de p en D � SET NULL, cada una de las columnas anulables de la clave foránea de cada dependiente de p en D queda establecida co mo nula � SET DEFAULT, cada una de las columnas de la clav e foránea de cada dependiente de p en D queda establecida en su v alor por omisión Cada restricción de referencia en la que una tabla sea padre tiene su propia regla de supresión y para determinar el resu ltado de una operación de supresión se utilizan todas las reglas de supres ión aplicables. Por tanto, una fila no puede suprimirse si tiene depend ientes en una restricción de referencia con una regla de supresió n de RESTRICT o NO ACTION, o si la supresión afecta en cascada a cualq uiera de sus descendientes que sean dependientes en una restricc ión de referencia con una regla de supresión de RESTRICT o NO ACTION. La supresión de una fila de la tabla padre P implic a a otras tablas y puede afectar a las filas de éstas: � Si la tabla D es una dependiente de P y la regla de supresión es RESTRICT o NO ACTION, D se ve implicada en la o peración, pero no así afectada por ella. � Si D es una dependiente de P y la regla de supre sión es SET NULL, D se ve implicada en la operación y las filas de D p ueden actualizarse durante la operación. � Si D es una dependiente de P y la regla de supre sión es SET DEFAULT, D se ve implicada en la operación y las filas de D pueden actualizarse durante la operación. � Si D es una dependiente de P y la regla de supre sión es CASCADE, D se ve implicada en la operación y las filas de D p ueden suprimirse durante la operación. Si las filas de D se suprimen, se dice que la opera ción de supresión realizada en P se ha propagado a D. Si D es tambié n una tabla padre, las acciones descritas en esta lista se aplican, a su v ez, a las dependientes de D. De cualquier tabla que pueda verse implicada en una operación de supresión en P se dice que está conectada por supresión a P. Así pues, una tabla estará conectada por supresión a la tabla P si es u na dependiente de P o una dependiente de una tabla a la que afecten en ca scada las operaciones de supresión a partir de P.

DB2/400 Manual de Consulta SQL V3R7 Integridad referencial

© Copyright IBM Corp. 1995, 1996 1.11 - 2

Page 34: DB2/400 Manual de Consulta SQLmarce.com/docs/systems/manuales/db2_400_manual_consulta_sql_v3r7.pdf · VERSION Nota de Versión Segunda edición (noviembre de 1996) Este manual es

1.12 Desencadenantes Un desencadenante es un conjunto de acciones que se ejecutan automáticamente cada vez que se produce un evento e specificado en una tabla base especificada. Un desencadenante puede d efinirse de manera que se ejecute antes del evento o después del mismo. E l evento puede se una operación de inserción, actualización o supresión. El conjunto de acciones puede incluir casi cualquie r operación que se permita en el sistema AS/400. Algunas operaciones, no obstante, no están permitidas, como son: � Comprometer o retrotraer (si se utiliza la misma definición de compromiso para las acciones del desencadenante y el evento de desencadenamiento) � Las sentencias CONNECT, SET CONNECTION, DISCONNE CT y RELEASE Para obtener una lista completa de restricciones, c onsulte el manual DB2/400 Programación de la base de datos , SC10-9634 (SC41-4701). Dado que el gestor de bases de datos ejecuta los de sencadenantes automáticamente, si debe realizarse un conjunto de acciones cada vez que se produce una operación determinada, las aplicacio nes no tienen que duplicar las acciones en cada programa de aplicació n que realice la operación. Esto puede dar como resultado una mejor productividad del programador, una mayor coherencia y, en el caso de aplicaciones distribuidas, un mejor rendimiento. Las acciones realizadas en el desencadenante están consideradas como parte de la operación que ha provocado la ejecución del d esencadenante. Por tanto, cuando el nivel de aislamiento es cualquier otro que no sea NC (No compromiso) y las acciones del desencadenante se re alizan utilizando la misma definición de compromiso que el evento desenc adenante: � El gestor de bases de datos se asegura de que la operación y los desencadenantes ejecutados como resultado de di cha operación se completen o se restituyan. Las operaciones que se hayan producido antes de la operación desencadenante no se ven afectadas. � El gestor de bases de datos comprueba de manera efectiva todas las restricciones (excepto si se trata de una restr icción con una regla de supresión RESTRICT) después de que se hayan eje cutado la operación y los desencadenantes asociados. | Un desencadenante tiene un atributo que especifica si puede suprimir o| actualizar una fila que ya se haya insertado o actu alizado en la sentencia| SQL que causó la ejecución del desencadenante. | � Si se especifica ALWREPCHG(*YES) cuando se defin e el desencadenante,| entonces en una sentencia SQL: | - El desencadenante puede actualizar o suprim ir cualquier fila que| la misma sentencia SQL haya actualizado o i nsertado. Esto también| incluye todas las filas insertadas o actual izadas por un| desencadenante o restricción referencial ca usada por la misma| sentencia SQL. | � Si se especifica ALWREPCHG(*NO) al definir el de sencadenante, entonces| en una sentencia SQL: - Un desencadenante puede suprimir una fila s ólo si ésta no la ha insertado o actualizado esa misma sentencia SQL. Si el nivel de aislamiento es cualquier otro que no sea NC (No compromiso) y las acciones del desencadenante se realizan uti lizando la misma definición de compromiso que el evento dese ncadenante, esto incluye también cualquier inserción o actua lización realizadas por un desencadenante o restricción de referenc ia provocadas por la misma sentencia SQL. - Un desencadenante puede actualizar una fila sólo si ésta no la ha insertado o actualizado ya la misma sentenc ia SQL. Si el nivel de aislamiento es cualquier otro que no sea NC (No compromiso) y las acciones del desencadenante se realizan uti lizando la misma definición de compromiso que el evento dese ncadenante, esto incluye también cualquier inserción o actua lización realizadas por un desencadenante o restricción de referenc ia provocadas por la misma sentencia SQL. Un desencadenante puede realizar operaciones que ha gan que se disparen otros desencadenantes. Asimismo, las operaciones r ealizadas en un desencadenante pueden provocar la ejecución de regl as de restricción de referencia. Los desencadenantes pueden definirse utilizando el mandato CL CADDPFTRG (añadir desencadenante de archivo físico). Se elim inan utilizando el mandato CL RMVPFTRG (eliminar desencadenante de arc hivo físico). Para obtener más información, consulte el manual DB2/400 Programación de la base de datos .

DB2/400 Manual de Consulta SQL V3R7 Desencadenantes

© Copyright IBM Corp. 1995, 1996 1.12 - 1

Page 35: DB2/400 Manual de Consulta SQLmarce.com/docs/systems/manuales/db2_400_manual_consulta_sql_v3r7.pdf · VERSION Nota de Versión Segunda edición (noviembre de 1996) Este manual es

1.13 Índices Un índice es un conjunto ordenado de punteros que señalan a las filas de una tabla base. Cada índice está basado en los val ores de los datos de una o más columnas de tabla. Un índice es un objeto que está separado de los datos de la tabla. Cuando se solicita un índic e, el gestor de base de datos crea esta estructura y la mantiene de forma a utomática. Un índice tiene un nombre propio y puede tener un n ombre del sistema distinto. El nombre del sistema es el nombre que u tiliza el OS/400. Cualquiera de los dos nombres es aceptable para esp ecificar un nombre de índice en sentencias SQL. Para obtener más informa ción consulte el apartado "CREATE INDEX" en el tema 5.13 . El gestor de la base de datos utiliza los índices p ara: � Mejorar el rendimiento. En la mayoría de los ca sos el acceso a los datos se realiza con mayor rapidez que sin un í ndice. � Asegurar la exclusividad. Una tabla con un índi ce exclusivo no puede tener filas con claves idénticas.

DB2/400 Manual de Consulta SQL V3R7 Índices

© Copyright IBM Corp. 1995, 1996 1.13 - 1

Page 36: DB2/400 Manual de Consulta SQLmarce.com/docs/systems/manuales/db2_400_manual_consulta_sql_v3r7.pdf · VERSION Nota de Versión Segunda edición (noviembre de 1996) Este manual es

1.14 Vistas Una vista proporciona un método alternativo de ver los datos de una o más tablas. Una vista es una especificación con nombre de una t abla de resultados. La especificación es una sentencia SELECT que se ejecu ta de forma efectiva cada vez que se hace referencia a la vista en una s entencia SQL. Así pues, cabe pensar en una vista como compuesta de fi las y columnas, exactamente igual que una tabla base. A efectos de recuperación de datos, las vistas pueden utilizarse exactamente igual que las tablas base. Si una vista puede usarse en un operación de inserción , actualización o supresión dependerá de su definición según se expli ca en la descripción de CREATE VIEW (véase "CREATE VIEW" en el tema 5.17 para más información). No pueden crearse índices para las vistas. No obst ante, un índice creado para una tabla sobre la cual se basa una vista, pue de mejorar el rendimiento de las operaciones efectuadas en la vis ta. Cuando la columna de una vista deriva directamente de una columna de la tabla base, hereda las restricciones que se aplique n a la columna de la tabla base. Si, por ejemplo, una vista incluye la clave foránea de su tabla base, las operaciones INSERT y UPDATE que uti licen dicha vista están sujetas a las mismas restricciones de referencia qu e la tabla base. Igualmente, si la tabla base de una vista es una ta bla padre, las operaciones DELETE que utilicen dicha vista están s ujetas a las mismas reglas que las operaciones DELETE de la tabla base. Una vista hereda también todos los desencadenantes que se apliquen a su tabla base. Por ejemplo, si la tabla base de una vista tiene un des encadenante de actualización, éste se disparará cuando se realice una actualización en la vista. Una vista tiene un nombre propio y puede tener un n ombre del sistema distinto. El nombre del sistema es el nombre que u tiliza el OS/400. Se acepta cualquiera de los dos nombres para especific ar un nombre de vista en sentencias SQL. Para obtener más información co nsulte el apartado "CREATE VIEW" en el tema 5.17 . Una columna de una vista tiene un nombre propio y p uede tener un nombre de columna del sistema distinto. El nombre de columna del sistema es el nombre que utiliza el OS/400. Se acepta cualquiera de los dos nombres para especificar un nombre de columna en sentencias SQL. Para obtener más información consulte el apartado "CREATE VIEW" en el tema 5.17 .

DB2/400 Manual de Consulta SQL V3R7 Vistas

© Copyright IBM Corp. 1995, 1996 1.14 - 1

Page 37: DB2/400 Manual de Consulta SQLmarce.com/docs/systems/manuales/db2_400_manual_consulta_sql_v3r7.pdf · VERSION Nota de Versión Segunda edición (noviembre de 1996) Este manual es

1.15 Paquetes y planes de acceso Para programas SQL distribuidos, un paquete es un objeto que contiene estructuras de control y que se utiliza para ejecut ar sentencias SQL. Los paquetes se producen durante la preparación del pro grama. Una estructura de control es comparable al formato operativo o enl azado de las sentencias SQL. Todas las estructuras de control de un paquet e se derivan de las sentencias SQL incorporadas en un único programa fu ente. También pueden crearse paquetes con la API QSQPRCED . Los paquetes creados por la API QSQPRCED sólo puede utilizarlos dicha AP I. No pueden utilizarse en un servidor de la aplicación mediante los protocolos DRDA. La API QSQPRCED ofrece a los usuarios la posibilida d del SQL dinámico ampliado. Al igual que ocurre con el SQL dinámico, con esta API pueden prepararse, describirse y ejecutarse las sentencias . A diferencia de lo que ocurre con el SQL dinámico, las sentencias prep aradas en un paquete por esta API continúan hasta que el paquete o la se ntencia se eliminan explícitamente. Para obtener más información, cons ulte el manual System API Reference , SC41-4801. Para los programas SQL no distribuidos, las estruct uras de control que se utilizan para ejecutar sentencias SQL se almacenan en el espacio asociado del programa SQL no distribuido. El término plan de acceso se utiliza en general para describir las estructuras de control del espacio asociado de un p rograma SQL o un paquete SQL que se utiliza para ejecutar sentencias SQL.

DB2/400 Manual de Consulta SQL V3R7 Paquetes y planes de acceso

© Copyright IBM Corp. 1995, 1996 1.15 - 1

Page 38: DB2/400 Manual de Consulta SQLmarce.com/docs/systems/manuales/db2_400_manual_consulta_sql_v3r7.pdf · VERSION Nota de Versión Segunda edición (noviembre de 1996) Este manual es

1.16 Procedimientos Un procedimiento (llamado también con frecuencia pr ocedimiento almacenado) es una estructura de programación que puede llamars e para realizar un conjunto de operaciones. Las operaciones pueden co ntener sentencias de lenguaje principal y sentencias SQL. Los procedimientos se clasifican habitualmente como procedimientos SQL o procedimientos externos. Los procedimientos SQL co ntienen sentencias SQL únicamente. Los procedimientos externos hacen refe rencia a un programa de lenguaje principal (o, en el caso de REXX, un miemb ro de archivo fuente) que puede o no contener sentencias SQL. En DB2 par a OS/400 se da soporte a los procedimientos externos. Los procedimientos escritos en SQL reportan los mis mos beneficios que los procedimientos escritos en un lenguaje principal. Es decir, una parte de código común precisa escribirse y mantenerse una so la vez y puede llamarse desde varios programas. Tanto los lenguajes princi pales como SQL pueden llamar a procedimientos que existan en el sistema l ocal. Sin embargo, SQL puede llamar también a un procedimiento que exista en un sistema remoto. De hecho, la mayor ventaja de los procedimientos es critos en SQL es que pueden utilizarse para mejorar las características de rendimiento de las aplicaciones distribuidas. Suponga que deben ejecutarse varias sentencias SQL en un sistema remoto. Cuando se ejecute la primera sentencia SQL, el peti cionario de la aplicación enviará una petición al servidor de la a plicación para que realice la operación. Esperará entonces a que lleg ue una respuesta que indique si la sentencia se ha ejecutado satisfactor iamente o no y que, opcionalmente, devuelva los resultados. Cuando se ejecute la segunda sentencia SQL y cada una de las posteriores, el pet icionario de la aplicación enviará otra petición y esperará otra re spuesta. Si las mismas sentencias SQL están almacenadas en un procedimient o en el servidor de la aplicación, se puede ejecutar una sentencia CALL qu e haga referencia al procedimiento remoto. Cuando se ejecute la sentenc ia CALL, el peticionario de la aplicación enviará una única pet ición al servidor actual para llamar al procedimiento. Esperará ento nces a que llegue una sola respuesta que indique si la sentencia se ha ej ecutado satisfactoriamente y que, de forma opcional, devuel va los resultados. Las dos figuras siguientes ilustran la manera en qu e pueden utilizarse los procedimientos almacenados en una aplicación distri buida para eliminar algunas de las peticiones remotas. +------------------+ + ------------------+ ¦ ¦ ¦ ¦ ¦ +------------+ ¦ ¦ +------------+ ¦ ¦ ¦ Programa ¦ ¦ ¦ ¦ Paquete ¦ ¦ ¦ ¦ ¦ ¦ ¦ ¦ ¦ ¦ ¦ ¦ ¦ ¦ Petición para ¦ ¦ ¦ ¦ ¦ ¦ ¦ ¦ ejecutar UPDATE ¦ ¦ ¦ ¦ ¦ ¦ UPDATE ... ¦------------------------------- - ¦ UPDATE ... ¦ ¦ � ¦ ¦ ¦ ------------------------------- -¦ ¦ ¦ ¦ ¦ ¦ ¦ Resultados de UPDATE ¦ ¦ ¦ ¦ ¦ ¦ ¦ ¦ ¦ ¦ ¦ ¦ ¦ ¦ ¦ ¦ Petición para ejecutar ¦ ¦ ¦ ¦ ¦ ¦ ¦ ¦ INSERT ¦ ¦ ¦ ¦ ¦ ¦ INSERT ... ¦------------------------------- - ¦ INSERT ... ¦ ¦ � ¦ ¦ ¦ ------------------------------- -¦ ¦ ¦ ¦ ¦ ¦ ¦ Resultados de INSERT ¦ ¦ ¦ ¦ ¦ ¦ ¦ ¦ ¦ ¦ ¦ ¦ ¦ ¦ ¦ ¦ Petición para ejecutar ¦ ¦ ¦ ¦ ¦ ¦ ¦ ¦ SELECT ¦ ¦ ¦ ¦ ¦ ¦ SELECT ... ¦------------------------------- - ¦ SELECT ... ¦ ¦ � ¦ ¦ ¦ ------------------------------- -¦ ¦ ¦ ¦ ¦ ¦ ¦ Resultados de SELECT ¦ ¦ ¦ ¦ ¦ +------------+ ¦ ¦ +------------+ ¦ ¦ ¦ ¦ ¦ +------------------+ + ------------------+ Peticionario de Servidor de la aplicación la aplicación Figura 1. Aplicación sin procedimiento remoto +------------------+ +--- -------------------------------+ ¦ ¦ ¦ ¦ ¦ +------------+ ¦ ¦ + ------------+ +------------+ ¦ ¦ ¦ Programa ¦ ¦ ¦ ¦ Paquete ¦ ¦ Programa x ¦ ¦ ¦ ¦ ¦ ¦ ¦ ¦ ¦ ¦ ¦ ¦ ¦ ¦ ¦ ¦ Petición de ejecutar CALL ¦ ¦ ¦ ¦ ¦ ¦ ¦ ¦ CALL x ¦-------------------------------- ¦ CALL x ¦- ¦ UPDATE ... ¦ ¦ � �¦ ¦ ¦ --------------------------------¦ ¦ -¦ ¦ ¦ ¦ ¦ ¦ ¦ Resultados de CALL ¦ ¦ ¦ ¦ ¦ ¦ ¦ ¦ ¦ ¦ ¦ ¦ ¦ ¦ INSERT ... ¦ ¦ ¦ ¦ ¦ ¦ ¦ ¦ ¦ ¦ ¦ ¦ ¦ ¦ ¦ ¦ ¦ ¦ ¦ ¦ ¦ ¦ ¦ ¦ ¦ ¦ ¦ ¦ ¦ ¦ SELECT ... ¦ ¦ ¦ ¦ ¦ ¦ ¦ ¦ ¦ ¦ ¦ ¦ ¦ ¦ ¦ ¦ ¦ ¦ ¦ ¦ ¦ ¦ ¦ +------------+ ¦ ¦ + ------------+ +------------+ ¦ ¦ ¦ ¦ ¦ +------------------+ +--- -------------------------------+ Peticionario de Servidor de la aplicación la aplicación

DB2/400 Manual de Consulta SQL V3R7 Procedimientos

© Copyright IBM Corp. 1995, 1996 1.16 - 1

Page 39: DB2/400 Manual de Consulta SQLmarce.com/docs/systems/manuales/db2_400_manual_consulta_sql_v3r7.pdf · VERSION Nota de Versión Segunda edición (noviembre de 1996) Este manual es

Figura 2. Aplicación con procedimiento remoto

DB2/400 Manual de Consulta SQL V3R7 Procedimientos

© Copyright IBM Corp. 1995, 1996 1.16 - 2

Page 40: DB2/400 Manual de Consulta SQLmarce.com/docs/systems/manuales/db2_400_manual_consulta_sql_v3r7.pdf · VERSION Nota de Versión Segunda edición (noviembre de 1996) Este manual es

1.17 Catálogo El gestor de base de datos mantiene un conjunto de tablas que contiene información sobre los datos de la base de datos. E stas tablas se conocen colectivamente con el nombre de catálogo . Las tablas de catálogo| contienen información acerca de tablas, parámetros, procedimientos, paquetes, vistas, índices y restricciones del siste ma AS/400. El gestor de bases de datos facilita vistas sobre l as tablas del catálogo. Las vistas proporcionan una mayor coherencia con la s vistas del catálogo de otros productos SQL de IBM y las vistas del catá logo del estándar ANSI e ISO (llamado esquema de información en el estánda r). Las vistas del catálogo de QSYS2 contienen información acerca de t odas las tablas, paquetes, vistas, índices y restricciones del siste ma AS/400. De forma adicional, una colección SQL contendrá un conjunto de estas vistas que sólo contenga información sobre tablas, paquetes, v istas, índices y restricciones de la colección. Las tablas y vistas del catálogo son como cualquier otra tabla o vista de base de datos. Si dispone de la autorización neces aria, puede utilizar sentencias SQL para consultar los datos de las vist as del catálogo de la misma manera que recuperaría datos de cualquier otr a tabla del sistema AS/400. El gestor de base de datos se encarga de q ue el catálogo contenga descripciones exactas de los objetos de la base de datos en cualquier momento. Para obtener más información acerca de vistas y tab las de catálogo, consulte el Apéndice H, "Vistas de catálogo de DB2 para OS/400" en el tema H.0 .

DB2/400 Manual de Consulta SQL V3R7 Catálogo

© Copyright IBM Corp. 1995, 1996 1.17 - 1

Page 41: DB2/400 Manual de Consulta SQLmarce.com/docs/systems/manuales/db2_400_manual_consulta_sql_v3r7.pdf · VERSION Nota de Versión Segunda edición (noviembre de 1996) Este manual es

1.18 Procesos de aplicación, concurrencia y recuper ación Todos los programas SQL se ejecutan como parte de u n proceso de aplicación. En OS/400, los procesos de aplicación se denominan trabajos. Un proceso de aplicación está constituido por uno o más grupos de activación. Cada grupo de activación conlleva la e jecución de uno o más programas. Los programas se ejecutan en un grupo d e activación que no sea por omisión o en el grupo de activación por omisión . Todos los programas, excepto los creados por los compiladores ILE, se ej ecutan en el grupo de activación por omisión. Para obtener más información acerca de grupos de ac tivación, consulte el manual AS/400 ILE Conceptos , SC10-9631 (SC41-4606). Un proceso de aplicación que utilice control de com promiso puede ejecutarse con una o más definiciones de compromiso . Una definición de compromiso facilita los medios de acotar el ámbito de un control de compromiso a nivel de un grupo de activación o a ni vel de un trabajo. En todo momento, un grupo de activación que utilice el control de compromiso está asociado con una sola de las definiciones de c ompromiso. Las definiciones de compromiso pueden arrancarse ex plícitamente mediante el mandato STRCMTCL (Arrancar Control de Compromiso ). Si todavía no está arrancada, la definición de compromiso se arranca d e forma implícita cuando se ejecuta la primera sentencia SQL en un ni vel de aislamiento distinto de COMMIT(*NONE). Una definición de compr omiso de trabajo puede estar compartida por más de un grupo de activación. La Figura 3 muestra la relación de un proceso de aplicación, l os grupos de activación del mismo y las definiciones de compromi so. Los grupos de activación A y B se ejecutan con un control de comp romiso cuyo ámbito sea el grupo de activación. Estos grupos de activación tienen sus propias definiciones de compromiso. El grupo de activación C no se ejecuta con ningún control de compromiso y no tiene ninguna def inición de compromiso.

Figura 3. Grupos de activación sin definición de co mpromiso de trabajo La Figura 4 muestra un proceso de aplicación, los grupos de ac tivación del mismo y las definiciones de compromiso. Algunos de los grupos de activación se ejecutan con la definición de comprom iso de trabajo. Los grupos de activación A y B se ejecutan en la defini ción de compromiso de trabajo. Cualquier operación de compromiso o de re trotracción llevada a acabo en el grupo A o B afecta a ambos porque el ám bito del control de compromiso está acotado a la misma definición de co mpromiso. El grupo de activación C de este ejemplo tiene una definición d e compromiso aparte. Las operaciones de compromiso y de retrotracción re alizadas en este grupo de activación afectan sólo a las operaciones efectu adas dentro de C.

DB2/400 Manual de Consulta SQL V3R7 Procesos de aplicación, concurrencia y recuperación

© Copyright IBM Corp. 1995, 1996 1.18 - 1

Page 42: DB2/400 Manual de Consulta SQLmarce.com/docs/systems/manuales/db2_400_manual_consulta_sql_v3r7.pdf · VERSION Nota de Versión Segunda edición (noviembre de 1996) Este manual es

Figura 4. Grupos de activación con definición de co mpromiso de trabajo Para obtener más información acerca de definiciones de compromiso, consulte el manual Backup and Recovery - Advanced , SC41-4305. Cada definición de compromiso conlleva la ejecución de una o más unidades de trabajo. Una unidad de trabajo (también llamada unidad de trabajo lógica y unidad de recuperación) es una secuencia r ecuperable de operaciones. En todo momento, la definición de com promiso dispone de una sola unidad de trabajo. Una unidad de trabajo se a rranca o bien cuando arranca la definición de compromiso o bien cuando u na operación de compromiso o de retrotracción finaliza la unidad de trabajo anterior. Las unidades de trabajo las finalizan las operacion es de compromiso, las operaciones de retrotracción o la finalización del grupo de activación. Una operación de compromiso o de retrotracción afec ta sólo a los cambios de la base de datos realizados dentro de la unidad de trabajo que finalice el compromiso o la retrotracción. Mientras los cam bios queden sin comprometer, otros grupos de activación que utilice n definiciones de compromiso diferentes y que se ejecuten en un nivel de aislamiento COMMIT(*CS), COMMIT(*RS) y COMMIT(*RR) no podrán pe rcibir los cambios. Los cambios pueden restituirse hasta que se comprom etan. Una vez se han comprometido los cambios, otros grupos que se ejecu ten en definiciones de compromiso distintas podrán acceder a ellos y ya no podrán restituirse más los cambios. Los procesos de aplicación y los grupos de activaci ón que utilicen distintas definiciones de compromiso pueden solicit ar el acceso a los mismos datos al mismo tiempo. Para mantener la int egridad de los datos en tales circunstancias, se utilizan bloqueos. Estos evitan situaciones tales como que dos procesos de aplicación actualice n simultáneamente la misma fila de datos. El gestor de bases de datos adquiere bloqueos para conseguir que los cambios no comprometidos de un grupo de activación no sean detectados por otro grupo de activación que utilice una definición de compromiso diferente. Los bloqueos de objeto y otros recursos se asignan a un grupo de activación. Los bloqueos de fila se asignan a u na definición de compromiso. Cuando un grupo de activación que no sea el grupo p or omisión finaliza normalmente , el gestor de bases de datos libera todos los bloq ueos obtenidos por el grupo de activación. Los usuarios también pueden solicitar explícitamente que se liberen antes la ma yoría de los bloqueos. Esta operación recibe el nombre de comprometer. Lo s bloqueos de objeto asociados con los cursores que permanezcan abiertos después de comprometerlos no se liberan.

DB2/400 Manual de Consulta SQL V3R7 Procesos de aplicación, concurrencia y recuperación

© Copyright IBM Corp. 1995, 1996 1.18 - 2

Page 43: DB2/400 Manual de Consulta SQLmarce.com/docs/systems/manuales/db2_400_manual_consulta_sql_v3r7.pdf · VERSION Nota de Versión Segunda edición (noviembre de 1996) Este manual es

Las funciones de recuperación del gestor de bases d e datos facilitan los medios de restituir los cambios no comprometidos re alizados en una definición de compromiso. El gestor de bases de da tos puede restituir implícitamente los cambios no comprometidos si se d an las circunstancias siguientes: � Cuando finaliza el proceso de aplicación, se res tituyen los cambios realizados en la definición de compromiso asoci ada con el grupo de activación por omisión. Cuando un grupo de act ivación que no sea el grupo de activación por omisión finaliza anormalmente , se restituyen todos los cambios realizados en la definición d e compromiso asociada con ese grupo de activación. � Cuando se utiliza la unidad de trabajo distribui da y se produce una anomalía al intentar comprometer los cambios en un sistema remoto, se restituyen todos los cambios realizados en la d efinición de compromiso asociada con la conexión remota. � Cuando se utiliza la Unidad de trabajo distribui da y se recibe una petición de restitución desde un sistema remoto a causa de una anomalía en dicho sistema, se restituyen todos los cambios realizados en la definición de compromiso asociada con la conexión remota. Los usuarios también pueden solicitar explícitament e que se restituyan los cambios que hayan realizado en la base de datos. E sta operación recibe el nombre de retrotraer. Los bloqueos adquiridos por el gestor de bases de d atos en nombre de un proceso de aplicación se mantienen hasta la finaliz ación de la unidad de trabajo. Los bloqueos adquiridos explícitamente po r una sentencia LOCK TABLE se pueden mantener después de la finalización de una unidad de trabajo siempre que para finalizarla haya utilizado COMMIT HOLD o ROLLBACK HOLD. Un cursor puede bloquear implícitamente la fila en la que está situado. Este bloqueo evita que: � Otros cursores asociados con una definición de c ompromiso diferente bloqueen la misma fila. � Una sentencia DELETE o UPDATE asociada con una d efinición de compromiso diferente bloquee la misma fila. El inicio y el final de una unidad de trabajo defin en los puntos de coherencia dentro de un grupo de activación. Por e jemplo, una transacción bancaria podría suponer la transferencia de fondos desde una cuenta a otra. Dicha transacción significaría restar a la p rimera cuenta los fondos mencionados y añadirlos a la segunda cuenta. Después del paso de sustracción, los datos no cuadran. La coherencia s ólo se restablece después de añadir los fondos a la segunda cuenta. Una vez efectuados ambos pasos, se puede utilizar la operación de comp romiso para finalizar la unidad de trabajo. Después de realizar la opera ción de compromiso, los cambios quedan a la disposición de los grupos de ac tivación que utilicen definiciones de compromiso distintas.

Figura 5. Unidad de trabajo con una sentencia de co mpromiso Si se produce una anomalía antes de que finalice la unidad de trabajo, el gestor de bases de datos restituye los cambios no c omprometidos para restaurar la coherencia de los datos que supone exi stían cuando se ha arrancado la unidad de trabajo.

DB2/400 Manual de Consulta SQL V3R7 Procesos de aplicación, concurrencia y recuperación

© Copyright IBM Corp. 1995, 1996 1.18 - 3

Page 44: DB2/400 Manual de Consulta SQLmarce.com/docs/systems/manuales/db2_400_manual_consulta_sql_v3r7.pdf · VERSION Nota de Versión Segunda edición (noviembre de 1996) Este manual es

Figura 6. Unidad de trabajo con una sentencia de re trotracción

DB2/400 Manual de Consulta SQL V3R7 Procesos de aplicación, concurrencia y recuperación

© Copyright IBM Corp. 1995, 1996 1.18 - 4

Page 45: DB2/400 Manual de Consulta SQLmarce.com/docs/systems/manuales/db2_400_manual_consulta_sql_v3r7.pdf · VERSION Nota de Versión Segunda edición (noviembre de 1996) Este manual es

1.19 Nivel de aislamiento El nivel de aislamiento que se utiliza durante la ejecución de sentencias SQL determina el grado en que el grupo de activació n se aísla respecto a los grupos de activación que se ejecutan de forma c oncurrente. Por tanto, cuando el grupo de activación P ejecuta una sentenc ia SQL, el nivel de aislamiento determina: � El grado de disponibilidad de las filas recupera das por P y los cambios realizados por P en la base de datos pa ra otros grupos de activación que se ejecutan de forma concurrente . � El grado en que los cambios realizados en la bas e de datos por los grupos de activación que se ejecutan de forma c oncurrente puede afectar a P. El nivel de aislamiento se especifica como un atrib uto de un programa SQL o de un paquete SQL y se aplica a los grupos de act ivación que utilicen el paquete SQL o el programa SQL. DB2 para OS/400 pro porciona los medios para especificar el nivel de aislamiento a través d el parámetro COMMIT en los mandatos CRTSQLxxx, STRSQL y RUNSQLSTM. En REX X, el nivel de aislamiento se especifica en la sentencia SET OPTIO N. La sentencia SET TRANSACTION puede utilizarse para alterar temporalm ente el nivel de aislamiento dentro de una unidad de trabajo. Al fi nalizar la unidad de trabajo, el nivel de aislamiento vuelve al valor qu e tenía al principio de la misma. En las sentencias SELECT, SELECT INTO, I NSERT, UPDATE, DELETE y DECLARE CURSOR, se puede especificar el nivel de ai slamiento utilizando una cláusula de aislamiento; el nivel de aislamient o entra en vigor sólo para la ejecución de la sentencia que contiene la c láusula de aislamiento. Se da soporte a estos niveles de aislamiento bloque ando automáticamente los datos adecuados. Dependiendo del tipo de bloqu eo, éste limita o impide el acceso a los datos a los grupos de activa ción concurrentes que utilicen definiciones de compromiso diferentes. Ca da gestor de base de datos da soporte al menos dos tipos de bloqueos: Compartidos Limita los grupos de activación concurrent es que utilicen definiciones de compro miso diferentes en las operaciones de sólo lectura de los datos. Exclusivos Impide que los grupos de activación concu rrentes que utilicen definiciones de compro miso diferentes actualicen o supriman los datos . Impide que los grupos de activación concurrent es que utilicen definiciones de compromiso dife rentes y que ejecuten COMMIT(*RS), COMMIT(*CS) o COMM IT(*RR) lean los datos. Los grupos de activación concur rentes que utilicen definiciones de compromiso dife rentes y que ejecuten COMMIT(*UR) o COMMIT(*NC) tiene n permitida la lectura de los datos. Las siguientes descripciones de los niveles de aisl amiento hacen referencia al bloqueo de datos en unidades de filas . Las implantaciones individuales pueden bloquear datos en unidades físi cas mayores que la filas de tablas base. Sin embargo, lógicamente, el bloqueo se produce a nivel de fila de tabla base en todos los productos. Igualmente, un gestor de bases de datos puede expandir el bloqueo a un ni vel superior. Los grupos de activación tienen garantizado al menos el nivel de bloqueo mínimo solicitado. DB2 para OS/400 da soporte a cinco niveles de aisla miento. Para todos los niveles de aislamiento, excepto No compromiso, el g estor de base de datos coloca bloqueos exclusivos en cada fila que se inse rte, actualice o suprima. De este modo se asegura que ningún otro g rupo de activación que utilice una definición de compromiso diferente efec túe cambios en ninguna fila cambiada durante una unidad de trabajo hasta q ue finalice la unidad de trabajo. Los niveles de aislamiento son: RR (Lectura repetible) : El nivel RR garantiza que: � Cualquier fila leída durante una unidad de traba jo no sufre ninguna modificación por parte de otros grupos de activ ación que utilicen definiciones de compromiso diferentes hasta que finalice la unidad de| trabajo. (2) | � Cualquier fila cambiada (o una fila que esté act ualmente bloqueada con| bloqueo de fila UPDATE) por otro grupo de activ ación que utilice una| definición de compromiso diferente no puede lee r hasta que dicho cambio se comprometa. Aparte de todos los bloqueos exclusivos, un grupo d e activación que se ejecute a nivel RR adquiere como mínimo bloqueos co mpartidos de todas las filas que lea. Además, el bloqueo se realiza de ma nera que el grupo de activación quede aislado por completo de los efecto s de los grupos de activación concurrentes que utilicen definiciones d e compromiso diferentes. DB2 para OS/400 da soporte a la lectura repetible m ediante COMMIT(*RR). Se da soporte al nivel de aislamiento de lectura re petible bloqueando exclusivamente las tablas que contengan filas leída s o actualizadas. En los estándares ANS e ISO, la lectura repetible reci be el nombre de serializable. Estabilidad de lectura (RS) : Al igual que el nivel RR, el nivel RS

DB2/400 Manual de Consulta SQL V3R7 Nivel de aislamiento

© Copyright IBM Corp. 1995, 1996 1.19 - 1

Page 46: DB2/400 Manual de Consulta SQLmarce.com/docs/systems/manuales/db2_400_manual_consulta_sql_v3r7.pdf · VERSION Nota de Versión Segunda edición (noviembre de 1996) Este manual es

garantiza que: � Cualquier fila leída durante una unidad de traba jo no sufre ninguna modificación por parte de otros grupos de activ ación que utilicen definiciones de compromiso diferentes hasta que finalice la unidad de| trabajo. (2) | � Cualquier fila cambiada (o una fila que esté act ualmente bloqueada con| bloqueo de fila UPDATE) por otro grupo de activ ación que utilice una| definición de compromiso diferente no puede lee r hasta que dicho cambio se comprometa. A diferencia de RR, RS no aísla por completo al gru po de activación de los efectos de los grupos de activación concurrentes qu e utilicen una definición de compromiso diferente. A nivel RS, lo s grupos de activación que emitan las misma consulta más de una vez podría n ver filas adicionales. Estas filas adicionales reciben el no mbre de filas fantasma . Se pueden producir filas fantasmas en las situacion es siguientes, por ejemplo: 1. El grupo de activación P1 lee el conjunto de fi las n que cumple cierta condición de búsqueda. 2. El grupo de activación P2 inserta una o más fil as que cumplen la condición de búsqueda y compromete dichas inser ciones. 3. P1 lee de nuevo el conjunto de filas con la mis ma condición de búsqueda y obtiene tanto las filas originales c omo las insertadas por P2. Aparte de todos los bloqueos exclusivos, un grupo d e activación que se ejecute a nivel RS adquiere como mínimo bloqueos co mpartidos de todas las filas que lea. DB2 para OS/400 da soporte a la estabilidad de lect ura mediante COMMIT(*ALL) o COMMIT(*RS). En los estándares ANS e ISO, la Estabilidad de lectura recibe el nombre de Lectura repetible. Estabilidad de cursor (CS) : Al igual que los niveles RR y RS, el nivel CS| asegura que cualquier fila que haya sido modificada (o una fila que esté| bloqueada actualmente con un bloqueo de fila UPDATE ) por otro grupo de| activación utilizando una definición de compromiso diferente no pueda leerse hasta que dicho cambio se comprometa. A dif erencia de RR y RS, el nivel CS sólo garantiza que otros grupos de activac ión que utilicen definiciones de compromiso distintas no modificarán la fila actual de cada cursor actualizable. Así, otros grupos de activaci ón que utilicen una definición de compromiso diferente pueden cambiar l as filas leídas durante una unidad de trabajo. Además de todos los bloqueo s exclusivos, un grupo de activación que se ejecute a nivel CS tiene al me nos un bloqueo compartido para la fila actual de cada cursor. DB2 para OS/400 da soporte a la estabilidad de curs or mediante COMMIT(*CS). En los estándares ANS e ISO la estabi lidad de cursor recibe el nombre de Lectura comprometida. UR (Lectura No Comprometida) : Para una sentencia SELECT INTO, una operación FETCH con un cursor de sólo lectura, una subconsulta o una subselección que se utilice en una sentencia INSERT , el nivel UR permite que: � Otros grupos de activación que se ejecuten en un a definición de compromiso diferente puedan cambiar las filas l eídas durante la unidad de trabajo. | � Se lea cualquier fila cambiada (o una fila que e sté actualmente| bloqueada con un bloqueo de fila UPDATE) por ot ro grupo de activación| que se ejecute en una definición de compromiso diferente incluso si no se ha comprometido el cambio. Para otras operaciones, se aplican las reglas del n ivel CS. DB2 para OS/400 da soporte a la lectura no comprome tida mediante COMMIT(*CHG) o COMMIT(*UR). En los estándares ANS e ISO, la lectura no comprometida recibe el nombre de Lectura no comprom etida. NC (No compromiso) : Para todas las operaciones rigen las reglas del nivel UR, excepto � Las operaciones de compromiso y retrotracción no tienen ningún efecto sobre las sentencias SQL. Las sentencias prepa radas no se desechan, los cursores no se cierran y los bloqueos LOCK TABLE no se liberan. Sin embargo, finalizan las conexiones en estado pendiente de liberación. � Los cambios se comprometen de forma efectiva al final de cada operación de cambio satisfactoria, y otros grup os de aplicación que utilicen definiciones de compromiso distintas p ueden acceder a ellos o cambiarlos inmediatamente. DB2 para OS/400 da soporte a No compromiso mediante COMMIT(*NONE) o COMMIT(*NC).

DB2/400 Manual de Consulta SQL V3R7 Nivel de aislamiento

© Copyright IBM Corp. 1995, 1996 1.19 - 2

Page 47: DB2/400 Manual de Consulta SQLmarce.com/docs/systems/manuales/db2_400_manual_consulta_sql_v3r7.pdf · VERSION Nota de Versión Segunda edición (noviembre de 1996) Este manual es

| Para obtener una descripción detallada de duracione s de bloqueo, vea la| Tabla 20-1 de la publicación DB/2 for OS/400 SQL Programming , SC41-4611. Nota para aplicaciones distribuidas : Cuando no se da soporte a un nivel de aislamiento solicitado mediante el servidor de l a aplicación, el nivel de aislamiento se extiende al siguiente nivel de ai slamiento superior al que se da soporte. Por ejemplo, si no se da soport e a RS mediante el servidor de la aplicación, se utiliza el nivel de a islamiento RR. | (2) Para los cursores WITH HOLD, estas reglas se aplican cuando| se han leído realmente las filas. Para WITH HOLD de sólo| lectura, las filas pueden haberse leído previam ente en una| unidad de trabajo anterior.

DB2/400 Manual de Consulta SQL V3R7 Nivel de aislamiento

© Copyright IBM Corp. 1995, 1996 1.19 - 3

Page 48: DB2/400 Manual de Consulta SQLmarce.com/docs/systems/manuales/db2_400_manual_consulta_sql_v3r7.pdf · VERSION Nota de Versión Segunda edición (noviembre de 1996) Este manual es

1.20 Base de datos relacional distribuida Una base de datos relacional distribuida consta de un conjunto de tablas y otros objetos que se reparten en diferentes sistema s interconectados. Cada sistema dispone de un gestor de bases de datos relacionales que gestiona las tablas dentro de su entorno. Los gest ores de bases de datos se comunican y cooperan entre ellos de modo que per miten a un gestor de base de datos ejecutar sentencias SQL en otro siste ma. Las bases de datos relacionales distribuidas están construidas en base a protocolos y funciones de peticionario-servidor for males. Un peticionario de la aplicación da soporte al final de la aplicación de una conexi ón. Transforma una petición de base de datos procedente de la aplicación en protocolos de comunicación apropiados para que se p uedan utilizar en la red de bases de datos distribuidas. Dichas peticio nes las recibe y procesa un servidor de la aplicación al otro extremo de la conexión. En su trabajo conjunto, el peticionario de la aplicaci ón y el servidor de la aplicación manejan las consideraciones de comunicac iones y de ubicación de manera que la aplicación quede aislada de dichas co nsideraciones y pueda funcionar como si estuviera accediendo a una base d e datos local. La Figura 7 sirve de ilustración de una base de datos relacion al distribuida sencilla.

Figura 7. Entorno de bases de datos relacionales di stribuidas Para obtener más información acerca de los protocol os de comunicaciones de la Arquitectura de bases de datos relacionales Dist ribuidas (DRDA), consulte la publicación Distributed Relational Database Architecture Reference , SC26-4651. Subtemas 1.20.1 Servidores de la aplicación 1.20.2 CONNECT (tipo 1) y CONNECT (tipo 2) 1.20.3 Unidad de trabajo remota 1.20.4 Unidad de trabajo distribuida dirigida por la apli cación 1.20.5 Consideraciones sobre la representación de datos

DB2/400 Manual de Consulta SQL V3R7 Base de datos relacional distribuida

© Copyright IBM Corp. 1995, 1996 1.20 - 1

Page 49: DB2/400 Manual de Consulta SQLmarce.com/docs/systems/manuales/db2_400_manual_consulta_sql_v3r7.pdf · VERSION Nota de Versión Segunda edición (noviembre de 1996) Este manual es

1.20.1 Servidores de la aplicación Para que las sentencias SQL que hacen referencia a tablas o vistas puedan ejecutarse, el grupo de activación debe estar conec tado al servidor de la aplicación del gestor de bases de datos. Una conexión es una asociación entre un grupo de activación y u n servidor de la aplicación local o remoto. La aplicación ges tiona las conexiones. La sentencia CONNECT puede utilizarse para establec er una conexión con un servidor de aplicación y hacer que dicho servidor d e aplicación sea el servidor actual del grupo de activación. El servidor de la aplicación puede ser local o remo to con respecto al entorno en el que se arranca el grupo de activación (Incluso sin utilizar bases de datos relacionales, el servidor de aplicac ión estará presente). Este entorno incluye un directorio local que descri be los servidores de la aplicación que pueden identificarse en una sentenci a CONNECT. Para obtener más información acerca del directorio, cons ulte los manuales DB/2 for OS/400 SQL Programming , SC41-4611, Distributed Database Programming , SC41-3702, y CL Reference , SC41-4722 (de forma específica, los mandatos de directorio siguientes: ADDRDBDIRE, CHGRDBDIRE, DSPR DBDIRE, RMVRDBDIRE y WRKRDBDIRE). Para ejecutar una sentencia SQL estática que haga r eferencia a tablas o vistas, el servidor de aplicación utiliza el format o enlazado de la sentencia. Esta sentencia enlazada se obtiene de u n paquete creado previamente por el gestor de base de datos mediante una operación de enlace lógico. El paquete adecuado viene determina do por la combinación de: � El nombre del paquete especificado por el paráme tro SQLPKG de los mandatos CRTSQLxxx. Consulte el manual DB/2 for OS/400 SQL Programming , SC41-4611, para obtener una descripción de los ma ndatos CRTSQLxxx. � El testigo de coherencia interna que asegura que el paquete y el programa se crearon a partir del mismo fuente y al mismo tiempo. Todos los productos de bases de datos relacionales dan soporte a las ampliaciones a SQL de IBM. Algunas de estas amplia ciones son específicas de determinados productos y otras las comparten más de un producto. La mayoría de las veces, una aplicación puede utili zar las sentencias y cláusulas soportadas por el gestor de bases de dato s del servidor al que está actualmente conectada, incluso si dicha aplica ción se está ejecutando por medio de un peticionario del gestor de bases de datos que no dé soporte a algunas de dichas sentencias y cláusulas. Las restricciones figuran en la lista del Apéndice F, "Consideraciones para la utilización de la base de datos relacional distribuida" en el t ema F.0 .

DB2/400 Manual de Consulta SQL V3R7 Servidores de la aplicación

© Copyright IBM Corp. 1995, 1996 1.20.1 - 1

Page 50: DB2/400 Manual de Consulta SQLmarce.com/docs/systems/manuales/db2_400_manual_consulta_sql_v3r7.pdf · VERSION Nota de Versión Segunda edición (noviembre de 1996) Este manual es

1.20.2 CONNECT (tipo 1) y CONNECT (tipo 2) Hay dos tipos de sentencias CONNECT que tienen la m isma sintaxis pero diferente semántica: � CONNECT (tipo 1) se utiliza para unidades de tra bajo remotas. Véase el apartado "CONNECT (Tipo 1)" en el tema 5.10 . � CONNECT (tipo 2) se utiliza para unidades de tra bajo distribuidas. Consulte el apartado "CONNECT (Tipo 2)" en el tema 5.11 . Consulte el apartado "Diferencias entre CONNECT (Tipo 1) y CONNECT (Tipo 2)" en el tema F.1 para obtener un resumen de las diferencias.

DB2/400 Manual de Consulta SQL V3R7 CONNECT (tipo 1) y CONNECT (tipo 2)

© Copyright IBM Corp. 1995, 1996 1.20.2 - 1

Page 51: DB2/400 Manual de Consulta SQLmarce.com/docs/systems/manuales/db2_400_manual_consulta_sql_v3r7.pdf · VERSION Nota de Versión Segunda edición (noviembre de 1996) Este manual es

1.20.3 Unidad de trabajo remota El recurso de unidad de trabajo remota permite la preparación y ejecución remotas de las sentencias SQL. Un grupo de activac ión situado en el sistema informático A puede conectarse a un servido r de la aplicación situado en el sistema informático B. Dicho grupo, dentro de una o más unidades de trabajo, podrá ejecutar entonces un núm ero cualquiera de sentencias SQL dinámicas o estáticas que hagan refe rencia a los objetos de B. Después de que finalice una unidad de trabajo e n B, el grupo de activación puede conectarse a un servidor de aplica ción situado en el sistema C, y así sucesivamente. La mayoría de las sentencias SQL pueden prepararse y ejecutarse de forma remota con las siguientes restricciones: � Todos los objetos a los que se hace referencia e n una única sentencia SQL debe gestionarlos el mismo gestor de bases de datos. � Todas las sentencias SQL de una unidad de trabaj o debe ejecutarlas el mismo servidor de la aplicación. Subtemas 1.20.3.1 Gestión de la conexión de unidades de trabajo remo tas

DB2/400 Manual de Consulta SQL V3R7 Unidad de trabajo remota

© Copyright IBM Corp. 1995, 1996 1.20.3 - 1

Page 52: DB2/400 Manual de Consulta SQLmarce.com/docs/systems/manuales/db2_400_manual_consulta_sql_v3r7.pdf · VERSION Nota de Versión Segunda edición (noviembre de 1996) Este manual es

1.20.3.1 Gestión de la conexión de unidades de trab ajo remotas Un grupo de activación se encuentra en uno de los t res estados siguientes en todo momento: Conectable y conectado No conectable y conectado Conectable y no conectado El diagrama siguiente ilustra las transiciones de e stado: Iniciar proceso ¦ ¦ � +---------------+ +---------------+ +--¦ ¦ Sentencia CONNECT sati sfactoria ¦ ¦ � ¦ ¦ Conectable ¦ ----------------------- ---------¦ Conectable ¦ CONNECT ¦ ¦ y ¦ ¦ y ¦ +- ¦ conectado +----------------------- --------- ¦ no conectado ¦ ¦ ¦ ¦ ¦ +---------------+ +---------------+ � ¦ CONNECT con anomalía del sistema o ¦ ¦ ¦ COMMIT con la conexi ón en ¦ ¦ ¦ estado pendiente de liberación. ¦ ¦ ¦ ¦ ROLLBACK o ¦ ¦ Sentencia SQL que no sea CONNECT, ¦ Anomalía del COMMIT ¦ ¦ COMMIT ni ROLLBACK ¦ sistema con satisfactorio ¦ ¦ ¦ retrotracción ¦ ¦ ¦ ¦ ¦ +-------------- ---+ ¦ ¦ ¦ ¦ ¦ ¦ ¦ +-----------¦ No conectabl e ¦ ¦ ¦ ¦ y +---------------+ +---------------------¦ conectado ¦ ¦ ¦ +-------------- ---+ Figura 8. Transición de estado de conexión de grupo de activación de unidad de trabajo remota El estado inicial de un grupo de activación es conectable y conectado . El servidor de aplicación al que se conecta el grupo d e activación viene determinado por el parámetro RBD de los mandatos CR TSQLxxx y STRSQL y puede conllevar una operación CONNECT implícita. U na operación CONNECT implícita no puede producirse si ya ha tenido lugar una operación CONNECT implícita o explícita de forma satisfactoria o insa tisfactoria. Por tanto, un grupo de activación no puede conectarse i mplícitamente a un servidor de aplicación en más de una ocasión. Estado conectable y conectado : Un grupo de activación está conectado a un servidor de aplicación y se pueden ejecutar sentenc ias CONNECT. El grupo de activación entra en este estado cuando finaliza una retrotracción o un compromiso satisfactorio desde el estado no conecta ble y conectado, o cuando se ejecuta satisfactoriamente una sentencia CONNECT desde el estado conectable y no conectado. Estado no conectable y conectado : Un grupo de activación está conectado a un servidor de aplicación, pero no puede ejecutarse satisfactoriamente una sentencia CONNECT para cambiar los servidores de ap licación. El grupo de activación entra en este estado desde el estado con ectable y conectado cuando ejecuta cualquier sentencia SQL que no sea C ONNECT, COMMIT ni ROLLBACK. Estado conectable y no conectado : El grupo de activación no está conectado a un servidor de la aplicación. La única sentencia SQL que se puede ejecutar es CONNECT. El grupo de activación entra en este estado cuando: � Se ha liberado previamente la conexión y se ha e jecutado una sentencia COMMIT satisfactoria. � La conexión se ha desconectado utilizando la sen tencia SQL DISCONNECT. � La conexión se hallaba en un estado conectable, pero la sentencia CONNECT no ha sido satisfactoria. Se pueden ejecutar de forma satisfactoria sentencia s CONNECT consecutivas ya que CONNECT no aparta al grupo de activación del estado conectable. Una sentencia CONNECT emitida hacia el servidor de aplicación con el que está conectado el grupo de activación actualmente s e ejecuta como cualquier otra sentencia CONNECT. CONNECT no se pu ede ejecutar de forma satisfactoria cuando va precedida de cualquier sent encia SQL que no sea CONNECT, COMMIT, DISCONNECT, SET CONNECTION, RELEASE ni ROLLBACK (a menos que se ejecute con COMMIT(*NC)). Para evitar error es, ejecute una operación de compromiso o retrotracción antes de qu e se ejecute una sentencia CONNECT.

DB2/400 Manual de Consulta SQL V3R7 Gestión de la conexión de unidades de trabajo remotas

© Copyright IBM Corp. 1995, 1996 1.20.3.1 - 1

Page 53: DB2/400 Manual de Consulta SQLmarce.com/docs/systems/manuales/db2_400_manual_consulta_sql_v3r7.pdf · VERSION Nota de Versión Segunda edición (noviembre de 1996) Este manual es

1.20.4 Unidad de trabajo distribuida dirigida por l a aplicación El recurso de unidad de trabajo distribuida dirigida p or la aplicación también permite la preparación y ejecución remotas de las sentencias SQL de la misma manera que la unidad de trabajo remota. Al igual que la unidad de trabajo remota, un grupo de activación si tuado en el sistema A puede conectarse a un servidor de aplicación situad o en el sistema B y ejecutar un número cualquiera de sentencias SQL din ámicas o estáticas que hagan referencia a los objetos de B antes de finali zar la unidad de trabajo. Todos los objetos a los que se hace refer encia en una única sentencia SQL debe gestionarlos el mismo gestor de bases de datos. Sin embargo, a diferencia de la unidad de trabajo remot a, en la misma unidad de trabajo pueden participar un número cualquiera d e servidores de la aplicación. La unidad de trabajo la finaliza una o peración de compromiso o de retrotracción. Subtemas 1.20.4.1 Gestión de conexión de unidad de trabajo distribui da dirigida por la aplicación 1.20.4.2 Estados de conexión 1.20.4.3 Estados de conexión del grupo de activación 1.20.4.4 Cuando finaliza una conexión

DB2/400 Manual de Consulta SQL V3R7 Unidad de trabajo distribuida dirigida por la aplicación

© Copyright IBM Corp. 1995, 1996 1.20.4 - 1

Page 54: DB2/400 Manual de Consulta SQLmarce.com/docs/systems/manuales/db2_400_manual_consulta_sql_v3r7.pdf · VERSION Nota de Versión Segunda edición (noviembre de 1996) Este manual es

1.20.4.1 Gestión de conexión de unidad de trabajo d istribuida dirigida por la aplicación En todo momento: � Un grupo de activación está siempre en el estado conectado o no conectado y tiene un conjunto de cero o más conexiones. Cad a una de las conexiones de un grupo de activación está i dentificada de forma exclusiva por el nombre del servidor de la apli cación de la conexión. � Una conexión SQL siempre está en uno de los sigu ientes estados: - Actual y retenido - Actual y pendiente de liberación - Latente y retenido - Latente y pendiente de liberación Estado inicial de un grupo de activación : Un grupo de activación se encuentra inicialmente en el estado conectado y tie ne exactamente una conexión. El estado inicial de una conexión es actual y retenido . El diagrama siguiente ilustra las transiciones de e stado: Iniciar proceso ¦ ¦ +----------------------- Estados de conexión SQL -----------------------+ ¦ ¦ ¦ ¦ ¦ Sentencia CONNEC T satisfactoria ¦ ¦ ¦ o SET CONNECTION que especifique ¦ ¦ ¦ +-------------+ otra conexi ón SQL +-------------+ ¦ ¦ ¦ ¦ +---------------- ----------- ¦ ¦ ¦ +------------- ¦ Actual ¦ ¦ Latente ¦ ¦ � ¦ ¦ ¦ ¦ ---------------- -----------¦ ¦ ¦ ¦ ¦ +-------------+ Sentencia C ONNECT +-------------+ ¦ ¦ ¦ satisfacto ria o ¦ ¦ ¦ SET CONNECTION que especifique ¦ ¦ ¦ una conexión latent e existente ¦ ¦ ¦ ¦ ¦ ¦ ¦ ¦ ¦ +-------------+ +-------------+ ¦ ¦ ¦ ¦ ¦ RELEAS E ¦ ¦ ¦ +------------- ¦ Retenido +---------------- ----------- ¦ Pendiente ¦ ¦ ¦ ¦ ¦ ¦ ¦ liberación ¦ ¦ ¦ ¦ +-------------+ +-------------+ ¦ ¦ ¦ ¦ ¦ +-------------------------------------- ---------------------------------+ ¦ ¦ ¦ +----------------- Estados conexión de grupo activación ---------------+ ¦ ¦ ¦ ¦ ¦ La conexión act ual finaliza ¦ ¦ ¦ de forma intenc ionada, o ¦ ¦ ¦ produce un erro r que provoca ¦ ¦ ¦ +-------------+ la pérdida de l a conexión +--------------+ ¦ ¦ ¦ ¦ +---------------- ----------- ¦ ¦ ¦ +------------- ¦ Conectado ¦ ¦ No conectado ¦ ¦ � ¦ ¦ ¦ ---------------- -----------¦ ¦ ¦ ¦ +-------------+ Sentencias CO NNECT o +--------------+ ¦ ¦ SET CONNECTION s atisfactorias ¦ ¦ ¦ +-------------------------------------- ---------------------------------+ Figura 9. Transiciones de estado de conexión de gru po de activación y conexión de unidad de trabajo distribuida dirigida por la aplicación

DB2/400 Manual de Consulta SQL V3R7 Gestión de conexión de unidad de trabajo distribuida dirigida por la aplicación

© Copyright IBM Corp. 1995, 1996 1.20.4.1 - 1

Page 55: DB2/400 Manual de Consulta SQLmarce.com/docs/systems/manuales/db2_400_manual_consulta_sql_v3r7.pdf · VERSION Nota de Versión Segunda edición (noviembre de 1996) Este manual es

1.20.4.2 Estados de conexión Si un proceso de aplicación ejecuta una sentencia C ONNECT satisfactoriamente: � La conexión actual pasa al estado latente y rete nido. � El nombre del servidor se añade al conjunto de c onexiones y la nueva conexión pasa al estado actual y retenido. Si el nombre del servidor ya está incluido en el co njunto de conexiones existentes del grupo de activación, se produce un e rror. Una conexión en estado latente pasa al estado actua l por medio de la sentencia SET CONNECTION. Cuando una conexión pasa al estado actual, la conexión actual anterior, si la hay, pasa al estado latente. En todo momento no puede haber más de una conexión actual e n el conjunto de conexiones existentes de un grupo de activación. E l cambio del estado de una conexión de actual a latente o de latente a act ual no tiene ninguna incidencia sobre su estado retenido o pendiente de liberación. Una conexión pasa al estado pendiente de liberación mediante la sentencia RELEASE. Cuando un grupo de activación ejecuta una operación de compromiso, finaliza toda conexión pendiente de lib eración del grupo de activación. El cambio del estado de una conexión d e retenido a pendiente de liberación no tiene ninguna incidencia sobre su estado actual o latente. Por tanto, una conexión en estado pendien te de liberación todavía puede utilizarse hasta la siguiente operaci ón de compromiso. No existe forma de cambiar el estado de una conexión d e pendiente de liberación a retenido.

DB2/400 Manual de Consulta SQL V3R7 Estados de conexión

© Copyright IBM Corp. 1995, 1996 1.20.4.2 - 1

Page 56: DB2/400 Manual de Consulta SQLmarce.com/docs/systems/manuales/db2_400_manual_consulta_sql_v3r7.pdf · VERSION Nota de Versión Segunda edición (noviembre de 1996) Este manual es

1.20.4.3 Estados de conexión del grupo de activació n Por medio de la ejecución explícita o implícita de una sentencia CONNECT puede establecerse un servidor de la aplicación dif erente. Las reglas que rigen son las siguientes: � Un grupo de activación no puede tener más de una conexión con el mismo servidor de la aplicación a la vez. � Cuando un grupo de activación ejecuta una senten cia SET CONNECTION, el nombre de ubicación especificado debe ser una c onexión existente en el conjunto de conexiones del grupo de activación. � Cuando un grupo de activación ejecuta una senten cia CONNECT, el nombre de servidor especificado no debe ser una conexi ón existente en el conjunto de conexiones del grupo de activación. Si un grupo de activación tiene una conexión actual , el grupo se halla en el estado conectado . El registro especial CURRENT SERVER contiene el nombre del servidor de la aplicación de la conexión actual. El grupo de activación puede ejecutar sentencias SQL que hagan referencia a los objetos gestionados por el servidor de la aplicació n. Un grupo de activación que se halle en el estado no conectado entra en el estado conectado cuando ejecuta satisfactoriamente una sentencia CONNECT o SET CONNECTION. Si un grupo de activación no tiene una conexión act ual , el grupo se halla en el estado no conectado . El contenido del registro especial CURRENT SERVER son blancos. Las únicas sentencias SQL que se pueden ejecutar son CONNECT, DISCONNECT, SET CONNECTION, RELEASE, COMMIT y ROLLBACK. Un grupo de activación que se halle en el estado co nectado entra en el estado no conectado cuando se finaliza intencionada mente su conexión actual, o cuando la ejecución de una sentencia SQL no es satisfactoria debido a un error que provoca una operación de retr otracción en el servidor actual y la pérdida de la conexión. Las c onexiones se finalizan intencionadamente cuando un grupo de activación eje cuta de forma satisfactoria una operación de compromiso y la cone xión se encuentra en el estado pendiente de liberación, o cuando un proceso de aplicación ejecuta la sentencia DISCONNECT de forma satisfactoria.

DB2/400 Manual de Consulta SQL V3R7 Estados de conexión del grupo de activación

© Copyright IBM Corp. 1995, 1996 1.20.4.3 - 1

Page 57: DB2/400 Manual de Consulta SQLmarce.com/docs/systems/manuales/db2_400_manual_consulta_sql_v3r7.pdf · VERSION Nota de Versión Segunda edición (noviembre de 1996) Este manual es

1.20.4.4 Cuando finaliza una conexión Cuando finaliza una conexión, se desasignan todos l os recursos adquiridos por el grupo de activación a través de la conexión y todos los utilizados para crear y mantener la misma. Por ejemplo, si el proceso de aplicación P ha colocado la conexión del servidor de aplicació n X en el estado pendiente de liberación, todos los cursores de P en X se cerrarán y desasignarán cuando la conexión finalice durante la siguiente operación de compromiso. Una conexión también puede finalizarse como resulta do de un error de comunicaciones, en cuyo caso el grupo de activación pasa al estado de no conectado. Todas las conexiones de un grupo de act ivación finalizan cuando finaliza el grupo de activación.

DB2/400 Manual de Consulta SQL V3R7 Cuando finaliza una conexión

© Copyright IBM Corp. 1995, 1996 1.20.4.4 - 1

Page 58: DB2/400 Manual de Consulta SQLmarce.com/docs/systems/manuales/db2_400_manual_consulta_sql_v3r7.pdf · VERSION Nota de Versión Segunda edición (noviembre de 1996) Este manual es

1.20.5 Consideraciones sobre la representación de d atos Cada sistema representa los datos de distinto modo. Cuando se trasladan datos de un sistema a otro, en ocasiones se debe re alizar una conversión de datos. Los productos que dan soporte DRDA lleva rán a cabo de forma automática cualquier conversión necesaria en el sis tema receptor. Con los datos numéricos, la información necesaria p ara realizar la conversión se reduce al tipo de datos y al tipo de entorno del sistema emisor. Por ejemplo, cuando una variable de coma f lotante de un peticionario de aplicación DB2 para OS/400 se asign a a una columna de una tabla en un servidor de aplicación MVS, el número s e convierte del formato IEEE al formato System/370*. Con los datos de tipo carácter y gráfico, no basta con el tipo de datos y el tipo de entorno del sistema emisor. Se necesita información adicional para poder convertir las series de tipo carácter y gráfico. La conversión de estas series depende del juego de caracteres cod ificados de los datos y de la operación a realizar con estos datos. Las co nversiones de series se efectúan de acuerdo con la Arquitectura de Represen tación de Datos de Tipo Carácter (CDRA) de IBM. Para más información sobre la conversión de caracteres, véase la publicación Character Data Representation Architecture Level 1 Reference, SC09-1390.

DB2/400 Manual de Consulta SQL V3R7 Consideraciones sobre la representación de datos

© Copyright IBM Corp. 1995, 1996 1.20.5 - 1

Page 59: DB2/400 Manual de Consulta SQLmarce.com/docs/systems/manuales/db2_400_manual_consulta_sql_v3r7.pdf · VERSION Nota de Versión Segunda edición (noviembre de 1996) Este manual es

1.21 Conversión de caracteres Una serie es una secuencia de bytes que puede representar ca racteres. Dentro de una serie, todos los caracteres se repres entan mediante una representación de codificación común. En algunos c asos, puede resultar necesario convertir estos caracteres a una represen tación de codificación diferente. Este proceso de conversión se conoce po r conversión de caracteres . (3) La conversión de caracteres puede producirse cuando una sentencia SQL se ejecuta remotamente. Considérense, por ejemplo, es tos dos casos: � Los valores de variables del lenguaje principal que se envían desde el peticionario de la aplicación al servidor actua l. � Los valores de las columnas de resultados que se envían desde el servidor actual al peticionario de la aplicació n. En ambos casos, la serie podría tener una represent ación distinta en el sistema emisor y en el sistema receptor. También s e puede producir la conversión durante las operaciones de serie en el m ismo sistema. La lista siguiente define algunos de los términos u tilizados en la explicación de la conversión de caracteres. juego de caracteres Un juego de caracteres definido. El juego de caracteres siguiente, por ejemplo, aparece en varias páginas de códigos: � 26 letras no acentuadas de la A a la Z � 26 letras no acentuadas de la a a la z � dígitos del 0 al 9 � . , : ; ? ( ) ' " / - _ (subrayado) & + % * = < > página de códigos Un conjunto de asignaciones de caracteres a elementos de código. En E BCDIC, por ejemplo, a la 'A' se le asigna el ele mento de código X'C1' y a la 'B' se le asigna el e lemento de código X'C2'. En una página de c ódigos, cada elemento de código tiene un único s ignificado concreto. elemento de código Un patrón de bits exclusivo que representa u n carácter. juego de caracteres codificados Conjunto de reglas sin amb igüedades que establecen un juego de car acteres y las relaciones biunívocas entr e los caracteres del juego y sus representacion es codificadas. esquema de codificación Conjunto de reglas utilizado para representar datos de tipo carácter. P or ejemplo: � EBCDIC de un solo byte � ASCII de un solo byte (4) � EBCDIC mixto de un solo byte y de doble byte � ASCII mixto de un solo byte y de doble byte � UCS-2 (juego de caracte res codificado universal). carácter de sustitución Carácter exclusivo que se sustituye durante la conversión de caracteres p or cualquier carácter de la representación de co dificación origen que no tenga ningún carácter c orrespondiente en la representación de codifica ción destino. (3) La conversión de caracteres, si es necesaria, se realiza automáticamente y es transparente para la aplic ación cuando es satisfactoria. Por lo tanto, no es necesari o conocer el proceso de conversión cuando todas las series e specificadas en la ejecución de una sentencia se representan del mismo modo. Así pues, para muchos lectores, la conve rsión de caracteres puede carecer de interés. (4) El término ASCII se utiliza en este manual par a hacer referencia a datos PC de IBM o a datos ISO 8. Subtemas 1.21.1 Juegos de caracteres y páginas de códigos 1.21.2 Juegos de caracteres codificados y CCSID 1.21.3 CCSID por omisión

DB2/400 Manual de Consulta SQL V3R7 Conversión de caracteres

© Copyright IBM Corp. 1995, 1996 1.21 - 1

Page 60: DB2/400 Manual de Consulta SQLmarce.com/docs/systems/manuales/db2_400_manual_consulta_sql_v3r7.pdf · VERSION Nota de Versión Segunda edición (noviembre de 1996) Este manual es

1.21.1 Juegos de caracteres y páginas de códigos El ejemplo siguiente muestra cómo un juego de carac teres típico puede correlacionarse con distintos elementos de código e n dos páginas de códigos diferentes.

Incluso con el mismo esquema de codificación, exist en muchos juegos de caracteres diferentes, y el mismo elemento de códig o puede representar un carácter diferente en distintos juegos de caractere s. Es más, un byte en una serie de caracteres no representa necesariament e un carácter de un juego de caracteres de un sólo byte (SBCS). Las se ries de caracteres también se utilizan en datos mixtos (una mezcla de caracteres de un sólo byte y de caracteres de doble byte) y en datos que no están asociados a ningún juego de caracteres (llamados datos de bit). Este no es el único caso con series de tipo gráfico; el gestor de bases de datos supone que cada par de bytes de todas las series de tipo gráfi co representa un carácter de un juego de caracteres de doble byte (D BCS) o juego de caracteres codificado universal (UCS-2). Un CCSID de un esquema de codificación nativo es un o de los juegos de caracteres codificados con que pueden almacenarse d atos en el sistema. Un CCSID de un esquema de codificación foráneo es uno de los juegos de caracteres codificados con que no pueden almacenars e los datos en dicho sistema. Por ejemplo, DB2 para OS/400 puede almace nar datos en un CCSID con un esquema de codificación EBCDIC, pero no con un esquema de codificación ASCII. Una variable del lenguaje principal que contenga da tos en un esquema de codificación foráneo se convierte siempre a un CCSI D del esquema de codificación nativo cuando la variable del lenguaje principal se utiliza en una función o en la lista de selecciones. Una v ariable del lenguaje principal que contenga datos en un esquema de codif icación foráneo también se convierte de forma efectiva a un CCSID del esque ma de codificación nativo cuando se utiliza en comparaciones o en una operación que combine series. El CCSID del esquema de codificación nativ o al que se convierten los datos se basa en el CCSID foráneo y el CCSID po r omisión. Para obtener más detalles sobre la conversión de ca racteres, véase: � "Reglas de conversión para asignaciones" en el tema 2.7.3 � "Reglas de conversión para comparación" en el tema 2.7.7 � "Reglas de conversión para operaciones que combinan series" en el tema 4.3.3 � Apéndice F, "Consideraciones para la utilización de la base de datos relacional distribuida" en el tema F.0

DB2/400 Manual de Consulta SQL V3R7 Juegos de caracteres y páginas de códigos

© Copyright IBM Corp. 1995, 1996 1.21.1 - 1

Page 61: DB2/400 Manual de Consulta SQLmarce.com/docs/systems/manuales/db2_400_manual_consulta_sql_v3r7.pdf · VERSION Nota de Versión Segunda edición (noviembre de 1996) Este manual es

1.21.2 Juegos de caracteres codificados y CCSID La Arquitectura de Representación de Datos de Tipo Carácter (CDRA) de IBM trata las diferencias de representación y codificac ión de series. El Identificador de Juego de Caracteres Codificados (C CSID) es un elemento clave de esta arquitectura. Un CCSID es un número binario (sin signo) de 2 bytes que identifica de forma exclusiva a un esqu ema de codificación y a uno o más pares de juegos de caracteres y de página s de códigos. Un CCSID es un atributo de las series, del mismo mo do que la longitud es también un atributo de las series. Todos los valor es de la misma columna de serie tiene el mismo CCSID. En cada gestor de base de datos, la conversión de c aracteres conlleva la utilización de una tabla para la selección de conversiones CCSID . La tabla para la selección de conversiones contiene un a lista de combinaciones origen y destino válidas. Para cada par de CCSID, la tabla para selección de conversiones contiene información que se utiliza para realizar la conversión de un juego de caracteres a otro. Esta información incluye una indicación de si es necesaria o no la c onversión (en algunos casos, no es necesario realizar ninguna conversión, aunque las series en cuestión tengan distintos CCSID).

DB2/400 Manual de Consulta SQL V3R7 Juegos de caracteres codificados y CCSID

© Copyright IBM Corp. 1995, 1996 1.21.2 - 1

Page 62: DB2/400 Manual de Consulta SQLmarce.com/docs/systems/manuales/db2_400_manual_consulta_sql_v3r7.pdf · VERSION Nota de Versión Segunda edición (noviembre de 1996) Este manual es

1.21.3 CCSID por omisión Todos los servidores de la aplicación y peticionari os de la aplicación tienen un CCSID por omisión (o CCSID por omisión en instalaciones que den soporte a datos DBCS). El CCSID de los siguientes tipos de series se determina en el servidor actual: � Las constantes de serie (incluidas las constante s de serie que representan valores de fecha y hora) cuando el CCSID del origen está en un esquema de codificación foráneo � Registros especiales con valores de serie (como USER y CURRENT SERVER) � Resultados de las funciones escalares CHAR, DIGI TS y HEX � Resultados de las funciones escalares VARCHAR y VARGRAPHIC cuando no se especifica un CCSID como un argumento � Las columnas de serie definidas mediante las sen tencias CREATE TABLE o ALTER TABLE cuando no se especifica un CCSID ex plícito para la columna (5) En un programa SQL distribuido, el CCSID por omisió n de las variables del lenguaje principal lo determina el peticionario de la aplicación. En un programa SQL no distribuido, el CCSID por omisión d e las variables del lenguaje principal lo determina el servidor de apli cación. En OS/400, el CCSID por omisión lo determina el atributo de traba jo CCSID. Para obtener más información acerca de los CCSID, consulte el ma nual International Application Development , SC41-4603. (5) Si el CCSID por omisión es 65535, las columnas de series de caracteres no utilizarán 65535. En lugar de el lo, el CCSID utilizado será el valor del atributo de trabajo DFTCCSID.

DB2/400 Manual de Consulta SQL V3R7 CCSID por omisión

© Copyright IBM Corp. 1995, 1996 1.21.3 - 1

Page 63: DB2/400 Manual de Consulta SQLmarce.com/docs/systems/manuales/db2_400_manual_consulta_sql_v3r7.pdf · VERSION Nota de Versión Segunda edición (noviembre de 1996) Este manual es

1.22 Secuencia de clasificación Una secuencia de clasificación defina la forma en q ue los caracteres de un juego de caracteres se relacionan entre sí cuando s e comparan y ordenan. Para quienes desean ordenar sus datos en un idioma específico les resultarán útiles distintas secuencias de clasifica ción. Las listas, por ejemplo, pueden ordenarse tal y como se ven en un i dioma específico. Una secuencia de clasificación puede utilizarse también para tratar a determinados caracteres como equivalentes; por ejem plo, a y A. Una secuencia de clasificación funciona en todas las co mparaciones que afectan a datos de tipo carácter SBCS y a la parte SBCS de los datos mixtos. El soporte de secuencia de clasificación se implant a utilizando una tabla de 256 bytes. Cada byte de la tabla se corresponde con un elemento de código o carácter de una página de códigos SBCS. D ado que la secuencia de clasificación se puede aplicar a datos de tipo cará cter, debe haber un CCSID asociado con la tabla. Los bytes de la tabla de secuencia de clasificación se establecen tomando como base la fo rma en la que se ha de comparar cada elemento de código con los demás en d icha página de códigos. Si, por ejemplo, los caracteres a y A han de tratarse como equivalentes a efectos de comparación, los bytes de la tabla de se cuencia de clasificación correspondiente a sus elementos de có digo contendrán el mismo valor o peso. Cuando dos o más bytes de una tabla de secuencia de clasificación tienen el mismo valor, se dice que la secuencia de clasifi cación es de pesos compartidos. Si cada byte de una tabla de secuenci a de clasificación tiene un valor exclusivo, la secuencia de clasifica ción es de pesos exclusivos. Para muchos idiomas, las secuencias de clasificación de pesos compartidos y exclusivos se adjuntan en el sistema AS/400 como parte del sistema operativo. Si precisa secuencias de clasif icación para otros idiomas o necesidades, puede definirlas utilizando el mandato CRTTBL (Crear Tabla). Es importante recordar que los datos en sí no se ve n alterados por la secuencia de clasificación. Para realizar la compa ración, se utiliza una representación ponderada de los datos. En SQL, la secuencia de clasificación se especifica en los mandatos CRTSQLx xx, STRSQL y RUNSQLSTM. En SQL para REXX, se especifica una secuencia de cl asificación en la sentencia SQL SET OPTION. La secuencia de clasific ación se aplica a todas las comparaciones de caracteres realizadas en las s entencias SQL. La secuencia de clasificación por omisión en el sistem a AS/400 es la secuencia EBCDIC estándar. Esta es la secuencia qu e se obtiene cuando se especifica SRTSEQ(*HEX). Para los programas precom pilados con un release del producto que sea anterior a la Versión 2 Releas e 3, la secuencia de clasificación es *HEX. Para obtener más información acerca de los CCSID, c onsulte el manual International Application Development , SC41-4603. Para obtener más información acerca de secuencias de clasificación y de las secuencias que se adjuntan con el sistema, consulte el manual National Language Support , SC41-4101.

DB2/400 Manual de Consulta SQL V3R7 Secuencia de clasificación

© Copyright IBM Corp. 1995, 1996 1.22 - 1

Page 64: DB2/400 Manual de Consulta SQLmarce.com/docs/systems/manuales/db2_400_manual_consulta_sql_v3r7.pdf · VERSION Nota de Versión Segunda edición (noviembre de 1996) Este manual es

1.23 Autorización y privilegios Lo usuarios podrán ejecutar satisfactoriamente las sentencias SQL sólo si tienen la autorización para realizar la función esp ecificada. Para crear una tabla, el usuario debe estar autorizado a crear tablas; para eliminar una tabla, debe estar autorizado a eliminar tablas, y así sucesivamente. Las personas con autorización de administrador está n encargadas de de la tarea de controlar el gestor de bases de datos y so n responsables de la seguridad e integridad de los datos. También contr olan quiénes tendrán acceso al gestor de bases de datos y el alcance de dicho acceso. Los usuarios con autorización de administrador tienen a utorización para realizar todas las operaciones en todos los objetos independientemente de si se les han otorgado privilegios específicos o no . El responsable de seguridad y todos los usuarios con autorización *AL LOBJ tienen autorización de administrador. Los Privilegios son aquellas actividades que la autorización de administrador permite realizar al usuario. Los usu arios autorizados pueden crear cualquier objeto, tener acceso a los o bjetos de su propiedad y transmitir los privilegios sobre sus propios obje tos a otros usuarios mediante la sentencia GRANT. Para revocar privileg ios otorgados anteriormente, puede utilizarse la sentencia REVOKE Cuando se crea un objeto, se asigna la propiedad del objeto a un ID de autorización. La propiedad otorga al usuario el co ntrol absoluto sobre el objeto, incluido el privilegio de eliminar el objet o. El propietario puede revocarse a sí mismo un privilegio sobre un o bjeto de su propiedad. En este caso, no podrá realizar temporalmente ningu na operación que requiera dicho privilegio. No obstante, y puesto q ue se trata del propietario, siempre se le permite volver a otorgar se el privilegio a sí mismo. | La autorización otorgada a *PUBLIC en los objetos d e SQL depende del| convenio de denominación utilizado en el momento de la creación del| objeto. Si se utiliza el convenio de denominación *SYS, *PUBLIC adquiere| la autorización de la biblioteca en la que se creó el objeto. Si se| utiliza el convenio de denominación *SQL, *PUBLIC a dquiere la autorización| *EXCLUDE. En los apartados dedicados a autorizaciones de este manual se presupone que al propietario de un objeto no se le ha revocad o ningún privilegio sobre él desde la creación inicial del mismo. Si e l objeto es una vista, también se supone que al propietario de ella no se le ha revocado la autorización del sistema *READ sobre ninguna tabla ni vista de las que dicha vista sea directa o indirectamente dependient e. El propietario tiene la autorización del sistema *READ para todas las tablas y vistas a las que se haga referencia en la definición de vist a y, si se hace referencia a una vista, todas las tablas y vistas a las que se haga referencia en su definición, y así sucesivamente. Para obtener más información acerca de la autorización y los privile gios, consulte el manual Security - Reference , SC41-4302.

DB2/400 Manual de Consulta SQL V3R7 Autorización y privilegios

© Copyright IBM Corp. 1995, 1996 1.23 - 1

Page 65: DB2/400 Manual de Consulta SQLmarce.com/docs/systems/manuales/db2_400_manual_consulta_sql_v3r7.pdf · VERSION Nota de Versión Segunda edición (noviembre de 1996) Este manual es

2.0 Capítulo 2. Elementos del lenguaje En este capítulo se define la sintaxis básica de SQ L y de los elementos de lenguaje que son comunes a muchas de las sentencias SQL. Subtemas 2.1 Caracteres 2.2 Símbolos 2.3 Identificadores 2.4 Convenios de denominación 2.5 ID de autorización y nombres-autorización 2.6 Tipos de datos 2.7 Asignaciones y comparaciones 2.8 Constantes 2.9 Registros especiales 2.10 Nombres de columna 2.11 Referencias a variables del lenguaje principal 2.12 Estructuras del lenguaje principal en C, COBOL, PL /I y RPG 2.13 Matrices de estructuras del lenguaje principal en C, COBOL, PL/I y RPG 2.14 Expresiones 2.15 Predicados 2.16 Condiciones de búsqueda

DB2/400 Manual de Consulta SQL V3R7 Capítulo 2. Elementos del lenguaje

© Copyright IBM Corp. 1995, 1996 2.0 - 1

Page 66: DB2/400 Manual de Consulta SQLmarce.com/docs/systems/manuales/db2_400_manual_consulta_sql_v3r7.pdf · VERSION Nota de Versión Segunda edición (noviembre de 1996) Este manual es

2.1 Caracteres Los símbolos básicos de las palabras clave y los op eradores del lenguaje SQL son caracteres de un solo byte que forman parte de todos los juegos de caracteres a los que dan soporte los productos de b ases de datos relacionales de IBM. Los caracteres del lenguaje s e clasifican en letras, dígitos o caracteres especiales. Una letra es cualquiera de las 26 mayúsculas (de la A a la Z ) y las 26 minúsculas (de la a a la z) del alfabeto inglés. (6) Un dígito es cualquiera de los caracteres comprendidos entre 0 y 9. Un carácter especial es cualquiera de los caracteres que figuran en la lista que sigue a continuación. (7) +-------------------------------------------------- ----------------------+ ¦ ¦ espacio ¦ - ¦ sig no menos ¦ +--------+---------------------------+--------+---- ----------------------¦ ¦ " ¦ comillas ¦ . ¦ pun to ¦ +--------+---------------------------+--------+---- ----------------------¦ ¦ % ¦ tanto por cierto ¦ / ¦ bar ra inclinada ¦ +--------+---------------------------+--------+---- ----------------------¦ ¦ & ¦ signo de Y ¦ : ¦ dos puntos ¦ +--------+---------------------------+--------+---- ----------------------¦ ¦ ' ¦ apóstrofo o comillas ¦ ; ¦ pun to y coma ¦ ¦ ¦ simples ¦ ¦ ¦ +--------+---------------------------+--------+---- ----------------------¦ ¦ ( ¦ paréntesis de apertura ¦ < ¦ men or que ¦ +--------+---------------------------+--------+---- ----------------------¦ ¦ ) ¦ paréntesis de cierre ¦ = ¦ igu al que ¦ +--------+---------------------------+--------+---- ----------------------¦ ¦ * ¦ asterisco ¦ > ¦ may or que ¦ +--------+---------------------------+--------+---- ----------------------¦ ¦ + ¦ signo más ¦ ? ¦ sig no de interrogación ¦ +--------+---------------------------+--------+---- ----------------------¦ ¦ , ¦ coma ¦ _ ¦ sub rayado ¦ +--------+---------------------------+--------+---- ----------------------¦ ¦ | (8) ¦ barra vertical ¦ ¦ ¦ +-------------------------------------------------- ----------------------+ (6) Las letras también también incluyen tres eleme ntos de código reservados como ampliadores alfabéticos para id iomas nacionales (#,@ y $ en los Estados Unidos). De be evitarse la utilización de estos tres elementos de código p orque representan caracteres diferentes dependiendo d el CCSID. (7) El símbolo (¬) es también un carácter especial utilizado por DB2 para OS/400. Debe evitarse su utilización porque es un carácter variante. (8) La utilización del carácter de barra vertical (|) puede inhibir la portabilidad del código entre produc tos de bases relacionales de IBM. Es preferible utilizar el operador CONCAT en lugar del operador de concatenación ( ||). La utilización de la barra vertical debe evitarse porque es un carácter variante.

DB2/400 Manual de Consulta SQL V3R7 Caracteres

© Copyright IBM Corp. 1995, 1996 2.1 - 1

Page 67: DB2/400 Manual de Consulta SQLmarce.com/docs/systems/manuales/db2_400_manual_consulta_sql_v3r7.pdf · VERSION Nota de Versión Segunda edición (noviembre de 1996) Este manual es

2.2 Símbolos Las unidades sintácticas básicas del lenguaje se de nominan símbolos . Un símbolo consta de uno o más caracteres, excluyendo los espacios en blanco y los caracteres con una constante de tipo serie o un identificador delimitado (estos términos se definirán más adelant e). Los símbolos se clasifican como ordinarios o delimitadores : � Un símbolo ordinario es una constante numérica, un identificador ordinario, un identificador del lenguaje princi pal o una palabra clave. � Un símbolo delimitador es una constante de tipo serie, un identificador delimitado, un símbolo de operado r o cualquiera de los caracteres especiales mostrados en los diagrama s de sintaxis. Un signo de interrogación (?) es también un símbol o delimitador siempre que funcione como marcador de parámetros, tal c omo se explica en el apartado "PREPARE" en el tema 5.38 . Espacios : Un espacio es una secuencia de uno o más caracteres en blanco . Los símbolos que no sean constantes de tipo serie y ciertos identificadores delimitados no deben incluir un esp acio. Cualquier símbolo puede ir seguido de un espacio. Todos los símbolos ordinarios deben ir seguidos por un símbolo delimitador o un e spacio. Si la sintaxis no permite que un símbolo ordinario vaya seguido de un símbolo delimitador, dicho símbolo no debe ir seguido de un espacio. Los ejemplos siguientes ilustran la regla expuesta en este apart ado. He aquí algunos ejemplos de símbolos ordinarios: 1 .1 +2 SELECT E 3 He aquí algunos ejemplos de combinaciones de los sí mbolos ordinarios anteriores que, en efecto, cambian los símbolos: 1.1 .1+2 SELECTE .1E E3 SELECT1 Esto demuestra por qué los símbolos ordinarios debe n ir seguidos de un símbolo delimitador o un espacio. He aquí algunos ejemplos de símbolos delimitadores: , 'serie' "fld1" = . He aquí algunos ejemplos de combinaciones de los sí mbolos ordinarios anteriores y de los símbolos delimitadores que, en efecto, cambian los símbolos: 1. .3 El punto (.) es un símbolo delimitador cuando se ut iliza como separador en la calificación de nombres. En ella, el punto se u tiliza en combinación con un símbolo ordinario de una constante numérica. Así pues, la sintaxis no permite que un símbolo ordinario vaya seguido de un símbolo delimitador. En lugar de ello, el símbolo ordinari o debe ir seguido de un espacio. Si el valor del sistema QDECFMT está establecido co mo el valor J, de acuerdo con lo descrito en el apartado "Coma decimal" en el tema 2.8.6 , la coma se interpreta como coma decimal. He aquí algu nos ejemplos de estas constantes numéricas: 1,2 ,1 1, 1,e1 Si se quiere que '1,2' y '1,e1' sean dos unidades, tanto el símbolo ordinario (1) como el delimitador (,) deben ir segu idos de un espacio, a fin de evitar que la coma se interprete como una co ma decimal. Aunque la coma es, normalmente, un símbolo delimitador, forma parte del número cuando se interpreta como coma decimal. Por lo tan to, la sintaxis no permite que un símbolo ordinario (1) vaya seguido d e un símbolo delimitador (,). En lugar de ello, un símbolo ordi nario debe ir seguido de un espacio. Comentarios : Las sentencias SQL estáticas pueden incluir come ntarios del lenguaje principal o comentarios de SQL. Cualquier a de estos dos tipos de comentarios puede especificarse siempre que pueda e specificarse un espacio, excepto dentro de un símbolo delimitador o entre las palabras clave EXEC y SQL. Los comentarios SQL van precedid os por dos guiones consecutivos (--) y no pueden extenderse más allá d el final de la línea. Para obtener más información, consulte el apartado "Comentarios SQL" en el tema 5.3 . Mayúsculas y minúsculas : Las letras en mayúsculas que se utilicen en un símbolo ordinario que no sea una variable del lengu aje principal C se pasará a minúsculas. Los signos delimitadores nunc a se convierten a mayúsculas. Así, la sentencia: select * from EMP where apell = 'Pérez'; es equivalente, después de convertirla, a: SELECT * FROM EMP WHERE APELL = 'Pérez';

DB2/400 Manual de Consulta SQL V3R7 Símbolos

© Copyright IBM Corp. 1995, 1996 2.2 - 1

Page 68: DB2/400 Manual de Consulta SQLmarce.com/docs/systems/manuales/db2_400_manual_consulta_sql_v3r7.pdf · VERSION Nota de Versión Segunda edición (noviembre de 1996) Este manual es

2.3 Identificadores Un identificador es un símbolo utilizado para formar un nombre. Un identificador en una sentencia SQL es un identifica dor SQL, un identificador del sistema o un identificador del le nguaje principal. Nota: $, @, # y todos los demás caracteres variables no deben utilizarse en los identificadores porque los elementos de código utilizados para representarlos varían dependiendo del C CSID de la serie que los contiene. Si se utilizan, pueden produc irse resultados imprevisibles. Para obtener más información acerca de los caracteres variables, consulte el manual National Language Support , SC41-4101. Subtemas 2.3.1 Identificadores de SQL 2.3.2 Identificadores del sistema 2.3.3 Identificadores del lenguaje principal

DB2/400 Manual de Consulta SQL V3R7 Identificadores

© Copyright IBM Corp. 1995, 1996 2.3 - 1

Page 69: DB2/400 Manual de Consulta SQLmarce.com/docs/systems/manuales/db2_400_manual_consulta_sql_v3r7.pdf · VERSION Nota de Versión Segunda edición (noviembre de 1996) Este manual es

2.3.1 Identificadores de SQL Hay dos tipos de identificadores de SQL: identificadores ordinarios e identificadores delimitados . � Un identificador ordinario es una letra mayúscula seguida de cero o| más caracteres, cada uno de los cuales es una l etra mayúscula, un dígito o el carácter de subrayado. Tenga prese nte que los identificadores ordinarios se convierten a mayú sculas. Un identificador ordinario no debe ser una palabra reservada. Consulte el Apéndice D, "Palabras reservadas" si desea ver una lista de las palabras reservadas. Si se utiliza una palabra reservada como identificador en SQL, debe especificarse en may úsculas y debe encerrarse entre los caracteres de escape de SQ L. � Un identificador delimitado es una secuencia de uno o más caracteres encerrados entre caracteres de escape SQL. La secuencia debe constar de uno o más caracteres. Los blancos iniciales de la secuencia son significativos. Los blancos finales de la secu encia no lo son. La longitud de un identificador delimitado incluye los dos caracteres de escape de SQL para nombres de columna, pero no para otros nombres SQL. Tenga presente que los identificadores delimita dos no se convierten a mayúsculas. El carácter de escape son las comi llas ("), excepto en los casos que se citan a continuación, en los q ue el carácter de escape es el apóstrofo ('): - SQL interactivo cuando el delimitador de se rie SQL está establecido como comillas en la modalidad d e sentencia de comprobación de sintaxis COBOL - SQL dinámico en un programa COBOL cuando el parámetro OPTION(*QUOTESQL) de CRTSQLCBL o CRTSQLCBLI especifica que el delimitador de serie son las comillas (") - El programa de aplicación COBOL cuando cuan do el parámetro OPTION(*QUOTESQL) de CRTSQLCBL o CRTSQLCBLI especifica que el delimitador de serie son las comillas (") Dentro de los identificadores delimitados no es tán permitidos los caracteres siguientes: - de X'00' hasta X'3F' y X'FF'

DB2/400 Manual de Consulta SQL V3R7 Identificadores de SQL

© Copyright IBM Corp. 1995, 1996 2.3.1 - 1

Page 70: DB2/400 Manual de Consulta SQLmarce.com/docs/systems/manuales/db2_400_manual_consulta_sql_v3r7.pdf · VERSION Nota de Versión Segunda edición (noviembre de 1996) Este manual es

2.3.2 Identificadores del sistema Los identificadores del sistema se utilizan para fo rmar el nombre de los objetos del sistema en OS/400. Hay dos tipos de id entificadores del sistema: los ordinarios y los delimitados. � Las reglas para formar un identificador ordinari o del sistema son idénticas a las reglas para formar un identific ador ordinario de SQL. � Las reglas para formar un identificador delimita do del sistema son idénticas a las reglas para formar identificado res delimitados de SQL, excepto en los puntos siguientes: - En un identificador delimitado del sistema no están permitidos los caracteres especiales siguientes: - Un blanco (X'40') - Un asterisco (X'5C') - Un apóstrofo (X'7D') - Un signo de interrogación (X'6F') - Comillas (X'7F') - Los bytes necesarios para los caracteres de escape están incluidos en la longitud del identificador a menos qu e los caracteres comprendidos entre los delimitadores formen un identificador ordinario. Por ejemplo, "PRIVILEGIOS" está en mayúscul as y los caracteres comprendidos entre los delimitadores forman un identificador ordinario; por lo tanto, tiene una longitud de 10 bytes y es un nombre del sistema válido para una columna. Por el contrario, "privilegios" está en minúsculas, tiene una longitud de 12 bytes y no es un nombre del sistema válido para una columna porque los bytes necesarios para los delimitadores deb en incluirse en la longitud del identificador. Subtemas 2.3.2.1 Ejemplos

DB2/400 Manual de Consulta SQL V3R7 Identificadores del sistema

© Copyright IBM Corp. 1995, 1996 2.3.2 - 1

Page 71: DB2/400 Manual de Consulta SQLmarce.com/docs/systems/manuales/db2_400_manual_consulta_sql_v3r7.pdf · VERSION Nota de Versión Segunda edición (noviembre de 1996) Este manual es

2.3.2.1 Ejemplos SUELSEM SUEL_SEM "SUEL_SEM" "SINDIC" "suel_sem"

DB2/400 Manual de Consulta SQL V3R7 Ejemplos

© Copyright IBM Corp. 1995, 1996 2.3.2.1 - 1

Page 72: DB2/400 Manual de Consulta SQLmarce.com/docs/systems/manuales/db2_400_manual_consulta_sql_v3r7.pdf · VERSION Nota de Versión Segunda edición (noviembre de 1996) Este manual es

2.3.3 Identificadores del lenguaje principal Un identificador del lenguaje principal es un nombre declarado en el programa del lenguaje principal. Las reglas para f ormar un identificador del lenguaje principal son las del lenguaje princip al; la única excepción es que no pueden utilizarse caracteres DBCS. Por e jemplo, las reglas para formar un identificador del lenguaje principal en u n programa en COBOL son las mismas que las reglas para formar una palabra d efinida por el usuario en COBOL. No deben utilizarse los nombres que empi ezan por los caracteres 'SQ' (9) , 'SQL', 'sql', 'RDI' o 'DSN' porque los precompila dores generan variables del lenguaje principal que empiezan por e stos caracteres. (9) 'SQ' se permite en C, COBOL y PL/I; no debe ut ilizarse en RPG

DB2/400 Manual de Consulta SQL V3R7 Identificadores del lenguaje principal

© Copyright IBM Corp. 1995, 1996 2.3.3 - 1

Page 73: DB2/400 Manual de Consulta SQLmarce.com/docs/systems/manuales/db2_400_manual_consulta_sql_v3r7.pdf · VERSION Nota de Versión Segunda edición (noviembre de 1996) Este manual es

2.4 Convenios de denominación Las reglas para formar un nombre dependen del tipo de objeto designado por el nombre y de la opción de denominación (*SQL o *S YS). La opción de denominación se especifica en los mandatos CRTSQLxx x, RUNSQLSTM y STRSQL. En REXX, se especifica en la sentencia SET OPTION. Los diagramas de sintaxis utilizan términos diferentes para los dist intos tipos de nombres. En la lista siguiente se definen dichos términos. nombre-autorización Identificador del sistema que designa al usu ario o grupo de usuarios. Un nombre de autorización es un nombre de perfil de usuario del AS/400. No debe ser un identifica dor delimitado que incluya letras minúsculas o caracteres especiales. Consulte el apartado "ID de autorización y nombres-autorización" en el tema 2.5 para obtener la distinción entre un nombre de autorización y un ID de autorización. nombre-colec Nombre calificado o no calificado con el que se pueden agrupar de forma l ógica los objetos SQL. Los nombres de colección se utilizan como calificadores del nombre de una tabla, vista, índice o paquete. La for ma no calificada de un nombre de colección es un identificador del sistema. La forma califi cada de un nombre de colección depende de la o pción de denominación. Para nombres SQL, el nomb re de colección no calificado de una sentenc ia SQL está calificado implícitamente por el nom bre-servidor. La forma calificada es un nombre-s ervidor seguido de un (.) y un identificador de l sistema. El nombre-servidor debe iden tificar el servidor actual. Para nombres del sistema, el nombre de colección no calificado de una sent encia SQL está calificado implícitamente por el nombre-servidor. La form a calificada es un nombre-servidor seguido d e una barra inclinada (/) y un identificador de l sistema. El nombre-servidor debe iden tificar el servidor actual. Nota: Nombre-colección hace referencia a una colección creada por la s entencia CREATE COLLECTION o CREATE SCHEM A o a una biblioteca del OS/400. nombre-col Nombre calificado o no calificado q ue designa a una columna de una tabla o vista. La forma no calificada de un nombre d e columna es un identificador SQL. La fo rma calificada es un calificador seguido de un punto y de un identificador SQL. El ca lificador es un nombre de tabla, un nombre de vi sta o un nombre de correlación. Los nombres de columna no pueden estar calificados por nombres d el sistema en forma de nombre-colección/nombre-tabla.nombre-columna , excepto en las sentencias COMMENT ON y LABEL ON. Si es necesario calificar los nombres de columna y se permiten los nombres de correlación en la sentencia, debe utilizars e un nombre de correlación para califica r la columna. Un nombre-columna puede e specificar el nombre de columna o el nombre de co lumna de sistema de una columna de una tabla o vi sta. nombre-restricción Nombre calificado o no calificado que desig na a una restricción de una ta bla. La forma calificada de un nombre d e restricción depende de la opción de denominac ión. Para nombres SQL, la forma calificada es un nombre-colección seguido de un punto (.) y un identificador del sistema. Para nombres de l sistema, la forma calificada es un nombre-c olección seguido de una barra inclinada (/) segui da de un identificador SQL. La forma no calificada es un identificador SQL. Queda calificada implícit amente de acuerdo con lo siguiente: � Si el parámetro DFTRDB COL está especificado en el mandato CRTSQLx xx, todos los nombres-restricción n o calificados de las sentencias estáticas quedan calificados por el valor especificado para el parámetro. � En todos los demás cas os, la forma no calificada queda impl ícitamente calificada de acuerdo con el con venio para nombres. - Para dar nombres SQL, el nombre-restricció n está calificado implícitamente po r el identificador de

DB2/400 Manual de Consulta SQL V3R7 Convenios de denominación

© Copyright IBM Corp. 1995, 1996 2.4 - 1

Page 74: DB2/400 Manual de Consulta SQLmarce.com/docs/systems/manuales/db2_400_manual_consulta_sql_v3r7.pdf · VERSION Nota de Versión Segunda edición (noviembre de 1996) Este manual es

autorización de l a sentencia. - Para dar nombres del sistema, el nombre-restricció n está implícitamente calificado por el nombre-colección de la colección que con tiene a la tabla. nombre-correlación Identificador SQL que designa una tabla, un a vista o filas individuale s de una tabla o vista. nombre-cursor Identificador SQL que designa un curso r SQL. nombre-descriptor Dos puntos seguidos por un identificador d el lenguaje principal que de signa a un área de descriptor SQL (SQLDA). Véase el apartado "Referencias a variables del lenguaje principal" en el tema 2.11 que contiene una una descripción de lo qué es un identific ador del lenguaje principal. Una variable del lenguaje principal que designe un área de de scriptor SQL no debe tener ninguna variable de indicador. No se permite la forma :variable-lenguaje-principal:variable-indicador . nombre-programa-externo Nombre calificado, no calificado o serie de caracteres que designa a un programa externo. La forma calificada de un nombre-programa-externo d epende de la opción de denominación. Para nombr es SQL, la forma calificada es un nombre-c olección seguido de un punto (.) y un identific ador del sistema. Para dar nombres del sistema, la forma calificada es un nombre-colección segui do de una barra inclinada (/) seguida de un identificador del sistema. La forma no calificada es un identificador del sistema. Queda calificad a implícitamente de acuerdo con lo siguiente: � Si el parámetro DFTRDB COL está especificado en el mandato CRTSQLx xx, todos los nombres-programa-exte rno no calificados de las sentencias estáti cas quedan calificados por el valor especifi cado para el parámetro. � En todos los demás cas os, la forma no calificada queda impl ícitamente calificada de acuerdo con el con venio para nombres. - Para dar nombres SQL, el nombre-programa-e xterno está calificado implícitamente po r el identificador de autorización de l a sentencia. - Para dar nombres del sistema, el nombre-programa-e xterno está implícitamente ca lificado por la lista de bibliotecas de l trabajo (*LIBL). El formato de la serie de caracteres es uno de los dos siguientes: � Un nombre de programa calificado de OS/400 ('nombre-biblioteca/n ombre-programa'). � Un nombre de archivo f uente calificado de OS/400 seguido de un paréntesis de apertura, seguido de un nombre de miembro de OS/400 y un paréntesis de cier re ('nombre-biblioteca/n ombre-archivo-fuente (nombre-miembro)'). Esta forma sólo es válida cuando se llam a a un procedimiento REXX. etiqueta-lenguaje-principal Símbolo que designa una e tiqueta del programa de lenguaje principal. variable-lenguaje-principal Secuencia de símbolos que designan a una variable del lenguaje pri ncipal. Una variable-lenguaje-princip al incluye al menos un identificador-lenguaje-pr incipal, según se explica en el apartado "Referencias a variables del lenguaje principal" en el tema 2.11 . nombre-índice Nombre calificado o no calificado que designa un índice. La forma calific ada de un nombre-índice depende de la opción de d enominación. Para nombres SQL, la forma cal ificada es un nombre-colección seguido de un punto (.) y de un identificador SQL. Pa ra nombres del sistema, la forma calificada es un nombre-colección seguido de una barra incl inada (/) seguida de un identificador SQL. La forma no calificada es un identificador SQL. Queda calificada implícit amente de acuerdo con lo siguiente: � Si el parámetro DFTRDB COL está especificado en el mandato CRTSQLx xx, todos los

DB2/400 Manual de Consulta SQL V3R7 Convenios de denominación

© Copyright IBM Corp. 1995, 1996 2.4 - 2

Page 75: DB2/400 Manual de Consulta SQLmarce.com/docs/systems/manuales/db2_400_manual_consulta_sql_v3r7.pdf · VERSION Nota de Versión Segunda edición (noviembre de 1996) Este manual es

nombres-índice no cal ificados de las sentencias estáticas quedan calificados por el valor especificado para el parámetro. � En todos los demás cas os, la forma no calificada queda impl ícitamente calificada de acuerdo con el con venio para nombres. - Para dar nombres SQL, el nombre-índice está implícitamen te calificado por el identificador de autorización de la sentencia. - Para dar nombres del sistema, el nombre-índice est á implícitamente calificado por la lista de bibliotecas del trabajo (*LIB L). Un nombre-índice puede es pecificar el nombre del índice o el nombre de índ ice del sistema del índice. | nombre-grupo-nodos Un nombre calificado o no calificado que de signa| un grupo de nodos. Un gr upo de nodos es un| grupo de AS/400 entre los que se distribuye una| tabla. Para obtener más información acerca de| las tablas distribuidas y los grupos de nodos,| consulte la publicación DB2 Multisystem for| OS/400 , SC41-3705. | La forma calificada de no mbre-grupo-nodos| depende de la opción de d enominación. Para| nombres SQL, la forma cal ificada es un| nombre-colección seguido de un punto (.) y un| identificador del sistema . Para dar nombres del| sistema, la forma calific ada es un| nombre-colección seguido de una barra inclinada| (/) seguida de un identif icador del sistema. | La forma no calificada es un identificador del| sistema. Queda calificad a implícitamente de| acuerdo con lo siguiente: | � Si se especifica el pa rámetro DFTRDBCOL en| el mandato CRTSQLxxx, todos los nombres de| grupo de nodos no cal ificados en sentencias| estáticas se califica n por el valor| especificado para el parámetro. | � En todos los demás cas os, la forma no| calificada queda impl ícitamente calificada| de acuerdo con el con venio para nombres. | - Para dar nombres SQL, el| nombre-grupo-nodo s está implícitamente| calificado por el identificador de| autorización de l a sentencia. | - Para dar nombres del sistema, el| nombre-grupo-nodo s está implícitamente| calificado por la lista de bibliotecas| de trabajo (*LIBL ). nombre-paquete Nombre calificado o no calificado que d esigna a un paquete. La forma cal ificada de un nombre-paquete depende de la opción de denominación. Para nombr es SQL, la forma calificada es un nombre-c olección seguido de un punto (.) y un identific ador del sistema. Para dar nombres del sistema, la forma calificada es un nombre-colección segui do de una barra inclinada (/) seguida de un identificador del sistema. La forma no calificada es un identificador del sistema. Queda calificad a implícitamente de acuerdo con lo siguiente: � Si el parámetro DFTRDB COL está especificado en el mandato CRTSQLx xx, todos los nombres-paquete no ca lificados de las sentencias estáticas quedan calificados por el valor especificado para el parámetro. � En todos los demás cas os, la forma no calificada queda impl ícitamente calificada de acuerdo con el con venio para nombres. - Para dar nombres SQL, el nombre-paquete está calificado i mplícitamente por el identificador de autorización de la sentencia. - Para dar nombres del sistema, el

DB2/400 Manual de Consulta SQL V3R7 Convenios de denominación

© Copyright IBM Corp. 1995, 1996 2.4 - 3

Page 76: DB2/400 Manual de Consulta SQLmarce.com/docs/systems/manuales/db2_400_manual_consulta_sql_v3r7.pdf · VERSION Nota de Versión Segunda edición (noviembre de 1996) Este manual es

nombre-paquete es tá implícitamente calificado por la lista de bibliotecas del trabajo (*LIB L). | nombre-parámetro Un identificador ordinario que designa a un| parámetro de procedimient o. El identificador| puede ir precedido por un punto y coma. nombre-procedimiento Nombre calificado o no calificado que designa a un procedimiento. La for ma calificada de un nombre-procedimiento depe nde de la opción de denominación. Para nombr es SQL, la forma calificada es un nombre-c olección seguido de un punto (.) y de un identi ficador SQL. Para nombres del sistema, la f orma calificada es un nombre-colección seguido de una barra inclinada (/) seguida de un identif icador SQL. La forma no calificada es un identificador SQL. Queda calificada implícit amente de acuerdo con lo siguiente: � Si el parámetro DFTRDB COL está especificado en el mandato CRTSQLx xx, todos los nombres-procedimiento no calificados de las sentencias estáticas quedan calificados por el valor especificado para el parámetro. � En todos los demás cas os, la forma no calificada queda impl ícitamente calificada de acuerdo con el con venio para nombres. - Para dar nombres SQL, el nombre-procedimie nto está calificado implícitamente po r el identificador de autorización de l a sentencia. - Para dar nombres del sistema, el nombre-procedimie nto está implícitamente calificado por la lista de bibliotecas del trabajo (*LIB L). nombre-servidor Identificador SQL que designa un servido r de la aplicación. No debe incl uir letras en minúsculas ni caracteres especiales. nombre-sentencia Identificador SQL que designa a una sente ncia SQL preparada. nombre-columna-sistema Nombre no calificado que designa el nombre de| columna de OS/400 de una tabla o una vista. Un| nombre-columna-sistema es un identificador del| sistema. Los nombres-col umna-sistema pueden ser identificadores delimitad os, pero los caracteres comprendidos entre los de limitadores no pueden incluir letras en minúscu las ni caracteres especiales. | nombre-objeto-sistema Nombre no calificado que designa el nombre| OS/400 de una tabla, vist a o índice. Un| nombre-objeto-sistema es un identificador del| sistema. | Si el nombre no calificad o de la tabla, vista o| índice es un identificado r válido del sistema,| el nombre-objeto-sistema de la tabla, vista o| índice es el nombre no ca lificado de la tabla,| vista o índice. nombre-tabla Nombre calificado o no calificado que designa una tabla. La forma cali ficada de un nombre-tabla depende de l a opción de denominación. Para nombr es SQL, la forma calificada es un nombre-c olección seguido de un punto (.) y de un identi ficador SQL. Para nombres del sistema, la f orma calificada es un nombre-colección seguido de una barra inclinada (/) seguida de un identif icador SQL. La forma no calificada es un identificador SQL. Queda calificada implícit amente de acuerdo con lo siguiente: � Si el parámetro DFTRDB COL está especificado en el mandato CRTSQLx xx, todos los nombres-tabla no cali ficados de las sentencias estáticas quedan calificados por el valor especificado para el parámetro. � En todos los demás cas os, la forma no calificada queda impl ícitamente calificada de acuerdo con el con venio para nombres. - Para dar nombres SQL, el nombre-tabla

DB2/400 Manual de Consulta SQL V3R7 Convenios de denominación

© Copyright IBM Corp. 1995, 1996 2.4 - 4

Page 77: DB2/400 Manual de Consulta SQLmarce.com/docs/systems/manuales/db2_400_manual_consulta_sql_v3r7.pdf · VERSION Nota de Versión Segunda edición (noviembre de 1996) Este manual es

está calificado i mplícitamente por el identificador de autorización de la sentencia. - Para dar nombres del sistema, el nombre-tabla está implícitamente calificado por la lista de bibliotecas del trabajo (*LIB L). Un nombre-tabla puede esp ecificar el nombre de la tabla o el nombre de t abla del sistema de la tabla. nombre-vista Nombre calificado o no calificado que designa una vista. La forma cali ficada de un nombre-vista depende de l a opción de denominación. Para nombr es SQL, la forma calificada es un nombre-c olección seguido de un punto (.) y de un identi ficador SQL. Para nombres del sistema, la f orma calificada es un nombre-colección seguido de una barra inclinada (/) seguida de un identif icador SQL. La forma no calificada es un identificador SQL. Queda calificada implícit amente de acuerdo con lo siguiente: � Si el parámetro DFTRDB COL está especificado en el mandato CRTSQLx xx, todos los nombres-vista no cali ficados de las sentencias estáticas quedan calificados por el valor especificado para el parámetro. � En todos los demás cas os, la forma no calificada queda impl ícitamente calificada de acuerdo con el con venio para nombres. - Para dar nombres SQL, el nombre-vista está calificado i mplícitamente por el identificador de autorización de la sentencia. - Para dar nombres del sistema, el nombre-vista está implícitamente calificado por la lista de bibliotecas del trabajo (*LIB L). Un nombre-vista puede esp ecificar el nombre de la vista o el nombre de v ista del sistema de la vista. +-------------------------------------------------- ----------------------+ ¦ Tabla 1. Límites de longitud del identificador (e n bytes) ¦ +-------------------------------------------------- ----------------------¦ ¦ Tipo de identificador ¦ Longitud máxima ¦ +------------------------------------------------+- ----------------------¦ ¦ Nombre de autorización ¦ 10 ¦ +------------------------------------------------+- ----------------------¦ ¦ Nombre de correlación ¦ 128 ¦ +------------------------------------------------+- ----------------------¦ ¦ Nombre de cursor ¦ 18 ¦ +------------------------------------------------+- ----------------------¦ ¦ Identificador del lenguaje principal ¦ 64 ¦ +------------------------------------------------+- ----------------------¦ ¦ Nombre de servidor ¦ 18 ¦ +------------------------------------------------+- ----------------------¦ ¦ Nombre de sentencia ¦ 18 ¦ +------------------------------------------------+- ----------------------¦ ¦ Nombre de colección no calificado ¦ 10 ¦ +------------------------------------------------+- ----------------------¦ ¦ Nombre de columna no calificado ¦ 30 ¦ +------------------------------------------------+- ----------------------¦ ¦ Nombre de restricción no calificado ¦ 128 ¦ +------------------------------------------------+- ----------------------¦ ¦ Nombre de programa externo no calificado (10) ¦ 10 ¦ +------------------------------------------------+- ----------------------¦| ¦ Nombre de grupo de nodos no calificado ¦ 10 ¦ +------------------------------------------------+- ----------------------¦ ¦ Nombre de paquete no calificado ¦ 10 ¦ +------------------------------------------------+- ----------------------¦ ¦ Nombre de procedimiento no calificado ¦ 128 ¦ +------------------------------------------------+- ----------------------¦ ¦ Nombre de columna de sistema no calificado ¦ 10 ¦ +------------------------------------------------+- ----------------------¦| ¦ Nombre de objeto del sistema no calificado ¦ 10 ¦ +------------------------------------------------+- ----------------------¦ ¦ Nombre de índice, vista y tabla no calificado ¦ 128 ¦ +-------------------------------------------------- ----------------------+ (10) Para procedimientos REXX, el límite es 33. Subtemas 2.4.1 Nombres SQL y nombres del sistema: consideracione s especiales

DB2/400 Manual de Consulta SQL V3R7 Convenios de denominación

© Copyright IBM Corp. 1995, 1996 2.4 - 5

Page 78: DB2/400 Manual de Consulta SQLmarce.com/docs/systems/manuales/db2_400_manual_consulta_sql_v3r7.pdf · VERSION Nota de Versión Segunda edición (noviembre de 1996) Este manual es

2.4.1 Nombres SQL y nombres del sistema: considera ciones especiales El CL mandato OVRDBF (Alterar Temporalmente Archivo de Base de Datos) puede especificarse para alterar temporalmente un n ombre SQL o del sistema con otro nombre de objeto para sentencias SQL de ma nipulación local de datos. Las alteraciones temporales no se tienen en cuenta en el caso de sentencias SQL de definición de datos y de manipula ción de datos que se ejecuten en una base de datos relacional remota. C onsulte el manual Gestión de datos , SC10-9635 (SC41-4710), para obtener más informaci ón acerca de la función de alteración temporal. Puede tener acceso a las tablas o vistas utilizando nombres SQL o nombres del sistema. Si opta por utilizar nombres SQL, las reglas que rigen son las siguientes: � Si se especifica un nombre calificado, el gestor de bases de datos intenta encontrar el objeto en la colección esp ecificada. � Si se especifica un nombre de objeto no calific ado en una sentencia SQL estática y el parámetro DFTRDBCOL está espe cificado en los mandatos CRTSQLxxx, el gestor de bases de datos intenta encontrar el objeto en la colección especificada en el parám etro DFTRDBCOL. � Si un objeto no está calificado en una sentencia SQL dinámica o estática y el parámetro DFTRDBCOL no está espec ificado en los mandatos CRTSQLxxx, queda calificado implícitamente por el ID de autorización de la sentencia. Dado que el ID de autorizació n puede variar dependiendo del usuario, la mayoría de los nomb res de sintaxis SQL deben estar calificados. Si opta por utilizar nombres del sistema, las regla s que rigen son las siguientes: � Si se especifica un nombre calificado, el gestor de base de datos busca el objeto en la biblioteca especificada. � Si se especifica un nombre de objeto no califica do en una sentencia SQL estática y el parámetro DFTRDBCOL está espe cificado en los mandatos CRTSQLxxx, el gestor de bases de datos intenta encontrar el objeto en la colección especificada en el parám etro DFTRDBCOL. � Si se especifica un nombre de objeto no califica do en una sentencia SQL dinámica o en una estática y no se ha espec ificado el parámetro DFTRDBCOL en los mandatos CRTSQLxxx, se busca e n la lista de bibliotecas (*LIBL).

DB2/400 Manual de Consulta SQL V3R7 Nombres SQL y nombres del sistema: consideraciones especiales

© Copyright IBM Corp. 1995, 1996 2.4.1 - 1

Page 79: DB2/400 Manual de Consulta SQLmarce.com/docs/systems/manuales/db2_400_manual_consulta_sql_v3r7.pdf · VERSION Nota de Versión Segunda edición (noviembre de 1996) Este manual es

2.5 ID de autorización y nombres-autorización Un ID de autorización es una serie de caracteres obtenida a través del gestor de base de datos cuando se establece una con exión entre el gestor de base de datos y un proceso de aplicación o un pr oceso de preparación de programa. Designa a un conjunto de privilegios. T ambién puede designar a un usuario o a un grupo de usuarios, pero el gestor de base de datos no controla esta propiedad. El gestor de base de datos utiliza los ID de autori zación para proporcionar: � Comprobación de autorización de sentencias SQL � Los calificadores implícitos para los nombres de tablas, vistas, restricciones, paquetes e índices. Los ID de autorización se aplican a todas las sente ncias SQL. El ID de autorización que se aplica a una sentencia SQL está tica depende del valor USRPRF que se especifica en el mandato del precompi lador: � Si se especifica USRPRF(*OWNER), o se especifica USRPRF(*NAMING) y se utiliza la modalidad de denominación de SQL, el ID de autorización de la sentencia es el propietario del programa SQL no distribuido. Para programas SQL distribuidos, es el propietario d el paquete SQL. � Si se especifica USRPRF(*USER), o se especifica USRPRF(*NAMING) y se utiliza la modalidad de denominación del sistem a, el ID de autorización de la sentencia es el ID de autori zación del usuario que ejecuta el programa SQL no distribuido. El ID de autorización aplicado a una sentencia SQL dinámica depende de dónde y cómo se ejecuta la sentencia: � Si la sentencia se prepara y se ejecuta desde un programa no distribuido: - Si el valor USRPRF es *USER y el valor DYNU SRPRF es *USER para el programa, el ID de autorización que se apli ca es el ID del usuario que ejecuta el programa no distribuido. A esto se le llama el ID de autorización en tiempo de ejecución . - Si el valor USRPRF es *OWNER y el valor DYN USRPRF es *USER para el programa, el ID de autorización que se apli ca es el ID del usuario que ejecuta el programa no distribuido. - Si el valor USRPRF es *OWNER y el valor DYN USRPRF es *OWNER para el programa, el ID de autorización que se a plica es el ID del propietario del programa no distribuido. � Si la sentencia se prepara y se ejecuta desde un programa distribuido: - Si el valor USRPRF es *USER y el valor DYNU SRPRF es *USER para el paquete SQL, el ID de autorización que se a plica es el ID del usuario que ejecuta el paquete SQL en el se rvidor actual. A esto se le llama también ID de autorización en t iempo de ejecución. - Si el valor USRPRF es *OWNER y el valor DYN USRPRF es *USER para el paquete SQL, el ID de autorización que se a plica es el ID del usuario que ejecuta el paquete SQL en el se rvidor actual. - Si el valor USRPRF es *OWNER y el valor DYN USRPRF es *OWNER para el paquete SQL, el ID de autorización que s e aplica es el ID del propietario del paquete SQL en el servidor actual. � Si la sentencia se emite de forma interactiva, e l ID de autorización que se aplica es el ID del usuario que haya emi tido el mandato STRSQL (Arrancar SQL). � Si la sentencia se ejecuta desde el mandato RUNS QLSTM, el ID de autorización que se aplica es el ID del usuario que ha emitido el mandato RUNSQLSTM. � Si la sentencia se ejecuta desde REXX, el ID de autorización que se aplica es el ID del usuario que ha emitido el m andato STRREXPRC. En OS/400, el ID de autorización en tiempo de ejecu ción es el perfil de usuario del trabajo. No debe confundirse un nombre-autorización especificado en una sentencia SQL con el ID de autorización de la sentencia. Un nombre-autorización es un identificador que se utiliza en las sentencias G RANT y REVOKE para designar el destino de dichas operaciones. La prem isa de un otorgamiento de privilegios X es que X será a partir de entonces el ID de autorización de las sentencias que precisen dichos privilegios. También se puede utilizar un perfil de usuario de grupo al comprobar la autorización de una sentencia SQL. Para obtener información acerca de perfiles de usuario de grupo, consulte el manual Security - Reference , SC41-4302. Subtemas 2.5.1 Ejemplos

DB2/400 Manual de Consulta SQL V3R7 ID de autorización y nombres-autorización

© Copyright IBM Corp. 1995, 1996 2.5 - 1

Page 80: DB2/400 Manual de Consulta SQLmarce.com/docs/systems/manuales/db2_400_manual_consulta_sql_v3r7.pdf · VERSION Nota de Versión Segunda edición (noviembre de 1996) Este manual es

2.5.1 Ejemplos � Supongamos que su ID de usuario es LOPEZ; en este caso, LOPEZ será el ID de autorización cuando ejecute la siguiente sentencia de forma interactiva: GRANT SELECT ON TDEPT TO PEREZ LOPEZ es el ID de autorización de la sentencia. Por tanto, se comprueba si LOPEZ tiene autorización para ejec utar la sentencia; LOPEZ es el calificador implícito de TDEPT. PEREZ es un nombre-autorización especificado en la sentencia. A PEREZ se le otorga el privilegio SELECT en LOPEZ.TDEP T. � Suponga que LOPEZ tiene autorización de administ rador y que es el ID de autorización de las sentencias siguientes: DROP TABLE TDEPT Elimina la tabla LOPEZ.TDEPT. DROP TABLE LOPEZ.TDEPT Elimina la tabla LOPEZ.TDEPT. DROP TABLE PEREZ.TDEPT Elimina la tabla PEREZ.TDEPT.

DB2/400 Manual de Consulta SQL V3R7 Ejemplos

© Copyright IBM Corp. 1995, 1996 2.5.1 - 1

Page 81: DB2/400 Manual de Consulta SQLmarce.com/docs/systems/manuales/db2_400_manual_consulta_sql_v3r7.pdf · VERSION Nota de Versión Segunda edición (noviembre de 1996) Este manual es

2.6 Tipos de datos Si desea información sobre la especificación de los tipos de datos de las columnas, consulte el apartado "CREATE TABLE" en el tema 5.16 . La unidad de datos más pequeña que puede manipulars e en SQL se denomina valor. El modo en que se interpretan los valores depende del tipo de datos de su origen. El origen de los valores puede ser: � Columnas � Constantes � Expresiones � Funciones � Variables del lenguaje principal � Registros especiales La siguiente figura ilustra los diferentes tipos de datos a los que da soporte el programa DB2 para OS/400.

Nulos : Todos los tipos de datos incluyen el valor nulo. El valor nulo es un valor especial distinto de todos los valores no nulos y por esa razón denota la ausencia de un valor (no nulo). Si bien todos los tipos de datos incluyen el valor nulo, las columnas definida s como NOT NULL no pueden contener valores nulos. Subtemas 2.6.1 Series de caracteres 2.6.2 Subtipos de caracteres 2.6.3 Series gráficas 2.6.4 Subtipos gráficos 2.6.5 Números 2.6.6 Valores de fecha y hora

DB2/400 Manual de Consulta SQL V3R7 Tipos de datos

© Copyright IBM Corp. 1995, 1996 2.6 - 1

Page 82: DB2/400 Manual de Consulta SQLmarce.com/docs/systems/manuales/db2_400_manual_consulta_sql_v3r7.pdf · VERSION Nota de Versión Segunda edición (noviembre de 1996) Este manual es

2.6.1 Series de caracteres Una serie de caracteres es una secuencia de bytes. La longitud de la serie es el número de bytes de la secuencia. Si la longitud es cero, el valor se denomina serie vacía . No debe confundirse la serie vacía con el valor nulo. Subtemas 2.6.1.1 Series de caracteres de longitud fija 2.6.1.2 Series de caracteres de longitud variable 2.6.1.3 Variables del lenguaje principal de serie de carac teres

DB2/400 Manual de Consulta SQL V3R7 Series de caracteres

© Copyright IBM Corp. 1995, 1996 2.6.1 - 1

Page 83: DB2/400 Manual de Consulta SQLmarce.com/docs/systems/manuales/db2_400_manual_consulta_sql_v3r7.pdf · VERSION Nota de Versión Segunda edición (noviembre de 1996) Este manual es

2.6.1.1 Series de caracteres de longitud fija Todos los valores de una columna de serie de caract eres de longitud fija tienen la misma longitud. Esta viene determinada p or el atributo de longitud de la columna. El atributo de longitud de be estar comprendido entre 1 y 32766, ambos inclusive.

DB2/400 Manual de Consulta SQL V3R7 Series de caracteres de longitud fija

© Copyright IBM Corp. 1995, 1996 2.6.1.1 - 1

Page 84: DB2/400 Manual de Consulta SQLmarce.com/docs/systems/manuales/db2_400_manual_consulta_sql_v3r7.pdf · VERSION Nota de Versión Segunda edición (noviembre de 1996) Este manual es

2.6.1.2 Series de caracteres de longitud variable Todos los valores de una columna de serie de caract eres de longitud variable tienen la misma longitud máxima, que viene determinada por el atributo de longitud de la columna. El atributo de longitud debe estar comprendido entre 1 y 32740, ambos inclusive.

DB2/400 Manual de Consulta SQL V3R7 Series de caracteres de longitud variable

© Copyright IBM Corp. 1995, 1996 2.6.1.2 - 1

Page 85: DB2/400 Manual de Consulta SQLmarce.com/docs/systems/manuales/db2_400_manual_consulta_sql_v3r7.pdf · VERSION Nota de Versión Segunda edición (noviembre de 1996) Este manual es

2.6.1.3 Variables del lenguaje principal de serie d e caracteres � Las variables de serie de caracteres de longitud fija pueden utilizarse en todos los lenguajes principales, excepto REXX (En C, las variables de serie de caracteres de longitud fi ja están limitadas a una longitud de 1). � Las variables de serie de caracteres de longitud variable pueden utilizarse en C, COBOL, PL/I, REXX y RPG: - En PL/I y REXX existe un tipo de datos de s erie de caracteres de longitud variable. - En COBOL y C las series de caracteres de lo ngitud variable se representan en forma de estructuras. - En C, las variables de serie de caracteres de longitud variable también se pueden representar mediante seri es terminadas en NUL. - En RPG, las variables de serie de caractere s de longitud variable sólo pueden representarse mediante columnas VARCHAR incluidas como resultado de una estructura de datos descri ta externamente.

DB2/400 Manual de Consulta SQL V3R7 Variables del lenguaje principal de serie de caracteres

© Copyright IBM Corp. 1995, 1996 2.6.1.3 - 1

Page 86: DB2/400 Manual de Consulta SQLmarce.com/docs/systems/manuales/db2_400_manual_consulta_sql_v3r7.pdf · VERSION Nota de Versión Segunda edición (noviembre de 1996) Este manual es

2.6.2 Subtipos de caracteres Cada serie de caracteres se define con mayor precis ión como uno de los subtipos siguientes: datos de bit Datos no asociados con ningún juego de caractere s codificados y que no se convierte nu nca. El CCSID correspondiente a los datos de bit e s 65535. datos SBCS Datos en los que cada carácter esta representa do por un solo byte. Cada serie de caracteres de datos SBCS tiene un CCSID asociado. Si es necesario, un a serie de caracteres de datos SBCS se convierte antes de utilizarse en una operación con una serie de caractere s que tenga un CCSSID diferente. datos mixtos Datos que pueden contener una mezcla de caracter es de un juego de caracteres de un solo byte (SBCS) y un juego de caracteres de doble byte (DBCS). Ca da serie de caracteres de datos mixtos tiene un CCSID asoci ado. Si es necesario, una serie de caracteres de datos mix tos se convierte antes de realizarse una operación con una serie de caracteres que tenga un CCSID. Si los datos mixtos contienen un carácter DBCS, no pueden convertirse a datos SBCS. El gestor de bases de datos no reconoce las subclas es de caracteres de doble byte y no asigna ningún significado específic o a ningún código de doble byte en concreto. Sin embargo, si opta por u tilizar datos mixtos, hay dos códigos EBCDIC de un solo byte a los que se les concede un significado especial: � X'0E', el carácter de "desplazamiento a teclado ideográfico", se utiliza para indicar el comienzo de una secuenc ia de códigos de doble byte. � X'0F', el carácter de "desplazamiento a teclado estándar", se utiliza para indicar el final de una secuencia de códig os de doble byte. A fin de que el gestor de bases de datos reconozca caracteres de doble byte en una serie de caracteres de datos mixtos, de be cumplirse la siguiente condición: En la serie, los caracteres de doble byte deben estar encerrados entre parejas de caracteres de desplazamiento a tecla do ideográfico y a teclado estándar. El emparejamiento se detecta a medida que la se rie se lee de izquierda a derecha. El código X'0E' se reconoce como ca rácter de desplazamiento a teclado ideográfico si más ade lante se halla X'0F'; si no es así, no es válido. El primer X'0F' qu e sigue al X'0E' que está en un límite de doble byte es el carácter de desplazamiento a teclado estándar emparejado. Los X'0F' que no estén es un límite de doble byte no se reconocen. El número de bytes entre los caracteres emparej ados debe ser un número par, y cada par de bytes se considera un caráct er de doble byte. En la serie, puede haber más de un juego de pareja s de caracteres de desplazamiento a teclado ideográfico y a teclad o estándar. La longitud de una serie de caracteres de datos mix tos es el número total de bytes, contando dos bytes para cada carácter de doble byte y uno para cada carácter de desplazamiento a teclado ideográfi co o estándar. Cuando el CCSID del trabajo indica que se permite D BCS, CREATE TABLE creará columnas de caracteres como campos de DBCS a bierto, a menos que se especifique FOR BIT DATA, FOR SBCS DATA o un CCSID SBCS. El usuario de SQL las verá como campos de caracteres, pero el sop orte de bases de datos del sistema las verá como campos de DBCS abierto. Para obtener una definición de un campo DBCS abierto, consulte el ma nual DB2/400 Programación de la base de datos , SC10-9634 (SC41-4701).

DB2/400 Manual de Consulta SQL V3R7 Subtipos de caracteres

© Copyright IBM Corp. 1995, 1996 2.6.2 - 1

Page 87: DB2/400 Manual de Consulta SQLmarce.com/docs/systems/manuales/db2_400_manual_consulta_sql_v3r7.pdf · VERSION Nota de Versión Segunda edición (noviembre de 1996) Este manual es

2.6.3 Series gráficas Una serie gráfica es una secuencia de caracteres de dos bytes. La longitud de la serie es el número de bytes de sus c aracteres. Al igual que las series de caracteres, las series gráficas p ueden estar vacías. Subtemas 2.6.3.1 Series gráficas de longitud fija 2.6.3.2 Series gráficas de longitud variable 2.6.3.3 Variables del lenguaje principal de serie gráfica

DB2/400 Manual de Consulta SQL V3R7 Series gráficas

© Copyright IBM Corp. 1995, 1996 2.6.3 - 1

Page 88: DB2/400 Manual de Consulta SQLmarce.com/docs/systems/manuales/db2_400_manual_consulta_sql_v3r7.pdf · VERSION Nota de Versión Segunda edición (noviembre de 1996) Este manual es

2.6.3.1 Series gráficas de longitud fija Todos los valores de una columna de serie gráfica d e longitud fija tienen la misma longitud, que viene determinada por el atr ibuto de longitud de la columna. El atributo de longitud debe estar compre ndido entre 1 y 16383, ambos inclusive.

DB2/400 Manual de Consulta SQL V3R7 Series gráficas de longitud fija

© Copyright IBM Corp. 1995, 1996 2.6.3.1 - 1

Page 89: DB2/400 Manual de Consulta SQLmarce.com/docs/systems/manuales/db2_400_manual_consulta_sql_v3r7.pdf · VERSION Nota de Versión Segunda edición (noviembre de 1996) Este manual es

2.6.3.2 Series gráficas de longitud variable Los valores de una columna de serie gráfica de long itud variable pueden tener longitudes distintas. La longitud máxima vie ne determinada por el atributo de longitud de la columna. El atributo de longitud debe estar comprendido entre 1 y 16370, ambos inclusive.

DB2/400 Manual de Consulta SQL V3R7 Series gráficas de longitud variable

© Copyright IBM Corp. 1995, 1996 2.6.3.2 - 1

Page 90: DB2/400 Manual de Consulta SQLmarce.com/docs/systems/manuales/db2_400_manual_consulta_sql_v3r7.pdf · VERSION Nota de Versión Segunda edición (noviembre de 1996) Este manual es

2.6.3.3 Variables del lenguaje principal de serie g ráfica � Las variables del lenguaje principal de serie gr áfica de longitud fija pueden definirse en C e ILE RPG/400. (En C, la s variables del lenguaje principal de serie gráfica de longitud fija están limitadas a una longitud de 1). Aunque las variables del lenguaje principal de serie gráfica de longitud fija no puedan definirse en PL/I, COBO L ni RPG/400, una variable del lenguaje principal de serie de car acteres se tratará igual que una variable del lenguaje principal d e serie gráfica de longitud fija si se ha generado en el fuente a partir de una columna GRAPHIC de la definición externa de un archivo. � Las variables del lenguaje principal de serie gr áfica de longitud variable pueden definirse en C y REXX. - En REXX existe un tipo de datos de serie gr áfica de longitud variable. - En C las series gráficas de longitud variab le se representan en forma de estructuras. - En C, las variables de serie gráfica de lon gitud variable también se pueden representar mediante series gráfi cas terminadas en NUL. - Aunque las variables del lenguaje principal de serie gráfica de longitud variable no puedan definirse en PL /I, COBOL ni RPG, una variable del lenguaje principal de serie de caracteres se tratará igual que una variable del lenguaje princip al de serie gráfica de longitud variable si se ha generado en el f uente a partir de una columna VARGRAPHIC de la definición externa de un archivo.

DB2/400 Manual de Consulta SQL V3R7 Variables del lenguaje principal de serie gráfica

© Copyright IBM Corp. 1995, 1996 2.6.3.3 - 1

Page 91: DB2/400 Manual de Consulta SQLmarce.com/docs/systems/manuales/db2_400_manual_consulta_sql_v3r7.pdf · VERSION Nota de Versión Segunda edición (noviembre de 1996) Este manual es

2.6.4 Subtipos gráficos Cada serie gráfica se define con mayor precisión co mo datos DBCS o datos UCS-2. datos DBCS Los datos en que se representa cada uno de los caracteres mediante un carácter del juego de ca racteres de doble byte (DBCS) que no incluya los caracteres de desplazamiento a teclado estándar o ideográfico. Cada serie gráfica DBCS tiene un CCS ID que identifica un juego de caracteres codificado de do ble byte. Si es necesario, una serie gráfica DBCS se convierte antes de utilizarse en una operación con una serie gráfica DBCS que tenga un CCSID DBCS diferente. datos UCS-2 Los datos en que se representa cada uno de los caracteres mediante un carácter del juego de ca racteres codificado universal (UCS-2). Cuando las variables del lenguaje principal de seri e gráfica no están identificadas explícitamente con un CCSID, se utili za el CCSID DBCS asociado que corresponde al CCSID del trabajo. Si no existe ningún CCSID DBCS asociado, la variable del lenguaje principal s e identifica por medio de 65535. Una variable del lenguaje principal de s erie gráfica nunca se identifica de forma implícita con un CCSID de UCS-2 . Véase la sentencia DECLARE VARIABLE para obtener información sobre cóm o identificar una variable del lenguaje principal gráfica con un CCSI D.

DB2/400 Manual de Consulta SQL V3R7 Subtipos gráficos

© Copyright IBM Corp. 1995, 1996 2.6.4 - 1

Page 92: DB2/400 Manual de Consulta SQLmarce.com/docs/systems/manuales/db2_400_manual_consulta_sql_v3r7.pdf · VERSION Nota de Versión Segunda edición (noviembre de 1996) Este manual es

2.6.5 Números Todos los números tienen un signo y una precisión. La precisión es el número total de dígitos decimales o binarios, exclu yendo el signo. El signo es positivo si el valor es cero. Subtemas 2.6.5.1 Entero pequeño 2.6.5.2 Entero grande 2.6.5.3 Coma flotante 2.6.5.4 Decimal 2.6.5.5 Variables del lenguaje principal numéricas

DB2/400 Manual de Consulta SQL V3R7 Números

© Copyright IBM Corp. 1995, 1996 2.6.5 - 1

Page 93: DB2/400 Manual de Consulta SQLmarce.com/docs/systems/manuales/db2_400_manual_consulta_sql_v3r7.pdf · VERSION Nota de Versión Segunda edición (noviembre de 1996) Este manual es

2.6.5.1 Entero pequeño Un entero pequeño es un número binario compuesto por 2 bytes (16 bit s). El rango de los enteros pequeños está comprendido e ntre - 32768 y +32767. Para los enteros pequeños, se da soporte a la escal a y precisión decimal mediante los archivos de sistema COBOL, RPG y AS/40 0. Para obtener información relativa a la precisión y la escala de los enteros binarios, consulte el manual DDS Reference , SC41-4712.

DB2/400 Manual de Consulta SQL V3R7 Entero pequeño

© Copyright IBM Corp. 1995, 1996 2.6.5.1 - 1

Page 94: DB2/400 Manual de Consulta SQLmarce.com/docs/systems/manuales/db2_400_manual_consulta_sql_v3r7.pdf · VERSION Nota de Versión Segunda edición (noviembre de 1996) Este manual es

2.6.5.2 Entero grande Un entero grande es un número binario que consta de 4 bytes (32 bit s). El rango de los enteros grandes va de -2147483648 a +2 147483647. Para enteros grandes, la escala y precisión decimal está soportada por los archivos de sistema COBOL, RPG y AS/400. Para obte ner información relativa a la precisión y la escala de los enteros binarios, consulte el manual DDS Reference , SC41-4712.

DB2/400 Manual de Consulta SQL V3R7 Entero grande

© Copyright IBM Corp. 1995, 1996 2.6.5.2 - 1

Page 95: DB2/400 Manual de Consulta SQLmarce.com/docs/systems/manuales/db2_400_manual_consulta_sql_v3r7.pdf · VERSION Nota de Versión Segunda edición (noviembre de 1996) Este manual es

2.6.5.3 Coma flotante Un número de coma flotante de precisión simple es una representación aproximada de 32 bits de un número real. El rango de la magnitud oscila aproximadamente entre 1,17549436 ×10(-38) y 3,40282 356 ×10(38) Un número de coma flotante de precisión doble es una representación aproximada de 64 bits IEEE de un número real. El r ango de la magnitud oscila aproximadamente entre 2,2250738585072014 × 1 0(-308) y 1,7976931348623158 × 10(308).

DB2/400 Manual de Consulta SQL V3R7 Coma flotante

© Copyright IBM Corp. 1995, 1996 2.6.5.3 - 1

Page 96: DB2/400 Manual de Consulta SQLmarce.com/docs/systems/manuales/db2_400_manual_consulta_sql_v3r7.pdf · VERSION Nota de Versión Segunda edición (noviembre de 1996) Este manual es

2.6.5.4 Decimal Un valor decimal es un número decimal empaquetado o decimal con zon a con una coma decimal implícita. La posición de la coma decimal viene determinada por la precisión y la escala del número . La escala, o sea el número de dígitos de la parte fraccionaria del núme ro, no puede ser negativa o mayor que la precisión. La precisión má xima es 31 dígitos. Todos los valores de una columna decimal tienen la misma precisión y escala. El rango de una variable decimal o los núm eros de una columna decimal es de n a + n, donde el valor absoluto de n es el número más grande que se puede representar con la precisión y escala aplicables. El rango máximo va de 10(31) negativo+1 a 10(31) menos 1.

DB2/400 Manual de Consulta SQL V3R7 Decimal

© Copyright IBM Corp. 1995, 1996 2.6.5.4 - 1

Page 97: DB2/400 Manual de Consulta SQLmarce.com/docs/systems/manuales/db2_400_manual_consulta_sql_v3r7.pdf · VERSION Nota de Versión Segunda edición (noviembre de 1996) Este manual es

2.6.5.5 Variables del lenguaje principal numéricas Las variables de enteros binarios pueden utilizarse en todos los lenguajes principales. Las variables de coma flotante pueden utilizarse en todos los lenguajes principales excepto en RPG y COBOL. Las variables decimales se pueden utilizar en todos los lenguajes principal es a los que se da soporte.

DB2/400 Manual de Consulta SQL V3R7 Variables del lenguaje principal numéricas

© Copyright IBM Corp. 1995, 1996 2.6.5.5 - 1

Page 98: DB2/400 Manual de Consulta SQLmarce.com/docs/systems/manuales/db2_400_manual_consulta_sql_v3r7.pdf · VERSION Nota de Versión Segunda edición (noviembre de 1996) Este manual es

2.6.6 Valores de fecha y hora En los siguientes apartados se describen los tipos de datos de fecha y hora. Aunque los valores de fecha y hora pueden ut ilizarse en ciertas operaciones aritméticas y de serie y son compatible s con ciertas series, no son ni series ni números. Sin embargo, las seri es pueden representar valores de fecha y hora; consulte el apartado "Representaciones de serie de los valores de fecha y hora" en el tema 2.6.6.4 . Subtemas 2.6.6.1 Fecha 2.6.6.2 Hora 2.6.6.3 Indicación de la hora 2.6.6.4 Representaciones de serie de los valores de fecha y hora

DB2/400 Manual de Consulta SQL V3R7 Valores de fecha y hora

© Copyright IBM Corp. 1995, 1996 2.6.6 - 1

Page 99: DB2/400 Manual de Consulta SQLmarce.com/docs/systems/manuales/db2_400_manual_consulta_sql_v3r7.pdf · VERSION Nota de Versión Segunda edición (noviembre de 1996) Este manual es

2.6.6.1 Fecha Una fecha es un valor que consta de tres partes (día, mes y año) que designa un punto temporal del calendario gregoriano , el cual se supone en vigor desde el año 1 d.C. (11) . El rango válido para los años está comprendido entre 0001 y 9999. Los formatos de fec ha *JUL, *MDY, *DMY e *YMD sólo pueden representar fechas comprendidas en el rango que va de 1940 a 2039. El rango para los meses es de 1 a 12. El rango para los días es de 1 a x, donde x es 28, 29, 30 ó 31, según el mes y el año. La representación interna de una fecha es una serie de 4 bytes que contiene un entero. El entero (llamado número Scal iger) representa la fecha. La longitud de una columna DATE, tal como se descri be en la SQLDA, es de 6, 8 ó 10 bytes, según el formato utilizado. Estas longitudes son las adecuadas para representar el valor con una serie d e caracteres. (11) Tenga presente que las fechas históricas no s iempre se corresponden con el calendario gregoriano. Las fechas entre el 04-10-1582 y el 15-10-1582 se consideran vál idas, si bien nunca han existido en el calendario Gregoriano.

DB2/400 Manual de Consulta SQL V3R7 Fecha

© Copyright IBM Corp. 1995, 1996 2.6.6.1 - 1

Page 100: DB2/400 Manual de Consulta SQLmarce.com/docs/systems/manuales/db2_400_manual_consulta_sql_v3r7.pdf · VERSION Nota de Versión Segunda edición (noviembre de 1996) Este manual es

2.6.6.2 Hora Una hora es un valor que consta de tres partes (hora, minut os y segundos) que designa una hora del día utilizando un formato horario de 24 horas. El rango de las horas está comprendido entre 0 y 24 , mientras que el de los minutos y segundos es de 0 a 59. Si la hora es 24, las especificaciones de minutos y segundos son cero. La representación interna de una hora es una serie de 3 bytes. Cada byte consta de dos dígitos decimales empaquetados. El p rimer byte representa las horas, el segundo los minutos y el tercero y úl timo los segundos. La longitud de una columna TIME, tal como se descri be en la SQLDA, es de 8 bytes, que es la longitud adecuada para representar el valor con una serie de caracteres.

DB2/400 Manual de Consulta SQL V3R7 Hora

© Copyright IBM Corp. 1995, 1996 2.6.6.2 - 1

Page 101: DB2/400 Manual de Consulta SQLmarce.com/docs/systems/manuales/db2_400_manual_consulta_sql_v3r7.pdf · VERSION Nota de Versión Segunda edición (noviembre de 1996) Este manual es

2.6.6.3 Indicación de la hora Una indicación de la hora es un valor que consta de siete partes (día, mes, año, hora, minutos, segundos y microsegundos) que designa a una fecha y hora tal como se ha descrito anteriormente; la ún ica excepción es que la hora incluye la especificación fraccionaria de micr osegundos. La representación interna de una indicación de la h ora es una serie de 10 bytes. Los 4 primeros bytes representan la fecha, los 3 siguientes la hora y los 3 últimos los microsegundos (los tres úl timos bytes contienen 6 dígitos empaquetados). La longitud de una columna TIMESTAMP, tal como se d escribe en la SQLDA es de 26 bytes, que es la longitud adecuada para repre sentar el valor con una serie de caracteres.

DB2/400 Manual de Consulta SQL V3R7 Indicación de la hora

© Copyright IBM Corp. 1995, 1996 2.6.6.3 - 1

Page 102: DB2/400 Manual de Consulta SQLmarce.com/docs/systems/manuales/db2_400_manual_consulta_sql_v3r7.pdf · VERSION Nota de Versión Segunda edición (noviembre de 1996) Este manual es

2.6.6.4 Representaciones de serie de los valores de fecha y hora Los valores cuyo tipo de datos son DATE, TIME, o TI MESTAMP se representan en una forma interna transparente para el usuario d e SQL. Sin embargo, las fechas, horas e indicaciones de la hora también se pueden representar mediante series de caracteres. Estas representacio nes conciernen directamente al usuario de SQL ya que no existen co nstantes ni variables cuyos tipos de datos sean DATE, TIME o TIMESTAMP. Por tanto, para poderlos recuperar, los valores de fecha y hora deb erán estar asignados a una variable de serie de caracteres, excepto en ILE RPG/400. ILE RPG/400 da soporte a los tipos de datos de fecha y hora. E l formato de la serie resultante dependerá de los parámetros formato de f echa (DATFMT), separador de fecha (DATSEP), formato de hora (TIMFM T) y separador de hora (TIMSEP), vigentes durante la preparación de la sen tencia. Cuando se utiliza una representación de serie válid a para un valor de fecha y hora en una operación con valor interno de fecha y hora, la representación de la serie se convierte al formato interno de la fecha, hora o indicación de la hora antes de llevarse a ca bo la operación. Si el CCSID de la serie representa un esquema de codifica ción foráneo (por ejemplo ASCII), primero se convierte al juego de ca racteres codificados que se identifica mediante el CCSID por omisión ant es de que la serie se convierta al formato interno del valor de fecha y h ora. En los apartados siguientes se definen las represen taciones de serie válidas para los valores de fecha y hora. Series de fecha : Una representación de serie de una fecha es una serie de caracteres que empieza con un dígito y tiene una lo ngitud mínima de 6 caracteres. Dicha serie puede incluir blancos fina les. Se pueden omitir los ceros iniciales de las partes del mes y el día cuando se utilizan los formatos estándar SQL de IBM. Cada formato estánda r SQL de IBM está identificado por su nombre e incluye una abreviatur a asociada (para su utilización en la función CHAR). Los demás formato s carecen de dicha abreviatura. Los separadores de los formatos de añ os de dos dígitos los controla el parámetro de separador de fecha (DATSEP ). En la Tabla 2 están listados los formatos de serie válidos para fechas. El gestor de bases de datos reconocerá como fecha a una serie cuando ésta tenga: � El formato especificado por los parámetros de fo rmato de fecha (DATFMT) y de separador de fecha (DATSEP), � Uno de los formatos de fecha estándar SQL de IBM , o � El formato juliano sin formatear Los parámetros DATFMT y DATSEP se especifican en lo s mandatos CRTSQLxxx, RUNSQLSTM y STRSQL. Para REXX, se especifican en l a sentencia SET OPTION. +-------------------------------------------------- ----------------------+ ¦ Tabla 2. Formatos para las representaciones de se rie de las fechas ¦ +-------------------------------------------------- ----------------------¦ ¦ Nombre del formato ¦ Abreviatura ¦ Formato de ¦ Ejemplo ¦ ¦ ¦ ¦ fecha ¦ ¦ +------------------------------+-------------+----- ---------+------------¦ ¦ Organización Internacional ¦ ISO ¦ aaaa -mm-dd ¦ 1987-10-12 ¦ ¦ de Estándares (*ISO) ¦ ¦ ¦ ¦ +------------------------------+-------------+----- ---------+------------¦ ¦ Estándar estadounidense de ¦ USA ¦ mm/d d/aaaa ¦ 10/12/1987 ¦ ¦ IBM (*USA) ¦ ¦ ¦ ¦ +------------------------------+-------------+----- ---------+------------¦ ¦ Estándar europeo de IBM ¦ EUR ¦ dd.m m.aaaa ¦ 12.10.1987 ¦ ¦ (*EUR) ¦ ¦ ¦ ¦ +------------------------------+-------------+----- ---------+------------¦ ¦ Estándar industrial japonés, ¦ JIS ¦ aaaa -mm-dd ¦ 1987-10-12 ¦ ¦ era Cristiana (*JIS) ¦ ¦ ¦ ¦ +------------------------------+-------------+----- ---------+------------¦ ¦ Juliano sin formatear ¦ - ¦ aaaa ddd ¦ 1987285 ¦ +------------------------------+-------------+----- ---------+------------¦ ¦ Juliano (*JUL) ¦ - ¦ aa/d dd ¦ 87/285 ¦ +------------------------------+-------------+----- ---------+------------¦ ¦ Mes, día, año (*MDY) ¦ - ¦ mm/d d/aa ¦ 10/12/87 ¦ +------------------------------+-------------+----- ---------+------------¦ ¦ Día, mes, año (*DMY) ¦ - ¦ dd/m m/aa ¦ 12/10/87 ¦ +------------------------------+-------------+----- ---------+------------¦ ¦ Año, mes, día (*YMD) ¦ - ¦ aa/m m/dd ¦ 87/12/10 ¦ +-------------------------------------------------- ----------------------+ Series de hora : Una representación de serie de una hora es una s erie de caracteres que empieza con un dígito y que tiene un a longitud mínima de 4 caracteres. Pueden incluirse blancos iniciales; se puede omitir un cero inicial en la parte de las horas y los segundos pue den omitirse por completo. Si opta por omitir los segundos, se supo ne una especificación implícita de 0 segundos. Así pues, 13.30 equivale a 13.30.00. En la Tabla 3 están listados los formatos de serie válidos para la hora. Cada formato estándar SQL de IBM está identificado por su nombre e incluye una abreviatura asociada (para su utilización en la función CHAR). El formato restante (*HMS) no tiene ninguna abreviatur a que pueda utilizar la función CHAR. El separador correspondiente al form ato *HMS lo controla el parámetro de separador de hora (TIMSEP). El gestor de bases de datos reconocerá como hora a una serie cuando ésta tenga:

DB2/400 Manual de Consulta SQL V3R7 Representaciones de serie de los valores de fecha y hora

© Copyright IBM Corp. 1995, 1996 2.6.6.4 - 1

Page 103: DB2/400 Manual de Consulta SQLmarce.com/docs/systems/manuales/db2_400_manual_consulta_sql_v3r7.pdf · VERSION Nota de Versión Segunda edición (noviembre de 1996) Este manual es

� El formato especificado por los parámetros de fo rmato de hora (TIMFMT) y de separador de hora (TIMSEP), o � Uno de los formatos de hora estándar SQL de IBM Los parámetros TIMFMT y TIMSEP se especifican en lo s mandatos CRTSQLxxx, RUNSQLSTM y STRSQL. Para REXX, se especifican en l a sentencia SET OPTION. +-------------------------------------------------- ----------------------+ ¦ Tabla 3. Formatos para las representaciones de se rie de la hora ¦ +-------------------------------------------------- ----------------------¦ ¦ Nombre del formato ¦ Abreviatura ¦ Formato de ¦ Ejemplo ¦ ¦ ¦ ¦ hora ¦ ¦ +------------------------------+-------------+----- ---------+------------¦ ¦ Organización Internacional ¦ ISO ¦ hh.m m.ss ¦ 13.30.05 ¦ ¦ de Estándares (*ISO) ¦ ¦ (12) ¦ ¦ +------------------------------+-------------+----- ---------+------------¦ ¦ Estándar estadounidense de ¦ USA ¦ hh:m m AM o ¦ 1:30 PM ¦ ¦ IBM (*USA) ¦ ¦ PM ¦ ¦ +------------------------------+-------------+----- ---------+------------¦ ¦ Estándar europeo de IBM ¦ EUR ¦ hh.m m.ss ¦ 13.30.05 ¦ ¦ (*EUR) ¦ ¦ ¦ ¦ +------------------------------+-------------+----- ---------+------------¦ ¦ Estándar industrial japonés, ¦ JIS ¦ hh:m m:ss ¦ 13:30:05 ¦ ¦ era Cristiana (*JIS) ¦ ¦ ¦ ¦ +------------------------------+-------------+----- ---------+------------¦ ¦ Horas, minutos, segundos ¦ - ¦ hh:m m:ss ¦ 13:30:05 ¦ ¦ (*HMS) ¦ ¦ ¦ ¦ +-------------------------------------------------- ----------------------+ En el formato de hora USA, las horas no deben ser m ayores que 12 y no pueden ser 0 excepto en un caso especial, 00:00 AM. Si se utiliza un reloj de 24 horas, la correspondencia entre éste y el formato USA es la siguiente: Formato USA Reloj de 24 horas 12:01 AM hasta 12:59 AM 00.01.00 hasta 0 0.59.00 01:00 AM hasta 11:59 AM 01.00.00 hasta 1 1.59.00 12:00 PM (mediodía) hasta 11:59 PM 12.00.00 hasta 2 3.59.00 12:00 AM (medianoche) 24.00.00 00:00 AM (medianoche) 00.00.00 En el formato USA existe un carácter de espacio ent re la parte de los minutos de la hora del día y las siglas AM o PM. Series de indicación de la hora : Una representación de serie de una indicación de la hora es una serie de caracteres qu e empieza por un dígito y que tiene una longitud de al menos 16 caracteres. La representación de serie completa de una indicación de la hora tiene l a forma aaaa-mm-dd-hh.mm.ss.nnnnnn o aaaammddhhmmss. Dicha serie puede incluir blancos finales. Se pueden omitir los ceros inicia les en la parte del mes, día y hora de la indicación de la hora si se u tiliza el formato de indicación de la hora con separadores. Los ceros f inales se pueden truncar u omitir totalmente de los microsegundos. Si decide omitir cualquier dígito de la parte de los microsegundos, se entenderá como una especificación implícita de 0. Así pues, 1990-3-2-8.30.00.10 equivale a 1990-03-02-08.30.00.100000 . También se aceptan las indicaciones de la hora del tipo 24.00.00.000000. (12) Se trata de una versión anterior del formato ISO. Se puede utilizar JIS para obtener el formato ISO actual .

DB2/400 Manual de Consulta SQL V3R7 Representaciones de serie de los valores de fecha y hora

© Copyright IBM Corp. 1995, 1996 2.6.6.4 - 2

Page 104: DB2/400 Manual de Consulta SQLmarce.com/docs/systems/manuales/db2_400_manual_consulta_sql_v3r7.pdf · VERSION Nota de Versión Segunda edición (noviembre de 1996) Este manual es

2.7 Asignaciones y comparaciones Las operaciones básicas de SQL son asignación y com paración. Las operaciones de asignación se realizan durante la ej ecución de las sentencias CALL, INSERT, UPDATE, FETCH y SELECT INT O. Las operaciones de comparación se realizan durante la ejecución de sen tencias que incluyan predicados y otros elementos del lenguaje, tales co mo MAX, MIN, DISTINCT, GROUP BY y ORDER BY. La regla básica de ambas operaciones es que el tipo de datos de los operandos que intervienen debe ser compatible. La regla de compatibilidad también rige para UNION, concatenación y las funcio nes escalares CONCAT, VALUE, COALESCE, IFNULL, MIN y MAX. La matriz de c ompatibilidad es la siguiente: +-------------------------------------------------- --------------------------------------------------- ----------------------+ ¦ ¦ Entero ¦ Número ¦ ¦ Serie de ¦ Serie ¦ ¦ ¦ Indicación ¦ ¦ Operandos ¦ binario ¦ decimal** ¦ Coma flotante ¦ caracteres ¦ gráfica ¦ Fecha ¦ Hora ¦ de la hora ¦ +-----------------+-----------+-----------+-------- ---------+------------+-----------+-----------+---- --------+-------------¦ ¦ Entero binario ¦ Sí ¦ Sí ¦ Sí ¦ No ¦ No ¦ No ¦ No ¦ No ¦ +-----------------+-----------+-----------+-------- ---------+------------+-----------+-----------+---- --------+-------------¦ ¦ Número decimal ¦ Sí ¦ Sí ¦ Sí ¦ No ¦ No ¦ No ¦ No ¦ No ¦ +-----------------+-----------+-----------+-------- ---------+------------+-----------+-----------+---- --------+-------------¦ ¦ Coma flotante ¦ Sí ¦ Sí ¦ Sí ¦ No ¦ No ¦ No ¦ No ¦ No ¦ +-----------------+-----------+-----------+-------- ---------+------------+-----------+-----------+---- --------+-------------¦ ¦ Serie de ¦ No ¦ No ¦ No ¦ Sí ¦ No ¦ * ¦ * ¦ * ¦ ¦ caracteres ¦ ¦ ¦ ¦ ¦ ¦ ¦ ¦ ¦ +-----------------+-----------+-----------+-------- ---------+------------+-----------+-----------+---- --------+-------------¦ ¦ Serie gráfica ¦ No ¦ No ¦ No ¦ No ¦ Sí ¦ No ¦ No ¦ No ¦ +-----------------+-----------+-----------+-------- ---------+------------+-----------+-----------+---- --------+-------------¦ ¦ Fecha ¦ No ¦ No ¦ No ¦ * ¦ No ¦ Sí ¦ No ¦ No ¦ +-----------------+-----------+-----------+-------- ---------+------------+-----------+-----------+---- --------+-------------¦ ¦ Hora ¦ No ¦ No ¦ No ¦ * ¦ No ¦ No ¦ Sí ¦ No ¦ +-----------------+-----------+-----------+-------- ---------+------------+-----------+-----------+---- --------+-------------¦ ¦ Indicación de ¦ No ¦ No ¦ No ¦ * ¦ No ¦ No ¦ No ¦ Sí ¦ ¦ la hora ¦ ¦ ¦ ¦ ¦ ¦ ¦ ¦ ¦ +-------------------------------------------------- --------------------------------------------------- ----------------------¦| ¦ Notas: ¦ ¦ ¦| �¦ Los valores de fecha y hora se pueden asignar a columnas y variables de series de caracteres, tal y como se explica ¦| ¦ en el apartado "Asignaciones de fecha y hora" en el tema 2.7.4 . ¦ ¦ ¦| �¦ Una representación de serie válida de una fech a se puede asignar a una columna de fecha, comparar se con una fecha o ¦| ¦ utilizarse en una función escalar VALUE, COAL ESCE, IFNULL, MIN o MAX con una fecha. ¦ ¦ ¦| �¦ Una representación de serie válida de una hora se puede asignar a una columna de hora, compararse con una hora o ¦| ¦ utilizarse en una función escalar VALUE, COAL ESCE, IFNULL, MIN o MAX con una hora. ¦ ¦ ¦| �¦ Una representación de serie válida de una indi cación de la hora se puede asignar a una columna de indicación de la ¦| ¦ hora, compararse con una indicación de la hor a o utilizarse en una función escalar VALUE, COALES CE, IFNULL, MIN o MAX ¦| ¦ con una indicación de la hora. ¦ ¦ ¦ ¦ * La compatibilidad de los valores de fecha y hor a con las series de caracteres está limitada a las operaciones de ¦ ¦ asignación y comparación, y a las funciones escal ares VALUE, COALESCE, IFNULL, MIN y MAX. ¦ ¦ ¦ ¦ ** Decimal se refiere tanto a los decimales empaq uetados como a los decimales con zona. ¦ +-------------------------------------------------- --------------------------------------------------- ----------------------+ Una regla básica para las operaciones de asignación es que un valor nulo no puede asignarse a una columna que no pueda conte ner valores nulos ni a una variable del lenguaje principal que no tenga un a variable de indicador asociada. Véase el apartado "Referencias a variables del lenguaje principal" en el tema 2.11 para obtener información sobre las variables de indicador. Subtemas 2.7.1 Asignaciones numéricas 2.7.2 Asignaciones de serie 2.7.3 Reglas de conversión para asignaciones 2.7.4 Asignaciones de fecha y hora 2.7.5 Comparaciones numéricas 2.7.6 Comparaciones de serie 2.7.7 Reglas de conversión para comparación 2.7.8 Comparaciones de fecha y hora

DB2/400 Manual de Consulta SQL V3R7 Asignaciones y comparaciones

© Copyright IBM Corp. 1995, 1996 2.7 - 1

Page 105: DB2/400 Manual de Consulta SQLmarce.com/docs/systems/manuales/db2_400_manual_consulta_sql_v3r7.pdf · VERSION Nota de Versión Segunda edición (noviembre de 1996) Este manual es

2.7.1 Asignaciones numéricas La regla básica de las asignaciones numéricas es qu e la parte entera de un número decimal o entero no puede truncarse. Si es necesario, se trunca la parte fraccionaria de los números decimales. En el caso de la asignación a una variable del lenguaje principal, puede devolv erse un valor positivo en el SQLCODE. Se producirá un error si: � El truncamiento de la parte entera del número se produce en la asignación a una columna. � El truncamiento de la parte entera del número se produce en la asignación a una variable del lenguaje principa l que no tenga ninguna variable de indicador Se producirá un aviso si: El truncamiento de la parte entera del número s e produce en la asignación a una variable del lenguaje principa l con una variable de indicador. En este caso, el número no se asign a a la variable del lenguaje principal y la variable de indicador s e establece en 2 negativo. Nota: Decimal se refiere tanto a los decimales empaquet ados como a los decimales con zona. | Nota: Al tomar datos decimales de un archivo que no se creó mediante una| sentencia CREATE TABLE de SQL, un campo decimal pue de contener datos no| válidos. En este caso se devolverán y se almacenar án los datos, sin que| se emita ningún mensaje de aviso o error. Una tabl a creada por la| sentencia CREATE TABLE de SQL no permite datos deci males no válidos. Subtemas 2.7.1.1 De decimal o entero a coma flotante 2.7.1.2 De coma flotante o decimal a entero 2.7.1.3 De decimal a decimal 2.7.1.4 De entero a decimal 2.7.1.5 De coma flotante a decimal 2.7.1.6 A enteros COBOL y RPG

DB2/400 Manual de Consulta SQL V3R7 Asignaciones numéricas

© Copyright IBM Corp. 1995, 1996 2.7.1 - 1

Page 106: DB2/400 Manual de Consulta SQLmarce.com/docs/systems/manuales/db2_400_manual_consulta_sql_v3r7.pdf · VERSION Nota de Versión Segunda edición (noviembre de 1996) Este manual es

2.7.1.1 De decimal o entero a coma flotante Los números con coma flotante son aproximaciones de números reales. De aquí que, cuando un número decimal o entero se asig na a una columna o a una variable de coma flotante, el resultado puede s er diferente del número original. La aproximación es más precisa si la columna o vari able receptoras están definidas como de precisión doble (64 bits) en luga r de precisión simple (32 bits).

DB2/400 Manual de Consulta SQL V3R7 De decimal o entero a coma flotante

© Copyright IBM Corp. 1995, 1996 2.7.1.1 - 1

Page 107: DB2/400 Manual de Consulta SQLmarce.com/docs/systems/manuales/db2_400_manual_consulta_sql_v3r7.pdf · VERSION Nota de Versión Segunda edición (noviembre de 1996) Este manual es

2.7.1.2 De coma flotante o decimal a entero Cuando un número decimal o de coma flotante se asig na a una columna o variable de enteros binarios, el número se conviert e, si es necesario, a la precisión y escala del elemento destino. Si la escala del elemento destino es cero, la parte fraccionaria del número s e perderá. Se añadirá o eliminará el número necesario de ceros iniciales y, en la parte fraccionaria del número, se añadirán los ceros fina les que sean necesarios o bien se eliminará el número necesario de dígitos finales.

DB2/400 Manual de Consulta SQL V3R7 De coma flotante o decimal a entero

© Copyright IBM Corp. 1995, 1996 2.7.1.2 - 1

Page 108: DB2/400 Manual de Consulta SQLmarce.com/docs/systems/manuales/db2_400_manual_consulta_sql_v3r7.pdf · VERSION Nota de Versión Segunda edición (noviembre de 1996) Este manual es

2.7.1.3 De decimal a decimal Cuando se asigna un número decimal a una columna o variable decimal, el número se convierte, si es necesario, a la precisió n y escala del elemento destino. Se añadirá o eliminará el número necesari o de ceros iniciales y, en la parte fraccionaria del número, se añadirán lo s ceros finales que sean necesarios o bien se eliminará el número neces ario de dígitos finales.

DB2/400 Manual de Consulta SQL V3R7 De decimal a decimal

© Copyright IBM Corp. 1995, 1996 2.7.1.3 - 1

Page 109: DB2/400 Manual de Consulta SQLmarce.com/docs/systems/manuales/db2_400_manual_consulta_sql_v3r7.pdf · VERSION Nota de Versión Segunda edición (noviembre de 1996) Este manual es

2.7.1.4 De entero a decimal Cuando se asigna un entero a una columna o variable decimal, el número se convierte primero a un número decimal temporal y a continuación, si es necesario, a la precisión y escala del elemento des tino. Si la escala del entero es cero, la precisión del número decimal tem poral es 5.0 para un entero pequeño o 11.0 para un entero grande.

DB2/400 Manual de Consulta SQL V3R7 De entero a decimal

© Copyright IBM Corp. 1995, 1996 2.7.1.4 - 1

Page 110: DB2/400 Manual de Consulta SQLmarce.com/docs/systems/manuales/db2_400_manual_consulta_sql_v3r7.pdf · VERSION Nota de Versión Segunda edición (noviembre de 1996) Este manual es

2.7.1.5 De coma flotante a decimal Cuando se asigna un número de coma flotante a una c olumna o variable decimal, primero se convierte el número a un número decimal temporal de precisión 31 y, a continuación, si es necesario, se trunca a la precisión y la escala del elemento destino. En esta conversi ón, el número se redondea (utilizando la aritmética de coma flotante ) a una precisión de 31 dígitos decimales. Como resultado, los números men ores de 0,5*10(+31) se reducen a 0. La escala recibe el mayor valor posib le que permita la representación de la parte entera del número sin pé rdida de significado.

DB2/400 Manual de Consulta SQL V3R7 De coma flotante a decimal

© Copyright IBM Corp. 1995, 1996 2.7.1.5 - 1

Page 111: DB2/400 Manual de Consulta SQLmarce.com/docs/systems/manuales/db2_400_manual_consulta_sql_v3r7.pdf · VERSION Nota de Versión Segunda edición (noviembre de 1996) Este manual es

2.7.1.6 A enteros COBOL y RPG La asignación a variables del lenguaje principal de entero COBOL y RPG toma en consideración cualquier escala especificada para la variable del lenguaje principal. Sin embargo, las variables del lenguaje principal utilizarán el tamaño completo del entero. Por tant o, el valor colocado en el dato COBOL o el campo RPG puede ser mayor que la precisión máxima especificada para la variable del lenguaje principa l. En COBOL, por ejemplo, si COL1 contiene un valor de 12345, las sentencias: 01 A PIC S9999 BINARY. EXEC SQL SELECT COL1 INTO :A FROM TABLAX END+EXEC. tienen como resultado que el valor 12345 se sitúe e n A, aunque A se haya definido con sólo 4 dígitos. Observe que la sentencia COBOL siguiente: MOVE 12345 TO A. da como resultado que se coloque 2345 en A.

DB2/400 Manual de Consulta SQL V3R7 A enteros COBOL y RPG

© Copyright IBM Corp. 1995, 1996 2.7.1.6 - 1

Page 112: DB2/400 Manual de Consulta SQLmarce.com/docs/systems/manuales/db2_400_manual_consulta_sql_v3r7.pdf · VERSION Nota de Versión Segunda edición (noviembre de 1996) Este manual es

2.7.2 Asignaciones de serie La regla básica para las asignaciones de series es que la longitud de una serie asignada a una columna no debe ser superior a l atributo de longitud de la columna. (Los blancos de cola se suelen incl uir en la longitud de la serie. No obstante, para asignaciones de serie los blancos de cola no se incluyen en la longitud de la serie). Cuando se asigna una serie a una columna o variable del lenguaje principal de serie de longitud fija y la longitud de la serie es menor que el atributo de longitud del elemento destino, se relle na la serie por la derecha con el número de blancos de un sólo byte, d oble byte o UCS-2 necesarios. (13) El carácter de relleno siempre es un blanco, inclu so para datos de bits. Cuando se asigna una serie de longitud n a una variable C de serie de caracteres terminada en NUL con una longitud mayor que n+1 : � Si se ha especificado la opción *CNULRQD en el m andato CRTSQLCI, se rellena la serie por la derecha con x-n-1 blanc os, donde x es la longitud de la variable. La serie rellena se a signa entonces a la variable y el terminador NUL se coloca en la si guiente posición de carácter. � Si se ha especificado la opción de precompilador *NOCNULRQD en el mandato CRTSQLCI, no se rellena la serie por la derecha. La serie se asigna a la variable y el terminador NUL se col oca en la siguiente posición de carácter. Cuando se asigna una serie de longitud n a una variable de serie de longitud variable con una longitud máxima mayor que n, los caracteres que siguen al carácter enésimo de la variable son indefinidos. Cuando se asigna una serie a una variable y la seri e es más larga que el atributo de longitud de la variable, se trunca la s erie por la derecha y se elimina el número de caracteres que sea necesari o. Cuando esto sucede, se asigna el valor 'W' al campo SQLWARN1 de la SQLC A. Además de esto, si se da una variable de indicador, ésta queda estable cida con la longitud original de la serie. Si sólo se trunca el termina dor NUL para una variable del lenguaje principal C terminada en NUL y se ha especificado la opción *NOCNULRQD en el mandato CRTSQLCI, se asigna el valor de 'N' al campo SQLWARN1 de la SQLCA y no se coloca ningún NU L en la variable. Cuando se asigna una serie a una columna y la serie es más larga que el atributo de longitud de la columna, se devuelve un SQLCODE negativo. Para obtener una descripción de la SQLCA, véase el Apéndice B, "Área de comunicaciones SQL" en el tema B.0 . Las reglas anteriores se aplican cuando tanto el el emento origen como el destino son series. Si interviene un tipo de datos de fecha y hora, véase el apartado "Asignaciones de fecha y hora" en el tema 2.7.4 . Si la serie contiene datos mixtos , es posible que las reglas de asignación requieran un truncamiento dentro de una secuencia d e códigos de doble byte. Para evitar la pérdida del carácter de despl azamiento a teclado estándar que finaliza la secuencia de doble byte, e s posible que se trunquen más caracteres a partir del final de la se rie y que se añada un carácter de desplazamiento a teclado estándar. En el resultado truncado hay siempre un número par de bytes entre cada carác ter de desplazamiento a teclado ideográfico y su carácter de desplazamiento a teclado estándar emparejado. Los tipos de datos carácter, sólo DBCS, DBCS abiert o y DBCS cualquiera no son compatibles con los tipos gráficos DBCS para as ignación. Los tipos de datos carácter, sólo DBCS, DBCS abierto, DBCS cualq uiera y los tipos gráficos DBCS son compatibles con columnas gráficas UCS-2 para asignación. (13) UCS-2 define un carácter en blanco en el elem ento de código X'0020' y X'3000'. El gestor de bases de datos rellena con el blanco en el elemento de código X'0020'.

DB2/400 Manual de Consulta SQL V3R7 Asignaciones de serie

© Copyright IBM Corp. 1995, 1996 2.7.2 - 1

Page 113: DB2/400 Manual de Consulta SQLmarce.com/docs/systems/manuales/db2_400_manual_consulta_sql_v3r7.pdf · VERSION Nota de Versión Segunda edición (noviembre de 1996) Este manual es

2.7.3 Reglas de conversión para asignaciones Una serie asignada a una columna o variable del len guaje principal se convierte primero, si es necesario, al juego de car acteres codificados del elemento destino. La conversión de caracteres sólo es necesaria si se cumplen todas las condiciones siguientes: � Los CCSID son diferentes. � Ninguno de los CCSID es 65535. � La serie no es nula ni está vacía. � La tabla para la selección de conversiones CCSID indica que es necesaria la conversión. Se producirá un error si: � Se utiliza la tabla para la selección de convers iones CCSID pero ésta no contiene ninguna información sobre el par de CCSID. � No puede convertirse un carácter de la serie y l a operación es una asignación a una columna o una asignación a una variable del lenguaje principal sin una variable de indicador. Por ej emplo, un carácter de doble byte (DBCS) no puede convertirse a una co lumna o variable del lenguaje principal con un CCSID de caracteres d e un solo byte (SBCS). Se producirá un aviso si: � Se convierte un carácter de la serie al carácter de sustitución. � No puede convertirse un carácter de la serie y l a operación es una asignación a una variable del lenguaje principa l con una variable de indicador. Por ejemplo, un carácter DBCS no se puede convertir en una variable del lenguaje principal con un CCSID de DBCS. En este caso, la serie no se asigna a la variable del lenguaj e principal y la variable de indicador se establece en -2.

DB2/400 Manual de Consulta SQL V3R7 Reglas de conversión para asignaciones

© Copyright IBM Corp. 1995, 1996 2.7.3 - 1

Page 114: DB2/400 Manual de Consulta SQLmarce.com/docs/systems/manuales/db2_400_manual_consulta_sql_v3r7.pdf · VERSION Nota de Versión Segunda edición (noviembre de 1996) Este manual es

2.7.4 Asignaciones de fecha y hora Un valor asignado a una columna DATE debe ser una f echa o una representación de serie válida de una fecha. Una f echa sólo puede asignarse a una columna DATE, una columna de serie de caracteres, una variable de serie de caracteres o una variable de i ndicación de la hora ILE RPG/400. Un valor asignado a una columna TIME debe ser una hora o una representación de serie válida de una hora. Una ho ra sólo puede asignarse a una columna TIME, una columna de serie de caracte res, una variable de serie de caracteres o una variable de indicación de la hora ILE RPG/400. Un valor asignado a una columna TIMESTAMP debe ser una indicación de la hora o una representación de serie válida de una in dicación de la hora. Una indicación de la hora sólo puede asignarse a un a columna TIMESTAMP, una columna de serie de caracteres, una variable de serie de caracteres o una variable de indicación de la hora ILE RPG/400. Cuando se asigna un valor de fecha y hora a una var iable o columna de serie de caracteres, se convierte a su representaci ón de serie. Los ceros iniciales no se omiten de ninguna de las partes de la fecha, hora o indicación de la hora. La longitud necesaria del e lemento destino varia según sea el formato de la representación de serie. Si la longitud del elemento destino es mayor que la requerida, éste se rellena por la derecha con blancos. Si la longitud del elemento destino e s menor que la necesaria, el resultado dependerá del tipo del valo r de fecha y hora en cuestión y del tipo de elemento destino. � Si el elemento destino es una columna de serie d e caracteres, no están permitidos los truncamientos. Las reglas que r igen son las siguientes: DATE El atributo de longitud de la columna debe ser 10 como mínimo si el formato de fecha es *ISO, USA, *EUR o *J IS. Si el formato de fecha es *YMD, *MDY o *DMY, el atributo de longitud de la columna debe ser al menos 8. Si el formato de fech a es *JUL, la longitud de la variable del lenguaje principal debe ser al menos 6. TIME El atributo de longitud de la columna deber ser al menos 8. TIMESTAMP El atributo de longitud de la columna deber al menos 26. � Cuando el elemento destino es una variable del l enguaje principal, se aplican las reglas siguientes: DATE La longitud de la variable del lenguaje pri ncipal debe ser al menos 10 si el formato de fecha es *ISO, *U SA, *EUR, or *JIS. Si el formato de fecha es *YMD, *MDY o *DMY, l a longitud de la variable del lenguaje principal debe ser de al menos 8. Si el formato de fecha es *JUL, la longitud de la variable del lenguaje principal debe ser al menos 6. TIME - Si se utiliza el formato *USA, la longitud de la variable del lenguaje principal no debe ser inferior a 8 . Este formato no incluye los segundos. - Si se utilizan los formatos de hora *ISO, * EUR, *JIS o *HMS, la longitud de la variable del lenguaje princi pal no debe ser inferior a 5. Si la longitud es 5, 6 ó 7, la parte de la hora correspondiente a los segundos se omite del resultado y SQLWARN1 se establece en 'W'. En este caso, la part e de la hora correspondiente a los segundos se asigna a la variable de indicador, si se da una, y, si la longitud es 6 ó 7, se rellena con blancos de forma que el valor sea una r epresentación de serie válida de una hora. TIMESTAMP La longitud de la variable del lenguaje pri ncipal no debe ser inferior a 19. Si la longitud está compren dida entre 19 y 25, la indicación de la hora se trunca como si se tratara de una serie, lo que provoca la omisión de uno o más dígi tos de la parte de la hora correspondiente a los microsegundos. Si la longitud es 20, la coma decimal final se sustituye por un b lanco a fin de que el valor sea una representación de serie válid a de una indicación de la hora.

DB2/400 Manual de Consulta SQL V3R7 Asignaciones de fecha y hora

© Copyright IBM Corp. 1995, 1996 2.7.4 - 1

Page 115: DB2/400 Manual de Consulta SQLmarce.com/docs/systems/manuales/db2_400_manual_consulta_sql_v3r7.pdf · VERSION Nota de Versión Segunda edición (noviembre de 1996) Este manual es

2.7.5 Comparaciones numéricas Los números se comparan de forma algebraica, es dec ir, teniendo en cuenta el signo. 2 negativo, por ejemplo es menor que +1. Si un número es un entero y el otro es un decimal, la comparación se realiza con una copia temporal del entero, el cual se ha convertido a decimal. Cuando se comparan números decimales o binarios de escala no cero que tengan escalas distintas, la comparación se realiza con una copia temporal de uno de los números que se ha ampliado con ceros finales de forma que su parte fraccionaria tenga el mismo número de dígitos que el otro número. Si uno de los números es de coma flotante y el otro es un entero, decimal o coma flotante de precisión simple, la comparación se efectúa con una copia temporal del segundo número convertido a un n úmero de coma flotante de precisión doble. Sin embargo, si se compara un número de coma flotante de precisión simple con una constante de coma flota nte, la comparación se realiza con un formato de precisión simple de la co nstante. Dos números de coma flotante son iguales sólo si la s configuraciones de bit de sus formatos normalizados son idénticos.

DB2/400 Manual de Consulta SQL V3R7 Comparaciones numéricas

© Copyright IBM Corp. 1995, 1996 2.7.5 - 1

Page 116: DB2/400 Manual de Consulta SQLmarce.com/docs/systems/manuales/db2_400_manual_consulta_sql_v3r7.pdf · VERSION Nota de Versión Segunda edición (noviembre de 1996) Este manual es

2.7.6 Comparaciones de serie Las comparaciones de series utilizan la secuencia d e clasificación que esté en vigor al ejecutar la sentencia para todos l os datos SBCS y la parte de un solo byte de los datos mixtos. Si la s ecuencia de clasificación es *HEX, se comparan los bytes corres pondientes de cada una de las series. Para todas las demás secuencias de clasificación, se comparan los bytes correspondiente del valor signif icativo de cada serie. Si las series tienen longitudes diferentes, antes d e realizar la comparación se rellenará con blancos por la derecha a una copia temporal de la serie más corta. Este relleno iguala la long itud de ambas series. El carácter de relleno es siempre un blanco, indepe ndientemente de cual sea la secuencia de clasificación. Para los datos de bit, el carácter de relleno también es el blanco. Para los datos gráfi cos DBCS, el carácter| de relleno es un blanco DBCS (x'4040'). Para los d atos gráficos UCS-2, el| carácter de relleno es un blanco UCS-2. (14) Dos series son iguales si cualquiera de las siguien tes condiciones es cierta: � Ambas series están vacías. � Se utiliza la secuencia de clasificación *HEX y todos los bytes correspondiente son iguales. � Se utiliza una secuencia de clasificación que no sea *HEX y todos los bytes correspondientes del valor significativo son iguales. Una serie vacía es igual a una serie de blancos. L a relación entre dos series desiguales viene determinada por una compara ción del primer par de bytes desiguales (o bytes del valor significativo) a partir del extremo izquierdo de la serie. Esta comparación se realiza de acuerdo con la secuencia de clasificación en vigor al ejecutar la sentencia. Dos series de longitud variable con longitudes dist intas son iguales si tan sólo difieren en el número de blancos finales. En aquellas operaciones que seleccionen un valor de un conjunto de valores, el valor seleccionado es arbitrario. Las operaciones que pu eden conllevar tal selección arbitraria son DISTINCT, MAX, MIN, UNION y las referencias a una columna de agrupación. Consulte la descripción de GROUP BY para obtener más información sobre la selección arbitraria que i nterviene en las referencias a una columna de agrupación. Carácter, sólo DBCS, DBCS abierto y DBCS cualquiera no son compatibles con los tipos gráficos para comparación. DBCS gráfico y UCS-2 gráfico no son tipos compatibles para la comparación. Para compar ar series gráficas, se comparan los bytes correspondientes de cada serie. | (14) UCS-2 define un carácter en blanco en el elem ento de código| X'0020' y X'3000'. El gestor de bases de datos rellena con| el blanco en el elemento de código X'0020'.

DB2/400 Manual de Consulta SQL V3R7 Comparaciones de serie

© Copyright IBM Corp. 1995, 1996 2.7.6 - 1

Page 117: DB2/400 Manual de Consulta SQLmarce.com/docs/systems/manuales/db2_400_manual_consulta_sql_v3r7.pdf · VERSION Nota de Versión Segunda edición (noviembre de 1996) Este manual es

2.7.7 Reglas de conversión para comparación Cuando se comparan dos series, primero se convierte , si es necesario, una de ellas al juego de caracteres codificados de la o tra. La conversión de caracteres sólo es necesaria si se cumplen todas la s condiciones siguientes: � Los CCSID de ambas series son diferentes. � Ninguno de los CCSID es 65535. � La serie seleccionada para la conversión no es n ula ni está vacía. � La tabla para la selección de conversiones CCSID indica que es necesaria la conversión. Si se comparan una serie SBCS y una serie mixta y l os operandos son del mismo tipo, todas las conversiones necesarias se ap licarán a la serie SBCS. De lo contrario, la serie seleccionada para la conversión depende del tipo de cada operando. La tabla siguiente mues tra, dados los tipos de operandos, qué operando se selecciona para la conve rsión. +-------------------------------------------------- ----------------------+ ¦ Tabla 4. Selección del operando para la conversió n de caracteres ¦ +-------------------------------------------------- ----------------------¦ ¦ ¦ Segundo operando ¦ ¦ +-------------------------------- ----------------------¦ ¦ ¦ ¦ ¦ ¦ ¦ Variable ¦ ¦ ¦ Valor de ¦ Valor ¦ Registro ¦ ¦ lenguaje ¦ ¦ Primer operando ¦ columna ¦ derivado ¦ especial ¦ Constante ¦ principal ¦ +-----------------+----------+----------+---------- +----------+----------¦ ¦ Valor de ¦ Segundo ¦ Segundo ¦ Segundo ¦ Segundo ¦ Segundo ¦ ¦ columna ¦ ¦ ¦ ¦ ¦ ¦ +-----------------+----------+----------+---------- +----------+----------¦ ¦ Valor derivado ¦ Primero ¦ Segundo ¦ Segundo ¦ Segundo ¦ Segundo ¦ +-----------------+----------+----------+---------- +----------+----------¦ ¦ Registro ¦ Primero ¦ Primero ¦ Segundo ¦ Segundo ¦ Segundo ¦ ¦ especial ¦ ¦ ¦ ¦ ¦ ¦ +-----------------+----------+----------+---------- +----------+----------¦ ¦ Constante ¦ Primero ¦ Primero ¦ Primero ¦ Segundo ¦ Segundo ¦ +-----------------+----------+----------+---------- +----------+----------¦ ¦ Variable ¦ Primero ¦ Primero ¦ Primero ¦ Primero ¦ Segundo ¦ ¦ lenguaje ¦ ¦ ¦ ¦ ¦ ¦ ¦ principal ¦ ¦ ¦ ¦ ¦ ¦ +-------------------------------------------------- ----------------------+ Una variable del lenguaje principal que contenga da tos en un esquema de codificación foráneo se convierte siempre de forma efectiva al esquema de codificación nativo antes de utilizarse en una oper ación. Las reglas anteriores se basan en la suposición de que esta co nversión ya se ha realizado. Se producirá un error si no se puede convertir algú n carácter de la serie o si se utiliza la tabla para la selección de conve rsiones CCSID pero ésta no contiene información sobre el par de CCSID. Se producirá un aviso si un carácter de la serie se convierte al carácter de sustitución.

DB2/400 Manual de Consulta SQL V3R7 Reglas de conversión para comparación

© Copyright IBM Corp. 1995, 1996 2.7.7 - 1

Page 118: DB2/400 Manual de Consulta SQLmarce.com/docs/systems/manuales/db2_400_manual_consulta_sql_v3r7.pdf · VERSION Nota de Versión Segunda edición (noviembre de 1996) Este manual es

2.7.8 Comparaciones de fecha y hora Un valor DATE, TIME o TIMESTAMP puede compararse co n otro valor del mismo tipo de datos o con una representación de serie de ese tipo de datos. Todas las comparaciones son cronológicas, lo que si gnifica que cuanto más alejada esté una fecha del día 1 de enero del año 0 001, mayor será el valor de esa fecha. Las comparaciones entre valores de hora (TIME) y re presentaciones de serie de valores de hora siempre incluyen los segundos. Si la representación de serie omite los segundos, se da por supuesto que la parte correspondiente a los segundos es igual a cero. Las comparaciones entre valores de indicación de la hora (TIMESTAMP) son cronológicas sin tener en cuenta las representacion es que podrían considerarse equivalentes. Así, el siguiente predi cado es cierto: TIMESTAMP('1990-02-23-00.00.00') > '1990-02-22-24.00.00'

DB2/400 Manual de Consulta SQL V3R7 Comparaciones de fecha y hora

© Copyright IBM Corp. 1995, 1996 2.7.8 - 1

Page 119: DB2/400 Manual de Consulta SQLmarce.com/docs/systems/manuales/db2_400_manual_consulta_sql_v3r7.pdf · VERSION Nota de Versión Segunda edición (noviembre de 1996) Este manual es

2.8 Constantes Una constante (a veces llamada literal ) especifica un valor. Las constantes se clasifican como constantes de tipo se rie o constantes numéricas. Las constantes de serie se clasifican a su vez como de caracteres o gráficas. Las constantes numéricas se clasifican a su vez en constantes de entero, de coma flotante o decimales. Todas las constantes tienen el atributo NOT NULL. Si una constante numérica con un valor cero tiene un signo negativo, dicho signo no se tiene en cuenta. Subtemas 2.8.1 Constantes de enteros 2.8.2 Constantes de coma flotante 2.8.3 Constantes decimales 2.8.4 Constantes de serie de caracteres 2.8.5 Constantes de serie gráfica 2.8.6 Coma decimal 2.8.7 Delimitadores

DB2/400 Manual de Consulta SQL V3R7 Constantes

© Copyright IBM Corp. 1995, 1996 2.8 - 1

Page 120: DB2/400 Manual de Consulta SQLmarce.com/docs/systems/manuales/db2_400_manual_consulta_sql_v3r7.pdf · VERSION Nota de Versión Segunda edición (noviembre de 1996) Este manual es

2.8.1 Constantes de enteros Una constante de enteros especifica un entero como un número con o sin signo, con un máximo de 10 dígitos y que no incluye ninguna coma decimal. El tipo de datos de una constante de enteros es ent ero grande y su valor debe estar dentro del rango de un entero grande. En los diagramas de sintaxis, el término entero se utiliza para una constante de enteros que no debe incluir ningún sig no. Subtemas 2.8.1.1 Ejemplos

DB2/400 Manual de Consulta SQL V3R7 Constantes de enteros

© Copyright IBM Corp. 1995, 1996 2.8.1 - 1

Page 121: DB2/400 Manual de Consulta SQLmarce.com/docs/systems/manuales/db2_400_manual_consulta_sql_v3r7.pdf · VERSION Nota de Versión Segunda edición (noviembre de 1996) Este manual es

2.8.1.1 Ejemplos 64 -15 +100 32767 720176

DB2/400 Manual de Consulta SQL V3R7 Ejemplos

© Copyright IBM Corp. 1995, 1996 2.8.1.1 - 1

Page 122: DB2/400 Manual de Consulta SQLmarce.com/docs/systems/manuales/db2_400_manual_consulta_sql_v3r7.pdf · VERSION Nota de Versión Segunda edición (noviembre de 1996) Este manual es

2.8.2 Constantes de coma flotante Una constante de coma flotante especifica un número de coma flotante de precisión doble como dos números separados por una E. El primer número puede incluir un signo y una coma decimal; el segun do puede incluir un signo pero no una coma decimal. El valor de la con stante es el producto del primero número y la potencia de 10 especificada por el segundo número; debe estar dentro del rango de los números de coma flotante. El número de caracteres de la constante no debe sobrepasar los 2 4. Sin contar los ceros iniciales, el número de dígitos del primer nú mero no debe pasar de 17 y el número de dígitos del segundo no debe pasar de 3. Subtemas 2.8.2.1 Ejemplos

DB2/400 Manual de Consulta SQL V3R7 Constantes de coma flotante

© Copyright IBM Corp. 1995, 1996 2.8.2 - 1

Page 123: DB2/400 Manual de Consulta SQLmarce.com/docs/systems/manuales/db2_400_manual_consulta_sql_v3r7.pdf · VERSION Nota de Versión Segunda edición (noviembre de 1996) Este manual es

2.8.2.1 Ejemplos 15E1 2.E5 2.2E-1 +5.E+2

DB2/400 Manual de Consulta SQL V3R7 Ejemplos

© Copyright IBM Corp. 1995, 1996 2.8.2.1 - 1

Page 124: DB2/400 Manual de Consulta SQLmarce.com/docs/systems/manuales/db2_400_manual_consulta_sql_v3r7.pdf · VERSION Nota de Versión Segunda edición (noviembre de 1996) Este manual es

2.8.3 Constantes decimales Una constante decimal especifica un número decimal como un número con o sin signo que tiene como máximo 31 dígitos. La con stante debe: � Incluir una coma decimal o bien � Ser mayor que 2147483647 o inferior a -214748364 7 La precisión es el número total de dígitos (incluye ndo los ceros iniciales y finales); la escala es el número de dígitos situa dos a la derecha de la coma decimal (incluyendo los ceros finales). Subtemas 2.8.3.1 Ejemplos

DB2/400 Manual de Consulta SQL V3R7 Constantes decimales

© Copyright IBM Corp. 1995, 1996 2.8.3 - 1

Page 125: DB2/400 Manual de Consulta SQLmarce.com/docs/systems/manuales/db2_400_manual_consulta_sql_v3r7.pdf · VERSION Nota de Versión Segunda edición (noviembre de 1996) Este manual es

2.8.3.1 Ejemplos 25.5 1000. -15. +37589.3333333333 12345678901

DB2/400 Manual de Consulta SQL V3R7 Ejemplos

© Copyright IBM Corp. 1995, 1996 2.8.3.1 - 1

Page 126: DB2/400 Manual de Consulta SQLmarce.com/docs/systems/manuales/db2_400_manual_consulta_sql_v3r7.pdf · VERSION Nota de Versión Segunda edición (noviembre de 1996) Este manual es

2.8.4 Constantes de serie de caracteres Una constante de serie de caracteres especifica una serie de caracteres de longitud variable. Las dos formas de constante de serie de caracteres son las siguientes: � Una secuencia de caracteres que empieza y termin a con un delimitador de serie. El número de bytes comprendidos entr e los delimitadores de serie no puede ser superior a 32740. Para repr esentar a un delimitador de serie dentro de la serie de cara cteres, se utilizan dos delimitadores de serie consecutivos. Dos delim itadores de serie consecutivos que no están contenidos dentro de una serie representan a la serie vacía. � Una X seguida de una secuencia de caracteres que empieza y termina con un delimitador de serie. Los caracteres compre ndidos entre los delimitadores de serie deben ser un número par de dígitos hexadecimales. Este número de dígitos hexadeci males no debe pasar de 32740. Un dígito hexadecimal es un dígito o un a letra comprendida entre la A y la F (en mayúsculas o en minúscula s). Siguiendo los convenios de la notación hexadecimal, cada par de dígitos hexadecimales representa un carácter. Esta for ma de constante de serie permite especificar caracteres que no ten gan representación en el teclado. Las constantes de serie de caracteres pueden conten er datos mixtos. Si el CCSID del trabajo da soporte a los datos mixtos, un a constante de serie de caracteres se clasifica como datos mixtos siempre q ue incluya una subserie DBCS. En todos los demás casos, las constantes de serie de caracteres se clasifican como datos SBCS. El CCSID asignado a la constante es el CCSID del el emento origen que contiene la constante a menos que dicho elemento or igen esté codificado en un esquema de codificación foráneo (como por ejempl o, ASCII). Los datos de la variable del lenguaje principal se convierten del esquema de codificación foráneo al CCSID por omisión del servi dor actual. En este caso, el CCSID asignado a la constante es el CCSID por omisión del servidor actual. El CCSID del elemento origen viene determinado por el peticionario de la aplicación. El CCSID del elemento origen es: � Para STRSQL, el CCSID por omisión del peticionar io de la aplicación � Para los mandatos RUNSQLSTM o STRREXPRC, el CCSI D del archivo fuente especificado � Para CRTSQLxxx, - Para SQL estático, el CCSID del elemento or igen es el CCSID del archivo fuente utilizado en el mandato CRTS QLxxx. - Para SQL dinámico, el CCSID del elemento or igen es el CCSID de la variable del lenguaje principal especificad a en la sentencia PREPARE o, si se ha especificado una consta nte de serie en la sentencia PREPARE, el CCSID por omisión del servidor actual. Subtemas 2.8.4.1 Ejemplos

DB2/400 Manual de Consulta SQL V3R7 Constantes de serie de caracteres

© Copyright IBM Corp. 1995, 1996 2.8.4 - 1

Page 127: DB2/400 Manual de Consulta SQLmarce.com/docs/systems/manuales/db2_400_manual_consulta_sql_v3r7.pdf · VERSION Nota de Versión Segunda edición (noviembre de 1996) Este manual es

2.8.4.1 Ejemplos 'Marga' '14.12.1990' '32' 'NO CAMBIAR' '' X'FFFF'

DB2/400 Manual de Consulta SQL V3R7 Ejemplos

© Copyright IBM Corp. 1995, 1996 2.8.4.1 - 1

Page 128: DB2/400 Manual de Consulta SQLmarce.com/docs/systems/manuales/db2_400_manual_consulta_sql_v3r7.pdf · VERSION Nota de Versión Segunda edición (noviembre de 1996) Este manual es

2.8.5 Constantes de serie gráfica Subtemas 2.8.5.1 Constantes de serie gráfica DBCS 2.8.5.2 Constantes de serie gráfica UCS-2

DB2/400 Manual de Consulta SQL V3R7 Constantes de serie gráfica

© Copyright IBM Corp. 1995, 1996 2.8.5 - 1

Page 129: DB2/400 Manual de Consulta SQLmarce.com/docs/systems/manuales/db2_400_manual_consulta_sql_v3r7.pdf · VERSION Nota de Versión Segunda edición (noviembre de 1996) Este manual es

2.8.5.1 Constantes de serie gráfica DBCS Una constante de serie gráfica es una serie gráfica de longitud variable. La longitud de la serie especificada no puede ser s uperior a 16370. Los tres formatos de las constantes de serie gráfica DB CS son:

En el formato normal, los delimitadores SQL y la G o la N son caracteres SBCS. El ' SBCS es el apóstrofo EBCDIC, X'7D'. En el formato PL/I, los apóstrofos y la G son carac teres DBCS. Para representar a un delimitador de serie dentro de la serie de, se utilizan dos delimitadores de serie DBCS consecutivos. Teng a presente que este formato PL/I sólo es válido para sentencias estátic as hospedadas en programas escritos en PL/I. También se da soporte a las contantes gráficas DBCS hexadecimales. El formato de la constante gráfica DBCS hexadecimal es : GX'ssss' En la constante, ssss representa una serie de 0 a 32766 dígitos hexadecimales. El número de caracteres comprendido s entre los delimitadores de serie debe ser un número par múlti plo de 4. Cada grupo de 4 dígitos representa un solo carácter gráfico DB CS. Los caracteres hexadecimales para desplazamiento a teclado ideográ fico y estándar ('0E'X y '0F'X) no se incluyen en la serie. El CCSID asignado a la constante es el CCSID DBCS a sociado con el CCSID del elemento origen excepto si dicho elemento orige n está codificado en un esquema de codificación foráneo (como por ejemplo, ASCII). En este caso, el CCSID asignado a la constante es el CCSID DBCS a sociado con el CCSID por omisión del servidor actual cuando la sentencia SQL que contiene la constante está preparada. Si no hay ningún CCSID D BCS asociado con el elemento origen, el CCSID es 65535. Para obtener información acerca de los CCSID DBCS a sociados, consulte la publicación International Application Development , SC41-4603, Para obtener información acerca del CCSID del elemento origen, c onsulte el apartado sobre constantes de series de caracteres.

DB2/400 Manual de Consulta SQL V3R7 Constantes de serie gráfica DBCS

© Copyright IBM Corp. 1995, 1996 2.8.5.1 - 1

Page 130: DB2/400 Manual de Consulta SQLmarce.com/docs/systems/manuales/db2_400_manual_consulta_sql_v3r7.pdf · VERSION Nota de Versión Segunda edición (noviembre de 1996) Este manual es

2.8.5.2 Constantes de serie gráfica UCS-2 No se da soporte a las constantes de serie gráfica UCS-2.

DB2/400 Manual de Consulta SQL V3R7 Constantes de serie gráfica UCS-2

© Copyright IBM Corp. 1995, 1996 2.8.5.2 - 1

Page 131: DB2/400 Manual de Consulta SQLmarce.com/docs/systems/manuales/db2_400_manual_consulta_sql_v3r7.pdf · VERSION Nota de Versión Segunda edición (noviembre de 1996) Este manual es

2.8.6 Coma decimal Puede especificar si la coma decimal de una constan te numérica se representa mediante una coma o un punto. � Para sentencias SQL de cualquier lenguaje except o REXX, la coma decimal puede especificarse utilizando las opci ones de precompilador *PERIOD, *COMMA o *SYSVAL del parámetro OPTION. � Para sentencias SQL en REXX, la coma decimal pue de especificarse utilizando la sentencia SET OPTION. � Para sentencias SQL de SQL interactivo, la coma decimal puede especificarse utilizando el parámetro DECPNT de l mandato STRSQL o cambiando los atributos de sesión. � Para sentencias SQL procesadas por el mandato RU NSQLSTM, la coma decimal puede especificarla el parámetro DECMPT . *PERIOD, *COMMA y *SYSVAL son opciones que se exclu yen mutuamente y que especifican el carácter que representa la coma deci mal en sentencias SQL hospedadas en el programa. Si se especifica *PERIO D, la coma decimal es el punto; si se especifica *COMMA, es la coma; si s e especifica *SYSVAL, el valor de sistema QDECFMT determina el carácter q ue representa la coma decimal. Si la coma decimal es la coma, regirán las reglas s iguientes: � Las comas que vayan a ser separadores de constan tes numéricas de una sentencia SELECT o de una cláusula VALUES deben ir seguidas de un espacio. � Las comas que vayan a ser coma decimal en cualqu ier otro contexto, no deben ir seguidas de un espacio. Así pues, para especificar una constante decimal si n su parte fraccionaria, la coma final deber ir seguida de un carácter que no sea un blanco. Este carácter no blanco puede ser una coma separadora, como en: VALUES(9999999999,, 111 )

DB2/400 Manual de Consulta SQL V3R7 Coma decimal

© Copyright IBM Corp. 1995, 1996 2.8.6 - 1

Page 132: DB2/400 Manual de Consulta SQLmarce.com/docs/systems/manuales/db2_400_manual_consulta_sql_v3r7.pdf · VERSION Nota de Versión Segunda edición (noviembre de 1996) Este manual es

2.8.7 Delimitadores *APOST y *QUOTE son opciones de precompilador COBOL que se excluyen mutuamente y que dan nombre al delimitador de serie dentro de sentencias COBOL. *APOST da nombre al apóstrofo (') como deli mitador de serie; *QUOTE da nombre a las comillas ("). *APOSTSQL y * QUOTESQL son opciones de precompilador COBOL que se excluyen mutuamente y que representan un papel similar para las sentencias SQL hospedadas en programas COBOL. *APOSTSQL da nombre al apóstrofo (') como el delimi tador de serie SQL; con esta opción, las comillas (") son el carácter de es cape de SQL. *QUOTESQL da nombre a las comillas como el delimitador de ser ie SQL; con esta opción, el apóstrofo es el carácter de escape de SQ L. Los valores de *APOSTSQL y *QUOTESQL son, respectivamente, los mis mos que los valores de *APOST y *QUOTE. En los lenguajes principales que no son COBOL, los usos son fijos. El delimitador de serie correspondiente a las sentenci as del lenguaje principal y SQL estático es el apóstrofo ('); el ca rácter de escape SQL son las comillas (").

DB2/400 Manual de Consulta SQL V3R7 Delimitadores

© Copyright IBM Corp. 1995, 1996 2.8.7 - 1

Page 133: DB2/400 Manual de Consulta SQLmarce.com/docs/systems/manuales/db2_400_manual_consulta_sql_v3r7.pdf · VERSION Nota de Versión Segunda edición (noviembre de 1996) Este manual es

2.9 Registros especiales Un registro especial es un área de almacenamiento definida para un proc eso de aplicación por el gestor de bases de datos y uti lizada para almacenar información a la que puede hacerse referencia en la s sentencias SQL. Una referencia a un registro especial es una referencia a un valor facilitado por el servidor actual. Si el valor es una serie, su CCSID es un CCSID por omisión del servidor actual. DB2 para OS/400 i ncluye los registros especiales siguientes. Subtemas 2.9.1 CURRENT DATE o CURRENT_DATE 2.9.2 CURRENT SERVER o CURRENT_SERVER 2.9.3 CURRENT TIME o CURRENT_TIME 2.9.4 CURRENT TIMESTAMP o CURRENT_TIMESTAMP 2.9.5 CURRENT TIMEZONE o CURRENT_TIMEZONE 2.9.6 USER

DB2/400 Manual de Consulta SQL V3R7 Registros especiales

© Copyright IBM Corp. 1995, 1996 2.9 - 1

Page 134: DB2/400 Manual de Consulta SQLmarce.com/docs/systems/manuales/db2_400_manual_consulta_sql_v3r7.pdf · VERSION Nota de Versión Segunda edición (noviembre de 1996) Este manual es

2.9.1 CURRENT DATE o CURRENT_DATE El registro especial CURRENT DATE especifica una fe cha que se basa en una lectura del reloj de la hora del día cuando se ejec uta la sentencia SQL en el servidor actual. Todos los valores se basan en una sola lectura del reloj en las siguientes situaciones: � este registro especial se utiliza más de una vez dentro de una única sentencia SQL � este registro especial se utiliza con los regist ros especiales CURRENT TIME o CURRENT TIMESTAMP, o con las funciones e scalares CURDATE, CURTIME o NOW dentro de una única sentencia Subtemas 2.9.1.1 Ejemplo

DB2/400 Manual de Consulta SQL V3R7 CURRENT DATE o CURRENT_DATE

© Copyright IBM Corp. 1995, 1996 2.9.1 - 1

Page 135: DB2/400 Manual de Consulta SQLmarce.com/docs/systems/manuales/db2_400_manual_consulta_sql_v3r7.pdf · VERSION Nota de Versión Segunda edición (noviembre de 1996) Este manual es

2.9.1.1 Ejemplo Utilizando la tabla PROYECTO, establecer la fecha d e finalización de proyecto (FCHFINPR) del proyecto MA2111 (NUMPRO) co mo la fecha actual. UPDATE PROYECTO SET FCHFINPR = CURRENT DATE WHERE NUMPRO = 'MA2111'

DB2/400 Manual de Consulta SQL V3R7 Ejemplo

© Copyright IBM Corp. 1995, 1996 2.9.1.1 - 1

Page 136: DB2/400 Manual de Consulta SQLmarce.com/docs/systems/manuales/db2_400_manual_consulta_sql_v3r7.pdf · VERSION Nota de Versión Segunda edición (noviembre de 1996) Este manual es

2.9.2 CURRENT SERVER o CURRENT_SERVER El registro especial CURRENT SERVER especifica un v alor VARCHAR(18) que identifica al servidor de la aplicación actual. CURRENT SERVER se puede cambiar mediante las senten cias CONNECT (Tipo 1), CONNECT (Tipo 2) o SET CONNECTION, pero sólo si se presentan determinadas circunstancias. Consulte la descripción de los apa rtados "CONNECT (Tipo 1)" en el tema 5.10 , "CONNECT (Tipo 2)" en el tema 5.11 , y "SET CONNECTION" en el tema 5.45 . CURRENT SERVER no se puede especificar a menos que se dé nombre a la base de datos relacional local añadiendo la entrada al d irectorio de la base de datos relacional mediante el mandato ADDRDBDIRE o e l mandato WRKRDBDIRE. Subtemas 2.9.2.1 Ejemplo

DB2/400 Manual de Consulta SQL V3R7 CURRENT SERVER o CURRENT_SERVER

© Copyright IBM Corp. 1995, 1996 2.9.2 - 1

Page 137: DB2/400 Manual de Consulta SQLmarce.com/docs/systems/manuales/db2_400_manual_consulta_sql_v3r7.pdf · VERSION Nota de Versión Segunda edición (noviembre de 1996) Este manual es

2.9.2.1 Ejemplo Establecer la variable del lenguaje principal SERV_ APLIC (VARCHAR(18)) en el nombre del servidor actual. SELECT CURRENT SERVER INTO :SERV_APLIC FROM FILA1_TABLA

DB2/400 Manual de Consulta SQL V3R7 Ejemplo

© Copyright IBM Corp. 1995, 1996 2.9.2.1 - 1

Page 138: DB2/400 Manual de Consulta SQLmarce.com/docs/systems/manuales/db2_400_manual_consulta_sql_v3r7.pdf · VERSION Nota de Versión Segunda edición (noviembre de 1996) Este manual es

2.9.3 CURRENT TIME o CURRENT_TIME El registro especial CURRENT TIME especifica una ho ra que se basa en una lectura del reloj de la hora del día cuando se ejec uta la sentencia SQL en el servidor actual. Todos los valores se basan en una sola lectura del reloj en las siguientes situaciones: � este registro especial se utiliza más de una vez dentro de una única sentencia SQL � este registro especial se utiliza con los regist ros especiales CURRENT DATE o CURRENT TIMESTAMP, o con las funciones e scalares CURDATE, CURTIME o NOW dentro de una única sentencia Subtemas 2.9.3.1 Ejemplo

DB2/400 Manual de Consulta SQL V3R7 CURRENT TIME o CURRENT_TIME

© Copyright IBM Corp. 1995, 1996 2.9.3 - 1

Page 139: DB2/400 Manual de Consulta SQLmarce.com/docs/systems/manuales/db2_400_manual_consulta_sql_v3r7.pdf · VERSION Nota de Versión Segunda edición (noviembre de 1996) Este manual es

2.9.3.1 Ejemplo Utilizando la tabla CL_PREVI, seleccionar todas las clases (COD_CLASE) que hoy empiecen (INICIO) más tarde. Las clases de hoy tienen un valor de 3 en la columna DIA. SELECT COD_CLASE FROM CL_PREVI WHERE INICIO > CURRENT TIME AND DIA = 3

DB2/400 Manual de Consulta SQL V3R7 Ejemplo

© Copyright IBM Corp. 1995, 1996 2.9.3.1 - 1

Page 140: DB2/400 Manual de Consulta SQLmarce.com/docs/systems/manuales/db2_400_manual_consulta_sql_v3r7.pdf · VERSION Nota de Versión Segunda edición (noviembre de 1996) Este manual es

2.9.4 CURRENT TIMESTAMP o CURRENT_TIMESTAMP El registro especial CURRENT TIMESTAMP especifica u na indicación de la hora que se basa en una lectura del reloj de la hor a del día cuando se ejecuta la sentencia SQL en el servidor actual. To dos los valores se basan en una sola lectura del reloj en las siguient es situaciones: � este registro especial se utiliza más de una vez dentro de una única sentencia SQL � este registro especial se utiliza con los regist ros especiales CURRENT DATE o CURRENT TIME, o con las funciones escala res CURDATE, CURTIME o NOW dentro de una única sentencia Subtemas 2.9.4.1 Ejemplo

DB2/400 Manual de Consulta SQL V3R7 CURRENT TIMESTAMP o CURRENT_TIMESTAMP

© Copyright IBM Corp. 1995, 1996 2.9.4 - 1

Page 141: DB2/400 Manual de Consulta SQLmarce.com/docs/systems/manuales/db2_400_manual_consulta_sql_v3r7.pdf · VERSION Nota de Versión Segunda edición (noviembre de 1996) Este manual es

2.9.4.1 Ejemplo Insertar una fila en la tabla BAND_EN. El valor de la columna RECIBIDO debería ser una indicación de la hora que indique c uándo se insertó la fila. Los valores correspondientes a las otras tr es columnas provienen de las variables del lenguaje principal ORI (CHAR(8 )), SUB (CHAR(64)) y TXT (VARCHAR(200)). INSERT INTO BAND_EN VALUES (CURRENT TIMESTAMP, :ORI, :SUB, :TXT )

DB2/400 Manual de Consulta SQL V3R7 Ejemplo

© Copyright IBM Corp. 1995, 1996 2.9.4.1 - 1

Page 142: DB2/400 Manual de Consulta SQLmarce.com/docs/systems/manuales/db2_400_manual_consulta_sql_v3r7.pdf · VERSION Nota de Versión Segunda edición (noviembre de 1996) Este manual es

2.9.5 CURRENT TIMEZONE o CURRENT_TIMEZONE El registro especial CURRENT TIMEZONE especifica la diferencia entre la Hora Universal Coordinada (UTC) (15) y la hora local del servidor actual. La diferencia se representa mediante una duración d e tiempo (un número decimal en el que los dos primeros dígitos son el n úmero de horas, los dos siguientes el número de minutos y los dos últimos e l número de segundos). El número de horas está comprendido entre -24 y 24, ambas excluidas. Para convertir una hora local a la hora UTC se resta el valor CURRENT TIMEZONE de la hora local. (15) conocida anteriormente como Hora según el mer idiano de Greenwich (GMT). Subtemas 2.9.5.1 Ejemplo

DB2/400 Manual de Consulta SQL V3R7 CURRENT TIMEZONE o CURRENT_TIMEZONE

© Copyright IBM Corp. 1995, 1996 2.9.5 - 1

Page 143: DB2/400 Manual de Consulta SQLmarce.com/docs/systems/manuales/db2_400_manual_consulta_sql_v3r7.pdf · VERSION Nota de Versión Segunda edición (noviembre de 1996) Este manual es

2.9.5.1 Ejemplo Utilizando la tabla BAND_EN, seleccionar todas las filas de la tabla y ajustar el valor a la UTC. SELECT RECIBIDO - CURRENT TIMEZONE, ORIGEN, TEMA, TEXTO_NOTA FROM BAND_EN

DB2/400 Manual de Consulta SQL V3R7 Ejemplo

© Copyright IBM Corp. 1995, 1996 2.9.5.1 - 1

Page 144: DB2/400 Manual de Consulta SQLmarce.com/docs/systems/manuales/db2_400_manual_consulta_sql_v3r7.pdf · VERSION Nota de Versión Segunda edición (noviembre de 1996) Este manual es

2.9.6 USER El registro especial USER especifica el ID de autor ización en tiempo de ejecución del servidor actual. El tipo de datos de l registro especial es VARCHAR(18). Subtemas 2.9.6.1 Ejemplo

DB2/400 Manual de Consulta SQL V3R7 USER

© Copyright IBM Corp. 1995, 1996 2.9.6 - 1

Page 145: DB2/400 Manual de Consulta SQLmarce.com/docs/systems/manuales/db2_400_manual_consulta_sql_v3r7.pdf · VERSION Nota de Versión Segunda edición (noviembre de 1996) Este manual es

2.9.6.1 Ejemplo Seleccionar todas las notas de la tabla BAND_EN que haya colocado allí el usuario mismo. SELECT * FROM BAND_EN WHERE ORIGEN = USER

DB2/400 Manual de Consulta SQL V3R7 Ejemplo

© Copyright IBM Corp. 1995, 1996 2.9.6.1 - 1

Page 146: DB2/400 Manual de Consulta SQLmarce.com/docs/systems/manuales/db2_400_manual_consulta_sql_v3r7.pdf · VERSION Nota de Versión Segunda edición (noviembre de 1996) Este manual es

2.10 Nombres de columna El significado de un nombre de columna depende de s u contexto. Un nombre de columna puede utilizarse para: � Declarar el nombre de la columna, como en la sen tencia CREATE TABLE. � Identificar una columna, como en la sentencia CR EATE INDEX. � Especificar los valores de la columna, como en l os siguientes contextos: - En una función de columna un nombre de columna especifica todos los valores de la columna en la tabla de re sultados intermedios o al grupo a los que se aplica la función. Q ué son los grupos y las tablas de resultados intermedios se explica en el apartado "SELECT INTO" en el tema 5.44 . Por ejemplo, MAX(SUELDO) aplica la función MAX a todos los valores de la columna SUELD O de un grupo. - En una cláusula GROUP BY u ORDER BY , un nombre de columna especifica todos los valores de la tabla de resultados intermedios a los que se aplica la cláusula. Por ejemp lo, ORDER BY DEPT ordena una tabla de resultados intermedios por los valores de la columna DEPT. - En una expresión, una condición de búsqueda o una función escalar un nombre de columna especifica un valor pa ra cada fila o grupo a los que se aplique la estructura. Por ejem plo, cuando se aplique la condición de búsqueda CÓDIGO = 20 a algu na fila, el valor especificado por el nombre de columna CÓDIG O será el valor de la columna CÓDIGO en esa fila. Subtemas 2.10.1 Nombres de columna calificados 2.10.2 Nombres de correlación 2.10.3 Calificadores de nombre de columna para evitar la ambigüedad 2.10.4 Calificadores de nombre de columna en referencias correlacionadas 2.10.5 Nombres de columna no calificados

DB2/400 Manual de Consulta SQL V3R7 Nombres de columna

© Copyright IBM Corp. 1995, 1996 2.10 - 1

Page 147: DB2/400 Manual de Consulta SQLmarce.com/docs/systems/manuales/db2_400_manual_consulta_sql_v3r7.pdf · VERSION Nota de Versión Segunda edición (noviembre de 1996) Este manual es

2.10.1 Nombres de columna calificados Un nombre de tabla, un nombre de vista o un nombre de correlación pueden ser calificadores de un nombre de columna. El que un nombre de columna pueda calificarse o no depende de su contexto: � En las sentencias COMMENT ON y LABEL ON, el nomb re de columna debe estar calificado. � Si el nombre de columna especifica valores de la columna, puede calificarse un nombre de columna en la opción d el usuario. � En todos los demás contextos, un nombre de colum na no debe estar calificado. Si un calificador es opcional, puede tener dos prop ósitos. Véase el apartado "Calificadores de nombre de columna para evitar la ambigüedad" en el tema 2.10.3 y "Calificadores de nombre de columna en referencias correlacionadas" en el tema 2.10.4 para más detalles.

DB2/400 Manual de Consulta SQL V3R7 Nombres de columna calificados

© Copyright IBM Corp. 1995, 1996 2.10.1 - 1

Page 148: DB2/400 Manual de Consulta SQLmarce.com/docs/systems/manuales/db2_400_manual_consulta_sql_v3r7.pdf · VERSION Nota de Versión Segunda edición (noviembre de 1996) Este manual es

2.10.2 Nombres de correlación Un nombre de correlación puede definirse en la cláusula FROM de una consulta y en la primera cláusula de una sentencia UPDATE o DELETE. Por ejemplo, la cláusula que aparece más abajo establec e Z como un nombre de correlación de X.MITABLA: FROM X.MITABLA Z Los nombres de correlación están asociados con una tabla o vista sólo dentro del contexto en el que se definen. De ahí q ue el mismo nombre de correlación pueda definirse con diferentes propósit os en diferentes sentencias o en diferentes cláusulas de la misma se ntencia. Como calificador, un nombre de correlación puede ut ilizarse para evitar ambigüedades o para establecer una referencia corre lacionada. También puede utilizarse como una mera abreviatura de una t abla o vista. En el ejemplo que figura más arriba, Z podría haberse uti lizado simplemente para evitar el tener que entrar X.MITABLA más de una vez . Si se especifica un nombre de correlación para un n ombre de tabla o de vista, cualquier referencia a una columna de tal ap arición de la tabla o vista debe utilizar el nombre de correlación en lug ar del nombre de tabla o de vista. Por ejemplo, la referencia a EMPLEADO. PROYECTO que se hace en el ejemplo siguiente es incorrecta porque se ha esp ecificado un nombre de correlación para EMPLEADO: +-----------+ FROM EMPLEADO E ¦ INCORRECTO¦ WHERE EMPLEADO.PROYECTO = 'ABC' +-----------+ En lugar de esto, la referencia calificada a PROYEC TO debe utilizar el nombre de correlación, "E", tal y como se indica a continuación: FROM EMPLEADO E WHERE E.PROYECTO='ABC' Los nombres especificados en la cláusula FROM son expuestos o no expuestos . Un nombre de correlación siempre es un nombre ex puesto. Se dice que un nombre de tabla o vista está expuesto en dicha cláusula FROM si no se especifica ningún nombre de correlación. En la siguiente cláusula FROM, por ejemplo, se especifica un nombre de correlación para EMPLEADO, pero no para DEPART, de manera que DEPART es un nombre expuesto y, en cambio, EMPLEADO no: FROM EMPLEADO E, DEPART El nombre de tabla o de vista expuesto en una cláus ula FROM no debe ser el mismo que cualquier otro nombre de tabla o de vista expuesto en dicha cláusula FROM o en cualquier nombre de correlación de la cláusula FROM. Los nombres se comparan después de calificar los no mbres de tabla o de vista no calificados que haya. Las dos primeras cláusula FROM que figuran más bajo son correctas porque cada una de ellas contiene no más de una referencia a EMPLEADO, que es un nombre expuesto: 1. Dada la cláusula FROM: FROM EMPLEADO E1, EMPLEADO una referencia calificada como EMPLEADO.PROYECT O denota una columna de la segunda aparición de EMPLEADO en la cláusula FROM. Una referencia calificada a la primera aparición de EMPLEADO d ebe utilizar el nombre de correlación "E1" (E1.PROYECTO). 2. Dada la cláusula FROM: FROM EMPLEADO, EMPLEADO E2 una referencia calificada como EMPLEADO.PROYECT O denota una columna de la primera aparición de EMPLEADO en la cláusula FROM. Una referencia calificada a la segunda aparición de EMPLEADO d ebe utilizar el nombre de correlación "E2" (E2.PROYECTO). 3. Dada la cláusula FROM: +------------+ FROM EMPLEADO, EMPLEADO ¦ INCORRECTO ¦ +------------+ los dos nombres de tabla expuestos incluidos en esta cláusula (EMPLEADO y EMPLEADO) son el mismo, lo que no e stá permitido. 4. Dada la sentencia siguiente: SELECT * +------------+ FROM EMPLEADO E1, EMPLEADO E2 ¦ INCORRECTO ¦ WHERE EMPLEADO.PROYECTO = 'ABC' +------------+

DB2/400 Manual de Consulta SQL V3R7 Nombres de correlación

© Copyright IBM Corp. 1995, 1996 2.10.2 - 1

Page 149: DB2/400 Manual de Consulta SQLmarce.com/docs/systems/manuales/db2_400_manual_consulta_sql_v3r7.pdf · VERSION Nota de Versión Segunda edición (noviembre de 1996) Este manual es

la referencia calificada EMPLEADO.PROYECTO es i ncorrecta, Porque las dos apariciones de EMPLEADO en la cláusula FROM tienen nombres de correlación. En lugar de esto, las referencias a PROYECTO deben calificarse con uno de los dos nombres de corre lación (E1.PROYECTO o E2.PROYECTO). 5. Dada la cláusula FROM: FROM EMPLEADO, X.EMPLEADO una referencia a una columna de la segunda apar ición de EMPLEADO debe utilizar X.EMPLEADO (X.EMPLEADO.PROYECTO). Est a cláusula FROM es válida únicamente si el ID de autorización de l a sentencia no es X. Un nombre de correlación especificado en un cláusul a FORM no debe ser igual que: � Ningún otro nombre de correlación de la cláusula FROM � Cualquier nombre de tabla o nombre de vista no c alificados expuestos en la cláusula FROM � El segundo identificador SQL de cualquier nombre de tabla o de vista calificado de la cláusula FROM. Por ejemplo, las sentencias FROM siguientes son inc orrectas: FROM EMPLEADO E, EMPLEADO E +------------+ FROM EMPLEADO DEPART, DEPART ¦ INCORRECTO ¦ FROM X.T1, EMPLEADO T1 +------------+ La siguiente cláusula es técnicamente correcta, aun que potencialmente confusa: FROM EMPLEADO DEPARTAMENTO, DEPARTAMENTO EMPLEADO

DB2/400 Manual de Consulta SQL V3R7 Nombres de correlación

© Copyright IBM Corp. 1995, 1996 2.10.2 - 2

Page 150: DB2/400 Manual de Consulta SQLmarce.com/docs/systems/manuales/db2_400_manual_consulta_sql_v3r7.pdf · VERSION Nota de Versión Segunda edición (noviembre de 1996) Este manual es

2.10.3 Calificadores de nombre de columna para evit ar la ambigüedad En el contexto de una función, una cláusula GROUP B Y, ORDER BY, una expresión o una condición de búsqueda, un nombre de columna hace referencia a los valores de una columna en alguna t abla o vista. Las tablas y vistas que podrían contener la columna rec iben el nombre de tablas objeto del contexto. Dos o más tablas objeto podrían con tener columnas con el mismo nombre. Una razón para calif icar un nombre de columna es designar el objeto del que procede la co lumna. Designadores de tabla : Un calificador que designa una tabla objeto específica recibe el nombre de designador de tabla . La cláusula que identifica las tablas objeto también establece los designadores de tabla de las mismas. Por ejemplo, las tablas objeto de u na expresión en una cláusula SELECT se especifican en la cláusula FROM que va a continuación: SELECT CORZ.COLA, PROPY.MITABLA.COLA FROM PROPX.MITABLA CORZ, PROPY.MITABLA Así es cómo se establecen los designadores de tabla en cláusula FROM: � Un nombre que va después de un nombre de tabla o de vista es a la vez un nombre de correlación y un designador de tab la. Por lo tanto, CORZ es un designador de tabla. CORZ se utiliza par a calificar el primer nombre de columna de la lista de selección. � En los nombres SQL, un nombre de vista o de tabl a expuesto es un designador de tabla. Por lo tanto, PROPY.MITAB LA es un designador de tabla. PROPY.MITABLA se utiliza para calificar el segundo nombre de columna de la lista de selección. � En los nombres del sistema, el designador de tab la correspondiente a un nombre de tabla o de vista expuesto es el no mbre de tabla o de vista no calificado. En el ejemplo siguiente M ITABLA es el designador de tabla de PROPY/MITABLA. SELECT CORZ.COLA, MITABLA.COLA FROM PROPX/MITABLA CORZ, PROPY/MITABLA Evitar las referencias no definidas o ambiguas : Cuando un nombre de columna hace referencia a los valores de una column a, debe haber exactamente una tabla objeto que incluya una column a con ese nombre. Las situaciones siguientes están consideradas como erró neas: � Ninguna tabla objeto contiene una columna con el nombre especificado. La referencia es indefinida. � Un designador de tabla califica el nombre de col umna, pero la tabla designada no incluye ninguna columna con el nom bre especificado. De nuevo la referencia es indefinida. � El nombre no está calificado y más de una tabla objeto contiene una columna con ese nombre. La referencia es ambig ua. Evite las referencias ambiguas calificando los nomb res de columna con designadores de tabla definidos de forma exclusiva. Si la columna está incluida en varias tablas objeto con nombres difere ntes, los nombres de tablas objeto pueden utilizarse como designadores. Dos o más tablas objeto pueden ser apariciones de l a misma tabla. En ese caso, deben utilizarse nombres de correlación disti ntos para designar de forma no ambigua a las apariciones concretas de la tabla. En la siguiente cláusula FROM, X e Y se han definido para hacer ref erencia, respectivamente, a la primera y segunda aparición d e la tabla DATOSCORP.EMPLEADO: FROM DATOSCORP.EMPLEADO X, DATOSCORP.EMPLEADO Y Cuando se califica una columna con el formato de no mbre de tabla expuesto de un designador de tabla, se puede utilizar tanto la forma calificada como la no calificada del nombre de tabla expuesto. No obstante, el calificador utilizado y la tabla utilizada deben se r iguales después de la calificación completa del nombre de tabla o nombre de vista y del designador de tabla. 1. Si el ID de autorización de la sentencia es DAT OSCORP: SELECT DATOSCORP.EMPLEADO.DEPTTRAB FROM EMPLEADO es una sentencia válida. 2. Si el ID de autorización de la sentencia es REG ION: SELECT DATOSCORP.EMPLEADO.DEPTTRAB +-----------+ FROM EMPLEADO ¦ INCORRECTO¦ +-----------+ no es válida porque EMPLEADO representa la tabl a REGIÓN.EMPLEADO, pero el calificador de DEPTTRAB representa una tabla distinta, DATOSCORP.EMPLEADO.

DB2/400 Manual de Consulta SQL V3R7 Calificadores de nombre de columna para evitar la ambigüedad

© Copyright IBM Corp. 1995, 1996 2.10.3 - 1

Page 151: DB2/400 Manual de Consulta SQLmarce.com/docs/systems/manuales/db2_400_manual_consulta_sql_v3r7.pdf · VERSION Nota de Versión Segunda edición (noviembre de 1996) Este manual es
Page 152: DB2/400 Manual de Consulta SQLmarce.com/docs/systems/manuales/db2_400_manual_consulta_sql_v3r7.pdf · VERSION Nota de Versión Segunda edición (noviembre de 1996) Este manual es

2.10.4 Calificadores de nombre de columna en refere ncias correlacionadas Una subselección es una forma de una consulta que puede utilizarse como un componente de varias sentencias SQL. Véase el Capítulo 4, "Consultas" en el tema 4.0 para obtener más información sobre subselecciones Una subselección utilizada dentro de una condición de b úsqueda de cualquier sentencia recibe el nombre de subconsulta . Una subconsulta puede incluir condiciones de búsque da propias, y dichas condiciones pueden, a su vez, incluir subconsultas. En consecuencia, una sentencia SQL puede contener una jerarquía de subco nsultas. De aquellos elementos de la jerarquía que contienen subconsulta s se dice que se encuentran situados a un nivel más alto que las sub consultas que contienen. Cada elemento de la jerarquía tiene una cláusula qu e establece uno o más designadores de tabla. Esta es la cláusula FROM, s alvo para el nivel más alto de una sentencia UPDATE o DELETE. Una condici ón de búsqueda de una subconsulta puede hacer referencia no sólo a las co lumnas de las tablas identificadas por la cláusula FROM de su propio ele mento de la jerarquía, sino también a columnas de tablas identificadas en cualquier nivel a lo largo de la vía de acceso, desde su propio elemento hasta el nivel más alto de la jerarquía. Una referencia a una columna de una tabla identificada en un nivel superior recibe el nombre de referencia correlacionada . Una referencia correlacionada a la columna C de la tabla T puede ser de la forma C, T.C o Q.C, siempre que Q sea un nombre de correlación definido para T. No obstante, una referencia correlacionada en forma de nombre de columna no calificado no constituye una buena práct ica. La explicación siguiente está basada en la suposición de que una r eferencia correlacionada siempre tiene la forma de un nombre de columna calificado y en que el calificador es un nombre de correlación. Q.C es una referencia correlacionada sólo si se cum plen las tres condiciones siguientes: � Q.C se utiliza en una condición de búsqueda de u na subconsulta. � Q no designa a ninguna tabla utilizada en la clá usula FROM de esa subconsulta. � Q designa a una tabla utilizada en un nivel supe rior. Q.C hace referencia a la columna C de la tabla o vi sta en el nivel en el que se utiliza Q como designador de tabla de esa ta bla o vista. Dado que se puede identificar la misma tabla o vista en much os niveles, se recomienda la utilización de nombres de correlación exclusivos como designadores de tabla. Si se utiliza Q para design ar una tabla en más de un nivel, Q.C. hace referencia al nivel más bajo qu e contiene la subconsulta que incluye Q.C. En la siguiente sentencia, Q se utiliza como nombre de correlación para T1 y T2, pero Q.C hace referencia al nombre de correla ción asociado con T2 porque es el nivel más bajo que contiene la subcons ulta que incluye Q.C. SELECT * FROM T1 Q WHERE A < ALL (SELECT B FROM T2 Q WHERE B < ANY (SELECT D FROM T3 WHERE D = Q.C))

DB2/400 Manual de Consulta SQL V3R7 Calificadores de nombre de columna en referencias correlacionadas

© Copyright IBM Corp. 1995, 1996 2.10.4 - 1

Page 153: DB2/400 Manual de Consulta SQLmarce.com/docs/systems/manuales/db2_400_manual_consulta_sql_v3r7.pdf · VERSION Nota de Versión Segunda edición (noviembre de 1996) Este manual es

2.10.5 Nombres de columna no calificados Un nombre de columna no calificado también puede se r una referencia correlacionada si la columna: � Se utiliza en una condición de búsqueda de una s ubconsulta � No está incluida en una tabla utilizada en la cl áusula FROM de esa subconsulta � Está incluida en una tabla utilizada en un nivel más alto No se recomiendan las referencias correlacionadas n o calificadas porque hacen que la sentencia SQL sea difícil de entender. La columna se calificará implícitamente cuando se prepare la sent encia dependiendo de la tabla en la que se encontró la columna. Una vez de terminada dicha calificación implícita, ésta no cambiará hasta que la sentencia se vuelva a preparar. El precompilador SQL emitirá un mensaj e de aviso en el listado de precompilación y el gestor de base de da tos emitirá un SQLCODE positivo (+12) y un SQLSTATE (01545) cuando se prep are o se ejecute una sentencia SQL que tenga una referencia correlaciona da no calificada.

DB2/400 Manual de Consulta SQL V3R7 Nombres de columna no calificados

© Copyright IBM Corp. 1995, 1996 2.10.5 - 1

Page 154: DB2/400 Manual de Consulta SQLmarce.com/docs/systems/manuales/db2_400_manual_consulta_sql_v3r7.pdf · VERSION Nota de Versión Segunda edición (noviembre de 1996) Este manual es

2.11 Referencias a variables del lenguaje principal Una variable del lenguaje principal es un dato COBOL, un campo RPG o una variable PLI, REXX o C a que se hace referencia en una sentencia SQL. Las variables del lenguaje principal están definidas po r sentencias del lenguaje principal. No puede hacerse referencia a variables del lenguaje principal en las sentencias SQL dinámicas; en su lu gar deben utilizarse marcadores de parámetros. Véase el apartado "Marcadores de parámetros" en el tema 5.38.4 . Para obtener más información acerca de cómo hace r referencia a estructuras del lenguaje principal en C, COBOL, PL/I y RPG, consulte el apartado "Estructuras del lenguaje principal en C, COBOL, PL /I y RPG" en el tema 2.12 . Para obtener más información acerca de las variables del lenguaje principal en REXX, consulte el manual DB/2 for OS/400 SQL Programming , SC41-4611. Una variable-lenguaje-principal de una sentencia SQL debe identificar una variable del lenguaje principal descrita en el prog rama de acuerdo con las reglas de declaración de variables del lenguaje pri ncipal. Todas las variables del lenguaje principal utilizad as en una sentencia SQL deben declararse en una sección de declaración SQL presente en todos los lenguajes principales, excepto REXX y RPG. (Las va riables no tienen que declararse en REXX. En RPG no existe la sección de declaración y, por lo tanto, las variables del lenguaje principal pueden irse declarando a lo largo del programa). No se puede declarar ninguna variable fuera de una sección de declaración SQL con nombres idénticos a los de las variables declaradas dentro de una sección de declaración SQL . Una sección de declaración SQL empieza con BEGIN DECLARE SECTION y termina con END DECLARE SECTION. Para obtener más información acerca de la utilizaci ón de variables del lenguaje principal, consulte el manual DB/2 for OS/400 SQL Programming , SC41-4611. El término variable-lenguaje-principal , tal y como se utiliza en los diagramas de sintaxis, indica una referencia a una variable del lenguaje principal. Una variable-lenguaje-principal incluida en la cláusula INTO de una sentencia FETCH o SELECT INTO identifica una variable del lenguaje principal a la que se le asigna un valor de una col umna de una fila. Una variable del lenguaje principal incluida en una sen tencia CALL identifica una variable del lenguaje principal a la que se le asigna un valor de parámetro de salida, y/o una variable del lenguaje principal que especifica un valor de argumento de entrada que deb e pasarse al gestor de bases de datos desde el programa de aplicación. En los restantes contextos una variable-lenguaje-principal especifica un valor que ha de pasarse al DB2 para OS/400 desde el programa de apl icación. El formato general de una referencia de variable-lenguaje-principal es: +-------------------------------------------------- ----------------------+ ¦ ¦ ¦ >--: id-leng-princ --------------------------------------------------- -> ¦ ¦ ¦ +- INDICATOR-+ ¦ ¦ ¦ +----------------: id-leng-princ -+ ¦ ¦ ¦ +-------------------------------------------------- ----------------------+ 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 pequeño con escala cero. El primer identificador-lenguaje-principal designa la variable principal ; el segundo identificador-lenguaje-principal designa a su variable de indicador . El propósito de la variable del indicador es: � Especificar el valor nulo. Un valor negativo de la variable de indicador especifica el valor nulo. � Indicar uno de los siguientes errores de correla ción de datos: - Los caracteres no han podido convertirse - Error en conversión numérica (subdesbordami ento o desbordamiento) - Error en expresión aritmética (división por 0) - Error en conversión de fecha o de indicació n de la hora (fecha o indicación de la hora no comprendida en el rango válido de fechas para el formato especificado) - Representación de serie del valor de fecha y hora no válida - Los datos mixtos no son correctos - Valor numérico no válido - El argumento de la función escalar SUBSTR e stá fuera de rango � Registrar la longitud original de una serie trun cada. � Registrar la parte de la hora correspondiente a los segundos si se trunca la hora al asignarla a una variable del lenguaje principal. Si, por ejemplo, se utiliza :V1:V2 para especificar un valor de inserción o actualización y V2 es negativo, el valor especifi cado es el valor nulo. Si V2 no es negativo, el valor especificado es el v alor de V1. De forma similar, si se especifica :V1:V2 en una se ntencia CALL, FETCH o SELECT INTO y el valor devuelto es nulo, V1 queda i ndefinido y V2 se establece en un valor negativo. El valor negativo es: � -1 si el valor seleccionado era el valor nulo, o � -2 si se ha devuelto el valor nulo por causa de errores de correlación de datos en la lista de selección de una subsel ección exterior. (16) Si el valor devuelto no es nulo, dicho valor se asi gna a V1 y se establece

DB2/400 Manual de Consulta SQL V3R7 Referencias a variables del lenguaje principal

© Copyright IBM Corp. 1995, 1996 2.11 - 1

Page 155: DB2/400 Manual de Consulta SQLmarce.com/docs/systems/manuales/db2_400_manual_consulta_sql_v3r7.pdf · VERSION Nota de Versión Segunda edición (noviembre de 1996) Este manual es

V2 en cero (a menos que la asignación a V1 requiera un truncamiento de serie, en cuyo caso V2 se establece en la longitud original de la serie). Si una asignación requiere el truncamiento de la pa rte de la hora correspondiente a los segundos, V2 se establece al número de segundos. Si se omite el segundo identificador-lenguaje-princ ipal, la variable del lenguaje principal no tendrá ninguna variable de indicador. El valor especificado por la variable-lenguaje-principal :V1 es siempre el valor de V1, y los valores nulos no pueden asignarse a la va riable. Así pues, este formato no debe utilizarse en una cláusula INTO a m enos que la columna de resultados correspondiente no contenga valores nulo s. Si se utiliza este formato y la columna contiene nulos, el gestor de b ases de datos devuelve un valor negativo (-407) en el campo SQLCODE de la SQLCA. Si se truncan los datos y no hay ninguna variable de indicador, n o se produce ninguna condición de error. Una variable del lenguaje principal debe ir siempre precedida por dos puntos cuando se utiliza en una sentencia SQL. En PL/I y C, una sentencia SQL que haga referencia a variables del lenguaje principal debe estar comprendida dentro de l ámbito de la declaración de dichas variables del lenguaje princi pal. Para las variables del lenguaje principal a las que se haga referencia en la sentencia SELECT de un cursor, esta regla rige para la sentencia OPEN en lugar de la sentencia DECLARE CURSOR. El CCSID de una variable del lenguaje principal de serie es: � El CCSID especificado en la sentencia DECLARE VA RIABLE o bien � Si no se especifica ninguna DECLARE VARIABLE con una cláusula CCSID para la variable del lenguaje principal, el CCS ID por omisión del peticionario de la aplicación en el momento de ejecutarse la sentencia SQL que contiene la variable del lenguaje princ ipal a menos que el CCSID corresponda a un esquema de codificación foráneo (como por ejemplo, ASCII). En este caso, la variable del lenguaje principal se convierte en el CCSID por omisión del servidor actual. (16) Conviene observar que aunque el valor nulo de vuelto para los errores de correlación de datos puede devol verse en ciertas funciones escalares y para expresiones aritméticas, la columna de resultados no está considerada co mo de capacidad nula a menos que un argumento de la e xpresión aritmética o función escalar lo sea. Subtemas 2.11.1 Ejemplo

DB2/400 Manual de Consulta SQL V3R7 Referencias a variables del lenguaje principal

© Copyright IBM Corp. 1995, 1996 2.11 - 2

Page 156: DB2/400 Manual de Consulta SQLmarce.com/docs/systems/manuales/db2_400_manual_consulta_sql_v3r7.pdf · VERSION Nota de Versión Segunda edición (noviembre de 1996) Este manual es

2.11.1 Ejemplo Utilizando la tabla PROYECTO, establecer la variabl e del lenguaje principal NOMBREP (varchar(26)) en el nombre de pro yecto (NOMBREPR), la variable del lenguaje principal PERSONAL (dec(5,2)) en el promedio de personal (PRPERSON) y la variable del lenguaje prin cipal PROYPRIN (char(6)) en el proyecto principal (PROYPRIN) del p royecto (NUMPRO) 'IF1000'. Las columnas PRPERSON y PROYPRIN pueden contener valores nulos, así que proporcione las variables de indicador IND_ PERSONAL (smallint) e IND_PROYPRIN (smallint). SELECT NOMBREPR, PRPERSON, PROYPRIN INTO :NOMBREP, :PERSONAL :IND_PERSONAL, :PROYPRIN :IND_P ROYPRIN FROM PROYECTO WHERE NUMPRO = 'IF1000'

DB2/400 Manual de Consulta SQL V3R7 Ejemplo

© Copyright IBM Corp. 1995, 1996 2.11.1 - 1

Page 157: DB2/400 Manual de Consulta SQLmarce.com/docs/systems/manuales/db2_400_manual_consulta_sql_v3r7.pdf · VERSION Nota de Versión Segunda edición (noviembre de 1996) Este manual es

2.12 Estructuras del lenguaje principal en C, COBOL , PL/I y RPG Una estructura del lenguaje principal es un grupo C OBOL, una estructura PL/I o C o una estructura de datos RPG a los que se hace referencia en una sentencia SQL. Las estructuras del lenguaje princi pal se definen mediante sentencias del lenguaje principal, tal como se expl ica en el manual DB/2 for OS/400 SQL Programming , SC41-4611. Tal como se utiliza en este manual, el término estructura del lenguaje principa l no incluye ninguna SQLCA o SQLDA. El formato de una referencia de estructura del leng uaje principal es idéntico al formato de una referencia de variable d el lenguaje principal. La referencia :S1:S2 es una referencia de estructur a del lenguaje principal si en S1 se nombra una estructura del len guaje principal. Si S1 designa una estructura del lenguaje principal, S2 d ebe ser una variable de entero pequeño o una matriz de variables de entero pequeño. S1 es la estructura del lenguaje principal y S2 su matriz de indicador. Puede hacerse referencia a una estructura del lengu aje principal en cualquier contexto en el que pueda hacerse referenc ia a una lista de variables del lenguaje principal. Una referencia d e estructura del lenguaje principal es equivalente a una referencia hecha a cada una de las variables del lenguaje principal contenidas en la e structura en el orden en que están definidas en la declaración de estruct ura del lenguaje principal. La enésima variable de la matriz de indicador es la variable de indicador correspondiente a la enésima variable de la estructura del lenguaje principal. En PL/I, por ejemplo, si se declaran V1, V2 y V3 co mo variables dentro de la estructura S1, la sentencia: EXEC SQL FETCH CURSOR1 INTO :S1; equivale a: EXEC SQL FETCH CURSOR1 INTO :V1, :V2, :V3; Si la estructura del lenguaje principal tiene m variables más que la matriz de indicador, las m últimas variables de la estructura del lenguaje principal carecen de variables de indicador. Si la estructura del lenguaje principal tiene m variables menos que la matriz de indicador, las m últimas variables de la matriz de indicador no se tienen en cuenta. Estas reglas rigen también si una referencia hecha a una estructura del lenguaje principal incluye una variable de indicado r o si una referencia a una variable del lenguaje principal incluye una mat riz de indicador. Si no se especifica ninguna matriz o variable de indic ador, ninguna variable de la estructura del lenguaje principal tendrá una variable de indicador. Además de referencias a estructuras, también pueden hacerse referencia a las variables del lenguaje principal incluidas en l a estructura del lenguaje principal o a las variables de indicador i ncluidas en la matriz de indicador por medio de nombres calificados. El formato calificado es un identificador del lenguaje principal seguido de un punto y de otro identificador del lenguaje principal. En el primer identificador del lenguaje principal debe nombrarse una estructura de l lenguaje principal, y en el segundo identificador del lenguaje principal debe nombrarse una variable del lenguaje principal de dicha estructura del lenguaje principal. El diagrama siguiente especifica la sintaxis de las referencias a variables y estructuras del lenguaje principal: +-------------------------------------------------- ----------------------+ ¦ ¦ ¦ ¦ ¦ ¦ ¦ >--:--------------------- id-leng-princ -------------------------------> ¦ ¦ +- id-leng-princ -+ ¦ ¦ ¦ ¦ >------------------------------------------------ --------------------> ¦ ¦ ¦ +- INDICATOR-+ ¦ ¦ ¦ +----------------:--------------------- id-leng-princ -+ ¦ ¦ +- id-leng-princ -+ ¦ ¦ ¦ ¦ ¦ +-------------------------------------------------- ----------------------+ Una variable-lenguaje-principal de una expresión de be identificar una variable del lenguaje principal (no una estructura) descrita en el programa de acuerdo con las reglas de declaración d e variables del lenguaje principal. En REXX no se da soporte a las estructuras del leng uaje principal. Los ejemplos siguiente muestran referencias a varia bles y estructuras del lenguaje principal: :V1 :S1.V1 :S1.V1:V2 :S1.V2:S2.V4

DB2/400 Manual de Consulta SQL V3R7 Estructuras del lenguaje principal en C, COBOL, PL/I y RPG

© Copyright IBM Corp. 1995, 1996 2.12 - 1

Page 158: DB2/400 Manual de Consulta SQLmarce.com/docs/systems/manuales/db2_400_manual_consulta_sql_v3r7.pdf · VERSION Nota de Versión Segunda edición (noviembre de 1996) Este manual es

2.13 Matrices de estructuras del lenguaje principal en C, COBOL, PL/I y RPG En PL/I y C, una matriz de estructuras del lenguaje principal es un nombre de estructura que tiene un atributo de dimensión. En COBOL, es una tabla unidimensional. En RPG, es una estructura de datos de apariciones. Sólo puede hacerse referencia a una matriz de estructura s del lenguaje en la sentencia FETCH cuando se utiliza una operación FET CH de varias filas, o en una sentencia INSERT cuando se utiliza una inser ción bloqueada. Las matrices de estructuras del lenguaje principal vien en definidas por las sentencias del lenguaje principal, según se explica en el manual DB/2 for OS/400 SQL Programming . El formato de una matriz de estructuras del lenguaj e principal es idéntico al formato de una referencia de variable del lengua je principal. La referencia :S1:S2 es una referencia a una matriz de estructuras del lenguaje principal si en S1 se nombra a una matriz de estructuras del lenguaje principal. Si S1 designa a una estructura del lenguaje principal, S2 debe ser una variable del lenguaje pr incipal de entero pequeño, una matriz de variables del lenguaje princ ipal de entero pequeño o una matriz bidimensional de variables del lenguaj e principal de entero pequeño. En el ejemplo siguiente, S1 es la matriz de estructuras del lenguaje principal y S2 es su matriz de indicador. EXEC SQL FETCH CURSOR1 FOR 5 ROWS INTO :S1:S2; La dimensión de la estructura del lenguaje principa l y de la matriz de indicador debe ser igual. Si la estructura del lenguaje principal tiene m variables más que la matriz de indicador, las m últimas variables de la estructura del lenguaje principal carecen de variables de indicador. Si la estructura del lenguaje principal tiene m variables menos que la matriz de indicador, las m últimas variables de la matriz de indicador no se tienen en cuenta. Si no se especifica ninguna matriz o variable de indic ador, ninguna variable de la matriz de estructuras del lenguaje principal tendrá una variable de indicador. El diagrama siguiente especifica la sintaxis de las referencias a una matriz de estructuras del lenguaje principal: +-------------------------------------------------- ----------------------+ ¦ ¦ ¦ ¦ ¦ ¦ ¦ >--:-- id-leng-princ --------------------------------------------------> ¦ ¦ ¦ +- INDICATOR-+ ¦ ¦ ¦ +----------------:-- id-leng-princ -+ ¦ ¦ ¦ ¦ ¦ +-------------------------------------------------- ----------------------+ En REXX no se da soporte a las matrices de estructu ras del lenguaje principal.

DB2/400 Manual de Consulta SQL V3R7 Matrices de estructuras del lenguaje principal en C, COBOL, PL/I y RPG

© Copyright IBM Corp. 1995, 1996 2.13 - 1

Page 159: DB2/400 Manual de Consulta SQLmarce.com/docs/systems/manuales/db2_400_manual_consulta_sql_v3r7.pdf · VERSION Nota de Versión Segunda edición (noviembre de 1996) Este manual es

2.14 Expresiones Una expresión especifica un valor. +-------------------------------------------------- ----------------------+ ¦ ¦ ¦ ¦ ¦ ¦ ¦ <-operador---------------------------------+ ¦ ¦ >--------------- función ----------------------------------------------> ¦ ¦ +- + -¦ +- (expresión) -----------------¦ ¦ ¦ +- - -+ +- constante -------------------¦ ¦ ¦ +- nombre-col ------------------¦ ¦ ¦ +- variable-lenguaje-principal -¦ ¦ ¦ +- registro-especial -----------¦ ¦ ¦ +- duración-etiquetada ---------+ ¦ ¦ ¦ ¦ ¦ ¦ +--- Nota en línea -------------------------------------------------- + ¦ ¦ ¦ ¦ ¦ ¦ ¦ La información siguiente contiene un símbolo qu e el BookManager ¦ ¦ ¦ ¦ no visualiza. ¦ ¦ ¦ ¦ Por favor, consulte la versión publicada de est e ¦ ¦ ¦ ¦ manual si desea información más completa sobre el tema. ¦ ¦ ¦ ¦ ¦ ¦ ¦ +------------------------------------------------ --------------------+ ¦ ¦ ¦ ¦ ¦ ¦ operador: ¦ ¦ ¦ ¦ ¦ ¦ >---- CONCAT--------------------------------------------------- -------> ¦ ¦ +- &concat. -¦ ¦ ¦ +- / --------¦ ¦ ¦ +- * --------¦ ¦ ¦ +- ** -------¦ ¦ ¦ +- + --------¦ ¦ ¦ +- - --------+ ¦ ¦ ¦ ¦ duración-etiquetada: ¦ ¦ ¦ ¦ ¦ ¦ >---- función -------------------------- YEAR---------------------------> ¦ ¦ +- (expresión) -----------------¦ +- YEARS--------¦ ¦ ¦ +- constante -------------------¦ +- MONTH--------¦ ¦ ¦ +- nombre-col ------------------¦ +- MONTHS-------¦ ¦ ¦ +- variable-lenguaje-principal -+ +- DAY----------¦ ¦ ¦ +- DAYS---------¦ ¦ ¦ +- HOUR---------¦ ¦ ¦ +- HOURS--------¦ ¦ ¦ +- MINUTE-------¦ ¦ ¦ +- MINUTES------¦ ¦ ¦ +- SECOND-------¦ ¦ ¦ +- SECONDS------¦ ¦ ¦ +- MICROSECOND--¦ ¦ ¦ +- MICROSECONDS-+ ¦ ¦ ¦ ¦ ¦ +-------------------------------------------------- ----------------------+ Subtemas 2.14.1 Sin operadores 2.14.2 Con el operador de concatenación 2.14.3 Con operadores aritméticos 2.14.4 Dos operandos enteros 2.14.5 Operandos enteros y decimales 2.14.6 Dos operandos decimales 2.14.7 Aritmética decimal en SQL 2.14.8 Operandos de coma flotante 2.14.9 Operandos de fecha y hora y duraciones 2.14.10 Aritmética de fecha y hora en SQL 2.14.11 Orden de precedencia de las operaciones

DB2/400 Manual de Consulta SQL V3R7 Expresiones

© Copyright IBM Corp. 1995, 1996 2.14 - 1

Page 160: DB2/400 Manual de Consulta SQLmarce.com/docs/systems/manuales/db2_400_manual_consulta_sql_v3r7.pdf · VERSION Nota de Versión Segunda edición (noviembre de 1996) Este manual es

2.14.1 Sin operadores Si no se utiliza ningún operador, el resultado de l a expresión es el valor especificado. Subtemas 2.14.1.1 Ejemplo

DB2/400 Manual de Consulta SQL V3R7 Sin operadores

© Copyright IBM Corp. 1995, 1996 2.14.1 - 1

Page 161: DB2/400 Manual de Consulta SQLmarce.com/docs/systems/manuales/db2_400_manual_consulta_sql_v3r7.pdf · VERSION Nota de Versión Segunda edición (noviembre de 1996) Este manual es

2.14.1.1 Ejemplo SUELDO :SUELDO 'SUELDO' MAX(SUELDO)

DB2/400 Manual de Consulta SQL V3R7 Ejemplo

© Copyright IBM Corp. 1995, 1996 2.14.1.1 - 1

Page 162: DB2/400 Manual de Consulta SQLmarce.com/docs/systems/manuales/db2_400_manual_consulta_sql_v3r7.pdf · VERSION Nota de Versión Segunda edición (noviembre de 1996) Este manual es

2.14.2 Con el operador de concatenación Si se utiliza el operador de concatenación (CONCAT o ||), el resultado de la expresión es una serie. Los operandos de una co ncatenación deben series compatibles. Si ambos operandos son series de caracteres, la suma de sus longitudes no debe sobrepasar 32766. Si amb os operandos son series gráficas, la suma de sus longitudes no debe sobrepa sar los 16383 caracteres gráficos. Si uno de los dos operandos puede ser nulo, el resu ltado puede ser nulo y si cualquiera de los dos lo es, es resultado es el valor nulo. De lo contrario, el resultado consta de la primera serie de operandos seguida de la segunda. Con datos mixtos este resultado no tendrá códigos d e desplazamiento a teclado redundantes "en los extremos". Así pues, s i el primer operando es una serie que termina con un carácter de "desplazam iento a teclado estándar" (X'0F'), mientras que el segundo operando es una serie de caracteres que empieza con un carácter de "desplaza miento a teclado ideográfico" (X'0E'), estos dos bytes se eliminan d el resultado. La longitud del resultado es la suma de las longitu des de los operandos, a menos que se eliminen los desplazamientos a teclado redundantes, en cuyo caso la longitud es la suma de las longitudes de lo s operandos menos dos. Si ambos operandos son series de caracteres de long itud fija (ninguna de las cuales son de datos mixtos), el resultado es un a serie de caracteres de longitud fija. De lo contrario, el resultado ser á una serie de caracteres de longitud variable, en la que el atrib uto de longitud es la suma de los atributos de longitud de los operandos. Si ambos operandos son series gráficas de longitud fija, el resultado es una serie gráfica de longitud fija. De lo contrari o, el resultado será una serie de caracteres de longitud variable, en la que el atributo de longitud será la suma de los atributos de longitud de los operandos. Utilice el operador CONCAT en lugar del operador || . El elemento de código para el carácter | varía según el CCSID. El CCSID del resultado lo determina el CCSID de los operandos, tal como se explica en el apartado "Reglas de conversión para operaciones que combina n series" en el tema 4.3.3 . Tenga presente que como resultado de estas reglas: Si el operando es de datos de bit, el resultado serán datos de bit. Si un operando es de datos mixtos y el otro de datos SBCS, el resultado será datos mixtos. Sin embargo, esto no significa necesariamente que el resultado sea datos mixto s bien formados. Subtemas 2.14.2.1 Ejemplo

DB2/400 Manual de Consulta SQL V3R7 Con el operador de concatenación

© Copyright IBM Corp. 1995, 1996 2.14.2 - 1

Page 163: DB2/400 Manual de Consulta SQLmarce.com/docs/systems/manuales/db2_400_manual_consulta_sql_v3r7.pdf · VERSION Nota de Versión Segunda edición (noviembre de 1996) Este manual es

2.14.2.1 Ejemplo Concatenar la columna NOMBRE con un espacio en blan co y la columna APELL. NOMBRE CONCAT ' ' CONCAT APELL

DB2/400 Manual de Consulta SQL V3R7 Ejemplo

© Copyright IBM Corp. 1995, 1996 2.14.2.1 - 1

Page 164: DB2/400 Manual de Consulta SQLmarce.com/docs/systems/manuales/db2_400_manual_consulta_sql_v3r7.pdf · VERSION Nota de Versión Segunda edición (noviembre de 1996) Este manual es

2.14.3 Con operadores aritméticos Si se utilizan operadores aritméticos, el resultado de la expresión es un número derivado de la aplicación de los operadores a los valores de los operandos. Si uno de los operandos puede ser nulo, el resultad o también lo puede ser. Si algún operando tiene el valor nulo, el resultado de la expresión es el valor nulo. Los operadores aritméticos no deben ap licarse a las series de caracteres. Por ejemplo, USER+2 no es válido. El operador de prefijo + ( más unitario ) no cambia su operando. El operador de prefijo - ( menos unitario ) invierte el signo de un operando distinto de cero. Si el tipo de datos de A es entero pequeño , el tipo de datos de -A es entero grande . El primer carácter del símbolo que sigue al operador de prefijo no debe ser ni el signo más ni el signo menos. Los operadores de infijo , +, -, *, / y **, especifican operaciones de suma, resta, multiplicación, división y exponenciac ión, respectivamente. El valor del segundo operando de la división no deb e ser cero. El resultado de un operador de exponenciación (**) es un número de coma flotante de precisión doble. El resultado de los d emás operadores depende del tipo del operando.

DB2/400 Manual de Consulta SQL V3R7 Con operadores aritméticos

© Copyright IBM Corp. 1995, 1996 2.14.3 - 1

Page 165: DB2/400 Manual de Consulta SQLmarce.com/docs/systems/manuales/db2_400_manual_consulta_sql_v3r7.pdf · VERSION Nota de Versión Segunda edición (noviembre de 1996) Este manual es

2.14.4 Dos operandos enteros Si los dos operandos de un operador aritmético son enteros con escala cero, la operación se realiza en binario y el resul tado es un entero grande. El resto de la división se pierde. El res ultado de una operación aritmética de enteros (incluyendo el menos unitario ) debe estar comprendida en el rango de los enteros grandes. Si uno de los operandos enteros tiene una escala distinta de cero, se convi erte a un operando decimal con la misma precisión y escala.

DB2/400 Manual de Consulta SQL V3R7 Dos operandos enteros

© Copyright IBM Corp. 1995, 1996 2.14.4 - 1

Page 166: DB2/400 Manual de Consulta SQLmarce.com/docs/systems/manuales/db2_400_manual_consulta_sql_v3r7.pdf · VERSION Nota de Versión Segunda edición (noviembre de 1996) Este manual es

2.14.5 Operandos enteros y decimales Si un operando es un entero con escala cero y el ot ro es decimal, la operación se realiza en decimal utilizando una copi a temporal del entero, que se ha convertido a número decimal con una preci sión y escala 0 según lo definido en la tabla siguiente: +-------------------------------------------------- ----------------------+ ¦ Operando ¦ Precisión de la copia decimal ¦ +---------------------------------------+---------- ----------------------¦ ¦ Columna o variable: entero grande ¦ 11 ¦ +---------------------------------------+---------- ----------------------¦ ¦ Columna o variable: entero pequeño ¦ 5 ¦ +---------------------------------------+---------- ----------------------¦ ¦ Constante (incluyendo los ceros ¦ Igual al número de dígitos de ¦ ¦ iniciales) ¦ la consta nte ¦ +-------------------------------------------------- ----------------------+ Si un operando es un entero con una escala no cero, primero se convierte a un operando decimal con la misma precisión y escala .

DB2/400 Manual de Consulta SQL V3R7 Operandos enteros y decimales

© Copyright IBM Corp. 1995, 1996 2.14.5 - 1

Page 167: DB2/400 Manual de Consulta SQLmarce.com/docs/systems/manuales/db2_400_manual_consulta_sql_v3r7.pdf · VERSION Nota de Versión Segunda edición (noviembre de 1996) Este manual es

2.14.6 Dos operandos decimales Si los dos operandos son decimales, la operación se realiza en decimal. El resultado de toda operación aritmética decimal e s un número decimal con una precisión y escala que dependen de la operación y de la precisión y escala de los operandos. Si la operación es sumar o restar y los operandos no tienen la misma escala, la operación s e realiza con una copia temporal de uno de los operandos. La copia del ope rando más corto se amplia con ceros finales de forma que su parte frac cionaria tenga el mismo número de dígitos que el operando más largo. A menos que se especifique lo contrario, todas las funciones y operaciones que aceptan números decimales permiten una precisió n de hasta 31 dígitos. El resultado de una operación decimal no debe tener una precisión mayor que 31.

DB2/400 Manual de Consulta SQL V3R7 Dos operandos decimales

© Copyright IBM Corp. 1995, 1996 2.14.6 - 1

Page 168: DB2/400 Manual de Consulta SQLmarce.com/docs/systems/manuales/db2_400_manual_consulta_sql_v3r7.pdf · VERSION Nota de Versión Segunda edición (noviembre de 1996) Este manual es

2.14.7 Aritmética decimal en SQL Las fórmulas siguientes definen la precisión y la e scala del resultado de las operaciones decimales en SQL. Los símbolos p y s indican la precisión y escala del primer operando y los símbolos p' y s ' indican la precisión y escala del segundo operando. Subtemas 2.14.7.1 Suma y resta 2.14.7.2 Multiplicación 2.14.7.3 División

DB2/400 Manual de Consulta SQL V3R7 Aritmética decimal en SQL

© Copyright IBM Corp. 1995, 1996 2.14.7 - 1

Page 169: DB2/400 Manual de Consulta SQLmarce.com/docs/systems/manuales/db2_400_manual_consulta_sql_v3r7.pdf · VERSION Nota de Versión Segunda edición (noviembre de 1996) Este manual es

2.14.7.1 Suma y resta La escala del resultado de la suma y la resta es ma x ( s,s' ). La precisión es min(31,max( p-s,p'-s' ) +max( s,s' )+1).

DB2/400 Manual de Consulta SQL V3R7 Suma y resta

© Copyright IBM Corp. 1995, 1996 2.14.7.1 - 1

Page 170: DB2/400 Manual de Consulta SQLmarce.com/docs/systems/manuales/db2_400_manual_consulta_sql_v3r7.pdf · VERSION Nota de Versión Segunda edición (noviembre de 1996) Este manual es

2.14.7.2 Multiplicación La precisión del resultado de la multiplicación es min (31, p+p' ) y la escala es min(31, s+s' ).

DB2/400 Manual de Consulta SQL V3R7 Multiplicación

© Copyright IBM Corp. 1995, 1996 2.14.7.2 - 1

Page 171: DB2/400 Manual de Consulta SQLmarce.com/docs/systems/manuales/db2_400_manual_consulta_sql_v3r7.pdf · VERSION Nota de Versión Segunda edición (noviembre de 1996) Este manual es

2.14.7.3 División La precisión del resultado de la división es 31. L a escala es 31-p+s-s '. La escala no debe ser negativa.

DB2/400 Manual de Consulta SQL V3R7 División

© Copyright IBM Corp. 1995, 1996 2.14.7.3 - 1

Page 172: DB2/400 Manual de Consulta SQLmarce.com/docs/systems/manuales/db2_400_manual_consulta_sql_v3r7.pdf · VERSION Nota de Versión Segunda edición (noviembre de 1996) Este manual es

2.14.8 Operandos de coma flotante Si uno de los operandos de un operador aritmético e s de coma flotante, la operación se realiza en coma flotante. Los operand os se convierten primero en números de coma flotante de precisión do ble, si es necesario. De este modo, si algún elemento de una expresión es un número de coma flotante, el resultado de la expresión es un número de coma flotante de precisión doble. Una operación en la que intervengan un número de co ma flotante y un entero se realiza con una copia temporal del entero, que s e ha convertido a coma flotante de precisión doble. Una operación en la q ue intervengan un número de coma flotante y un número decimal se real iza con una copia temporal del número decimal, que se ha convertido a coma flotante de precisión doble. El resultado de una operación de coma flotante debe estar dentro del rango de números de coma flotante.

DB2/400 Manual de Consulta SQL V3R7 Operandos de coma flotante

© Copyright IBM Corp. 1995, 1996 2.14.8 - 1

Page 173: DB2/400 Manual de Consulta SQLmarce.com/docs/systems/manuales/db2_400_manual_consulta_sql_v3r7.pdf · VERSION Nota de Versión Segunda edición (noviembre de 1996) Este manual es

2.14.9 Operandos de fecha y hora y duraciones Los valores de fecha y hora pueden incrementarse, d isminuirse y restarse. En estas operaciones pueden intervenir números deci males llamados duraciones . Una duración es un número positivo o negativo que representa un intervalo de tiempo. Hay cuatro tipos de duraci ones: Duraciones etiquetadas (véase el diagrama de la pág ina 2.14.1 ) Una duración etiquetada representa una unidad específica de tiempo expresada mediante un número (que puede ser el resultado de una expresión) seguido de una de las siete palabra s clave de duración: YEARS, MONTHS, DAYS, HOURS, MINUTES, SECONDS o MICROSECONDS. (17) El número especificado se convierte como si se hu biera asignado a un número DECIMAL (15,0). Las duraciones etiquet adas sólo pueden utilizarse como operando de un operador aritmé tico en el que el otro operando sea un valor de datos tipo DATE, TIME o TIMESTAMP. Así, la expresión FCHCONTR + 2 MONTHS + 14 DAYS será v álida, mientras que la expresión FCHCONTR + (2 MONTHS + 14 DAYS) no l o será. En ambas expresiones, las duraciones etiquetadas son 2 MONTHS y 14 DAYS. Duración de fecha Una duración de fecha representa un número de años, meses y días expresados como número DECIMAL(8,0). A fin de poderlo interpretar correctamente, el número debe tener el formato aaaammdd, donde aaaa representa el número de años, mm el número de meses y dd el número de días. El resultado de restar un valor de fech a de otro, tal como sucede en la expresión FCHCONTR - FCHNACIM, e s una duración de fecha. Duración de hora Una duración de hora representa un número de horas, minutos y segundos, expresado como número DECIMAL(6,0). Para poderlo interpretar correctamente, el número debe tene r el formato hhmmss donde hh representa el número de horas; mm el número de minutos y ss el número de segundos. El resultado de restar un valor de hora de otro es una duración de hora. Duración de indicación de la hora Una duración de indicación de la hora representa un número de años, meses, días, minutos, segundos y microsegundos , expresados como número DECIMAL(20,6). Para poderlo interpreta r correctamente, el número debe tener el formato aaaammddhhmmsszzzzzz, donde aaaa, mm, dd, hh, mm, ss, y zzzzzz representan, respectivamente, el número de años, meses, días, horas, minutos, segundos y microsegundos. El resultado de restar un valor de indicación de la hora de otro es una duración de indicación de la hora. (17) Observe que la forma singular de estas palabr as clave también es aceptable: YEAR, MONTH, DAY, HOUR, M INUTE, SECOND y MICROSECOND.

DB2/400 Manual de Consulta SQL V3R7 Operandos de fecha y hora y duraciones

© Copyright IBM Corp. 1995, 1996 2.14.9 - 1

Page 174: DB2/400 Manual de Consulta SQLmarce.com/docs/systems/manuales/db2_400_manual_consulta_sql_v3r7.pdf · VERSION Nota de Versión Segunda edición (noviembre de 1996) Este manual es

2.14.10 Aritmética de fecha y hora en SQL Las únicas operaciones aritméticas que se pueden re alizar en valores de fecha y hora son la suma y la resta. Si un valor d e fecha y hora es el operando de la suma, el otro operando debe ser una duración. Las reglas específicas que determinan la utilización del opera dor de suma con valores de fecha y hora son las siguientes: � Si un operando es una fecha, el otro operando de be ser una duración de fecha o una duración etiquetada de años, meses o días. � Si un operando es una hora, el otro operando deb e ser una duración de hora o una duración etiquetada de horas, minuto s o segundos. � Si un operando es una indicación de la hora, el otro operando debe ser una duración. Cualquier tipo de duración es vál ido. � Ninguno de los dos operandos del operador de sum a puede ser un marcador de parámetros. Las reglas para la utilización del operador de rest a en valores de fecha y hora no son las mismas que para la suma, porque un valor de fecha y hora no puede restarse de una duración, y porque la oper ación de restar dos valores de fecha y hora no es igual que la operació n de restar una duración de un valor de fecha y hora. Las reglas e specíficas que determinan la utilización del operador de resta con valores de fecha y hora son las siguientes: � Si el primer operando es una fecha, el segundo o perando debe ser también una fecha, una duración de fecha, una r epresentación de serie de una fecha o una duración etiquetada de años, meses o días. � Si el segundo operando es una fecha, el primer o perando debe ser una fecha o una representación de serie de una fech a. � Si el primer operando es una hora, el segundo op erando debe ser una hora, una duración de hora, una representación de serie de una hora o una duración etiquetada de horas, minutos o seg undos. � Si el segundo operando es una hora, el primer op erando debe ser una hora o una representación de serie de una hora. � Si el primer operando es una indicación de la ho ra, el segundo operando debe ser una indicación de la hora, un a representación de serie de una indicación de la hora o una duraci ón. � Si el segundo operando es una indicación de la h ora, el primer operando debe ser una indicación de la hora o u na representación de serie de una indicación de la hora. � Ninguno de los dos operandos del operador de res ta puede ser un marcador de parámetros. Subtemas 2.14.10.1 Aritmética de fechas 2.14.10.2 Aritmética de horas 2.14.10.3 Aritmética de indicaciones de la hora

DB2/400 Manual de Consulta SQL V3R7 Aritmética de fecha y hora en SQL

© Copyright IBM Corp. 1995, 1996 2.14.10 - 1

Page 175: DB2/400 Manual de Consulta SQLmarce.com/docs/systems/manuales/db2_400_manual_consulta_sql_v3r7.pdf · VERSION Nota de Versión Segunda edición (noviembre de 1996) Este manual es

2.14.10.1 Aritmética de fechas Las fechas pueden restarse, incrementarse o disminu irse. Restar fechas : El resultado de restar una fecha (FECHA2) de otr a (FECHA1) es una duración de fecha que especifica el número d e años, meses, y días entre las dos fechas. El tipo de datos del resulta do es DECIMAL(8,0). Si FECHA1 es mayor o igual que FECHA2, FECHA2 se resta de FECHA1. Sin embargo, si FECHA1 es menor que FECHA2, a FECHA2 se le resta FECHA1 y el signo del resultado se hace negativo. La siguiente descripción de procedimiento clarifica los pasos que conlleva la o peración RESULTADO=FECHA1-FECHA2 Si DAY(FECHA2) <= DAY(FECHA1) entonces DAY(RESULTADO) = DAY(FECHA1) - DAY (FECHA2). Si DAY(FECHA2) > DAY(FECHA1) entonces DAY(RESULTADO) = N + DAY(FECHA1) - DAY(FECHA2) donde N = último día del MONTH(FECHA2). MONTH(DATE2) se incrementa entonces en 1. Si MONTH(FECHA2) <= MONTH(FECHA1) entonces MONTH(RESULTADO) = MONTH(FECHA1) - MONTH(FECHA2). Si MONTH(FECHA2) > MONTH(FECHA1) entonces MONTH(RESULTADO) = 12 + MONTH(FECH A1) - MONTH(FECHA2). YEAR(FECHA2) se incrementa entonces en 1. YEAR(RESULTADO) = YEAR(FECHA1) - YEAR(FECHA2). Por ejemplo, el resultado de DATE('3/15/2000') - '1 2/31/1999' es 215 (o una duración de 0 años, 2 meses y 15 días). Incrementar o disminuir fechas : El resultado de sumar una duración a una fecha, o de restar una duración de una fecha, es ta mbién una fecha (a los efectos de esta operación, un mes es el equivalente de una página del calendario. Por tanto, sumar meses a una fecha es como ir pasando las páginas de un calendario, empezando por la página d onde aparece la fecha en cuestión). El resultado debe estar comprendido entre las fechas 1 de enero del año 0001 y 31 de diciembre del año 9999, ambas inclusive. Si se suma o resta una duración de años, sólo se verá afe ctada la parte de la fecha correspondiente a los años. El mes permanece sin cambios así como los días, a menos que el resultado fuera un 29 de f ebrero de un año no bisiesto. En ese caso, el día se cambia a 28 y el SQLWARN6 de la SQLCA se establece en 'W' para indicar el ajuste de fin de m es. De modo similar, si se suma o resta una duración de meses, sólo los meses y, si es necesario, los años se verán afectados. L a parte de la fecha correspondiente al día permanece sin cambios a meno s que el resultado no sea válido (por ejemplo un 31 de septiembre). En e se caso, el día se establece en el último día del mes y el SQLWARN6 de l SQLCA se establece en 'W' para indicar el ajuste de fin de mes. Sumar o restar una duración de días afectaría, natu ralmente, a la parte de la fecha correspondiente al día y, potencialmente, al mes y al año. Sumar una duración etiquetada de DAYS no provocará ningún ajuste de fin de mes. Las duraciones de fecha, ya sean positivas o negati vas, también pueden sumarse a o restarse de fechas. Como en el caso de las duraciones etiquetadas, el resultado es una fecha válida, y se establece un indicador de aviso en la SQLCA cada vez que es necesario un a juste de fin de mes. Cuando se suma una duración de fecha positiva a una fecha, o cuando se resta una duración de fecha negativa de una fecha, la fecha se incrementa en el número especificado de años, meses y días, en ese orden. Así pues, FECHA1 + X, donde X es un número DECIMAL(8,0) posit ivo, equivale a la expresión: FECHA1 + YEAR(X) años + MONTH(X) meses + DAY(X) día s Cuando se resta una duración de fecha positiva de u na fecha, o cuando se suma una duración de fecha negativa a una fecha, la fecha disminuye en el número especificado de días, meses y años, en ese o rden. Así pues, FECHA1 - X, donde X es un número DECIMAL(8,0) positivo, eq uivale a la expresión: FECHA1 - DAY(X) días - MONTH(X) meses - YEAR(X) año s Cuando se suman duraciones a fechas, sumando un mes a una fecha dada, el resultado es la misma fecha del mes posterior a menos que esa fecha no exista en el mes siguiente. En ese caso, la fecha se establece en la del último día del mes posterior. Por ejemplo, el 28 d e enero más un mes da el 28 de febrero; y el 29, 30 ó 31 de enero más un mes da un resultado de 28 de febrero o, en año bisiesto, 29 de febrero. Nota: Si se suman uno o más meses a una fecha dada y a continuación se resta el mismo número de meses del resultado , la fecha final no tiene por qué ser necesariamente la fecha or iginal.

DB2/400 Manual de Consulta SQL V3R7 Aritmética de fechas

© Copyright IBM Corp. 1995, 1996 2.14.10.1 - 1

Page 176: DB2/400 Manual de Consulta SQLmarce.com/docs/systems/manuales/db2_400_manual_consulta_sql_v3r7.pdf · VERSION Nota de Versión Segunda edición (noviembre de 1996) Este manual es

2.14.10.2 Aritmética de horas Las horas se pueden restar, incrementar o disminuir . Restar horas : El resultado de restar una hora (HORA2) de otra (HORA1) es una duración de hora que especifica el número de ho ras, minutos y segundos entre las dos horas. El tipo de datos del resultad o es DECIMAL(6,0). Si HORA1 es mayor o igual que HORA2, a HORA1 se le res ta HORA2. Sin embargo, si HORA1 es menor que HORA2, a HORA2 se le resta HO RA1 y el signo del resultado se hace negativo. La siguiente descripci ón de procedimiento clarifica los pasos de la operación RESULTADO= HORA 1 - HORA2. Si SECOND(HORA2) <= SECOND(HORA1) entonces SECOND(RESULTADO) = SECOND(HORA1) - SECOND(HORA2). Si SECOND(HORA2) > SECOND(HORA1) entonces SECOND(RESULTADO) = 60 + SECOND(HO RA1) - SECOND(HORA2). MINUTE(HORA2) se incrementa entonces en 1. Si MINUTE(HORA2) <= MINUTE(HORA1) entonces MINUTE(RESULTADO) = MINUTE(HORA1) - MINUTE(HORA2). Si MINUTE(HORA2) > MINUTE(HORA1) entonces MINUTE(RESULTADO) = 60 + MINUTE(HO RA1) - MINUTE(HORA2). HOUR(HORA2) se incrementa entonces en 1. HOUR(RESULTADO) = HOUR(HORA1) - HOUR(HORA2). Por ejemplo, el resultado de HORA('11:02:26') - '00 :32:56' es 102930 (una duración de 10 horas, 29 minutos y 30 segundos). Incrementar y disminuir horas : El resultado de sumar una duración a una hora, o de restar una duración de una hora, es tamb ién una hora. Se descarta cualquier desbordamiento o subdesbordamien to de horas, con lo que se asegura que el resultado es siempre una hora. S i se suma o resta una duración de horas, sólo la parte de la hora corresp ondiente a las horas se verá afectada. Los minutos y los segundos no cambi an. De modo similar, si se suma o resta una duración de minutos, sólo se verán afectados los minutos y, si es necesario, las horas . La parte de la hora correspondiente a los segundos permanece sin cambio s. El hecho de sumar o restar una duración de segundos afectará, naturalmente, a la parte de la hora correspondiente a los segundos y, potencialmente, a los minutos y horas. Las duraciones de hora, ya sean positivas o negativ as, también pueden sumarse a y restarse de horas. El resultado es una hora que se ha incrementado o disminuido en el número especificado de horas, minutos y segundos, en ese orden. HORA1 + X , donde "X" es un número DECIMAL(6,0), equivale a la expresión: HORA1 + HOUR(X) horas + MINUTE(X) minutos + SECOND( X) segundos

DB2/400 Manual de Consulta SQL V3R7 Aritmética de horas

© Copyright IBM Corp. 1995, 1996 2.14.10.2 - 1

Page 177: DB2/400 Manual de Consulta SQLmarce.com/docs/systems/manuales/db2_400_manual_consulta_sql_v3r7.pdf · VERSION Nota de Versión Segunda edición (noviembre de 1996) Este manual es

2.14.10.3 Aritmética de indicaciones de la hora Las indicaciones de la hora se pueden restar, incre mentar o disminuir. Restar indicaciones de la hora : El resultado de restar una indicación de la hora (TS2) de otra (TS1) es una duración de indi cación de la hora que especifica el número de años, meses, días, horas, m inutos, segundos y microsegundos transcurridos entre las dos indicacio nes de la hora. El tipo de datos del resultado es DECIMAL(20,6). Si T S1 es mayor o igual que TS2, a TS1 se le resta TS2. No obstante, si TS1 es menor que TS2, a TS2 se le resta TS1 y el signo del resultado se hace ne gativo. La siguiente descripción de procedimiento clarifica los pasos de la operación RESULTADO = TS1 - TS2. Si MICROSECOND(TS2) <= MICROSECOND(TS1) entonces MICROSECOND(RESULTADO) = MICROSECO ND(TS1) - MICROSECOND(TS2). Si MICROSECOND(TS2) > MICROSECOND(TS1) entonces MICROSECOND(RESULTADO) = 1000000 + MICROSECOND(TS1) - MICROSECOND(TS2) y SECOND(TS2) se incrementa en 1. La parte las indicaciones de la hora correspond iente a los segundos y minutos se restan tal como se especifica en las reglas para restar horas. Si HOUR(TS2) <= HOUR(TS1) entonces HOUR(RESULTADO) = HOUR(TS1) - HOUR (TS2). Si HOUR(TS2) > HOUR(TS1) entonces HOUR(RESULTADO) = 24 + HOUR(TS1) - HOUR(TS2) y DAY(TS2) se incrementa en 1. La parte de la indicación de la hora correspond iente a la fecha se resta tal como se especifica en las reglas para restar fechas. Incrementar y disminuir indicaciones de la hora : El resultado de sumar una duración a una indicación de la hora o de resta r una duración de una indicación de la hora es también una indicación de la hora. La aritmética de fechas y horas se realiza tal como se ha definid o anteriormente, con la única excepción que se introduce un desbordamiento o un subdesbordamiento de horas en la parte del resultado correspondiente a la fecha, la cual debe estar dentro del rango de fechas válidas. Los microsegundos se desbordan a segundos.

DB2/400 Manual de Consulta SQL V3R7 Aritmética de indicaciones de la hora

© Copyright IBM Corp. 1995, 1996 2.14.10.3 - 1

Page 178: DB2/400 Manual de Consulta SQLmarce.com/docs/systems/manuales/db2_400_manual_consulta_sql_v3r7.pdf · VERSION Nota de Versión Segunda edición (noviembre de 1996) Este manual es

2.14.11 Orden de precedencia de las operaciones Las expresiones encerradas entre paréntesis se eval úan primero. Cuando el orden de evaluación no se especifica por medio de p aréntesis, la elevación a una potencia se aplica después de los operadores de prefijo (como por ejemplo, -, menos unitario) y antes que la multipli cación y la división. Estas se aplican antes que la suma y la resta. Los operadores situados en el mismo nivel de precedencia se aplican de izquier da a derecha. La tabla siguiente muestra la prioridad de todos los operado res. +-------------------------------------------------- ----------------------+ ¦ Prioridad ¦ Operadores ¦ +-----------+-------------------------------------- ----------------------¦ ¦ 1 ¦ +, - (cuando se utiliza para valores numéricos) ¦ +-----------+-------------------------------------- ----------------------¦ ¦ 2 ¦ ** ¦ +-----------+-------------------------------------- ----------------------¦ ¦ 3 ¦ *, /, CONCAT, || ¦ +-----------+-------------------------------------- ----------------------¦ ¦ 4 ¦ +, - (cuando se utiliza entre dos ope randos) ¦ +-------------------------------------------------- ----------------------+ Subtemas 2.14.11.1 Ejemplo

DB2/400 Manual de Consulta SQL V3R7 Orden de precedencia de las operaciones

© Copyright IBM Corp. 1995, 1996 2.14.11 - 1

Page 179: DB2/400 Manual de Consulta SQLmarce.com/docs/systems/manuales/db2_400_manual_consulta_sql_v3r7.pdf · VERSION Nota de Versión Segunda edición (noviembre de 1996) Este manual es

2.14.11.1 Ejemplo 1.10 * (SUELDO + BONIF) + SUELDO / :VAR3 � � � � +-+ +-+ +-+ +-+ ¦2¦ ¦1¦ ¦4¦ ¦3¦ +-+ +-+ +-+ +-+

DB2/400 Manual de Consulta SQL V3R7 Ejemplo

© Copyright IBM Corp. 1995, 1996 2.14.11.1 - 1

Page 180: DB2/400 Manual de Consulta SQLmarce.com/docs/systems/manuales/db2_400_manual_consulta_sql_v3r7.pdf · VERSION Nota de Versión Segunda edición (noviembre de 1996) Este manual es

2.15 Predicados Un predicado especifica una condición que es cierta, falsa o de sconocida respecto a una fila o grupo dados. Para todos los tipos de predicados rigen las reglas siguientes: � Todos los valores especificados en un predicado deben ser compatibles. � El valor de una variable del lenguaje principal no debe ser una serie de longitud superior a 32766 bytes. Subtemas 2.15.1 Predicado básico 2.15.2 Predicado cuantificado 2.15.3 Predicado BETWEEN 2.15.4 Predicado EXISTS 2.15.5 Predicado IN 2.15.6 Predicado LIKE 2.15.7 Predicado NULL

DB2/400 Manual de Consulta SQL V3R7 Predicados

© Copyright IBM Corp. 1995, 1996 2.15 - 1

Page 181: DB2/400 Manual de Consulta SQLmarce.com/docs/systems/manuales/db2_400_manual_consulta_sql_v3r7.pdf · VERSION Nota de Versión Segunda edición (noviembre de 1996) Este manual es

2.15.1 Predicado básico +-------------------------------------------------- ----------------------+ ¦ ¦ ¦ >-- expresión ---- = ------- expresión ----------------------------------> ¦ ¦ +- <> -¦ +- (subselección) -+ ¦ ¦ +- ¬= -¦ ¦ ¦ +- < --¦ ¦ ¦ +- > --¦ ¦ ¦ +- <= -¦ ¦ ¦ +- ¬> -¦ ¦ ¦ +- >= -¦ ¦ ¦ +- ¬< -+ ¦ ¦ ¦ +-------------------------------------------------- ----------------------+ Nota: Algunos teclados deben utilizar valores hexadecim ales para el símbolo de negación (¬). Dicho valor hexade cimal varía y depende del teclado que se utilice. Por esta razón, se prefiere utilizar los símbolos <>, <= y >=. Un predicado básico compara dos valores. Si los operandos del predica do contienen datos SBCS o mixtos, y si la secuencia de clasificación en vigor al ejecutarse la sentencia no es *HEX, la comparaci ón de los operandos se realiza utilizando los valores significativos de lo s operandos. Los valores significativos están basados en la secuenci a de clasificación. Las subselecciones incluidas en predicados básicos deben especificar una sola columna de resultados y no deben devolver más de un valor. Si el valor de uno de los operandos es nulo o el re sultado de la subselección no devuelve ninguna selección, el resu ltado del predicado se desconoce. De lo contrario, el resultado es o bien verdadero o bien falso. Para los valores x e y: Predicado Es verdadero si y sólo si... x = y x es igual a y x<> y x es distinto de y x¬= y x es distinto de y x < y x es menor que y x > y x es mayor que y x>= y x es mayor o igual que y x<= y x es menor o igual que y x¬< y x no es menor que y x¬> y x no es mayor que y Subtemas 2.15.1.1 Ejemplos

DB2/400 Manual de Consulta SQL V3R7 Predicado básico

© Copyright IBM Corp. 1995, 1996 2.15.1 - 1

Page 182: DB2/400 Manual de Consulta SQLmarce.com/docs/systems/manuales/db2_400_manual_consulta_sql_v3r7.pdf · VERSION Nota de Versión Segunda edición (noviembre de 1996) Este manual es

2.15.1.1 Ejemplos � NUMEMP = '528671' � PRTPERS <> :VAR1 � SUELDO + BONIF + COMI < 20000 � SUELDO > (SELECT AVG( SUELDO) FROM EMPLEADO)

DB2/400 Manual de Consulta SQL V3R7 Ejemplos

© Copyright IBM Corp. 1995, 1996 2.15.1.1 - 1

Page 183: DB2/400 Manual de Consulta SQLmarce.com/docs/systems/manuales/db2_400_manual_consulta_sql_v3r7.pdf · VERSION Nota de Versión Segunda edición (noviembre de 1996) Este manual es

2.15.2 Predicado cuantificado +-------------------------------------------------- ----------------------+ ¦ ¦ ¦ >-- expresión ---- = ------- SOME---- (subselección) ---------------------> ¦ ¦ +- <> -¦ +- ANY--¦ ¦ ¦ +- ¬= -¦ +- ALL--+ ¦ ¦ +- < --¦ ¦ ¦ +- > --¦ ¦ ¦ +- <= -¦ ¦ ¦ +- ¬> -¦ ¦ ¦ +- >= -¦ ¦ ¦ +- ¬< -+ ¦ ¦ ¦ +-------------------------------------------------- ----------------------+ Un predicado cuantificado compara un valor con un conjunto de valores. La subselección debe especificar una única columna de resultado y puede devolver cualquier número de valores, ya sean nulos o no nulos. Si los operandos del predicado contienen datos SBCS o mixt os, y si la secuencia de clasificación en vigor al ejecutarse la sentenci a no es *HEX, la comparación se realiza utilizando los valores signi ficativos de los operandos. Los valores significativos están basado s en la secuencia de clasificación. Cuando se especifica ALL, el resultado del predicad o es: � Verdadero si el resultado de la subselección no devuelve ninguna selección, o si la relación especificada es ver dadera para todos los valores devueltos por la subselección. � Falso si la relación especificada es falsa para al menos un valor devuelto por la subselección. � Desconocido si la relación especificada no es fa lsa para cualquiera de los valores devueltos por la subselección y al menos una comparación se desconocida a causa de un valor nulo. Cuando se especifica SOME o ANY, el resultado del p redicado es: � Verdadero si la relación especificada es verdade ra para al menos un valor devuelto por la subselección. � Falso si el resultado de la subselección no devu elve ninguna selección, o si la relación especificada es fal sa para todos los valores devueltos por la subselección. � Desconocido si la relación especificada no es ve rdadera para cualquiera de los valores devueltos por la subs elección y al menos una comparación se desconocida a causa de un valor nulo. Subtemas 2.15.2.1 Ejemplos

DB2/400 Manual de Consulta SQL V3R7 Predicado cuantificado

© Copyright IBM Corp. 1995, 1996 2.15.2 - 1

Page 184: DB2/400 Manual de Consulta SQLmarce.com/docs/systems/manuales/db2_400_manual_consulta_sql_v3r7.pdf · VERSION Nota de Versión Segunda edición (noviembre de 1996) Este manual es

2.15.2.1 Ejemplos Utilizar estas tablas cuando se haga referencia a l os ejemplos siguientes. +----+ +----+ TBLA: ¦COLA¦ TBLB: ¦COLB¦ +----¦ +----¦ ¦1 ¦ ¦2 ¦ ¦2 ¦ ¦3 ¦ ¦3 ¦ +----+ ¦4 ¦ ¦nulo¦ +----+ � La sentencia SELECT siguiente da como resultado 2,3. La subselección devuelve (2,3). COLA, en las filas 2 y 3, es i gual a al menos uno de estos valores. SELECT * FROM TBLA WHERE COLA = ANY(SELECT COLB FROM TBLB) � La sentencia SELECT siguiente da como resultado 3,4. La subselección devuelve (2,3). COLA, en las filas 3 y 4, es m ayor que al menos uno de estos valores. SELECT * FROM TBLA WHERE COLA > ANY(SELECT COLB FROM TBLB) � La sentencia SELECT siguiente da como resultado 4. La subselección devuelve (2,3). COLA, en la fila 4, es la únic a que es mayor que estos dos valores. SELECT * FROM TBLA WHERE COLA > ALL(SELECT COLB FROM TBLB) � La sentencia SELECT siguiente da como resultado 1,2,3,4 y nulo. El resultado de la subselección no devuelve ningun a selección. Así pues, el predicado es verdadero para todas las filas de TBLA. SELECT * FROM TBLA WHERE COLA > ALL(SELECT COLB FROM TBLB WHERE COLB<0) � La sentencia SELECT siguiente da como resultado el conjunto vacío. El resultado de la subselección no devuelve ningun a selección. Por tanto, el predicado es falso para todas las fil as de TBLA. SELECT * FROM TBLA WHERE COLA > ANY(SELECT COLB FROM TBLB WHERE COLB<0)

DB2/400 Manual de Consulta SQL V3R7 Ejemplos

© Copyright IBM Corp. 1995, 1996 2.15.2.1 - 1

Page 185: DB2/400 Manual de Consulta SQLmarce.com/docs/systems/manuales/db2_400_manual_consulta_sql_v3r7.pdf · VERSION Nota de Versión Segunda edición (noviembre de 1996) Este manual es

2.15.3 Predicado BETWEEN +-------------------------------------------------- ----------------------+ ¦ ¦ ¦ >-- expresión ----------- BETWEEN-- expresión -- AND-- expresión ------------> ¦ ¦ +- NOT-+ ¦ ¦ ¦ +-------------------------------------------------- ----------------------+ El predicado BETWEEN compara un valor con un rango de valores. Si está en vigor una secuencia de clasificación distinta de *H EX al ejecutar la sentencia y el predicado BETWEEN conlleva datos SBC S o mixtos, se comparan los valores significativos de las series en lugar d e los valores. El valor significativo está basado en la secuencia de clasificación. El predicado BETWEEN: valor1 BETWEEN valor2 AND valor3 equivale lógicamente a la condición de búsqueda: valor1 >= valor2 AND valor1 <= valor3 El predicado BETWEEN: valor1 NOT BETWEEN valor2 AND valor3 equivale a la condición de búsqueda: NOT(valor1 BETWEEN valor2 AND valor3);es decir, valor1 < valor2 OR valor1 > valor3. Si los operandos del predicado BETWEEN son series c on CCSID diferentes, se convierten si se han especificado las anteriormente mencionadas condiciones de búsqueda lógicamente equivalentes. Dada una mezcla de valores de fecha y hora y repres entaciones de serie de valores de fecha y hora, se convierten todos los va lores al tipo de datos del operando de fecha y hora. Subtemas 2.15.3.1 Ejemplos

DB2/400 Manual de Consulta SQL V3R7 Predicado BETWEEN

© Copyright IBM Corp. 1995, 1996 2.15.3 - 1

Page 186: DB2/400 Manual de Consulta SQLmarce.com/docs/systems/manuales/db2_400_manual_consulta_sql_v3r7.pdf · VERSION Nota de Versión Segunda edición (noviembre de 1996) Este manual es

2.15.3.1 Ejemplos EMPLEADO.SUELDO BETWEEN 20000 AND 40000 SUELDO NOT BETWEEN 20000 + :HV1 AND 40000

DB2/400 Manual de Consulta SQL V3R7 Ejemplos

© Copyright IBM Corp. 1995, 1996 2.15.3.1 - 1

Page 187: DB2/400 Manual de Consulta SQLmarce.com/docs/systems/manuales/db2_400_manual_consulta_sql_v3r7.pdf · VERSION Nota de Versión Segunda edición (noviembre de 1996) Este manual es

2.15.4 Predicado EXISTS +-------------------------------------------------- ----------------------+ ¦ ¦ ¦ >-- EXISTS-- (subselección) --------------------------------------------> ¦ ¦ ¦ +-------------------------------------------------- ----------------------+ El predicado EXISTS comprueba la existencia de dete rminadas filas. La subselección puede especificar cualquier número de columnas y � El resultado es verdadero sólo si el número de f ilas especificado por la subselección no es cero. � El resultado es falso sólo si el número de filas especificado por la subselección es cero. � El resultado no puede ser desconocido. Los valores devueltos por la subselección no se tie nen en cuenta. Subtemas 2.15.4.1 Ejemplo

DB2/400 Manual de Consulta SQL V3R7 Predicado EXISTS

© Copyright IBM Corp. 1995, 1996 2.15.4 - 1

Page 188: DB2/400 Manual de Consulta SQLmarce.com/docs/systems/manuales/db2_400_manual_consulta_sql_v3r7.pdf · VERSION Nota de Versión Segunda edición (noviembre de 1996) Este manual es

2.15.4.1 Ejemplo EXISTS (SELECT * FROM EMPLEADO WHERE SUELDO > 60000 )

DB2/400 Manual de Consulta SQL V3R7 Ejemplo

© Copyright IBM Corp. 1995, 1996 2.15.4.1 - 1

Page 189: DB2/400 Manual de Consulta SQLmarce.com/docs/systems/manuales/db2_400_manual_consulta_sql_v3r7.pdf · VERSION Nota de Versión Segunda edición (noviembre de 1996) Este manual es

2.15.5 Predicado IN +-------------------------------------------------- ----------------------+ ¦ ¦ ¦ >-- expresión ----------- IN --------------------------------------------> ¦ ¦ +- NOT-+ ¦ ¦ ¦ ¦ >---- (subselección) --------------------------------------------------> ¦ ¦ ¦ <-,-----------------------------+ ¦ ¦ ¦ +-(----- variable-lenguaje-principal -----)-¦ ¦ ¦ ¦ +- constante -------------------¦ ¦ ¦ ¦ ¦ +- registro-especial -----------+ ¦ ¦ ¦ +--- expresión -----------------------------+ ¦ ¦ ¦ +-------------------------------------------------- ----------------------+ El predicado IN compara un valor con un conjunto de valores. Si está en vigor una secuencia de clasificación distinta de *H EX al ejecutar la sentencia y el predicado IN conlleva datos SBCS o m ixtos, se comparan los valores significativos de las series en lugar de lo s valores reales. Los valores significativos están basados en la secuenci a de clasificación. En el formato de subselección, la subselección debe identificar una única columna de resultado y puede devolver cualquier núm ero de valores, ya sean nulos o no nulos. Un predicado IN con el formato: expresión IN ( subselección ) equivale a un predicado cuantificado con el form ato: expresión = ANY ( subselección ) Un predicado IN con el formato: expresión NOT IN ( subselección ) equivale a un predicado cuantificado con el form ato: expresión <> ALL ( subselección ) Un predicado IN con el formato: expresión IN expresión equivale a un predicado básico con el formato: expresión = expresión Un predicado IN con el formato: expresión IN ( valor1, valor2, ..., valorN ) equivale lógicamente a: expresión IN ( SELECT * FROM R) Supongamos que T es una tabla con una sola fila. R es una tabla temporal formada por la siguiente selección completa: SELECT valor1 FROM T UNION SELECT valor2 FROM T UNION . . . UNION SELECT valorN FROM T Cada variable del lenguaje principal debe identific ar una estructura o variable descrita de acuerdo con la regla de declar ación de variables o estructuras del lenguaje principal. Si los operandos del predicado IN tienen diferentes tipos de datos o atributos, las reglas que se utilizan para determin ar el tipo de datos para la evaluación del predicado IN son las que cor responden a UNION y UNION ALL. Para obtener una descripción, consulte el apartado "Reglas para tipos de datos de resultado" en el tema 4.3.2 . Si los operandos del predicado IN son series con CC SID diferentes, las reglas utilizadas para determinar qué operandos se convierten son las correspondientes a las operaciones que combinan ser ies. Para obtener una descripción, consulte el apartado "Reglas de conversión para operaciones que combinan series" en el tema 4.3.3 . Subtemas 2.15.5.1 Ejemplos

DB2/400 Manual de Consulta SQL V3R7 Predicado IN

© Copyright IBM Corp. 1995, 1996 2.15.5 - 1

Page 190: DB2/400 Manual de Consulta SQLmarce.com/docs/systems/manuales/db2_400_manual_consulta_sql_v3r7.pdf · VERSION Nota de Versión Segunda edición (noviembre de 1996) Este manual es

2.15.5.1 Ejemplos NUMDEPT IN ( 'D01', 'B01', 'C01' ) NUMEMP IN(SELECT NUMEMP FROM EMPLEADO WHERE DEPTTRAB = 'E11' )

DB2/400 Manual de Consulta SQL V3R7 Ejemplos

© Copyright IBM Corp. 1995, 1996 2.15.5.1 - 1

Page 191: DB2/400 Manual de Consulta SQLmarce.com/docs/systems/manuales/db2_400_manual_consulta_sql_v3r7.pdf · VERSION Nota de Versión Segunda edición (noviembre de 1996) Este manual es

2.15.6 Predicado LIKE +-------------------------------------------------- ----------------------+ ¦ ¦ ¦ >>-- expresión ----------- LIKE ---- USER---------------------------------> ¦ ¦ +- NOT-+ +- CURRENT_SERVER--------------¦ ¦ ¦ +- variable-lenguaje-principal -¦ ¦ ¦ +- constante-serie -------------+ ¦ ¦ ¦ ¦ >------------------------------------------------ ------------------->< ¦ ¦ +- ESCAPE---- variable-lenguaje-principal ---+ ¦ ¦ +- constante-serie -------------+ ¦ ¦ ¦ +-------------------------------------------------- ----------------------+ El predicado LIKE realiza búsquedas de series que r espondan a un cierto patrón. El patrón lo especifica una serie en la qu e el signo de subrayado y de porcentaje tienen un significado especial. Si está en vigor una secuencia de clasificación distinta de *HEX al ejec utar la sentencia y el predicado LIKE conlleva datos SBCS o mixtos, se com paran los valores significativos de las series en lugar de los valore s reales. Los valores significativos están basados en la secuencia de cla sificación. La expresión debe identificar una serie. Si se especifica una variable de lenguaje principal, debe identificar una variable d e serie (no una estructura) descrita en el programa de acuerdo con las reglas de declaración de variables del lenguaje principal de serie. Si la expresión contiene datos de tipo carácter, los términos carácter , signo de porcentaje y subrayado que aparecen en la exposición siguiente hacen referencia a caracteres de un solo byte; si la expr esión contiene datos gráficos, dichos términos hacen referencia a caract eres de doble byte o caracteres UCS-2. Si la expresión contiene datos g ráficos UCS-2, la cláusula de escape y el patrón deben especificarse como variables del lenguaje principal o marcadores de parámetros. Los blancos finales del patrón forman parte del mismo. Descripción simple : Para expresiones gráficas y de caracteres, una descripción simple del patrón LIKE es la siguiente: � El signo de subrayado (_) representa cualquier c arácter único. � El signo de porcentaje (%) representa una serie de cero o más caracteres. � Los demás caracteres se representan a sí mismos. Descripción rigurosa : Supongamos que x denota un valor de una expresión e y la serie especificada por el segundo operando. La serie y se interpreta como una secuencia del número mínimo de especificadores de subserie de manera que cada cará cter de y forme parte exactamente de un especificador de subserie. Un es pecificador de subserie es un signo de subrayado, un signo de porcentaje o cualquier secuencia no vacía de caracteres que no sea un subrayado ni un s igno de porcentaje. El resultado del predicado es desconocido si x o y es el valor nulo; de lo contrario, el resultado del predicado es o verdader o o falso. El resultado es verdadero si tanto x como y son series vacías o si existe una partición de x en subseries tales que: � Una subserie de x es una secuencia de cero o más caracteres contiguo s y cada carácter de x forma parte exactamente de una subserie. � Si el enésimo especificador de subserie es un subrayado, la enésima subserie de x es cualquier carácter único. � Si el enésimo especificador de subserie es un signo de porcentaj e, la enésima subserie de x es cualquier secuencia de cero o más caracteres. � Si el enésimo especificador de subserie no es un signo de porcen taje ni un signo de subrayado, la enésima subserie de x es igual a ese especificador de subserie y tiene la misma long itud que dicho especificador de subserie. � El número de subseries de x es igual al número de especificadores de subserie. En consecuencia, si y es una serie vacía y x no es una serie vacía, el resultado es falso. El predicado x NOT LIKE y equivale a la condición de búsqueda NOT( x LIKE y). Si el CCSID del carácter de escape es diferente del CCSID del patrón, se convierte al CCSID del patrón antes de aplicarse el predicado. Si el CCSID del patrón es diferente del CCSID de la expre sión, cada especificador de subserie del patrón se convierte a l CCSID de la expresión antes de aplicar el predicado. Datos mixtos : Si la expresión es de datos mixtos, puede conten er caracteres de doble byte y el patrón puede incluir caracteres SBCS y caracteres DBCS. En ese caso, los caracteres espec iales de y se interpretan de la siguiente manera: � Un subrayado SBCS hace referencia a un carácter SBCS.

DB2/400 Manual de Consulta SQL V3R7 Predicado LIKE

© Copyright IBM Corp. 1995, 1996 2.15.6 - 1

Page 192: DB2/400 Manual de Consulta SQLmarce.com/docs/systems/manuales/db2_400_manual_consulta_sql_v3r7.pdf · VERSION Nota de Versión Segunda edición (noviembre de 1996) Este manual es

� Un subrayado DBCS hace referencia a un carácter DBCS. � Un signo de porcentaje (ya sea SBCS o DBCS) hace referencia a cualquier número de caracteres de cualquier tip o, ya sean SBCS o DBCS. � Los desplazamientos a teclado redundantes no se pasan por alto. Datos gráficos UCS-2 : Si la expresión es de datos gráficos UCS-2, el patrón puede incluir uno o ambos elementos de códig o a los que se da soporte para el signo de porcentaje y el subrayado de UCS-2. Los elementos de código a los que se da soporte para el subrayado de UCS-2 son X'005F' y X'FF3F'. Los elementos de código a los que se da so porte para el signo de porcentaje de UCS-2 son X'0025' y X'FF05'. Cláusula ESCAPE : La cláusula ESCAPE permite la definición de patr ones para su utilización con vistas a comparar valores q ue contengan los caracteres de subrayado y de porcentaje reales. La s reglas que rigen la utilización de la cláusula ESCAPE son las siguiente s: � Si se identifica una expresión de serie de carac teres, el carácter de escape debe ser una constante o variable de ser ie de caracteres de longitud 1. � Si se identifica una expresión de serie gráfica, el carácter de escape debe ser una constante o variable de serie gráf ica de longitud 1. � Si la variable-lenguaje-principal de ESCAPE tiene una variable de indicador negativa, el resultado del predicado es desconocido. � La variable-lenguaje-principal o la constante-serie que forman el patrón no deben contener el carácter de escape excepto cuando vayan seguidas de él, del signo de porcentaje o del s igno de subrayado. Por ejemplo, si '+' es el carácter de escape, c ualquier aparición de '+' distinta de '++', '+_' o '+%' en el patrón es un error. � El carácter de escape puede ser un marcador de p arámetros. Subtemas 2.15.6.1 Ejemplos

DB2/400 Manual de Consulta SQL V3R7 Predicado LIKE

© Copyright IBM Corp. 1995, 1996 2.15.6 - 2

Page 193: DB2/400 Manual de Consulta SQLmarce.com/docs/systems/manuales/db2_400_manual_consulta_sql_v3r7.pdf · VERSION Nota de Versión Segunda edición (noviembre de 1996) Este manual es

2.15.6.1 Ejemplos Ejemplo 1 : Buscar la serie 'SISTEMAS' que aparece en alguna parte de la columna NOMPROY de la tabla PROYECTO. PROYECTO.NOMPROY LIKE '%SISTEMAS%' Ejemplo 2 : Buscar una serie cuyo primer carácter sea 'J' y que tenga una longitud de dos caracteres exactamente en la column a NOMBRE de la tabla EMPLEADO. EMPLEADO.NOMBRE LIKE 'J_' Ejemplo 3 : En este ejemplo: C1 LIKE 'AAAA+%BBB%' ESCAPE '+' '+' es el carácter de escape e indica que la búsque da se realiza para hallar una serie que empiece con 'AAAA%BBB'. '+%' se interpreta como una sola aparición de '%' en el patrón. Ejemplo 4 : En la siguiente tabla de ejemplos EBCDIC vamos a suponer que COL1 es de datos mixtos. La tabla muestra los resul tados cuando los predicados de la primera columna se evalúan utiliza ndo los valores de COL1 que figuran en la segunda columna:

DB2/400 Manual de Consulta SQL V3R7 Ejemplos

© Copyright IBM Corp. 1995, 1996 2.15.6.1 - 1

Page 194: DB2/400 Manual de Consulta SQLmarce.com/docs/systems/manuales/db2_400_manual_consulta_sql_v3r7.pdf · VERSION Nota de Versión Segunda edición (noviembre de 1996) Este manual es

2.15.7 Predicado NULL +-------------------------------------------------- ----------------------+ ¦ ¦ ¦ >-- expresión -- IS ----------- NULL--------------------------------------> ¦ ¦ +- NOT-+ ¦ ¦ ¦ +-------------------------------------------------- ----------------------+ El predicado NULL realiza una prueba para ver si ha y valores nulos. El resultado de un predicado NULL no puede ser desc onocido. Si el valor de la expresión es nulo, el resultado es verdadero. Si el valor no es nulo, el resultado es falso. Si se especifica NOT, el resultado se invierte. Subtemas 2.15.7.1 Ejemplos

DB2/400 Manual de Consulta SQL V3R7 Predicado NULL

© Copyright IBM Corp. 1995, 1996 2.15.7 - 1

Page 195: DB2/400 Manual de Consulta SQLmarce.com/docs/systems/manuales/db2_400_manual_consulta_sql_v3r7.pdf · VERSION Nota de Versión Segunda edición (noviembre de 1996) Este manual es

2.15.7.1 Ejemplos EMPLEADO.TELF IS NULL SUELDO IS NOT NULL

DB2/400 Manual de Consulta SQL V3R7 Ejemplos

© Copyright IBM Corp. 1995, 1996 2.15.7.1 - 1

Page 196: DB2/400 Manual de Consulta SQLmarce.com/docs/systems/manuales/db2_400_manual_consulta_sql_v3r7.pdf · VERSION Nota de Versión Segunda edición (noviembre de 1996) Este manual es

2.16 Condiciones de búsqueda +-------------------------------------------------- ----------------------+ ¦ ¦ ¦ >------------- predicado ----------------------------------------------> ¦ ¦ +- NOT-+ +- (condición-búsqueda) -+ ¦ ¦ ¦ ¦ <--------------------------------------------- -+ ¦ ¦ >------------------------------------------------ --------------------> ¦ ¦ +--- AND--------------- predicado --------------+ ¦ ¦ +- OR--+ +- NOT-+ +- (condición-búsqueda) -+ ¦ ¦ ¦ +-------------------------------------------------- ----------------------+ Una condición de búsqueda especifica una condición que es verdadera, falsa o desconocida respecto a una fila o grupo dados. El resultado de una condición de búsqueda se deriva aplicando los operadores lógicos especificados (AND, OR, NOT) al resultado de cada uno de los predicados especificados. Si no se especifi can operadores lógicos, el resultado de la condición de búsqueda es el resu ltado del predicado especificado. AND y OR se definen en la tabla siguiente en la que P y Q son cualquier predicado: +-------------------------------------------------- -+ ¦ Tabla 5. Tablas de verdad de AND y OR ¦ +-------------------------------------------------- -¦ ¦ P ¦ Q ¦ P AND Q ¦ P OR Q ¦ +------------+------------+------------+----------- -¦ ¦ Verdadero ¦ Verdadero ¦ Verdadero ¦ Verdadero ¦ +------------+------------+------------+----------- -¦ ¦ Verdadero ¦ Falso ¦ Falso ¦ Verdadero ¦ +------------+------------+------------+----------- -¦ ¦ Verdadero ¦ Desconocido¦ Desconocido¦ Verdadero ¦ +------------+------------+------------+----------- -¦ ¦ Falso ¦ Verdadero ¦ Falso ¦ Verdadero ¦ +------------+------------+------------+----------- -¦ ¦ Falso ¦ Falso ¦ Falso ¦ Falso ¦ +------------+------------+------------+----------- -¦ ¦ Falso ¦ Desconocido¦ Falso ¦ Desconocid o¦ +------------+------------+------------+----------- -¦ ¦ Desconocido¦ Verdadero ¦ Desconocido¦ Verdadero ¦ +------------+------------+------------+----------- -¦ ¦ Desconocido¦ Falso ¦ Falso ¦ Desconocid o¦ +------------+------------+------------+----------- -¦ ¦ Desconocido¦ Desconocido¦ Desconocido¦ Desconocid o¦ +-------------------------------------------------- -+ NOT(verdadero) es falso, NOT(falso) es verdadero y NOT(desconocido) es desconocido. Las condiciones de búsqueda encerradas entre parént esis se evalúan en primer lugar. Si no hay paréntesis que especifique n el orden de evaluación, se aplica NOT antes que AND y AND antes que OR. El orden en que se evalúan los operadores con el mismo nivel de precedencia no está definido para permitir así la optimización de las c ondiciones de búsqueda. Subtemas 2.16.1 Ejemplos

DB2/400 Manual de Consulta SQL V3R7 Condiciones de búsqueda

© Copyright IBM Corp. 1995, 1996 2.16 - 1

Page 197: DB2/400 Manual de Consulta SQLmarce.com/docs/systems/manuales/db2_400_manual_consulta_sql_v3r7.pdf · VERSION Nota de Versión Segunda edición (noviembre de 1996) Este manual es

2.16.1 Ejemplos Ejemplo 1 PROYPRI = 'MA2100' AND NUMDEP = 'D11' OR NUMDEP = 'B03' OR NUMDEP = 'E11' � � � +-+ +------+ +------+ ¦1¦ ¦2 ó 3 ¦ ¦2 ó 3 ¦ +-+ +------+ +------+ Ejemplo 2 PROYPRI = 'MA2100' AND (NUMDEP = 'D11' OR NUMDEP = 'B03') OR NUMDEP = 'E11' � � � +-+ +-+ +-+ ¦2¦ ¦1¦ ¦3¦ +-+ +-+ +-+

DB2/400 Manual de Consulta SQL V3R7 Ejemplos

© Copyright IBM Corp. 1995, 1996 2.16.1 - 1

Page 198: DB2/400 Manual de Consulta SQLmarce.com/docs/systems/manuales/db2_400_manual_consulta_sql_v3r7.pdf · VERSION Nota de Versión Segunda edición (noviembre de 1996) Este manual es

3.0 Capítulo 3. Funciones Una función es una operación designada por un nombre de funció n seguido de uno o más operandos que están encerrados entre paré ntesis. Los operandos de las funciones se llaman argumentos . La mayoría de funciones tienen un único argumento que está especificado por una expresión . El resultado de una función es un valor único derivado de la aplica ción de la función al resultado de la expresión. Las funciones se clasifican en funciones escalares o funciones de columna . El argumento de una función de columna es un conjun to de valores. El argumento de una función escalar es un solo valor. En la sintaxis de SQL, el término función se utiliza sólo en la definición de una expresión. Así pues, una función puede util izarse únicamente dónde pueda utilizarse una expresión. Existen restriccio nes adicionales que rigen la utilización de las funciones de columna, t al y como se explica en el apartado siguiente y en el Capítulo 4, "Consultas" en el tema 4.0 . Subtemas 3.1 Funciones de columna 3.2 Funciones escalares

DB2/400 Manual de Consulta SQL V3R7 Capítulo 3. Funciones

© Copyright IBM Corp. 1995, 1996 3.0 - 1

Page 199: DB2/400 Manual de Consulta SQLmarce.com/docs/systems/manuales/db2_400_manual_consulta_sql_v3r7.pdf · VERSION Nota de Versión Segunda edición (noviembre de 1996) Este manual es

3.1 Funciones de columna La información siguiente atañe a todas las funcione s de columna que no sean COUNT(*). El argumento de una función de columna es un conjun to de valores derivados de una o más columnas. El ámbito del conjunto es u n grupo o una tabla de resultados intermedios, tal y como se explica en el Capítulo 4, "Consultas" . Si se especifica una cláusula GROUP BY en una consu lta, y el resultado intermedio de las cláusulas FROM, WHERE, GROUP BY y HAVING es el conjunto vacío, no se aplican las funciones de columna, el r esultado de la consulta es el conjunto vacío, el SQLCODE se establece en +1 00, y el SQLSTATE se establece en '02000'. Si no se especifica una cláusula GROUP BY en una co nsulta y el resultado intermedio de las cláusulas FROM, WHERE y HAVING es el conjunto vacío, se aplican las funciones de columna en el conjunto vac ío. Subtemas 3.1.1 Ejemplo 3.1.2 AVG 3.1.3 COUNT 3.1.4 MAX 3.1.5 MIN 3.1.6 STDDEV 3.1.7 SUM 3.1.8 VARIANCE o VAR

DB2/400 Manual de Consulta SQL V3R7 Funciones de columna

© Copyright IBM Corp. 1995, 1996 3.1 - 1

Page 200: DB2/400 Manual de Consulta SQLmarce.com/docs/systems/manuales/db2_400_manual_consulta_sql_v3r7.pdf · VERSION Nota de Versión Segunda edición (noviembre de 1996) Este manual es

3.1.1 Ejemplo El resultado de la siguiente sentencia SELECT es el número de valores distintos de TRAB para los empleados del departamen to D01: SELECT COUNT(DISTINCT TRAB) FROM DATOSCORP.EMPLEADO WHERE DEPTTRAB = 'D01' La palabra clave DISTINCT no se considera un argume nto de la función, sino, más bien, una especificación de una operación que se realiza antes de que se aplique la función. Si se especifica DIS TINCT, se eliminan los valores duplicados. Si se especifica ALL implícita o explícitamente, los valores duplicados no se eliminan. Los valores del argumento se especifican mediante u na expresión. Esta expresión debe incluir como mínimo un nombre-columna . Si un nombre-columna es una referencia correlacionada (lo que está permitido en una subconsulta de una cláusula HAVING ), la expresión no puede incluir operadores. A continuación, y en orden alfabético, aparece una definición de cada una de las funciones de columna.

DB2/400 Manual de Consulta SQL V3R7 Ejemplo

© Copyright IBM Corp. 1995, 1996 3.1.1 - 1

Page 201: DB2/400 Manual de Consulta SQLmarce.com/docs/systems/manuales/db2_400_manual_consulta_sql_v3r7.pdf · VERSION Nota de Versión Segunda edición (noviembre de 1996) Este manual es

3.1.2 AVG +-------------------------------------------------- ----------------------+ ¦ ¦ ¦ +- ALL------+ ¦ ¦ >-- AVG--(--+----------+-- expresión --)--------------------------------> ¦ ¦ +- DISTINCT -+ ¦ ¦ ¦ +-------------------------------------------------- ----------------------+ La función AVG devuelve el promedio de un conjunto de números. Los valores de argumento deben ser números y la sum a debe estar dentro del rango del tipo de datos del resultado. El resultad o puede ser nulo. El tipo de datos del resultado es el mismo que el t ipo de datos de los valores de argumento, excepto por lo siguiente: � El resultado es coma flotante de precisión doble si los valores de argumento son de coma flotante de precisión sim ple. � El resultado es un entero grande si los valores de argumento son enteros pequeños. � El resultado es decimal si los valores de argume nto son binarios de escala diferente de cero. Si el tipo de datos de los valores de argumento es decimal o binario de escala diferente de cero con precisión p y escala s , la precisión del resultado es 31 y la escala 31- p+s . La función se aplica al conjunto de valores derivad os de los valores de argumento por la eliminación de los valores nulos. Si se utiliza DISTINCT, se eliminan los valores duplicados. Si la función se aplica al conjunto vacío, el resul tado es un valor nulo. De lo contrario, el resultado es el valor promedio del conjunto. El orden en que se suman los valores es indefinido, pero todo resultado intermedio debe estar dentro del rango del tipo de datos del resultado. Si el tipo del resultado es un entero, la parte fra ccionaria del promedio se pierde. Subtemas 3.1.2.1 Ejemplo

DB2/400 Manual de Consulta SQL V3R7 AVG

© Copyright IBM Corp. 1995, 1996 3.1.2 - 1

Page 202: DB2/400 Manual de Consulta SQLmarce.com/docs/systems/manuales/db2_400_manual_consulta_sql_v3r7.pdf · VERSION Nota de Versión Segunda edición (noviembre de 1996) Este manual es

3.1.2.1 Ejemplo Ejemplo 1 : Utilizando la tabla PROYECTO, establecer la vari able del lenguaje principal PROMEDIO (decimal(5,2)) en el pr omedio de personal (PRPERSON) de los proyectos del departamento (NUMDE PT) 'D11'. SELECT AVG(PRPERSON) INTO :PROMEDIO FROM PROYECTO WHERE NUMDEPT = 'D11' Da como resultado el que PROMEDIO quede establecido en 4.25 (es decir, 17/4) cuando se utiliza la tabla de ejemplo. Ejemplo 2 : Utilizando la tabla PROYECTO, establecer la vari able del lenguaje principal UN_CALC en el promedio de cada v alor de personal exclusivo (PRPERSON) de los proyectos del departame nto (NUMDEPT) 'D11'. SELECT AVG(DISTINCT PRPERSON) INTO :UN_CALC FROM PROYECTO WHERE NUMDEPT = 'D11' Da como resultado el que UN_CALC quede establecido en 4.66 (es decir, 14/3) cuando se utiliza la tabla de ejemplo.

DB2/400 Manual de Consulta SQL V3R7 Ejemplo

© Copyright IBM Corp. 1995, 1996 3.1.2.1 - 1

Page 203: DB2/400 Manual de Consulta SQLmarce.com/docs/systems/manuales/db2_400_manual_consulta_sql_v3r7.pdf · VERSION Nota de Versión Segunda edición (noviembre de 1996) Este manual es

3.1.3 COUNT +-------------------------------------------------- ----------------------+ ¦ ¦ ¦ +- ALL------+ ¦ ¦ >-- COUNT--(----+----------+-- expresión ----)--------------------------> ¦ ¦ ¦ +- DISTINCT -+ ¦ ¦ ¦ +- * -----------------------+ ¦ ¦ ¦ +-------------------------------------------------- ----------------------+ La función COUNT devuelve el número de filas o valo res de un conjunto de filas o de valores. El resultado de la función es un entero grande y de be estar comprendido en| el rango de los enteros grandes. El resultado no p uede ser nulo. Si la| tabla es una tabla distribuida, el resultado es DEC IMAL(15,0). Para| obtener más información acerca de las tablas distri buidas, consulte la| publicación DB2 Multisystem for OS/400 . El argumento de COUNT(*) es un conjunto de filas. El resultado es el número de filas del conjunto. En el recuento se in cluye una fila que sólo contiene valores nulos. El argumento de COUNT(expresión) es un conjunto de valores. La función se aplica al conjunto de valores derivados de los valo res de argumento por eliminación de los valores nulos. El resultado es el número de valores del conjunto. El argumento de COUNT(DISTINCT expresión) es un con junto de valores. Los valores de argumento pueden ser cualquiera excepto las series de caracteres con un atributo de longitud mayor que 20 00 caracteres o las series gráficas con un atributo de longitud mayor q ue 1000 caracteres DBCS o UCS-2. La función se aplica al conjunto de valor es derivados de los valores de argumento por la eliminación de los valo res nulos y duplicados. El resultado es el número de valores del conjunto. | Si está en vigor una secuencia de clasificación dis tinta de *HEX al| ejecutar la sentencia que contiene la función COUNT (DISTINCT expresión) y| los argumentos contienen datos SBCS o mixtos, se ob tiene el resultado| comparando los valores significativos de cada valor del conjunto. Los| valores significativos están basados en la secuenci a de clasificación. Subtemas 3.1.3.1 Ejemplo

DB2/400 Manual de Consulta SQL V3R7 COUNT

© Copyright IBM Corp. 1995, 1996 3.1.3 - 1

Page 204: DB2/400 Manual de Consulta SQLmarce.com/docs/systems/manuales/db2_400_manual_consulta_sql_v3r7.pdf · VERSION Nota de Versión Segunda edición (noviembre de 1996) Este manual es

3.1.3.1 Ejemplo Ejemplo 1 : Utilizando la tabla EMPLEADO, establecer la vari able del lenguaje principal MUJER (int) en el número de fila s en las que el valor de la columna SEXO es 'M'. SELECT COUNT(*) INTO :MUJER FROM EMPLEADO WHERE SEXO = 'M' Da como resultado el que MUJER quede establecido en 13 cuando se utiliza la tabla de ejemplo. Ejemplo 2 : Utilizando la tabla EMPLEADO, establecer la vari able del lenguaje principal MUJER_EN_DEPT (int) en el número de departamentos (DEPTTRAB) que tienen al menos una mujer como miemb ro del mismo. SELECT COUNT(DISTINCT DEPTTRAB) INTO :MUJER_EN_DEPT FROM EMPLEADO WHERE SEXO='M' Da como resultado el que MUJER_EN_DEPT quede establ ecido en 5 al utilizar la tabla de ejemplo (hay una mujer como mínimo en l os departamentos A00, C01, D11, D21 y E11). Ejemplo 3 : Utilizando la tabla PROYECTO, establecer la vari able del lenguaje principal RECUENTO_SUBPROY (int) en el núm ero de proyectos que son subproyectos de un proyecto principal. SELECT COUNT(PROYPRIN) INTO :RECUENTO_SUBPROY FROM PROYECTO Da como resultado el que RECUENTO_SUBPRY quede esta blecido en 14 cuando se utilizan las tablas de ejemplo.

DB2/400 Manual de Consulta SQL V3R7 Ejemplo

© Copyright IBM Corp. 1995, 1996 3.1.3.1 - 1

Page 205: DB2/400 Manual de Consulta SQLmarce.com/docs/systems/manuales/db2_400_manual_consulta_sql_v3r7.pdf · VERSION Nota de Versión Segunda edición (noviembre de 1996) Este manual es

3.1.4 MAX +-------------------------------------------------- ----------------------+ ¦ ¦ ¦ +- ALL------+ ¦ ¦ >-- MAX--(--+----------+-- expresión --)--------------------------------> ¦ ¦ +- DISTINCT -+ ¦ ¦ ¦ +-------------------------------------------------- ----------------------+ La función de columna MAX devuelve el valor máximo de un conjunto de valores de un grupo. Los valores de argumento pueden ser cualquiera exce pto las series de caracteres con un atributo de longitud mayor que 25 6 caracteres o las series gráficas con un atributo de longitud mayor q ue 128 caracteres DBCS o UCS-2. El tipo de datos y el atributo de longitud del resu ltado son idénticos al tipo de datos y atributo de longitud de los valores de argumento. Cuando el argumento es una serie, el resultado tiene el mi smo CCSID que el argumento. El resultado puede ser nulo. Si está en vigor una secuencia de clasificación dis tinta de *HEX al ejecutar la sentencia que contiene la función MAX y los argumentos contienen datos SBCS o mixtos, se obtiene el result ado comparando los valores significativos de cada valor del conjunto. Los valores significativos están basados en la secuencia de cla sificación. La función se aplica al conjunto de valores derivad os de los valores de argumento por la eliminación de los valores nulos. Si la función se aplica al conjunto vacío, el resul tado es un valor nulo. De lo contrario, el resultado es el valor máximo de l conjunto. La especificación de DISTINCT no afecta al resultad o y no es aconsejable. Subtemas 3.1.4.1 Ejemplos

DB2/400 Manual de Consulta SQL V3R7 MAX

© Copyright IBM Corp. 1995, 1996 3.1.4 - 1

Page 206: DB2/400 Manual de Consulta SQLmarce.com/docs/systems/manuales/db2_400_manual_consulta_sql_v3r7.pdf · VERSION Nota de Versión Segunda edición (noviembre de 1996) Este manual es

3.1.4.1 Ejemplos � Utilizando la tabla EMPLEADO, establecer la vari able del lenguaje principal SUELDO_MAX (decimal(7,2)) en el valor del sueldo mensual máximo (SUELDO / 12). SELECT MAX(SUELDO) / 12 INTO :SUELDO_MAX FROM EMPLEADO Da como resultado el que SUELDO_MAX quede estab lecido en 4395,83 al utilizar la tabla de ejemplo. � Utilizando la tabla PROYECTO, establecer la vari able del lenguaje principal ULT_PROY (char(24)) en el nombre de p royecto (NOMBREPR) que figura en último lugar en el orden de clasifica ción. SELECT MAX(NOMBREPR) INTO :ULT_PROY FROM PROYECTO Da como resultado el que ULT_PROY quede estable cido en 'PLANIF UNIFICADA' al utilizar la tabla de ejemplo.

DB2/400 Manual de Consulta SQL V3R7 Ejemplos

© Copyright IBM Corp. 1995, 1996 3.1.4.1 - 1

Page 207: DB2/400 Manual de Consulta SQLmarce.com/docs/systems/manuales/db2_400_manual_consulta_sql_v3r7.pdf · VERSION Nota de Versión Segunda edición (noviembre de 1996) Este manual es

3.1.5 MIN +-------------------------------------------------- ----------------------+ ¦ ¦ ¦ +- ALL------+ ¦ ¦ >-- MIN--(--+----------+-- expresión --)--------------------------------> ¦ ¦ +- DISTINCT -+ ¦ ¦ ¦ +-------------------------------------------------- ----------------------+ La función de columna MIN devuelve el valor mínimo de un conjunto de valores de un grupo. Los valores de argumento pueden ser cualquiera exce pto las series de caracteres con un atributo de longitud mayor que 25 6 caracteres o las series gráficas con un atributo de longitud mayor q ue 128 caracteres DBCS o UCS-2. El tipo de datos y el atributo de longitud del resu ltado son idénticos al tipo de datos y atributo de longitud de los valores de argumento. Cuando el argumento es una serie, el resultado tiene el mi smo CCSID que el argumento. El resultado puede ser nulo. Si está en vigor una secuencia de clasificación dis tinta de *HEX al ejecutar la sentencia que contiene la función MIN y los argumentos contienen datos SBCS o mixtos, se obtiene el result ado comparando los valores significativos de cada valor del conjunto. La función se aplica al conjunto de valores derivad os de los valores de argumento por la eliminación de los valores nulos. Si la función se aplica al conjunto vacío, el resul tado es un valor nulo. De no ser así, el resultado es el valor mínimo del conjunto. La especificación de DISTINCT no afecta al resultad o y no es aconsejable. Subtemas 3.1.5.1 Ejemplos

DB2/400 Manual de Consulta SQL V3R7 MIN

© Copyright IBM Corp. 1995, 1996 3.1.5 - 1

Page 208: DB2/400 Manual de Consulta SQLmarce.com/docs/systems/manuales/db2_400_manual_consulta_sql_v3r7.pdf · VERSION Nota de Versión Segunda edición (noviembre de 1996) Este manual es

3.1.5.1 Ejemplos � Utilizando la tabla EMPLEADO, establecer la vari able del lenguaje principal DIFER_COMIS (decimal(7,2)) en la dife rencia entre las comisiones máxima y mínima (COMI) correspondien tes a los miembros del departamento (DEPTTRAB) 'D11'. SELECT MAX(COMI) - MIN( COMI) INTO :DIFER_COMIS FROM EMPLEADO WHERE DEPTTRAB = 'D11' Da como resultado el que DIFER_COMIS quede esta blecido en 1118 (es decir, 2580 - 1462) al utilizar la tabla de eje mplo. � Utilizando la tabla PROYECTO, establecer la vari able del lenguaje principal ACABADO_PRIMERO (char(10)) en la fech a de finalización estimada (FCHFINPR) del primer proyecto que est á planificado para su finalización. SELECT MIN( FCHFINPR) INTO :ACABADO_PRIMERO FROM PROYECTO Da como resultado el que ACABADO_PRIMERO quede establecido en '1982-09-15' al utilizar la tabla de ejemplo.

DB2/400 Manual de Consulta SQL V3R7 Ejemplos

© Copyright IBM Corp. 1995, 1996 3.1.5.1 - 1

Page 209: DB2/400 Manual de Consulta SQLmarce.com/docs/systems/manuales/db2_400_manual_consulta_sql_v3r7.pdf · VERSION Nota de Versión Segunda edición (noviembre de 1996) Este manual es

3.1.6 STDDEV +-------------------------------------------------- ----------------------+ ¦ ¦ ¦ +- ALL------+ ¦ ¦ >-- STDDEV--(--+----------+-- expresión --)-----------------------------> ¦ ¦ +- DISTINCT -+ ¦ ¦ ¦ +-------------------------------------------------- ----------------------+ La función STDDEV devuelve la desviación estándar ( /n) de un conjunto de números. La fórmula utilizada para calcular STDDEV es: STDDEV = SQRT(VAR) donde SQRT(VAR) es la raíz cuadrada de la varianza. Los valores de argumento deben ser números y la sum a debe estar dentro del rango del tipo de datos del resultado. El tipo de datos del resultado es de coma flotante de precisión doble. El resultado puede ser nulo. La función se aplica al conjunto de valores derivad os de los valores de argumento por la eliminación de los valores nulos. Si se especifica DISTINCT, se eliminan los valores duplicados. Si la función se aplica al conjunto vacío, el resul tado es un valor nulo. Si no es así, el resultado es la desviación estánda r de los valores del conjunto. El orden en que se suman los valores es indefinido, pero todo resultado intermedio debe estar dentro del rango del tipo de datos del resultado. Subtemas 3.1.6.1 Ejemplo

DB2/400 Manual de Consulta SQL V3R7 STDDEV

© Copyright IBM Corp. 1995, 1996 3.1.6 - 1

Page 210: DB2/400 Manual de Consulta SQLmarce.com/docs/systems/manuales/db2_400_manual_consulta_sql_v3r7.pdf · VERSION Nota de Versión Segunda edición (noviembre de 1996) Este manual es

3.1.6.1 Ejemplo Utilizando la tabla EMPLEADO, establecer la variabl e del lenguaje principal DESV (FLOAT de precisión doble) en la des viación estándar del sueldo de los empleados del departamento A00. SELECT STDDEV(SUELDO) INTO :DESV FROM EMPLEADO WHERE DEPTTRAB = 'A00'; Da como resultado el que DESV quede establecido en aproximadamente 9938.00 al utilizar la tabla de ejemplo.

DB2/400 Manual de Consulta SQL V3R7 Ejemplo

© Copyright IBM Corp. 1995, 1996 3.1.6.1 - 1

Page 211: DB2/400 Manual de Consulta SQLmarce.com/docs/systems/manuales/db2_400_manual_consulta_sql_v3r7.pdf · VERSION Nota de Versión Segunda edición (noviembre de 1996) Este manual es

3.1.7 SUM +-------------------------------------------------- ----------------------+ ¦ ¦ ¦ +- ALL------+ ¦ ¦ >-- SUM--(--+----------+-- expresión --)--------------------------------> ¦ ¦ +- DISTINCT -+ ¦ ¦ ¦ +-------------------------------------------------- ----------------------+ La función SUM devuelve su suma de un conjunto de n úmeros. Los valores de argumento deben ser números y la sum a debe estar dentro del rango del tipo de datos del resultado. El resultad o puede ser nulo. El tipo de datos del resultado es el mismo que el t ipo de datos de los valores de argumento, con la excepción de que el re sultado es: � De coma flotante de precisión doble si los valor es de argumento son de coma flotante de precisión simple � Entero grande si los valores de argumento son en teros pequeños � Decimal si los valores de argumento son binarios de escala diferente de cero Si el tipo de datos de los valores de argumento es decimal o binario de escala diferente de cero la precisión del resultado es 31 y la escala es la misma que la de los valores de argumento. La función se aplica al conjunto de valores derivad os de los valores de argumento por la eliminación de los valores nulos. Si se especifica DISTINCT, se eliminan los valores duplicados. Si la función se aplica al conjunto vacío, el resul tado es un valor nulo. Si no es así, el resultado es la suma de los valore s del conjunto. El orden en que se suman los valores es indefinido, pero todo resultado intermedio debe estar dentro del rango del tipo de datos del resultado. Subtemas 3.1.7.1 Ejemplo

DB2/400 Manual de Consulta SQL V3R7 SUM

© Copyright IBM Corp. 1995, 1996 3.1.7 - 1

Page 212: DB2/400 Manual de Consulta SQLmarce.com/docs/systems/manuales/db2_400_manual_consulta_sql_v3r7.pdf · VERSION Nota de Versión Segunda edición (noviembre de 1996) Este manual es

3.1.7.1 Ejemplo Utilizando la tabla EMPLEADO, establecer la variabl e del lenguaje principal BONIF_TRAB (decimal(9,2)) es la bonificac ión total (BONIF) pagada a los oficinistas (TRAB='OFICI'). SELECT SUM(BONIF) INTO :BONIF_TRAB FROM EMPLEADO WHERE TRAB = 'OFICI' Da como resultado el que BONIF_TRAB quede estableci do en 2800 al utilizar la tabla de ejemplo.

DB2/400 Manual de Consulta SQL V3R7 Ejemplo

© Copyright IBM Corp. 1995, 1996 3.1.7.1 - 1

Page 213: DB2/400 Manual de Consulta SQLmarce.com/docs/systems/manuales/db2_400_manual_consulta_sql_v3r7.pdf · VERSION Nota de Versión Segunda edición (noviembre de 1996) Este manual es

3.1.8 VARIANCE o VAR +-------------------------------------------------- ----------------------+ ¦ ¦ ¦ +- ALL------+ ¦ ¦ >---- VARIANCE----(--+----------+-- expresión --)-----------------------> ¦ ¦ +- VAR------+ +- DISTINCT -+ ¦ ¦ ¦ +-------------------------------------------------- ----------------------+ Las funciones VAR y VARIANCE devuelven la variación parcial (/n) de un conjunto de números. La fórmula utilizada para cal cular VAR es: VAR = SUM(X**2)/COUNT(X) - (SUM(X)/COUNT(X))**2 Los valores de argumento deben ser números y la sum a debe estar dentro del rango del tipo de datos del resultado. El tipo de datos del resultado es de coma flotante de precisión doble. El resultado puede ser nulo. La función se aplica al conjunto de valores derivad os de los valores de argumento por la eliminación de los valores nulos. Si se especifica DISTINCT, se eliminan los valores duplicados. Si la función se aplica al conjunto vacío, el resul tado es un valor nulo. Si no es así, el resultado es la varianza de los va lores del conjunto. El orden en que se suman los valores es indefinido, pero todo resultado intermedio debe estar dentro del rango del tipo de datos del resultado. Subtemas 3.1.8.1 Ejemplo

DB2/400 Manual de Consulta SQL V3R7 VARIANCE o VAR

© Copyright IBM Corp. 1995, 1996 3.1.8 - 1

Page 214: DB2/400 Manual de Consulta SQLmarce.com/docs/systems/manuales/db2_400_manual_consulta_sql_v3r7.pdf · VERSION Nota de Versión Segunda edición (noviembre de 1996) Este manual es

3.1.8.1 Ejemplo Utilizando la tabla EMPLEADO, establecer la variabl e del lenguaje principal VARIAN (FLOAT de precisión doble) en la v ariación del sueldo de los empleados del departamento A00. SELECT VAR(SUELDO) INTO :VARIAN FROM EMPLEADO WHERE DEPTTRAB = 'A00'; Da como resultado el que VARIAN quede establecido e n aproximadamente 98763888,88 al utilizar la tabla de ejemplo.

DB2/400 Manual de Consulta SQL V3R7 Ejemplo

© Copyright IBM Corp. 1995, 1996 3.1.8.1 - 1

Page 215: DB2/400 Manual de Consulta SQLmarce.com/docs/systems/manuales/db2_400_manual_consulta_sql_v3r7.pdf · VERSION Nota de Versión Segunda edición (noviembre de 1996) Este manual es

3.2 Funciones escalares Una función escalar puede utilizarse siempre que pu eda utilizarse una expresión. Las restricciones que existen sobre la utilización de las funciones de columna no rigen para las funciones es calares porque una función escalar se aplica a un solo valor en lugar de a un conjunto de valores. El argumento de una función escalar, por ejemplo, puede ser una función. No obstante, las restricciones que se apl ican a la utilización de expresiones y a funciones de columna también rig en cuando se utiliza una expresión o función de columna en una función e scalar. Por ejemplo, el argumento de una función escalar puede ser una f unción de columna sólo si el contexto en que se utiliza la función escalar permite una función de columna. Subtemas 3.2.1 Ejemplo 3.2.2 ABS o ABSVAL 3.2.3 ACOS 3.2.4 ANTILOG 3.2.5 ASIN 3.2.6 ATAN 3.2.7 ATANH 3.2.8 CHAR 3.2.9 CHARACTER_LENGTH o CHAR_LENGTH 3.2.10 COALESCE 3.2.11 CONCAT 3.2.12 COS 3.2.13 COSH 3.2.14 COT 3.2.15 CURDATE 3.2.16 CURTIME 3.2.17 DATE 3.2.18 DAY 3.2.19 DAYOFMONTH 3.2.20 DAYOFWEEK 3.2.21 DAYOFYEAR 3.2.22 DAYS 3.2.23 DECIMAL 3.2.24 DEGREES 3.2.25 DIGITS 3.2.26 DOUBLE_PRECISION o DOUBLE 3.2.27 EXP 3.2.28 FLOAT 3.2.29 FLOOR 3.2.30 HASH 3.2.31 HEX 3.2.32 HOUR 3.2.33 IFNULL 3.2.34 INTEGER 3.2.35 LAND 3.2.36 LEFT 3.2.37 LENGTH 3.2.38 LN 3.2.39 LNOT 3.2.40 LOG o LOG10 3.2.41 LOR 3.2.42 LTRIM 3.2.43 MAX 3.2.44 MICROSECOND 3.2.45 MIN 3.2.46 MINUTE 3.2.47 MOD 3.2.48 MONTH 3.2.49 NODENAME 3.2.50 NODENUMBER 3.2.51 NOW 3.2.52 PARTITION 3.2.53 POWER 3.2.54 QUARTER 3.2.55 RRN 3.2.56 RTRIM 3.2.57 SECOND 3.2.58 SIN 3.2.59 SINH 3.2.60 SQRT 3.2.61 STRIP 3.2.62 SUBSTRING o SUBSTR 3.2.63 TAN 3.2.64 TANH 3.2.65 TIME 3.2.66 TIMESTAMP 3.2.67 TRANSLATE 3.2.68 TRIM 3.2.69 UCASE o UPPER 3.2.70 VALUE 3.2.71 VARCHAR 3.2.72 VARGRAPHIC 3.2.73 WEEK 3.2.74 XOR 3.2.75 YEAR 3.2.76 ZONED

DB2/400 Manual de Consulta SQL V3R7 Funciones escalares

© Copyright IBM Corp. 1995, 1996 3.2 - 1

Page 216: DB2/400 Manual de Consulta SQLmarce.com/docs/systems/manuales/db2_400_manual_consulta_sql_v3r7.pdf · VERSION Nota de Versión Segunda edición (noviembre de 1996) Este manual es

3.2.1 Ejemplo El resultado de la siguiente sentencia SELECT tiene tantas filas como empleados haya en el departamento D01: SELECT NUMEMP, APELL, YEAR(CURRENT DATE - FCHNACIM) FROM DATOS.EMPLEADO WHERE DEPTTRAB = 'D01'

DB2/400 Manual de Consulta SQL V3R7 Ejemplo

© Copyright IBM Corp. 1995, 1996 3.2.1 - 1

Page 217: DB2/400 Manual de Consulta SQLmarce.com/docs/systems/manuales/db2_400_manual_consulta_sql_v3r7.pdf · VERSION Nota de Versión Segunda edición (noviembre de 1996) Este manual es

3.2.2 ABS o ABSVAL +-------------------------------------------------- ----------------------+ ¦ ¦ ¦ >---- ABS-------(---- expresión ----)-----------------------------------> ¦ ¦ +- ABSVAL-+ ¦ ¦ ¦ +-------------------------------------------------- ----------------------+ Las funciones ABS y ABSVAL devuelven el valor absol uto de un número. El argumento debe ser un número. El tipo de datos y el atributo de longitud del resu ltado son los mismos que los del valor de argumento, con la excepción de que el resultado es un entero grande si el valor de argumento es un entero pequeño, y es de coma flotante de precisión doble si el valor de argument o es de coma flotante de precisión simple. Si el argumento puede ser nul o, el resultado también; si el argumento es nulo, el resultado es e l valor nulo. Subtemas 3.2.2.1 Ejemplo

DB2/400 Manual de Consulta SQL V3R7 ABS o ABSVAL

© Copyright IBM Corp. 1995, 1996 3.2.2 - 1

Page 218: DB2/400 Manual de Consulta SQLmarce.com/docs/systems/manuales/db2_400_manual_consulta_sql_v3r7.pdf · VERSION Nota de Versión Segunda edición (noviembre de 1996) Este manual es

3.2.2.1 Ejemplo Supongamos que la variable del lenguaje principal B ENEFI es un entero grande con un valor de -50000. ABSVAL(:BENEFI) Devuelve el valor 50000.

DB2/400 Manual de Consulta SQL V3R7 Ejemplo

© Copyright IBM Corp. 1995, 1996 3.2.2.1 - 1

Page 219: DB2/400 Manual de Consulta SQLmarce.com/docs/systems/manuales/db2_400_manual_consulta_sql_v3r7.pdf · VERSION Nota de Versión Segunda edición (noviembre de 1996) Este manual es

3.2.3 ACOS +-------------------------------------------------- ----------------------+ ¦ ¦ ¦ >-- ACOS--(---- expresión ----)-----------------------------------------> ¦ ¦ ¦ +-------------------------------------------------- ----------------------+ La función ACOS devuelve el arco coseno de un númer o, en radianes. Las funciones ACOS y COS son operaciones inversas. El argumento debe ser un número cuyo valor sea mayo r o igual que -1 y menor o igual que 1. El tipo de datos del resultado es de coma flotante de precisión doble. Si el argumento puede ser nulo, el resultado también; si el argumento es nulo, el resultado es el valor nulo. El resultado está dentro del rango de 0 a pi (pi = 3,1416). Subtemas 3.2.3.1 Ejemplo

DB2/400 Manual de Consulta SQL V3R7 ACOS

© Copyright IBM Corp. 1995, 1996 3.2.3 - 1

Page 220: DB2/400 Manual de Consulta SQLmarce.com/docs/systems/manuales/db2_400_manual_consulta_sql_v3r7.pdf · VERSION Nota de Versión Segunda edición (noviembre de 1996) Este manual es

3.2.3.1 Ejemplo Supongamos que la variable del lenguaje principal A COSENO es una variable del lenguaje principal decimal (10,9) con un valor de 0,070737202. ACOS(:ACOSENO) Devuelve el valor aproximado 1,49.

DB2/400 Manual de Consulta SQL V3R7 Ejemplo

© Copyright IBM Corp. 1995, 1996 3.2.3.1 - 1

Page 221: DB2/400 Manual de Consulta SQLmarce.com/docs/systems/manuales/db2_400_manual_consulta_sql_v3r7.pdf · VERSION Nota de Versión Segunda edición (noviembre de 1996) Este manual es

3.2.4 ANTILOG +-------------------------------------------------- ----------------------+ ¦ ¦ ¦ >-- ANTILOG--(---- expresión ----)--------------------------------------> ¦ ¦ ¦ +-------------------------------------------------- ----------------------+ La función ANTILOG devuelve el antilogaritmo (de ba se 10) de un número. Las funciones ANTILOG y LOG son operaciones inversa s. El argumento debe ser un número. El tipo de datos del resultado es de coma flotante de precisión doble. Si el argumento puede ser nulo, el resultado también; si el argumento es nulo, el resultado es el valor nulo. Subtemas 3.2.4.1 Ejemplo

DB2/400 Manual de Consulta SQL V3R7 ANTILOG

© Copyright IBM Corp. 1995, 1996 3.2.4 - 1

Page 222: DB2/400 Manual de Consulta SQLmarce.com/docs/systems/manuales/db2_400_manual_consulta_sql_v3r7.pdf · VERSION Nota de Versión Segunda edición (noviembre de 1996) Este manual es

3.2.4.1 Ejemplo Supongamos que la variable del lenguaje principal A LOG es una variable del lenguaje principal decimal (10,9) con un valor de 1 ,499961866. ANTILOG(:ALOG) Devuelve el valor aproximado 31,62.

DB2/400 Manual de Consulta SQL V3R7 Ejemplo

© Copyright IBM Corp. 1995, 1996 3.2.4.1 - 1

Page 223: DB2/400 Manual de Consulta SQLmarce.com/docs/systems/manuales/db2_400_manual_consulta_sql_v3r7.pdf · VERSION Nota de Versión Segunda edición (noviembre de 1996) Este manual es

3.2.5 ASIN +-------------------------------------------------- ----------------------+ ¦ ¦ ¦ >-- ASIN--(---- expresión ----)-----------------------------------------> ¦ ¦ ¦ +-------------------------------------------------- ----------------------+ La función ASIN devuelve el arco seno de un número, en radianes. Las funciones ASIN y SIN son operaciones inversas. El argumento debe ser un número cuyo valor sea mayo r o igual que -1 y menor o igual que 1. El tipo de datos del resultado es de coma flotante de precisión doble. Si el argumento puede ser nulo, el resultado también; si el argumento es nulo, el resultado es el valor nulo. El argumento está dentro del rango de -pi/2 a pi/2 (pi = 3,1416). Subtemas 3.2.5.1 Ejemplo

DB2/400 Manual de Consulta SQL V3R7 ASIN

© Copyright IBM Corp. 1995, 1996 3.2.5 - 1

Page 224: DB2/400 Manual de Consulta SQLmarce.com/docs/systems/manuales/db2_400_manual_consulta_sql_v3r7.pdf · VERSION Nota de Versión Segunda edición (noviembre de 1996) Este manual es

3.2.5.1 Ejemplo Supongamos que la variable del lenguaje principal A SENO es una variable del lenguaje principal decimal (10,9) con un valor de 0,997494987. ASIN(:ASENO) Devuelve el valor aproximado 1,50.

DB2/400 Manual de Consulta SQL V3R7 Ejemplo

© Copyright IBM Corp. 1995, 1996 3.2.5.1 - 1

Page 225: DB2/400 Manual de Consulta SQLmarce.com/docs/systems/manuales/db2_400_manual_consulta_sql_v3r7.pdf · VERSION Nota de Versión Segunda edición (noviembre de 1996) Este manual es

3.2.6 ATAN +-------------------------------------------------- ----------------------+ ¦ ¦ ¦ >-- ATAN--(---- expresión ----)-----------------------------------------> ¦ ¦ ¦ +-------------------------------------------------- ----------------------+ La función ATAN devuelve el arco tangente de un núm ero, en radianes. Las funciones ATAN y TAN son operaciones inversas. El argumento debe ser un número. El tipo de datos del resultado es de coma flotante de precisión doble. Si el argumento puede ser nulo, el resultado también; si el argumento es nulo, el resultado es el valor nulo. El argumento está dentro del rango de -pi/2 a pi/2 (pi = 3,1416). Subtemas 3.2.6.1 Ejemplo

DB2/400 Manual de Consulta SQL V3R7 ATAN

© Copyright IBM Corp. 1995, 1996 3.2.6 - 1

Page 226: DB2/400 Manual de Consulta SQLmarce.com/docs/systems/manuales/db2_400_manual_consulta_sql_v3r7.pdf · VERSION Nota de Versión Segunda edición (noviembre de 1996) Este manual es

3.2.6.1 Ejemplo Supongamos que la variable del lenguaje principal A TANGENTE es una variable del lenguaje principal decimal (10,8) con un valor de 14,10141995. ATAN(:ATANGENTE) Devuelve el valor aproximado 1,50.

DB2/400 Manual de Consulta SQL V3R7 Ejemplo

© Copyright IBM Corp. 1995, 1996 3.2.6.1 - 1

Page 227: DB2/400 Manual de Consulta SQLmarce.com/docs/systems/manuales/db2_400_manual_consulta_sql_v3r7.pdf · VERSION Nota de Versión Segunda edición (noviembre de 1996) Este manual es

3.2.7 ATANH +-------------------------------------------------- ----------------------+ ¦ ¦ ¦ >-- ATANH--(---- expresión ----)----------------------------------------> ¦ ¦ ¦ +-------------------------------------------------- ----------------------+ La función ATANH devuelve el arco tangente hiperból ico de un número, en radianes. Las funciones ATANH y TANH son operacion es inversas. El argumento debe ser un número cuyo valor sea mayo r que -1 y menor que 1. El tipo de datos del resultado es de coma flotante de precisión doble. Si el argumento puede ser nulo, el resultado también; si el argumento es nulo, el resultado es el valor nulo. Subtemas 3.2.7.1 Ejemplo

DB2/400 Manual de Consulta SQL V3R7 ATANH

© Copyright IBM Corp. 1995, 1996 3.2.7 - 1

Page 228: DB2/400 Manual de Consulta SQLmarce.com/docs/systems/manuales/db2_400_manual_consulta_sql_v3r7.pdf · VERSION Nota de Versión Segunda edición (noviembre de 1996) Este manual es

3.2.7.1 Ejemplo Supongamos que la variable del lenguaje principal A TANH es una variable del lenguaje principal decimal (10,9) con un valor de 0,905148254. ATANH(:ATANH) Devuelve el valor aproximado 1,50.

DB2/400 Manual de Consulta SQL V3R7 Ejemplo

© Copyright IBM Corp. 1995, 1996 3.2.7.1 - 1

Page 229: DB2/400 Manual de Consulta SQLmarce.com/docs/systems/manuales/db2_400_manual_consulta_sql_v3r7.pdf · VERSION Nota de Versión Segunda edición (noviembre de 1996) Este manual es

3.2.8 CHAR +-------------------------------------------------- ----------------------+ ¦ ¦ ¦ >-- CHAR--(-- expresión ------------)-----------------------------------> ¦ ¦ +- ,ISO -¦ ¦ ¦ +- ,USA-¦ ¦ ¦ +- ,EUR-¦ ¦ ¦ +- ,JIS -+ ¦ ¦ ¦ +-------------------------------------------------- ----------------------+ La función CHAR devuelve una representación de seri e de un valor de fecha y hora. El primer argumento debe ser una fecha, hora o indi cación de la hora. El segundo argumento, en caso de ser aplicable, es un formato de fecha y hora estándar SQL de IBM. El resultado de la función es una serie de caracter es de longitud fija. El CCSID de la serie es el CCSID SBCS por omisión d el servidor actual. Si el primer argumento puede ser nulo, el resultado ta mbién; si el primer argumento es nulo, el resultado es el valor nulo. El resto de las reglas dependen del tipo de datos d el primer argumento: � Si el primer argumento es una fecha: El resultado es la representación de serie de c aracteres de la fecha en el formato especificado por el segundo argum ento. Si no se especifica el segundo argumento, el formato uti lizado proviene de los parámetros de formato de fecha (DATFMT) y de se parador de fecha (DATSEP). Si el formato es ISO, USA, EUR o JIS , la longitud del resultado será 10. Si el formato es YMD, MDY o DMY, el resultado será 8. Si el formato es JUL, la longitud del result ado es 6. Los parámetros DATFMT y DATSEP se especifican e n los mandatos CRTSQLxxx (Crear Programa SQL), RUNSQLSTM (Ejec utar Sentencias SQL) y STRSQL (Arrancar SQL). Para REXX, se especific an en la sentencia SET OPTION. � Si el primer argumento es una hora: El resultado es la representación de serie de c aracteres de la hora en el formato especificado por el segundo argument o. Si no se especifica el segundo argumento, el formato utilizado prov iene de los parámetros de formato de hora (TIMFMT) y de separador de h ora (TIMSEP). La longitud del resultado es 8. Los parámetros TIMFMT y TIMSEP se especifican e n los mandatos CRTSQLxxx (Crear Programa SQL), RUNSQLSTM (Ejec utar Sentencias SQL) y STRSQL (Arrancar SQL). Para REXX, se especific an en la sentencia SET OPTION. � Si el primer argumento es una indicación de la h ora: No se podrá aplicar el segundo argumento y por lo tanto no debe especificarse. El resultado es la representación de serie de c aracteres de la indicación de la hora. La longitud del resulta do será 26. Subtemas 3.2.8.1 Ejemplos

DB2/400 Manual de Consulta SQL V3R7 CHAR

© Copyright IBM Corp. 1995, 1996 3.2.8 - 1

Page 230: DB2/400 Manual de Consulta SQLmarce.com/docs/systems/manuales/db2_400_manual_consulta_sql_v3r7.pdf · VERSION Nota de Versión Segunda edición (noviembre de 1996) Este manual es

3.2.8.1 Ejemplos � Supongamos que la columna FCHAINIP tiene un valo r interno equivalente a 1988-12-25. El formato de fecha es *MDY y el separador de fecha es una barra inclinada (/). CHAR(FCHAINIP, USA) Da como resultado el valor '12/25/1988'. CHAR(FCHAINIP ) Da como resultado el valor '12/25/88'. � Supongamos que la columna INICIO tiene un valor interno equivalente a 17.12.30, la variable del lenguaje principal DU R_HORA (decimal(6,0)) es una duración de hora equivalente a 050000 (e s decir, 5 horas). CHAR(INICIO, USA) Da como resultado el valor '5:12 PM'. CHAR(INICIO + :DUR_HORA, USA) Da como resultado el valor '10:12 PM'. � Supongamos que la columna RECIBIDO (indicación d e la hora) tiene un valor interno equivalente a la combinación de l as columnas FCHAINIP e INICIO. CHAR(RECIBIDO) Da como resultado el valor '1988-12-25-17.12.30 .000000'.

DB2/400 Manual de Consulta SQL V3R7 Ejemplos

© Copyright IBM Corp. 1995, 1996 3.2.8.1 - 1

Page 231: DB2/400 Manual de Consulta SQLmarce.com/docs/systems/manuales/db2_400_manual_consulta_sql_v3r7.pdf · VERSION Nota de Versión Segunda edición (noviembre de 1996) Este manual es

3.2.9 CHARACTER_LENGTH o CHAR_LENGTH +-------------------------------------------------- ----------------------+ ¦ ¦ ¦ >---- CHARACTER_LENGTH----(-- expresión --)-----------------------------> ¦ ¦ +- CHAR_LENGTH------+ ¦ ¦ ¦ +-------------------------------------------------- ----------------------+ La función CHARACTER_LENGTH devuelve la longitud de una expresión de serie. Esta expresión no puede ser una expresión de caracteres mixtos. El resultado de la función es un entero grande. Si el argumento puede ser nulo, el resultado también; si el argumento es nulo , el resultado es el valor nulo. El resultado es el número de caracteres del argumen to. La longitud de las series incluye blancos. La longitud de una serie d e longitud variable es la longitud real, no la longitud máxima. Subtemas 3.2.9.1 Ejemplo

DB2/400 Manual de Consulta SQL V3R7 CHARACTER_LENGTH o CHAR_LENGTH

© Copyright IBM Corp. 1995, 1996 3.2.9 - 1

Page 232: DB2/400 Manual de Consulta SQLmarce.com/docs/systems/manuales/db2_400_manual_consulta_sql_v3r7.pdf · VERSION Nota de Versión Segunda edición (noviembre de 1996) Este manual es

3.2.9.1 Ejemplo Supongamos que la variable del lenguaje principal D IRECCION es una serie de caracteres de longitud variable con un valor de 'C\ Severo Ochoa'. CHARACTER_LENGTH(:DIRECCION) Devuelve el valor 15.

DB2/400 Manual de Consulta SQL V3R7 Ejemplo

© Copyright IBM Corp. 1995, 1996 3.2.9.1 - 1

Page 233: DB2/400 Manual de Consulta SQLmarce.com/docs/systems/manuales/db2_400_manual_consulta_sql_v3r7.pdf · VERSION Nota de Versión Segunda edición (noviembre de 1996) Este manual es

3.2.10 COALESCE +-------------------------------------------------- ----------------------+ ¦ ¦ ¦ <------------+ ¦ ¦ >-- COALESCE--(-- expresión ---- ,expresión ----)-------------------------> ¦ ¦ ¦ +-------------------------------------------------- ----------------------+ La función COALESCE devuelve el primer argumento qu e no es nulo. Los argumentos deben ser compatibles. Los argument os de serie de caracteres son compatibles con los valores de fecha y hora. Por tanto, si algún argumento es una serie de caracteres, todos l os argumentos deben ser series de caracteres; si alguno es una fecha, todos los argumentos deben ser fechas; si alguno es un número, todos los argum entos deben ser números, y así sucesivamente. Los argumentos se evalúan en el orden en que se esp ecifican y el resultado de la función es el primer argumento no nulo. El r esultado puede ser nulo sólo si todos los argumentos pueden ser nulos y es nulo sólo si todos los argumentos son nulos. El argumento seleccionado se convierte, en caso necesario, a los atributos del resultado. Debe hab er dos o más argumentos. Los argumentos que no sean el primero pueden ser marcadores de parámetros. Los atributos del resultado se derivan de todos los operandos, tal como se explica en el apartado "Reglas para tipos de datos de resultado" en el tema 4.3.2 . Subtemas 3.2.10.1 Ejemplos

DB2/400 Manual de Consulta SQL V3R7 COALESCE

© Copyright IBM Corp. 1995, 1996 3.2.10 - 1

Page 234: DB2/400 Manual de Consulta SQLmarce.com/docs/systems/manuales/db2_400_manual_consulta_sql_v3r7.pdf · VERSION Nota de Versión Segunda edición (noviembre de 1996) Este manual es

3.2.10.1 Ejemplos � Al seleccionar todos los valores de todas las fi las de la tabla DEPART, si el jefe del departamento (NUMJE) no está (es decir, es nulo), devolver el valor 'AUSENTE'. SELECT NUMDEPT, NOMBDEPT, COALESCE(NUMJE, 'AUSENTE'), DEPTOADM FROM DEPART � Si al seleccionar el número de empleado (NUMEMP) y el sueldo (SUELDO) de todas las filas de la tabla EMPLEADO, falta el sueldo (es decir, es nulo), devolver el valor cero. SELECT NUMEMP, COALESCE(SUELDO,0) FROM EMPLEADO

DB2/400 Manual de Consulta SQL V3R7 Ejemplos

© Copyright IBM Corp. 1995, 1996 3.2.10.1 - 1

Page 235: DB2/400 Manual de Consulta SQLmarce.com/docs/systems/manuales/db2_400_manual_consulta_sql_v3r7.pdf · VERSION Nota de Versión Segunda edición (noviembre de 1996) Este manual es

3.2.11 CONCAT +-------------------------------------------------- ----------------------+ ¦ ¦ ¦ >-- CONCAT--(-- expresión --,-- expresión --)-----------------------------> ¦ ¦ ¦ +-------------------------------------------------- ----------------------+ La función CONCAT es idéntica al operador CONCAT. Para obtener más información, consulte el apartado "Con el operador de concatenación" en el tema 2.14.2 . Subtemas 3.2.11.1 Ejemplo

DB2/400 Manual de Consulta SQL V3R7 CONCAT

© Copyright IBM Corp. 1995, 1996 3.2.11 - 1

Page 236: DB2/400 Manual de Consulta SQLmarce.com/docs/systems/manuales/db2_400_manual_consulta_sql_v3r7.pdf · VERSION Nota de Versión Segunda edición (noviembre de 1996) Este manual es

3.2.11.1 Ejemplo Concatenar la columna NOMBRE con la columna APELL. CONCAT(NOMBRE, APELL)

DB2/400 Manual de Consulta SQL V3R7 Ejemplo

© Copyright IBM Corp. 1995, 1996 3.2.11.1 - 1

Page 237: DB2/400 Manual de Consulta SQLmarce.com/docs/systems/manuales/db2_400_manual_consulta_sql_v3r7.pdf · VERSION Nota de Versión Segunda edición (noviembre de 1996) Este manual es

3.2.12 COS +-------------------------------------------------- ----------------------+ ¦ ¦ ¦ >-- COS--(---- expresión ----)------------------------------------------> ¦ ¦ ¦ +-------------------------------------------------- ----------------------+ La función COS devuelve el coseno de un número. La s funciones COS y ACOS son operaciones inversas. El argumento debe ser un número cuyo valor esté esp ecificado en radianes. El tipo de datos del resultado es de coma flotante de precisión doble. Si el argumento puede ser nulo, el resultado también; si el argumento es nulo, el resultado es el valor nulo. Subtemas 3.2.12.1 Ejemplo

DB2/400 Manual de Consulta SQL V3R7 COS

© Copyright IBM Corp. 1995, 1996 3.2.12 - 1

Page 238: DB2/400 Manual de Consulta SQLmarce.com/docs/systems/manuales/db2_400_manual_consulta_sql_v3r7.pdf · VERSION Nota de Versión Segunda edición (noviembre de 1996) Este manual es

3.2.12.1 Ejemplo Supongamos que la variable del lenguaje principal C OSENO es una variable del lenguaje principal decimal (2,1) con un valor d e 1,5. COS(:COSENO) Devuelve el valor aproximado 0,07.

DB2/400 Manual de Consulta SQL V3R7 Ejemplo

© Copyright IBM Corp. 1995, 1996 3.2.12.1 - 1

Page 239: DB2/400 Manual de Consulta SQLmarce.com/docs/systems/manuales/db2_400_manual_consulta_sql_v3r7.pdf · VERSION Nota de Versión Segunda edición (noviembre de 1996) Este manual es

3.2.13 COSH +-------------------------------------------------- ----------------------+ ¦ ¦ ¦ >-- COSH--(---- expresión ----)-----------------------------------------> ¦ ¦ ¦ +-------------------------------------------------- ----------------------+ La función COSH devuelve el coseno hiperbólico de u n número. El argumento debe ser un número cuyo valor esté esp ecificado en radianes. El tipo de datos del resultado es de coma flotante de precisión doble. Si el argumento puede ser nulo, el resultado también; si el argumento es nulo, el resultado es el valor nulo. Subtemas 3.2.13.1 Ejemplo

DB2/400 Manual de Consulta SQL V3R7 COSH

© Copyright IBM Corp. 1995, 1996 3.2.13 - 1

Page 240: DB2/400 Manual de Consulta SQLmarce.com/docs/systems/manuales/db2_400_manual_consulta_sql_v3r7.pdf · VERSION Nota de Versión Segunda edición (noviembre de 1996) Este manual es

3.2.13.1 Ejemplo Supongamos que la variable del lenguaje principal C OSH es una variable del lenguaje principal decimal (2,1) con un valor de 1, 5. COSH(:COSH) Devuelve el valor aproximado 2,35.

DB2/400 Manual de Consulta SQL V3R7 Ejemplo

© Copyright IBM Corp. 1995, 1996 3.2.13.1 - 1

Page 241: DB2/400 Manual de Consulta SQLmarce.com/docs/systems/manuales/db2_400_manual_consulta_sql_v3r7.pdf · VERSION Nota de Versión Segunda edición (noviembre de 1996) Este manual es

3.2.14 COT +-------------------------------------------------- ----------------------+ ¦ ¦ ¦ >-- COT--(---- expresión ----)------------------------------------------> ¦ ¦ ¦ +-------------------------------------------------- ----------------------+ La función COT devuelve la cotangente de un número. El argumento debe ser un número cuyo valor esté esp ecificado en radianes. El tipo de datos del resultado es de coma flotante de precisión doble. Si el argumento puede ser nulo, el resultado también; si el argumento es nulo, el resultado es el valor nulo. Subtemas 3.2.14.1 Ejemplo

DB2/400 Manual de Consulta SQL V3R7 COT

© Copyright IBM Corp. 1995, 1996 3.2.14 - 1

Page 242: DB2/400 Manual de Consulta SQLmarce.com/docs/systems/manuales/db2_400_manual_consulta_sql_v3r7.pdf · VERSION Nota de Versión Segunda edición (noviembre de 1996) Este manual es

3.2.14.1 Ejemplo Supongamos que la variable del lenguaje principal C OTAN es una variable del lenguaje principal decimal (2,1) con un valor d e 1,5. COT(:COTAN) Devuelve el valor aproximado 0,07.

DB2/400 Manual de Consulta SQL V3R7 Ejemplo

© Copyright IBM Corp. 1995, 1996 3.2.14.1 - 1

Page 243: DB2/400 Manual de Consulta SQLmarce.com/docs/systems/manuales/db2_400_manual_consulta_sql_v3r7.pdf · VERSION Nota de Versión Segunda edición (noviembre de 1996) Este manual es

3.2.15 CURDATE +-------------------------------------------------- ----------------------+ ¦ ¦ ¦ >-- CURDATE--(--)--------------------------------------------- --------> ¦ ¦ ¦ +-------------------------------------------------- ----------------------+ La función CURDATE devuelve una fecha basándose en una lectura del reloj de la hora del día cuando se ejecuta la sentencia S QL del servidor actual. El valor que devuelve la función CURDATE es igual a l valor que devuelve el registro especial CURRENT DATE. Si esta función se utiliza más de una vez dentro de una única sentencia SQL, se utiliza con l as funciones escalares CURTIME o NOW, o se utiliza con los registros espec iales CURRENT DATE, CURRENT TIME o CURRENT TIMESTAMP dentro de una únic a sentencia, todos los valores se basan en una única lectura del reloj. El tipo de datos del resultado es una fecha. Subtemas 3.2.15.1 Ejemplo

DB2/400 Manual de Consulta SQL V3R7 CURDATE

© Copyright IBM Corp. 1995, 1996 3.2.15 - 1

Page 244: DB2/400 Manual de Consulta SQLmarce.com/docs/systems/manuales/db2_400_manual_consulta_sql_v3r7.pdf · VERSION Nota de Versión Segunda edición (noviembre de 1996) Este manual es

3.2.15.1 Ejemplo Devuelve la fecha actual basándose en el reloj de l a hora del día. CURDATE()

DB2/400 Manual de Consulta SQL V3R7 Ejemplo

© Copyright IBM Corp. 1995, 1996 3.2.15.1 - 1

Page 245: DB2/400 Manual de Consulta SQLmarce.com/docs/systems/manuales/db2_400_manual_consulta_sql_v3r7.pdf · VERSION Nota de Versión Segunda edición (noviembre de 1996) Este manual es

3.2.16 CURTIME +-------------------------------------------------- ----------------------+ ¦ ¦ ¦ >-- CURTIME--(--)--------------------------------------------- --------> ¦ ¦ ¦ +-------------------------------------------------- ----------------------+ La función CURTIME devuelve una hora basándose en u na lectura del reloj de la hora del día cuando se ejecuta la sentencia SQL en el servidor actual. El valor que devuelve la función CURTIME es igual a l valor que devuelve el registro especial CURRENT TIME. Si esta función se utiliza más de una vez dentro de una única sentencia SQL, se utiliza con l as funciones escalares CURDATE o NOW, o se utiliza con los registros espec iales CURRENT DATE, CURRENT TIME o CURRENT TIMESTAMP dentro de una únic a sentencia, todos los valores se basan en una única lectura del reloj. El tipo de datos del resultado es una hora. Subtemas 3.2.16.1 Ejemplo

DB2/400 Manual de Consulta SQL V3R7 CURTIME

© Copyright IBM Corp. 1995, 1996 3.2.16 - 1

Page 246: DB2/400 Manual de Consulta SQLmarce.com/docs/systems/manuales/db2_400_manual_consulta_sql_v3r7.pdf · VERSION Nota de Versión Segunda edición (noviembre de 1996) Este manual es

3.2.16.1 Ejemplo Devuelve la hora actual basándose en el reloj de la hora del día. CURTIME()

DB2/400 Manual de Consulta SQL V3R7 Ejemplo

© Copyright IBM Corp. 1995, 1996 3.2.16.1 - 1

Page 247: DB2/400 Manual de Consulta SQLmarce.com/docs/systems/manuales/db2_400_manual_consulta_sql_v3r7.pdf · VERSION Nota de Versión Segunda edición (noviembre de 1996) Este manual es

3.2.17 DATE +-------------------------------------------------- ----------------------+ ¦ ¦ ¦ >-- DATE--(-- expresión --)---------------------------------------------> ¦ ¦ ¦ +-------------------------------------------------- ----------------------+ La función DATE devuelve una fecha a partir de un v alor. El argumento debe ser una indicación de la hora, un a fecha, un número positivo menor o igual que 3652059, una representac ión de serie de una fecha o una serie de caracteres de longitud 7. Si el argumento es una serie de caracteres de longi tud 7, ésta deberá representar una fecha válida con el formato aaaannn , donde aaaa son los dígitos correspondientes a un año y nnn son dígitos comprendidos entre 001 y 366 que indican el día del año. El resultado de la función es una fecha. Si el arg umento puede ser nulo, el resultado también; si el argumento es nulo, el r esultado es el valor nulo. El resto de las reglas dependen del tipo de datos d el argumento: � Si el argumento es una indicación de la hora: El resultado es la parte de la fecha de la indi cación de la hora. � Si el argumento es una fecha: El resultado es esa fecha. � Si el argumento es un número: El resultado es la fecha correspondiente a n-1 días después del 1 de enero del año 0001, donde n es la parte interna del número. � Si el argumento es una serie de caracteres: Cuando una representación de serie de una fecha es de datos SBCS con un CCSID que es distinto del CCSID por omisión correspondiente a los datos SBCS, se convierte dicho valor para adher irse al CCSID por omisión de los datos SBCS antes de interpretarl o y convertirlo a un valor de fecha. Cuando una representación de serie de una fecha es de datos mixtos con un CCSID que es distinto del CCSID por omisión correspondiente a los datos mixtos, se convierte dicho valor para adh erirse al CCSID por omisión de los datos mixtos antes de interpreta rlo y convertirlo a un valor de fecha. Subtemas 3.2.17.1 Ejemplos

DB2/400 Manual de Consulta SQL V3R7 DATE

© Copyright IBM Corp. 1995, 1996 3.2.17 - 1

Page 248: DB2/400 Manual de Consulta SQLmarce.com/docs/systems/manuales/db2_400_manual_consulta_sql_v3r7.pdf · VERSION Nota de Versión Segunda edición (noviembre de 1996) Este manual es

3.2.17.1 Ejemplos � Supongamos que la columna RECIBIDO (indicación d e la hora) tiene un valor interno equivalente a '1988-12-25-17.12.3 0.000000'. DATE(RECIBIDO) Da como resultado una representación interna de '1988-12-25'. � La siguiente función escalar DATE se aplica a un a representación de serie ISO de una fecha: DATE('1988-12-25' ) Da como resultado una representación interna de '1988-12-25'. � La siguiente función escalar DATE se aplica a un a representación de serie EUR de una fecha: DATE('25.12.1988' ) Da como resultado una representación interna de '1988-12-25'. � La siguiente función escalar DATE se aplica a un número positivo: DATE(35) Da como resultado una representación interna de '0001-02-04'.

DB2/400 Manual de Consulta SQL V3R7 Ejemplos

© Copyright IBM Corp. 1995, 1996 3.2.17.1 - 1

Page 249: DB2/400 Manual de Consulta SQLmarce.com/docs/systems/manuales/db2_400_manual_consulta_sql_v3r7.pdf · VERSION Nota de Versión Segunda edición (noviembre de 1996) Este manual es

3.2.18 DAY +-------------------------------------------------- ----------------------+ ¦ ¦ ¦ >-- DAY--(-- expresión --)----------------------------------------------> ¦ ¦ ¦ +-------------------------------------------------- ----------------------+ La función DAY devuelve la parte correspondiente al día de un valor. El argumento debe ser una fecha, una indicación de la hora, una duración de fecha o una duración de indicación de la hora. El resultado de la función es un entero grande. Si el argumento puede ser nulo, el resultado también; si el argumento es nulo , el resultado es el valor nulo. El resto de las reglas dependen del tipo de datos d el argumento: � Si el argumento es una fecha o una indicación de la hora: El resultado es la parte del día del valor, que es un entero comprendido entre 1 y 31. � Si el argumento es una duración de fecha o durac ión de indicación de la hora: El resultado es la parte del día del valor, que es un entero comprendido entre -99 y 99. Un resultado no ce ro tiene el mismo signo que el argumento. Subtemas 3.2.18.1 Ejemplos

DB2/400 Manual de Consulta SQL V3R7 DAY

© Copyright IBM Corp. 1995, 1996 3.2.18 - 1

Page 250: DB2/400 Manual de Consulta SQLmarce.com/docs/systems/manuales/db2_400_manual_consulta_sql_v3r7.pdf · VERSION Nota de Versión Segunda edición (noviembre de 1996) Este manual es

3.2.18.1 Ejemplos � Utilizando la tabla PROYECTO, establecer la vari able del lenguaje principal DIA_FIN (smallint) en el día en que e stá planificado que se detenga (FCHFINPR) el proyecto PLANIF UNIFICADA (NOMBREPR). SELECT DAY(FCHFINPR) INTO :DIA_FIN FROM PROYECTO WHERE NOMBREPR = 'PLANIF UNIFICADA' Da como resultado el que DIA_FIN quede establec ido en 15 al utilizar la tabla de ejemplo. � Supongamos que la columna FECHA1 (date) tiene un valor interno equivalente a 2000-03-15 y que la columna FECHA 2 (date) tiene un valor interno equivalente a 1999-12-31. DAY(FECHA1 - FECHA2 ) Da como resultado el valor 15.

DB2/400 Manual de Consulta SQL V3R7 Ejemplos

© Copyright IBM Corp. 1995, 1996 3.2.18.1 - 1

Page 251: DB2/400 Manual de Consulta SQLmarce.com/docs/systems/manuales/db2_400_manual_consulta_sql_v3r7.pdf · VERSION Nota de Versión Segunda edición (noviembre de 1996) Este manual es

3.2.19 DAYOFMONTH +-------------------------------------------------- ----------------------+ ¦ ¦ ¦ >-- DAYOFMONTH--(-- expresión --)---------------------------------------> ¦ ¦ ¦ +-------------------------------------------------- ----------------------+ La función DAYOFMONTH es idéntica a la función esca lar DAY. Para obtener más información, consulte el apartado "DAY" en el tema 3.2.18 .

DB2/400 Manual de Consulta SQL V3R7 DAYOFMONTH

© Copyright IBM Corp. 1995, 1996 3.2.19 - 1

Page 252: DB2/400 Manual de Consulta SQLmarce.com/docs/systems/manuales/db2_400_manual_consulta_sql_v3r7.pdf · VERSION Nota de Versión Segunda edición (noviembre de 1996) Este manual es

3.2.20 DAYOFWEEK +-------------------------------------------------- ----------------------+ ¦ ¦ ¦ >-- DAYOFWEEK--(-- expresión --)----------------------------------------> ¦ ¦ ¦ +-------------------------------------------------- ----------------------+ La función DAYOFWEEK devuelve un entero entre el 1 y el 7 que representa el día de la semana, donde 1 es el lunes y 7 es el domingo. El argumento debe ser una fecha o indicación de la hora. El resultado de la función es un entero grande. Si el argumento puede ser nulo, el resultado también; si el argumento es nulo , el resultado es el valor nulo. Subtemas 3.2.20.1 Ejemplo

DB2/400 Manual de Consulta SQL V3R7 DAYOFWEEK

© Copyright IBM Corp. 1995, 1996 3.2.20 - 1

Page 253: DB2/400 Manual de Consulta SQLmarce.com/docs/systems/manuales/db2_400_manual_consulta_sql_v3r7.pdf · VERSION Nota de Versión Segunda edición (noviembre de 1996) Este manual es

3.2.20.1 Ejemplo Utilizando la tabla EMPLEADO, establecer la variabl e del lenguaje principal DIA_DE_LA_SEMANA (int) en el día de la se mana en que empezó a trabajar (FECHINIC) Cristina Pérez (NUMEMP='000010' ). SELECT DAYOFWEEK(FECHINIC) INTO :DIA_DE_LA_SEMANA FROM EMPLEADO WHERE NUMEMP = '000010' Da como resultado el que DIA_DE_LA_SEMANA quede est ablecido en 6 cuando se utiliza la tabla de ejemplo.

DB2/400 Manual de Consulta SQL V3R7 Ejemplo

© Copyright IBM Corp. 1995, 1996 3.2.20.1 - 1

Page 254: DB2/400 Manual de Consulta SQLmarce.com/docs/systems/manuales/db2_400_manual_consulta_sql_v3r7.pdf · VERSION Nota de Versión Segunda edición (noviembre de 1996) Este manual es

3.2.21 DAYOFYEAR +-------------------------------------------------- ----------------------+ ¦ ¦ ¦ >-- DAYOFYEAR--(-- expresión --)----------------------------------------> ¦ ¦ ¦ +-------------------------------------------------- ----------------------+ La función DAYOFYEAR devuelve un entero entre el 1 y el 366 que representa el día del año, donde 1 es el 1 de enero. El argumento debe ser una fecha o indicación de la hora. El resultado de la función es un entero grande. Si el argumento puede ser nulo, el resultado también; si el argumento es nulo , el resultado es el valor nulo. Subtemas 3.2.21.1 Ejemplo

DB2/400 Manual de Consulta SQL V3R7 DAYOFYEAR

© Copyright IBM Corp. 1995, 1996 3.2.21 - 1

Page 255: DB2/400 Manual de Consulta SQLmarce.com/docs/systems/manuales/db2_400_manual_consulta_sql_v3r7.pdf · VERSION Nota de Versión Segunda edición (noviembre de 1996) Este manual es

3.2.21.1 Ejemplo Utilizando la tabla EMPLEADO, establezca la variabl e del lenguaje principal PROM_DIA_DEL_AÑO (int) en el promedio del día del año en que empezaron a trabajar los empleados (FECHINIC). SELECT AVG(DAYOFYEAR(FECHINIC)) INTO :PROM_DIA_DEL_AÑO FROM EMPLEADO Da como resultado el que PROM_DIA_DEL_AÑO quede est ablecido en 202 cuando se utiliza la tabla de ejemplo.

DB2/400 Manual de Consulta SQL V3R7 Ejemplo

© Copyright IBM Corp. 1995, 1996 3.2.21.1 - 1

Page 256: DB2/400 Manual de Consulta SQLmarce.com/docs/systems/manuales/db2_400_manual_consulta_sql_v3r7.pdf · VERSION Nota de Versión Segunda edición (noviembre de 1996) Este manual es

3.2.22 DAYS +-------------------------------------------------- ----------------------+ ¦ ¦ ¦ >-- DAYS--(-- expresión --)---------------------------------------------> ¦ ¦ ¦ +-------------------------------------------------- ----------------------+ La función DAYS devuelve la representación de enter o de una fecha. El argumento debe ser una fecha, una indicación de la hora o una representación de serie válida de una fecha. El resultado de la función es un entero grande. Si el argumento puede ser nulo, el resultado también; si el argumento es nulo , el resultado es el valor nulo. El resultado es 1 más que el número de días a parti r del 1 de enero del año 0001 hasta D, donde D es la fecha que aparecería si la función DATE se aplicase al argumento. Subtemas 3.2.22.1 Ejemplos

DB2/400 Manual de Consulta SQL V3R7 DAYS

© Copyright IBM Corp. 1995, 1996 3.2.22 - 1

Page 257: DB2/400 Manual de Consulta SQLmarce.com/docs/systems/manuales/db2_400_manual_consulta_sql_v3r7.pdf · VERSION Nota de Versión Segunda edición (noviembre de 1996) Este manual es

3.2.22.1 Ejemplos � Utilizando la tabla PROYECTO, establecer la vari able del lenguaje principal DIAS_FORMACION (int) en el número de días transcurridos (FCHFINPR - FCHAINIP) estimados para el proyect o (NUMPROY) 'IF2000'. SELECT DAYS(FCHFINPR) - DAYS( FCHAINIP ) INTO :DIAS_FORMACION FROM PROYECTO WHERE NUMPROY = 'IF2000' Da como resultado el que DIAS_FORMACION quede e stablecido en 396 al utilizar la tabla de ejemplo. � Utilizando la tabla PROYECTO, establecer la vari able del lenguaje principal TOTAL_DIAS (int) en el número de días transcurridos (FCHFINPR - FCHAINIP) estimados para todos los proyectos del departamento (NUMDEPT) 'E21'. SELECT SUM(DAYS(FCHFINPR) - DAYS( FCHAINIP )) INTO :TOTAL_DIAS FROM PROYECTO WHERE NUMDEPT = 'E21' Da como resultado el que TOTAL_DIAS quede estab lecido en 1484 al utilizar la tabla de ejemplo.

DB2/400 Manual de Consulta SQL V3R7 Ejemplos

© Copyright IBM Corp. 1995, 1996 3.2.22.1 - 1

Page 258: DB2/400 Manual de Consulta SQLmarce.com/docs/systems/manuales/db2_400_manual_consulta_sql_v3r7.pdf · VERSION Nota de Versión Segunda edición (noviembre de 1996) Este manual es

3.2.23 DECIMAL +-------------------------------------------------- ----------------------+ ¦ ¦ ¦ >-- DECIMAL--(-- expresión ----------------------------)----------------> ¦ ¦ +- ,entero --------------+ ¦ ¦ +- ,entero -+ ¦ ¦ ¦ +-------------------------------------------------- ----------------------+ La función DECIMAL devuelve la representación en de cimal empaquetado de un número. El primer argumento debe ser un número. El segundo argumento, si se especifica, debe estar dentro del rango de 1 a 31. El tercer argumento, si se especifica, debe estar dentro del rango de 0 a p, donde p es el segundo argumento. La omisión del tercer argumento es una especificación implícita de cero. El valor por omisión del segundo argumento depende del tipo de datos del primer argumento: � 15 para coma flotante, decimal, numérico o binar io de escala no cero � 11 para entero grande � 5 para entero pequeño El resultado de la función es un número decimal con la precisión p y la escala s , donde p y s son el segundo y tercer argumento, respectivamente . Si el primer argumento puede ser nulo, el resultado también; si el primer argumento es nulo, el resultado es el valor nulo. El resultado es el mismo número que se produciría s i se asignase el primer argumento a una columna decimal o variable con una precisión p y una escala s . Se produce un error si el numero de dígitos deci males significativos precisos para representar la parte e ntera del número es mayor que p-s . Subtemas 3.2.23.1 Ejemplos

DB2/400 Manual de Consulta SQL V3R7 DECIMAL

© Copyright IBM Corp. 1995, 1996 3.2.23 - 1

Page 259: DB2/400 Manual de Consulta SQLmarce.com/docs/systems/manuales/db2_400_manual_consulta_sql_v3r7.pdf · VERSION Nota de Versión Segunda edición (noviembre de 1996) Este manual es

3.2.23.1 Ejemplos � Utilizar la función DECIMAL para forzar el que s e devuelva un tipo de datos DECIMAL (con una precisión 5 y una escala 2) en una lista de selección para la columna NIVELFO (tipo de dato s = SMALLINT) en la tabla EMPLEADO. La columna NUMEMP también pued e aparecer en la lista de selección. SELECT NUMEMP, DECIMAL(NIVELFO,5,2 ) FROM EMPLEADO � Seleccionar, mediante la tabla PROYECTO, todas l as fechas de inicio (FCHAINIP) que se hayan incrementado en una dur ación especificada en una variable del lenguaje principal. Supongamo s que la variable de lenguaje principal PERIOD es de tipo INTEGER. En ese caso, y a fin de utilizar su valor como una duración de fecha, d eberá "reconvertirse" a decimal(8,0). SELECT FCHINIPR + DECIMAL(:PERIOD,8 ) FROM PROYECTO

DB2/400 Manual de Consulta SQL V3R7 Ejemplos

© Copyright IBM Corp. 1995, 1996 3.2.23.1 - 1

Page 260: DB2/400 Manual de Consulta SQLmarce.com/docs/systems/manuales/db2_400_manual_consulta_sql_v3r7.pdf · VERSION Nota de Versión Segunda edición (noviembre de 1996) Este manual es

3.2.24 DEGREES +-------------------------------------------------- ----------------------+ ¦ ¦ ¦ >-- DEGREES--(---- expresión ----)--------------------------------------> ¦ ¦ ¦ +-------------------------------------------------- ----------------------+ La función DEGREES devuelve el número de grados de un ángulo. El argumento debe ser un número cuyo valor esté esp ecificado en radianes. El tipo de datos del resultado es de coma flotante de precisión doble. Si el argumento puede ser nulo, el resultado también; si el argumento es nulo, el resultado es el valor nulo. Subtemas 3.2.24.1 Ejemplo

DB2/400 Manual de Consulta SQL V3R7 DEGREES

© Copyright IBM Corp. 1995, 1996 3.2.24 - 1

Page 261: DB2/400 Manual de Consulta SQLmarce.com/docs/systems/manuales/db2_400_manual_consulta_sql_v3r7.pdf · VERSION Nota de Versión Segunda edición (noviembre de 1996) Este manual es

3.2.24.1 Ejemplo Supongamos que la variable del lenguaje principal R AD es una variable del lenguaje principal decimal (4,3) con un valor de 3, 142. DEGREES(:RAD) Devuelve el valor aproximado 180,0.

DB2/400 Manual de Consulta SQL V3R7 Ejemplo

© Copyright IBM Corp. 1995, 1996 3.2.24.1 - 1

Page 262: DB2/400 Manual de Consulta SQLmarce.com/docs/systems/manuales/db2_400_manual_consulta_sql_v3r7.pdf · VERSION Nota de Versión Segunda edición (noviembre de 1996) Este manual es

3.2.25 DIGITS +-------------------------------------------------- ----------------------+ ¦ ¦ ¦ >-- DIGITS --(-- expresión --)-------------------------------------------> ¦ ¦ ¦ +-------------------------------------------------- ----------------------+ La función DIGITS devuelve una representación de se rie de caracteres del valor absoluto de un número. El argumento debe ser un valor entero o decimal. Si el argumento puede ser nulo, el resultado tambié n; si el argumento es nulo, el resultado es el valor nulo. El resultado de la función es una serie de caracter es de longitud fija que representa el valor absoluto del argumento sin tene r en cuenta su escala. El resultado no incluye ningún signo ni una coma de cimal. En lugar de ello, consta exclusivamente de dígitos, incluyendo, si es necesario, ceros iniciales para rellenar la serie. La longitud de l a serie es: � 5, si el argumento es un entero pequeño de escal a cero � 10, si el argumento es un entero grande de escal a cero � p, si el argumento es un decimal o un entero de esca la no cero con una precisión p El CCSID de la serie de caracteres es el CCSID SBCS por omisión en el servidor actual. Subtemas 3.2.25.1 Ejemplos

DB2/400 Manual de Consulta SQL V3R7 DIGITS

© Copyright IBM Corp. 1995, 1996 3.2.25 - 1

Page 263: DB2/400 Manual de Consulta SQLmarce.com/docs/systems/manuales/db2_400_manual_consulta_sql_v3r7.pdf · VERSION Nota de Versión Segunda edición (noviembre de 1996) Este manual es

3.2.25.1 Ejemplos � Supongamos que una tabla llamada TABLAX contiene una columna INTEGER llamada COLENT que contiene números de 10 dígit os. Listar todas las combinaciones de los cuatro primeros dígitos co ntenidos en la columna COLENT. SELECT DISTINCT SUBSTR(DIGITS( COLENT),1,4 ) FROM TABLAX � Supongamos que COLUMNAX tiene el tipo de datos D ECIMAL(6,2) y que uno de sus valores es -6,28. Para este valor: DIGITS( COLUMNAX) se devuelve el valor '000628'. El resultado es una serie de longitud 6 (la pre cisión de la columna) con ceros iniciales de relleno en ella para com pletar esta longitud. En el resultado no aparece ningún signo ni la c oma decimal.

DB2/400 Manual de Consulta SQL V3R7 Ejemplos

© Copyright IBM Corp. 1995, 1996 3.2.25.1 - 1

Page 264: DB2/400 Manual de Consulta SQLmarce.com/docs/systems/manuales/db2_400_manual_consulta_sql_v3r7.pdf · VERSION Nota de Versión Segunda edición (noviembre de 1996) Este manual es

3.2.26 DOUBLE_PRECISION o DOUBLE +-------------------------------------------------- ----------------------+ ¦ ¦ ¦ >---- DOUBLE_PRECISION----(-- expresión --)-----------------------------> ¦ ¦ +- DOUBLE-----------+ ¦ ¦ ¦ +-------------------------------------------------- ----------------------+ Las funciones DOUBLE_PRECISION y DOUBLE son idéntic as a la función escalar FLOAT. Para obtener más información, consulte el a partado "FLOAT" en el tema 3.2.28 .

DB2/400 Manual de Consulta SQL V3R7 DOUBLE_PRECISION o DOUBLE

© Copyright IBM Corp. 1995, 1996 3.2.26 - 1

Page 265: DB2/400 Manual de Consulta SQLmarce.com/docs/systems/manuales/db2_400_manual_consulta_sql_v3r7.pdf · VERSION Nota de Versión Segunda edición (noviembre de 1996) Este manual es

3.2.27 EXP +-------------------------------------------------- ----------------------+ ¦ ¦ ¦ >-- EXP--(---- expresión ----)------------------------------------------> ¦ ¦ ¦ +-------------------------------------------------- ----------------------+ La función EXP devuelve un valor que es la base del logaritmo natural (e) elevado a la potencia especificada por el argumento . Las funciones EXP y LN son operaciones inversas. El argumento debe ser un número. El tipo de datos del resultado es de coma flotante de precisión doble. Si el argumento puede ser nulo, el resultado también; si el argumento es nulo, el resultado es el valor nulo. Subtemas 3.2.27.1 Ejemplo

DB2/400 Manual de Consulta SQL V3R7 EXP

© Copyright IBM Corp. 1995, 1996 3.2.27 - 1

Page 266: DB2/400 Manual de Consulta SQLmarce.com/docs/systems/manuales/db2_400_manual_consulta_sql_v3r7.pdf · VERSION Nota de Versión Segunda edición (noviembre de 1996) Este manual es

3.2.27.1 Ejemplo Supongamos que la variable del lenguaje principal E es una variable del lenguaje principal decimal (10,9) con un valor de 3 ,453789832. EXP(:E) Devuelve el valor aproximado 31,62.

DB2/400 Manual de Consulta SQL V3R7 Ejemplo

© Copyright IBM Corp. 1995, 1996 3.2.27.1 - 1

Page 267: DB2/400 Manual de Consulta SQLmarce.com/docs/systems/manuales/db2_400_manual_consulta_sql_v3r7.pdf · VERSION Nota de Versión Segunda edición (noviembre de 1996) Este manual es

3.2.28 FLOAT +-------------------------------------------------- ----------------------+ ¦ ¦ ¦ >-- FLOAT--(-- expresión --)--------------------------------------------> ¦ ¦ ¦ +-------------------------------------------------- ----------------------+ La función FLOAT devuelve la representación de coma flotante de un número. El argumento debe ser un número. El resultado de la función es un número de coma flo tante de precisión doble. Si el argumento puede ser nulo, el resultad o también; si el argumento es nulo, el resultado es el valor nulo. El resultado es el mismo número que se produciría s i se asignase el argumento a una columna o variable de coma flotante de precisión doble. Subtemas 3.2.28.1 Ejemplo

DB2/400 Manual de Consulta SQL V3R7 FLOAT

© Copyright IBM Corp. 1995, 1996 3.2.28 - 1

Page 268: DB2/400 Manual de Consulta SQLmarce.com/docs/systems/manuales/db2_400_manual_consulta_sql_v3r7.pdf · VERSION Nota de Versión Segunda edición (noviembre de 1996) Este manual es

3.2.28.1 Ejemplo Utilizando la tabla EMPLEADO, encontrar la proporci ón sueldo/comisión correspondiente a aquellos empleados cuya comisión sea diferente de cero. Las columnas afectadas (SUELDO y COMI) tienen tipos de datos DECIMAL. Para eliminar la posibilidad de obtener resultados fuera de rango, se aplica FLOAT a SUELDO de forma que la división se l leva a cabo en coma flotante: SELECT NUMEMP, FLOAT(SUELDO)/COMI FROM EMPLEADO WHERE COMI > 0

DB2/400 Manual de Consulta SQL V3R7 Ejemplo

© Copyright IBM Corp. 1995, 1996 3.2.28.1 - 1

Page 269: DB2/400 Manual de Consulta SQLmarce.com/docs/systems/manuales/db2_400_manual_consulta_sql_v3r7.pdf · VERSION Nota de Versión Segunda edición (noviembre de 1996) Este manual es

3.2.29 FLOOR +-------------------------------------------------- ----------------------+ ¦ ¦ ¦ >-- FLOOR--(-- expresión --)--------------------------------------------> ¦ ¦ ¦ +-------------------------------------------------- ----------------------+ La función FLOOR es idéntica a la función escalar I NTEGER. Para obtener más información, consulte el apartado "INTEGER" en el tema 3.2.34 .

DB2/400 Manual de Consulta SQL V3R7 FLOOR

© Copyright IBM Corp. 1995, 1996 3.2.29 - 1

Page 270: DB2/400 Manual de Consulta SQLmarce.com/docs/systems/manuales/db2_400_manual_consulta_sql_v3r7.pdf · VERSION Nota de Versión Segunda edición (noviembre de 1996) Este manual es

| 3.2.30 HASH +-------------------------------------------------- ----------------------+| ¦ ¦| ¦ <-,---------+ ¦| ¦ >-- HASH--(---- expresión ----)-----------------------------------------> ¦ ¦ ¦ +-------------------------------------------------- ----------------------+ | La función HASH devuelve el número de partición de un conjunto de valores.| Vea también la función PARTITION. Para obtener más información acerca de| los números de partición, consulte la publicación DB2 Multisystem for| OS/400 , SC41-3705. | Los argumentos no pueden ser valores de fecha y hor a ni flotantes. Los| argumentos no deben ser marcadores de parámetro. | El resultado de la función es un entero grande con un valor entre 0 y 1023. | Si cualquiera de los argumentos es nulo, el resulta do es cero. El| resultado no puede ser nulo. Subtemas 3.2.30.1 Ejemplo

DB2/400 Manual de Consulta SQL V3R7 HASH

© Copyright IBM Corp. 1995, 1996 3.2.30 - 1

Page 271: DB2/400 Manual de Consulta SQLmarce.com/docs/systems/manuales/db2_400_manual_consulta_sql_v3r7.pdf · VERSION Nota de Versión Segunda edición (noviembre de 1996) Este manual es

| 3.2.30.1 Ejemplo | Utilice la función HASH para determinar qué partici ones resultarían si la| clave de partición estuviera compuesta por NUMEMP y APELLIDO. Esta| consulta devuelve el número de partición para cada fila de EMPLEADO. | SELECT HASH(NUMEMP, APELLIDO)| FROM DATOSCORP.EMPLEADO

DB2/400 Manual de Consulta SQL V3R7 Ejemplo

© Copyright IBM Corp. 1995, 1996 3.2.30.1 - 1

Page 272: DB2/400 Manual de Consulta SQLmarce.com/docs/systems/manuales/db2_400_manual_consulta_sql_v3r7.pdf · VERSION Nota de Versión Segunda edición (noviembre de 1996) Este manual es

3.2.31 HEX +-------------------------------------------------- ----------------------+ ¦ ¦ ¦ >-- HEX--(-- expresión --)----------------------------------------------> ¦ ¦ ¦ +-------------------------------------------------- ----------------------+ La función HEX devuelve una representación hexadeci mal de un valor. El argumento puede ser cualquier valor. El resultado de la función es una serie de caracter es. Si el argumento puede ser nulo, el resultado también puede serlo; s i el argumento es nulo, el resultado es el valor nulo. El resultado es una serie de dígitos hexadecimales en la que los dos primeros dígitos representan el primer byte del arg umento, los dos dígitos siguientes representan el segundo byte del argument o, y así sucesivamente. Si el argumento es un valor de fecha u hora, el res ultado es la representación hexadecimal del formato interno del argumento. Esta representación hexadecimal de los tipos de datos DA TE, TIMESTAMP y NUMERIC es diferente de otros productos de base de datos ya que el formato interno de estos tipos de datos es diferente. Si el argumento no es una serie gráfica, la longitu d del resultado es el doble que la longitud del argumento. Si el argument o es una serie gráfica, la longitud del resultado es cuatro veces la longit ud del argumento. Si el argumento es una serie de longitud variable, el resultado es una serie de longitud variable. En caso contrario, el r esultado es una serie de longitud fija. El atributo de longitud del resu ltado es el doble que el atributo de longitud de almacenamiento del argum ento. Para obtener información sobre el atributo de longitud de almace namiento, consulte el apartado "CREATE TABLE" en el tema 5.16 . El atributo de longitud del resultado no puede ser mayor que 32766 para resultados de longitud fija o mayor que 32740 para resultados de longitud variable. El CCSID de la serie es el CCSID SBCS po r omisión del servidor actual. Subtemas 3.2.31.1 Ejemplo

DB2/400 Manual de Consulta SQL V3R7 HEX

© Copyright IBM Corp. 1995, 1996 3.2.31 - 1

Page 273: DB2/400 Manual de Consulta SQLmarce.com/docs/systems/manuales/db2_400_manual_consulta_sql_v3r7.pdf · VERSION Nota de Versión Segunda edición (noviembre de 1996) Este manual es

3.2.31.1 Ejemplo Utilizar la función HEX para devolver una represent ación hexadecimal del nivel de formación de cada empleado. SELECT NOMBRE, APELL, HEX(NIVELFO) FROM EMPLEADO

DB2/400 Manual de Consulta SQL V3R7 Ejemplo

© Copyright IBM Corp. 1995, 1996 3.2.31.1 - 1

Page 274: DB2/400 Manual de Consulta SQLmarce.com/docs/systems/manuales/db2_400_manual_consulta_sql_v3r7.pdf · VERSION Nota de Versión Segunda edición (noviembre de 1996) Este manual es

3.2.32 HOUR +-------------------------------------------------- ----------------------+ ¦ ¦ ¦ >-- HOUR--(-- expresión --)---------------------------------------------> ¦ ¦ ¦ +-------------------------------------------------- ----------------------+ La función HOUR devuelve la parte de las horas de u n valor. El argumento debe ser una hora, una indicación de l a hora, una duración de hora o una duración de indicación de la hora. El resultado de la función es un entero grande. Si el argumento puede ser nulo, el resultado también; si el argumento es nulo , el resultado es el valor nulo. El resto de las reglas dependen del tipo de datos d el argumento: � Si el argumento es una hora o una indicación de la hora: El resultado es la parte del valor correspondie nte a la hora, que es un entero entre 0 y 24. � Si el argumento es una duración de hora o de ind icación de la hora: El resultado es la parte del valor correspondie nte a la hora, que es entero entre -99 y 99. Un resultado no cero ti ene el mismo signo que el argumento. Subtemas 3.2.32.1 Ejemplo

DB2/400 Manual de Consulta SQL V3R7 HOUR

© Copyright IBM Corp. 1995, 1996 3.2.32 - 1

Page 275: DB2/400 Manual de Consulta SQLmarce.com/docs/systems/manuales/db2_400_manual_consulta_sql_v3r7.pdf · VERSION Nota de Versión Segunda edición (noviembre de 1996) Este manual es

3.2.32.1 Ejemplo Utilizando la tabla de ejemplo CL_PREVI, selecciona r todas las clases que empiecen por la tarde. SELECT * FROM CL_PREVI WHERE HOUR(INICIO ) BETWEEN 12 AND 17

DB2/400 Manual de Consulta SQL V3R7 Ejemplo

© Copyright IBM Corp. 1995, 1996 3.2.32.1 - 1

Page 276: DB2/400 Manual de Consulta SQLmarce.com/docs/systems/manuales/db2_400_manual_consulta_sql_v3r7.pdf · VERSION Nota de Versión Segunda edición (noviembre de 1996) Este manual es

3.2.33 IFNULL +-------------------------------------------------- ----------------------+ ¦ ¦ ¦ >-- IFNULL --(-- expresión --,-- expresión --)-----------------------------> ¦ ¦ ¦ +-------------------------------------------------- ----------------------+ La función IFNULL es idéntica a la función escalar COALESCE con dos argumentos. Para obtener más información, véase el apartado "COALESCE" en el tema 3.2.10 . Subtemas 3.2.33.1 Ejemplo

DB2/400 Manual de Consulta SQL V3R7 IFNULL

© Copyright IBM Corp. 1995, 1996 3.2.33 - 1

Page 277: DB2/400 Manual de Consulta SQLmarce.com/docs/systems/manuales/db2_400_manual_consulta_sql_v3r7.pdf · VERSION Nota de Versión Segunda edición (noviembre de 1996) Este manual es

3.2.33.1 Ejemplo Si al seleccionar el número de empleado (NUMEMP) y el sueldo (SUELDO) de todas las filas de la tabla EMPLEADO falta el sueld o (es decir, es nulo), devuelve el valor cero. SELECT NUMEMP, IFNULL (SUELDO,0) FROM EMPLEADO

DB2/400 Manual de Consulta SQL V3R7 Ejemplo

© Copyright IBM Corp. 1995, 1996 3.2.33.1 - 1

Page 278: DB2/400 Manual de Consulta SQLmarce.com/docs/systems/manuales/db2_400_manual_consulta_sql_v3r7.pdf · VERSION Nota de Versión Segunda edición (noviembre de 1996) Este manual es

3.2.34 INTEGER +-------------------------------------------------- ----------------------+ ¦ ¦ ¦ >-- INTEGER--(-- expresión --)------------------------------------------> ¦ ¦ ¦ +-------------------------------------------------- ----------------------+ La función INTEGER devuelve la representación de la parte entera de un número. El argumento debe ser un número. El resultado de la función es un entero grande. Si el argumento puede ser nulo, el resultado también; si el argumento es nulo , el resultado es el valor nulo. El resultado es el mismo número que aparecería si e l argumento se asignara a una variable o columna de entero grande. Si la t otalidad del argumento no se encuentra dentro del rango de los enteros, se producirá un error. Subtemas 3.2.34.1 Ejemplo

DB2/400 Manual de Consulta SQL V3R7 INTEGER

© Copyright IBM Corp. 1995, 1996 3.2.34 - 1

Page 279: DB2/400 Manual de Consulta SQLmarce.com/docs/systems/manuales/db2_400_manual_consulta_sql_v3r7.pdf · VERSION Nota de Versión Segunda edición (noviembre de 1996) Este manual es

3.2.34.1 Ejemplo Utilizando la tabla EMPLEADO, seleccionar una lista que contenga el sueldo (SUELDO) dividido por el nivel de formación (NIVELF O). Truncar cualquier decimal del cálculo realizado. La lista también de be contener los valores utilizados en el cálculo y el número de empleado (N UMEMP). SELECT INTEGER(SUELDO / NIVELFO), SUELDO, NIVELFO, NUMEMP FROM EMPLEADO

DB2/400 Manual de Consulta SQL V3R7 Ejemplo

© Copyright IBM Corp. 1995, 1996 3.2.34.1 - 1

Page 280: DB2/400 Manual de Consulta SQLmarce.com/docs/systems/manuales/db2_400_manual_consulta_sql_v3r7.pdf · VERSION Nota de Versión Segunda edición (noviembre de 1996) Este manual es

3.2.35 LAND +-------------------------------------------------- ----------------------+ ¦ ¦ ¦ <-,---------+ ¦ ¦ >-- LAND--(-- expresión ---- expresión ----)------------------------------> ¦ ¦ ¦ +-------------------------------------------------- ----------------------+ La función LAND devuelve una serie que es el 'AND' lógico de las series de argumento. Esta función toma la primera serie de a rgumento, realiza una comparación AND con la siguiente serie de argumento y sigue después haciendo comparaciones AND con cada argumento suces ivo utilizando el resultado anterior. Si encuentra un argumento que es más corto que el resultado anterior, lo rellena con blancos. Los argumentos deben ser series de caracteres. Los argumentos no pueden ser series gráficas ni series de caracteres de dato s mixtos. Debe haber dos o más argumentos. Los argumentos que no sean e l primero pueden ser marcadores de parámetros. Los argumentos se convierten, si es necesario, a lo s atributos del resultado. Los atributos del resultado se determin an del siguiente modo: � Si todos los argumentos son series de longitud f ija, el resultado es una serie de longitud fija de longitud n, donde n es la longitud del argumento más largo. � Si algún argumento es una serie de longitud vari able, el resultado es una serie de longitud variable con un atributo de longitud n, donde n es el atributo de longitud del argumento con el mayor atributo de longitud. La longitud real del resultado es m, donde m es la longitud real del argumento más largo. � El CCSID del resultado es 65535. Si un argumento puede ser nulo, el resultado tambié n; si un argumento es nulo, el resultado es el valor nulo. Subtemas 3.2.35.1 Ejemplo

DB2/400 Manual de Consulta SQL V3R7 LAND

© Copyright IBM Corp. 1995, 1996 3.2.35 - 1

Page 281: DB2/400 Manual de Consulta SQLmarce.com/docs/systems/manuales/db2_400_manual_consulta_sql_v3r7.pdf · VERSION Nota de Versión Segunda edición (noviembre de 1996) Este manual es

3.2.35.1 Ejemplo Supongamos que la variable del lenguaje principal L 1 es una variable del lenguaje principal de tipo character(2) con un valo r de X'A1B1', la variable del lenguaje principal L2 es una variable del lenguaje principal de tipo character(3) con un valor de X'F0F040' y la variable del lenguaje principal L3 es una variable del lenguaje principal de tipo character(4) con un valor de X'A1B10040'. LAND(:L1,:L2,:L3) Devuelve el valor X'A0B00000'. LAND(:L3,:L2,:L1) Devuelve el valor X'A0B00040'. En este caso, los a rgumentos más cortos se rellenan con blancos (X'40'), de manera que el resu ltado AND lógico difiere del primer ejemplo.

DB2/400 Manual de Consulta SQL V3R7 Ejemplo

© Copyright IBM Corp. 1995, 1996 3.2.35.1 - 1

Page 282: DB2/400 Manual de Consulta SQLmarce.com/docs/systems/manuales/db2_400_manual_consulta_sql_v3r7.pdf · VERSION Nota de Versión Segunda edición (noviembre de 1996) Este manual es

3.2.36 LEFT +-------------------------------------------------- ----------------------+ ¦ ¦ ¦ >-- LEFT--(-- serie, -- longitud --)--------------------------------------> ¦ ¦ ¦ +-------------------------------------------------- ----------------------+ La función LEFT devuelve el número especificado más a la izquierda de los caracteres de la serie. (18) Si serie es una serie de caracteres, el resultado es una se rie de caracteres, y cada carácter tiene un byte. Si serie es una serie gráfica, el resultado es una serie gráfica, y cada carácter es un carácter DBCS o UCS-2. Si alguno de los argumentos de la función LEFT pued e ser nulo, el resultado también puede serlo; si algún argumento e s nulo, el resultado será el valor nulo. El CCSID del resultado es el mismo que el de la serie . serie Denota una expresión que especifica la serie de la cual se deriva el resultado. Serie debe ser una serie de caracteres o una serie gráfica. Una subserie de la serie es cero o más bytes contiguos de la serie . La función LEFT acepta datos mixtos. Sin embar go, y puesto que LEFT funciona basándose en un recuento estricto de l os bytes, el resultado no será necesariamente una serie de caracteres de datos mixtos formada como es debido. longitud Denota una expresión que especifica la longitud del resultado. longitud debe ser un entero binario dentro del rango de 0 a n, donde n es el atributo de longitud de la serie . No obstante, no debe ser la constante de entero 0. La serie se rellena por la derecha de forma efectiva con el número necesario de caracteres en blanco, de tal maner a que la subserie especificada de la serie exista siempre. Si se especifica longitud mediante una constante de entero, el resultado es una serie de longitud fija. En el resto de los casos, el resultado es una serie de longitud variable con un atributo de longitud igual al atributo de longitud de la serie (18) La función escalar LEFT devuelve el mismo res ultado que: SUBSTR(serie, 1, longitud). Subtemas 3.2.36.1 Ejemplo

DB2/400 Manual de Consulta SQL V3R7 LEFT

© Copyright IBM Corp. 1995, 1996 3.2.36 - 1

Page 283: DB2/400 Manual de Consulta SQLmarce.com/docs/systems/manuales/db2_400_manual_consulta_sql_v3r7.pdf · VERSION Nota de Versión Segunda edición (noviembre de 1996) Este manual es

3.2.36.1 Ejemplo Supongamos que la variable de lenguaje principal NO MBRE (varchar(50)) tiene un valor de 'MAITE AYALA' y que la variable d e lenguaje principal POS_NOMB (int) tiene un valor de 5. LEFT( :NOMBRE, :POS_NOMB) Devuelve el valor 'MAITE'

DB2/400 Manual de Consulta SQL V3R7 Ejemplo

© Copyright IBM Corp. 1995, 1996 3.2.36.1 - 1

Page 284: DB2/400 Manual de Consulta SQLmarce.com/docs/systems/manuales/db2_400_manual_consulta_sql_v3r7.pdf · VERSION Nota de Versión Segunda edición (noviembre de 1996) Este manual es

3.2.37 LENGTH +-------------------------------------------------- ----------------------+ ¦ ¦ ¦ >-- LENGTH--(-- expresión --)-------------------------------------------> ¦ ¦ ¦ +-------------------------------------------------- ----------------------+ La función LENGTH devuelve la longitud de un valor. El argumento puede ser cualquier valor. El resultado de la función es un entero grande. Si el argumento puede ser nulo, el resultado también; si el argumento es nulo , el resultado es el valor nulo. El resultado es la longitud del argumento. La long itud de las series incluye blancos. La longitud de una serie de longi tud variable es la longitud real, no la longitud máxima. La longitud de una serie gráfica es el número de ca racteres. La longitud de todos los demás valores es el número de bytes qu e se utiliza para representar el valor: Números: - 2 para entero pequeño - 4 para entero grande - 4 para coma flotante de precisión simple - 8 para coma flotante de precisión doble - p para números decimales con zona y de precisión p - La parte entera de ( p/2)+1 para números decimales empaquetados con precisión p Serie de caracteres: - La longitud de la serie Series gráficas: - El número de caracteres DBCS o UCS-2 de la serie Valores de fecha y hora: - 3 para hora - 4 para fecha - 10 para indicación de la hora Subtemas 3.2.37.1 Ejemplos

DB2/400 Manual de Consulta SQL V3R7 LENGTH

© Copyright IBM Corp. 1995, 1996 3.2.37 - 1

Page 285: DB2/400 Manual de Consulta SQLmarce.com/docs/systems/manuales/db2_400_manual_consulta_sql_v3r7.pdf · VERSION Nota de Versión Segunda edición (noviembre de 1996) Este manual es

3.2.37.1 Ejemplos � Supongamos que la variable del lenguaje principa l DIRECCION es una serie de caracteres de longitud variable con un valor de 'C\ Severo Ochoa'. LENGTH(:DIRECCION) Devuelve el valor 15. � Supongamos que FECHA_INICIO es una columna de ti po DATE. LENGTH(FECHA_INICIO ) Devuelve el valor 4. � Supongamos que FECHA_INICIO es una columna de ti po DATE. LENGTH(CHAR(FECHA_INICIO, EUR)) Devuelve el valor 10.

DB2/400 Manual de Consulta SQL V3R7 Ejemplos

© Copyright IBM Corp. 1995, 1996 3.2.37.1 - 1

Page 286: DB2/400 Manual de Consulta SQLmarce.com/docs/systems/manuales/db2_400_manual_consulta_sql_v3r7.pdf · VERSION Nota de Versión Segunda edición (noviembre de 1996) Este manual es

3.2.38 LN +-------------------------------------------------- ----------------------+ ¦ ¦ ¦ >-- LN--(---- expresión ----)-------------------------------------------> ¦ ¦ ¦ +-------------------------------------------------- ----------------------+ La función LN devuelve el logaritmo natural de un n úmero. Las funciones EXP y LN son operaciones inversas. El argumento debe ser un número. El tipo de datos del resultado es de coma flotante de precisión doble. Si el argumento puede ser nulo, el resultado también; si el argumento es nulo, el resultado es el valor nulo. Subtemas 3.2.38.1 Ejemplo

DB2/400 Manual de Consulta SQL V3R7 LN

© Copyright IBM Corp. 1995, 1996 3.2.38 - 1

Page 287: DB2/400 Manual de Consulta SQLmarce.com/docs/systems/manuales/db2_400_manual_consulta_sql_v3r7.pdf · VERSION Nota de Versión Segunda edición (noviembre de 1996) Este manual es

3.2.38.1 Ejemplo Supongamos que la variable del lenguaje principal L OGNAT es una variable del lenguaje principal decimal (4,2) con un valor d e 31,62. LN(:LOGNAT) Devuelve el valor aproximado 3,45.

DB2/400 Manual de Consulta SQL V3R7 Ejemplo

© Copyright IBM Corp. 1995, 1996 3.2.38.1 - 1

Page 288: DB2/400 Manual de Consulta SQLmarce.com/docs/systems/manuales/db2_400_manual_consulta_sql_v3r7.pdf · VERSION Nota de Versión Segunda edición (noviembre de 1996) Este manual es

3.2.39 LNOT +-------------------------------------------------- ----------------------+ ¦ ¦ ¦ >-- LNOT--(---- expresión ----)-----------------------------------------> ¦ ¦ ¦ +-------------------------------------------------- ----------------------+ La función LNOT devuelve una serie que es el NOT ló gico de la serie de argumento. El argumento debe ser una serie de caracteres. No puede ser una serie gráfica o una serie de caracteres de tipo MIXED. El tipo de datos y el atributo de longitud del resu ltado son idénticos al tipo de datos y atributo de longitud del valor de a rgumento. Si el argumento es una serie de longitud variable, la lon gitud real del resultado es la misma que la longitud real del valo r de argumento. El CCSID del resultado es 65535. Si el argumento pued e ser nulo, el resultado también; si el argumento es nulo, el resu ltado es el valor nulo. Subtemas 3.2.39.1 Ejemplo

DB2/400 Manual de Consulta SQL V3R7 LNOT

© Copyright IBM Corp. 1995, 1996 3.2.39 - 1

Page 289: DB2/400 Manual de Consulta SQLmarce.com/docs/systems/manuales/db2_400_manual_consulta_sql_v3r7.pdf · VERSION Nota de Versión Segunda edición (noviembre de 1996) Este manual es

3.2.39.1 Ejemplo Supongamos que la variable del lenguaje principal L 1 es una variable del lenguaje principal de tipo character(2) con un valo r de X'F0F0. LNOT(:L1) Devuelve el valor X'0F0F'.

DB2/400 Manual de Consulta SQL V3R7 Ejemplo

© Copyright IBM Corp. 1995, 1996 3.2.39.1 - 1

Page 290: DB2/400 Manual de Consulta SQLmarce.com/docs/systems/manuales/db2_400_manual_consulta_sql_v3r7.pdf · VERSION Nota de Versión Segunda edición (noviembre de 1996) Este manual es

3.2.40 LOG o LOG10 +-------------------------------------------------- ----------------------+ ¦ ¦ ¦ >---- LOG------(---- expresión ----)------------------------------------> ¦ ¦ +- LOG10-+ ¦ ¦ ¦ +-------------------------------------------------- ----------------------+ Las funciones LOG y LOG10 devuelven el logaritmo co mún (de base 10) de un número. Las funciones LOG y ANTILOG son operacione s inversas. El argumento debe ser un número. El tipo de datos del resultado es de coma flotante de precisión doble. Si el argumento puede ser nulo, el resultado también; si el argumento es nulo, el resultado es el valor nulo. Subtemas 3.2.40.1 Ejemplo

DB2/400 Manual de Consulta SQL V3R7 LOG o LOG10

© Copyright IBM Corp. 1995, 1996 3.2.40 - 1

Page 291: DB2/400 Manual de Consulta SQLmarce.com/docs/systems/manuales/db2_400_manual_consulta_sql_v3r7.pdf · VERSION Nota de Versión Segunda edición (noviembre de 1996) Este manual es

3.2.40.1 Ejemplo Supongamos que la variable del lenguaje principal L es una variable del lenguaje principal decimal (4,2) con un valor de 31 ,62. LOG(:L) Devuelve el valor aproximado 1,49.

DB2/400 Manual de Consulta SQL V3R7 Ejemplo

© Copyright IBM Corp. 1995, 1996 3.2.40.1 - 1

Page 292: DB2/400 Manual de Consulta SQLmarce.com/docs/systems/manuales/db2_400_manual_consulta_sql_v3r7.pdf · VERSION Nota de Versión Segunda edición (noviembre de 1996) Este manual es

3.2.41 LOR +-------------------------------------------------- ----------------------+ ¦ ¦ ¦ <-,---------+ ¦ ¦ >-- LOR--(-- expresión ---- expresión ----)-------------------------------> ¦ ¦ ¦ +-------------------------------------------------- ----------------------+ La función LOR devuelve una serie que es el OR lógi co de las series de argumento. Esta función toma la primera serie de a rgumento, realiza una comparación OR con la siguiente serie de argumento y sigue después haciendo comparaciones OR para cada argumento suces ivo utilizando el resultado anterior. Si encuentra un argumento que es más corto que el resultado anterior, lo rellena con blancos. Los argumentos deben ser series de caracteres. Los argumentos no pueden ser series gráficas ni series de caracteres de dato s mixtos. Debe haber dos o más argumentos. Los argumentos que no sean e l primero pueden ser marcadores de parámetros. Los argumentos se convierten, si es necesario, a lo s atributos del resultado. Los atributos del resultado se determin an del siguiente modo: � Si todos los argumentos son series de longitud f ija, el resultado es una serie de longitud fija de longitud n, donde n es la longitud del argumento más largo. � Si algún argumento es una serie de longitud vari able, el resultado es una serie de longitud variable con un atributo de longitud n, donde n es el atributo de longitud del argumento con el mayor atributo de longitud. La longitud real del resultado es m, donde m es la longitud real del argumento más largo. � El CCSID del resultado es 65535. Si un argumento puede ser nulo, el resultado tambié n; si un argumento es nulo, el resultado es el valor nulo. Subtemas 3.2.41.1 Ejemplo

DB2/400 Manual de Consulta SQL V3R7 LOR

© Copyright IBM Corp. 1995, 1996 3.2.41 - 1

Page 293: DB2/400 Manual de Consulta SQLmarce.com/docs/systems/manuales/db2_400_manual_consulta_sql_v3r7.pdf · VERSION Nota de Versión Segunda edición (noviembre de 1996) Este manual es

3.2.41.1 Ejemplo Supongamos que la variable del lenguaje principal L 1 es una variable del lenguaje principal de tipo character(2) con un valo r de X'0101', la variable del lenguaje principal L2 es una variable del lenguaje principal de tipo character(3) con un valor de X'F0F000' y la variable del lenguaje principal L3 es una variable del lenguaje principal de tipo character(4) con un valor de X'0000000F'. LOR(:L1,:L2,:L3) Devuelve el valor X'F1F1000F'. LOR(:L3,:L2,:L1) Devuelve el valor X'F1F1404F'. En este caso, los a rgumentos más cortos se rellenan con blancos (X'40'), de manera que el resu ltado OR lógico difiere del primer ejemplo.

DB2/400 Manual de Consulta SQL V3R7 Ejemplo

© Copyright IBM Corp. 1995, 1996 3.2.41.1 - 1

Page 294: DB2/400 Manual de Consulta SQLmarce.com/docs/systems/manuales/db2_400_manual_consulta_sql_v3r7.pdf · VERSION Nota de Versión Segunda edición (noviembre de 1996) Este manual es

3.2.42 LTRIM +-------------------------------------------------- ----------------------+ ¦ ¦ ¦ >-- LTRIM--(-- expresión --)--------------------------------------------> ¦ ¦ ¦ +-------------------------------------------------- ----------------------+ La función LTRIM elimina blancos al principio de un a expresión de serie. (19) El argumento debe ser una expresión de serie. � Si el argumento es una serie gráfica DBCS, se el iminan los blancos DBCS iniciales. � Si el primer argumento es una serie gráfica UCS- 2, se eliminan los blancos UCS-2 iniciales. � De lo contrario, se eliminan los blancos SBCS in iciales. El resultado de la función es una serie de longitud variable con la misma longitud máxima que el atributo de longitud de la s erie. La longitud real del resultado es la longitud de la expresión menos el número de caracteres eliminados. Si se eliminan todos los caracteres, e l resultado es una serie de longitud variable vacía. El CCSID del resultado es el mismo que el de la ser ie. Si el primer argumento puede ser nulo, el resultado también; si el primer argumento es nulo, el resultado es el valor nulo. (19) La función LTRIM devuelve el mismo resultado que: STRIP(expresión,LEADING) Subtemas 3.2.42.1 Ejemplo

DB2/400 Manual de Consulta SQL V3R7 LTRIM

© Copyright IBM Corp. 1995, 1996 3.2.42 - 1

Page 295: DB2/400 Manual de Consulta SQLmarce.com/docs/systems/manuales/db2_400_manual_consulta_sql_v3r7.pdf · VERSION Nota de Versión Segunda edición (noviembre de 1996) Este manual es

3.2.42.1 Ejemplo Supongamos que la variable de lenguaje principal HO LA de tipo CHAR(9) tiene el valor ' Hola'. LTRIM( :HOLA) Da como resultado: 'Hola'.

DB2/400 Manual de Consulta SQL V3R7 Ejemplo

© Copyright IBM Corp. 1995, 1996 3.2.42.1 - 1

Page 296: DB2/400 Manual de Consulta SQLmarce.com/docs/systems/manuales/db2_400_manual_consulta_sql_v3r7.pdf · VERSION Nota de Versión Segunda edición (noviembre de 1996) Este manual es

3.2.43 MAX +-------------------------------------------------- ----------------------+ ¦ ¦ ¦ <-,---------+ ¦ ¦ >-- MAX--(-- expresión, ---- expresión ----)------------------------------> ¦ ¦ ¦ +-------------------------------------------------- ----------------------+ La función escalar MAX devuelve el valor máximo de un conjunto de valores. Los argumentos deben ser compatibles. Los argument os de serie de caracteres son compatibles con los valores de fecha y hora, pero no lo son con las series gráficas. Todos los argumentos exce pto el primero pueden ser marcadores de parámetros. Debe haber dos o más argumentos. Los argumentos no pueden ser series de caracteres cuyas longitudes máximas sean mayores que 256 caracteres, o series gráficas cuyas longitudes máximas sean mayores que 128 caracteres DBCS o UCS- 2. El resultado de la función es el valor de argumento más grande. El resultado puede ser nulo si por lo menos un argumen to puede serlo; el resultado es el valor nulo si uno de los argumentos es nulo. Los argumentos seleccionados se convierten, si es neces ario, a los atributos del resultado. Los atributos del resultado se dete rminan del siguiente modo: � Si los argumentos contienen al menos una fecha y los argumentos restantes son fechas o representaciones de seri e válidas de fecha, el resultado es una fecha. Si los argumentos cont ienen al menos una hora y los argumentos restantes son horas o represen taciones de serie válidas de hora, el resultado es una hora. Si los argumentos contienen al menos una indicación de la hora y los argumentos restantes son indicaciones de la hora o represe ntaciones de serie válidas de indicación de la hora, el resultado es una indicación de la hora. � Si los argumentos son series, el CCSID del resul tado es el CCSID que resultaría de concatenar los argumentos. Véase el apartado "Reglas de conversión para operaciones que combinan series" en el tema 4.3.3 . � Si todos los argumentos son series de longitud f ija, el resultado es una serie de longitud fija de longitud n, donde n es la longitud del argumento más largo. � Si algún argumento es una serie de longitud vari able, el resultado es una serie de longitud variable con un atributo de longitud n, donde n es el atributo de longitud del argumento con el mayor atributo de longitud. La longitud real del resultado es m, donde m es la longitud real del argumento más largo. � Si los argumentos son números, el tipo de datos del resultado es el mismo que resultaría de sumar los argumentos. En el caso de un resultado decimal: - La escala es s, donde s es la escala del argumento con mayor escala. - La precisión es el mínimo de 31 y s+n , donde n es el número de dígitos del argumento con la mayor diferenc ia entre su precisión y su escala. - El número de dígitos necesarios para repres entar la parte entera del argumento más largo no debe se superior a 31- s . Si está en vigor una secuencia de clasificación dis tinta de *HEX al ejecutar la sentencia e intervienen datos SBCS o mi xtos, se comparan los valores significativos de las series en lugar de lo s valores reales. Los valores significativos están basados en la secuenci a de clasificación. Subtemas 3.2.43.1 Ejemplos

DB2/400 Manual de Consulta SQL V3R7 MAX

© Copyright IBM Corp. 1995, 1996 3.2.43 - 1

Page 297: DB2/400 Manual de Consulta SQLmarce.com/docs/systems/manuales/db2_400_manual_consulta_sql_v3r7.pdf · VERSION Nota de Versión Segunda edición (noviembre de 1996) Este manual es

3.2.43.1 Ejemplos � Supongamos que la variable del lenguaje principa l M1 es una variable del lenguaje principal de tipo decimal(2,1) con un valor de 5,5, la variable del lenguaje principal M2 es una varia ble del lenguaje principal de tipo decimal(3,1) con un valor de 4,5 y la variable del lenguaje principal M3 es una variable del lengu aje principal de tipo decimal(3,2) con un valor de 6,25. MAX(:M1,:M2,:M3) Devuelve el valor 6,25. � Supongamos que la variable del lenguaje principa l M1 es una variable del lenguaje principal de tipo character(2) con un valor de 'AA', la variable del lenguaje principal M2 es una varia ble del lenguaje principal de tipo character(3) con un valor de 'AA ' y la variable del lenguaje principal M3 es una variable del lengu aje principal de tipo character(4) con un valor de 'AA A'. MAX(:M1,:M2,:M3) Devuelve el valor 'AA A'.

DB2/400 Manual de Consulta SQL V3R7 Ejemplos

© Copyright IBM Corp. 1995, 1996 3.2.43.1 - 1

Page 298: DB2/400 Manual de Consulta SQLmarce.com/docs/systems/manuales/db2_400_manual_consulta_sql_v3r7.pdf · VERSION Nota de Versión Segunda edición (noviembre de 1996) Este manual es

3.2.44 MICROSECOND +-------------------------------------------------- ----------------------+ ¦ ¦ ¦ >-- MICROSECOND--(-- expresión --)--------------------------------------> ¦ ¦ ¦ +-------------------------------------------------- ----------------------+ La función MICROSECOND devuelve la parte de un valo r correspondiente a los microsegundos. El argumento debe ser una indicación de la hora, un a representación de serie de indicación de la hora o una duración de in dicación de la hora. El resultado de la función es un entero grande. Si el argumento puede ser nulo, el resultado también; si el argumento es nulo , el resultado es el valor nulo. El resto de las reglas dependen del tipo de datos d el argumento: � Si el argumento es una indicación de la hora: El resultado es la parte del valor correspondie nte a los microsegundos, que es un número entero comprend ido entre 0 y 999999. � Si el argumento es una duración: El resultado es la parte del valor correspondie nte a los microsegundos, que es un número entero comprend ido entre -999999 y 999999. Un resultado no cero tiene el mismo si gno que el argumento. Subtemas 3.2.44.1 Ejemplo

DB2/400 Manual de Consulta SQL V3R7 MICROSECOND

© Copyright IBM Corp. 1995, 1996 3.2.44 - 1

Page 299: DB2/400 Manual de Consulta SQLmarce.com/docs/systems/manuales/db2_400_manual_consulta_sql_v3r7.pdf · VERSION Nota de Versión Segunda edición (noviembre de 1996) Este manual es

3.2.44.1 Ejemplo Supongamos que una tabla TABLAA contiene dos column as, TS1 y TS2, del tipo TIMESTAMP. Seleccionar todas las filas en las que la parte correspondiente a los microsegundos de TS1 sean dif erentes de cero y la parte correspondiente a los segundos de TS1 y TS2 s ea idéntica. SELECT * FROM TABLAA WHERE MICROSECOND(TS1) <> 0 AND SECOND(TS1) = SECOND(TS2)

DB2/400 Manual de Consulta SQL V3R7 Ejemplo

© Copyright IBM Corp. 1995, 1996 3.2.44.1 - 1

Page 300: DB2/400 Manual de Consulta SQLmarce.com/docs/systems/manuales/db2_400_manual_consulta_sql_v3r7.pdf · VERSION Nota de Versión Segunda edición (noviembre de 1996) Este manual es

3.2.45 MIN +-------------------------------------------------- ----------------------+ ¦ ¦ ¦ <-,---------+ ¦ ¦ >-- MIN--(-- expresión, ---- expresión ----)------------------------------> ¦ ¦ ¦ +-------------------------------------------------- ----------------------+ La función escalar MIN devuelve el valor mínimo de un conjunto de valores. Los argumentos deben ser compatibles. Los argument os de serie de caracteres son compatibles con los valores de fecha y hora, pero no lo son con las series gráficas. Todos los argumentos exce pto el primero pueden ser marcadores de parámetros. Debe haber dos o más argumentos. Los argumentos no pueden ser series de caracteres cuyas longitudes máximas sean mayores que 256 caracteres, o series gráficas cuyas longitudes máximas sean mayores que 128 caracteres DBCS o UCS- 2. El resultado de la función es el valor de argumento más pequeño. El resultado puede ser nulo si por lo menos un argumen to puede serlo; el resultado es el valor nulo si uno de los argumentos es nulo. Los argumentos seleccionados se convierten, si es neces ario, a los atributos del resultado. Los atributos del resultado se dete rminan del siguiente modo: � Si los argumentos contienen al menos una fecha y los argumentos restantes son fechas o representaciones de seri e válidas de fecha, el resultado es una fecha. Si los argumentos cont ienen al menos una hora y los argumentos restantes son horas o represen taciones de serie válidas de hora, el resultado es una hora. Si los argumentos contienen al menos una indicación de la hora y los argumentos restantes son indicaciones de la hora o represe ntaciones de serie válidas de indicación de la hora, el resultado es una indicación de la hora. � Si los argumentos son series, el CCSID del resul tado es el CCSID que resultaría de concatenar los argumentos. Véase el apartado "Reglas de conversión para operaciones que combinan series" en el tema 4.3.3 . � Si todos los argumentos son series de longitud f ija, el resultado es una serie de longitud fija de longitud n, donde n es la longitud del argumento más largo. � Si algún argumento es una serie de longitud vari able, el resultado es una serie de longitud variable con un atributo de longitud n, donde n es el atributo de longitud del argumento con el mayor atributo de longitud. La longitud real del resultado es m, donde m es la longitud real del argumento más pequeño. � Si los argumentos son números, el tipo de datos del resultado es el que resultaría de sumar los argumentos. En el caso de un resultado decimal: - La escala es s, donde s es la escala del argumento con mayor escala. - La precisión es el mínimo de 31 y s+n , donde n es el número de dígitos del argumento con la mayor diferenc ia entre su precisión y su escala. - El número de dígitos necesarios para repres entar la parte entera del argumento más largo no debe se superior a 31- s . Si está en vigor una secuencia de clasificación dis tinta de *HEX al ejecutar la sentencia e intervienen datos SBCS o mi xtos, se comparan los valores significativos de las series en lugar de lo s valores reales. Los valores significativos están basados en la secuenci a de clasificación. Subtemas 3.2.45.1 Ejemplos

DB2/400 Manual de Consulta SQL V3R7 MIN

© Copyright IBM Corp. 1995, 1996 3.2.45 - 1

Page 301: DB2/400 Manual de Consulta SQLmarce.com/docs/systems/manuales/db2_400_manual_consulta_sql_v3r7.pdf · VERSION Nota de Versión Segunda edición (noviembre de 1996) Este manual es

3.2.45.1 Ejemplos � Supongamos que la variable del lenguaje principa l M1 es una variable del lenguaje principal de tipo decimal(2,1) con un valor de 5,5, la variable del lenguaje principal M2 es una varia ble del lenguaje principal de tipo decimal(3,1) con un valor de 4,5 y la variable del lenguaje principal M3 es una variable del lengu aje principal de tipo decimal(3,2) con un valor de 6,25. MIN(:M1,:M2,:M3) Devuelve el valor 4,50. � Supongamos que la variable del lenguaje principa l M1 es una variable del lenguaje principal de tipo character(2) con un valor de 'AA', la variable del lenguaje principal M2 es una varia ble del lenguaje principal de tipo character(3) con un valor de 'AAA' y la variable del lenguaje principal M3 es una variable del lengu aje principal de tipo character(4) con un valor de 'AAAAA'. MIN(:M1,:M2,:M3) Devuelve el valor 'AA'.

DB2/400 Manual de Consulta SQL V3R7 Ejemplos

© Copyright IBM Corp. 1995, 1996 3.2.45.1 - 1

Page 302: DB2/400 Manual de Consulta SQLmarce.com/docs/systems/manuales/db2_400_manual_consulta_sql_v3r7.pdf · VERSION Nota de Versión Segunda edición (noviembre de 1996) Este manual es

3.2.46 MINUTE +-------------------------------------------------- ----------------------+ ¦ ¦ ¦ >-- MINUTE--(-- expresión --)-------------------------------------------> ¦ ¦ ¦ +-------------------------------------------------- ----------------------+ La función MINUTE devuelve la parte de un valor cor respondiente a los minutos. El argumento debe ser una hora, una indicación de l a hora, una duración de hora o una duración de indicación de la hora. El resultado de la función es un entero grande. Si el argumento puede ser nulo, el resultado también; si el argumento es nulo , el resultado es el valor nulo. El resto de las reglas dependen del tipo de datos d el argumento: � Si el argumento es una hora o una indicación de la hora: El resultado es la parte del valor correspondie nte a los minutos, que es entero comprendido entre 0 y 59. � Si el argumento es una duración de hora o de ind icación de la hora: El resultado es la parte del valor correspondie nte a los minutos, que es entero comprendido entre -99 y 99. Un resul tado no cero tiene el mismo signo que el argumento. Subtemas 3.2.46.1 Ejemplo

DB2/400 Manual de Consulta SQL V3R7 MINUTE

© Copyright IBM Corp. 1995, 1996 3.2.46 - 1

Page 303: DB2/400 Manual de Consulta SQLmarce.com/docs/systems/manuales/db2_400_manual_consulta_sql_v3r7.pdf · VERSION Nota de Versión Segunda edición (noviembre de 1996) Este manual es

3.2.46.1 Ejemplo Utilizando la tabla de ejemplo CL_PREVI, selecciona r todas las clases con una duración inferior a 50 minutos. SELECT * FROM CL_PREVI WHERE HOUR(FIN - INICIO ) = 0 AND MINUTE(FIN - INICIO ) < 50

DB2/400 Manual de Consulta SQL V3R7 Ejemplo

© Copyright IBM Corp. 1995, 1996 3.2.46.1 - 1

Page 304: DB2/400 Manual de Consulta SQLmarce.com/docs/systems/manuales/db2_400_manual_consulta_sql_v3r7.pdf · VERSION Nota de Versión Segunda edición (noviembre de 1996) Este manual es

3.2.47 MOD +-------------------------------------------------- ----------------------+ ¦ ¦ ¦ >-- MOD--(-- expresión, -- expresión --)----------------------------------> ¦ ¦ ¦ +-------------------------------------------------- ----------------------+ La función MOD divide el primer argumento entre el segundo y devuelve el resto. La fórmula utilizada para calcular el resto es: MOD(x,y) = x - (x/y) * y donde x/y es el resultado de entero truncado de la división. Los argumentos deben ser números. El segundo argum ento no puede ser cero. Si un argumento puede ser nulo, el resultado tambié n; si un argumento es nulo, el resultado es el valor nulo. Los atributos del resultado se determinan del sigui ente modo: � Si ambos argumentos son enteros de escala cero, el tipo de datos del resultado es un entero grande. � Si un argumento es un entero de escala cero y el otro es decimal, el resultado es decimal con la misma precisión y e scala que el argumento decimal. � Si ambos argumentos son número decimales o enter os con escala, el resultado es decimal. La precisión del resulta do es min (p-s,p'-s') + max (s,s') y la escala del resultado es max (s, s'), donde los símbolos p y s denotan la precisión y la escala del prim er operando, y los símbolos p' y s' la precisión y la escala del s egundo operando. � Si uno de los dos argumentos es de coma flotante , el tipo de datos del resultado es coma flotante de precisión doble. La operación se realiza en coma flotante; previ amente se convierten los operandos en números de coma flotante de pr ecisión doble, si es necesario. Una operación en la que intervengan un número d e coma flotante y un entero se realiza con una copia temporal del en tero, que se ha convertido a coma flotante de precisión doble. Una operación en la que intervengan un número de coma flotante y un número decimal se realiza con una copia temporal del número decim al, que se ha convertido a coma flotante de precisión doble. El resultado de una operación de coma flotante debe estar dentro de l rango de números de coma flotante. Subtemas 3.2.47.1 Ejemplos

DB2/400 Manual de Consulta SQL V3R7 MOD

© Copyright IBM Corp. 1995, 1996 3.2.47 - 1

Page 305: DB2/400 Manual de Consulta SQLmarce.com/docs/systems/manuales/db2_400_manual_consulta_sql_v3r7.pdf · VERSION Nota de Versión Segunda edición (noviembre de 1996) Este manual es

3.2.47.1 Ejemplos � Supongamos que la variable del lenguaje principa l M1 es una variable del lenguaje principal de entero con un valor d e 5 y que la variable del lenguaje principal M2 es una variable del l enguaje principal de entero con un valor de 2. MOD(:M1,:M2) Devuelve el valor 1. � Supongamos que la variable del lenguaje principa l M1 es una variable del lenguaje principal de entero con un valor d e 5 y que la variable del lenguaje principal M2 es una variable del l enguaje principal decimal(3,1) con un valor de 2,2. MOD(:M1,:M2) Devuelve el valor 0,6. � Supongamos que la variable del lenguaje principa l M1 es una variable del lenguaje principal de entero con un valor d e 5 y que la variable del lenguaje principal M2 es una variable del l enguaje principal decimal(3,2) con un valor de 2,20. MOD(:M1,:M2) Devuelve el valor 0,60. � Supongamos que la variable del lenguaje principa l M1 es una variable del lenguaje principal decimal(4,2) con un valo r de 5,50 y que la variable del lenguaje principal M2 es una varia ble del lenguaje principal decimal(4,1) con un valor de 2,0. MOD(:M1,:M2) Devuelve el valor 1,50.

DB2/400 Manual de Consulta SQL V3R7 Ejemplos

© Copyright IBM Corp. 1995, 1996 3.2.47.1 - 1

Page 306: DB2/400 Manual de Consulta SQLmarce.com/docs/systems/manuales/db2_400_manual_consulta_sql_v3r7.pdf · VERSION Nota de Versión Segunda edición (noviembre de 1996) Este manual es

3.2.48 MONTH +-------------------------------------------------- ----------------------+ ¦ ¦ ¦ >-- MONTH--(-- expresión --)--------------------------------------------> ¦ ¦ ¦ +-------------------------------------------------- ----------------------+ La función MONTH devuelve la parte de un valor corr espondiente al mes. El argumento debe ser una fecha, una indicación de la hora, una duración de fecha o una duración de indicación de la hora. El resultado de la función es un entero grande. Si el argumento puede ser nulo, el resultado también; si el argumento es nulo , el resultado es el valor nulo. El resto de las reglas dependen del tipo de datos d el argumento: � Si el argumento es una fecha o una indicación de la hora: El resultado es la parte del valor correspondie nte al mes, que es un número entero entre 1 y 12. � Si el argumento es una duración de fecha o durac ión de indicación de la hora: El resultado es la parte del valor correspondie nte al mes, que es un entero comprendido entre -99 y 99. Un resultad o no cero tiene el mismo signo que el argumento. Subtemas 3.2.48.1 Ejemplo

DB2/400 Manual de Consulta SQL V3R7 MONTH

© Copyright IBM Corp. 1995, 1996 3.2.48 - 1

Page 307: DB2/400 Manual de Consulta SQLmarce.com/docs/systems/manuales/db2_400_manual_consulta_sql_v3r7.pdf · VERSION Nota de Versión Segunda edición (noviembre de 1996) Este manual es

3.2.48.1 Ejemplo � Seleccionar todas las filas de la tabla EMPLEADO correspondientes a las personas nacidas (FCHNACIM) en diciembre. SELECT * FROM EMPLEADO WHERE MONTH(FCHNACIM) = 12

DB2/400 Manual de Consulta SQL V3R7 Ejemplo

© Copyright IBM Corp. 1995, 1996 3.2.48.1 - 1

Page 308: DB2/400 Manual de Consulta SQLmarce.com/docs/systems/manuales/db2_400_manual_consulta_sql_v3r7.pdf · VERSION Nota de Versión Segunda edición (noviembre de 1996) Este manual es

| 3.2.49 NODENAME +-------------------------------------------------- ----------------------+| ¦ ¦| ¦ >-- NODENAME--(-- designador-tabla --)----------------------------------> ¦ ¦ ¦ +-------------------------------------------------- ----------------------+ | La función NODENAME devuelve el nombre de la base d e datos relacional en| la que se ha ubicado una fila. Si el argumento ide ntifica una tabla no| distribuida, se devuelve el valor del registro espe cial CURRENT SERVER.| Para obtener más información sobre los nodos, consu lte la publicación DB2| Multisystem for OS/400 , SC41-3705. | El argumento es un designador de tabla de la subsel ección. Para obtener| más información acerca de los designadores de tabla , consulte el apartado| "Designadores de tabla" en el tema 2.10.3 . | En la denominación de SQL, el nombre de tabla puede calificarse. En la| denominación del sistema no se puede calificar el n ombre de la tabla. | Si el argumento identifica una vista, la función de vuelve el nombre de la| base de datos relacional de su tabla base. Si el a rgumento identifica una| vista derivada de más de una tabla base, la función devuelve el nombre de| la base de datos relacional de la primera tabla de la subselección| exterior de la vista. | El argumento no debe identificar una vista cuya sub selección exterior| incluya una función de columna, una cláusula GROUP BY o una cláusula| HAVING. Si la subselección contiene una cláusula G ROUP BY o HAVING, la| función NODENAME sólo puede especificarse en la clá usula WHERE o como un| operando de una función de columna. Si el argument o es un nombre de| correlación, éste no debe identificar una referenci a correlacionada. | El tipo de datos del resultado es VARCHAR(18). El resultado no puede ser| nulo. Subtemas 3.2.49.1 Ejemplo

DB2/400 Manual de Consulta SQL V3R7 NODENAME

© Copyright IBM Corp. 1995, 1996 3.2.49 - 1

Page 309: DB2/400 Manual de Consulta SQLmarce.com/docs/systems/manuales/db2_400_manual_consulta_sql_v3r7.pdf · VERSION Nota de Versión Segunda edición (noviembre de 1996) Este manual es

| 3.2.49.1 Ejemplo | Unir las tablas EMPLEADO y DEPARTAMENTO, selecciona r el número de empleado| (NUMEMP) y determinar el nodo a partir del cual se originó cada fila| implicada en la unión. | SELECT NUMEMP, NODENAME(X),| NODENAME(Y)| FROM DATOSCORP.EMPLEADO X, DATOSCORP.DEPARTMENTO Y| WHERE X.NUMDEP=Y.NUMDEP

DB2/400 Manual de Consulta SQL V3R7 Ejemplo

© Copyright IBM Corp. 1995, 1996 3.2.49.1 - 1

Page 310: DB2/400 Manual de Consulta SQLmarce.com/docs/systems/manuales/db2_400_manual_consulta_sql_v3r7.pdf · VERSION Nota de Versión Segunda edición (noviembre de 1996) Este manual es

3.2.50 NODENUMBER +-------------------------------------------------- ----------------------+ ¦ ¦ ¦ >-- NODENUMBER--(-- designador-tabla --)--------------------------------> ¦ ¦ ¦ +-------------------------------------------------- ----------------------+ | La función NODENUMBER devuelve el número de nodo de una fila. Si el| argumento identifica una tabla no distribuida, se d evuelve el valor 0.| Para obtener más información sobre nodos y números de nodos, consulte la| publicación DB2 Multisystem for OS/400 , SC41-3705. | El argumento es un designador de tabla de la subsel ección. Para obtener más información sobre los designadores de tablas, c onsulte el apartado "Designadores de tabla" en el tema 2.10.3 . En la denominación de SQL, el nombre de tabla puede calificarse. En la denominación del sistema, no se puede calificar el nombre de la tabla. | Si el argumento identifica una vista, la función de vuelve el número de| nodo de la tabla base. Si el argumento identifica una vista derivada de| más de una tabla base, la función devuelve el númer o de nodo de la primera| tabla de la subselección exterior de la vista. El argumento no debe identificar una vista cuya sub selección exterior incluya una función de columna, una cláusula GROUP BY o una cláusula| HAVING. Si la subselección contiene una cláusula G ROUP BY o HAVING, la| función NODENUMBER sólo puede especificarse en la c láusula WHERE o como un| operando de una función de columna. Si el argument o es un nombre de| correlación, éste no debe identificar una referenci a correlacionada. | El tipo de datos del resultado es entero grande. E l resultado no puede ser nulo. Subtemas 3.2.50.1 Ejemplo

DB2/400 Manual de Consulta SQL V3R7 NODENUMBER

© Copyright IBM Corp. 1995, 1996 3.2.50 - 1

Page 311: DB2/400 Manual de Consulta SQLmarce.com/docs/systems/manuales/db2_400_manual_consulta_sql_v3r7.pdf · VERSION Nota de Versión Segunda edición (noviembre de 1996) Este manual es

3.2.50.1 Ejemplo | Determinar el número de nodo y el nombre del emplea do para cada fila de la| tabla DATOSCORP.EMPLEADO. Si se trata de una tabla distribuida, se| devuelve el número del nodo en el que se haya la fi la. | SELECT NODENUMBER(DATOSCORP.EMPLEADO), APELL| FROM DATOSCORP.EMPLEADO

DB2/400 Manual de Consulta SQL V3R7 Ejemplo

© Copyright IBM Corp. 1995, 1996 3.2.50.1 - 1

Page 312: DB2/400 Manual de Consulta SQLmarce.com/docs/systems/manuales/db2_400_manual_consulta_sql_v3r7.pdf · VERSION Nota de Versión Segunda edición (noviembre de 1996) Este manual es

3.2.51 NOW +-------------------------------------------------- ----------------------+ ¦ ¦ ¦ >-- NOW--(--)--------------------------------------------- ------------> ¦ ¦ ¦ +-------------------------------------------------- ----------------------+ La función NOW devuelve una indicación de la hora b asándose en una lectura del reloj de la hora del día al ejecutar la sentenc ia SQL en el servidor actual. El valor que devuelve la función NOW es ig ual al valor que devuelve el registro especial CURRENT TIMESTAMP. S i esta función se utiliza más de una vez dentro de una única sentenci a SQL, se utiliza con las funciones escalares CURDATE o CURTIME, o se uti liza con los registros especiales CURRENT DATE, CURRENT TIME o CURRENT TIM ESTAMP dentro de una única sentencia, todos los valores se basan en una única lectura del reloj. El tipo de datos del resultado es una indicación de la hora. Subtemas 3.2.51.1 Ejemplo

DB2/400 Manual de Consulta SQL V3R7 NOW

© Copyright IBM Corp. 1995, 1996 3.2.51 - 1

Page 313: DB2/400 Manual de Consulta SQLmarce.com/docs/systems/manuales/db2_400_manual_consulta_sql_v3r7.pdf · VERSION Nota de Versión Segunda edición (noviembre de 1996) Este manual es

3.2.51.1 Ejemplo Devuelve la indicación de la hora actual basándose en el reloj de la hora del día. NOW()

DB2/400 Manual de Consulta SQL V3R7 Ejemplo

© Copyright IBM Corp. 1995, 1996 3.2.51.1 - 1

Page 314: DB2/400 Manual de Consulta SQLmarce.com/docs/systems/manuales/db2_400_manual_consulta_sql_v3r7.pdf · VERSION Nota de Versión Segunda edición (noviembre de 1996) Este manual es

| 3.2.52 PARTITION +-------------------------------------------------- ----------------------+| ¦ ¦| ¦ >-- PARTITION--(-- designador-tabla --)---------------------------------> ¦ ¦ ¦ +-------------------------------------------------- ----------------------+ | La función PARTITION devuelve el número de partició n de una fila obtenida| aplicando la función hash en el valor clave de part ición de la fila.| Consulte también la función HASH. Si el argumento identifica una tabla no| distribuida, se devuelve el valor 0. Para obtener más información sobre| números y claves de partición, consulte la publicac ión DB2 Multisystem for| OS/400 , SC41-3705. | El argumento es un designador de tabla de la subsel ección. Para obtener| más información acerca de los designadores de tabla , consulte el apartado| "Designadores de tabla" en el tema 2.10.3 . | En la denominación de SQL, el nombre de tabla puede calificarse. En la| denominación del sistema no se puede calificar el n ombre de la tabla. | Si el argumento identifica una vista SQL, la funció n devuelve el número de| partición de la tabla base. Si el argumento identi fica una vista SQL| derivada de más de una tabla base, la función devue lve el número de| partición de la primera tabla de la subselección ex terior de la vista. | El argumento no debe identificar una vista cuya sub selección exterior| incluya una función de columna, una cláusula GROUP BY o una cláusula| HAVING. Si la subselección contiene una cláusula G ROUP BY o HAVING, la| función PARTITION sólo puede especificarse en la cl áusula WHERE o como un| operando de una función de columna. Si el argument o es un nombre de| correlación, éste no debe identificar una referenci a correlacionada. | El tipo de datos del resultado es entero grande con un valor entre 0 y| 1023. El resultado no puede ser nulo. Subtemas 3.2.52.1 Ejemplo

DB2/400 Manual de Consulta SQL V3R7 PARTITION

© Copyright IBM Corp. 1995, 1996 3.2.52 - 1

Page 315: DB2/400 Manual de Consulta SQLmarce.com/docs/systems/manuales/db2_400_manual_consulta_sql_v3r7.pdf · VERSION Nota de Versión Segunda edición (noviembre de 1996) Este manual es

| 3.2.52.1 Ejemplo | Seleccionar el número de empleado (NUMEMP) de la ta bla EMPLEADO para todas| las filas en las que el número de partición sea igu al a 100. | SELECT NUMEMP| FROM DATOSCORP.EMPLEADO| WHERE PARTITION(DATOSCORP.EMPLEADO) = 100

DB2/400 Manual de Consulta SQL V3R7 Ejemplo

© Copyright IBM Corp. 1995, 1996 3.2.52.1 - 1

Page 316: DB2/400 Manual de Consulta SQLmarce.com/docs/systems/manuales/db2_400_manual_consulta_sql_v3r7.pdf · VERSION Nota de Versión Segunda edición (noviembre de 1996) Este manual es

3.2.53 POWER +-------------------------------------------------- ----------------------+ ¦ ¦ ¦ >-- POWER--(-- expresión --,-- expresión --)------------------------------> ¦ ¦ ¦ +-------------------------------------------------- ----------------------+ La función POWER devuelve el resultado de elevar el primer argumento a la potencia del segundo argumento. (20) Ambos argumentos deben ser números. El resultado de la función es un número de coma flo tante de precisión doble. Si el argumento puede ser nulo, el resultad o también; si el argumento es nulo, el resultado es el valor nulo. (20) El resultado de la función POWER es exactamen te igual que el resultado de la: expresión-1 ** expresión-2 . Subtemas 3.2.53.1 Ejemplo

DB2/400 Manual de Consulta SQL V3R7 POWER

© Copyright IBM Corp. 1995, 1996 3.2.53 - 1

Page 317: DB2/400 Manual de Consulta SQLmarce.com/docs/systems/manuales/db2_400_manual_consulta_sql_v3r7.pdf · VERSION Nota de Versión Segunda edición (noviembre de 1996) Este manual es

3.2.53.1 Ejemplo Supongamos que la variable del lenguaje principal H POWER es un entero con el valor 3. POWER(2,:HPOWER) Devuelve el valor 8.

DB2/400 Manual de Consulta SQL V3R7 Ejemplo

© Copyright IBM Corp. 1995, 1996 3.2.53.1 - 1

Page 318: DB2/400 Manual de Consulta SQLmarce.com/docs/systems/manuales/db2_400_manual_consulta_sql_v3r7.pdf · VERSION Nota de Versión Segunda edición (noviembre de 1996) Este manual es

3.2.54 QUARTER +-------------------------------------------------- ----------------------+ ¦ ¦ ¦ >-- QUARTER--(-- expresión --)------------------------------------------> ¦ ¦ ¦ +-------------------------------------------------- ----------------------+ La función QUARTER devuelve un entero entre el 1 y el 4, que representa el trimestre del año en que reside la fecha. Por ejemp lo, todas las fechas de enero, febrero o marzo devolverán el entero 1. El argumento debe ser una fecha o indicación de la hora. El resultado de la función es un entero grande. Si el argumento puede ser nulo, el resultado también; si el argumento es nulo , el resultado es el valor nulo. Subtemas 3.2.54.1 Ejemplo

DB2/400 Manual de Consulta SQL V3R7 QUARTER

© Copyright IBM Corp. 1995, 1996 3.2.54 - 1

Page 319: DB2/400 Manual de Consulta SQLmarce.com/docs/systems/manuales/db2_400_manual_consulta_sql_v3r7.pdf · VERSION Nota de Versión Segunda edición (noviembre de 1996) Este manual es

3.2.54.1 Ejemplo Utilizando la tabla PROYECTO, establecer la variabl e del lenguaje principal TRIM (int) en el trimestre en que finaliz ó (FCHFINPR) el proyecto 'PL2100'. SELECT QUARTER(FCHFINPR) INTO :TRIM FROM PROYECTO WHERE NUMPROY = 'PL2100' Da como resultado que QUART quede establecido en 3 cuando se utiliza la tabla de ejemplo.

DB2/400 Manual de Consulta SQL V3R7 Ejemplo

© Copyright IBM Corp. 1995, 1996 3.2.54.1 - 1

Page 320: DB2/400 Manual de Consulta SQLmarce.com/docs/systems/manuales/db2_400_manual_consulta_sql_v3r7.pdf · VERSION Nota de Versión Segunda edición (noviembre de 1996) Este manual es

3.2.55 RRN +-------------------------------------------------- ----------------------+ ¦ ¦ ¦ >-- RRN--(-- designador-tabla --)---------------------------------------> ¦ ¦ ¦ +-------------------------------------------------- ----------------------+ La función RRN devuelve el número relativo de regis tro de una fila. El argumento es un designador de tabla de la subsel ección. Para obtener más información acerca de los designadores de tabla , consulte el apartado "Designadores de tabla" en el tema 2.10.3 . En la denominación de SQL, el nombre de tabla puede calificarse. En la denominación del sistema, el nombre de tabla no pue de calificarse. Si el argumento identifica una vista, la función de vuelve el número de registro relativo de su tabla base. Si el argument o identifica una vista derivada de más de una tabla base, la función devue lve el número de registro relativo de la primera tabla de la subsele cción exterior de la vista. | Si el argumento identifica una tabla distribuida, l a función devuelve el| número de registro relativo de la fila en el nodo e n el que se ubica la| fila. Esto significa que el valor RRN no será excl usivo para cada fila de| una tabla distribuida. El argumento no debe identificar una vista cuya sub selección exterior incluya una función de columna, una cláusula GROUP BY o una cláusula HAVING. La función RRN no puede especificarse en u na cláusula SELECT si la subselección contiene una función de columna, un a cláusula GROUP BY o una cláusula HAVING. Si el argumento es un nombre de correlación, éste no debe identificar una referencia correlacionada. El tipo de datos del resultado es entero grande. E l resultado puede ser nulo. El valor RRN para una fila que pertenezca a una tabla del lado derecho para uniones de excepción y exteriores izqu ierdas devolverá 0 para una fila que no coincida. Subtemas 3.2.55.1 Ejemplo

DB2/400 Manual de Consulta SQL V3R7 RRN

© Copyright IBM Corp. 1995, 1996 3.2.55 - 1

Page 321: DB2/400 Manual de Consulta SQLmarce.com/docs/systems/manuales/db2_400_manual_consulta_sql_v3r7.pdf · VERSION Nota de Versión Segunda edición (noviembre de 1996) Este manual es

3.2.55.1 Ejemplo SELECT RRN(DATOSCORP.EMPLEADO), APELL FROM DATOSCORP.EMPLEADO WHERE NUMDEPT = 20 Devuelve el número de registro relativo y el nombre de empleado de la tabla EMPLEADO correspondientes a los empleados del departamento 20.

DB2/400 Manual de Consulta SQL V3R7 Ejemplo

© Copyright IBM Corp. 1995, 1996 3.2.55.1 - 1

Page 322: DB2/400 Manual de Consulta SQLmarce.com/docs/systems/manuales/db2_400_manual_consulta_sql_v3r7.pdf · VERSION Nota de Versión Segunda edición (noviembre de 1996) Este manual es

3.2.56 RTRIM +-------------------------------------------------- ----------------------+ ¦ ¦ ¦ >-- RTRIM--(-- expresión --)--------------------------------------------> ¦ ¦ ¦ +-------------------------------------------------- ----------------------+ La función RTRIM elimina los blancos del final de u na expresión de serie. (21) El argumento debe ser una expresión de serie. � Si el argumento es una serie gráfica DBCS, se el iminan los blancos DBCS de cola. � Si el primer argumento es una serie gráfica UCS- 2, se eliminan los blancos UCS-2 de cola. � De lo contrario, se eliminan los blancos SBCS de cola. El resultado de la función es una serie de longitud variable con la misma longitud máxima que el atributo de longitud de la s erie. La longitud real del resultado es la longitud de la expresión menos el número de caracteres eliminados. Si se eliminan todos los caracteres, e l resultado es una serie de longitud variable vacía. El CCSID del resultado es el mismo que el de la ser ie. Si el primer argumento puede ser nulo, el resultado también; si el primer argumento es nulo, el resultado es el valor nulo. (21) La función RTRIM devuelve el mismo resultado que: STRIP(expresión,TRAILING) Subtemas 3.2.56.1 Ejemplo

DB2/400 Manual de Consulta SQL V3R7 RTRIM

© Copyright IBM Corp. 1995, 1996 3.2.56 - 1

Page 323: DB2/400 Manual de Consulta SQLmarce.com/docs/systems/manuales/db2_400_manual_consulta_sql_v3r7.pdf · VERSION Nota de Versión Segunda edición (noviembre de 1996) Este manual es

3.2.56.1 Ejemplo Supongamos que la variable de lenguaje principal HO LA de tipo CHAR(9) tiene el valor 'Hola '. RTRIM(:HOLA) Da como resultado: 'Hola'.

DB2/400 Manual de Consulta SQL V3R7 Ejemplo

© Copyright IBM Corp. 1995, 1996 3.2.56.1 - 1

Page 324: DB2/400 Manual de Consulta SQLmarce.com/docs/systems/manuales/db2_400_manual_consulta_sql_v3r7.pdf · VERSION Nota de Versión Segunda edición (noviembre de 1996) Este manual es

3.2.57 SECOND +-------------------------------------------------- ----------------------+ ¦ ¦ ¦ >-- SECOND--(-- expresión --)-------------------------------------------> ¦ ¦ ¦ +-------------------------------------------------- ----------------------+ La función SECOND devuelve la parte de un valor cor respondiente a los segundos. El argumento debe ser una hora, una indicación de l a hora, una duración de hora o una duración de indicación de la hora. El resultado de la función es un entero grande. Si el argumento puede ser nulo, el resultado también; si el argumento es nulo , el resultado es el valor nulo. El resto de las reglas dependen del tipo de datos d el argumento: � Si el argumento es una hora o una indicación de la hora: El resultado es la parte del valor correspondie nte a los segundos, que es un entero comprendido entre 0 y 59. � Si el argumento es una duración de hora o de ind icación de la hora: El resultado es la parte del valor correspondie nte a los segundos, que es un entero comprendido entre -99 y 99. Un re sultado no cero tiene el mismo signo que el argumento. Subtemas 3.2.57.1 Ejemplos

DB2/400 Manual de Consulta SQL V3R7 SECOND

© Copyright IBM Corp. 1995, 1996 3.2.57 - 1

Page 325: DB2/400 Manual de Consulta SQLmarce.com/docs/systems/manuales/db2_400_manual_consulta_sql_v3r7.pdf · VERSION Nota de Versión Segunda edición (noviembre de 1996) Este manual es

3.2.57.1 Ejemplos � Supongamos que la variable de lenguaje principal DUR_TEMP (decimal(6,0)) tiene el valor 153045. SECOND(:DUR_TEMP) Devuelve el valor 45. � Supongamos que la columna RECIBIDO (timestamp) t iene un valor interno equivalente a 1988-12-25-17.12.30.000000. SECOND(RECIBIDO) Devuelve el valor 30.

DB2/400 Manual de Consulta SQL V3R7 Ejemplos

© Copyright IBM Corp. 1995, 1996 3.2.57.1 - 1

Page 326: DB2/400 Manual de Consulta SQLmarce.com/docs/systems/manuales/db2_400_manual_consulta_sql_v3r7.pdf · VERSION Nota de Versión Segunda edición (noviembre de 1996) Este manual es

3.2.58 SIN +-------------------------------------------------- ----------------------+ ¦ ¦ ¦ >-- SIN --(---- expresión ----)------------------------------------------> ¦ ¦ ¦ +-------------------------------------------------- ----------------------+ La función SIN devuelve el seno de un número. Las funciones SIN y ASIN son operaciones inversas. El argumento debe ser un número cuyo valor esté esp ecificado en radianes. El tipo de datos del resultado es de coma flotante de precisión doble. Si el argumento puede ser nulo, el resultado también; si el argumento es nulo, el resultado es el valor nulo. Subtemas 3.2.58.1 Ejemplo

DB2/400 Manual de Consulta SQL V3R7 SIN

© Copyright IBM Corp. 1995, 1996 3.2.58 - 1

Page 327: DB2/400 Manual de Consulta SQLmarce.com/docs/systems/manuales/db2_400_manual_consulta_sql_v3r7.pdf · VERSION Nota de Versión Segunda edición (noviembre de 1996) Este manual es

3.2.58.1 Ejemplo Supongamos que la variable del lenguaje principal S ENO es una variable del lenguaje principal decimal (2,1) con un valor de 1, 5. SIN (:SENO) Devuelve el valor aproximado 0,99.

DB2/400 Manual de Consulta SQL V3R7 Ejemplo

© Copyright IBM Corp. 1995, 1996 3.2.58.1 - 1

Page 328: DB2/400 Manual de Consulta SQLmarce.com/docs/systems/manuales/db2_400_manual_consulta_sql_v3r7.pdf · VERSION Nota de Versión Segunda edición (noviembre de 1996) Este manual es

3.2.59 SINH +-------------------------------------------------- ----------------------+ ¦ ¦ ¦ >-- SINH--(---- expresión ----)-----------------------------------------> ¦ ¦ ¦ +-------------------------------------------------- ----------------------+ La función SINH devuelve el seno hiperbólico de un número. El argumento debe ser un número cuyo valor esté esp ecificado en radianes. El tipo de datos del resultado es de coma flotante de precisión doble. Si el argumento puede ser nulo, el resultado también; si el argumento es nulo, el resultado es el valor nulo. Subtemas 3.2.59.1 Ejemplo

DB2/400 Manual de Consulta SQL V3R7 SINH

© Copyright IBM Corp. 1995, 1996 3.2.59 - 1

Page 329: DB2/400 Manual de Consulta SQLmarce.com/docs/systems/manuales/db2_400_manual_consulta_sql_v3r7.pdf · VERSION Nota de Versión Segunda edición (noviembre de 1996) Este manual es

3.2.59.1 Ejemplo Supongamos que la variable del lenguaje principal S ENOH es una variable del lenguaje principal decimal (2,1) con un valor d e 1,5. SINH(:SENOH) Devuelve el valor aproximado 2,12.

DB2/400 Manual de Consulta SQL V3R7 Ejemplo

© Copyright IBM Corp. 1995, 1996 3.2.59.1 - 1

Page 330: DB2/400 Manual de Consulta SQLmarce.com/docs/systems/manuales/db2_400_manual_consulta_sql_v3r7.pdf · VERSION Nota de Versión Segunda edición (noviembre de 1996) Este manual es

3.2.60 SQRT +-------------------------------------------------- ----------------------+ ¦ ¦ ¦ >-- SQRT--(---- expresión ----)-----------------------------------------> ¦ ¦ ¦ +-------------------------------------------------- ----------------------+ La función SQRT devuelve la raíz cuadrada de un núm ero. El argumento debe ser un número cuyo valor sea numé rico y positivo. El tipo de datos del resultado es de coma flotante de precisión doble. Si el argumento puede ser nulo, el resultado también; si el argumento es nulo, el resultado es el valor nulo. Subtemas 3.2.60.1 Ejemplo

DB2/400 Manual de Consulta SQL V3R7 SQRT

© Copyright IBM Corp. 1995, 1996 3.2.60 - 1

Page 331: DB2/400 Manual de Consulta SQLmarce.com/docs/systems/manuales/db2_400_manual_consulta_sql_v3r7.pdf · VERSION Nota de Versión Segunda edición (noviembre de 1996) Este manual es

3.2.60.1 Ejemplo Supongamos que la variable del lenguaje principal R AIZCUAD es una variable del lenguaje principal decimal (2,1) con un valor d e 9,0. SQRT(:RAIZCUAD) Devuelve el valor aproximado 3,00.

DB2/400 Manual de Consulta SQL V3R7 Ejemplo

© Copyright IBM Corp. 1995, 1996 3.2.60.1 - 1

Page 332: DB2/400 Manual de Consulta SQLmarce.com/docs/systems/manuales/db2_400_manual_consulta_sql_v3r7.pdf · VERSION Nota de Versión Segunda edición (noviembre de 1996) Este manual es

3.2.61 STRIP +-------------------------------------------------- ----------------------+ ¦ ¦ ¦ >-- STRIP--(-- expresión -----------------------------------------------> ¦ ¦ ¦ ¦ >------------------------------------------------ )-------------------> ¦ ¦ +--- ,BOTH----------------------------------+ ¦ ¦ +- ,B --------¦ +- ,carácter-eliminación -+ ¦ ¦ +- ,LEADING --¦ ¦ ¦ +- ,L --------¦ ¦ ¦ +- ,TRAILING -¦ ¦ ¦ +- ,T --------+ ¦ ¦ ¦ +-------------------------------------------------- ----------------------+ La función STRIP elimina los blancos u otros caract eres especificados del final o del principio de cualquier expresión de tip o serie. El primer argumento debe ser una expresión de tipo serie. El segundo argumento, si se especifica, indica si l os caracteres se eliminan del principio o del final de la serie. Si no se especifica el segundo argumento, se eliminarán todos los blancos del principio y del final de la serie. El tercer argumento, si se especifica, es una const ante de un solo carácter que indica si se debe eliminar o no el car ácter SBCS o DBCS. Si el primer argumento es una serie gráfica DBCS o una serie de sólo DBCS, el tercer argumento debe ser una constante gráfica que conste de un solo carácter DBCS. Si el primer argumento es una serie gráfica UCS-2, el tercer argumento no puede especificarse. Si el ter cer argumento no se especifica: � Si el primer argumento es una serie gráfica DBCS , el carácter de eliminación por omisión es un blanco DBCS. � Si el primer argumento es una serie gráfica UCS- 2, el carácter de eliminación por omisión es un blanco UCS-2. � De lo contrario, el carácter de eliminación por omisión es un blanco SBCS. El resultado de la función es una serie de longitud variable con la misma longitud máxima que el atributo de longitud de la s erie. La longitud real del resultado es la longitud de la expresión menos el número de bytes eliminados. Si todos los caracteres se eliminan, el resultado es una serie de longitud variable vacía. El CCSID del resultado es el mismo que el de la ser ie. Si el primer argumento puede ser nulo, el resultado también; si el primer argumento es nulo, el resultado es el valor nulo. Subtemas 3.2.61.1 Ejemplos

DB2/400 Manual de Consulta SQL V3R7 STRIP

© Copyright IBM Corp. 1995, 1996 3.2.61 - 1

Page 333: DB2/400 Manual de Consulta SQLmarce.com/docs/systems/manuales/db2_400_manual_consulta_sql_v3r7.pdf · VERSION Nota de Versión Segunda edición (noviembre de 1996) Este manual es

3.2.61.1 Ejemplos � Supongamos que la variable de lenguaje principal HOLA de tipo CHAR(9) tiene el valor ' Hola'. STRIP( :HOLA) Da como resultado: 'Hola'. STRIP(:HOLA, TRAILING ) Da como resultado: ' Hola'. � Supongamos que la variable del lenguaje principa l SALDO de tipo CHAR(9) tiene un valor de '000345.50'. STRIP( :SALDO,L,'0' ) Da como resultado: '345.50' � Supongamos que la serie a recortar contiene dato s mixtos. STRIP( IMAGEN 11 ,BOTH, IMAGEN 12 ) Da como resultado: IMAGEN 13

DB2/400 Manual de Consulta SQL V3R7 Ejemplos

© Copyright IBM Corp. 1995, 1996 3.2.61.1 - 1

Page 334: DB2/400 Manual de Consulta SQLmarce.com/docs/systems/manuales/db2_400_manual_consulta_sql_v3r7.pdf · VERSION Nota de Versión Segunda edición (noviembre de 1996) Este manual es

3.2.62 SUBSTRING o SUBSTR +-------------------------------------------------- ----------------------+ ¦ ¦ ¦ >------ SUBSTR-------(-- serie, -- inicio -----------------)--------------> ¦ ¦ ¦ +- SUBSTRING-+ +- ,longitud -+ ¦ ¦ ¦ +- SUBSTRING--(-- serie -- FROM-- inicio ----------------------)-+ ¦ ¦ +- FOR-- longitud -+ ¦ ¦ ¦ +-------------------------------------------------- ----------------------+ Las funciones SUBSTR y SUBSTRING se utilizan para o btener una subserie de una serie. Si serie es una serie de caracteres, el resultado es una se rie de caracteres. Si serie es una serie gráfica, el resultado es una serie gráfica. Si serie es una serie de caracteres, un carácter es un byte . Si serie es una serie gráfica, un carácter es un carácter D BCS o UCS-2. Si alguno de los argumentos de la función SUBSTR puede ser nulo, el resultado puede ser nulo; si algún argumento es nulo, el resu ltado es el valor nulo. El CCSID del resultado es el mismo que el de la ser ie. serie Denota una expresión que especifica la serie de la cual se deriva el resultado. Serie debe ser una serie de caracteres o una serie gráfica. Una subserie de la serie es cero o más bytes contiguos de la serie . La función SUBSTR acepta datos mixtos. Sin emb argo, y puesto que SUBSTR funciona basándose en un recuento estric to de los bytes, el resultado no es necesariamente una serie de car acteres de datos mixtos formada como es debido. Si se especifica la fu nción SUBSTRING, serie no puede ser una serie de caracteres mixta. inicio Denota una expresión que especifica la posición del primer carácter (o byte) del resultado. Debe ser un entero binari o positivo no mayor que el atributo de longitud de serie (el atributo de longitud de una serie de longitud variable es su longitud máxima). longitud Denota una expresión que especifica la longitud del resultado. Si se especifica, longitud debe ser un entero binario comprendido entre 0 y n, donde n es la longitud del atributo de serie - inicio + 1. No obstante, no debe ser la constante de entero 0. Si serie es una serie de longitud variable y longitud se especifica explícitamente, serie se rellena de forma efectiva por la derecha con el número de caracteres blancos que sea necesar io para que la subserie especificada de serie exista siempre. Si serie es una serie de longitud fija, la omisión de longitud es una especificación implícita de LENGTH( serie ) - inicio + 1, que es el número de caracteres (o bytes) desde el carácte r (o byte) de inicio hasta el último carácter (o byte) de serie . Si serie es una serie de longitud variable, la omisión de longitud constituye la especificación implícita de cero o LENGTH( serie ) - inicio + 1, el que sea mayor de los dos. Si la longitud del resultado es cero, el resultado es la serie vacía. Si longitud se especifica explícitamente mediante una constant e de entero, el resultado es una serie de longitud f ija. Si longitud no se especifica explícitamente, pero serie es una serie de longitud fija e inicio es una constante de entero, el resultado es una se rie de longitud fija con un atributo de longitud de LE NGTH(serie ) - inicio + 1. En el resto de los casos, el resultado es u na serie de longitud variable con un atributo de longitud igual al a tributo de longitud de la serie (recuerde que si la longitud real de serie es menor que el valor de inicio , la longitud real de la subserie es cero). Subtemas 3.2.62.1 Ejemplos

DB2/400 Manual de Consulta SQL V3R7 SUBSTRING o SUBSTR

© Copyright IBM Corp. 1995, 1996 3.2.62 - 1

Page 335: DB2/400 Manual de Consulta SQLmarce.com/docs/systems/manuales/db2_400_manual_consulta_sql_v3r7.pdf · VERSION Nota de Versión Segunda edición (noviembre de 1996) Este manual es

3.2.62.1 Ejemplos � Supongamos que la variable de lenguaje principal NOMBRE (varchar(50)) tiene un valor de 'MAITE AYALA' y que la variab le de lenguaje principal POS_APELL (int) tiene un valor de 6. SUBSTR(:NOMBRE, :POS_APELL) Devuelve el valor 'AYALA' SUBSTR(:NOMBRE, :POS_APELL, 1 ) Devuelve el valor 'A'. � Seleccionar todas aquellas filas de la tabla PRO YECTO para las que el nombre de proyecto (NOMBREPR) empiece por la pa labra 'OPERACION '. SELECT * FROM PROYECTO WHERE SUBSTR(NOMBREPR,1,10) = 'OPERACION ' El espacio al final de la constante es necesari o para excluir las palabras iniciales del tipo 'OPERACIONES'.

DB2/400 Manual de Consulta SQL V3R7 Ejemplos

© Copyright IBM Corp. 1995, 1996 3.2.62.1 - 1

Page 336: DB2/400 Manual de Consulta SQLmarce.com/docs/systems/manuales/db2_400_manual_consulta_sql_v3r7.pdf · VERSION Nota de Versión Segunda edición (noviembre de 1996) Este manual es

3.2.63 TAN +-------------------------------------------------- ----------------------+ ¦ ¦ ¦ >-- TAN--(---- expresión ----)------------------------------------------> ¦ ¦ ¦ +-------------------------------------------------- ----------------------+ La función TAN devuelve la tangente de un número. Las funciones TAN y ATAN son operaciones inversas. El argumento debe ser un número cuyo valor esté esp ecificado en radianes. El tipo de datos del resultado es de coma flotante de precisión doble. Si el argumento puede ser nulo, el resultado también; si el argumento es nulo, el resultado es el valor nulo. Subtemas 3.2.63.1 Ejemplo

DB2/400 Manual de Consulta SQL V3R7 TAN

© Copyright IBM Corp. 1995, 1996 3.2.63 - 1

Page 337: DB2/400 Manual de Consulta SQLmarce.com/docs/systems/manuales/db2_400_manual_consulta_sql_v3r7.pdf · VERSION Nota de Versión Segunda edición (noviembre de 1996) Este manual es

3.2.63.1 Ejemplo Supongamos que la variable del lenguaje principal T ANGENTE es una variable del lenguaje principal decimal (2,1) con un valor d e 1,5. TAN(:TANGENTE) Devuelve el valor aproximado 14,10.

DB2/400 Manual de Consulta SQL V3R7 Ejemplo

© Copyright IBM Corp. 1995, 1996 3.2.63.1 - 1

Page 338: DB2/400 Manual de Consulta SQLmarce.com/docs/systems/manuales/db2_400_manual_consulta_sql_v3r7.pdf · VERSION Nota de Versión Segunda edición (noviembre de 1996) Este manual es

3.2.64 TANH +-------------------------------------------------- ----------------------+ ¦ ¦ ¦ >-- TANH--(---- expresión ----)-----------------------------------------> ¦ ¦ ¦ +-------------------------------------------------- ----------------------+ La función TANH devuelve la tangente hiperbólica de un número. Las funciones TANH y ATANH son operaciones inversas. El argumento debe ser un número cuyo valor esté esp ecificado en radianes. El tipo de datos del resultado es de coma flotante de precisión doble. Si el argumento puede ser nulo, el resultado también; si el argumento es nulo, el resultado es el valor nulo. Subtemas 3.2.64.1 Ejemplo

DB2/400 Manual de Consulta SQL V3R7 TANH

© Copyright IBM Corp. 1995, 1996 3.2.64 - 1

Page 339: DB2/400 Manual de Consulta SQLmarce.com/docs/systems/manuales/db2_400_manual_consulta_sql_v3r7.pdf · VERSION Nota de Versión Segunda edición (noviembre de 1996) Este manual es

3.2.64.1 Ejemplo Supongamos que la variable del lenguaje principal T ANGENTEH es una variable del lenguaje principal decimal (2,1) con u n valor de 1,5. TANH(:TANGENTEH) Devuelve el valor aproximado 0,90.

DB2/400 Manual de Consulta SQL V3R7 Ejemplo

© Copyright IBM Corp. 1995, 1996 3.2.64.1 - 1

Page 340: DB2/400 Manual de Consulta SQLmarce.com/docs/systems/manuales/db2_400_manual_consulta_sql_v3r7.pdf · VERSION Nota de Versión Segunda edición (noviembre de 1996) Este manual es

3.2.65 TIME +-------------------------------------------------- ----------------------+ ¦ ¦ ¦ >-- TIME--(-- expresión --)---------------------------------------------> ¦ ¦ ¦ +-------------------------------------------------- ----------------------+ La función TIME devuelve una hora a partir de un va lor. El argumento debe ser una indicación de la hora, un a hora o una representación de serie válida de una hora. El resultado de la función es una hora. Si el argu mento puede ser nulo, el resultado también; si el argumento es nulo, el r esultado es el valor nulo. El resto de las reglas dependen del tipo de datos d el argumento: � Si el argumento es una indicación de la hora: El resultado es la parte de la indicación de la hora correspondiente a la hora. � Si el argumento es una hora: El resultado es esa hora. � Si el argumento es una serie de caracteres: Cuando una representación de serie de una hora es de datos SBCS con un CCSID que es distinto del CCSID por omisión cor respondiente a los datos SBCS, se convierte dicho valor para adher irse al CCSID por omisión de los datos SBCS antes de interpretarl o y convertirlo a un valor de hora. Cuando una representación de serie de una hora es de datos mixtos con un CCSID que es distinto del CCSID por omisión correspondiente a los datos mixtos, se convierte dicho valor para adh erirse al CCSID por omisión de los datos mixtos antes de interpreta rlo y convertirlo a un valor de hora. Subtemas 3.2.65.1 Ejemplo

DB2/400 Manual de Consulta SQL V3R7 TIME

© Copyright IBM Corp. 1995, 1996 3.2.65 - 1

Page 341: DB2/400 Manual de Consulta SQLmarce.com/docs/systems/manuales/db2_400_manual_consulta_sql_v3r7.pdf · VERSION Nota de Versión Segunda edición (noviembre de 1996) Este manual es

3.2.65.1 Ejemplo Seleccionar todas las notas de la tabla de ejemplo BAND_EN recibidas en el mismo día (cualquier día) al menos una hora después de la la hora actual. SELECT * FROM BAND_EN WHERE TIME(RECIBIDO) >= CURRENT TIME + 1 HOUR

DB2/400 Manual de Consulta SQL V3R7 Ejemplo

© Copyright IBM Corp. 1995, 1996 3.2.65.1 - 1

Page 342: DB2/400 Manual de Consulta SQLmarce.com/docs/systems/manuales/db2_400_manual_consulta_sql_v3r7.pdf · VERSION Nota de Versión Segunda edición (noviembre de 1996) Este manual es

3.2.66 TIMESTAMP +-------------------------------------------------- ----------------------+ ¦ ¦ ¦ >-- TIMESTAMP--(-- expresión ------------------)------------------------> ¦ ¦ +- ,expresión -+ ¦ ¦ ¦ +-------------------------------------------------- ----------------------+ La función TIMESTAMP devuelve una indicación de la hora a partir de un valor o de un par de valores. Las reglas para los argumentos dependen de si se es pecifica o no el segundo argumento. � Si sólo se especifica un argumento: Este debe ser una indicación de la hora, una re presentación de serie válida de una indicación de la hora o una serie de caracteres de longitud 14. La serie de caracteres de longitud 14 debe ser una serie de dígitos que represente una fecha y hora válidas en el f ormato aaaaxxddhhmmss, donde aaaa es el año, xx es el mes, dd es el dí a, hh la hora, mm los minutos y ss los segundos. � Si se especifican ambos argumentos: El primer argumento debe ser una fecha o una re presentación de serie válida de una fecha; el segundo argumento debe ser una hora o la representación de serie válida de una hora. El resultado de la función es una indicación de la hora. Si uno de los dos argumentos puede ser nulo, el resultado también ; si uno de los dos argumentos es nulo el resultado es el valor nulo. El resto de las reglas dependen de si se especifica o no el segundo argumento: � Si se especifican ambos argumentos: El resultado es una indicación de la hora con l a fecha especificada por el primer argumento y la hora por el segund o. La parte de la indicación de la hora correspondiente a los mic rosegundos es cero. � Si sólo se especifica un argumento y es una indi cación de la hora: El resultado es esa indicación de la hora. � Si sólo se especifica un argumento y es una seri e de caracteres: El resultado es la indicación de la hora repres entada por la serie de caracteres. Si el argumento es una serie de ca racteres de longitud 14, la indicación de la hora tiene la parte de los microsegundos igual a cero. Cuando una representación de serie de una indicació n de la hora es de datos SBCS con un CCSID que es distinto del CCSID p or omisión correspondiente a los datos SBCS, se convierte dich o valor para adherirse al CCSID por omisión de los datos SBCS antes de int erpretarlo y convertirlo a un valor de indicación de la hora. Cuando una representación de serie de una indicació n de la hora es de datos mixtos con un CCSID que es distinto del CCSID por omisión correspondiente a los datos mixtos, se convierte di cho valor para adherirse al CCSID por omisión de los datos mixtos antes de interpretarlo y convertirlo a un valor de indicación de la hora. Subtemas 3.2.66.1 Ejemplo

DB2/400 Manual de Consulta SQL V3R7 TIMESTAMP

© Copyright IBM Corp. 1995, 1996 3.2.66 - 1

Page 343: DB2/400 Manual de Consulta SQLmarce.com/docs/systems/manuales/db2_400_manual_consulta_sql_v3r7.pdf · VERSION Nota de Versión Segunda edición (noviembre de 1996) Este manual es

3.2.66.1 Ejemplo � Supongamos que la columna FECHA_INICIO (date) ti ene un valor equivalente a 1988-12-25 y que la columna HORA_ INICIO (time) tiene un valor equivalente a 17.12.30. TIMESTAMP(FECHA_INICIO, HORA_INICIO ) Devuelve el valor '1988-12-25-17.12.30.000000'.

DB2/400 Manual de Consulta SQL V3R7 Ejemplo

© Copyright IBM Corp. 1995, 1996 3.2.66.1 - 1

Page 344: DB2/400 Manual de Consulta SQLmarce.com/docs/systems/manuales/db2_400_manual_consulta_sql_v3r7.pdf · VERSION Nota de Versión Segunda edición (noviembre de 1996) Este manual es

3.2.67 TRANSLATE +-------------------------------------------------- --------------------------------------------------- ----------------------+ ¦ ¦ ¦ >>-- TRANSLATE--(-- expresión --------------------------------------------------- ---)------------------------------------->< ¦ ¦ +- ,a-serie ---------------------------------------+ ¦ ¦ +- ,de-serie ------------------------+ ¦ ¦ +- ,carácter-relleno -+ ¦ ¦ ¦ +-------------------------------------------------- --------------------------------------------------- ----------------------+ La función TRANSLATE convierte uno o más caracteres del primer argumento. El primer argumento debe ser una serie de caractere s. No puede ser una serie gráfica. El tipo de datos y el atributo de l ongitud del resultado son los mismos que los del primer argumento. El segundo argumento es una constante de serie de c aracteres que no tiene más de 256 caracteres. Observe que en algunas ocasi ones a esto se le llama la tabla de conversión de salida . Si el atributo de longitud de a-serie es menor que el atributo de longitud de de-serie , a-serie se rellena hasta la longitud más larga utilizando el carácter-relleno o un blanco. Si el atributo de longitud de a-serie es mayor que el atributo de longitud de de-serie , los caracteres que sobran en a-serie se ignoran sin ningún aviso. El tercer argumento es una constante de serie de ca racteres que no tiene más de 256 caracteres. Observe que en algunas ocasi ones a esto se le llama la tabla de conversión de entrada . Si existen caracteres duplicados en de-serie , se utiliza el primero que se encuentra por la izq uierda mediante lectura con escáner, y no se emite ningún aviso. El valor por omisión para de-serie es una serie que empieza con el carácter X'00' y t ermina con el carácter X'FF' (decimal 255). El cuarto argumento es una constante de tipo caráct er de longitud 1 que se utiliza para rellenar a-serie si es más corto que de-serie . El valor por omisión para el carácter-relleno es un espacio SBCS. Si sólo se especifica el primer argumento, los cara cteres SBCS del argumento se convierten a mayúsculas, basándose en el CCSID del argumento. Consulte el manual National Language Support Reference Volume 2 , SE09-8002, si desea una descripción de las tablas d e mayúsculas/minúsculas que se utilizan para realizar esta conversión. De lo contrario, la serie del resultado se construy e carácter por carácter a partir de expresión , convirtiendo los caracteres de de-serie en los caracteres correspondientes de a-serie . Para cada uno de los caracteres de expresión , se busca el mismo carácter en de-serie . Si resulta que el carácter es el enésimo carácter de de-serie , la serie del resultado contendrá el enésimo carácter de a-serie . Si a-serie es menor que n caracteres de longitud, la serie del resultado cont endrá el carácter de relleno. Si no se encuentra el carácter en de-serie , se traslada a la serie del resultado sin convertir. Las series de datos mixtos no se tratan de ninguna manera especial. La conversión se lleva a cabo basándose en los bytes y , si se utiliza de forma inadecuada, puede dar como resultado una seri e mixta no válida. Si el primer argumento puede ser nulo, el resultado también; si el primer argumento es nulo, el resultado es el valor nulo. Subtemas 3.2.67.1 Ejemplos

DB2/400 Manual de Consulta SQL V3R7 TRANSLATE

© Copyright IBM Corp. 1995, 1996 3.2.67 - 1

Page 345: DB2/400 Manual de Consulta SQLmarce.com/docs/systems/manuales/db2_400_manual_consulta_sql_v3r7.pdf · VERSION Nota de Versión Segunda edición (noviembre de 1996) Este manual es

3.2.67.1 Ejemplos � Poner en mayúsculas o minúsculas la serie 'abcde f'. TRANSLATE('abcdef') Devuelve el valor 'ABCDEF'. � Poner en mayúsculas o minúsculas la serie de car acteres mixtos. TRANSLATE( IMAGEN 14 ) Devuelve el valor IMAGEN 15 � Suponiendo que la variable del lenguaje principa l LOCAL sea una serie de caracteres de longitud variable con un valor de 'Pivabiska Lake Place'. TRANSLATE(:LOCAL, '$', 'L') Devuelve el valor 'Pivabiska $ake Place'. TRANSLATE(:LOCAL, '$$', 'Ll') Devuelve el valor 'Pivabiska $ake P$ace'. TRANSLATE(:LOCAL, 'pLA', 'Place', '.') Devuelve el valor 'pivAbiskA LAk. pLA..'.

DB2/400 Manual de Consulta SQL V3R7 Ejemplos

© Copyright IBM Corp. 1995, 1996 3.2.67.1 - 1

Page 346: DB2/400 Manual de Consulta SQLmarce.com/docs/systems/manuales/db2_400_manual_consulta_sql_v3r7.pdf · VERSION Nota de Versión Segunda edición (noviembre de 1996) Este manual es

3.2.68 TRIM +-------------------------------------------------- ----------------------+ ¦ ¦ ¦ +- BOTH-----+ (1) ¦ ¦ >-- TRIM--(--+----------+---------------------------- FROM-------------> ¦ ¦ +- B--------¦ +- carácter-eliminación -+ ¦ ¦ +- LEADING--¦ ¦ ¦ +- L--------¦ ¦ ¦ +- TRAILING -¦ ¦ ¦ +- T--------+ ¦ ¦ ¦ ¦ >-- expresión --)------------------------------------------------ ------> ¦ ¦ ¦ ¦ Nota: ¦ ¦ (1) La palabra clave FROM es opcional si sólo se especifica una ¦ ¦ expresión. ¦ ¦ ¦ +-------------------------------------------------- ----------------------+ La función TRIM es idéntica a la función escalar ST RIP. Para obtener más información, consulte el apartado "STRIP" en el tema 3.2.61 .

DB2/400 Manual de Consulta SQL V3R7 TRIM

© Copyright IBM Corp. 1995, 1996 3.2.68 - 1

Page 347: DB2/400 Manual de Consulta SQLmarce.com/docs/systems/manuales/db2_400_manual_consulta_sql_v3r7.pdf · VERSION Nota de Versión Segunda edición (noviembre de 1996) Este manual es

3.2.69 UCASE o UPPER +-------------------------------------------------- ----------------------+ ¦ ¦ ¦ >---- UCASE----(-- expresión --)----------------------------------------> ¦ ¦ +- UPPER-+ ¦ ¦ ¦ +-------------------------------------------------- ----------------------+ Las funciones UCASE y UPPER son idénticas a la func ión escalar TRANSLATE, únicamente con el primer argumento especificado. P ara obtener más información, consulte el apartado "TRANSLATE" en el tema 3.2.67 . Subtemas 3.2.69.1 Ejemplos

DB2/400 Manual de Consulta SQL V3R7 UCASE o UPPER

© Copyright IBM Corp. 1995, 1996 3.2.69 - 1

Page 348: DB2/400 Manual de Consulta SQLmarce.com/docs/systems/manuales/db2_400_manual_consulta_sql_v3r7.pdf · VERSION Nota de Versión Segunda edición (noviembre de 1996) Este manual es

3.2.69.1 Ejemplos � Poner en mayúsculas la serie 'abcdef' utilizando la función escalar UCASE. UCASE('abcdef') Devuelve el valor 'ABCDEF'. � Poner en mayúsculas la serie de caracteres mixta utilizando la función escalar UPPER. UPPER IMAGEN 16 Devuelve el valor IMAGEN 17

DB2/400 Manual de Consulta SQL V3R7 Ejemplos

© Copyright IBM Corp. 1995, 1996 3.2.69.1 - 1

Page 349: DB2/400 Manual de Consulta SQLmarce.com/docs/systems/manuales/db2_400_manual_consulta_sql_v3r7.pdf · VERSION Nota de Versión Segunda edición (noviembre de 1996) Este manual es

3.2.70 VALUE +-------------------------------------------------- ----------------------+ ¦ ¦ ¦ <------------+ ¦ ¦ >-- VALUE--(-- expresión ---- ,expresión ----)----------------------------> ¦ ¦ ¦ +-------------------------------------------------- ----------------------+ La función VALUE es idéntica a la función escalar C OALESCE. Para obtener más información, véase el apartado "COALESCE" en el tema 3.2.10 .

DB2/400 Manual de Consulta SQL V3R7 VALUE

© Copyright IBM Corp. 1995, 1996 3.2.70 - 1

Page 350: DB2/400 Manual de Consulta SQLmarce.com/docs/systems/manuales/db2_400_manual_consulta_sql_v3r7.pdf · VERSION Nota de Versión Segunda edición (noviembre de 1996) Este manual es

3.2.71 VARCHAR +-------------------------------------------------- ----------------------+ ¦ ¦ ¦ >-- VARCHAR--(-- expresión --------------------------------------)------> ¦ ¦ +-,---- longitud ------------------+ ¦ ¦ +- DEFAULT--+ +-,-- entero -+ ¦ ¦ ¦ +-------------------------------------------------- ----------------------+ La función VARCHAR devuelve una representación de s erie de caracteres de longitud variable de una expresión de serie. El primer argumento debe ser una expresión de tipo serie. No deben ser datos gráficos DBCS. El segundo argumento, si se especifica como una longitud , es el atributo de longitud de la serie de longitud variable de res ultado. Si el primer argumento no permite nulos, el segundo argumento de be ser una constante de entero entre 1 y 32740; si el primer argumento perm ite nulos, el segundo argumento debe ser una constante de entero entre 1 y 32739. Si el primer argumento es de datos mixtos, el segundo argumento no puede ser menor que 4. Si el segundo argumento no se especifica o se espec ifica DEFAULT, el atributo de longitud del resultado se determina de la siguiente forma (donde n es el atributo de longitud del primer argumento): � Si el primer argumento es SBCS o de datos mixtos , la longitud de resultado es n. � Si el primer argumento es de datos gráficos UCS- 2 y el resultado son datos SBCS, la longitud de resultado es n. � Si el primer argumento es de datos gráficos UCS- 2 y el resultado es de datos mixtos, la longitud de resultado es (2.5* ( n-1)) + 4. Si se especifica el tercer argumento, debe ser un C CSID SBCS válido, un CCSID de datos mixtos válido ó 65535 (datos de bit) . El CCSID del resultado es dicho CCSID. Si el tercer argumento e s un CCSID SBCS, el resultado son datos SBCS. Si el tercer argumento e s un CCSID mixto, el resultado son datos mixtos. Si el tercer argumento es 65535, el resultado son datos de bit. Si el tercer argumento es un CCS ID SBCS, el primer argumento no puede ser una serie DBCS cualquiera o una serie de sólo DBCS. Si el primer argumento es una serie gráfica UCS-2, el tercer argumento no puede ser 65535. Si el tercer argumento no se especifica, entonces: � Si el primer argumento es de datos SBCS, el resu ltado son datos SBCS. El CCSID del resultado es igual que el CCSID de l primer argumento. � Si el primer argumento es de datos mixtos (DBCS abierto, sólo DBCS o DBCS cualquiera), el resultado son datos mixtos . El CCSID del resultado es igual que el CCSID del primer argu mento. � Si el primer argumento es de datos gráficos UCS- 2, el CCSID del resultado es el CCSID por omisión del servidor actual. Si el CCSID por omisión es de datos mixtos, el resultado so n datos mixtos. Si el CCSID por omisión es de datos SBCS, el resultad o son datos SBCS. El resultado de la función es una serie de longitud variable. Si el primer argumento puede ser nulo, el resultado tambi én; si el primer argumento es nulo, el resultado es el valor nulo. La longitud real del resultado depende del número d e caracteres del argumento. Si el atributo de longitud de la serie de longitud variable del resultado es menor que la longitud real del arg umento, se efectúa el truncamiento y no se devuelve ningún aviso. Subtemas 3.2.71.1 Ejemplo

DB2/400 Manual de Consulta SQL V3R7 VARCHAR

© Copyright IBM Corp. 1995, 1996 3.2.71 - 1

Page 351: DB2/400 Manual de Consulta SQLmarce.com/docs/systems/manuales/db2_400_manual_consulta_sql_v3r7.pdf · VERSION Nota de Versión Segunda edición (noviembre de 1996) Este manual es

3.2.71.1 Ejemplo Hacer que NUMEMP sea de longitud variable con una l ongitud de 10. SELECT VARCHAR(NUMEMP,10) INTO :VARHV FROM EMPLEADO

DB2/400 Manual de Consulta SQL V3R7 Ejemplo

© Copyright IBM Corp. 1995, 1996 3.2.71.1 - 1

Page 352: DB2/400 Manual de Consulta SQLmarce.com/docs/systems/manuales/db2_400_manual_consulta_sql_v3r7.pdf · VERSION Nota de Versión Segunda edición (noviembre de 1996) Este manual es

3.2.72 VARGRAPHIC +-------------------------------------------------- ----------------------+ ¦ ¦ ¦ >-- VARGRAPHIC--(-- expresión ------------------------------------------> ¦ ¦ +-,---- longitud ------------------+ ¦ ¦ +- DEFAULT--+ +-,-- entero -+ ¦ ¦ ¦ ¦ >--)--------------------------------------------- --------------------> ¦ ¦ ¦ +-------------------------------------------------- ----------------------+ La función VARGRAPHIC devuelve una representación d e serie gráfica de una expresión de serie. El primer argumento debe ser una expresión de serie y no deben ser datos de bit. El segundo argumento, si se especifica como longitud , es el atributo de longitud del resultado, y debe ser una constante de entero entre 1 y 16370 si el primer argumento no permite nulos, o entre 1 y 16369 si permite nulos. Si el segundo argumento no se especifica o se espec ifica DEFAULT, el atributo de longitud del resultado es el mismo que el del primer argumento. En las siguientes reglas, S denota una de las sigui entes condiciones: � Si la expresión de serie es una variable del len guaje principal que contiene datos en un esquema de codificación fo ráneo, S es el resultado de la expresión después de convertir los datos a un CCSID en un esquema de codificación nativo. (Consulte e l apartado "Conversión de caracteres" en el tema 1.21 para obtener más información.) � Si la expresión de serie son datos en un esquema de codificación nativo, S es dicha expresión de serie. Si se especifica el tercer argumento, el CCSID del resultado es el tercer argumento. Debe ser un CCSID DBCS o UCS-2. El CCS ID no puede ser 65535. Si no se especifica el tercer argumento y el primer argumento es de tipo carácter, el CCSID del resultado se determina media nte un CCSID mixto. Supongamos que M denota dicho CCSID mixto. M se de termina de la siguiente forma: � Si el CCSID de S es un CCSID mixto, M es dicho C CSID. � Si el CCSID de S es un CCSID SBCS: - Si el CCSID de S tiene un CCSID mixto asoci ado, M es dicho CCSID. - De lo contrario la operación no está permit ida. La siguiente tabla es un resumen de los CCSID del r esultado basándose en M. +-------------------------------------------------- ----------------------+ ¦ ¦ ¦ ¦ Carácter de ¦ ¦ M ¦ CCSID del ¦ Descripción ¦ sustitución ¦ ¦ ¦ resultado ¦ ¦ DBCS ¦ +-------------+--------------+--------------------- --------+-------------¦ ¦ 930 ¦ 300 ¦ EBCDIC japonés ¦ X'FEFE' ¦ +-------------+--------------+--------------------- --------+-------------¦ ¦ 933 ¦ 834 ¦ EBCDIC coreano ¦ X'FEFE' ¦ +-------------+--------------+--------------------- --------+-------------¦ ¦ 935 ¦ 837 ¦ EBCDIC chino simplif icado ¦ X'FEFE' ¦ +-------------+--------------+--------------------- --------+-------------¦ ¦ 937 ¦ 835 ¦ EBCDIC chino tradici onal ¦ X'FEFE' ¦ +-------------+--------------+--------------------- --------+-------------¦ ¦ 939 ¦ 300 ¦ EBCDIC japonés ¦ X'FEFE' ¦ +-------------+--------------+--------------------- --------+-------------¦ ¦ 5026 ¦ 4396 ¦ EBCDIC japonés ¦ X'FEFE' ¦ +-------------+--------------+--------------------- --------+-------------¦ ¦ 5035 ¦ 4396 ¦ EBCDIC japonés ¦ X'FEFE' ¦ +-------------------------------------------------- ----------------------+ Si el tercer argumento no se especifica y el primer argumento no es de tipo carácter, el CCSID del resultado es el mismo q ue el del primer argumento. El resultado de la función es una serie gráfica de longitud variable. Si la expresión puede ser de nulos, el resultado puede serlo también. Si la expresión es nula, el resultado es el valor nulo. Si la expresión es una serie vacía o la serie EBCDIC X'0E0F' , el resultado es una serie vacía. La longitud real del resultado depende del número d e caracteres del argumento. Cada uno de los caracteres del argument o determina un carácter del resultado. Si el atributo de longitud de la se rie de longitud variable del resultado es menor que la longitud rea l del primer argumento, se efectúa el truncamiento y no se devuelve ningún aviso. Si el resultado es de datos gráficos DBCS, la equiv alencia de caracteres SBCS y DBCS dependerá de M. Independientemente del CCSID, cada uno de los elementos de código de doble byte del argumento se considera como carácter

DB2/400 Manual de Consulta SQL V3R7 VARGRAPHIC

© Copyright IBM Corp. 1995, 1996 3.2.72 - 1

Page 353: DB2/400 Manual de Consulta SQLmarce.com/docs/systems/manuales/db2_400_manual_consulta_sql_v3r7.pdf · VERSION Nota de Versión Segunda edición (noviembre de 1996) Este manual es

DBCS, y cada uno de los elementos de código de un s olo byte del argumento se considera como carácter SBCS a excepción de los códigos de desplazamiento de datos mixtos EBCDIC X'0E' y X'0F' . � Si el enésimo carácter del argumento es un carác ter DBCS, el enésimo carácter del resultado es dicho carácter DBCS. � Si el enésimo carácter del argumento es un carác ter SBCS que tiene un carácter DBCS equivalente, el enésimo carácter del resultado es dicho carácter DBCS equivalente. � Si el enésimo carácter del argumento es un carác ter SBCS que no tiene un carácter DBCS equivalente, el enésimo caráct er del resultado es el carácter de sustitución DBCS. Si el resultado es de datos gráficos UCS-2, cada un o de los caracteres del argumento determinará un carácter del resultado. El enésimo carácter del resultado es el equivalente UCS-2 del enésimo carác ter del argumento. Subtemas 3.2.72.1 Ejemplo

DB2/400 Manual de Consulta SQL V3R7 VARGRAPHIC

© Copyright IBM Corp. 1995, 1996 3.2.72 - 2

Page 354: DB2/400 Manual de Consulta SQLmarce.com/docs/systems/manuales/db2_400_manual_consulta_sql_v3r7.pdf · VERSION Nota de Versión Segunda edición (noviembre de 1996) Este manual es

3.2.72.1 Ejemplo Utilizando la tabla EMPLEADO, establecer la variabl e del lenguaje principal VAR_DESC (vargraphic(24)) en la VARGRAPHI C equivalente del nombre (NOMB) para el número de empleado (NUMEMP) ' 000050'. SELECT VARGRAPHIC(NOMB) INTO :VAR_DESC FROM EMPLEADO WHERE NUMEMP = '000050'

DB2/400 Manual de Consulta SQL V3R7 Ejemplo

© Copyright IBM Corp. 1995, 1996 3.2.72.1 - 1

Page 355: DB2/400 Manual de Consulta SQLmarce.com/docs/systems/manuales/db2_400_manual_consulta_sql_v3r7.pdf · VERSION Nota de Versión Segunda edición (noviembre de 1996) Este manual es

3.2.73 WEEK +-------------------------------------------------- ----------------------+ ¦ ¦ ¦ >-- WEEK--(-- expresión --)---------------------------------------------> ¦ ¦ ¦ +-------------------------------------------------- ----------------------+ La función WEEK devuelve una entero del 1 al 53 que representa la semana del año. La semana empieza el domingo. El argumento debe ser una fecha o indicación de la hora. El resultado de la función es un entero grande. Si el argumento puede ser nulo, el resultado también; si el argumento es nulo , el resultado es el valor nulo. Subtemas 3.2.73.1 Ejemplo

DB2/400 Manual de Consulta SQL V3R7 WEEK

© Copyright IBM Corp. 1995, 1996 3.2.73 - 1

Page 356: DB2/400 Manual de Consulta SQLmarce.com/docs/systems/manuales/db2_400_manual_consulta_sql_v3r7.pdf · VERSION Nota de Versión Segunda edición (noviembre de 1996) Este manual es

3.2.73.1 Ejemplo Utilizando la tabla PROYECTO, establecer la variabl e del lenguaje principal WEEK (int) en la semana en que finalizó e l proyecto ('PL2100'). SELECT WEEK(FCHFINPR) INTO :WEEK FROM PROYECTO WHERE NUMPROY = 'PL2100' Da como resultado que WEEK quede establecido en 38 cuando se utiliza la tabla de ejemplo.

DB2/400 Manual de Consulta SQL V3R7 Ejemplo

© Copyright IBM Corp. 1995, 1996 3.2.73.1 - 1

Page 357: DB2/400 Manual de Consulta SQLmarce.com/docs/systems/manuales/db2_400_manual_consulta_sql_v3r7.pdf · VERSION Nota de Versión Segunda edición (noviembre de 1996) Este manual es

3.2.74 XOR +-------------------------------------------------- ----------------------+ ¦ ¦ ¦ <-,---------+ ¦ ¦ >-- XOR--(-- expresión, ---- expresión ----)------------------------------> ¦ ¦ ¦ +-------------------------------------------------- ----------------------+ La función XOR devuelve una serie que es el XOR lóg ico de las series de argumento. Esta función toma la primera serie de a rgumento, realiza una comparación XOR con la siguiente serie y sigue desp ués haciendo comparaciones XOR para cada argumento sucesivo util izando el resultado anterior. Si encuentra un argumento que es más cor to que el resultado anterior, lo rellena con blancos. Los argumentos deben ser series de caracteres. Los argumentos no pueden ser series gráficas ni series de caracteres de dato s mixtos. Debe haber dos o más argumentos. Los argumentos que no sean e l primero pueden ser marcadores de parámetros. Los argumentos se convierten, si es necesario, a lo s atributos del resultado. Los atributos del resultado se determin an del siguiente modo: � Si todos los argumentos son series de longitud f ija, el resultado es una serie de longitud fija de longitud n, donde n es la longitud del argumento más largo. � Si algún argumento es una serie de longitud vari able, el resultado es una serie de longitud variable con un atributo de longitud n, donde n es el atributo de longitud del argumento con el mayor atributo de longitud. La longitud real del resultado es m, donde m es la longitud real del argumento más largo. � El CCSID del resultado es 65535. Si un argumento puede ser nulo, el resultado tambié n; si un argumento es nulo, el resultado es el valor nulo. Subtemas 3.2.74.1 Ejemplo

DB2/400 Manual de Consulta SQL V3R7 XOR

© Copyright IBM Corp. 1995, 1996 3.2.74 - 1

Page 358: DB2/400 Manual de Consulta SQLmarce.com/docs/systems/manuales/db2_400_manual_consulta_sql_v3r7.pdf · VERSION Nota de Versión Segunda edición (noviembre de 1996) Este manual es

3.2.74.1 Ejemplo Supongamos que la variable del lenguaje principal L 1 es una variable del lenguaje principal de tipo character(2) con un valo r de X'E1E1,', la variable del lenguaje principal L2 es una variable del lenguaje principal de tipo character(3) con un valor de X'F0F000' y la variable del lenguaje principal L3 es una variable del lenguaje principal de tipo character(4) con un valor de X'0000000F'. XOR(:L1,:L2,:L3) Devuelve el valor X'1111404F'. En este caso, los a rgumentos más cortos se rellenan con blancos (X'40'), de manera que el resu ltado XOR lógico difiere del primer resultado del ejemplo siguiente XOR(:L3,:L2,:L1) Devuelve el valor X'1111400F'.

DB2/400 Manual de Consulta SQL V3R7 Ejemplo

© Copyright IBM Corp. 1995, 1996 3.2.74.1 - 1

Page 359: DB2/400 Manual de Consulta SQLmarce.com/docs/systems/manuales/db2_400_manual_consulta_sql_v3r7.pdf · VERSION Nota de Versión Segunda edición (noviembre de 1996) Este manual es

3.2.75 YEAR +-------------------------------------------------- ----------------------+ ¦ ¦ ¦ >-- YEAR--(-- expresión --)---------------------------------------------> ¦ ¦ ¦ +-------------------------------------------------- ----------------------+ La función YEAR devuelve la parte de un valor corre spondiente al año. El argumento debe ser una fecha, una indicación de la hora, una duración de fecha o una duración de indicación de la hora. El resultado de la función es un entero grande. Si el argumento puede ser nulo, el resultado también; si el argumento es nulo , el resultado es el valor nulo. El resto de las reglas dependen del tipo de datos d el argumento: � Si el argumento es una fecha o una indicación de la hora: El resultado es la parte del valor correspondie nte al año, que es un entero comprendido entre 1 y 9999. � Si el argumento es una duración de fecha o durac ión de indicación de la hora: El resultado es la parte del valor correspondie nte al año, que es un entero comprendido entre -9999 y 9999. Un resu ltado no cero tiene el mismo signo que el argumento. Subtemas 3.2.75.1 Ejemplos

DB2/400 Manual de Consulta SQL V3R7 YEAR

© Copyright IBM Corp. 1995, 1996 3.2.75 - 1

Page 360: DB2/400 Manual de Consulta SQLmarce.com/docs/systems/manuales/db2_400_manual_consulta_sql_v3r7.pdf · VERSION Nota de Versión Segunda edición (noviembre de 1996) Este manual es

3.2.75.1 Ejemplos � Seleccionar todos los proyectos de la tabla PROY ECTO programados para que empiecen (FCHINIPR) y acaben (FCHAFINP) en el mismo año natural. SELECT * FROM PROYECTO WHERE YEAR(FCHINIPR) = YEAR(FCHAFINP) � Seleccionar todos los proyectos de la tabla PROY ECTO programados para que tarden menos de un año en completarse. SELECT * FROM PROYECTO WHERE YEAR(FCHFINPR - FCHAINIP ) < 1

DB2/400 Manual de Consulta SQL V3R7 Ejemplos

© Copyright IBM Corp. 1995, 1996 3.2.75.1 - 1

Page 361: DB2/400 Manual de Consulta SQLmarce.com/docs/systems/manuales/db2_400_manual_consulta_sql_v3r7.pdf · VERSION Nota de Versión Segunda edición (noviembre de 1996) Este manual es

3.2.76 ZONED +-------------------------------------------------- ----------------------+ ¦ ¦ ¦ >-- ZONED--(---- expresión ---------------------------------)-----------> ¦ ¦ +- ,precisión --------------+ ¦ ¦ +- ,escala -+ ¦ ¦ ¦ +-------------------------------------------------- ----------------------+ La función ZONED devuelve la representación en deci mal con zona de un número. El primer argumento debe ser un número. El segundo argumento, si se especifica, debe estar dentro del rango de 1 a 31. El tercer argumento, si se especifica, debe estar dentro del rango de 0 a p, donde p es el segundo argumento. La omisión del tercer argumento es una especificación implícita de cero. El valor por omisión del segundo argumento depende del tipo de datos del primer argumento: � 15 para coma flotante, decimal, numérico o binar io de escala no cero � 11 para entero grande � 5 para entero pequeño El resultado de la función es un número decimal con zona con la precisión p y la escala s , donde p y s son el segundo y tercer argumento, respectivamente. Si el primer argumento puede ser nulo, el resultado también; si el primer argumento es nulo, el resulta do es el valor nulo. El resultado es el mismo número que se produciría s i se asignase el primer argumento a una columna decimal con zona (NUMERIC) o a una variable con una precisión p y una escala s . Se producirá un error si el número de dígitos decimales significativos precisos para repr esentar la parte entera del número es mayor que p-s . Subtemas 3.2.76.1 Ejemplos

DB2/400 Manual de Consulta SQL V3R7 ZONED

© Copyright IBM Corp. 1995, 1996 3.2.76 - 1

Page 362: DB2/400 Manual de Consulta SQLmarce.com/docs/systems/manuales/db2_400_manual_consulta_sql_v3r7.pdf · VERSION Nota de Versión Segunda edición (noviembre de 1996) Este manual es

3.2.76.1 Ejemplos � Supongamos que la variable del lenguaje principa l Z1 es una variable del lenguaje principal decimal con un valor de 1,123. ZONED(:Z1,15,14) Devuelve el valor 1,12300000000000. � Supongamos que la variable del lenguaje principa l Z1 es una variable del lenguaje principal decimal con un valor de 1123. ZONED(:Z1,11,2) Devuelve el valor 1123,00. ZONED(:Z1,4) Devuelve el valor 1123.

DB2/400 Manual de Consulta SQL V3R7 Ejemplos

© Copyright IBM Corp. 1995, 1996 3.2.76.1 - 1

Page 363: DB2/400 Manual de Consulta SQLmarce.com/docs/systems/manuales/db2_400_manual_consulta_sql_v3r7.pdf · VERSION Nota de Versión Segunda edición (noviembre de 1996) Este manual es

4.0 Capítulo 4. Consultas Una consulta especifica una tabla de resultados o una tabla de resultados intermedia. Una consulta es un componente de ciertas sentencias SQL. Existen tres formas de consultas: � La subselección � La selección completa � La sentencia-select En el apartado "SELECT INTO" en el tema 5.44 se describe otra forma de selección. Subtemas 4.1 Autorización 4.2 subselección 4.3 selección completa 4.4 sentencia select

DB2/400 Manual de Consulta SQL V3R7 Capítulo 4. Consultas

© Copyright IBM Corp. 1995, 1996 4.0 - 1

Page 364: DB2/400 Manual de Consulta SQLmarce.com/docs/systems/manuales/db2_400_manual_consulta_sql_v3r7.pdf · VERSION Nota de Versión Segunda edición (noviembre de 1996) Este manual es

4.1 Autorización Para todo formato de una consulta, los privilegios que tenga el ID de autorización de la sentencia deben incluir al menos uno de los siguientes: � Para cada tabla o vista identificada en la sente ncia - El privilegio SELECT sobre la tabla o vista y - La autorización de sistema *EXECUTE sobre l a biblioteca que contiene la tabla o la vista � Autorización administrativa El ID de autorización de la sentencia tiene el priv ilegio SELECT sobre una tabla si: � Es el propietario de la tabla. � Se le ha otorgado el privilegio SELECT sobre la tabla o bien � Se le han otorgado las autorizaciones de sistema *OBJOPR y *READ sobre la tabla El ID de autorización de la sentencia tiene el priv ilegio SELECT sobre una vista si: � Es el propietario de la vista, � Se le ha otorgado el privilegio SELECT sobre la vista o bien � Se le han otorgado las autorizaciones de sistema *OBJOPR y *READ sobre la vista y la autorización de sistema *READ sob re todas las tablas y vistas de las que depende esta vista directa o indirectamente. Es decir, sobre todas las tablas y vistas a las qu e se hace referencia en la definición de la vista, y si se hace referen cia a una vista, sobre todas las tablas y vistas a las que se hace ref erencia en la definición de la misma, y así sucesivamente.

DB2/400 Manual de Consulta SQL V3R7 Autorización

© Copyright IBM Corp. 1995, 1996 4.1 - 1

Page 365: DB2/400 Manual de Consulta SQLmarce.com/docs/systems/manuales/db2_400_manual_consulta_sql_v3r7.pdf · VERSION Nota de Versión Segunda edición (noviembre de 1996) Este manual es

4.2 subselección +-------------------------------------------------- ----------------------+ ¦ ¦ ¦ >-- cláusula-select -- cláusula-from ------------------------------------> ¦ ¦ +- cláusula-where -+ ¦ ¦ ¦ ¦ >------------------------------------------------ --------------------> ¦ ¦ +- cláusula-group-by -+ +- cláusula-having -+ ¦ ¦ ¦ +-------------------------------------------------- ----------------------+ La subselección es un componente de la selección completa, la sent encia CREATE VIEW y la sentencia INSERT. También es un c omponente de ciertos predicados los cuales, a su vez, son componentes de una subselección. Una subselección que sea componente de un predicado rec ibe el nombre de| subconsulta . Las subconsultas no pueden llevarse a cabo en un a tabla| distribuida. Para obtener más información sobre ta blas distribuidas,| consulte la publicación DB2 Multisystem for OS/400 , SC41-3705. Una subselección especifica una tabla de resultados derivada de las tablas o vistas identificadas en la cláusula FROM. La der ivación puede describirse como una secuencia de operaciones en la s que el resultado de cada una de ellas es la entrada de la siguiente (és ta es tan sólo una forma de describir las subselecciones. El método u tilizado para realizar la derivación puede ser bastante diferente de esta descripción). La secuencia de las operaciones (hipotéticas) es: 1. cláusula FROM 2. cláusula WHERE 3. cláusula GROUP BY 4. cláusula HAVING 5. cláusula SELECT Subtemas 4.2.1 cláusula select 4.2.2 cláusula from 4.2.3 cláusula where 4.2.4 cláusula group-by 4.2.5 cláusula having 4.2.6 Ejemplos de una subselección

DB2/400 Manual de Consulta SQL V3R7 subselección

© Copyright IBM Corp. 1995, 1996 4.2 - 1

Page 366: DB2/400 Manual de Consulta SQLmarce.com/docs/systems/manuales/db2_400_manual_consulta_sql_v3r7.pdf · VERSION Nota de Versión Segunda edición (noviembre de 1996) Este manual es

4.2.1 cláusula select +-------------------------------------------------- ----------------------+ ¦ ¦ ¦ +- ALL------+ ¦ ¦ >-- SELECT--+----------+------------------------------------- ---------> ¦ ¦ +- DISTINCT -+ ¦ ¦ ¦ ¦ >---- * --------------------------------------------------- ------------> ¦ ¦ ¦ <-,-----------------------------------+ ¦ ¦ ¦ +---- expresión ----------------------------+ ¦ ¦ ¦ ¦ +- AS-+ ¦ ¦ ¦ ¦ ¦ +--------- nombre-col -+ ¦ ¦ ¦ +- nombre-tabla.* --------------------¦ ¦ ¦ +- nombre-vista.* --------------------¦ ¦ ¦ +- nombre-correlación.* --------------+ ¦ ¦ ¦ +-------------------------------------------------- ----------------------+ La cláusula SELECT especifica las columnas de la ta bla de resultados finales. Los valores de columna se generan por la aplicación de la lista de selección a R. La lista de selección la conforman los nombre s o expresiones especificadas en la cláusula SELECT y R es el resultado de la operación anterior de la subselección. Si, por eje mplo, las únicas cláusulas especificadas son SELECT, FROM y WHERE, R es el resultado de la cláusula WHERE. ALL Selecciona todas las filas de la tabla de resul tados finales y no elimina los duplicados. Este es el valor por o misión. DISTINCT Elimina todos los conjuntos de filas duplicadas de la tabla de resultados finales menos uno. Se dice que dos filas son un duplicado de la ot ra si cada valor de la primera es idéntico al valor correspondiente de la segunda (a efectos de la determinación de filas duplicadas, se con sidera que dos valores nulos son iguales). Notación de la lista de selección * Representa una lista de nombres que identifica las columnas de la tabla R. El primer nombre de la lista identifi ca la primera columna de R, el segundo la segunda y así sucesivamente . La lista de nombres se establece cuando se prep ara la sentencia que contiene la cláusula SELECT. De ahí que * no i dentifique ninguna columna que se haya añadido a una tabla una vez preparada la sentencia. expresión Especifica los valores de una columna de result ados. Cada nombre-columna de la expresión debe identificar de forma no ambigua una columna de R. nombre-columna o AS nombre-columna Da nombre, o se lo cambia, a la columna de resu ltados. El nombre no deber estar calificado y no tiene que ser exclu sivo. nombre.* Representa una lista de nombres que identifica las columnas de nombre . El nombre puede ser un nombre de tabla, un nombre de vista o un nombre de correlación y debe designar a una tabla o vi sta mencionada en la cláusula FROM. El primer nombre de la lista id entifica la primera columna de la tabla o vista, el segundo nombre la segunda columna, y así sucesivamente. La lista de nombres se establece cuando se prep ara la sentencia que contiene la cláusula SELECT. De ahí que * no i dentifique ninguna columna que se haya añadido a una tabla una vez preparada la sentencia. Normalmente, cuando las sentencias SQL se vuelven a enlazar implícitamente, la lista de nombres no se restablec e. Por lo tanto, el número de columnas devuelto por la sentencia no cam bia. Sin embargo, existen cuatro casos en los que la lista de nombres se establece de nuevo y el número de columnas puede cambiar: � Cuando un programa SQL o un paquete SQL se salva y a continuación se restaura en un sistema AS/400 cuyo release es d iferente al del sistema desde el cual se ha salvado. � Cuando se especifica la denominación SQL para un programa o paquete SQL y el propietario del programa ha cambiado d esde que se creó el programa o paquete SQL. � Cuando una sentencia SQL se ejecuta por primera vez después de la instalación de un release más reciente de OS/40 0. � Cuando aparece la sentencia SELECT * en la subse lección de una sentencia INSERT o en una subselección dentro d e un predicado, y se ha eliminado y vuelto a crear con columnas adicion ales una tabla o vista

DB2/400 Manual de Consulta SQL V3R7 cláusula select

© Copyright IBM Corp. 1995, 1996 4.2.1 - 1

Page 367: DB2/400 Manual de Consulta SQLmarce.com/docs/systems/manuales/db2_400_manual_consulta_sql_v3r7.pdf · VERSION Nota de Versión Segunda edición (noviembre de 1996) Este manual es

a las que se hace referencia en la subselección . El número de columnas del resultado de SELECT es el mismo que el número de expresiones del formato operativo de la lista de se lección (es decir, la lista queda establecida en el tiempo de preparación ) y no puede sobrepasar las 8000). El resultado de una subconsulta debe se r una sola expresión, a menos que la subconsulta se utilice en el predicado EXISTS. Aplicación de la lista de selección : Algunos de los resultados de aplicar la lista de selección a R dependen de si se utiliza o no GROUP BY o HAVING. Estos resultados se describen aparte. Si se utiliza GROUP BY o HAVING: � Cada nombre-columna de la lista de selección debe identificar una columna de agrupación o debe especificarse en u na función de columna. | � Las funciones RRN, PARTITION, NODENAME y NODENUM BER no pueden| especificarse en la lista de selección. � La lista de selección se aplica a cada grupo de R y el resultado contiene tantas filas como grupos hay en R. Cu ando la lista de selección se aplica a un grupo de R, ese grupo es el origen de los argumentos de las funciones de columna existent es en la lista de selección. Si no se utiliza GROUP BY ni HAVING : � La lista de selección no debe incluir ninguna fu nción de columna o bien debe ser por entero una lista de funciones de columna. � Si la lista de selección no incluye funciones de columna, se aplica a cada fila de R y el resultado contiene tantas f ilas como filas hay en R. � Si la lista de selección es una lista de funcion es de columna, R es el origen de los argumentos de las funciones y el resultado de aplicar la lista de selección a una fila. En ambos casos, la enésima columna del resultado contiene los valores especificados al aplicar la enésima expresión con el formato operativo de la lista de selección. Atributos nulos de las columnas de resultados : Las columnas de resultados permiten los valores nulos si derivan de: � Cualquier función de columna excepto COUNT � Cualquier columna que permita valores nulos � Una función escalar o una expresión con un opera ndo que permita valores nulos. � Una variable del lenguaje principal que tenga un a variable de indicador. � El resultado de una UNION si al menos uno de los elementos correspondientes de la lista de selección puede convertirse en nulo � Una expresión aritmética Nombres de columnas de resultados � Si se especifica la cláusula AS, el nombre de la columna de resultados es el nombre de la cláusula AS. � Si no se especifica la cláusula AS y la columna de resultados deriva de una columna, el nombre de columna de resulta dos es el nombre no calificado de esa columna. � Todas las demás columnas de resultados no tienen nombre. Tipos de datos de las columnas de resultados : Cada columna del resultado de SELECT adquiere el tipo de datos de la expresión de la que deriva. +-------------------------------------------------- ----------------------+ ¦ Cuando la ¦ El tipo de datos de ¦ ¦ expresión es: ¦ la columna de resultados es: ¦ +-----------------+-------------------------------- ----------------------¦ ¦ El nombre de ¦ El mismo que el tipo de datos d e la columna, con la ¦ ¦ cualquier ¦ misma precisión y escala para l as columnas ¦ ¦ columna ¦ decimales. ¦ ¦ numérica ¦ ¦ +-----------------+-------------------------------- ----------------------¦ ¦ Una constante ¦ INTEGER. ¦ ¦ de entero ¦ ¦ +-----------------+-------------------------------- ----------------------¦ ¦ Una constante ¦ El mismo que el tipo de datos d e la constante, con ¦ ¦ decimal o de ¦ la misma precisión y escala par a las constantes ¦ ¦ coma flotante ¦ decimales. ¦ +-----------------+-------------------------------- ----------------------¦ ¦ El nombre de ¦ El mismo que el tipo de datos d e la variable, con la ¦ ¦ cualquier ¦ misma precisión y escala para l as variables ¦

DB2/400 Manual de Consulta SQL V3R7 cláusula select

© Copyright IBM Corp. 1995, 1996 4.2.1 - 2

Page 368: DB2/400 Manual de Consulta SQLmarce.com/docs/systems/manuales/db2_400_manual_consulta_sql_v3r7.pdf · VERSION Nota de Versión Segunda edición (noviembre de 1996) Este manual es

¦ variable ¦ decimales. Si el tipo de datos de la variable es ¦ ¦ numérica del ¦ distinto de un tipo de datos SQ L (por ejemplo, ¦ ¦ lenguaje ¦ DISPLAY SIGN LEADING SEPARATE e n COBOL), la columna ¦ ¦ principal ¦ de resultados es decimal. ¦ +-----------------+-------------------------------- ----------------------¦ ¦ Una expresión ¦ Igual que el tipo de datos del resultado, con la ¦ ¦ aritmética ¦ misma precisión y escala para l os resultados ¦ ¦ ¦ decimales según los descrito en el apartado ¦ ¦ ¦ "Expresiones" en el tema 2.14 . ¦ +-----------------+-------------------------------- ----------------------¦ ¦ Cualquier ¦ Véase el Capítulo 3 para determinar el tipo de datos ¦ ¦ función ¦ del resultado. ¦ +-----------------+-------------------------------- ----------------------¦ ¦ El nombre de ¦ El mismo que el tipo de datos d e la columna, con el ¦ ¦ cualquier ¦ mismo atributo de longitud. ¦ ¦ columna de ¦ ¦ ¦ serie ¦ ¦ +-----------------+-------------------------------- ----------------------¦ ¦ El nombre de ¦ El mismo que el tipo de datos d e la variable, con un ¦ ¦ cualquier ¦ atributo de longitud igual a la longitud de la ¦ ¦ variable del ¦ variable. Si el tipo de datos de la variable es ¦ ¦ lenguaje ¦ distinto de un tipo de datos SQ L (por ejemplo, una ¦ ¦ principal de ¦ serie de C terminada en NUL), l a columna de ¦ ¦ serie. ¦ resultados es una serie de long itud variable. ¦ +-----------------+-------------------------------- ----------------------¦ ¦ Una constante ¦ VARCHAR( n) ¦ ¦ de serie de ¦ ¦ ¦ caracteres de ¦ ¦ ¦ longitud n ¦ ¦ +-----------------+-------------------------------- ----------------------¦ ¦ Una constante ¦ VARGRAPHIC( n) ¦ ¦ de serie ¦ ¦ ¦ gráfica de ¦ ¦ ¦ longitud n ¦ ¦ +-----------------+-------------------------------- ----------------------¦ ¦ El nombre de ¦ El mismo que el tipo de datos d e la columna o ¦ ¦ una columna de ¦ variable del lenguaje principal . ¦ ¦ fecha y hora o ¦ ¦ ¦ una variable ¦ ¦ ¦ del lenguaje ¦ ¦ ¦ principal de ¦ ¦ ¦ fecha y hora ¦ ¦ ¦ ILE RPG/400 ¦ ¦ +-------------------------------------------------- ----------------------+

DB2/400 Manual de Consulta SQL V3R7 cláusula select

© Copyright IBM Corp. 1995, 1996 4.2.1 - 3

Page 369: DB2/400 Manual de Consulta SQLmarce.com/docs/systems/manuales/db2_400_manual_consulta_sql_v3r7.pdf · VERSION Nota de Versión Segunda edición (noviembre de 1996) Este manual es

4.2.2 cláusula from +-------------------------------------------------- --------------------------------------------------- ----------------------+ ¦ ¦ ¦ ¦ ¦ ¦ ¦ <-,---------+ ¦ ¦ >-- FROM---- ref-tabla --------------------------------------------------- -------------------------------------------------> ¦ ¦ ¦ ¦ ref-tabla: ¦ ¦ +---- tabla-única --------------------------------------------------- --------------------------------------------------- --¦ ¦ ¦ +- tabla-unión -+ ¦ ¦ ¦ ¦ tabla-única: ¦ ¦ +---- nombre-tabla --------------------------------------------------- --------------------------------------------------- -¦ ¦ ¦ +- nombre-vista -+ ¦ +- AS-+ ¦ ¦ ¦ +--------- nombre-correlación -+ ¦ ¦ ¦ ¦ tabla-unión: ¦ ¦ +- INNER-----------+ ¦ ¦ +---- ref-tabla ----+-----------------+-- JOIN-- tabla-única -- ON-- condición-unión -------------------------------------------¦ ¦ ¦ ¦ ¦ ¦ +- OUTER-+ ¦ ¦ ¦ ¦ ¦ ¦ ¦ +- LEFT------------¦ ¦ ¦ ¦ ¦ ¦ ¦ +- EXCEPTION-------+ ¦ ¦ ¦ ¦ ¦ +- CROSS JOIN-- tabla-única -------------------------------------+ ¦ ¦| ¦ +-(-- tabla-unión --)------------------------------------------------ ----------+ ¦ ¦ ¦ ¦ condición-unión: ¦ ¦ <-AND------------------------------+ ¦ ¦ +------ expresión ---- =----- expresión --------------------------------------------------- ----------------------------------¦ ¦ ¦ ¦ +- ¬=-¦ ¦ ¦ ¦ ¦ +- <>-¦ ¦ ¦ ¦ ¦ +- >--¦ ¦ ¦ ¦ ¦ +- >=-¦ ¦ ¦ ¦ ¦ +- <--¦ ¦ ¦ ¦ ¦ +- <=-¦ ¦ ¦ ¦ ¦ +- ¬<-¦ ¦ ¦ ¦ ¦ +- ¬>-+ ¦ ¦ ¦ +-(-- condición-unión --)--------+ ¦ ¦ ¦ ¦ ¦ +-------------------------------------------------- --------------------------------------------------- ----------------------+ La cláusula FROM especifica una tabla de resultados intermedios. Si sólo se especifica una tabla o vista, la tabla de result ados intermedia es simplemente dicha tabla o vista. Si se especifica m ás de una tabla o vista en la cláusula FROM sin ser una tabla de unión, la tabla de resultados intermedia constará de todas las combinaciones posi bles de las filas de la tabla o vista que se ha especificado, concatenada c on una fila de la segunda tabla o vista, concatenada a su vez con una fila de la tercera, y así sucesivamente. El número de filas del resultad o es el producto del número de filas de todas las tablas o vistas mencio nadas. La lista de nombres de la cláusula FROM debe ajusta rse a las reglas siguientes: � Cada nombre-tabla y nombre-vista debe denominar una tabla o vista| existente en el servidor actual. Si se especif ica la cláusula FROM en| una subconsulta, la tabla o vista no pueden ide ntificar una tabla| distribuida. � Los nombres expuestos deben ser exclusivos. Un nombre expuesto es un nombre-correlación, un nombre-tabla que no vaya seguido de un nombre-correlación, o un nombre-vista que no va ya seguido de un nombre-correlación. Cada nombre-correlación está definido como designador de la tabla o vista identificada mediante el nombre-tabla o nombre-vista que le precede de forma inmediata. Si se especifica un nombre de cor relación para un nombre de tabla o de vista, cualquier referencia a una col umna de tal tabla o vista en la subselección debe utilizar ese nombre d e correlación. Para saber cuáles son las reglas que rigen la utilizació n de los nombres de correlación, véase el apartado "Nombres de correlación" en el tema 2.10.2 . | tabla-unión Especifica la forma en que se van a unir dos ta blas de forma explícita para producir la tabla de resultados intermedia . La tabla de resultados consta sólo de las filas que satisfa cen la condición-unión , basándose en el tipo de unión que se especifica para cada par de tablas que se unen. La tabla situada a la izqu ierda de la palabra| clave JOIN puede ser una tabla-única , otra tabla-unión , o cualquier combinación de tablas únicas y de unión separad as por comas. La condición-unión puede hacer referencia a columnas de cualquiera de estas tablas precedentes. JOIN o INNER JOIN Especifica que cada fila de la tabla situada a la izquierda se unirá a una o más filas de la tabla situada a la derech a utilizando la condición-unión . Todas las filas de la tabla situada a la izquier da que no tengan una fila correspondiente en la ta bla situada a la derecha no se incluirán en la tabla de resultad os. LEFT JOIN o LEFT OUTER JOIN Especifica que cada fila de la tabla situada a la izquierda se unirá a una o más filas de la tabla situada a la derech a utilizando la condición-unión . Todas las filas de la tabla situada a la izquier da que no tengan una fila correspondiente en la ta bla situada a la derecha devolverán el valor nulo para cada colu mna de la tabla de la

DB2/400 Manual de Consulta SQL V3R7 cláusula from

© Copyright IBM Corp. 1995, 1996 4.2.2 - 1

Page 370: DB2/400 Manual de Consulta SQLmarce.com/docs/systems/manuales/db2_400_manual_consulta_sql_v3r7.pdf · VERSION Nota de Versión Segunda edición (noviembre de 1996) Este manual es

derecha. EXCEPTION JOIN Especifica que sólo se devolverán las filas de la tabla de la izquierda que no tengan filas correspondientes en la tabla de la derecha utilizando la condición-unión . Se devolverá el valor nulo para todas las columnas de todas las filas de l a tabla situada a la derecha. CROSS JOIN Especifica que la tabla de resultados contendrá una fila para cada una de las filas de la tabla situada a la izquierda concatenada con cada una de las filas de la tabla de la derecha. ON condición-unión Especifica la condición que se aplica a cada co mbinación de filas de las dos tablas que se unen al determinar las fi las que se van a añadir a la tabla de resultados intermedia. Si se especifica más de un predicado para LEFT OUTER JOIN o EXCEPTION JOIN, todas las comparaciones de la condición-unión deben ser la condición =. | Una expresión de cada predicado debe utilizar una columna de la tabla| especificada a la derecha de la palabra clave J OIN. La otra expresión| puede utilizar columnas de cualquiera de las ta blas especificadas en| la cláusula from antes de la palabra clave JOIN o puede no contener| ninguna columna. Cada nombre de columna debe i dentificar de forma no ambigua una columna de una de las tablas de la cláusula from . Las funciones de columna no pueden utilizarse en la expresión . Subtemas 4.2.2.1 Notas

DB2/400 Manual de Consulta SQL V3R7 cláusula from

© Copyright IBM Corp. 1995, 1996 4.2.2 - 2

Page 371: DB2/400 Manual de Consulta SQLmarce.com/docs/systems/manuales/db2_400_manual_consulta_sql_v3r7.pdf · VERSION Nota de Versión Segunda edición (noviembre de 1996) Este manual es

4.2.2.1 Notas La utilización de la sintaxis INNER JOIN con una condición-unión producirá el mismo resultado que especificar la unión listand o dos tablas en la cláusula FROM separadas mediante comas y utilizando la cláusula-where para proporcionar la condición. Cuando se utiliza la sintaxis JOIN, las tablas siem pre se unirán de izquierda a derecha. No se pueden utilizar parénte sis para cambiar el orden de la unión.

DB2/400 Manual de Consulta SQL V3R7 Notas

© Copyright IBM Corp. 1995, 1996 4.2.2.1 - 1

Page 372: DB2/400 Manual de Consulta SQLmarce.com/docs/systems/manuales/db2_400_manual_consulta_sql_v3r7.pdf · VERSION Nota de Versión Segunda edición (noviembre de 1996) Este manual es

4.2.3 cláusula where +-------------------------------------------------- ----------------------+ ¦ ¦ ¦ >-- WHERE-- condición-búsqueda -----------------------------------------> ¦ ¦ ¦ +-------------------------------------------------- ----------------------+ La cláusula WHERE especifica una tabla de resultado s intermedios que consta de aquellas filas de R para las que la condición-búsqueda es verdadera. R es el resultado de la cláusula FROM d e la sentencia. La condición-búsqueda debe ajustarse a las siguientes reglas: � Cada nombre-columna debe identificar de forma no ambigua a una columna de R o ser una referencia correlacionada. Un nombre-columna es una referencia correlacionada si identifica una col umna de una tabla o vista identificada en una subconsulta exterior. � No puede especificarse una función de columna a menos que se especifique la cláusula WHERE en una subconsult a de una cláusula HAVING y el argumento de la función sea una ref erencia correlacionada a un grupo. Si está en vigor una secuencia de clasificación dis tinta de *HEX al ejecutar la sentencia que contiene la cláusula WHER E y si la condición-búsqueda contiene predicados que tengan d atos SBCS o mixtos, la comparación de dichos predicados se realiza utiliza ndo los valores significativos. Los valores significativos derivan de aplicar la secuencia de clasificación a los operandos del pred icado. Toda subconsulta de la condición-búsqueda se ejecuta de forma efectiva para cada fila de R y los resultados se utilizan en la aplicación de la condición-búsqueda a la fila de R en cuestión. En realidad, la subconsulta se ejecuta para cada fila de R sólo si incluye una referencia correlacionada a una columna de R. De hecho, las s ubconsultas sin ninguna referencia correlacionada se ejecutan una vez tan s olo, mientras que las que tienen una referencia correlacionada puede haya n de ejecutarse una vez para cada fila.

DB2/400 Manual de Consulta SQL V3R7 cláusula where

© Copyright IBM Corp. 1995, 1996 4.2.3 - 1

Page 373: DB2/400 Manual de Consulta SQLmarce.com/docs/systems/manuales/db2_400_manual_consulta_sql_v3r7.pdf · VERSION Nota de Versión Segunda edición (noviembre de 1996) Este manual es

4.2.4 cláusula group-by +-------------------------------------------------- ----------------------+ ¦ ¦ ¦ <-,----------+ ¦ ¦ >-- GROUP BY---- nombre-col --------------------------------------------> ¦ ¦ ¦ +-------------------------------------------------- ----------------------+ La cláusula GROUP BY especifica una tabla de result ados intermedios que consta de una agrupación de las filas de R. R es e l resultado de la cláusula anterior de la subselección. nombre-columna indica una columna de R. El nombre-columna no debe especificar una columna con un atributo de longitud mayor que 2000 ó 1999 si la columna permite nulos. Cada columna menciona da recibe el nombre de columna de agrupación . El resultado de GROUP BY es un conjunto de grupos d e filas. En cada grupo de más de una fila, todos los valores de cada colum na de agrupación son idénticos y todas las filas con el mismo conjunto d e valores de las columnas de agrupación están en el mismo grupo. A efectos de agrupación, todos los valores nulos con una columna de agrupaci ón se consideran iguales. Si está en vigor una secuencia de clasificación dis tinta de *HEX al ejecutar la sentencia que contiene la cláusula GROU P BY, las columna se colocan en grupos utilizando los valores significat ivos. Estos se derivan aplicando la secuencia de clasificación a las colum nas de datos SBCS y a los datos SBCS de las columnas de datos mixtos. Dado que cada fila de un grupo contiene el mismo va lor de cualquier columna de agrupación, el nombre de una columna de agrupación puede utilizarse en una condición de búsqueda, en una clá usula HAVING o en una expresión de una cláusula SELECT; en cada caso, la referencia especificará sólo un valor para cada grupo. Si la columna de agrupación contiene series de long itud variable con blancos finales, los valores del grupo pueden difer ir en el número de blancos finales y podrían no tener la misma longitu d. En ese caso, las referencias a la columna de agrupación continuarán especificando sólo un valor para cada grupo, pero el valor para un grupo se elegirá arbitrariamente del conjunto de valores disponibles . Así pues, no se puede predecir cuál será la longitud real del valor resultante. La cláusula GROUP BY puede contener hasta 120 colum nas o 2000-n bytes, donde n es el número de columnas especificadas que permiten valores nulos.

DB2/400 Manual de Consulta SQL V3R7 cláusula group-by

© Copyright IBM Corp. 1995, 1996 4.2.4 - 1

Page 374: DB2/400 Manual de Consulta SQLmarce.com/docs/systems/manuales/db2_400_manual_consulta_sql_v3r7.pdf · VERSION Nota de Versión Segunda edición (noviembre de 1996) Este manual es

4.2.5 cláusula having +-------------------------------------------------- ----------------------+ ¦ ¦ ¦ >-- HAVING-- condición-búsqueda ----------------------------------------> ¦ ¦ ¦ +-------------------------------------------------- ----------------------+ La cláusula HAVING especifica una tabla de resultad os intermedios que consta de aquellos grupos de R para los que la condición-búsqueda es verdadera. R es el resultado de la cláusula anteri or de la subselección. Si esta cláusula no es GROUP BY, R se considera un solo grupo sin ninguna columna de agrupación. Cada nombre-columna de la condición de búsqueda debe cumplir una de las condiciones siguientes: � Identificar de forma no ambigua a una columna de agrupación de R. � Estar especificado en una función de columna. � Ser una referencia correlacionada. Un nombre-columna es una referencia correlacionada si identifica una col umna de una tabla o vista identificada en una subconsulta exterior. | Las funciones RRN, PARTITION, NODENAME y NODENUMBER no pueden| especificarse en la cláusula HAVING a menos que sea en una función de| columna. Consulte el Capítulo 3, "Funciones" , para saber cuáles son las restricciones que se aplican a la utilización de fu nciones de columnas. Si está en vigor una secuencia de clasificación dis tinta de *HEX al ejecutar la sentencia que contiene la cláusula HAVI NG y si la condición-búsqueda contiene predicados que tengan d atos SBCS o mixtos, la comparación de dichos predicados se realiza utiliza ndo los valores significativos. Los valores significativos derivan de aplicar la secuencia de clasificación a los operandos del pred icado. Un grupo de R al que se le aplique la condición de búsqueda proporciona el argumento de cada función de columna de la condició n de búsqueda, exceptuando las funciones cuyo argumento sea una re ferencia correlacionada. Si la condición de búsqueda contiene una subconsult a, puede considerarse que ésta se ejecuta cada vez que la condición de bú squeda se aplica a una fila y los resultados se utilizan al aplicar la con dición de búsqueda. En realidad, la subconsulta se ejecuta para todos los grupos sólo si contiene una referencia correlacionada. Los ejemplos 6 y 7 del apartado "Ejemplos de una subselección" en el tema 4.2.6 son una ilustración de las diferencias. Toda referencia correlacionada con un grupo de R de be identificar a una columna de agrupación o estar dentro de una función de columna. Cuando se utiliza HAVING sin GROUP BY, cualquier no mbre de columna de la lista de selección deberá aparecer en una función d e columna.

DB2/400 Manual de Consulta SQL V3R7 cláusula having

© Copyright IBM Corp. 1995, 1996 4.2.5 - 1

Page 375: DB2/400 Manual de Consulta SQLmarce.com/docs/systems/manuales/db2_400_manual_consulta_sql_v3r7.pdf · VERSION Nota de Versión Segunda edición (noviembre de 1996) Este manual es

4.2.6 Ejemplos de una subselección Ejemplo 1 : Seleccionar todas las columnas y filas de la tab la EMPLEADO. SELECT * FROM EMPLEADO Ejemplo 2 : Unir las tablas ACT_EMP. y EMPLEADO, seleccionar todas las columnas de la tabla ACT_EMP y añadir el apellido d el empleado (APELL) de la tabla EMPLEADO a cada fila del resultado. SELECT ACT_EMP.*, APELL FROM ACT_EMP, EMPLEADO WHERE ACT_EMP.NUMEMP = EMPLEADO.NUMEMP Ejemplo 3 : Unir las tablas EMPLEADO y DEPART, seleccionar e l número de empleado (NUMEMP), el apellido (APELLLIDO), el núme ro de departamento (DEPTTRAB de la tabla EMPLEADO y NUMDEPT de la tabl a DEPART) y el nombre del departamento (NOMBDEPT) de todos los empleados nacidos (FCHANACIM) antes de 1930. SELECT NUMEMP, APELL, DEPTTRAB, NOMBDEPT FROM EMPLEADO, DEPART WHERE DEPTTRAB = NUMDEPT AND YEAR(FCHANACIM) < 1930 Esta subselección también puede escribirse de la si guiente manera: SELECT NUMEMP, APELL, DEPTTRAB, NOMBDEPT FROM EMPLEADO INNER JOIN DEPART ON DEPTTRAB = NUMDEPT WHERE AÑO(FCHANACIM) < 1930 Ejemplo 4 : Seleccionar el trabajo (TRAB) y el sueldo máximo y mínimo (SUELDO) de cada grupo de filas con el mismo código de trabajo en la tabla EMPLEADO, pero sólo para los grupos con más de una fila y con un sueldo máximo mayor o igual que 27000. SELECT TRAB, MIN( SUELDO), MAX(SUELDO) FROM EMPLEADO GROUP BY TRAB HAVING COUNT(*) > 1 AND MAX(SUELDO) >= 27000 Ejemplo 5 : Seleccionar todas las filas de la tabla ACT_EMP correspondientes a los empleados (NUMEMP) del depar tamento (DEPTTRAB) 'E11' (los números de departamento de los empleados se muestran en la tabla EMPLEADO). SELECT * FROM ACT_EMP WHERE NUMEMP IN (SELECT NUMEMP FROM EMPLEADO WHERE DEPTTRAB = 'E11' ) Ejemplo 6 : De la tabla EMPLEADO, seleccionar el número de d epartamento (DEPTTRAB) y sueldo máximo del departamento (SUELDO ) de todos los departamentos cuyo sueldo máximo sea inferior al su eldo medio de todos los empleados. SELECT DEPTTRAB, MAX(SUELDO) FROM EMPLEADO GROUP BY DEPTTRAB HAVING MAX(SUELDO) < (SELECT AVG( SUELDO) FROM EMPLEADO) La subconsulta de la cláusula HAVING sólo se ejecut aría una vez en este ejemplo. Ejemplo 7 : Utilizando la tabla EMPLEADO, seleccionar el núm ero de departamento (DEPTTRAB) y el sueldo (SUELDO) máximo departamental de todos los departamentos cuyo sueldo máximo sea inferior a l sueldo medio del resto de los departamentos. SELECT DEPTTRAB, MAX(SUELDO) FROM EMPLEADO COR_EMP GROUP BY DEPTTRAB HAVING MAX(SUELDO) < (SELECT AVG( SUELDO) FROM EMPLEADO WHERE NOT DEPTTRAB = COR_EMP.DEPTTRAB) A diferencia del ejemplo 6, la subconsulta de la cl áusula HAVING tendría que ejecutarse para cada grupo. Ejemplo 8 : Unir las tablas EMPLEADO y ACT_EMP, seleccionar todos los empleados y sus números de proyecto. Devolver incl uso los empleados que no tienen un número de proyecto asignado actualment e. SELECT EMPLEADO.NUMEMP, NUMPRO FROM EMPLEADO LEFT OUTER JOIN ACT_EMP ON EMPLEADO.NUMEMP = ACT_EMP.NUMEMP Todos los empleados de la tabla EMPLEADO que no ten gan un número de proyecto en la tabla ACT_EMP devolverán una fila en la tabla de resultados que contendrá el valor NUMEMP y el valor nulo en la columna NUMPRO.

DB2/400 Manual de Consulta SQL V3R7 Ejemplos de una subselección

© Copyright IBM Corp. 1995, 1996 4.2.6 - 1

Page 376: DB2/400 Manual de Consulta SQLmarce.com/docs/systems/manuales/db2_400_manual_consulta_sql_v3r7.pdf · VERSION Nota de Versión Segunda edición (noviembre de 1996) Este manual es
Page 377: DB2/400 Manual de Consulta SQLmarce.com/docs/systems/manuales/db2_400_manual_consulta_sql_v3r7.pdf · VERSION Nota de Versión Segunda edición (noviembre de 1996) Este manual es

4.3 selección completa +-------------------------------------------------- ----------------------+ ¦ ¦ ¦ >---- subselección --------------------------------------------------- -> ¦ ¦ +- (selección completa) -+ ¦ ¦ ¦ ¦ <-------------------------------------------+ ¦ ¦ >------------------------------------------------ --------------------> ¦ ¦ +--- UNION---------- subselección -----------+ ¦ ¦ +- UNION ALL-+ +- (selección completa) -+ ¦ ¦ ¦ +-------------------------------------------------- ----------------------+ Una selección completa especifica una tabla de resultados. Si no se utiliza UNION, el resultado de la selección complet a es el resultado de la subselección especificada. UNION o UNION ALL Deriva una tabla de resultados combinando otras dos (R1 y R2). Si se especifica UNION ALL, el resultado consta de to das las filas R1 y R2. Si se especifica UNION sin la opción ALL, el re sultado es el conjunto de todas las filas de R1 o R2 sin las filas dup licadas, que se han eliminado. En cualquiera de los dos casos, sin embargo, cada fila de la tabla UNION es una fila perteneciente a R1 o a R2. Si la enésima columna de R1 y la enésima columna de R2 tienen el mismo nombre de columna de resultados, la enésima columna de la tabla de resultados tendrá ese nombre de columna. Si la ené sima columna de R1 y la enésima columna de R2 no tienen el mismo nombre, la enésima columna de la tabla de resultados no tendrá nombre. Se dice que dos filas son duplicados si cada valor de la primera es idéntico al valor correspondiente de la segunda. S i está en vigor una secuencia de clasificación distinta de *HEX al ejec utar la sentencia que contiene la palabra clave UNION y si las tablas de resultados contienen columnas que tengan datos SBCS o mixtos, la compara ción de dichas columnas se realiza utilizando los valores significativos. Los valores significativos derivan de aplicar la secuencia de c lasificación a cada valor (a efectos de la determinación de duplicados, se considera que dos valores nulos son iguales). Tanto UNION como UNION ALL son operaciones asociati vas. No obstante, al incluir en la misma sentencia SQL tanto el operador UNION ALL como el operador UNION, el resultado de la operación depend erá del orden de evaluación. Allí donde no hay paréntesis, la evalu ación se realiza de izquierda a derecha. Allí donde se incluyan parént esis, la subselección con paréntesis se evalúa primera, seguida, de izqui erda a derecha, de los demás componentes de la sentencia. Reglas para las columnas : R1 y R2 deben tener el mismo número de columnas y el tipo de datos de la columna enésima de R1 debe ser compatible con el tipo de datos de la columna enésima de R2. Los val ores de serie de caracteres no son compatibles con los valores de fe cha y hora. La columna enésima del resultado de UNION y UNION A LL deriva de las columnas enésimas de R1 y R2. Los atributos de las columnas de resultados se determinan utilizando las reglas para las column as de resultados. Para obtener más información, consulte el apartado "Reglas para tipos de datos de resultado" Subtemas 4.3.1 Ejemplos de una selección completa 4.3.2 Reglas para tipos de datos de resultado 4.3.3 Reglas de conversión para operaciones que combinan series

DB2/400 Manual de Consulta SQL V3R7 selección completa

© Copyright IBM Corp. 1995, 1996 4.3 - 1

Page 378: DB2/400 Manual de Consulta SQLmarce.com/docs/systems/manuales/db2_400_manual_consulta_sql_v3r7.pdf · VERSION Nota de Versión Segunda edición (noviembre de 1996) Este manual es

4.3.1 Ejemplos de una selección completa Ejemplo 1 : Seleccionar todas las columnas y filas de la tab la EMPLEADO. SELECT * FROM EMPLEADO Ejemplo 2 : Listar los números de empleado (NUMEMP) de todos los empleados de la tabla EMPLEADO cuyo número de departamento (D EPTTRAB) empiece por 'E' o que estén asignados a proyectos de la tabla ACT_EM P cuyo número de proyecto (NUMPRO) sea igual a 'MA2100', 'MA2110' o 'MA2112'. SELECT NUMEMP FROM EMPLEADO WHERE DEPTTRAB LIKE 'E%' UNION SELECT NUMEMP FROM ACT_EMP WHERE NUMPRO IN( 'MA2100', 'MA2110', 'MA2112' ) Ejemplo 3 : Realizar la misma consulta que en el ejemplo 2, pero utilizando UNION ALL para que así se no se elimine ninguna fila duplicada. SELECT NUMEMP FROM EMPLEADO WHERE DEPTTRAB LIKE 'E%' UNION ALL SELECT NUMEMP FROM ACT_EMP WHERE NUMPRO IN( 'MA2100', 'MA2110', 'MA2112' )

DB2/400 Manual de Consulta SQL V3R7 Ejemplos de una selección completa

© Copyright IBM Corp. 1995, 1996 4.3.1 - 1

Page 379: DB2/400 Manual de Consulta SQLmarce.com/docs/systems/manuales/db2_400_manual_consulta_sql_v3r7.pdf · VERSION Nota de Versión Segunda edición (noviembre de 1996) Este manual es

4.3.2 Reglas para tipos de datos de resultado La función escalar COALESCE (y las funciones escala res VALUE e IFNULL), una selección completa y la lista IN del predicado IN combinan dos o más operandos para producir un tipo de datos de resulta do. El tipo de datos del resultado viene determinado por el tipo de dato s de los operandos. Los tipos de datos de los dos primeros operandos de terminan un tipo de datos de resultado intermedio, este tipo de datos y el del siguiente operando determinan un nuevo tipo de datos de resul tado intermedio, y así sucesivamente. El último tipo de datos de resultad o intermedio y el tipo de datos del último operando determinan el tipo de datos del resultado. Para cada par de tipos de datos, el tipo de datos d el resultado viene determinado por la aplicación secuencial de las reg las que se resumen en la siguiente tabla: +-------------------------------------------------- ----------------------+ ¦ Si una columna ¦ Y el otro ¦ El tipo de datos de ¦ ¦ de operando ¦ operando es... ¦ la columna de resultados es... ¦ ¦ es... ¦ ¦ ¦ +-----------------+------------------+------------- ----------------------¦ ¦ CHAR(x) ¦ CHAR(y) ¦ CHAR(z) dond e z = max(x,y) ¦ +-----------------+------------------+------------- ----------------------¦ ¦ VARCHAR(x) ¦ CHAR(y) o ¦ VARCHAR(z) d onde ¦ ¦ ¦ VARCHAR(y) ¦ z = max(x,y) ¦ +-----------------+------------------+------------- ----------------------¦ ¦ datos de bit ¦ datos mixtos, ¦ datos de bit ¦ ¦ ¦ SBCS o de bit ¦ ¦ +-----------------+------------------+------------- ----------------------¦ ¦ datos mixtos ¦ datos mixtos o ¦ datos mixtos ¦ ¦ ¦ SBCS ¦ ¦ +-----------------+------------------+------------- ----------------------¦ ¦ datos SBCS ¦ datos SBCS ¦ datos SBCS ¦ +-----------------+------------------+------------- ----------------------¦ ¦ GRAPHIC(x) ¦ GRAPHIC(y) ¦ GRAPHIC(z) d onde z = max(x,y) ¦ +-----------------+------------------+------------- ----------------------¦ ¦ VARGRAPHIC(x) ¦ GRAPHIC(y) o ¦ VARGRAPHIC(z ) donde ¦ ¦ ¦ VARGRAPHIC(y) ¦ z = max(x,y) ¦ +-----------------+------------------+------------- ----------------------¦ ¦ DATE ¦ DATE ¦ DATE ¦ +-----------------+------------------+------------- ----------------------¦ ¦ TIME ¦ TIME ¦ TIME ¦ +-----------------+------------------+------------- ----------------------¦ ¦ TIMESTAMP ¦ TIMESTAMP ¦ TIMESTAMP ¦ +-----------------+------------------+------------- ----------------------¦ ¦ FLOAT (doble) ¦ cualquier tipo ¦ FLOAT (doble ) ¦ ¦ ¦ numérico ¦ ¦ +-----------------+------------------+------------- ----------------------¦ ¦ FLOAT (simple) ¦ FLOAT (simple) ¦ FLOAT (simpl e) ¦ +-----------------+------------------+------------- ----------------------¦ ¦ FLOAT (simple) ¦ DECIMAL, ¦ FLOAT (doble ) ¦ ¦ ¦ NUMERIC, ¦ ¦ ¦ ¦ INTEGER o ¦ ¦ ¦ ¦ SMALLINT ¦ ¦ +-----------------+------------------+------------- ----------------------¦ ¦ DECIMAL(w,x) ¦ DECIMAL(y,z) o ¦ DECIMAL(p,s) donde ¦ ¦ ¦ NUMERIC(y,z,) ¦ p = min(31, ¦ ¦ ¦ ¦ max(x,z)+max (w-x,y-z)) ¦ ¦ ¦ ¦ s = max(x,z) ¦ +-----------------+------------------+------------- ----------------------¦ ¦ DECIMAL(w,x) ¦ INTEGER ¦ DECIMAL(p,x) donde ¦ ¦ ¦ ¦ p = min(31, x+max(w-x,11)) ¦ +-----------------+------------------+------------- ----------------------¦ ¦ DECIMAL(w,x) ¦ SMALLINT ¦ DECIMAL(p,x) donde ¦ ¦ ¦ ¦ p = min(31, x+max(w-x,5)) ¦ +-----------------+------------------+------------- ----------------------¦ ¦ NUMERIC(w,x) ¦ NUMERIC(y,z) ¦ NUMERIC(p,s) donde ¦ ¦ ¦ ¦ p = min(31, max(x,z) + max(w-x, ¦ ¦ ¦ ¦ y-z)) ¦ ¦ ¦ ¦ s = max(x,z) ¦ +-----------------+------------------+------------- ----------------------¦ ¦ NUMERIC(w,x) ¦ INTEGER ¦ NUMERIC(p,x) donde ¦ ¦ ¦ ¦ p = min(31, x + max(w-x,11)) ¦ +-----------------+------------------+------------- ----------------------¦ ¦ NUMERIC(w,x) ¦ SMALLINT ¦ NUMERIC(p,x) donde ¦ ¦ ¦ ¦ p = min(31, x + max(w-x,5)) ¦ +-----------------+------------------+------------- ----------------------¦ ¦ INTEGER ¦ INTEGER ¦ INTEGER ¦ +-----------------+------------------+------------- ----------------------¦ ¦ INTEGER ¦ SMALLINT ¦ INTEGER ¦ +-----------------+------------------+------------- ----------------------¦ ¦ SMALLINT ¦ SMALLINT ¦ SMALLINT ¦ +-----------------+------------------+------------- ----------------------¦ ¦ NONZERO SCALE ¦ NONZERO SCALE ¦ NONZERO SCAL E BINARY (si ¦ ¦ BINARY ¦ BINARY ¦ cualquiera d e los dos operandos ¦ ¦ ¦ ¦ es binario c on escala no cero, ¦ ¦ ¦ ¦ los dos oper andos deben ser ¦ ¦ ¦ ¦ binarios con la misma escala). ¦ +-------------------------------------------------- ----------------------+ Si ninguna columna de operando permite valores nulo s, el resultado tampoco los permitirá. De lo contrario, el resultado permi te nulos. Si la descripción de cualquier columna de operando no es la misma que la descripción del resultado, sus valores se convierte n para ajustarse a la descripción del resultado. La operación de conversión es exactamente la misma que se produciría si los valores se hubieran asignado al resultado. Por ejemplo,

DB2/400 Manual de Consulta SQL V3R7 Reglas para tipos de datos de resultado

© Copyright IBM Corp. 1995, 1996 4.3.2 - 1

Page 380: DB2/400 Manual de Consulta SQLmarce.com/docs/systems/manuales/db2_400_manual_consulta_sql_v3r7.pdf · VERSION Nota de Versión Segunda edición (noviembre de 1996) Este manual es

� Si una columna de operando es CHAR(10) y la otra columna de operando es CHAR(5), el resultado es CHAR(10) y los valo res derivados de la columna CHAR(5) se rellenan por la derecha con cinco blancos. � Se produce un error si no puede mantenerse la pa rte completa de un número.

DB2/400 Manual de Consulta SQL V3R7 Reglas para tipos de datos de resultado

© Copyright IBM Corp. 1995, 1996 4.3.2 - 2

Page 381: DB2/400 Manual de Consulta SQLmarce.com/docs/systems/manuales/db2_400_manual_consulta_sql_v3r7.pdf · VERSION Nota de Versión Segunda edición (noviembre de 1996) Este manual es

4.3.3 Reglas de conversión para operaciones que com binan series Las operaciones que combinan series son la concaten ación, UNION y UNION ALL (estas reglas también se aplican a las funcione s escalares MAX, MIN, VALUE, COALESCE, IFNULL y CONCAT.) En cada caso, e l CCSID del resultado se determina en el momento del enlace, y la ejecuci ón de la operación puede conllevar la conversión de series al juego de caracteres codificados que se identifica mediante dicho CCSID. El CCSID del resultado viene determinado por los CC SID de los operandos. Los CCSID de los dos primeros operandos determinan un CCSID de resultados intermedios. Este CCSID y el del operando siguiente determinan un nuevo CCSID de resultados intermedios, y así sucesivament e. El último CCSID de resultados intermedios y el CCSID del último operan do determinan el CCSID de la serie o columna de resultados. Para cada par de CCSID, el CCSID de resultado viene determinado por la aplicación secue ncial de las reglas siguientes: � Si los CCSID son iguales, el resultado es este C CSID. � Si cualquiera de los dos CCSID es 65535, el resu ltado es 65535. � Si un CCSID denota datos SBCS y el otro denota d atos mixtos, el resultado es el CCSID de los datos mixtos. � Si no es así, el CCSID resultante viene determin ado según la siguiente tabla: +-------------------------------------------------- ------------------------------------------------+ ¦ Tabla 6. Seleccionar el CCSID de los resultados i ntermedios ¦ +-------------------------------------------------- ------------------------------------------------¦ ¦ ¦ Segundo operando ¦ ¦ +---------------------- ------------------------------------------------¦ ¦ ¦ ¦ ¦ ¦ ¦ Variable ¦ ¦ ¦ Valor de ¦ Valor ¦ ¦ Registro ¦ lenguaje ¦ ¦ Primer operando ¦ columna ¦ derivado ¦ Constante ¦ especial ¦ principal ¦ +---------------------------+-------------+-------- ------+-------------+-------------+-------------¦ ¦ Valor de ¦ Primero ¦ Prim ero ¦ Primero ¦ Primero ¦ Primero ¦ ¦ columna ¦ ¦ ¦ ¦ ¦ ¦ +---------------------------+-------------+-------- ------+-------------+-------------+-------------¦ ¦ Valor derivado ¦ Segundo ¦ Prim ero ¦ Primero ¦ Primero ¦ Primero ¦ +---------------------------+-------------+-------- ------+-------------+-------------+-------------¦ ¦ Constante ¦ Segundo ¦ Segu ndo ¦ Primero ¦ Primero ¦ Primero ¦ +---------------------------+-------------+-------- ------+-------------+-------------+-------------¦ ¦ Registro ¦ Segundo ¦ Segu ndo ¦ Primero ¦ Primero ¦ Primero ¦ ¦ especial ¦ ¦ ¦ ¦ ¦ ¦ +---------------------------+-------------+-------- ------+-------------+-------------+-------------¦ ¦ Variable ¦ Segundo ¦ Segu ndo ¦ Segundo ¦ Segundo ¦ Primero ¦ ¦ lenguaje ¦ ¦ ¦ ¦ ¦ ¦ ¦ principal ¦ ¦ ¦ ¦ ¦ ¦ +-------------------------------------------------- ------------------------------------------------+ Sin embargo, una variable del lenguaje principal qu e contenga datos en un esquema de codificación foráneo se convierte siempr e de forma efectiva al esquema de codificación nativo antes de utilizarse en cualquier operación. Las reglas anteriores se basan en la suposición de que esta conversión ya se ha realizado. Tenga presente que se considera que un resultado in termedio es un operando de valor derivado. Supongamos, por ejemplo, que CO LA, COLB y COLC son columnas con los CCSID 37, 278 y 500, respectivamen te. El CCSID de resultado de COLA CONCAT COLB CONCAT COLC se determ ina de la siguiente manera: 1. El CCSID de resultado de COLA CONCAT COLB queda determinado primero como 37 porque ambos operandos son columnas, co n lo que se elige el CCSID del primer operando. 2. El CCSID de resultado de la concatenación del r esultado del paso 1 y COLC queda determinado en 500. Se determina el CCSID de resultado 500 porque el primer operando es un valor derivado y el segundo operando es una columna, con lo que se escoge el CCSID d el segundo operando. Un operando de concatenación o el argumento selecci onado de la función escalar MAX, MIN, VALUE, COALESCE, IFNULL y CONCAT se convierte, si es necesario, al juego de caracteres codificados de la serie resultado. Cada serie de un operando de UNION o UNION ALL se convie rte, si es necesario, al juego de caracteres codificados de la columna de resultados. La conversión de caracteres sólo es necesaria si se cu mplen todas las condiciones siguientes: � Los CCSID son diferentes. � Ninguno de los CCSID es 65535. � La serie no es nula ni está vacía. � La tabla para la selección de conversiones CCSID indica que es necesaria la conversión. Se producirá un error si no se puede convertir un c arácter de una serie o si la tabla para la selección de conversiones de CC SID utilizada no contiene ninguna información sobre el par de CCSID. Se producirá un aviso si un carácter de la serie se convierte al carácter de sustitución.

DB2/400 Manual de Consulta SQL V3R7 Reglas de conversión para operaciones que combinan series

© Copyright IBM Corp. 1995, 1996 4.3.3 - 1

Page 382: DB2/400 Manual de Consulta SQLmarce.com/docs/systems/manuales/db2_400_manual_consulta_sql_v3r7.pdf · VERSION Nota de Versión Segunda edición (noviembre de 1996) Este manual es

4.4 sentencia select +-------------------------------------------------- ----------------------+ ¦ ¦ ¦ >-- selección completa ------------------------------------------------> ¦ ¦ +- cláusula-order-by -+ ¦ ¦ ¦ ¦ <----------------------+ (1,2) ¦ ¦ >------------------------------------------------ --------------------> ¦ ¦ +- cláusula-update ----¦ ¦ ¦ +- cláusula-read-only -¦ ¦ ¦ +- cláusula-optimize --¦ ¦ ¦ +- cláusula-isolation -+ ¦ ¦ ¦ ¦ Notas: ¦ ¦ (1) La cláusula-update y la cláusula-read-only n o pueden ¦ ¦ especificarse en la misma sentencia-select. ¦ ¦ ¦ ¦ (2) Cada una de las cláusulas sólo se puede espe cificar una vez. ¦ ¦ ¦ +-------------------------------------------------- ----------------------+ La sentencia-select es el formato de una consulta que puede especifica rse directamente en una sentencia DECLARE CURSOR o bien prepararse y luego hacer referencia a él en una sentencia DECLARE CURS OR. También puede emitirse interactivamente utilizando el recurso int eractivo (mandato STRSQL), lo que provoca la visualización de una tab la de resultados en el terminal. En cualquiera de los dos casos, la tabla especificada por una sentencia-select es el resultado de la selección completa. Subtemas 4.4.1 cláusula order-by 4.4.2 cláusula update 4.4.3 cláusula read-only 4.4.4 cláusula optimize 4.4.5 cláusula isolation 4.4.6 Ejemplos de una sentencia select

DB2/400 Manual de Consulta SQL V3R7 sentencia select

© Copyright IBM Corp. 1995, 1996 4.4 - 1

Page 383: DB2/400 Manual de Consulta SQLmarce.com/docs/systems/manuales/db2_400_manual_consulta_sql_v3r7.pdf · VERSION Nota de Versión Segunda edición (noviembre de 1996) Este manual es

4.4.1 cláusula order-by +-------------------------------------------------- ----------------------+ ¦ ¦ ¦ <-,------------------------+ ¦ ¦ +- ASC--+ ¦ ¦ ¦ >-- ORDER BY------ nombre-col ----+------+------------------------------> ¦ ¦ +- entero -----+ +- DESC-+ ¦ ¦ ¦ +-------------------------------------------------- ----------------------+ La cláusula ORDER BY especifica una ordenación de l as filas de la tabla de resultados. Si se identifica una sola columna, las filas se ordenan por los valores de dicha columna. Si se identifica más de una columna, las filas se ordenan por los valores de la primera colu mna identificada, después por los valores de la segunda columna ident ificada, y así sucesivamente. Si está en vigor una secuencia de clasificación dis tinta de *HEX al ejecutar la sentencia que contiene la cláusula ORDE R BY y si la cláusula ORDER BY conlleva columnas que tengan datos SBCS o mixtos, la comparación de dichas columnas se realiza utilizando los valore s significativos. Los valores significativos derivan de aplicar la secuen cia de clasificación a los valores de las columnas. Una columna con nombre puede estar identificada por un entero o por un nombre-columna . Una columna sin nombre debe estar identificada p or un entero. Una columna carece de nombre si no se espe cifica la cláusula AS en la lista de selección y si se ha derivado de una constante, una expresión con operadores o una función. Si la sele cción completa incluye un operador UNION, consulte el apartado "selección completa" en el tema 4.3 para saber cuáles son las reglas sobre columnas co n nombre en una selección completa. nombre-columna Debe identificar de forma no ambigua una column a de la tabla de resultados. Aunque en la cláusula ORDER BY no puede hacerse referencia a las columnas no incluidas en la ta bla de resultados, las reglas para referencias a columnas no ambiguas son las mismas que en el caso de las demás cláusulas de la selección completa. Consulte el apartado "Calificadores de nombre de columna para evitar la ambigüedad" en el tema 2.10.3 para obtener más información. Si la selección completa incluye UNION o UNION ALL, el nombre de columna no se puede calificar. entero Debe ser mayor que 0 y no mayor que el número d e columnas de la tabla de resultados. El entero n identifica la enésima columna de la tabla de resultados. ASC Utiliza los valores de la columna en orden asce ndente. Este es el valor por omisión. DESC Utiliza los valores de la columna en orden desc endente. La ordenación se lleva a cabo siguiendo las reglas de comparación descritas en el Capítulo 2 . El valor nulo es mayor que cualquier otro valor. Si la especificación de ordenación no deter mina una ordenación completa, las filas con valores duplicados de la úl tima columna identificada tendrán un orden arbitrario. Si no se especifica la cláusula ORDER BY, las filas de la tabla de resultados tendr án un orden arbitrario. La cláusula ORDER BY puede contener hasta 10000-n c olumnas ó 10000-n bytes (donde n es el número de columnas o bytes especific ados que permiten valores nulos).

DB2/400 Manual de Consulta SQL V3R7 cláusula order-by

© Copyright IBM Corp. 1995, 1996 4.4.1 - 1

Page 384: DB2/400 Manual de Consulta SQLmarce.com/docs/systems/manuales/db2_400_manual_consulta_sql_v3r7.pdf · VERSION Nota de Versión Segunda edición (noviembre de 1996) Este manual es

4.4.2 cláusula update +-------------------------------------------------- ----------------------+ ¦ ¦| ¦ >-- FOR UPDATE--------------------------------------------------- -----> ¦| ¦ ¦ <-,----------+ ¦ ¦| ¦ +- OF---- nombre-col ---+ ¦ ¦ ¦ +-------------------------------------------------- ----------------------+ La cláusula UPDATE identifica las columnas que se p ueden actualizar en una sentencia UPDATE situada posteriormente. Cada nombre-columna debe ser no calificado y debe identificar una columna de la tab la o vista que se identifica en la primera cláusula FROM de la selecc ión completa. Si se ha especificado la cláusula UPDATE sin nombres de colu mna, se incluyen todas las columnas actualizables de la tabla o vista que se identifica en la primera cláusula FROM de la selección completa. La cláusula puede aparecer antes o después de la cláusula-optimize qu e la acompañe. No debe especificarse la cláusula FOR UPDATE OF si la tabla de resultados de la selección completa es de sólo lectura, si se utiliza la cláusula FOR READ ONLY, o si se especifica la palabra clave SCRO LL sin la palabra clave DYNAMIC en la sentencia DECLARE CURSOR. Las sentencias UPDATE situadas que identifiquen el cursor asociado a una sentencia-select pueden actualizar todas las column as actualizables, siempre que: � La sentencia-select no contenga uno de los eleme ntos siguientes: - Una cláusula UPDATE - Una cláusula FOR READ ONLY - Una cláusula ORDER BY � La sentencia DECLARE CURSOR no contenga una pala bra clave SCROLL sin la palabra clave DYNAMIC. La cláusula UPDATE es una opción de rendimiento que no forma parte del SQL ISO/ANSI.

DB2/400 Manual de Consulta SQL V3R7 cláusula update

© Copyright IBM Corp. 1995, 1996 4.4.2 - 1

Page 385: DB2/400 Manual de Consulta SQLmarce.com/docs/systems/manuales/db2_400_manual_consulta_sql_v3r7.pdf · VERSION Nota de Versión Segunda edición (noviembre de 1996) Este manual es

4.4.3 cláusula read-only +-------------------------------------------------- ----------------------+ ¦ ¦ ¦ >-- FOR---- READ----- ONLY----------------------------------------------> ¦ ¦ +- FETCH-+ ¦ ¦ ¦ +-------------------------------------------------- ----------------------+ La cláusula FOR READ ONLY indica que la tabla de re sultados es de sólo lectura. Por ejemplo, su cursor no se utiliza para sentencias DELETE o UPDATE situadas. Algunas tablas de resultados son de sólo lectura po r naturaleza (por ejemplo, una tabla basada en una vista de sólo lect ura). De todas formas, puede especificarse FOR READ ONLY para dichas tabla s, pero la especificación no tiene ningún efecto. Para tablas de resultados en las que estén permitid as actualizaciones y supresiones, es posible que si se especifica FOR RE AD ONLY mejore el rendimiento de las operaciones FETCH al permitir qu e el gestor de bases de datos realice bloqueos y evite los bloqueos exclusi vos. Por ejemplo, en programas que contengan sentencias SQL dinámicas si n la cláusula FOR READ ONLY ni la cláusula ORDER BY, el gestor de bases de datos puede abrir cursores que no tengan especificado SCROLL sin la p alabra clave DYNAMIC como si se hubiera especificado la cláusula FOR UPD ATE OF. No se puede hacer referencia a una tabla de resulta dos de sólo lectura en una sentencia UPDATE o DELETE, tanto si es de sólo lectura por naturaleza como si se especifica como FOR READ ONLY. La cláusula FOR READ ONLY no puede aparecer en una sentencia que contenga una cláusula UPDATE. La cláusula puede aparecer an tes o después de la cláusula-optimize que la acompañe.

DB2/400 Manual de Consulta SQL V3R7 cláusula read-only

© Copyright IBM Corp. 1995, 1996 4.4.3 - 1

Page 386: DB2/400 Manual de Consulta SQLmarce.com/docs/systems/manuales/db2_400_manual_consulta_sql_v3r7.pdf · VERSION Nota de Versión Segunda edición (noviembre de 1996) Este manual es

4.4.4 cláusula optimize +-------------------------------------------------- ----------------------+ ¦ ¦ ¦ >-- OPTIMIZE FOR-- entero ---- ROW---------------------------------------> ¦ ¦ +- ROWS-+ ¦ ¦ ¦ +-------------------------------------------------- ----------------------+ La cláusula-optimize le dice al gestor de bases de datos que dé por supuesto que el programa no tiene la intención de r ecuperar más que filas de entero de la tabla de resultados. Sin esta cláusula, el g estor de bases de datos supone que se han de recuperar todas las f ilas de la tabla de resultados y realiza la optimización según este cri terio. Realizar la optimización para las filas de entero , o como mínimo, el número de filas que se obtienen con una operación FETCH podría mejo rar el rendimiento. La cláusula no cambia la tabla de resultados ni el ord en en que se se obtienen las filas con una operación FETCH. Con un a operación FETCH puede obtenerse cualquier número de filas, pero es posibl e que el rendimiento se degrade después de realizar operaciones FETCH de entero . La cláusula puede aparecer antes o después de una cláusula-upda te o cláusula-read-only que la acompañe.

DB2/400 Manual de Consulta SQL V3R7 cláusula optimize

© Copyright IBM Corp. 1995, 1996 4.4.4 - 1

Page 387: DB2/400 Manual de Consulta SQLmarce.com/docs/systems/manuales/db2_400_manual_consulta_sql_v3r7.pdf · VERSION Nota de Versión Segunda edición (noviembre de 1996) Este manual es

4.4.5 cláusula isolation +-------------------------------------------------- ----------------------+ ¦ ¦ ¦ (1) ¦ ¦ >-- WITH---- NC--------------------------------------------------- -----> ¦ ¦ ¦ (2)¦ ¦ ¦ +- UR----¦ ¦ ¦ +- CS----¦ ¦ ¦ ¦ (3)¦ ¦ ¦ +- RS----¦ ¦ ¦ +- RR----+ ¦ ¦ ¦ ¦ Notas: ¦ ¦ (1) La palabra clave NONE se puede utilizar como sinónimo de NC. ¦ ¦ ¦ ¦ (2) La palabra clave CHG se puede utilizar como sinónimo de UR. ¦ ¦ ¦ ¦ (3) La palabra clave ALL se puede utilizar como sinónimo de RS. ¦ ¦ ¦ +-------------------------------------------------- ----------------------+ La cláusula-isolation especifica un nivel de aislam iento en las sentencias SELECT, SELECT INTO, INSERT, UPDATE, DELETE y DECLA RE CURSOR. Este nivel de aislamiento entra en vigor sólo para la ejecució n de la sentencia que contiene la cláusula de aislamiento.

DB2/400 Manual de Consulta SQL V3R7 cláusula isolation

© Copyright IBM Corp. 1995, 1996 4.4.5 - 1

Page 388: DB2/400 Manual de Consulta SQLmarce.com/docs/systems/manuales/db2_400_manual_consulta_sql_v3r7.pdf · VERSION Nota de Versión Segunda edición (noviembre de 1996) Este manual es

4.4.6 Ejemplos de una sentencia select Ejemplo 1 : Seleccionar todas las columnas y filas de la tab la EMPLEADO. SELECT * FROM EMPLEADO Ejemplo 2 : Seleccionar el nombre de proyecto (NOMBREPR), la fecha de inicio (FCHAINIP) y la fecha de finalización (FCHFI NPR) a partir de la tabla PROYECTO. Ordenar la tabla de resultados por la fecha de finalización incluyendo en primer lugar las fechas más recientes. SELECT NOMBREPR, FCHAINIP, FCHFINPR FROM PROYECTO ORDER BY FCHFINPR DESC Ejemplo 3 : Seleccionar el número de departamento (DEPTTRAB) y el sueldo medio departamental (SUELDO) de todos los departame ntos de la tabla EMPLEADO. Disponer la tabla de resultados en orden ascendente por sueldo medio departamental. SELECT DEPTTRAB, AVG(SUELDO) FROM EMPLEADO GROUP BY DEPTTRAB ORDER BY 2 Ejemplo 4 : Declarar un cursor denominado CUR_AC para utiliz arlo en un programa PL/I y actualizar las columnas de fecha de inicio (FCHAINIP) y de fecha de finalización (FCHFINPR) de la tabla PROYEC TO. El programa debe recibir ambos valores junto con el valor de número de proyecto (NUMPRO) de cada fila. La declaración especifica que la vía de acceso correspondiente a la consulta puede optimizarse para la recuperació n de un máximo de 2 filas. Aun así, el programa puede recuperar más de 2 filas de la tabla de resultados. Sin embargo, si se recuperan más de 2 filas, el rendimiento puede degradarse. EXEC SQL DECLARE CUR_AC CURSOR FOR SELECT NUMPRO, FCHAINIP, FCHFINPR FROM PROYECTO FOR UPDATE OF FCHAINIP, FCHFINPR OPTIMIZE FOR 2 ROWS ; Ejemplo 5 : Seleccionar los elementos de una tabla con un ni vel de aislamiento de Lectura Repetible (RS, ALL). SELECT NOMBRE, SUELDO FROM NOMINA WHERE DEPT = 704 WITH RS

DB2/400 Manual de Consulta SQL V3R7 Ejemplos de una sentencia select

© Copyright IBM Corp. 1995, 1996 4.4.6 - 1

Page 389: DB2/400 Manual de Consulta SQLmarce.com/docs/systems/manuales/db2_400_manual_consulta_sql_v3r7.pdf · VERSION Nota de Versión Segunda edición (noviembre de 1996) Este manual es

5.0 Capítulo 5. Sentencias Este capítulo contiene diagramas de sintaxis, descr ipciones semánticas, reglas y ejemplos de la utilización de las sentenci as SQL que aparecen listadas en la tabla siguiente. +-------------------------------------------------- ----------------------+ ¦ Tabla 7. Sentencias SQL ¦ +-------------------------------------------------- ----------------------¦ ¦ Sentencia SQL ¦ Función ¦ Vaya a ¦ ¦ ¦ ¦ la ¦ +--------------------+----------------------------- ------------+---------¦ ¦ ALTER TABLE ¦ Altera la descripción de una tabla ¦ p. 5.4 ¦ +--------------------+----------------------------- ------------+---------¦ ¦ BEGIN DECLARE ¦ Marca el comienzo de una sec ción de ¦ p. 5.5 ¦ ¦ SECTION ¦ declaración SQL ¦ ¦ +--------------------+----------------------------- ------------+---------¦ ¦ CALL ¦ Llama a un procedimiento ¦ p. 5.6 ¦ +--------------------+----------------------------- ------------+---------¦ ¦ CLOSE ¦ Cierra un cursor ¦ p. 5.7 ¦ +--------------------+----------------------------- ------------+---------¦ ¦ COMMENT ON ¦ Sustituye o añade un comenta rio a la ¦ p. 5.8 ¦| ¦ ¦ descripción de una columna, índice, ¦ ¦ ¦ ¦ paquete, parámetro, procedim iento, ¦ ¦ ¦ ¦ tabla o vista ¦ ¦ +--------------------+----------------------------- ------------+---------¦ ¦ COMMIT ¦ Finaliza una unidad de traba jo y ¦ p. 5.9 ¦ ¦ ¦ compromete los cambios de la base de ¦ ¦ ¦ ¦ datos realizados por dicha u nidad de ¦ ¦ ¦ ¦ trabajo ¦ ¦ +--------------------+----------------------------- ------------+---------¦ ¦ CONNECT (Tipo 1) ¦ Efectúa la conexión a un ser vidor de la ¦ p. 5.10 ¦ ¦ ¦ aplicación y establece las r eglas para ¦ ¦ ¦ ¦ la unidad de trabajo remota ¦ ¦ +--------------------+----------------------------- ------------+---------¦ ¦ CONNECT (Tipo 2) ¦ Realiza la conexión a un ser vidor de la ¦ p. 5.11 ¦ ¦ ¦ aplicación y establece las r eglas para ¦ ¦ ¦ ¦ las unidades de trabajo dist ribuidas ¦ ¦ ¦ ¦ dirigidas por la aplicación. ¦ ¦ +--------------------+----------------------------- ------------+---------¦ ¦ CREATE COLLECTION ¦ Define una colección ¦ p. 5.12 ¦ ¦ ¦ ¦ ¦ +--------------------+----------------------------- ------------+---------¦ ¦ CREATE INDEX ¦ Define un índice en una tabl a ¦ p. 5.13 ¦ ¦ ¦ ¦ ¦ +--------------------+----------------------------- ------------+---------¦ ¦ CREATE PROCEDURE ¦ Define un procedimiento exte rno ¦ p. 5.14 ¦ ¦ ¦ ¦ ¦ +--------------------+----------------------------- ------------+---------¦ ¦ CREATE SCHEMA ¦ Define una colección y un co njunto de ¦ p. 5.15 ¦ ¦ ¦ sentencias DDL relacionadas con dicha ¦ ¦ ¦ ¦ colección ¦ ¦ +--------------------+----------------------------- ------------+---------¦ ¦ CREATE TABLE ¦ Define una tabla ¦ p. 5.16 ¦ ¦ ¦ ¦ ¦ +--------------------+----------------------------- ------------+---------¦ ¦ CREATE VIEW ¦ Define una vista de una o má s tablas o ¦ p. 5.17 ¦ ¦ ¦ vistas ¦ ¦ +--------------------+----------------------------- ------------+---------¦ ¦ DECLARE CURSOR ¦ Define un cursor SQL ¦ p. 5.18 ¦ ¦ ¦ ¦ ¦ +--------------------+----------------------------- ------------+---------¦ ¦ DECLARE PROCEDURE ¦ Define un procedimiento exte rno ¦ p. 5.19 ¦ ¦ ¦ ¦ ¦ +--------------------+----------------------------- ------------+---------¦ ¦ DECLARE STATEMENT ¦ Declara los nombres utilizad os para ¦ p. 5.20 ¦ ¦ ¦ identificar sentencias SQL p reparadas ¦ ¦ +--------------------+----------------------------- ------------+---------¦ ¦ DECLARE VARIABLE ¦ Declara un subtipo o un CCSI D distintos ¦ p. 5.21 ¦ ¦ ¦ al valor por omisión de una variable ¦ ¦ ¦ ¦ del lenguaje principal ¦ ¦ +--------------------+----------------------------- ------------+---------¦ ¦ DELETE ¦ Suprime una o más filas de u na tabla ¦ p. 5.22 ¦ ¦ ¦ ¦ ¦ +--------------------+----------------------------- ------------+---------¦ ¦ DESCRIBE ¦ Describe las columnas de res ultado de ¦ p. 5.23 ¦ ¦ ¦ una sentencia preparada ¦ ¦ +--------------------+----------------------------- ------------+---------¦ ¦ DESCRIBE TABLE ¦ Obtiene información sobre un a tabla o ¦ p. 5.24 ¦ ¦ ¦ vista ¦ ¦ +--------------------+----------------------------- ------------+---------¦ ¦ DISCONNECT ¦ Finaliza de forma inmediata una o más ¦ p. 5.25 ¦ ¦ ¦ conexiones ¦ ¦ +--------------------+----------------------------- ------------+---------¦| ¦ DROP ¦ Suprime una colección, índic e, paquete, ¦ p. 5.26 ¦| ¦ ¦ procedimiento, tabla o vista ¦ ¦ +--------------------+----------------------------- ------------+---------¦ ¦ END DECLARE ¦ Marca el final de una secció n de ¦ p. 5.27 ¦ ¦ SECTION ¦ declaración SQL ¦ ¦ +--------------------+----------------------------- ------------+---------¦ ¦ EXECUTE ¦ Ejecuta una sentencia SQL pr eparada ¦ p. 5.28 ¦ ¦ ¦ ¦ ¦ +--------------------+----------------------------- ------------+---------¦ ¦ EXECUTE IMMEDIATE ¦ Prepara y ejecuta una senten cia SQL ¦ p. 5.29 ¦ ¦ ¦ ¦ ¦ +--------------------+----------------------------- ------------+---------¦ ¦ FETCH ¦ Sitúa un cursor en una fila de la tabla ¦ p. 5.30 ¦ ¦ ¦ de resultados; también puede asignar ¦ ¦ ¦ ¦ valores procedentes de una o más filas ¦ ¦

DB2/400 Manual de Consulta SQL V3R7 Capítulo 5. Sentencias

© Copyright IBM Corp. 1995, 1996 5.0 - 1

Page 390: DB2/400 Manual de Consulta SQLmarce.com/docs/systems/manuales/db2_400_manual_consulta_sql_v3r7.pdf · VERSION Nota de Versión Segunda edición (noviembre de 1996) Este manual es

¦ ¦ de la tabla de resultados a variables ¦ ¦ ¦ ¦ del lenguaje principal. ¦ ¦ +--------------------+----------------------------- ------------+---------¦ ¦ GRANT (Privilegios ¦ Otorga privilegios sobre un paquete ¦ p. 5.31 ¦ ¦ de paquete) ¦ ¦ ¦ +--------------------+----------------------------- ------------+---------¦ ¦ GRANT (Privilegios ¦ Otorga privilegios sobre una tabla o ¦ p. ¦ ¦ de tabla) ¦ vista ¦ 5.31.6 ¦ +--------------------+----------------------------- ------------+---------¦ ¦ INCLUDE ¦ Inserta declaraciones en un programa ¦ p. 5.33 ¦ ¦ ¦ fuente ¦ ¦ +--------------------+----------------------------- ------------+---------¦ ¦ INSERT ¦ Inserta una o más filas en u na tabla ¦ p. 5.34 ¦ ¦ ¦ ¦ ¦ +--------------------+----------------------------- ------------+---------¦ ¦ LABEL ON ¦ Sustituye o añade una etique ta a la ¦ p. 5.35 ¦ ¦ ¦ descripción de una tabla, vi sta, ¦ ¦ ¦ ¦ columna o paquete SQL ¦ ¦ +--------------------+----------------------------- ------------+---------¦ ¦ LOCK TABLE ¦ O bien impide que los proces os ¦ p. 5.36 ¦ ¦ ¦ concurrentes modifiquen una tabla o ¦ ¦ ¦ ¦ bien impide que la utilicen ¦ ¦ +--------------------+----------------------------- ------------+---------¦ ¦ OPEN ¦ Abre un cursor ¦ p. 5.37 ¦ ¦ ¦ ¦ ¦ +--------------------+----------------------------- ------------+---------¦ ¦ PREPARE ¦ Prepara una sentencia SQL pa ra su ¦ p. 5.38 ¦ ¦ ¦ ejecución ¦ ¦ +--------------------+----------------------------- ------------+---------¦ ¦ RELEASE ¦ Coloca una o varias conexion es en el ¦ p. 5.39 ¦ ¦ ¦ estado pendiente de liberaci ón ¦ ¦ +--------------------+----------------------------- ------------+---------¦| ¦ RENAME ¦ Redenomina una tabla, vista o índice. ¦ p. 5.40 ¦ ¦ ¦ ¦ ¦ +--------------------+----------------------------- ------------+---------¦ ¦ REVOKE ¦ Revoca el privilegio de ejec utar ¦ p. 5.41 ¦ ¦ (Privilegios de ¦ sentencias en un paquete ¦ ¦ ¦ paquete) ¦ ¦ ¦ +--------------------+----------------------------- ------------+---------¦ ¦ REVOKE ¦ Revoca los privilegios sobre una tabla ¦ p. 5.42 ¦ ¦ (Privilegios de ¦ o vista ¦ ¦ ¦ tabla) ¦ ¦ ¦ +--------------------+----------------------------- ------------+---------¦ ¦ ROLLBACK ¦ Finaliza una unidad de traba jo y ¦ p. 5.43 ¦ ¦ ¦ restituye los cambios de la base de ¦ ¦ ¦ ¦ datos realizados por dicha u nidad de ¦ ¦ ¦ ¦ trabajo ¦ ¦ +--------------------+----------------------------- ------------+---------¦ ¦ SELECT INTO ¦ Especifica una tabla de resu ltados de ¦ p. 5.44 ¦ ¦ ¦ no más de una fila y asigna los valores ¦ ¦ ¦ ¦ a variables del lenguaje pri ncipal ¦ ¦ +--------------------+----------------------------- ------------+---------¦ ¦ SET CONNECTION ¦ Establece el servidor de la aplicación ¦ p. 5.45 ¦ ¦ ¦ del proceso identificando un a de sus ¦ ¦ ¦ ¦ conexiones existentes ¦ ¦ +--------------------+----------------------------- ------------+---------¦ ¦ SET OPTION ¦ Establece las opciones para procesar ¦ p. 5.46 ¦ ¦ ¦ sentencias SQL ¦ ¦ +--------------------+----------------------------- ------------+---------¦ ¦ SET RESULT SETS ¦ Identifica los conjuntos de resultados ¦ p. 5.47 ¦ ¦ ¦ en un procedimiento ¦ ¦ +--------------------+----------------------------- ------------+---------¦ ¦ SET TRANSACTION ¦ Cambia el nivel de aislamien to para la ¦ p. 5.48 ¦ ¦ ¦ unidad de trabajo actual ¦ ¦ +--------------------+----------------------------- ------------+---------¦ ¦ UPDATE ¦ Actualiza los valores de una o más ¦ p. 5.49 ¦ ¦ ¦ columnas en una o más filas de una ¦ ¦ ¦ ¦ tabla ¦ ¦ +--------------------+----------------------------- ------------+---------¦ ¦ WHENEVER ¦ Define las acciones que se h an de ¦ p. 5.50 ¦ ¦ ¦ llevar a cabo tomando como b ase los ¦ ¦ ¦ ¦ códigos de retorno SQL ¦ ¦ +-------------------------------------------------- ----------------------+ Subtemas 5.1 Cómo se invocan las sentencias SQL 5.2 Códigos de retorno SQL 5.3 Comentarios SQL 5.4 ALTER TABLE 5.5 BEGIN DECLARE SECTION 5.6 CALL 5.7 CLOSE 5.8 COMMENT ON 5.9 COMMIT 5.10 CONNECT (Tipo 1) 5.11 CONNECT (Tipo 2) 5.12 CREATE COLLECTION 5.13 CREATE INDEX 5.14 CREATE PROCEDURE 5.15 CREATE SCHEMA 5.16 CREATE TABLE 5.17 CREATE VIEW 5.18 DECLARE CURSOR 5.19 DECLARE PROCEDURE 5.20 DECLARE STATEMENT 5.21 DECLARE VARIABLE 5.22 DELETE 5.23 DESCRIBE

DB2/400 Manual de Consulta SQL V3R7 Capítulo 5. Sentencias

© Copyright IBM Corp. 1995, 1996 5.0 - 2

Page 391: DB2/400 Manual de Consulta SQLmarce.com/docs/systems/manuales/db2_400_manual_consulta_sql_v3r7.pdf · VERSION Nota de Versión Segunda edición (noviembre de 1996) Este manual es

5.24 DESCRIBE TABLE 5.25 DISCONNECT 5.26 DROP 5.27 END DECLARE SECTION 5.28 EXECUTE 5.29 EXECUTE IMMEDIATE 5.30 FETCH 5.31 GRANT (Privilegios de paquete) 5.32 GRANT (Privilegios de tabla) 5.33 INCLUDE 5.34 INSERT 5.35 LABEL ON 5.36 LOCK TABLE 5.37 OPEN 5.38 PREPARE 5.39 RELEASE 5.40 RENAME 5.41 REVOKE (Privilegios de paquete) 5.42 REVOKE (Privilegios de tabla) 5.43 ROLLBACK 5.44 SELECT INTO 5.45 SET CONNECTION 5.46 SET OPTION 5.47 SET RESULT SETS 5.48 SET TRANSACTION 5.49 UPDATE 5.50 WHENEVER

DB2/400 Manual de Consulta SQL V3R7 Capítulo 5. Sentencias

© Copyright IBM Corp. 1995, 1996 5.0 - 3

Page 392: DB2/400 Manual de Consulta SQLmarce.com/docs/systems/manuales/db2_400_manual_consulta_sql_v3r7.pdf · VERSION Nota de Versión Segunda edición (noviembre de 1996) Este manual es

5.1 Cómo se invocan las sentencias SQL Las sentencias SQL descritas en este capítulo se cl asifican en ejecutables y no ejecutables . El apartado Invocación que aparece en la descripción de cada sentencia indica si la sentencia es ejecutable o no. Una sentencia ejecutable puede invocarse de una de las siguientes maneras: � Hospedada en un programa de aplicación � Preparada y ejecutada dinámicamente � Emitida interactivamente Nota: Las sentencias hospedadas en REXX o procesadas ut ilizando RUNSQLSTM se preparan y ejecutan dinámicamente. Dependiendo de la sentencia, podrá utilizar todos o bien sólo algunos de estos métodos. El apartado Invocación de la descripción de cada sentencia le indica cuáles son los métodos que pueden utiliza rse. Una sentencia no ejecutable sólo puede hospedarse en un programa de aplicación. Además de las sentencias descritas en este capítulo , existe una estructura de sentencia SQL más: la sentencia-select . Véase el apartado "sentencia select" en el tema 4.4 . No se ha incluido en este capítulo porque se utiliza de una forma distinta a la de las demás sen tencias. Una sentencia-select puede invocarse de una de las formas siguientes: � Incluida en DECLARE CURSOR y ejecutada implícita mente por OPEN � Preparada dinámicamente, referenciada en DECLARE CURSOR y ejecutada implícitamente por OPEN � Emitida interactivamente Los dos primeros métodos se denominan, respectivame nte, la invocación estática y dinámica de la sentencia-select . Subtemas 5.1.1 Hospedar una sentencia en un programa de aplicació n 5.1.2 Preparación y ejecución dinámicas 5.1.3 Invovación estática de una sentencia-select 5.1.4 Invocación dinámica de una sentencia-select 5.1.5 Invocación interactiva

DB2/400 Manual de Consulta SQL V3R7 Cómo se invocan las sentencias SQL

© Copyright IBM Corp. 1995, 1996 5.1 - 1

Page 393: DB2/400 Manual de Consulta SQLmarce.com/docs/systems/manuales/db2_400_manual_consulta_sql_v3r7.pdf · VERSION Nota de Versión Segunda edición (noviembre de 1996) Este manual es

5.1.1 Hospedar una sentencia en un programa de apli cación Las sentencias SQL pueden incluirse en un programa fuente que se someterá al precompilador utilizando los mandatos CRTSQLCBL, CRTSQLCBLI, CRTSQLCI,| CRTSQLFTN, CRTSQLPLI, CRTSQLRPG o CRTSQLRPGI. De t ales sentencias se dice que están hospedadas en el programa. Una sentencia hospedada puede situarse en cualquier parte del programa en el que está permitida una sentencia del lenguaje principal. Cada sentencia h ospedada debe ir precedida de las palabras clave EXEC y SQL. Sentencias ejecutables : Una sentencia ejecutable hospedada en un program a de aplicación se ejecuta cada vez que se ejecutaría una sentencia del lenguaje principal si se especificase en el mismo l ugar. Esto significa que una sentencia contenida en un bucle se ejecuta cada vez que se ejecuta el bucle y una sentencia contenida en una construcc ión condicional se ejecuta sólo cuando se cumple la condición. Una sentencia hospedada puede contener referencias a variables del lenguaje principal. Una variable del lenguaje prin cipal referenciada de esta manera puede utilizarse de dos maneras distint as: � Como entrada (el valor actual de la variable del lenguaje principal se utiliza en la ejecución de la sentencia) � Como salida (se asigna un valor nuevo a la varia ble como resultado de la ejecución de la sentencia) En concreto, todas las referencias a las variables del lenguaje principal en expresiones y predicados se sustituyen de forma efectiva por los valores actuales de las variables, es decir, las va riables se utilizan como entrada. El tratamiento de otras referencias se describe individualmente para cada sentencia. Todas las sentencias ejecutables deben ir seguidas de la comprobación de un código de retorno SQL. De forma alternativa, se puede utilizar la sentencia WHENEVER (que en sí misma no es ejecutabl e) para cambiar el flujo del control inmediatamente después de la ejec ución de una sentencia hospedada. Los objetos a los que se hace referencia en sentenc ias SQL no es preciso que existan al preparar las sentencias. Sentencias no ejecutables : Una sentencia no ejecutable hospedada la procesa sólo el precompilador. Este informa de cua lquier error que encuentre en ella. La sentencia no se ejecuta nunca y actúa como una no operación si se coloca entre sentencias ejecutables del programa de aplicación. Por tanto, dichas sentencias no deben ir seguidas de una comprobación de un código de retorno SQL.

DB2/400 Manual de Consulta SQL V3R7 Hospedar una sentencia en un programa de aplicación

© Copyright IBM Corp. 1995, 1996 5.1.1 - 1

Page 394: DB2/400 Manual de Consulta SQLmarce.com/docs/systems/manuales/db2_400_manual_consulta_sql_v3r7.pdf · VERSION Nota de Versión Segunda edición (noviembre de 1996) Este manual es

5.1.2 Preparación y ejecución dinámicas Un programa de aplicación puede construir dinámicam ente una sentencia SQL con el formato de una serie de caracteres colocada en una variable del lenguaje principal. En general, la sentencia se co nstruye a partir de ciertos datos que el programa tiene disponibles (po r ejemplo, la entrada procedente de una estación de trabajo). La sentenc ia puede prepararse para su ejecución utilizando la sentencia (hospedad a) PREPARE y ejecutarse con la sentencia (hospedada) EXECUTE. Alternativam ente, puede utilizarse la sentencia (hospedada) EXECUTE IMMEDIATE para pre parar y ejecutar la sentencia en un único paso. Una sentencia preparada dinámicamente no debe conte ner referencias a variables del lenguaje principal. En su lugar, pue de contener marcadores de parámetros. Consulte el apartado "PREPARE" en el tema 5.38 para saber cuáles son las reglas que conciernen a esta sustitu ción. Al ejecutarse la sentencia preparada, los marcadores de parámetros s e sustituyen de forma efectiva por los valores actuales de las variables del lenguaje principal especificadas en la sentencia EXECUTE. Consulte el apartado "EXECUTE" en el tema 5.28 para saber cuáles son las reglas que conciernen a esta sustitución. Una vez preparada la sentencia, podrá ejecutarse varias veces con diferentes valores de las variables del l enguaje principal. Los marcadores de parámetros no están permitidos en EXE CUTE IMMEDIATE. La ejecución satisfactoria o insatisfactoria de la sentencia viene indicada por el establecimiento de un código de ret orno SQL en la SQLCA tras la sentencia EXECUTE (o EXECUTE IMMEDIATE). D ebe comprobar el código de retorno SQL según lo descrito anteriormente refe rente a las sentencias hospedadas. Véase el tema "Códigos de retorno SQL" en el tema 5.2 para más información.

DB2/400 Manual de Consulta SQL V3R7 Preparación y ejecución dinámicas

© Copyright IBM Corp. 1995, 1996 5.1.2 - 1

Page 395: DB2/400 Manual de Consulta SQLmarce.com/docs/systems/manuales/db2_400_manual_consulta_sql_v3r7.pdf · VERSION Nota de Versión Segunda edición (noviembre de 1996) Este manual es

5.1.3 Invovación estática de una sentencia-select Una sentencia-select puede incluirse como parte de la sentencia (no ejecutable) DECLARE CURSOR. Tal sentencia se ejecu tará cada vez que se abra el cursor por medio de la sentencia (hospedada ) OPEN. Una vez abierto el cursor, la tabla de resultados puede rec uperarse fila por fila en sucesivas ejecuciones de la sentencia FETCH o bi en de varias en varias filas utilizando la sentencia FETCH multifila. Utilizada de esta manera, la sentencia-select puede contener referencias a variables del lenguaje principal. Esta referencias se sustituyen de forma efectiva por los valores que tengan las variables e n el momento de ejecutar OPEN.

DB2/400 Manual de Consulta SQL V3R7 Invovación estática de una sentencia-select

© Copyright IBM Corp. 1995, 1996 5.1.3 - 1

Page 396: DB2/400 Manual de Consulta SQLmarce.com/docs/systems/manuales/db2_400_manual_consulta_sql_v3r7.pdf · VERSION Nota de Versión Segunda edición (noviembre de 1996) Este manual es

5.1.4 Invocación dinámica de una sentencia-select Un programa de aplicación puede construir dinámicam ente una sentencia-select con el formato de una serie de caracteres colocada en una variable del lenguaje principal. En general, la se ntencia se construye a partir de ciertos datos que el programa tiene dispo nibles (por ejemplo, una consulta obtenida de una estación de trabajo). La sentencia se ejecutará cada vez que se abra el cursor mediante l a sentencia (hospedada) OPEN. Una vez abierto el cursor, la tabla de resul tados puede recuperarse fila por fila en sucesivas ejecuciones de la senten cia FETCH o bien de varias en varias filas utilizando la sentencia FETC H multifila. Utilizada de esta manera, la sentencia-select no debe contener referencias a variables del lenguaje principal. En su lugar, p uede contener marcadores de parámetros. Consulte el apartado "PREPARE" en el tema 5.38 para saber cuáles son las reglas que conciernen a e sta sustitución. Estos se sustituyen de forma efectiva por los valores de las variables del lenguaje principal especificadas en la sentencia OP EN. Véase el apartado "OPEN" en el tema 5.37 para saber cuáles son las reglas que conciernen a esta sustitución.

DB2/400 Manual de Consulta SQL V3R7 Invocación dinámica de una sentencia-select

© Copyright IBM Corp. 1995, 1996 5.1.4 - 1

Page 397: DB2/400 Manual de Consulta SQLmarce.com/docs/systems/manuales/db2_400_manual_consulta_sql_v3r7.pdf · VERSION Nota de Versión Segunda edición (noviembre de 1996) Este manual es

5.1.5 Invocación interactiva Existe la posibilidad de introducir sentencias SQL desde una estación de trabajo, posibilidad que forma parte parte de la ar quitectura del gestor de base de datos. El programa bajo licencia DB2 pa ra OS/400 proporciona el mandato Iniciar Lenguaje de Consulta Estructurad a (STRSQL) y el mandato Iniciar Gestor de Consultas (STRQM) para este recur so. También hay disponibles otros productos. De las sentencias ent radas de esta forma se dice que se han emitido interactivamente. Una sent encia que no se pueda preparar dinámicamente no puede emitirse interactiv amente, a excepción de las sentencias de gestión de conexión (CONNECT, DIS CONNECT, RELEASE y SET CONNECTION). Las sentencias emitidas interactivamente deben ser sentencias ejecutables que no contengan marcadores de parámetros o referen cias a variables del lenguaje principal, ya que éstos sólo tienen sentid o en el contexto de un programa de aplicación.

DB2/400 Manual de Consulta SQL V3R7 Invocación interactiva

© Copyright IBM Corp. 1995, 1996 5.1.5 - 1

Page 398: DB2/400 Manual de Consulta SQLmarce.com/docs/systems/manuales/db2_400_manual_consulta_sql_v3r7.pdf · VERSION Nota de Versión Segunda edición (noviembre de 1996) Este manual es

5.2 Códigos de retorno SQL Un programa de aplicación que contenga sentencias S QL ejecutables debe facilitar al menos uno de los elementos siguientes: � Una estructura llamada SQLCA � Una variable de entero autónoma llamada SQLCODE � Una variable CHAR(5) (CHAR(6) en C) autónoma lla mada SQLSTATE Pueden facilitarse tanto el SQLCODE como el SQLSTAT E autónomos. Si se facilita una SQLCA, no se puede facilitar ni un SQL CODE ni un SQLSTATE autónomos. En una estructura del lenguaje principa l no debe declararse ningún SQLCODE ni SQLSTATE autónomos. REXX y RPG facilitan automáticamente una SQLCA. En otros lenguajes, la SQLCA puede obtenerse utilizando la sentencia INCLU DE SQLCA. INCLUDE SQLCA no debe utilizarse si se facilita un SQLCODE o un SQLSTATE autónomo. La SQLCA incluye una variable de entero llamada SQL CODE (SQLCOD en RPG) y una variable de serie de caracteres llamada SQLSTAT E (SQLSTT en RPG). La opción de facilitar un SQLSTATE autónomo en luga r de una SQLCA permite la conformidad con el estándar ISO/ANSI para SQL. La opción de facilitar un SQLCODE autónomo en lugar de un SQLSTATE autónom o es una característica desaprobada en el estándar ISO/ANSI para SQL. Si s e desea la conformidad con el estándar ISO/ANSI para SQL, se debe utilizar el SQLSTATE autónomo. Subtemas 5.2.1 SQLCODE 5.2.2 SQLSTATE

DB2/400 Manual de Consulta SQL V3R7 Códigos de retorno SQL

© Copyright IBM Corp. 1995, 1996 5.2 - 1

Page 399: DB2/400 Manual de Consulta SQLmarce.com/docs/systems/manuales/db2_400_manual_consulta_sql_v3r7.pdf · VERSION Nota de Versión Segunda edición (noviembre de 1996) Este manual es

5.2.1 SQLCODE Independientemente de si el programa de aplicación facilita o no una SQLCA o una variable autónoma, el gestor de bases de dato s establece el SQLCODE después de la ejecución de cada sentencia SQL. DB2 para OS/400 se ajusta al estándar ISO/ANSI para SQL de la siguiente forma : � Si SQLCODE = 0 y SQLWARN0 está en blanco, la eje cución ha sido satisfactoria. � Si SQLCODE = 100, no se han encontrado datos. P or ejemplo, una sentencia FETCH no ha devuelto ningún dato porq ue el cursor estaba situado detrás de la última fila de la tabla de resultados. � Si SQLCODE > 0 y no = 100, la ejecución ha sido satisfactoria con un aviso. � Si SQLCODE = 0 y SQLWARN0 = 'W', la ejecución ha sido satisfactoria con un aviso. � Si SQLCODE < 0, la ejecución no ha sido satisfac toria. Se proporciona una lista completa de los SQLCODE de DB2 para OS/400 y sus SQLSTATE correspondientes en el Apéndice B del manu al DB/2 for OS/400 SQL Programming , SC41-4611.

DB2/400 Manual de Consulta SQL V3R7 SQLCODE

© Copyright IBM Corp. 1995, 1996 5.2.1 - 1

Page 400: DB2/400 Manual de Consulta SQLmarce.com/docs/systems/manuales/db2_400_manual_consulta_sql_v3r7.pdf · VERSION Nota de Versión Segunda edición (noviembre de 1996) Este manual es

5.2.2 SQLSTATE Independientemente de si el programa de aplicación facilita o no una SQLCA o una variable autónoma, el gestor de bases de dato s también establece el SQLSTATE después de la ejecución de cada sentencia SQL. De este modo, los programas de aplicación pueden comprobar la ejecuci ón de las sentencias SQL verificando cómo está el SQLSTATE en lugar de c omprobar el estado del SQLCODE. SQLSTATE da a los programas de aplicación códigos c omunes para condiciones de error comunes. Más aún, SQLSTATE está diseñado para que los programas de aplicación puedan comprobar errores o clases de errores específicos. El esquema es el mismo para todos los gestores de b ases de datos y está basado en el estándar ISO/ANSI propuesto. Se propo rciona una lista completa de las clases de SQLSTATE y los SQLSTATE a sociados con cada SQLCODE en el Apéndice B del manual DB/2 for OS/400 SQL Programming , SC41-4611.

DB2/400 Manual de Consulta SQL V3R7 SQLSTATE

© Copyright IBM Corp. 1995, 1996 5.2.2 - 1

Page 401: DB2/400 Manual de Consulta SQLmarce.com/docs/systems/manuales/db2_400_manual_consulta_sql_v3r7.pdf · VERSION Nota de Versión Segunda edición (noviembre de 1996) Este manual es

5.3 Comentarios SQL Las sentencias estáticas SQL pueden contener coment arios del lenguaje principal o del SQL. Los comentarios SQL van prece didos por dos guiones (--). Estas son las reglas que rigen la utilización de lo s comentarios SQL: � Los dos guiones deben estar en la misma línea y no pueden ir separados por un espacio. � Los comentarios pueden empezar allí donde haya u n espacio válido (excepto dentro de un símbolo delimitador o ent re 'EXEC' y 'SQL'). � Los comentarios no pueden continuar en la línea siguiente. � No se pueden incluir comentarios en sentencias p reparadas dinámicamente (utilizando PREPARE o EXECUTE IMM EDIATE). � En COBOL, los guiones deben ir precedidos por un espacio. Subtemas 5.3.1 Ejemplo

DB2/400 Manual de Consulta SQL V3R7 Comentarios SQL

© Copyright IBM Corp. 1995, 1996 5.3 - 1

Page 402: DB2/400 Manual de Consulta SQLmarce.com/docs/systems/manuales/db2_400_manual_consulta_sql_v3r7.pdf · VERSION Nota de Versión Segunda edición (noviembre de 1996) Este manual es

5.3.1 Ejemplo El ejemplo siguiente muestra cómo incluir comentari os en una sentencia: CREATE VIEW PRY_MAXPER -- PROYECTOS CON MAS PERSONAL DE SOPORTE AS SELECT NUMPRO, NOMBREPRO -- NUMERO Y NOMBRE DEL PROYECTO FROM PROYECTO WHERE NUMDEPT = 'E21' -- COD DEPTO SOPORTE DE SISTEMAS AND PRPERSON > 1

DB2/400 Manual de Consulta SQL V3R7 Ejemplo

© Copyright IBM Corp. 1995, 1996 5.3.1 - 1

Page 403: DB2/400 Manual de Consulta SQLmarce.com/docs/systems/manuales/db2_400_manual_consulta_sql_v3r7.pdf · VERSION Nota de Versión Segunda edición (noviembre de 1996) Este manual es

5.4 ALTER TABLE La sentencia ALTER TABLE añade, elimina o altera un a columna de una tabla existente, añade restricciones de unicidad o de ref erencia y añade o elimina una clave primaria, exclusiva o foránea. Subtemas 5.4.1 Invocación 5.4.2 Autorización 5.4.3 Sintaxis 5.4.4 Descripción 5.4.5 ADD COLUMN 5.4.6 ALTER COLUMN 5.4.7 DROP COLUMN 5.4.8 ADD Restricción-unicidad 5.4.9 ADD restricción-referencial 5.4.10 DROP 5.4.11 Notas 5.4.12 Efectos en cascada 5.4.13 Ejemplos

DB2/400 Manual de Consulta SQL V3R7 ALTER TABLE

© Copyright IBM Corp. 1995, 1996 5.4 - 1

Page 404: DB2/400 Manual de Consulta SQLmarce.com/docs/systems/manuales/db2_400_manual_consulta_sql_v3r7.pdf · VERSION Nota de Versión Segunda edición (noviembre de 1996) Este manual es

5.4.1 Invocación Esta sentencia puede hospedarse en un programa de a plicación o emitirse interactivamente. Es una sentencia ejecutable que puede prepararse dinámicamente.

DB2/400 Manual de Consulta SQL V3R7 Invocación

© Copyright IBM Corp. 1995, 1996 5.4.1 - 1

Page 405: DB2/400 Manual de Consulta SQLmarce.com/docs/systems/manuales/db2_400_manual_consulta_sql_v3r7.pdf · VERSION Nota de Versión Segunda edición (noviembre de 1996) Este manual es

5.4.2 Autorización Los privilegios del ID de autorización de la senten cia deben incluir al menos uno de los privilegios siguientes: � Para la tabla identificada en la sentencia, - El privilegio ALTER sobre la tabla y - La autorización del sistema *EXECUTE sobre la biblioteca que contiene la tabla � Autorización de administrador El ID de autorización de la sentencia tiene el priv ilegio ALTER sobre la tabla si una de las siguientes condiciones es ciert a: � Es el propietario de la tabla. � Se le ha otorgado el privilegio ALTER para utili zar la tabla. � Se le han otorgado las autorizaciones del sistem a *OBJALTER u *OBJMGT para utilizar la tabla Para definir una clave foránea, los privilegios que posea el ID de autorización de la sentencia deben incluir al menos uno de los siguientes sobre la tabla padre: � El privilegio REFERENCES o la autorización de g estión de objetos correspondiente a la tabla � La propiedad de la tabla � Autorización de administrador El ID de autorización de la sentencia tiene el priv ilegio REFERENCES sobre la tabla cuando se cumple una de las siguientes con diciones: � Es el propietario de la tabla. � Se le ha otorgado el privilegio REFERENCES sobre la tabla. � Se le han otorgado las autorizaciones del sistem a *OBJREF u *OBJMGT para la tabla.

DB2/400 Manual de Consulta SQL V3R7 Autorización

© Copyright IBM Corp. 1995, 1996 5.4.2 - 1

Page 406: DB2/400 Manual de Consulta SQLmarce.com/docs/systems/manuales/db2_400_manual_consulta_sql_v3r7.pdf · VERSION Nota de Versión Segunda edición (noviembre de 1996) Este manual es

5.4.3 Sintaxis +-------------------------------------------------- --------------------------------------------------- ----------------------+ ¦ ¦ ¦ <----------------- --------------------------------------------------- -----------+ ¦ ¦ +- COLUMN-+ ¦ ¦ ¦ >>-- ALTER TABLE-- nombre-tabla ------- ADD-------------- definición-columna ------------------------------------------------>< ¦ ¦ ¦ +- COLUMN-+ <-------------------------+ (1) ¦ ¦ ¦ +- ALTER-------------- nombre-col ---- SET----- DATA TYPE-- tipo-datos ----------¦ ¦ ¦ ¦ ¦ +- cláusula-default ------¦ ¦ ¦ ¦ ¦ ¦ ¦ +- NOT NULL--------------+ ¦ ¦ ¦ ¦ ¦ ¦ <------------+ (2) ¦ ¦ ¦ ¦ ¦ +- DROP----- DEFAULT---------------------+ ¦ ¦ ¦ ¦ +- NOT NULL-+ ¦ ¦ ¦ ¦ +- COLUMN-+ +- CASCADE--+ ¦ ¦ ¦ +- DROP---------------- nombre-col --+----------+----------------------------¦ ¦ ¦ ¦ +- RESTRICT-+ ¦ ¦ ¦ ¦ (3) ¦ ¦ ¦ +- ADD------- restricción-unicidad ------------------------------------------¦ ¦ ¦ ¦ +- restricción-referencia -+ ¦ ¦ ¦ ¦ +- CASCADE--+ ¦ ¦ ¦ +- DROP---- PRIMARY KEY----------------------------+----------+----------- --+ ¦ ¦ +--- FOREIGN KEY---- nombre-restricción -+ +- RESTRICT-+ ¦ ¦ +- UNIQUE------¦ ¦ ¦ +- CONSTRAINT--+ ¦ ¦ ¦ ¦ Notas: ¦ ¦ (1) Cada una de las cláusulas solo se puede espe cificar una vez. Si se especifica DATA TYPE, debe especificarse en ¦ ¦ primer lugar. ¦ ¦ ¦ ¦ (2) Cada una de las cláusulas solo se puede espe cificar una vez. ¦ ¦ ¦ ¦ (3) Si se trata de la primera cláusula de la sen tencia ALTER TABLE, la palabra clave ADD es opciona l, pero muy ¦ ¦ aconsejable. De lo contrario, es obligatori a. ¦ ¦ ¦ +-------------------------------------------------- --------------------------------------------------- ----------------------+ Figura 10. Sintaxis de Alter Table +-------------------------------------------------- --------------------------------------------------- ----------------------+ ¦ ¦ ¦ ¦ ¦ ¦ ¦ definición-columna: ¦ ¦ +-- nombre-col ----------------------------------------------- tipo-datos --------------------------------------------------> ¦ ¦ ¦ +- COLUMN-+ ¦ ¦ ¦ +- FOR-------------- nombre-columna-sistema -+ ¦ ¦ ¦ ¦ <--------------------------------------------- ------------------+ ¦ ¦ >------------------------------------------------ --------------------------------------------------- --------------------¦ ¦ ¦ +- NOT NULL--------------------------------------------------- -¦ ¦ ¦ +- cláusula-default --------------------------------------------¦ ¦ ¦ +----------------------------------------- UNIQUE--------------+ ¦ ¦ +- CONSTRAINT-- nombre-restricción -+ ¦ +- PRIMARY KEY-+ ¦ ¦ ¦ +- cláusula-references -+ ¦ ¦ ¦ ¦ cláusula-default: ¦ ¦ +- WITH-+ ¦ ¦ +------------ DEFAULT--------------------------------------------------- -------------------------------------------------¦ ¦ ¦ +- constante ---------¦ ¦ ¦ +- NULL--------------¦ ¦ ¦ +- CURRENT_DATE------¦ ¦ ¦ +- CURRENT_TIME------¦ ¦ ¦ +- CURRENT_TIMESTAMP-+ ¦ ¦ ¦ ¦ tipo-datos: ¦ ¦ +------ INTEGER--------------------------------------------------- --------------------------------------------------- ----¦ ¦ ¦ ¦ +- INT -----+ ¦ ¦ ¦ +--- SMALLINT--------------------------------------------------- -------------------------------¦ ¦ ¦ +--- DECIMAL--------------------------------------------------- --------------------------------¦ ¦ ¦ ¦ +- DEC-----¦ +-(-- entero ----------------)-+ ¦ ¦ ¦ ¦ +- NUMERIC-+ +- , entero -+ ¦ ¦ ¦ +--- FLOAT--------------------------------------------------- ----------------------------------¦ ¦ ¦ ¦ ¦ +-(-- entero --)-+ ¦ ¦ ¦ ¦ ¦ +- REAL--------------------¦ ¦ ¦ ¦ ¦ ¦ +- PRECISION-+ ¦ ¦ ¦ ¦ ¦ +- DOUBLE------------------+ ¦ ¦ ¦ +----- CHARACTER--------------------------------------------------- ----------------------------¦ ¦ ¦ ¦ ¦ +- CHAR------+ +-(-- entero --)-+ ¦ +- FOR BIT DATA ---¦ ¦ ¦ ¦ ¦ +----- VARCHAR-------------------(-- entero --)--------------------------+ +- FOR SBCS DATA--¦ ¦ ¦ ¦ ¦ ¦ +--- CHARACTER---- VARYING-+ ¦ +- cláusula-allocate -+ +- FOR MIXED DATA-¦ ¦ ¦ ¦ ¦ ¦ +- CHAR------+ ¦ +- CCSID-- entero --+ ¦ ¦ ¦ ¦ +- LONG VARCHAR-----------------------------+ ¦ ¦ ¦ +----- GRAPHIC--------------------------------------------------- ------------------------------¦ ¦ ¦ ¦ ¦ +-(-- entero --)-+ ¦ +- CCSID-- entero -+ ¦ ¦ ¦ ¦ +----- VARGRAPHIC---------(-- entero --)--------------------------+ ¦ ¦ ¦ ¦ ¦ +- GRAPHIC VARYING-+ ¦ +- cláusula-allocate -+ ¦ ¦ ¦ ¦ +- LONG VARGRAPHIC-------------------+ ¦ ¦ ¦ +--- DATE--------------------------------------------------- -----------------------------------¦ ¦ ¦ +--- TIME--------------------------------------------------- -----------------------------------¦ ¦ ¦ +--- TIMESTAMP--------------------------------------------------- ------------------------------+ ¦ ¦ ¦ ¦ cláusula-allocate: ¦ ¦ +-- ALLOCATE-- (entero) --------------------------------------------------- ------------------------------------------------¦ ¦ ¦ ¦

DB2/400 Manual de Consulta SQL V3R7 Sintaxis

© Copyright IBM Corp. 1995, 1996 5.4.3 - 1

Page 407: DB2/400 Manual de Consulta SQLmarce.com/docs/systems/manuales/db2_400_manual_consulta_sql_v3r7.pdf · VERSION Nota de Versión Segunda edición (noviembre de 1996) Este manual es

¦ ¦ +-------------------------------------------------- --------------------------------------------------- ----------------------+ +-------------------------------------------------- ----------------------+ ¦ ¦ ¦ ¦ ¦ restricción-unicidad: ¦ ¦ +---------------------------------------- UNIQUE---------(------------> ¦ ¦ +- CONSTRAINT-- nombre-restricción -+ +- PRIMARY KEY-+ ¦ ¦ ¦ ¦ <-,----------+ ¦ ¦ >---- nombre-col ----)---------------------------------------------- ---¦ ¦ ¦ ¦ ¦ restricción-referencia: ¦ ¦ (1) ¦ ¦ +-------------------------------------- FOREIGN KEY-------------------> ¦ ¦ +- CONSTRAINT-- nombre-restricción -+ ¦ ¦ ¦ ¦ <-,----------+ ¦ ¦ >--(---- nombre-col ----)-- cláusula-references -------------------------¦ ¦ ¦ ¦ ¦ cláusula-references: ¦ ¦ +-- REFERENCES-- nombre-tabla ------------------------------------------> ¦ ¦ ¦ <-,----------+ ¦ ¦ ¦ +-(---- nombre-col ----)-+ ¦ ¦ ¦ ¦ (2) ¦ ¦ +- ON DELETE NO ACTION--------+ +- ON UPDATE NO ACTION-+ ¦ ¦ >--+----------------------------+--+------------- --------+-----------¦ ¦ ¦ +- ON DELETE---- RESTRICT------+ +- ON UPDATE RESTRICT--+ ¦ ¦ +- CASCADE-----¦ ¦ ¦ +- SET NULL----¦ ¦ ¦ +- SET DEFAULT-+ ¦ ¦ ¦ ¦ Notas: ¦ ¦ ¦ ¦ (1) Por motivos de compatibilidad con otros prod uctos, puede ¦ ¦ especificarse nombre-restricción (sin la pal abra clave ¦ ¦ CONSTRAINT) a continuación de FOREIGN KEY. ¦ ¦ ¦ ¦ (2) Las cláusulas ON DELETE y ON UPDATE pueden e specificarse en ¦ ¦ cualquier orden. ¦ ¦ ¦ ¦ ¦ ¦ ¦ ¦ ¦ +-------------------------------------------------- ----------------------+

DB2/400 Manual de Consulta SQL V3R7 Sintaxis

© Copyright IBM Corp. 1995, 1996 5.4.3 - 2

Page 408: DB2/400 Manual de Consulta SQLmarce.com/docs/systems/manuales/db2_400_manual_consulta_sql_v3r7.pdf · VERSION Nota de Versión Segunda edición (noviembre de 1996) Este manual es

5.4.4 Descripción nombre-tabla Identifica la tabla que desea alterar. El nombre-tabla debe identificar una tabla que exista en el servidor actual. No debe ser una vista o una tabla del catálogo.

DB2/400 Manual de Consulta SQL V3R7 Descripción

© Copyright IBM Corp. 1995, 1996 5.4.4 - 1

Page 409: DB2/400 Manual de Consulta SQLmarce.com/docs/systems/manuales/db2_400_manual_consulta_sql_v3r7.pdf · VERSION Nota de Versión Segunda edición (noviembre de 1996) Este manual es

5.4.5 ADD COLUMN definición-columna Añade una columna a la tabla. Si la tabla tien e filas, cada uno de los valores de la columna se establece en su va lor por omisión. Si anteriormente la tabla tenía n columnas, el ordinal de la nueva columna es n+1. El valor de n no debe ser mayor que 8000. La adición de una nueva columna no debe provoca r que el recuento total de bytes de todas las columnas sea mayor que 32 766 o, si se especifica una columna VARCHAR, 32740. nombre-columna Da nombre a la columna que desea añadir a l a tabla. No utilice el mismo nombre para más de una columna de la tabla o para un nombre-columna-sistema de la tabla. No cal ifique el nombre-columna . FOR COLUMN nombre-columna-sistema Proporciona un nombre del OS/400 para la co lumna. No utilice el mismo nombre para más de un nombre-columna o nombre-columna-sistema de la tabla. Si no se especifica el nombre-columna-siste ma y el nombre-columna no es un nombre-columna-sistema válido, se genera un nombre de columna del sistema. Para obtener más info rmación acerca de cómo se generan los nombres de columna del siste ma, consulte el apartado "Reglas para la generación de nombres de columna" en el tema 5.16.10.1 . tipo-datos Especifica el tipo de datos de la columna. Consulte el apartado "CREATE TABLE" en el tema 5.16 para obtener una descripción de tipo-datos . NOT NULL Impide que la columna contenga valores nulo s. La omisión de NOT NULL implica que la columna puede contener valores nulos. Si se especifica NOT NULL, DEFAULT también debe e specificarse. DEFAULT Especifica un valor por omisión para la col umna. Esta cláusula no| se puede especificar más de una vez en la definición-columna . Si| no se especifica ningún valor y la columna puede ser nula, el| valor por omisión es el valor nulo. Si no se especifica ningún| valor y la columna no puede ser nula, el va lor por omisión depende| del tipo de datos de la columna: Tipo de datos Valor por omisión Numérico 0 Serie de longitud fija Blancos Serie de longitud variable Una serie de longitud 0 Fecha Para las fila s existentes, una fecha correspondien te al 1 de enero 0001. Para las fila s añadidas, la fecha actual. Hora Para las fila s existentes, una hora correspondien te a las 0 horas, 0 minutos y 0 s egundos. Para las filas añadida s, la hora actual. Indicación de la hora Para las fila s existentes, una fecha correspondien te al 1 de enero 0001 y una hora corr espondiente a las 0 horas, 0 minu tos, 0 segundos y 0 microsegundos . Para las filas añadidas, la indicación de la hora actual. La omisión de NOT NULL y DEFAULT de una definición-columna es una especificación implícita de DEFAULT NULL. constante Especifica la constante como el valor p or omisión de la columna. La constante especificada deb e representar un valor que puede asignarse a la columna según las reglas de asignación, tal como se describen en el apartado "Asignaciones| y comparaciones" en el tema 2.7 . No se debe utilizar una| constante de coma flotante para una col umna SMALLINT, INTEGER,| DECIMAL o NUMERIC. Una constante decim al no debe contener más| digitos a la derecha de la coma decimal que la escala| especificada de la columna. NULL Especifica el valor nulo como el valor por omisión de la columna. Si se especifica NOT NULL, no se debe especificar| DEFAULT NULL en la misma definición-columna . CURRENT_DATE Especifica la fecha actual como el valo r por omisión para la columna. Si se especifica CURRENT_DATE , el tipo de datos de la columna debe ser DATE. CURRENT_TIME Especifica la hora actual como el valor por omisión para la columna. Si se especifica CURRENT_TIME , el tipo de datos de la columna debe ser TIME. CURRENT_TIMESTAMP

DB2/400 Manual de Consulta SQL V3R7 ADD COLUMN

© Copyright IBM Corp. 1995, 1996 5.4.5 - 1

Page 410: DB2/400 Manual de Consulta SQLmarce.com/docs/systems/manuales/db2_400_manual_consulta_sql_v3r7.pdf · VERSION Nota de Versión Segunda edición (noviembre de 1996) Este manual es

Especifica la indicación de la hora act ual como el valor por omisión para la columna. Si se especif ica CURRENT_TIMESTAMP, el tipo de datos de la columna debe ser TIMESTAMP. CONSTRAINT nombre-restricción Da nombre a la restricción. Un nombre-rest ricción no debe identificar una restricción que ya exista e n el servidor actual. Si no se especifica la cláusula, el gestor de bases de datos genera un nombre de restricción de unicidad . PRIMARY KEY Constituye un método abreviado de definir u na clave primaria compuesta de una sola columna. Así pues, s i se especifica PRIMARY KEY en la definición de la columna C, el ef ecto es el mismo que si especificase PRIMARY KEY(C) como cláusula a parte. Con esta cláusula debe especificarse tambié n la cláusula NOT NULL. Esta cláusula no debe especificarse en más de una| definición-columna ni debe especificarse en absoluto si se se especifica la cláusula UNIQUE en la definic ión de columna. UNIQUE Constituye un método abreviado de definir u na clave exclusiva compuesta de una sola columna. Por tanto, si se especifica UNIQUE en la definición de la columna C, el efecto es el mismo que si se especificase la cláusula UNIQUE(C) como clá usula aparte. Esta cláusula no puede especificarse más de una vez en una definición de columna y no debe especificar se si se especifica| PRIMARY KEY en la definición-columna . cláusula-references La cláusula-references de una definición-columna constituye un método abreviado de definir una clave forán ea compuesta de una sola columna. Así pues, si se especifica c láusula-references en la definición de la columna C, el efecto es el mismo que si especificase dicha cláusula-references como parte de una cláusula FOREIGN KEY en la que C fuese la única colu mna identificada.

DB2/400 Manual de Consulta SQL V3R7 ADD COLUMN

© Copyright IBM Corp. 1995, 1996 5.4.5 - 2

Page 411: DB2/400 Manual de Consulta SQLmarce.com/docs/systems/manuales/db2_400_manual_consulta_sql_v3r7.pdf · VERSION Nota de Versión Segunda edición (noviembre de 1996) Este manual es

5.4.6 ALTER COLUMN Altera la definición de una columna existente. Sól o se alterarán los atributos especificados. Los otros permanecerán si n cambios. nombre-col Identifica la columna que se va a alterar. El nombre de la columna no debe calificarse. El nombre debe identificar u na columna de la tabla especificada. El nombre no debe identificar un a columna que ya se haya añadido o eliminado en esta sentencia ALTE R TABLE. SET DATA TYPE tipo-datos Especifica el nuevo tipo de datos de la columna que se va a alterar. El nuevo tipo de datos debe ser compatible con el tipo de datos existente de la columna. Para obtener más infor mación acerca de la compatibilidad de los tipos de datos consulte e l apartado "Asignaciones y comparaciones" en el tema 2.7 . Sin embargo, existen dos excepciones a las reglas generales: � Se permite modificar los tipos de datos entr e carácter y gráficos UCS-2. � No se permite modificar los tipos de datos d e fecha y hora a carácter. La longitud, precisión y escala especificadas p ueden ser mayores, menores o iguales que la longitud, precisión y escala existentes. Sin embargo, si la nueva longitud, precisión o esca la es menor, se pueden producir errores de conversión numérica o trunc amiento (sin aviso.) Si la columna especificada tiene un valor por o misión y no se especifica un nuevo valor por omisión, el valor por omisión existente debe representar un valor que pueda asignarse a la columna según las reglas de la asignación, tal como se describen en el apartado "Asignaciones y comparaciones" en el tema 2.7 . Si la columna se especifica en una clave exclus iva, primaria o foránea, la nueva suma de las longitudes de las columnas de las claves no debe sobrepasar 2000-n, donde n es el número de columnas especificadas que permiten nulos. Cambiar los atributos provocará que todos los v alores existentes de la columna se conviertan en los nuevos atributos d e columna según las reglas para la asignación a una columna, a exce pción de los valores de serie, que se truncarán (sin aviso). SET cláusula-default Especifica el nuevo valor por omisión de la col umna que se va a alterar. El valor por omisión especificado deb e representar un valor que pueda asignarse a la columna según las regl as para la asignación, tal como se describen en el apartado "Asignaciones y comparaciones" en el tema 2.7 . SET NOT NULL Especifica que la columna no puede contener val ores nulos. Todos los valores para esta columna en filas existentes d e la tabla no deben ser nulos. Si la columna especificada tiene un val or por omisión y no se especifica un nuevo valor por omisión, el valor por omisión existente no debe ser NULL. No se permite SET NOT NULL s i la columna se identifica en la clave foránea de una restricci ón de referencia con una regla DELETE de SET NULL, y en la clave for ánea no existen más columnas que puedan contener nulos. DROP DEFAULT Elimina el valor por omisión actual para la col umna. La columna especificada debe tener un valor por omisión y no debe tener NOT NULL como el atributo nulo. El nuevo valor por omis ión es el valor nulo. DROP NOT NULL Elimina el atributo NOT NULL de la columna, per mitiendo que la columna tenga el valor nulo. Si no se especifica un va lor por omisión o todavía no existe, el nuevo valor por omisión e s el valor nulo. No se permite DROP NOT NULL si la columna se especifi ca en la clave primaria de la tabla.

DB2/400 Manual de Consulta SQL V3R7 ALTER COLUMN

© Copyright IBM Corp. 1995, 1996 5.4.6 - 1

Page 412: DB2/400 Manual de Consulta SQLmarce.com/docs/systems/manuales/db2_400_manual_consulta_sql_v3r7.pdf · VERSION Nota de Versión Segunda edición (noviembre de 1996) Este manual es

5.4.7 DROP COLUMN Elimina la columna identificada de la tabla. nombre-col Identifica la columna que se va a eliminar. El nombre de la columna no debe calificarse. El nombre debe identifica r una columna de la tabla especificada. El nombre no debe identifi car una columna que ya se haya añadido o alterado en esta sentencia AL TER TABLE. El nombre no debe identificar la única columna de una tab la. CASCADE Especifica que también se eliminan todas las vi stas, índices o restricciones que son dependientes de la column a que se elimina. RESTRICT Especifica que la columna no se puede eliminar si existen vistas, índices o restricciones dependientes de la colu mna. Si todas las columnas a las que se hace referen cia en una restricción se eliminan en la misma sentencia ALTER TABLE, RESTRICT no impide la eliminación.

DB2/400 Manual de Consulta SQL V3R7 DROP COLUMN

© Copyright IBM Corp. 1995, 1996 5.4.7 - 1

Page 413: DB2/400 Manual de Consulta SQLmarce.com/docs/systems/manuales/db2_400_manual_consulta_sql_v3r7.pdf · VERSION Nota de Versión Segunda edición (noviembre de 1996) Este manual es

5.4.8 ADD Restricción-unicidad CONSTRAINT nombre-restricción Da nombre a la restricción. Un nombre-restricc ión no debe identificar una restricción que ya exista en el servidor ac tual. El nombre-restricción debe ser exclusivo dentro de una colección. Si no se especifica, el gestor de bases de dato s generará un nombre de restricción de unicidad. UNIQUE(nombre-col,...) Define una clave exclusiva compuesta por las co lumnas identificadas. Cada nombre-col debe ser un nombre no calificado que identifique u na columna de la tabla. La misma columna no debe identificarse más de una vez. El número de columnas identificadas n o debe pasar de 120 y la suma de sus longitudes no debe ser superior a 2000-n, donde n es el número de columnas especificadas que permiten n ulos. Las columnas identificadas no pueden ser las mismas que las especificadas en otra restricción UNIQUE o PRIMARY KEY de la tabla. UNIQUE(A,B), por ejemplo, no está permitido si UNIQUE(B,A) o PRI MARY KEY(A,B) ya existen en la tabla. Cualquier valor no nulo e xistente en el conjunto de columnas debe ser exclusivo. Está permitido que existan varios valores nulos. Si ya existe un índice exclusivo en las columna s identificadas, dicho índice se designa como índice exclusivo. De lo contrario, se creará un índice exclusivo para dar soporte a la exclu sividad de la clave exclusiva. El índice exclusivo se crea como pa rte del archivo físico AS/400, y no como un archivo lógico AS/400 sepa rado. PRIMARY KEY(nombre-col,...) Define una clave primaria compuesta por las col umnas identificadas. Cada nombre-col debe ser un nombre no calificado que identifique u na columna de la tabla. La misma columna no debe identificarse más de una vez. El número de columnas identificadas n o debe pasar de 120 y la suma de sus longitudes no debe ser superior a 2000. La tabla no debe tener ya una clave primaria. Las columnas identificadas no pueden ser las mismas que las especificadas en otra restricción UNIQUE o PRIMARY KEY de la tabla. PRIMARY KEY(A,B), p or ejemplo, no está permitido si UNIQUE(B,A) ya existe en la tabla. Las columnas identificadas no deben definirse como NOT NULL. Cualquier valor existente en el conjunto de columnas debe ser e xclusivo. Si ya existe un índice exclusivo en las columna s identificadas, dicho índice se designa como índice primario. Si no es así, se creará un índice primario para dar soporte a la exclusivi dad de la clave exclusiva. El índice exclusivo se crea como pa rte del archivo físico AS/400, y no como un archivo lógico AS/400 sepa rado.

DB2/400 Manual de Consulta SQL V3R7 ADD Restricción-unicidad

© Copyright IBM Corp. 1995, 1996 5.4.8 - 1

Page 414: DB2/400 Manual de Consulta SQLmarce.com/docs/systems/manuales/db2_400_manual_consulta_sql_v3r7.pdf · VERSION Nota de Versión Segunda edición (noviembre de 1996) Este manual es

5.4.9 ADD restricción-referencial CONSTRAINT nombre-restricción Da nombre a la restricción. Un nombre-restricc ión no debe identificar una restricción que ya exista en el servidor ac tual. Si no se especifica, el gestor de bases de dato s generará un nombre de restricción de unicidad. FOREIGN KEY Define una restricción de referencia. Sea T1 la tabla que se altera. (nombre-col,...) La clave foránea de la restricción de refer encia está compuesta por las columnas identificadas. Cada nombre-col debe ser un nombre no calificado que identifique una co lumna de T1. La misma columna no debe identificarse más de una ve z. El número de columnas identificadas no debe pasar de 120 y la suma de sus longitudes no debe ser superior a 2000-n, d onde n es el número de columnas especificadas que permiten nulos. REFERENCES nombre-tabla El nombre-tabla especificado en una cláusula REFERENCES debe identificar una tabla base que exista en el servidor actual, pero no debe identificar ninguna tabla del catál ogo. Se hace referencia a esta tabla como la tabla padre de la relación de restricción. Una restricción de referencia es un duplicado si su clave foránea, clave padre y tabla padre son las mismas qu e las de una restricción de referencia existente. Las r estricciones de referencia duplicadas están permitidas, per o no son aconsejables. Sea T2 la tabla padre identificada. (nombre-col,...) La clave padre de la restricción de referen cia está compuesta por las columnas especificadas. Cada nombre-col debe ser un nombre no calificado que identifique una columna de T 2. La misma columna no debe identificarse más de una vez. El núme ro de columnas identificadas no debe pasar de 120 y la sum a de sus longitudes no debe ser superior a 2000-n, donde n es el n úmero de columnas especificadas que permiten nulos. La lista de nombres de columna debe ser idé ntica a la lista de nombres de columna de la clave primaria de T2 o de una restricción UNIQUE que exista en T2. Los nombres se pu eden especificar en cualquier orden. Por ejemplo, si se especi fica (A,B), una restricción de unicidad definida como UNIQU E(B,A) satisface el requisito. Si no se especifica ninguna lis ta de nombres de columna, T2 debe tener una clave primaria. La omisión de la lista de nombres de columna es una especificación implícita de las columnas de la clave primaria. La clave foránea especificada debe tener el mismo número de columnas que la clave padre de T2. La desc ripción de la enésima columna de la clave foránea y la enésima columna de la clave padre deben tener tipos de datos y longitudes idé nticos. A menos que la tabla esté vacía, los valores de la clave foránea deben validarse antes de utilizar la tabla. Los valo res de la clave foránea se validan durante la ejecución de la sentencia ALTER TABLE. Por lo tanto, cada uno de los valores no nulos de la c lave foránea debe coincidir con algún valor de la clave padre de T2. La restricción de referencia especificada por l a cláusula FOREIGN KEY define una relación en la que T2 es la tabla pa dre y T1 la dependiente. ON DELETE Especifica la acción que ha de llevarse a c abo en las tablas dependientes cuando se suprime una fila de la tabla padre. No debe especificarse SET NULL a menos que alguna columna de la clave foránea permita los valores nulos. No debe especificarse CASCADE si T1 tiene u n desencadenante de supresión. No deben especificarse SET NULL ni SET DEFAULT si T1 tiene un desencadenante de actualización. La regla de supresión se aplica cuando una fila de T2 es objeto de una operación DELETE o de supresión propaga da y dicha fila tiene dependientes en T1. Sea p dicha fila de T2. � Si se especifica RESTRICT o NO ACTION, s e produce un error y no se suprime ninguna fila. � Si se especifica CASCADE, la operación d e supresión se propaga a las dependientes de p en T1. � Si se especifica SET NULL, cada columna que permite nulos en la clave foránea de cada dependiente de p en T1 queda establecida en el valor nulo. � Si se especifica SET DEFAULT, cada colum na de la clave foránea de cada dependiente de p en T1 queda establecida en su valor por omisión.

DB2/400 Manual de Consulta SQL V3R7 ADD restricción-referencial

© Copyright IBM Corp. 1995, 1996 5.4.9 - 1

Page 415: DB2/400 Manual de Consulta SQLmarce.com/docs/systems/manuales/db2_400_manual_consulta_sql_v3r7.pdf · VERSION Nota de Versión Segunda edición (noviembre de 1996) Este manual es

ON UPDATE Especifica la acción que ha de llevarse a c abo en las tablas dependientes cuando se actualiza una fila d e la tabla padre. La regla de actualización se aplica cuando una fila de T2 es objeto de una operación UPDATE o de actuali zación propagada y dicha fila tiene dependientes en T1. Sea p dicha fila de T2. � Si se especifica RESTRICT o NO ACTION, s e produce un error y no se actualiza ninguna fila.

DB2/400 Manual de Consulta SQL V3R7 ADD restricción-referencial

© Copyright IBM Corp. 1995, 1996 5.4.9 - 2

Page 416: DB2/400 Manual de Consulta SQLmarce.com/docs/systems/manuales/db2_400_manual_consulta_sql_v3r7.pdf · VERSION Nota de Versión Segunda edición (noviembre de 1996) Este manual es

5.4.10 DROP PRIMARY KEY Elimina la definición de la clave primaria y to das las restricciones de referencia de las que la clave primaria sea una clave padre. La tabla debe tener una clave primaria. FOREIGN KEY nombre-restricción Elimina la restricción de referencia nombre-restricción . El nombre-restricción debe identificar una restricción de referencia en la que la tabla sea una tabla dependiente. UNIQUE nombre-restricción Elimina la restricción exclusiva nombre-restricción y todas las restricciones de referencia en las que la clave exclusiva sea una clave padre. El nombre-restricción debe identificar una restricción exclusiva sobre la tabla. DROP UNIQUE no elimi nará ninguna restricción de unicidad PRIMARY KEY. CONSTRAINT nombre-restricción Elimina la restricción nombre-restricción . Si la restricción es una restricción PRIMARY KEY o UNIQUE, también se el iminarán todas las restricciones en las que la clave primaria o ex clusiva sea una clave padre. El nombre-restricción debe identificar una restricción exclusiva sobre la tabla. CASCADE Especifica, para restricciones de unicidad, que también se eliminan todas las restricciones de referencia que son d ependientes de la restricción que se elimina. RESTRICT Especifica, para restricciones de unicidad, que la restricción no se puede eliminar si existen restricciones de refe rencia dependientes de la restricción.

DB2/400 Manual de Consulta SQL V3R7 DROP

© Copyright IBM Corp. 1995, 1996 5.4.10 - 1

Page 417: DB2/400 Manual de Consulta SQLmarce.com/docs/systems/manuales/db2_400_manual_consulta_sql_v3r7.pdf · VERSION Nota de Versión Segunda edición (noviembre de 1996) Este manual es

5.4.11 Notas Sólo se puede hacer referencia a una columna una vez en una cláusula ADD, ALTER o DROP COLUMN de una única sentencia ALTER TA BLE. Sin embargo, se puede hacer múltiples referencias a esa misma colum na para añadir o eliminar restricciones en la misma sentencia ALTER TABLE. El orden de operaciones dentro de una sentencia ALT ER TABLE es: � eliminar restricciones � eliminar columnas para las que se haya especific ado la opción RESTRICT � alterar todas las demás definiciones de columna (esto incluye añadir y eliminar las columnas para las que se ha especi ficado la opción CASCADE) � añadir restricciones En cada una de estas etapas, el orden en que el usu ario especifica las cláusulas es el orden en que se ejecutan, con una e xcepción. Si se elimina alguna columna, dicha operación se realiza de forma lógica antes de añadir o alterar definiciones de columna, en cas o de que la longitud de registro se incremente como resultado de la sentenc ia ALTER TABLE. Se eliminarán todas las vistas o archivos lógicos d e otra QTEMP de trabajo que sean dependientes de la tabla que se altera, co mo resultado de una sentencia ALTER TABLE. La comprobación de autorización sólo se lleva a cab o en la tabla que se altera. Se puede acceder a otros objetos mediante la sentencia ALTER TABLE, pero no es necesaria autorización para dicho s objetos. Por ejemplo, no se necesita autorización para las vista s que existen en la tabla que se altera, ni para las tablas dependiente s que hacen referencia a la tabla que se altera mediante una restricción d e referencia. Es muy aconsejable que exista una copia de segurida d actual de la tabla, las vistas dependientes y los archivos lógicos ante s de alterar una tabla.

DB2/400 Manual de Consulta SQL V3R7 Notas

© Copyright IBM Corp. 1995, 1996 5.4.11 - 1

Page 418: DB2/400 Manual de Consulta SQLmarce.com/docs/systems/manuales/db2_400_manual_consulta_sql_v3r7.pdf · VERSION Nota de Versión Segunda edición (noviembre de 1996) Este manual es

5.4.12 Efectos en cascada La adición de una columna no tiene efectos en casca da para las vistas SQL o la mayoría de archivos lógicos. (22) Por ejemplo, la adición de una columna a una tabla no provoca que se añada la colu mna a las vistas dependientes, incluso si dichas vistas se crearon c on una cláusula SELECT *. Eliminar o alterar una columna puede provocar vario s efectos en cascada. La Tabla 8 lista los efectos en cascada de eliminar una colum na. +-------------------------------------------------- ----------------------+ ¦ Tabla 8. Efectos en cascada de eliminar una colum na ¦ +-------------------------------------------------- ----------------------¦ ¦ Operación ¦ Efecto RESTRICT ¦ Efecto CASCADE ¦ +-------------+-----------------------------+------ ----------------------¦ ¦ Eliminación ¦ No se permite la ¦ Se el imina la vista y ¦ ¦ de una ¦ eliminación de la columna. ¦ todas las vistas ¦ ¦ columna a ¦ ¦ depen dientes de esa vista. ¦ ¦ la que una ¦ ¦ ¦ ¦ vista hace ¦ ¦ ¦ ¦ referencia ¦ ¦ ¦ +-------------+-----------------------------+------ ----------------------¦ ¦ Eliminación ¦ Se permite la eliminación ¦ Se el imina el índice. ¦ ¦ de una ¦ del índice a menos que lo ¦ ¦ ¦ columna a ¦ utilice una restricción que ¦ ¦ ¦ la que un ¦ no se pueda eliminar. ¦ ¦ ¦ índice hace ¦ ¦ ¦ ¦ referencia ¦ ¦ ¦ +-------------+-----------------------------+------ ----------------------¦ ¦ Eliminación ¦ Si todas las columnas a las ¦ Se el imina la restricción ¦ ¦ de una ¦ que se hace referencia en ¦ de un icidad, al igual que ¦ ¦ columna a ¦ la restricción de unicidad ¦ todas las restricciones de ¦ ¦ la que se ¦ se eliminan en la misma ¦ refer encia que hagan ¦ ¦ hace ¦ sentencia ALTER COLUMN, y ¦ refer encia a dicha ¦ ¦ referencia ¦ una restricción de ¦ restr icción de unicidad. ¦ ¦ en una ¦ referencia no hace ¦ (Por tanto, también se ¦ ¦ restricción ¦ referencia a la restricción ¦ elimi nan todos los índices ¦ ¦ de unicidad ¦ de unicidad, se eliminan ¦ utili zados por dichas ¦ ¦ ¦ las columnas y la ¦ restr icciones). ¦ ¦ ¦ restricción. (Por tanto, ¦ ¦ ¦ ¦ también se elimina el ¦ ¦ ¦ ¦ índice utilizado para ¦ ¦ ¦ ¦ satisfacer la restricción.) ¦ ¦ ¦ ¦ Por ejemplo, si se elimina ¦ ¦ ¦ ¦ la columna A, y existe una ¦ ¦ ¦ ¦ restricción de unicidad de ¦ ¦ ¦ ¦ UNIQUE(A) o PRIMARY KEY(A) ¦ ¦ ¦ ¦ y ninguna restricción de ¦ ¦ ¦ ¦ referencia hace referencia ¦ ¦ ¦ ¦ a la restricción de ¦ ¦ ¦ ¦ unicidad, se permite la ¦ ¦ ¦ ¦ operación. ¦ ¦ ¦ ¦ ¦ ¦ ¦ ¦ De lo contrario, no se ¦ ¦ ¦ ¦ permite la eliminación de ¦ ¦ ¦ ¦ la columna. ¦ ¦ +-------------+-----------------------------+------ ----------------------¦ ¦ Eliminación ¦ Si todas las columnas a las ¦ Se el imina la restricción ¦ ¦ de una ¦ que se hace referencia en ¦ de re ferencia. (Por ¦ ¦ columna a ¦ la restricción de ¦ tanto , también se elimina ¦ ¦ la que se ¦ referencia se eliminan al ¦ el ín dice utilizado por la ¦ ¦ hace ¦ mismo tiempo, se eliminan ¦ clave foránea.) ¦ ¦ referencia ¦ las columnas y la ¦ ¦ ¦ en una ¦ restricción. (Por tanto, ¦ ¦ ¦ restricción ¦ también se elimina el ¦ ¦ ¦ de ¦ índice utilizado por la ¦ ¦ ¦ referencia ¦ clave foránea.) Por ¦ ¦ ¦ ¦ ejemplo, si se elimina la ¦ ¦ ¦ ¦ columna B y existe una ¦ ¦ ¦ ¦ restricción de referencia ¦ ¦ ¦ ¦ de FOREIGN KEY (A), se ¦ ¦ ¦ ¦ permite la operación. ¦ ¦ ¦ ¦ ¦ ¦ ¦ ¦ De lo contrario, no se ¦ ¦ ¦ ¦ permite la eliminación de ¦ ¦ ¦ ¦ la columna. ¦ ¦ +-------------------------------------------------- ----------------------+ La Tabla 9 lista los efectos en cascada de alterar una column a. (Alterar una columna en el siguiente diagrama significa alte rar un tipo de datos, la precisión, la escala, la longitud o la caracterí stica de permitir nulos.) +-------------------------------------------------- ----------------------+ ¦ Tabla 9. Efectos en cascada de alterar una column a ¦ +-------------------------------------------------- ----------------------¦ ¦ Operación ¦ Efecto ¦ +-------------+------------------------------------ ----------------------¦ +-------------+------------------------------------ ----------------------¦ ¦ Alteración ¦ Se permite la alteración. ¦ ¦ de una ¦ ¦ ¦ columna a ¦ Se volverán a crear las vistas que son dependientes de ¦ ¦ la que una ¦ la tabla. Se utilizarán los nuevos atributos de columna ¦ ¦ vista hace ¦ cuando se vuelvan a crear las vista s. ¦ ¦ referencia ¦ ¦ +-------------+------------------------------------ ----------------------¦ ¦ Alteración ¦ Se permite la alteración. (Por tan to, se suprime y se ¦

DB2/400 Manual de Consulta SQL V3R7 Efectos en cascada

© Copyright IBM Corp. 1995, 1996 5.4.12 - 1

Page 419: DB2/400 Manual de Consulta SQLmarce.com/docs/systems/manuales/db2_400_manual_consulta_sql_v3r7.pdf · VERSION Nota de Versión Segunda edición (noviembre de 1996) Este manual es

¦ de una ¦ vuelve a crear el índice utilizado para satisfacer la ¦ ¦ columna a ¦ restricción.) ¦ ¦ la que un ¦ ¦ ¦ índice hace ¦ ¦ ¦ referencia ¦ ¦ +-------------+------------------------------------ ----------------------¦ ¦ Alteración ¦ Se permite la alteración. (Por tan to, se suprime y se ¦ ¦ de una ¦ vuelve a crear el índice utilizado para satisfacer la ¦ ¦ columna a ¦ restricción.) ¦ ¦ la que se ¦ ¦ ¦ hace ¦ Si una restricción de referencia ha ce referencia a la ¦ ¦ referencia ¦ restricción de unicidad, los atribu tos de la clave ¦ ¦ en una ¦ foránea ya no coinciden con los atr ibutos de la ¦ ¦ restricción ¦ restricción de unicidad. La restri cción se colocará en ¦ ¦ de unicidad ¦ un estado definido y pendiente de c omprobación. ¦ +-------------+------------------------------------ ----------------------¦ ¦ Alteración ¦ Se permite la alteración. ¦ ¦ de una ¦ ¦ �¦ columna a ¦ Si la restricción de referencia está en el estado ¦ ¦ la que se ¦ definido pero pendiente de comp robación, se permite ¦ ¦ hace ¦ la alteración y se realiza un i ntento de poner la ¦ ¦ referencia ¦ restricción en el estado habili tado. (Por tanto, se ¦ ¦ en una ¦ suprime y se vuelve a crear el índice utilizado para ¦ ¦ restricción ¦ satisfacer la restricción de un icidad.) ¦ ¦ de ¦ ¦ �¦ referencia ¦ Si la restricción de referencia está en el estado ¦ ¦ ¦ habilitado, la restricción se c oloca en el estado ¦ ¦ ¦ definido y pendiente de comprob ación. ¦ +-------------------------------------------------- ----------------------+ (22) Se añadirá también una columna a un archivo l ógico que comparta el formato de su archivo físico cuando se añade una columna a dicho archivo físico.

DB2/400 Manual de Consulta SQL V3R7 Efectos en cascada

© Copyright IBM Corp. 1995, 1996 5.4.12 - 2

Page 420: DB2/400 Manual de Consulta SQLmarce.com/docs/systems/manuales/db2_400_manual_consulta_sql_v3r7.pdf · VERSION Nota de Versión Segunda edición (noviembre de 1996) Este manual es

5.4.13 Ejemplos Ejemplo 1 : Supongamos que se ha creado una tabla nueva, EQU IPO, con las siguientes columnas: Nombre de columna Tipo de datos NUM_EQUIPO INT DESC_EQUIPO VARCHAR(50) UBICACION VARCHAR(50) PROP_EQUIPO CHAR(3) Añadir una restricción de referencia a la tabla EQU IPO para que el propietario (PROP_EQUIPO) deba ser un número de dep artamento (NUMDEPT) presente en la tabla DEPART. Si se elimina un depa rtamento de la tabla DEPART, los valores de propietario (PROP_EQUIPO) co rrespondientes a todos los equipos cuyo propietario sea dicho departamento se convierten en no asignados (o se establecen en el valor nulo). Dar a la restricción el nombre de EQUIPDEPT. Supongamos que la tabla DEPAR T tiene una clave primaria definida como (NUMDEPT). ALTER TABLE EQUIPO CONSTRAINT EQUIPDEPT FOREIGN KEY (PROP_EQUIPO) REFERENCES DEPARTMENTO ON DELETE SET NULL Ejemplo 2 : Supongamos que la misma tabla EQUIPO existe tal como en el primer ejemplo. � Añadir una columna a la tabla EQUIPO que conteng a la cantidad en existencias de cada número de equipo. Llamar a la columna CANTIDAD. ALTER TABLE EQUIPO ADD COLUMN CANTIDAD INT � Cambiar el valor por omisión para la columna PRO P_EQUIPO a 'ABC'. ALTER TABLE EQUIPO ALTER COLUMN PROP_EQUIPO SET DEFAULT 'ABC' � Eliminar la columna UBICACION. Eliminar también todas las vistas, índices o restricciones que se creen en dicha c olumna. ALTER TABLE EQUIPO DROP COLUMN UBICACION CASCADE � Alterar la tabla de tal manera que se añada una columna nueva llamada PROVEEDOR, se elimine la columna llamada UBICAC ION existente, se añada una restricción de unicidad sobre la columna PR OVEEDOR nueva, y se cree una clave primaria sobre la columna NUM_EQ UIPO existente. ALTER TABLE EQUIPO ADD COLUMN PROVEEDOR INT DROP COLUMN UBICACION ADD UNIQUE PROVEEDOR ADD PRIMARY KEY NUM_EQUIPO | � Tenga en cuenta que la columna DESC_EQUIP es una columna de longitud| variable. Si se ha especificado una longitud a signada de 25, la| sentencia ALTER TABLE siguiente no cambiará la longitud asignada. | ALTER TABLE EQUIPO| ALTER COLUMN DESC_EQUIP| SET DATA TYPE VARCHAR(60)

DB2/400 Manual de Consulta SQL V3R7 Ejemplos

© Copyright IBM Corp. 1995, 1996 5.4.13 - 1

Page 421: DB2/400 Manual de Consulta SQLmarce.com/docs/systems/manuales/db2_400_manual_consulta_sql_v3r7.pdf · VERSION Nota de Versión Segunda edición (noviembre de 1996) Este manual es

5.5 BEGIN DECLARE SECTION La sentencia BEGIN DECLARE SECTION marca el princip io de una sección de declaración SQL. Subtemas 5.5.1 Invocación 5.5.2 Autorización 5.5.3 Sintaxis 5.5.4 Descripción 5.5.5 Ejemplos

DB2/400 Manual de Consulta SQL V3R7 BEGIN DECLARE SECTION

© Copyright IBM Corp. 1995, 1996 5.5 - 1

Page 422: DB2/400 Manual de Consulta SQLmarce.com/docs/systems/manuales/db2_400_manual_consulta_sql_v3r7.pdf · VERSION Nota de Versión Segunda edición (noviembre de 1996) Este manual es

5.5.1 Invocación Esta sentencia sólo puede hospedarse en un programa de aplicación. No es una sentencia ejecutable. No debe especificarse en RPG ni en REXX.

DB2/400 Manual de Consulta SQL V3R7 Invocación

© Copyright IBM Corp. 1995, 1996 5.5.1 - 1

Page 423: DB2/400 Manual de Consulta SQLmarce.com/docs/systems/manuales/db2_400_manual_consulta_sql_v3r7.pdf · VERSION Nota de Versión Segunda edición (noviembre de 1996) Este manual es

5.5.2 Autorización No se requiere ninguna.

DB2/400 Manual de Consulta SQL V3R7 Autorización

© Copyright IBM Corp. 1995, 1996 5.5.2 - 1

Page 424: DB2/400 Manual de Consulta SQLmarce.com/docs/systems/manuales/db2_400_manual_consulta_sql_v3r7.pdf · VERSION Nota de Versión Segunda edición (noviembre de 1996) Este manual es

5.5.3 Sintaxis +-------------------------------------------------- ----------------------+ ¦ ¦ ¦ >>-- BEGIN DECLARE SECTION------------------------------------------->< ¦ ¦ ¦ +-------------------------------------------------- ----------------------+

DB2/400 Manual de Consulta SQL V3R7 Sintaxis

© Copyright IBM Corp. 1995, 1996 5.5.3 - 1

Page 425: DB2/400 Manual de Consulta SQLmarce.com/docs/systems/manuales/db2_400_manual_consulta_sql_v3r7.pdf · VERSION Nota de Versión Segunda edición (noviembre de 1996) Este manual es

5.5.4 Descripción La sentencia BEGIN DECLARE SECTION puede codificars e en el programa de aplicación siempre que puedan aparecer declaracione s de variable de acuerdo con las reglas del lenguaje principal. No puede codificarse en la mitad de una declaración de estructura del lenguaje principal. La sentencia se utiliza para indicar el principio de u na sección de declaración SQL. Las secciones de declaración SQL terminan con una sentencia END DECLARE SECTION, que se describe en l a página 5.27 . Las sentencias BEGIN DECLARE SECTION y END DECLARE SECTION deben emparejarse y no pueden estar anidadas. No se deben incluir sentencias SQL en una sección d e declaración, exceptuando las sentencias DECLARE VARIABLE e INCLU DE. Si se especifican secciones de declaración SQL en e l programa, solamente las variables declaradas en las secciones de declar ación SQL pueden utilizarse como variables del lenguaje principal. Si no se especifican secciones de declaración SQL en el programa, todas las variables del programa se pueden utilizar como variables del leng uaje principal. Deben especificarse secciones de declaración SQL pa ra los lenguajes principales que no sean RPG ni REXX, de tal manera que el programa fuente se ajuste al estándar SQL de IBM. La sección de de claración SQL debe aparecer antes de la primera referencia a la variab le. Las variables del lenguaje principal se declaran sin utilizar estas s entencias en RPG, y en REXX no se declaran. Las variables declaradas fuera de una sección de de claración SQL no deben tener el mismo nombre que las variables declaradas en una sección de declaración SQL. Se puede especificar más de una sección de declarac ión SQL en el programa.

DB2/400 Manual de Consulta SQL V3R7 Descripción

© Copyright IBM Corp. 1995, 1996 5.5.4 - 1

Page 426: DB2/400 Manual de Consulta SQLmarce.com/docs/systems/manuales/db2_400_manual_consulta_sql_v3r7.pdf · VERSION Nota de Versión Segunda edición (noviembre de 1996) Este manual es

5.5.5 Ejemplos Ejemplo 1 : Definir las variables del lenguaje principal hv_ smint (smallint), hv_vchar24 (varchar(24)) y hv_double (f loat) en un programa escrito en C. EXEC SQL BEGIN DECLARE SECTION; static short hv_smint; static struct { short hv_vchar24_len; char hv_vchar24_value[24]; } hv_vchar24; static double hv_double; EXEC SQL END DECLARE SECTION; Ejemplo 2 : Definir las variables del lenguaje principal HV- SMINT_smint (smallint), HV-VCHAR24_vchar24 (varchar(24)) y HV-D EC72_double (dec) en un programa escrito en COBOL. WORKING-STORAGE SECTION. EXEC SQL BEGIN DECLARE SECTION END-EXEC. 01 HV-SMINT PIC S9(4) BINARY. 01 HV-VCHAR24. 49 HV-VCHAR24-LENGTH PIC S9(4) BINARY. 49 HV-VCHAR24-VALUE PIC X(24). 01 HV-DEC72 PIC S9(5)V9(2) COMP-3. EXEC SQL END DECLARE SECTION END-EXEC. Ejemplo 3 : Definir las variables del lenguaje principal HV_ SMINT (smallint), HV_VCHAR24 (varchar(24)) y HV_DEC72 (de c(7,2)) en un programa escrito en PL/I. EXEC SQL BEGIN DECLARE SECTION; DCL HV_SMINT BINARY FIXED(15); DCL HV_VCHAR24 CHAR(24) VARYING; DCL HV_DEC72 FIXED DECIMAL(7,2); EXEC SQL END DECLARE SECTION;

DB2/400 Manual de Consulta SQL V3R7 Ejemplos

© Copyright IBM Corp. 1995, 1996 5.5.5 - 1

Page 427: DB2/400 Manual de Consulta SQLmarce.com/docs/systems/manuales/db2_400_manual_consulta_sql_v3r7.pdf · VERSION Nota de Versión Segunda edición (noviembre de 1996) Este manual es

5.6 CALL La sentencia CALL llama a un procedimiento externo. Subtemas 5.6.1 Invocación 5.6.2 Autorización 5.6.3 Sintaxis 5.6.4 Descripción 5.6.5 Notas 5.6.6 Ejemplo

DB2/400 Manual de Consulta SQL V3R7 CALL

© Copyright IBM Corp. 1995, 1996 5.6 - 1

Page 428: DB2/400 Manual de Consulta SQLmarce.com/docs/systems/manuales/db2_400_manual_consulta_sql_v3r7.pdf · VERSION Nota de Versión Segunda edición (noviembre de 1996) Este manual es

5.6.1 Invocación Esta sentencia puede hospedarse en un programa de a plicación o emitirse interactivamente. Es una sentencia ejecutable que puede prepararse dinámicamente.

DB2/400 Manual de Consulta SQL V3R7 Invocación

© Copyright IBM Corp. 1995, 1996 5.6.1 - 1

Page 429: DB2/400 Manual de Consulta SQLmarce.com/docs/systems/manuales/db2_400_manual_consulta_sql_v3r7.pdf · VERSION Nota de Versión Segunda edición (noviembre de 1996) Este manual es

5.6.2 Autorización Los privilegios del ID de autorización de la senten cia deben incluir al menos uno de los privilegios siguientes: � Si el procedimiento externo es un procedimiento REXX:| - Las autorizaciones del sistema *OBJOPR, *RE AD y *EXECUTE sobre el archivo fuente asociado con el procedimient o, - La autorización del sistema *EXECUTE sobre la biblioteca que contiene el archivo fuente y - La autorización del sistema *USE para utili zar el mandato CL. � Si el procedimiento externo no es un procedimien to REXX: - La autorizaciones del sistema *EXECUTE y *R EAD sobre el programa asociado con el procedimiento y - La autorización del sistema *EXECUTE sobre la biblioteca que contiene el programa asociado con el proced imiento � Autorización de administrador

DB2/400 Manual de Consulta SQL V3R7 Autorización

© Copyright IBM Corp. 1995, 1996 5.6.2 - 1

Page 430: DB2/400 Manual de Consulta SQLmarce.com/docs/systems/manuales/db2_400_manual_consulta_sql_v3r7.pdf · VERSION Nota de Versión Segunda edición (noviembre de 1996) Este manual es

5.6.3 Sintaxis +-------------------------------------------------- ----------------------+ ¦ ¦ ¦ >>-- CALL---- nombre-procedimiento -------------------------------------> ¦ ¦ +- var-leng-princ -------+ ¦ ¦ ¦ ¦ >------------------------------------------------ ------------------->< ¦ ¦ +- ( --------------------------------- ) -¦ ¦ ¦ ¦ ¦ <-,---------------------+ ¦ ¦ ¦ ¦ ¦ +----- var-leng-princ --------+ ¦ ¦ ¦ ¦ +- constante ---------¦ ¦ ¦ ¦ ¦ +- NULL--------------¦ ¦ ¦ ¦ ¦ +- registro-especial -+ ¦ ¦ ¦ +- USING DESCRIPTOR-- nombre-descriptor -+ ¦ ¦ ¦ +-------------------------------------------------- ----------------------+

DB2/400 Manual de Consulta SQL V3R7 Sintaxis

© Copyright IBM Corp. 1995, 1996 5.6.3 - 1

Page 431: DB2/400 Manual de Consulta SQLmarce.com/docs/systems/manuales/db2_400_manual_consulta_sql_v3r7.pdf · VERSION Nota de Versión Segunda edición (noviembre de 1996) Este manual es

5.6.4 Descripción nombre-procedimiento o var-leng-princ Identifica el procedimiento para llamar por el nombre de procedimiento especificado o el nombre de procedimiento que c ontiene la variable del lenguaje principal. El nombre-procedimiento de be identificar un procedimiento que exista en el servidor actual. Si se especifica una variable del lenguaje principal: � Debe ser una variable de serie de caracteres y no debe incluir una variable de indicador. � El nombre de procedimiento que se incluye en la variable del lenguaje principal debe justificarse por la izquierda y debe rellenarse por la derecha con blancos si su longitud es menor que la de la variable del lenguaje principal. � El nombre del procedimiento debe estar en ma yúsculas a menos que sea un nombre delimitado. Si el nombre-procedimiento identifica un proced imiento que se ha definido mediante una sentencia CREATE PROCEDUR E o DECLARE PROCEDURE, y el servidor actual es un servidor DB2 para OS /400: � La sentencia CREATE PROCEDURE o DECLARE PROC EDURE determina el nombre del programa externo, del lenguaje y del convenio de denominación. � Los atributos de los parámetros del procedim iento se definen mediante la sentencia CREATE PROCEDURE o DE CLARE PROCEDURE. De no ser así: � El servidor actual determina el nombre del p rograma externo, del lenguaje y del convenio de denominación. Si el servidor actual es DB2 para OS/400: - Se presupone que el nombre de programa externo es el mismo que el nombre de procedimiento externo. - Si la información de atributos de progr ama asociada con el programa identifica un lenguaje reconoc ible, se utilizará dicho lenguaje. De no ser así, se pres upone que el lenguaje es C. - Se presupone que el convenio de denomin ación es GENERAL. � El peticionario de la aplicación supone que todos los parámetros que son variables del lenguaje principal so n INOUT excepto en el caso de una sentencia CALL dinámica, en cuy o caso se supone que todos los parámetros son IN. Se supone que todos los parámetros que no sean variables del lenguaje principa l son IN. � Los atributos reales de los parámetros se de terminan mediante el servidor actual. Si el servidor actual es DB2 para OS/400, l os atributos de los parámetros serán los mismos atributos que l os de los argumentos especificados en la sentencia CALL. (23) var-leng-princ o constante o NULL o registro especial Identifica una lista de valores que han de pasa rse como parámetros al procedimiento. El enésimo valor se corresponde con el enésimo parámetro del procedimiento. USING DESCRIPTOR nombre-descriptor Identifica una SQLDA que debe contener una desc ripción válida de variables del lenguaje principal. Antes de procesar la sentencia CALL, debe estab lecer los siguientes campos en la SQLDA. (Las reglas para REXX son diferentes. Para obtener más información, consulte el manual DB/2 for OS/400 SQL Programming , SC41-4611) � SQLN para indicar la cantidad de apariciones de SQLVAR proporcionadas en la SQLDA � SQLDABC para indicar la cantidad de bytes de almacenamiento asignados para la SQLDA. � SQLD para indicar la cantidad de variables u tilizadas en la SQLDA mientras se procesa la sentencia � Apariciones de SQLVAR para indicar los atrib utos de las variables. La SQLDA debe disponer de almacenamiento sufici ente como para contener todas las apariciones de SQLVAR. Por tanto, el valor de SQLDABC debe ser mayor o igual que 16 + SQLN*(80), donde 80 es la longitud de una aparición de SQLVAR. SQLD debe establecerse en un valor mayor o igua l que cero y menor o igual que SQLN. Debe ser igual al número de ma rcadores de parámetros de la sentencia preparada. La enésima variable descrita por la SQLDA corresponde al enésimo marcador de parámetro de la sentencia preparada. (Para obtener una descripción de un a SQLDA, consulte el Apéndice C, "Área de descriptor SQL (SQLDA)" en el tema C.0 .) Observe que RPG/400 no proporciona la función p ara establecer punteros. Puesto que la SQLDA utiliza punteros para localizar las

DB2/400 Manual de Consulta SQL V3R7 Descripción

© Copyright IBM Corp. 1995, 1996 5.6.4 - 1

Page 432: DB2/400 Manual de Consulta SQLmarce.com/docs/systems/manuales/db2_400_manual_consulta_sql_v3r7.pdf · VERSION Nota de Versión Segunda edición (noviembre de 1996) Este manual es

variables del lenguaje principal adecuadas, se deben establecer estos punteros fuera de la aplicación RPG/400. (23) Observe que en el caso de las constantes deci males, los ceros iniciales son significativos al determina r los atributos del argumento. Normalmente, los cero s iniciales no son significativos.

DB2/400 Manual de Consulta SQL V3R7 Descripción

© Copyright IBM Corp. 1995, 1996 5.6.4 - 2

Page 433: DB2/400 Manual de Consulta SQLmarce.com/docs/systems/manuales/db2_400_manual_consulta_sql_v3r7.pdf · VERSION Nota de Versión Segunda edición (noviembre de 1996) Este manual es

5.6.5 Notas Si el nombre-procedimiento identifica un procedimiento que se ha definido mediante una sentencia CREATE PROCEDURE o DECLARE P ROCEDURE, cada uno de los parámetros OUT o INOUT debe especificarse como variable del lenguaje principal. Si el nombre-procedimiento identifica un procedimiento que se ha definido mediante una sentencia CREATE PROCEDURE o DECLARE P ROCEDURE, el número de argumentos especificado debe ser igual al número de parámetros definidos mediante dicha sentencia CREATE PROCEDURE o DECLARE PROCEDURE. Para obtener una explicación de constante y var-leng-princ , consulte los apartados "Constantes" en el tema 2.8 y "Referencias a variables del lenguaje principal" en el tema 2.11 . Para obtener una descripción de registro-especial , consulte el apartado "Registros especiales" en el tema 2.9 . NULL especifica el valor nulo. El número máximo de parámetros permitidos en una se ntencia CALL depende del tipo de llamada que se esté realizando. Si el procedimiento se ha definido con GENERAL, se permiten 255 parámetros. Si el procedimiento se ha definido con GENERAL WITH NULLS, se permiten 254 parámetros. Si el procedimiento externo que se va a llamar es u n procedimiento REXX, el procedimiento debe declararse utilizando la sent encia CREATE PROCEDURE o DECLARE PROCEDURE. Si se utilizan variables del lenguaje principal en la sentencia CALL dentro de un procedimiento REXX, CALL debe ser el o bjeto de PREPARE y EXECUTE.

DB2/400 Manual de Consulta SQL V3R7 Notas

© Copyright IBM Corp. 1995, 1996 5.6.5 - 1

Page 434: DB2/400 Manual de Consulta SQLmarce.com/docs/systems/manuales/db2_400_manual_consulta_sql_v3r7.pdf · VERSION Nota de Versión Segunda edición (noviembre de 1996) Este manual es

5.6.6 Ejemplo Llamar al programa PGM1 y pasar dos parámetros. CALL PGM1 (:hv1,:hv2)

DB2/400 Manual de Consulta SQL V3R7 Ejemplo

© Copyright IBM Corp. 1995, 1996 5.6.6 - 1

Page 435: DB2/400 Manual de Consulta SQLmarce.com/docs/systems/manuales/db2_400_manual_consulta_sql_v3r7.pdf · VERSION Nota de Versión Segunda edición (noviembre de 1996) Este manual es

5.7 CLOSE La sentencia CLOSE cierra un cursor. Si se ha crea do una tabla de resultados cuando estaba abierto el cursor, se dest ruye dicha tabla. Subtemas 5.7.1 Invocación 5.7.2 Autorización 5.7.3 Sintaxis 5.7.4 Descripción 5.7.5 Notas 5.7.6 Ejemplo

DB2/400 Manual de Consulta SQL V3R7 CLOSE

© Copyright IBM Corp. 1995, 1996 5.7 - 1

Page 436: DB2/400 Manual de Consulta SQLmarce.com/docs/systems/manuales/db2_400_manual_consulta_sql_v3r7.pdf · VERSION Nota de Versión Segunda edición (noviembre de 1996) Este manual es

5.7.1 Invocación Esta sentencia sólo puede hospedarse en un programa de aplicación. Es una sentencia ejecutable que no puede prepararse dinámi camente.

DB2/400 Manual de Consulta SQL V3R7 Invocación

© Copyright IBM Corp. 1995, 1996 5.7.1 - 1

Page 437: DB2/400 Manual de Consulta SQLmarce.com/docs/systems/manuales/db2_400_manual_consulta_sql_v3r7.pdf · VERSION Nota de Versión Segunda edición (noviembre de 1996) Este manual es

5.7.2 Autorización No se requiere ninguna. Véase el apartado "DECLARE CURSOR" en el tema 5.18 para saber cuál es la autorización necesaria para utilizar un cursor.

DB2/400 Manual de Consulta SQL V3R7 Autorización

© Copyright IBM Corp. 1995, 1996 5.7.2 - 1

Page 438: DB2/400 Manual de Consulta SQLmarce.com/docs/systems/manuales/db2_400_manual_consulta_sql_v3r7.pdf · VERSION Nota de Versión Segunda edición (noviembre de 1996) Este manual es

5.7.3 Sintaxis +-------------------------------------------------- ----------------------+ ¦ ¦ ¦ >>-- CLOSE-- nombre-cursor -------------------------------------------->< ¦ ¦ ¦ +-------------------------------------------------- ----------------------+

DB2/400 Manual de Consulta SQL V3R7 Sintaxis

© Copyright IBM Corp. 1995, 1996 5.7.3 - 1

Page 439: DB2/400 Manual de Consulta SQLmarce.com/docs/systems/manuales/db2_400_manual_consulta_sql_v3r7.pdf · VERSION Nota de Versión Segunda edición (noviembre de 1996) Este manual es

5.7.4 Descripción nombre-cursor Identifica el cursor que se va a cerrar. El nombre-cursor debe identificar un cursor declarado tal como se exp lica en la sentencia DECLARE CURSOR. Cuando se ejecuta la sentencia CLOSE, el cursor debe estar en el estado abierto.

DB2/400 Manual de Consulta SQL V3R7 Descripción

© Copyright IBM Corp. 1995, 1996 5.7.4 - 1

Page 440: DB2/400 Manual de Consulta SQLmarce.com/docs/systems/manuales/db2_400_manual_consulta_sql_v3r7.pdf · VERSION Nota de Versión Segunda edición (noviembre de 1996) Este manual es

5.7.5 Notas Todos los cursores de un programa tienen el estado cerrado cuando: � Se llama al programa. - Si se especifica CLOSQLCSR(*ENDPGM), todos los cursores estarán en estado cerrado cada vez que se llame al pro grama. - Si se especifica CLOSQLCSR(*ENDSQL), todos los cursores estarán en estado cerrado sólo la primera vez que se l lame al programa y siempre y cuando permanezca un programa SQL en la pila de llamadas. - Si se especifica CLOSQLCSR(*ENDJOB), todos los cursores estarán en estado cerrado solamente la primera vez que se llame al programa en el trabajo. - Si se especifica CLOSQLCSR(*ENDMOD), todos los cursores estarán en estado cerrado cada vez que se inicie el mó dulo. - Si se especifica CLOSQLCSR(*ENDACTGRP), tod os los cursores estarán en estado cerrado la primera vez que se ini cie el módulo del programa en el grupo de activación. � Un programa inicia una unidad de trabajo nueva e jecutando una sentencia COMMIT o ROLLBACK sin la opción HOLD. Los cursores declarados con la opción HOLD no se cierran com o resultado de una sentencia COMMIT. Nota: El gestor de bases de datos DB2 para OS/400 abrir á archivos para implantar consultas. El cierre de archivos puede separarse de la sentencia SQL CLOSE. Para obtener más infor mación, consulte el manual DB/2 for OS/400 SQL Programming , SC41-4611. Cerrar los cursores explícitamente tan pronto como sea posible, puede mejorar el rendimiento.

DB2/400 Manual de Consulta SQL V3R7 Notas

© Copyright IBM Corp. 1995, 1996 5.7.5 - 1

Page 441: DB2/400 Manual de Consulta SQLmarce.com/docs/systems/manuales/db2_400_manual_consulta_sql_v3r7.pdf · VERSION Nota de Versión Segunda edición (noviembre de 1996) Este manual es

5.7.6 Ejemplo En un programa COBOL, utilizar el cursor C1 para ob tener los valores de las primeras cuatro columnas de la tabla ACT_EMP de fila en fila y ponerlos en las siguientes variables del lenguaje p rincipal: � EMP (char(6)) � PRY (char(6)) � ACT (smallint) � TIM (dec(5,2)) Por último, cerrar el cursor. EXEC SQL BEGIN DECLARE SECTION END-EXEC. 77 EMP PIC X(6). 77 PRY PIC X(6). 77 ACT PIC S9(4) BINARY. 77 TIM PIC S9(3)V9(2) COMP-3. EXEC SQL END DECLARE SECTION END-EXEC. . . . EXEC SQL DECLARE C1 CURSOR FOR SELECT NUMEMP, NUMPRO, NUMACT, TIEMEMP FROM ACT_EMP END-EXEC. EXEC SQL OPEN C1 END-EXEC. EXEC SQL FETCH C1 INTO :EMP, :PRY, :ACT, :TIM END-EXEC. IF SQLSTATE = '02000' PERFORM DATOS-NO-ENCON ELSE PERFORM OBT-REST UNTIL SQLSTATE IS NOT EQUAL TO '00 000'. EXEC SQL CLOSE C1 END-EXEC. GET-REST EXEC SQL FETCH C1 INTO :EMP, :PRY, :ACT, :TIM END-EXEC. . . .

DB2/400 Manual de Consulta SQL V3R7 Ejemplo

© Copyright IBM Corp. 1995, 1996 5.7.6 - 1

Page 442: DB2/400 Manual de Consulta SQLmarce.com/docs/systems/manuales/db2_400_manual_consulta_sql_v3r7.pdf · VERSION Nota de Versión Segunda edición (noviembre de 1996) Este manual es

5.8 COMMENT ON La sentencia COMMENT ON añade o sustituye comentari os en las descripciones de catálogo de tablas, vistas, paquetes, parámetros , procedimientos, índices o columnas. Subtemas 5.8.1 Invocación 5.8.2 Autorización 5.8.3 Sintaxis 5.8.4 Descripción 5.8.5 Ejemplos

DB2/400 Manual de Consulta SQL V3R7 COMMENT ON

© Copyright IBM Corp. 1995, 1996 5.8 - 1

Page 443: DB2/400 Manual de Consulta SQLmarce.com/docs/systems/manuales/db2_400_manual_consulta_sql_v3r7.pdf · VERSION Nota de Versión Segunda edición (noviembre de 1996) Este manual es

5.8.1 Invocación Esta sentencia puede hospedarse en un programa de a plicación o emitirse interactivamente. Es una sentencia ejecutable que puede prepararse dinámicamente.

DB2/400 Manual de Consulta SQL V3R7 Invocación

© Copyright IBM Corp. 1995, 1996 5.8.1 - 1

Page 444: DB2/400 Manual de Consulta SQLmarce.com/docs/systems/manuales/db2_400_manual_consulta_sql_v3r7.pdf · VERSION Nota de Versión Segunda edición (noviembre de 1996) Este manual es

5.8.2 Autorización | Para comentar una tabla, vista, índice, columna o p aquete, los privilegios correspondientes al ID de autorización de la senten cia deben incluir al menos algo de lo siguiente: | � Para la tabla, vista, índice o paquete identific ado en la sentencia,| - El privilegio ALTER sobe la tabla, vista, í ndice o paquete y - La autorización del sistema *EXECUTE en la biblioteca que contiene| la tabla, vista, índice o paquete � Autorización de administrador El ID de autorización de la sentencia tiene el priv ilegio ALTER en la| tabla, vista, índice o paquete, cuando: | � Es el propietario de la tabla, vista, índice o p aquete � Se le ha otorgado el privilegio ALTER sobre la t abla, vista o paquete, o � Se le han otorgado las autorizaciones del sistem a *OBJALTER u *OBJMGT| a la tabla, vista, índice o paquete Para comentar un procedimiento o parámetro, los pri vilegios que tiene el ID de autorización de la sentencia deben incluir po r lo menos uno de los siguientes: � Para las tablas de catálogo SYSPROCS y SYSPARMS: - El privilegio UPDATE sobre la tabla, y - La autorización del sistema *EXECUTE sobre la biblioteca QSYS2 � Autorización de administrador El ID de autorización de la sentencia tiene el priv ilegio UPDATE sobre una tabla si: � Es el propietario de la tabla. � Se le ha otorgado el privilegio UPDATE sobre la tabla, o � Se le han otorgado las autorizaciones del sistem a *OBJOPR y *UPD sobre la tabla.

DB2/400 Manual de Consulta SQL V3R7 Autorización

© Copyright IBM Corp. 1995, 1996 5.8.2 - 1

Page 445: DB2/400 Manual de Consulta SQLmarce.com/docs/systems/manuales/db2_400_manual_consulta_sql_v3r7.pdf · VERSION Nota de Versión Segunda edición (noviembre de 1996) Este manual es

5.8.3 Sintaxis +-------------------------------------------------- ------------------------------------------------+ ¦ ¦ ¦ >>-- COMMENT ON--------------------------------------------------- ------------------------------> ¦ ¦ ¦ ¦ >------ TABLE---- nombre-tabla ------------------------------- IS -- constante-serie ---------------->< ¦ ¦ ¦ ¦ +- nombre-vista -+ ¦ ¦ ¦| ¦ ¦ +- INDEX-- nombre-índice -----------------------------¦ ¦ ¦ ¦ ¦ +- COLUMN---- nombre-tabla.nombre-col ----------------¦ ¦ ¦ ¦ ¦ ¦ +- nombre-vista.nombre-col -+ ¦ ¦ ¦ ¦ ¦ ¦ (1) ¦ ¦ ¦ ¦ ¦ +- PACKAGE----- nombre-paquete -----------------------¦ ¦ ¦ ¦ ¦ +- PROCEDURE-- nombre-procedimiento ------------------¦ ¦ ¦ ¦ ¦ +- PARAMETER-- nombre-procedimiento.nombre-parámetro -+ ¦ ¦ ¦ ¦ +- COLUMN-+ <-,----------------------- --------+ ¦ ¦ ¦ +--------------- nombre-tabla ----(---- nombre-col -- IS -- constante-serie ----)------¦ ¦ ¦ ¦ +- nombre-vista -+ ¦ ¦ ¦ ¦ <-,----- ----------------------------+ ¦ ¦ ¦ +- PARAMETER-- nombre-procedimiento --(---- nombre-parám -- IS -- constante-serie ----)-+ ¦ ¦ ¦ ¦ Nota: ¦ ¦ (1) Se puede utilizar la palabra clave PROGRAM c omo sinónimo de PACKAGE. ¦ ¦ ¦ +-------------------------------------------------- ------------------------------------------------+

DB2/400 Manual de Consulta SQL V3R7 Sintaxis

© Copyright IBM Corp. 1995, 1996 5.8.3 - 1

Page 446: DB2/400 Manual de Consulta SQLmarce.com/docs/systems/manuales/db2_400_manual_consulta_sql_v3r7.pdf · VERSION Nota de Versión Segunda edición (noviembre de 1996) Este manual es

5.8.4 Descripción TABLE Indica que se añadirá o sustituirá un comentari o de una tabla o vista. nombre-tabla o nombre-vista Identifica la tabla o vista a la que se ref iere el comentario. El nombre debe identificar una tabla o vista q ue exista en el servidor actual. | INDEX| Indicates that a comment will be added to or re placed for an index. | nombre-índice| Identifica el índice al que se aplica el co mentario. El nombre| debe identificar un índice que exista en el servidor actual. PACKAGE Indica que se añadirá o sustituirá un comentari o de un paquete. nombre-paquete Identifica el paquete al que se refiere el comentario. El nombre debe identificar un paquete que exista en e l servidor actual. COLUMN Indica que se añadirá o sustituirá un comentari o de una columna. nombre-tabla.nombre-col o nombre-vista.nombre-col Identifica la columna a la que se refiere e l comentario. El nombre-tabla o nombre-vista debe identificar una tabla o vista que exista en el servidor actual, y el nombre-col debe identificar una columna de dicha tabla o vista. PROCEDURE Indica que se añadirá o sustituirá un comentari o de un procedimiento. nombre-procedimiento Identifica el procedimiento al que se aplic a el comentario. El nombre debe identificar un procedimiento qu e exista en el servidor actual. PARAMETER Indica que se añadirá o sustituirá un comentari o de un parámetro. nombre-procedimiento.nombre-parámetro Identifica el parámetro al que se aplica el comentario. El nombre-procedimiento debe identificar un procedimiento que exista en el servidor actual, y el nombre-parámetro debe identificar un parámetro de dicho procedimiento. Para incluir comentarios sobre más de una columna d e una tabla o vista, especifique el nombre de tabla o vista y, a continu ación, entre paréntesis, una lista con este formato: nombre-col IS constante-serie, nombre-col IS constante-serie, ... El nombre de columna no debe estar calificado, cada nombre debe identificar una columna de la tabla o vista especif icada, y dicha tabla o vista debe existir en el servidor actual. Para incluir comentarios acerca de más de un paráme tro en un procedimiento, especifique el nombre de procedimien to y, a continuación, entre paréntesis, una lista con el formato: nombre-parám IS constante-serie, nombre-parám IS constante-serie, El nombre de parámetro no debe calificarse, cada no mbre debe identificar un parámetro del procedimiento especificado, y dich o procedimiento debe existir en el servidor actual. IS Introduce el comentario que desea hacer. constante-serie Puede ser cualquier constante de serie de c aracteres de hasta 2000 caracteres. La constante puede contener ca racteres SBCS o DBCS.

DB2/400 Manual de Consulta SQL V3R7 Descripción

© Copyright IBM Corp. 1995, 1996 5.8.4 - 1

Page 447: DB2/400 Manual de Consulta SQLmarce.com/docs/systems/manuales/db2_400_manual_consulta_sql_v3r7.pdf · VERSION Nota de Versión Segunda edición (noviembre de 1996) Este manual es

5.8.5 Ejemplos Ejemplo 1 : Insertar un comentario para la tabla EMPLEADO. COMMENT ON TABLE EMPLEADO IS 'Refleja la reorganización del primer trimestre de 1981' Ejemplo 2 : Insertar un comentario para la vista EMP_VISTA1. COMMENT ON TABLE EMP_VISTA1 IS 'Vista de la tabla EMPLEADO sin la información sobr e sueldos' Ejemplo 3 : Insertar un comentario para la columna NUMEMP la tabla EMPLEADO. COMMENT ON COLUMN EMPLEADO.NUMEMP IS 'Máxima calificación académica obtenida' Ejemplo 4 : Entrar comentarios sobre dos columnas de la tabl a DATOSCORP.DEPART. COMMENT ON DATOSCORP.DEPART ( NUMJE IS 'NUMERO DE EMPLEADO DEL JEFE DE DEPARTAMENTO' DEPTOADM IS 'NUMERO DEL DEPARTAMENTO DE ADMINISTRACION') Ejemplo 5 : Insertar un comentario para el paquete DATOSCORP .NOMINA. COMMENT ON PACKAGE DATOSCORP.NOMINA IS 'Este paquete se usa para el proceso distribuido de nóminas.'

DB2/400 Manual de Consulta SQL V3R7 Ejemplos

© Copyright IBM Corp. 1995, 1996 5.8.5 - 1

Page 448: DB2/400 Manual de Consulta SQLmarce.com/docs/systems/manuales/db2_400_manual_consulta_sql_v3r7.pdf · VERSION Nota de Versión Segunda edición (noviembre de 1996) Este manual es

5.9 COMMIT La sentencia COMMIT finaliza una unidad de trabajo y compromete todos los cambios de la base de datos realizados por esa unid ad de trabajo. Subtemas 5.9.1 Invocación 5.9.2 Autorización 5.9.3 Sintaxis 5.9.4 Descripción 5.9.5 Notas 5.9.6 Ejemplo

DB2/400 Manual de Consulta SQL V3R7 COMMIT

© Copyright IBM Corp. 1995, 1996 5.9 - 1

Page 449: DB2/400 Manual de Consulta SQLmarce.com/docs/systems/manuales/db2_400_manual_consulta_sql_v3r7.pdf · VERSION Nota de Versión Segunda edición (noviembre de 1996) Este manual es

5.9.1 Invocación Esta sentencia puede hospedarse en un programa de a plicación o emitirse interactivamente. Es una sentencia ejecutable que puede prepararse dinámicamente. COMMIT no está permitido en un programa desencadena nte si éste y el programa de desencadenamiento se ejecutan bajo la m isma definición de compromiso. No se permite COMMIT en un procedimien to si a éste se le llama en un servidor de aplicación remoto.

DB2/400 Manual de Consulta SQL V3R7 Invocación

© Copyright IBM Corp. 1995, 1996 5.9.1 - 1

Page 450: DB2/400 Manual de Consulta SQLmarce.com/docs/systems/manuales/db2_400_manual_consulta_sql_v3r7.pdf · VERSION Nota de Versión Segunda edición (noviembre de 1996) Este manual es

5.9.2 Autorización No se requiere ninguna.

DB2/400 Manual de Consulta SQL V3R7 Autorización

© Copyright IBM Corp. 1995, 1996 5.9.2 - 1

Page 451: DB2/400 Manual de Consulta SQLmarce.com/docs/systems/manuales/db2_400_manual_consulta_sql_v3r7.pdf · VERSION Nota de Versión Segunda edición (noviembre de 1996) Este manual es

5.9.3 Sintaxis +-------------------------------------------------- ----------------------+ ¦ ¦ ¦ +- WORK-+ ¦ ¦ >>-- COMMIT--------------------------------------------------- ------->< ¦ ¦ +- HOLD-+ ¦ ¦ ¦ +-------------------------------------------------- ----------------------+

DB2/400 Manual de Consulta SQL V3R7 Sintaxis

© Copyright IBM Corp. 1995, 1996 5.9.3 - 1

Page 452: DB2/400 Manual de Consulta SQLmarce.com/docs/systems/manuales/db2_400_manual_consulta_sql_v3r7.pdf · VERSION Nota de Versión Segunda edición (noviembre de 1996) Este manual es

5.9.4 Descripción La sentencia COMMIT finaliza la unidad de trabajo e n la que se ejecuta e inicia una unidad de trabajo nueva. Compromete tod os los cambios que realizan las sentencias ALTER, CREATE, COMMENT ON, DELETE, DROP (excepto DROP COLLECTION), GRANT, INSERT, LABEL ON, REVOKE y UPDATE, ejecutadas durante la unidad de trabajo. Finalizan las conexiones en el estado pendiente de liberación. WORK COMMIT WORK tiene el mismo efecto que COMMIT. HOLD Indica una retención sobre los recursos. Si se especifica, los cursores actualmente abiertos no se cierran, la s sentencias SQL preparadas se conservan y se mantienen todos lo s recursos adquiridos durante la unidad de trabajo. Se liberan los b loqueos sobre filas y objetos específicos adquiridos implícitamente d urante la unidad de trabajo. Si se omite HOLD: � Los cursores abiertos bajo la definición de compromiso de esta unidad de trabajo se cierran a menos que se hayan declarado con la cláusula WITH HOLD. � Las sentencias SQL preparadas se descartan e xcepto en el caso de las sentencias-select preparadas utilizadas por un cursor que se han declarado con la cláusula WITH HOLD. � Se liberan los bloqueos de tabla adquiridos por la sentencia LOCK TABLE bajo la definición de compromiso de e sta unidad de trabajo. Se liberan todos los bloqueos adquiridos implícitam ente, excepto los bloqueos a nivel de objeto necesarios para los curs ores que no están cerrados.

DB2/400 Manual de Consulta SQL V3R7 Descripción

© Copyright IBM Corp. 1995, 1996 5.9.4 - 1

Page 453: DB2/400 Manual de Consulta SQLmarce.com/docs/systems/manuales/db2_400_manual_consulta_sql_v3r7.pdf · VERSION Nota de Versión Segunda edición (noviembre de 1996) Este manual es

5.9.5 Notas En determinadas circunstancias, puede realizarse un a operación COMMIT implícita. Sin embargo, se recomienda emitir una s entencia COMMIT o ROLLBACK explícita antes de que finalice la aplicac ión. � Para el grupo de activación por omisión: - No se realiza ninguna operación COMMIT impl ícita cuando las aplicaciones que se ejecutan en el grupo de activación por omisión finalizan. El SQL interactivo, el Gestor d e Consultas y los programas que no sean ILE son ejemplos de p rogramas que se ejecutan en el grupo de activación por omis ión. - Para comprometer el trabajo, debe emitir CO MMIT. � Para los grupos de activación que no sean por om isión cuando el ámbito de la definición de compromiso es el grupo de a ctivación: - Si el grupo de activación finaliza normalme nte, la definición de compromiso queda comprometida implícitament e. - Si el grupo de activación finaliza anormalm ente, la definición de compromiso queda retrotraída implícitamente . � Independientemente de cuál sea el tipo del grupo de activación, si el ámbito de la definición de compromiso es el tra bajo, no se realiza nunca ninguna operación de compromiso implícita . Una unidad de trabajo puede incluir el proceso de h asta 524288 filas, incluyendo las filas recuperadas durante una senten cia SELECT o FETCH, (24) y las filas insertadas, suprimidas o actualizadas como parte de las sentencias INSERT, DELETE y UPDATE. (25) Las operaciones de compromiso y retrotracción no af ectan a la sentencia DROP COLLECTION y, por tanto, esta sentencia no se permite en un programa de aplicación que también especifique COMMIT(*CHG), COMMIT(*CS), COMMIT(*ALL) o COMMIT(*RR). La definición de compromiso utilizada por SQL se de terminada de la siguiente manera: � Si el grupo de activación del programa que llama a SQL ya está utilizando una definición de compromiso a nivel de grupo de activación, SQL utilizará esa definición de com promiso. � Si el grupo de activación del programa que llama a SQL está utilizando la definición de compromiso a nivel trabajo, SQ L utilizará esa definición de compromiso. � Si el grupo de activación del programa que llama a SQL no está utilizando actualmente ninguna definición de co mpromiso, pero se ha arrancado la definición de compromiso de trabaj o, SQL utilizará ésta. � Si el grupo de activación del programa que llama a SQL no está utilizando actualmente ninguna definición de co mpromiso y no se ha arrancado la definición de compromiso de trabaj o, SQL arrancará implícitamente una definición de compromiso. S QL utiliza el mandato STRCMTCTL (Arrancar Control de Compromiso) con: - Un parámetro CMTSCOPE(*ACTGRP) - Un parámetro LCKLVL basado en la opción COM MIT especificada en el mandato CRTSQLxxx, STRSQL o RUNSQLSTM. En REXX, el parámetro LCKLVL se basa en la opción de compromiso d e la sentencia SET OPTION. Los cursores asociados con una sentencia preparada que está destruida no se pueden abrir hasta que la sentencia está prepara da de nuevo. (24) A menos que haya especificado COMMIT(*CHG) o COMMIT(*CS), en cuyo caso estas filas no se incluyen en el t otal. (25) Este límite también incluye: � Todos los registros a los que se accede o qu e se cambian mediante archivos abiertos bajo el control de compromiso mediante el proceso de archivos en lenguaje de alto nivel � Todas las filas suprimidas, actualizadas o i nsertadas como resultado de un desencadenante o de un a regla de supresión de integridad de referencia de CA SCADE, SET NULL o SET DEFAULT.

DB2/400 Manual de Consulta SQL V3R7 Notas

© Copyright IBM Corp. 1995, 1996 5.9.5 - 1

Page 454: DB2/400 Manual de Consulta SQLmarce.com/docs/systems/manuales/db2_400_manual_consulta_sql_v3r7.pdf · VERSION Nota de Versión Segunda edición (noviembre de 1996) Este manual es

5.9.6 Ejemplo En un programa escrito en PL/I, compilado con COMMI T (*CHG), transferir una comisión de un cierto importe (COMI) de un empl eado (NUMEMP) a otro de la tabla EMPLEADO. Restar el importe de una fila y sumárselo a la otra. Utilizar la sentencia COMMIT WORK para asegurarse d e que no realiza ningún cambio permanente en la base de datos hasta que amb as operaciones hayan finalizado satisfactoriamente. XFRCOMM: PROC OPTIONS(MAIN); EXEC SQL BEGIN DECLARE SECTION; DCL IMPORTE FIXED DECIMAL(5,2); DCL DE_NUMEMP CHAR(6); DCL A_NUMEMP CHAR(6); EXEC SQL END DECLARE SECTION; EXEC SQL INCLUDE SQLCA; EXEC SQL WHENEVER SQLERROR GOTO SQLERR; GET ... EXEC SQL UPDATE EMPLEADO SET COMI = COMI - :IMPORTE WHERE NUMEMP = :DE_NUMEMP; EXEC SQL UPDATE EMPLEADO SET COMI = COMI + :IMPORTE WHERE NUMEMP = :A_NUMEMP; FINISHED: EXEC SQL COMMIT WORK; RETURN; SQLERR: PUT ... EXEC SQL WHENEVER SQLERROR CONTINUE; /* continuar si hay error */ EXEC SQL ROLLBACK WORK; RETURN; END XFRCOMM;

DB2/400 Manual de Consulta SQL V3R7 Ejemplo

© Copyright IBM Corp. 1995, 1996 5.9.6 - 1

Page 455: DB2/400 Manual de Consulta SQLmarce.com/docs/systems/manuales/db2_400_manual_consulta_sql_v3r7.pdf · VERSION Nota de Versión Segunda edición (noviembre de 1996) Este manual es

5.10 CONNECT (Tipo 1) La sentencia CONNECT (TYPE 1) conecta un grupo de a ctivación dentro de un proceso de aplicación al servidor de aplicación ide ntificado utilizando las reglas para la unidad de trabajo remota. Este servidor pasa a ser el servidor actual del grupo de activación. Este tipo de sentencia CONNECT se utiliza si se ha especificado RDBCNNMTH(*RUW) en el mandato CRTSQLxxx. Las diferencias existentes entre los dos tipos de s entencias se describen en el apartado "Diferencias entre CONNECT (Tipo 1) y CONNECT (Tipo 2)" en el tema F.1 . Consulte el apartado "Unidad de trabajo distribuida dirigida por la aplicación" en el tema 1.20.4 para obtener más información acerca de los estados de conexión. Subtemas 5.10.1 Invocación 5.10.2 Autorización 5.10.3 Sintaxis 5.10.4 Descripción 5.10.5 Notas 5.10.6 Ejemplos

DB2/400 Manual de Consulta SQL V3R7 CONNECT (Tipo 1)

© Copyright IBM Corp. 1995, 1996 5.10 - 1

Page 456: DB2/400 Manual de Consulta SQLmarce.com/docs/systems/manuales/db2_400_manual_consulta_sql_v3r7.pdf · VERSION Nota de Versión Segunda edición (noviembre de 1996) Este manual es

5.10.1 Invocación Esta sentencia sólo puede hospedarse en un programa de aplicación o emitirse interactivamente. Es una sentencia ejecut able que no puede prepararse dinámicamente. No debe especificarse en REXX. CONNECT no se permite en un programa desencadenante . CONNECT no se permite en un procedimiento externo si se llama a d icho procedimiento externo en un servidor de la aplicación remoto.

DB2/400 Manual de Consulta SQL V3R7 Invocación

© Copyright IBM Corp. 1995, 1996 5.10.1 - 1

Page 457: DB2/400 Manual de Consulta SQLmarce.com/docs/systems/manuales/db2_400_manual_consulta_sql_v3r7.pdf · VERSION Nota de Versión Segunda edición (noviembre de 1996) Este manual es

5.10.2 Autorización Los privilegios del ID de autorización de la senten cia deben incluir la seguridad a nivel de comunicaciones (consulte el ap artado que trata sobre la seguridad en el manual Distributed Database Programming , SC41-3702). Si el servidor de aplicación es DB2 para OS/400, el perfil de usuario de la persona que emite la sentencia debe ser también un perfil de usuario válido en el sistema servidor de la aplicación, a m enos que se especifique USER; en este caso, la cláusula USER debe especific ar un perfil de usuario válido en el sistema servidor de la aplicación.

DB2/400 Manual de Consulta SQL V3R7 Autorización

© Copyright IBM Corp. 1995, 1996 5.10.2 - 1

Page 458: DB2/400 Manual de Consulta SQLmarce.com/docs/systems/manuales/db2_400_manual_consulta_sql_v3r7.pdf · VERSION Nota de Versión Segunda edición (noviembre de 1996) Este manual es

5.10.3 Sintaxis +-------------------------------------------------- ----------------------+ ¦ ¦ ¦ >-- CONNECT--------------------------------------------------- --------> ¦ ¦ +- RESET-----------¦ ¦ ¦ +-¦ cláusula-to +-+ ¦ ¦ ¦ ¦ cláusula-to: ¦ ¦ +-- TO---- nombre-servidor ---------------------------------------------> ¦ ¦ +- var-leng-princ --+ ¦ ¦ ¦ ¦ >------------------------------------------------ --------------------¦ ¦ ¦ +- USER---- nombre-autorización ---- USING---- contraseña -------+ ¦ ¦ +- var-leng-princ ------+ +- var-leng-princ -+ ¦ ¦ ¦ +-------------------------------------------------- ----------------------+

DB2/400 Manual de Consulta SQL V3R7 Sintaxis

© Copyright IBM Corp. 1995, 1996 5.10.3 - 1

Page 459: DB2/400 Manual de Consulta SQLmarce.com/docs/systems/manuales/db2_400_manual_consulta_sql_v3r7.pdf · VERSION Nota de Versión Segunda edición (noviembre de 1996) Este manual es

5.10.4 Descripción TO nombre-servidor o var-leng-princ Identifica al servidor de la aplicación mediant e el nombre de servidor especificado o mediante el nombre de servidor q ue figura en la variable del lenguaje principal. Si se especif ica una variable del lenguaje principal, ésta: � Debe ser una variable de serie de caracteres . � No debe ir seguida de una variable de indica dor. � El nombre de servidor debe estar justificado por la izquierda en la variable del lenguaje principal y debe o bservar las reglas de creación de identificadores ordinarios. � Si la longitud del nombre de servidor es men or que la longitud de la variable del lenguaje principal, debe re llenarse con blancos por la derecha. Si el nombre-servidor es la base de datos relac ional local y se ha especificado un nombre-autorización, debe ser e l nombre-autorización del trabajo. Si el nombre-autorización especif icado es distinto del nombre-autorización del trabajo, se produce un error y se deja la aplicación en el estado no conectado. USER nombre-autorización o var-leng-princ Identifica el nombre-autorización por el nombre-autorización especificado o una var-leng-princ que contenga el nombre de autorización que se utilizará para arrancar el trabajo remoto. Si se especifica una var-leng-princ , ésta � Debe ser una variable de serie de caracteres . � No debe ir seguida de una variable de indica dor. � El nombre de autorización debe estar justifi cado a la izquierda dentro de la variable del lenguaje principa l y debe observar las reglas de creación de nombres de autorizaci ón. � Si la longitud del nombre de autorización es inferior a la longitud de la variable del lenguaje princi pal, deberá rellenarse con blancos por la derecha. USING contraseña o var-leng-princ Identifica la contraseña mediante la contraseña especificada o una var-leng-princ que contenga la contraseña correspondiente al nombre-autorización que se utilizará para arran car el trabajo remoto. Si se especifica una var-leng-princ , ésta � Debe ser una variable de serie de caracteres . � No debe ir seguida de una variable de indica dor. � La contraseña debe estar justificada por la izquierda dentro de la variable del lenguaje principal. � Si la longitud de la contraseña es inferior a la de la variable del lenguaje principal, deberá rellenarse c on blancos por la derecha. Cuando se ejecuta la sentencia CONNECT, el nombre d e servidor que se ha especificado o el que contiene la variable del leng uaje principal debe identificar un servidor de la aplicación descrito e n el directorio local y el grupo de activación debe estar en el estado cone ctable. Si la sentencia CONNECT es satisfactoria: � Se cierran todos los cursores abiertos, se destr uyen todas las sentencias preparadas y se liberan todos los bl oqueos de todas las conexiones actuales y latentes. � Se desconecta el grupo de activación de todas la s conexiones actuales y latentes , si existen, y se conecta al servid or de la aplicación identificado. � Se coloca el nombre del servidor de la aplicació n en el registro especial CURRENT SERVER. � Se coloca información acerca del servidor de la aplicación en los campos SQLERRP y SQLERRD(4) de la SQLCA. Si el servidor de la aplicación es un producto de bases de datos rel acionales de IBM, la información del campo SQLERRP tiene el formato pppvvrrm , donde: - ppp identifica el producto de la forma siguiente: ARI para SQL/DS* DSN para DB2 para MVS QSQ para DB2 para OS/400 SQL para todos los demás productos DB2| - vv es un identificador de versión de dos dígitos tal como '04' - rr es un identificador de release de dos dígitos, por ejemplo '01' - m es el nivel de modificación de un dígito, tal como '0' | Por ejemplo, si el servidor de la aplicación es la versión 4 de DB2| para MVS, el valor de SQLERRP es 'DSN04010'. El campo SQLERRD(4) de la SQLCA contendrá valor es que indican si el servidor de la aplicación permite que se realic en actualizaciones que se puedan comprometer. Para una sentencia CONN ECT (Tipo 1) SQLERRD(4) contendrá siempre el valor 1. Este indica que se pueden realizar actualizaciones que pueden comprometerse y que la conexión: - Utiliza una conversación no protegida o bie n - Es una conexión a un programa controlador d e peticionario de la aplicación que utiliza el método de conexió n *RUW o - Es una conexión local que utiliza el método de conexión *RUW. � La información adicional acerca de la conexión s e coloca en el campo SQLERRMC de la SQLCA. Consulte el Apéndice B, "Área de comunicaciones

DB2/400 Manual de Consulta SQL V3R7 Descripción

© Copyright IBM Corp. 1995, 1996 5.10.4 - 1

Page 460: DB2/400 Manual de Consulta SQLmarce.com/docs/systems/manuales/db2_400_manual_consulta_sql_v3r7.pdf · VERSION Nota de Versión Segunda edición (noviembre de 1996) Este manual es

SQL" en el tema B.0 para obtener una descripción de la información del campo SQLERRMC. Si la sentencia CONNECT no es satisfactoria, el cam po SQLERRP de la SQLCA queda establecido en el nombre del módulo del petic ionario de la aplicación que ha detectado el error. Observe que los tres primeros caracteres del nombre de módulo identifican el prod ucto. Si, por ejemplo, el peticionario de la aplicación es DB/2, los tres primeros caracteres son 'SQL'. Si la sentencia CONNECT no es satisfactoria porque el grupo de activación no está en el estado conectable, el estado de conex ión del grupo de activación no cambia. Si la sentencia CONNECT no e s satisfactoria por cualquier otra razón: � El grupo de activación permanece en un estado co nectable pero no conectado � Se cierran todos los cursores abiertos, se destr uyen todas las sentencias preparadas y se liberan todos los bl oqueos de todas las conexiones actuales y latentes. Toda aplicación en estado conectable pero no conect ado sólo puede ejecutar las sentencias CONNECT o SET CONNECTION. RESET CONNECT RESET equivale a CONNECT TO x donde x e s el nombre de servidor local. CONNECT sin operando Este formato de la sentencia CONNECT devuelve i nformación sobre el servidor actual y no tiene ningún efecto sobre los estados de conexión, los cursores abiertos, las sentencias preparadas ni los bloqueos. La información se devuelve en la SQL CA según lo descrito anteriormente.

DB2/400 Manual de Consulta SQL V3R7 Descripción

© Copyright IBM Corp. 1995, 1996 5.10.4 - 2

Page 461: DB2/400 Manual de Consulta SQLmarce.com/docs/systems/manuales/db2_400_manual_consulta_sql_v3r7.pdf · VERSION Nota de Versión Segunda edición (noviembre de 1996) Este manual es

5.10.5 Notas Para obtener una descripción de los estados de cone xión, consulte el apartado "Gestión de la conexión de unidades de trabajo remo tas" en el tema 1.20.3.1 . � Al ejecutarse en el grupo de activación por omis ión, el programa SQL se conecta implícitamente a una base de datos r elacional remota cuando: - El grupo de activación está en un estado co nectable. - Se ejecuta la primera sentencia SQL del pri mer programa SQL de la pila de programas. � Al ejecutarse en un grupo de activación que no s ea por omisión, el programa SQL se conecta implícitamente a una ba se de datos relacional remota cuando se ejecuta la primera sentencia S QL del primer programa SQL de dicho grupo de activación. Nota: Es una buena costumbre dejar que la primera sente ncia ejecutada por un grupo de activación sea sea la sentencia CONNECT. Las conexiones implícitas envían siempre el nombre- autorización del trabajo de peticionario de la aplicación, y no enví an contraseñas. Si el nombre-autorización del trabajo de servidor de la a plicación es diferente o si se debe enviar una contraseña, debe utilizarse una sentencia de conexión explícita. Para obtener más información a cerca de conexiones implícitas, consulte el manual DB/2 for OS/400 SQL Programming . Una vez establecida una conexión a una base de datos relaci onal para un perfil de usuario, es posible que la contraseña, si se especi fica, no se valide de nuevo en conexiones posteriores a la misma base de datos relacional con el mismo perfil de usuario. La revalidación de la con traseña depende de si la conversación sigue estando activa. Consulte el manual Distributed Database Programming para obtener más detalles. Se pueden ejecutar de forma satisfactoria sentencia s CONNECT consecutivas ya que CONNECT no aparta al grupo de activación del estado conectable. Las sentencias CONNECT a una conexión actual o late nte del grupo de activación se ejecutan de la siguiente manera: � Si la conexión identificada por el nombre-servid or se ha establecido utilizando una sentencia CONNECT (Tipo 1), no s e lleva a cabo ninguna acción. Los cursores no se cierran, las senten cias preparadas no se destruyen y los bloqueos no se liberan. � Si la conexión identificada por el nombre-servid or se ha establecido utilizando una sentencia CONNECT (Tipo 2), la s entencia CONNECT se ejecuta como cualquier otra sentencia CONNECT. CONNECT no se puede ejecutar satisfactoriamente cua ndo le precede cualquier sentencia SQL distinta de CONNECT, COMMIT , DISCONNECT, SET CONNECTION, RELEASE o ROLLBACK. Para evitar errore s, ejecute una operación de compromiso o retrotracción antes de qu e se ejecute una sentencia CONNECT. Si cualquiera de las conexiones actuales o latentes anteriores se ha establecido utilizando conversaciones protegidas, l a sentencia CONNECT (Tipo 1) fallará. Debe utilizarse una sentencia CO NNECT (Tipo 2), o deben finalizarse las conexiones que utilicen conversacio nes protegidas liberando las conexiones y realizando una operación de compromiso satisfactoria. Para obtener más información acerca de cómo conecta rse a una base de datos relacional remota y al directorio local, consulte l os manuales DB/2 for OS/400 SQL Programming , SC41-4611, y Distributed Database Programming , SC41-3702.

DB2/400 Manual de Consulta SQL V3R7 Notas

© Copyright IBM Corp. 1995, 1996 5.10.5 - 1

Page 462: DB2/400 Manual de Consulta SQLmarce.com/docs/systems/manuales/db2_400_manual_consulta_sql_v3r7.pdf · VERSION Nota de Versión Segunda edición (noviembre de 1996) Este manual es

5.10.6 Ejemplos Ejemplo 1 : En un programa escrito en PL/I, el usuario PEPE se conectará al servidor de la aplicación LAB3BCN. La contraseñ a de PEPE es XYZ1. NOMBUSUA='PEPE'; CONTRUSU='XYZ1'; EXEC SQL CONNECT TO LAB3BCN USER :NOMBUSUA USING :CONTRUSU; Ejemplo 2 : En un programa escrito en PL/I, conectar un serv idor de la aplicación cuyo nombre está almacenado en la variab le del lenguaje principal SERVID_APL (varchar(18)). Tras una conex ión satisfactoria, copiar el identificador de producto de 3 caracteres del servidor de la aplicación a la variable del lenguaje principal PRO DUCTO (char(3)). EXEC SQL CONNECT TO :SERVID_APL; IF SQLSTATE = '00000' THEN PRODUCTO = SUBSTR(SQLERRP,1,3);

DB2/400 Manual de Consulta SQL V3R7 Ejemplos

© Copyright IBM Corp. 1995, 1996 5.10.6 - 1

Page 463: DB2/400 Manual de Consulta SQLmarce.com/docs/systems/manuales/db2_400_manual_consulta_sql_v3r7.pdf · VERSION Nota de Versión Segunda edición (noviembre de 1996) Este manual es

5.11 CONNECT (Tipo 2) La sentencia CONNECT (Tipo 2) conecta un grupo de a ctivación dentro de un proceso de aplicación al servidor de la aplicación identificado utilizando las reglas de la unidad de trabajo distribuida diri gida por la aplicación. Este servidor pasa a ser el servidor actual del gru po de activación. Este tipo de sentencia CONNECT se utiliza si se ha espec ificado RDBCNNMTH(*DUW) en el mandato CRTSQLxxx. Las diferencias existente s entre los dos tipos de sentencias se describen en el apartado "Diferencias entre CONNECT (Tipo 1) y CONNECT (Tipo 2)" en el tema F.1 . Consulte el apartado "Unidad de trabajo distribuida dirigida por la aplicación" en el tema 1.20.4 para obtener más información acerca de los estados de co nexión. Subtemas 5.11.1 Invocación 5.11.2 Autorización 5.11.3 Sintaxis 5.11.4 Descripción 5.11.5 Notas 5.11.6 Ejemplos

DB2/400 Manual de Consulta SQL V3R7 CONNECT (Tipo 2)

© Copyright IBM Corp. 1995, 1996 5.11 - 1

Page 464: DB2/400 Manual de Consulta SQLmarce.com/docs/systems/manuales/db2_400_manual_consulta_sql_v3r7.pdf · VERSION Nota de Versión Segunda edición (noviembre de 1996) Este manual es

5.11.1 Invocación Esta sentencia sólo puede hospedarse en un programa de aplicación o emitirse interactivamente. Es una sentencia ejecut able que no puede prepararse dinámicamente. No debe especificarse en REXX. CONNECT no se permite en un programa desencadenante . CONNECT no se permite en un procedimiento externo si se llama a d icho procedimiento externo en un servidor de la aplicación remoto.

DB2/400 Manual de Consulta SQL V3R7 Invocación

© Copyright IBM Corp. 1995, 1996 5.11.1 - 1

Page 465: DB2/400 Manual de Consulta SQLmarce.com/docs/systems/manuales/db2_400_manual_consulta_sql_v3r7.pdf · VERSION Nota de Versión Segunda edición (noviembre de 1996) Este manual es

5.11.2 Autorización Los privilegios del ID de autorización de la senten cia deben incluir la seguridad a nivel de comunicaciones (consulte el ap artado que trata sobre la seguridad en el manual Distributed Database Programming , SC41-3702). Si el servidor de aplicación es DB2 para OS/400, el ID de perfil de la persona que emite la sentencia debe ser también un perfil de usuario válido en el sistema servidor de la aplicación, a m enos que se especifique USER; en este caso, la cláusula USER debe especific ar un perfil de usuario válido en el sistema servidor de la aplicación.

DB2/400 Manual de Consulta SQL V3R7 Autorización

© Copyright IBM Corp. 1995, 1996 5.11.2 - 1

Page 466: DB2/400 Manual de Consulta SQLmarce.com/docs/systems/manuales/db2_400_manual_consulta_sql_v3r7.pdf · VERSION Nota de Versión Segunda edición (noviembre de 1996) Este manual es

5.11.3 Sintaxis +-------------------------------------------------- ----------------------+ ¦ ¦ ¦ >-- CONNECT--------------------------------------------------- --------> ¦ ¦ +- RESET-----------¦ ¦ ¦ +-¦ cláusula-to +-+ ¦ ¦ ¦ ¦ cláusula-to: ¦ ¦ +-- TO---- nombre-servidor ---------------------------------------------> ¦ ¦ +- var-leng-princ --+ ¦ ¦ ¦ ¦ >------------------------------------------------ --------------------¦ ¦ ¦ +- USER---- nombre-autorización ---- USING---- contraseña -------+ ¦ ¦ +- var-leng-princ ------+ +- var-leng-princ -+ ¦ ¦ ¦ +-------------------------------------------------- ----------------------+

DB2/400 Manual de Consulta SQL V3R7 Sintaxis

© Copyright IBM Corp. 1995, 1996 5.11.3 - 1

Page 467: DB2/400 Manual de Consulta SQLmarce.com/docs/systems/manuales/db2_400_manual_consulta_sql_v3r7.pdf · VERSION Nota de Versión Segunda edición (noviembre de 1996) Este manual es

5.11.4 Descripción TO nombre-servidor o var-leng-princ Identifica al servidor de la aplicación mediant e el nombre de servidor especificado o mediante el nombre de servidor q ue figura en la variable del lenguaje principal. Si se especif ica una variable del lenguaje principal, ésta: � Debe ser una variable de serie de caracteres . � No debe ir seguida de una variable de indica dor. � El nombre de servidor debe estar justificado por la izquierda en la variable del lenguaje principal y debe o bservar las reglas de creación de identificadores ordinarios. � Si la longitud del nombre de servidor es men or que la longitud de la variable del lenguaje principal, debe re llenarse con blancos por la derecha. USER nombre-autorización o var-leng-princ Identifica el nombre-autorización por el nombre-autorización especificado o una var-leng-princ que contenga el nombre de autorización que se utilizará para arrancar el trabajo remoto. Si se especifica una var-leng-princ , ésta � Debe ser una variable de serie de caracteres . � No debe ir seguida de una variable de indica dor. El nombre de autorización debe estar justificado a la iz quierda dentro de la variable del lenguaje principal y debe obse rvar las reglas de creación de nombres de autorización. � Si la longitud del nombre de autorización es inferior a la longitud de la variable del lenguaje princi pal, deberá rellenarse con blancos por la derecha. USING contraseña o var-leng-princ Identifica la contraseña mediante la contraseña especificada o una var-leng-princ que contenga la contraseña correspondiente al nombre-autorización que se utilizará para arran car el trabajo remoto. Si se especifica la contraseña como literal, de be ser una serie de caracteres. La longitud máxima es de 10 caract eres. Debe estar justificada a la izquierda. Si se especifica una var-leng-princ , ésta � Debe ser una variable de serie de caracteres . � No debe ir seguida de una variable de indica dor. � La contraseña debe estar justificada por la izquierda dentro de la variable del lenguaje principal. � Si la longitud de la contraseña es inferior a la de la variable del lenguaje principal, deberá rellenarse c on blancos por la derecha. Cuando se ejecuta la sentencia CONNECT, el nombre d e servidor que se ha especificado o el que contiene la variable del leng uaje principal debe identificar un servidor de la aplicación descrito e n el directorio local. Supongamos que S es el nombre del servidor especifi cado o el nombre del servidor que figura en la variable del lenguaje pri ncipal. S no debe identificar una conexión existente del proceso de a plicación. Si la sentencia CONNECT es satisfactoria: � Se crea una conexión al servidor de la aplicació n S y se coloca en los estados actual y retenido. La conexión anterio r, si existe, se coloca en el estado latente. � S se coloca en el registro especial CURRENT SERV ER. � Se coloca la información acerca del servidor de la aplicación S en los campos SQLERRP y SQLERRD(4) de la SQLCA. Si el servidor de la aplicación es un producto de bases de datos rel acionales de IBM, la información del campo SQLERRP tiene el formato pppvvrrm , donde: - ppp identifica el producto de la forma siguiente: ARI para SQL/DS* DSN para DB2 para MVS QSQ para DB2 para OS/400 SQL para todos los demás productos DB2| - vv es un identificador de versión dos dígitos tal com o '04' - rr es un identificador de release de dos dígitos, por ejemplo '01' - m es el nivel de modificación de un dígito, tal como '0' | Por ejemplo, si el servidor de la aplicación es la versión 4 de DB2| para MVS, el valor de SQLERRP es 'DSN04010'. El campo SQLERRD(4) de la SQLCA contendrá valor es que indican si el servidor de la aplicación S permite que se real icen actualizaciones que se puedan comprometer. A continuación se f acilita una lista de los valores del campo SQLERRD(4) de la SQLCA y su significado en CONNECT: - 1 - Pueden realizarse actualizaciones que se puedan comprometer. La conversación no está protegida. - 2 - No se pueden realizar actualizaciones que se puedan comprometer. La conversación no está prote gida. - 3 - No se sabe si se pueden realizar actua lizaciones que se puedan comprometer. La conversación está p rotegida. - 4 - No se sabe si se pueden realizar actua lizaciones que se puedan comprometer. La conversación no est á protegida. - 5 - No se sabe si se pueden realizar actua lizaciones que se puedan comprometer. La conexión es una con exión local o una

DB2/400 Manual de Consulta SQL V3R7 Descripción

© Copyright IBM Corp. 1995, 1996 5.11.4 - 1

Page 468: DB2/400 Manual de Consulta SQLmarce.com/docs/systems/manuales/db2_400_manual_consulta_sql_v3r7.pdf · VERSION Nota de Versión Segunda edición (noviembre de 1996) Este manual es

conexión a un programa de controlador de pe ticionario de la aplicación. � La información adicional acerca de la conexión s e coloca en el campo SQLERRMC de la SQLCA. Consulte el Apéndice B, "Área de comunicaciones SQL" en el tema B.0 para obtener una descripción de la información del campo SQLERRMC. Si la sentencia CONNECT no es satisfactoria, el est ado de conexión del grupo de activación y los estados de sus conexiones no se modifican. CONNECT RESET CONNECT RESET equivale a CONNECT TO x donde x es el nombre de servidor local. CONNECT sin operando Este formato de la sentencia CONNECT devuelve i nformación sobre el servidor actual y no tiene ningún efecto sobre los estados de conexión, los cursores abiertos, las sentencias preparadas ni los bloqueos. La información se devuelve en los ca mpos de la SQLCA según lo descrito anteriormente. Además, el campo SQLERRD(3) de la SQLCA indicar á el estado de la conexión correspondiente a esta unidad de traba jo. Tendrá uno de los valores siguientes: � 1 - Se pueden realizar actualizaciones que se puedan comprometer en la conexión de esta unidad de trabajo. � 2 - No se pueden realizar actualizaciones q ue se puedan comprometer en la conexión de esta unidad d e trabajo.

DB2/400 Manual de Consulta SQL V3R7 Descripción

© Copyright IBM Corp. 1995, 1996 5.11.4 - 2

Page 469: DB2/400 Manual de Consulta SQLmarce.com/docs/systems/manuales/db2_400_manual_consulta_sql_v3r7.pdf · VERSION Nota de Versión Segunda edición (noviembre de 1996) Este manual es

5.11.5 Notas Las conexiones implícitas envían siempre el nombre- autorización del trabajo de peticionario de la aplicación pero no co ntraseñas. Si el nombre-autorización del trabajo de servidor de la a plicación es diferente o si se debe enviar una contraseña, debe utilizarse una sentencia de conexión explícita. Para obtener más información a cerca de conexiones implícitas, consulte el manual DB/2 for OS/400 SQL Programming . Una vez establecida una conexión a una base de datos relaci onal para un perfil de usuario, es posible que la contraseña, si se especi fica, no se valide de nuevo en conexiones posteriores a la misma base de datos relacional con el mismo perfil de usuario. La revalidación de la con traseña depende de si la conversación sigue estando activa. Consulte el manual Distributed Database Programming para obtener más detalles.

DB2/400 Manual de Consulta SQL V3R7 Notas

© Copyright IBM Corp. 1995, 1996 5.11.5 - 1

Page 470: DB2/400 Manual de Consulta SQLmarce.com/docs/systems/manuales/db2_400_manual_consulta_sql_v3r7.pdf · VERSION Nota de Versión Segunda edición (noviembre de 1996) Este manual es

5.11.6 Ejemplos Ejemplo 1 : Ejecutar sentencias SQL en LAB1BCN y LAB2BCN. L a primera sentencia CONNECT crea la conexión LAB1BCN y la seg unda sentencia CONNECT la coloca en el estado latente. EXEC SQL CONNECT TO LAB1BCN; (ejecutar sentencias que hagan referencia a los obj etos de LAB1BCN) EXEC SQL CONNECT TO LAB2BCN; (ejecutar sentencias que hagan referencia a los obj etos de LAB2BCN)

DB2/400 Manual de Consulta SQL V3R7 Ejemplos

© Copyright IBM Corp. 1995, 1996 5.11.6 - 1

Page 471: DB2/400 Manual de Consulta SQLmarce.com/docs/systems/manuales/db2_400_manual_consulta_sql_v3r7.pdf · VERSION Nota de Versión Segunda edición (noviembre de 1996) Este manual es

5.12 CREATE COLLECTION La sentencia CREATE COLLECTION crea una colección e n la que pueden crearse tablas, vistas, índices y paquetes. Subtemas 5.12.1 Invocación 5.12.2 Autorización 5.12.3 Sintaxis 5.12.4 Descripción 5.12.5 Notas 5.12.6 Ejemplo

DB2/400 Manual de Consulta SQL V3R7 CREATE COLLECTION

© Copyright IBM Corp. 1995, 1996 5.12 - 1

Page 472: DB2/400 Manual de Consulta SQLmarce.com/docs/systems/manuales/db2_400_manual_consulta_sql_v3r7.pdf · VERSION Nota de Versión Segunda edición (noviembre de 1996) Este manual es

5.12.1 Invocación Esta sentencia puede hospedarse en un programa de a plicación o emitirse interactivamente. Es una sentencia ejecutable que puede prepararse dinámicamente.

DB2/400 Manual de Consulta SQL V3R7 Invocación

© Copyright IBM Corp. 1995, 1996 5.12.1 - 1

Page 473: DB2/400 Manual de Consulta SQLmarce.com/docs/systems/manuales/db2_400_manual_consulta_sql_v3r7.pdf · VERSION Nota de Versión Segunda edición (noviembre de 1996) Este manual es

5.12.2 Autorización Los privilegios del ID de autorización de la senten cia deben incluir al menos uno de los privilegios siguientes: � La autorización del sistema *USE para utilizar l os siguientes mandatos CL: - CRTLIB (Crear Biblioteca) - Si se ha especificado WITH DATA DICTIONARY, CRTDTADCT (Crear Diccionario de Datos) � Autorización de administrador

DB2/400 Manual de Consulta SQL V3R7 Autorización

© Copyright IBM Corp. 1995, 1996 5.12.2 - 1

Page 474: DB2/400 Manual de Consulta SQLmarce.com/docs/systems/manuales/db2_400_manual_consulta_sql_v3r7.pdf · VERSION Nota de Versión Segunda edición (noviembre de 1996) Este manual es

5.12.3 Sintaxis +-------------------------------------------------- ----------------------+ ¦ ¦ ¦ (1) ¦ ¦ >>-- CREATE COLLECTION----- nombre-colección ---------------------------> ¦ ¦ +- IN ASP -- entero -+ ¦ ¦ ¦ ¦ >------------------------------------------------ ------------------->< ¦ ¦ +- WITH DATA DICTIONARY-+ ¦ ¦ ¦ ¦ Nota: ¦ ¦ (1) Se puede utilizar la palabra clave DATABASE como sinónimo de ¦ ¦ COLLECTION. ¦ ¦ ¦ +-------------------------------------------------- ----------------------+

DB2/400 Manual de Consulta SQL V3R7 Sintaxis

© Copyright IBM Corp. 1995, 1996 5.12.3 - 1

Page 475: DB2/400 Manual de Consulta SQLmarce.com/docs/systems/manuales/db2_400_manual_consulta_sql_v3r7.pdf · VERSION Nota de Versión Segunda edición (noviembre de 1996) Este manual es

5.12.4 Descripción nombre-colección Da nombre a la colección. El nombre no debe se r el de una colección SQL existente o el de una biblioteca en el serv idor actual. IN ASP entero Especifica la agrupación de almacenamiento auxi liar (ASP) en la que crear la colección. El entero debe estar compr endido entre 1 y 16. Si se especifica 1, la colección se crea en la ASP del sistema. Si se omite esta cláusula, se presupone una ASP de 1. WITH DATA DICTIONARY Si se especifica esta cláusula se crea un dicci onario de datos IDDU en la colección.

DB2/400 Manual de Consulta SQL V3R7 Descripción

© Copyright IBM Corp. 1995, 1996 5.12.4 - 1

Page 476: DB2/400 Manual de Consulta SQLmarce.com/docs/systems/manuales/db2_400_manual_consulta_sql_v3r7.pdf · VERSION Nota de Versión Segunda edición (noviembre de 1996) Este manual es

5.12.5 Notas Una colección se crea como: � Una biblioteca: una biblioteca agrupa objetos re lacionados y le permite buscar objetos por su nombre. � Un catálogo: un catálogo contiene descripciones de las tablas, vistas, índices y paquetes de la colección. El catálogo consta de un conjunto de vistas y, si se especifica WITH DAT A DICTIONARY, un diccionario de datos IDDU. Para obtener más in formación, consulte el manual DB/2 for OS/400 SQL Programming , SC41-4611. � Un diario y receptor de diario: en la colección se crean un diario QSQJRN y un receptor de diario QSQJRN0001, que se utilizan para registrar los cambios realizados en todas las t ablas creadas en la colección a partir de ese momento. Para obtene r más información, consulte el manual Backup and Recovery - Advanced , SC41-4305. Si se han especificado nombres SQL, el propietario de la colección es el ID de autorización de la sentencia. Si se han espe cificado los nombres del sistema, el propietario de la colección es el p erfil de usuario (o el perfil de usuario de grupo del trabajo) que invoca la sentencia. Si se han especificado nombres SQL al crear la cole cción, la autorización del sistema *EXCLUDE se da inicialmente a *PUBLIC, y la biblioteca se crea con el parámetro de autorización para crear CRTAUT( *EXCLUDE). El propietario es el único usuario con autorización pa ra utilizar la colección. Si otros usuarios precisan autorización para utilizar la colección, el propietario puede conceder autorizaci ón a los objetos creados, mediante el mandato CL GRTOBJAUT (Otorgar Autorización sobre Objeto). Si se han especificado nombres del sistema al crear la colección, la autorización del sistema dada a *PUBLIC viene deter minada por el valor del sistema QCRTAUT, y la biblioteca se crea con CRTAUT (*SYSVAL). Para obtener más información acerca de la seguridad de s istema AS/400, consulte los manuales Security - Reference , SC41-4302 y DB/2 for OS/400 SQL Programming , SC41-4611.

DB2/400 Manual de Consulta SQL V3R7 Notas

© Copyright IBM Corp. 1995, 1996 5.12.5 - 1

Page 477: DB2/400 Manual de Consulta SQLmarce.com/docs/systems/manuales/db2_400_manual_consulta_sql_v3r7.pdf · VERSION Nota de Versión Segunda edición (noviembre de 1996) Este manual es

5.12.6 Ejemplo Crear una colección llamada BDTEMP. CREATE COLLECTION BDTEMP

DB2/400 Manual de Consulta SQL V3R7 Ejemplo

© Copyright IBM Corp. 1995, 1996 5.12.6 - 1

Page 478: DB2/400 Manual de Consulta SQLmarce.com/docs/systems/manuales/db2_400_manual_consulta_sql_v3r7.pdf · VERSION Nota de Versión Segunda edición (noviembre de 1996) Este manual es

5.13 CREATE INDEX La sentencia CREATE INDEX crea un índice en una tab la. Subtemas 5.13.1 Invocación 5.13.2 Autorización 5.13.3 Sintaxis 5.13.4 Descripción 5.13.5 Notas 5.13.6 Ejemplos

DB2/400 Manual de Consulta SQL V3R7 CREATE INDEX

© Copyright IBM Corp. 1995, 1996 5.13 - 1

Page 479: DB2/400 Manual de Consulta SQLmarce.com/docs/systems/manuales/db2_400_manual_consulta_sql_v3r7.pdf · VERSION Nota de Versión Segunda edición (noviembre de 1996) Este manual es

5.13.1 Invocación Esta sentencia puede hospedarse en un programa de a plicación o emitirse interactivamente. Es una sentencia ejecutable que puede prepararse dinámicamente.

DB2/400 Manual de Consulta SQL V3R7 Invocación

© Copyright IBM Corp. 1995, 1996 5.13.1 - 1

Page 480: DB2/400 Manual de Consulta SQLmarce.com/docs/systems/manuales/db2_400_manual_consulta_sql_v3r7.pdf · VERSION Nota de Versión Segunda edición (noviembre de 1996) Este manual es

5.13.2 Autorización Los privilegios del ID de autorización de la senten cia deben incluir al menos uno de los privilegios siguientes: � Las autorizaciones del sistema siguientes: - *USE para utilizar el mandato CRTLF (Crear Archivo Lógico) - *EXECUTE y *ADD para utilizar la biblioteca en la que se creará el índice - *CHANGE para utilizar el diccionario de dat os si la biblioteca en la que se crea el índice es una colección S QL con un diccionario de datos � Autorización de administrador Los privilegios del ID de autorización de la senten cia deben incluir también al menos uno de los privilegios siguientes: � El privilegio INDEX sobre la tabla � Autorización de administrador El ID de autorización de la sentencia tiene el priv ilegio INDEX sobre la tabla si: � Es el propietario de la tabla. � Se le ha otorgado el privilegio INDEX o ALTER so bre la tabla o bien � Se le han otorgado las autorizaciones del sistem a *OBJALTER u *OBJMGT para utilizar la tabla Si se han especificado nombres SQL y existe un perf il de usuario que tenga el mismo nombre que la biblioteca en la que se ha c reado la tabla, y dicho nombre es distinto del ID de autorización de la sen tencia, los privilegios del ID de autorización de la sentencia deben inclui r al menos uno de los privilegios siguientes: � La autorización del sistema *ADD para utilizar e l perfil de usuario con ese nombre � Autorización de administrador

DB2/400 Manual de Consulta SQL V3R7 Autorización

© Copyright IBM Corp. 1995, 1996 5.13.2 - 1

Page 481: DB2/400 Manual de Consulta SQLmarce.com/docs/systems/manuales/db2_400_manual_consulta_sql_v3r7.pdf · VERSION Nota de Versión Segunda edición (noviembre de 1996) Este manual es

5.13.3 Sintaxis +-------------------------------------------------- ----------------------+ ¦ ¦ ¦ >>-- CREATE---------------------------------- INDEX-- nombre-índice -----> ¦ ¦ +- UNIQUE---------------------+ ¦ ¦ +- WHERE NOT NULL-+ ¦ ¦ ¦ ¦ <-,--------------------+ ¦ ¦ +- ASC--+ ¦ ¦ ¦ >-- ON-- nombre-tabla --(---- nombre-col --+------+----)----------------->< ¦ ¦ +- DESC-+ ¦ ¦ ¦ +-------------------------------------------------- ----------------------+

DB2/400 Manual de Consulta SQL V3R7 Sintaxis

© Copyright IBM Corp. 1995, 1996 5.13.3 - 1

Page 482: DB2/400 Manual de Consulta SQLmarce.com/docs/systems/manuales/db2_400_manual_consulta_sql_v3r7.pdf · VERSION Nota de Versión Segunda edición (noviembre de 1996) Este manual es

5.13.4 Descripción UNIQUE Impide que la tabla contenga dos o mas filas co n el mismo valor de la clave de índice. La restricción entra en vigor cuando las filas de la tabla se actualizan o cuando se insertan nuevas filas. La restricción también se comprueba durante la ejecución de la sentencia CREATE INDEX. Si la tabla ya contien e filas con valores de clave duplicados, el índice no se crea. Cuando se utiliza UNIQE, los valores nulos se t ratan como el resto de valores. Si, por ejemplo, la clave es una colu mna que sólo puede contener valores nulos, esa columna no puede co ntener más de un valor nulo. UNIQUE WHERE NOT NULL Impide que la tabla contenga dos o más filas co n el mismo valor no nulo de la clave de índice. Se permite la exis tencia de varios valores nulos; de lo contrario, el resultado se ría el mismo que con UNIQE. nombre-índice Da nombre al índice. El nombre, incluido el ca lificador implícito o explícito, no debe ser el mismo que un índice, tabla, vista o archivo que ya exista en el servidor actual. Si se han especificado nombres SQL, el índice s e creará en la colección o biblioteca especificada mediante el calificador implícito o explícito. El calificador es el propietario de la vista si existe un perfil de usuario con ese nombre. De lo contra rio, el propietario de la vista es el perfil de usuario o el perfil de usuario de grupo del trabajo que invoque a la sentencia. Si se han especificado nombres del sistema y el nombre del índice está calificado, el índice se creará en la colección o biblioteca especificada por el calificador. Si se han esp ecificado nombres del sistema y el nombre de índice no está calificad o, el índice se creará en la misma colección o biblioteca que la tabla sobre la que se crea el índice. El propietario del índice es el perfil de usuario o perfil de usuario de grupo del trabajo que invoque a l a sentencia. Si el nombre de índice no es un nombre del sist ema válido, DB2 para OS/400 generará uno que sí lo sea. Para obtene r información acerca de las reglas para generar un nombre, consulte el apartado "Reglas para la generación de nombres de tabla" en el tema 5.16. 10.2 . ON nombre-tabla Identifica la tabla en la que se ha de crear el índice. El nombre-tabla debe identificar una tabla base (no una vista) que exista en el servidor actual. (nombre-col, ... ) Identifica la lista de columnas que formará par te de la clave de índice. Cada nombre-col debe ser un nombre no calificado que identifique u na columna de la tabla. El número de columnas no debe pasar de 120 y la suma de sus longitudes no debe ser superior a 2 000-n, donde n es el número de columnas especificadas que permiten n ulos. Puede especificarse más de una vez la misma columna. ASC Coloca las entradas de índice en orden asce ndente por columna. Este es el valor por omisión. DESC Coloca las entradas de índice en orden desc endente por columna.

DB2/400 Manual de Consulta SQL V3R7 Descripción

© Copyright IBM Corp. 1995, 1996 5.13.4 - 1

Page 483: DB2/400 Manual de Consulta SQLmarce.com/docs/systems/manuales/db2_400_manual_consulta_sql_v3r7.pdf · VERSION Nota de Versión Segunda edición (noviembre de 1996) Este manual es

5.13.5 Notas Los índices se crean como archivos lógicos con clav e. Si se utilizan nombres SQL, se crean con la autorización del siste ma *EXCLUDE sobre *PUBLIC. Si se utilizan nombres del sistema, se cr ean con la autorización para utilizar *PUBLIC tal como está determinado por el parámetro de autorización para crear (CRTAUT) de la colección o de la biblioteca. Si la tabla mencionada ya contiene datos, CREATE IN DEX creará las entradas de índice que le correspondan. Si la tabla no cont iene datos, CREATE INDEX creará una descripción del índice. Las entra das de índice se crean al insertar datos en la tabla. El índice es siempr e un reflejo de la situación actual de la tabla. Cualquier índice creado sobre columnas que contenga n datos SBCS o mixtos se crea con la secuencia de clasificación en vigor en el momento de ejecutar la sentencia. Para las secuencias de clas ificación que no sean *HEX, la clave de los datos SBCS o mixtos es el val or significativo de la clave tomando como base la secuencia de clasificaci ón. | Un índice creado sobre una tabla distribuida se cre a en todos los AS/400| entre los que se distribuye la tabla. Para obtener más información sobre| tablas distribuidas, consulte la publicación DB2 Multisystem for OS/400 ,| SC41-3705.

DB2/400 Manual de Consulta SQL V3R7 Notas

© Copyright IBM Corp. 1995, 1996 5.13.5 - 1

Page 484: DB2/400 Manual de Consulta SQLmarce.com/docs/systems/manuales/db2_400_manual_consulta_sql_v3r7.pdf · VERSION Nota de Versión Segunda edición (noviembre de 1996) Este manual es

5.13.6 Ejemplos Ejemplo 1 : Crear un índice llamado NOMBRE_EXCL en la tabla PROYECTO. El propósito del índice es asegurar que no existan dos entradas en la tabla con el mismo valor para el nombre de proyecto (NOMB REPRO). Las entradas de índice deben estar en orden ascendente. CREATE UNIQUE INDEX NOMBRE_EXCL ON PROJECT(NOMBREPRO) Ejemplo 2 : Crear un índice llamado TRAB_POR_DPT en la tabla EMPLEADO. Disponer las entradas de índice en orden ascendente por título de trabajo (TRAB) dentro de cada departamento (DEPTTRAB). CREATE INDEX TRAB_POR_DPT ON EMPLEADO ( DEPTTRAB, TRAB)

DB2/400 Manual de Consulta SQL V3R7 Ejemplos

© Copyright IBM Corp. 1995, 1996 5.13.6 - 1

Page 485: DB2/400 Manual de Consulta SQLmarce.com/docs/systems/manuales/db2_400_manual_consulta_sql_v3r7.pdf · VERSION Nota de Versión Segunda edición (noviembre de 1996) Este manual es

5.14 CREATE PROCEDURE La sentencia CREATE PROCEDURE crea un procedimiento externo. Subtemas 5.14.1 Invocación 5.14.2 Autorización 5.14.3 Sintaxis 5.14.4 Descripción 5.14.5 Notas 5.14.6 Ejemplo

DB2/400 Manual de Consulta SQL V3R7 CREATE PROCEDURE

© Copyright IBM Corp. 1995, 1996 5.14 - 1

Page 486: DB2/400 Manual de Consulta SQLmarce.com/docs/systems/manuales/db2_400_manual_consulta_sql_v3r7.pdf · VERSION Nota de Versión Segunda edición (noviembre de 1996) Este manual es

5.14.1 Invocación Esta sentencia puede hospedarse en un programa de a plicación o emitirse interactivamente. Es una sentencia ejecutable que puede prepararse dinámicamente.

DB2/400 Manual de Consulta SQL V3R7 Invocación

© Copyright IBM Corp. 1995, 1996 5.14.1 - 1

Page 487: DB2/400 Manual de Consulta SQLmarce.com/docs/systems/manuales/db2_400_manual_consulta_sql_v3r7.pdf · VERSION Nota de Versión Segunda edición (noviembre de 1996) Este manual es

5.14.2 Autorización Los privilegios del ID de autorización de la senten cia deben incluir al menos uno de los privilegios siguientes: � Para las tablas de catálogo SYSPROCS y SYSPARMS: - El privilegio INSERT sobre la tabla, y - La autorización del sistema *EXECUTE sobre la biblioteca QSYS2 � Autorización de administrador El ID de autorización de la sentencia tiene el priv ilegio INSERT sobre una tabla si: � Es el propietario de la tabla. � Se le ha otorgado el privilegio INSERT sobre la tabla, o � Se le han otorgado las autorizaciones del sistem a *OBJOPR y *ADD sobre la tabla. Si existe el programa externo, los privilegios que tiene el ID de autorización de la sentencia deben incluir como mín imo uno de los siguientes privilegios: � Para el programa externo al que se hace referenc ia en la sentencia SQL: - La autorización del sistema *EXECUTE sobre el programa externo, y - La autorización del sistema *EXECUTE sobre la biblioteca que contiene el programa externo � Autorización de administrador

DB2/400 Manual de Consulta SQL V3R7 Autorización

© Copyright IBM Corp. 1995, 1996 5.14.2 - 1

Page 488: DB2/400 Manual de Consulta SQLmarce.com/docs/systems/manuales/db2_400_manual_consulta_sql_v3r7.pdf · VERSION Nota de Versión Segunda edición (noviembre de 1996) Este manual es

5.14.3 Sintaxis +-------------------------------------------------- ------------------------------------------------+ ¦ ¦ ¦ ¦ ¦ ¦ ¦ >>-- CREATE-- PROCEDURE-- nombre-procedimiento --------------------------------------------------- -> ¦ ¦ ¦ ¦ >------------------------------------------------ ----------------------------------------------> ¦ ¦ +- ( --------------------------------------------------- -------- ) -+ ¦ ¦ ¦ <-,------------------------------------ -----------+ ¦ ¦ ¦ ¦ +- IN ----+ ¦ ¦ ¦ ¦ +-----+-------+------------------------ tipo-datos -----+ ¦| ¦ +- OUT---¦ +- nombre-parámetro -+ ¦ ¦ +- INOUT-+ ¦ ¦ ¦ ¦ >-------------------------------- cuerpo-procedimiento ----------------------------------------->< ¦ ¦ +- RESULT---- SET----- entero -+ ¦ ¦ +- SETS-+ ¦ ¦ ¦ ¦ cuerpo-procedimiento: ¦ ¦ +- EXTERNAL-------------------------------+ ¦ ¦ +--+----------------------------------------+---- ----------------------------------------------> ¦ ¦ +- EXTERNAL NAME-- nombre-programa-externo -+ ¦ ¦ ¦ ¦ +- PARAMETER STYLE-+ (1) +- VARIANT-----+ ¦ ¦ >------------------------------------------------ ---- GENERAL---------------+-------------+-----¦ ¦ ¦ +- LANGUAGE---- C---------+ +- GENERAL WITH NULLS-+ +- NOT VARIANT-+ ¦ ¦ +- CL------¦ ¦ ¦ +- COBOL---¦ ¦ ¦ +- COBOLLE-¦ ¦ ¦ +- FORTRAN-¦ ¦ ¦ +- PLI -----¦ ¦ ¦ +- REXX----¦ ¦ ¦ +- RPG-----¦ ¦ ¦ +- RPGLE---+ ¦ ¦ ¦ ¦ tipo-datos: ¦ ¦ +------ INTEGER--------------------------------------------------- ------------------------------¦ ¦ ¦ ¦ +- INT -----+ ¦ ¦ ¦ +--- SMALLINT--------------------------------------------------- --------¦ ¦ ¦ +--- FLOAT--------------------------------------------------- -----------¦ ¦ ¦ ¦ ¦ +-(-- entero --)-+ ¦ ¦ ¦ ¦ ¦ +- REAL--------------------¦ ¦ ¦ ¦ ¦ ¦ +- PRECISION-+ ¦ ¦ ¦ ¦ ¦ +- DOUBLE------------------+ ¦ ¦ ¦ +--- DECIMAL--------------------------------------------------- ---------¦ ¦ ¦ ¦ +- DEC-----¦ +-(-- entero ----------------)-+ ¦ ¦ ¦ ¦ +- NUMERIC-+ +- , entero -+ ¦ ¦ ¦ +----- CHARACTER--------------------------------------------------- -----¦ ¦ ¦ ¦ ¦ +- CHAR------+ +-(-- entero --)-+ ¦ +- FOR BIT DATA ---¦ ¦ ¦ ¦ ¦ +----- VARCHAR-------------------(-- entero --)---+ +- FOR SBCS DATA--¦ ¦ ¦ ¦ ¦ +--- CHARACTER---- VARYING-+ +- FOR MIXED DATA-¦ ¦ ¦ ¦ ¦ +- CHAR------+ +- CCSID-- entero --+ ¦ ¦ ¦ +----- GRAPHIC--------------------------------------------------- -------¦ ¦ ¦ ¦ ¦ +-(-- entero --)-+ ¦ +- CCSID-- entero -+ ¦ ¦ ¦ ¦ +----- VARGRAPHIC---------(-- entero --)---+ ¦ ¦ ¦ ¦ +- GRAPHIC VARYING-+ ¦ ¦ ¦ +--- DATE--------------------------------------------------- ------------¦ ¦ ¦ +--- TIME--------------------------------------------------- ------------¦ ¦ ¦ +--- TIMESTAMP--------------------------------------------------- -------+ ¦ ¦ ¦ ¦ Nota: ¦ ¦ ¦ ¦ (1) Se pueden utilizar las palabras clave SIMPLE CALL como sinónimo de GENERAL. ¦ ¦ ¦ ¦ ¦ ¦ ¦ ¦ ¦ +-------------------------------------------------- ------------------------------------------------+

DB2/400 Manual de Consulta SQL V3R7 Sintaxis

© Copyright IBM Corp. 1995, 1996 5.14.3 - 1

Page 489: DB2/400 Manual de Consulta SQLmarce.com/docs/systems/manuales/db2_400_manual_consulta_sql_v3r7.pdf · VERSION Nota de Versión Segunda edición (noviembre de 1996) Este manual es

5.14.4 Descripción nombre-procedimiento Da nombre al procedimiento. El nombre no debe ser el de un procedimiento existente en el servidor actual. La información del procedimiento especificado se añade a las tabla s de catálogo SYSPROCS y SYSPARMS. | Para dar nombres de SQL, el procedimiento se cr eará en la colección o| biblioteca especificada por el calificador impl ícito o explícito. | Para dar nombres del sistema, el procedimiento se creará en la| colección o biblioteca especificada mediante el calificador. Si no se| especifica calificador, el procedimiento se cre ará en la biblioteca| actual (*CURLIB). IN Especifica este parámetro como parámetro de ent rada. (26) OUT Especifica este parámetro como parámetro de sal ida. INOUT Especifica este parámetro como parámetro de ent rada y de salida. | nombre-parámetro Da nombre al parámetro. tipo-datos Especifica los atributos del parámetro. El tipo de datos debe ser válido para el lengua je especificado en la cláusula de lenguaje. Para obtener más informa ción acerca de los tipos de datos, consulte el apartado "CREATE TABLE" en el tema 5.16 y el manual DB/2 for OS/400 SQL Programming , SC41-4611. RESULT SETS entero Especifica el número máximo de conjuntos de res ultados que se pueden devolver desde el procedimiento. Los conjuntos de resultados sólo se devuelven s i el procedimiento se llama desde un cliente de Client Access. Para obtener más información acerca de los conjuntos de resultados, consulte el apartado "SET RESULT SETS" en el tema 5.47 . EXTERNAL NAME nombre-programa-externo Especifica el programa que se ejecutará cuando la sentencia CALL llame al procedimiento. El nombre del programa debe identificar un programa que exista en el servidor de la aplicación en e l momento en que se llama al procedimiento. Si la opción de denomi nación es *SYS y el nombre de programa no está calificado, la lista de bibliotecas se utilizará para buscar el programa en el momento en que llama al procedimiento. El programa no puede ser un pro grama de servicio ILE. La validez del nombre se comprueba en el servid or de la aplicación. Si el formato del nombre no es correcto, se dev uelve un error. Si no se especifica el nombre-programa-externo, se supone que será el mismo que el del procedimiento. No es necesario que exista el programa externo en el momento en que se crea el procedimiento, pero debe existir en el momento en que se llama al procedimiento. LANGUAGE Especifica el lenguaje en el que está escrito e l programa externo. La cláusula de lenguaje es obligatoria si el progr ama externo es un procedimiento REXX. Si no se especifica LANGUAGE, el LANGUAGE se de termina a partir de la información de atributo de programa asociada co n el programa externo en el momento de crear el procedimiento. Si la información del atributo de programa asoc iada con el programa no identifica un lenguaje reconocible o el program a no puede encontrarse, se supone que el lenguaje es C. C El programa externo está escrito en C. CL El programa externo está escrito en CL. COBOL El programa externo está escrito en COBOL. COBOLLE El programa externo está escrito en ILE COB OL/400. FORTRAN El programa externo está escrito en FORTRAN . PLI El programa externo está escrito en PL/I. REXX El programa externo es un procedimiento REX X.

DB2/400 Manual de Consulta SQL V3R7 Descripción

© Copyright IBM Corp. 1995, 1996 5.14.4 - 1

Page 490: DB2/400 Manual de Consulta SQLmarce.com/docs/systems/manuales/db2_400_manual_consulta_sql_v3r7.pdf · VERSION Nota de Versión Segunda edición (noviembre de 1996) Este manual es

RPG El programa externo está escrito en RPG. RPGLE El programa externo está escrito en ILE RPG /400. GENERAL Se efectúa una llamada general al procedimiento . No se pueden pasar argumentos adicionales para las variables de in dicador. GENERAL WITH NULLS Se efectúa una llamada general al procedimiento . Se pasa un argumento adicional para las variables de indicador. Par a obtener más información acerca de cómo se manejan los indic adores, consulte el manual DB/2 for OS/400 SQL Programming , SC41-4611. VARIANT Especifica que el procedimiento no siempre devo lverá el mismo resultado desde llamadas sucesivas con argument os de entrada idénticos. NOT VARIANT Especifica que el procedimiento siempre devolve rá el mismo resultado desde llamadas sucesivas con argumentos de entr ada idénticos. (26) Si el tipo de lenguaje es REXX, todos los par ámetros deben ser de entrada.

DB2/400 Manual de Consulta SQL V3R7 Descripción

© Copyright IBM Corp. 1995, 1996 5.14.4 - 2

Page 491: DB2/400 Manual de Consulta SQLmarce.com/docs/systems/manuales/db2_400_manual_consulta_sql_v3r7.pdf · VERSION Nota de Versión Segunda edición (noviembre de 1996) Este manual es

5.14.5 Notas Si una sentencia DECLARE PROCEDURE define un proced imiento con el mismo nombre que un procedimiento creado, y una sentencia CALL estática en la que el nombre de procedimiento no se identifica med iante una variable del lenguaje principal se ejecuta a partir del mismo pr ograma fuente, se utilizarán los atributos de la sentencia DECLARE PR OCEDURE en lugar de los atributos de la sentencia CREATE PROCEDURE. El número máximo de parámetros que se permite en CR EATE PROCEDURE es 255. Si se especifica GENERAL WITH NULLS, el máximo es 2 54. El número máximo de parámetros también está limitado por el número m áximo de parámetros que permite el programa bajo licencia que se utiliza pa ra compilar el programa externo. La sentencia CREATE PROCEDURE se aplica a sentencia s CALL estáticas y dinámicas así como a una sentencia CALL donde el no mbre de procedimiento se identifica mediante una variable del lenguaje pr incipal.

DB2/400 Manual de Consulta SQL V3R7 Notas

© Copyright IBM Corp. 1995, 1996 5.14.5 - 1

Page 492: DB2/400 Manual de Consulta SQLmarce.com/docs/systems/manuales/db2_400_manual_consulta_sql_v3r7.pdf · VERSION Nota de Versión Segunda edición (noviembre de 1996) Este manual es

5.14.6 Ejemplo Crear un procedimiento externo PROC1 en un programa PL/I. Cuando se llama al procedimiento utilizando la sentencia CALL, se l lamará a un programa COBOL llamado PGM1 en la biblioteca LIB1. EXEC SQL CREATE PROCEDURE PROC1 ( CHAR(10), CHAR(10)) EXTERNAL NAME LIB1/PGM1 LANGUAGE COBOL GENERAL; EXEC SQL CALL PROC1 ('NOMBRE ','APELL ');

DB2/400 Manual de Consulta SQL V3R7 Ejemplo

© Copyright IBM Corp. 1995, 1996 5.14.6 - 1

Page 493: DB2/400 Manual de Consulta SQLmarce.com/docs/systems/manuales/db2_400_manual_consulta_sql_v3r7.pdf · VERSION Nota de Versión Segunda edición (noviembre de 1996) Este manual es

5.15 CREATE SCHEMA La sentencia CREATE SCHEMA define una colección y, opcionalmente, crea tablas, vistas e índices. Pueden añadirse comentar ios y etiquetas en la descripción de catálogo de las tablas, vistas y col umnas. Pueden otorgarse privilegios de tabla y vista a los usuari os. Subtemas 5.15.1 Invocación 5.15.2 Autorización 5.15.3 Sintaxis 5.15.4 Descripción 5.15.5 Notas 5.15.6 Ejemplos

DB2/400 Manual de Consulta SQL V3R7 CREATE SCHEMA

© Copyright IBM Corp. 1995, 1996 5.15 - 1

Page 494: DB2/400 Manual de Consulta SQLmarce.com/docs/systems/manuales/db2_400_manual_consulta_sql_v3r7.pdf · VERSION Nota de Versión Segunda edición (noviembre de 1996) Este manual es

5.15.1 Invocación Esta sentencia sólo puede emitirse utilizando el ma ndato RUNSQLSTM.

DB2/400 Manual de Consulta SQL V3R7 Invocación

© Copyright IBM Corp. 1995, 1996 5.15.1 - 1

Page 495: DB2/400 Manual de Consulta SQLmarce.com/docs/systems/manuales/db2_400_manual_consulta_sql_v3r7.pdf · VERSION Nota de Versión Segunda edición (noviembre de 1996) Este manual es

5.15.2 Autorización Los privilegios del ID de autorización de la senten cia deben incluir al menos uno de los privilegios siguientes: � Los privilegios definidos para las siguientes se ntencias SQL: - CREATE COLLECTION y - Cada una de las sentencias SQL incluidas en la sentencia CREATE SCHEMA � Autorización de administrador Si se especifica la cláusula AUTHORIZATION, los pri vilegios del ID de autorización de la sentencia también deben incluir al menos una de las siguientes autorizaciones: � La autorización del sistema *ADD para utilizar e l perfil de usuario identificado por el nombre-autorización � Autorización de administrador

DB2/400 Manual de Consulta SQL V3R7 Autorización

© Copyright IBM Corp. 1995, 1996 5.15.2 - 1

Page 496: DB2/400 Manual de Consulta SQLmarce.com/docs/systems/manuales/db2_400_manual_consulta_sql_v3r7.pdf · VERSION Nota de Versión Segunda edición (noviembre de 1996) Este manual es

5.15.3 Sintaxis +-------------------------------------------------- ----------------------+ ¦ ¦ ¦ >>-- CREATE SCHEMA---- nombre-colección --------------------------------> ¦ ¦ +- AUTHORIZATION-- nombre-autorización -+ ¦ ¦ ¦ ¦ >------------------------------------------------ --------------------> ¦ ¦ +- IN ASP -- entero -+ +- WITH DATA DICTIONARY-+ ¦ ¦ ¦ ¦ >------------------------------------------------ ------------------->< ¦ ¦ ¦ <------------------------------------------- -+ ¦ ¦ ¦ +----- sentencia CREATE TABLE ---------------------+ ¦ ¦ +- sentencia CREATE INDEX -----------------¦ ¦ ¦ +- sentencia CREATE VIEW ------------------¦ ¦ ¦ ¦ (1) ¦ ¦ ¦ +- sentencia COMMENT ON -------------------¦ ¦ ¦ ¦ (1) ¦ ¦ ¦ +- sentencia LABEL ON ---------------------¦ ¦ ¦ +- sentencia GRANT (Privilegios de tabla) -+ ¦ ¦ ¦ ¦ Nota: ¦ ¦ (1) Las etiquetas y los comentarios sobre paquet es no están ¦ ¦ soportados en la sentencia CREATE SCHEMA. ¦ ¦ ¦ +-------------------------------------------------- ----------------------+

DB2/400 Manual de Consulta SQL V3R7 Sintaxis

© Copyright IBM Corp. 1995, 1996 5.15.3 - 1

Page 497: DB2/400 Manual de Consulta SQLmarce.com/docs/systems/manuales/db2_400_manual_consulta_sql_v3r7.pdf · VERSION Nota de Versión Segunda edición (noviembre de 1996) Este manual es

5.15.4 Descripción nombre-colección Da nombre al esquema. Con este nombre se crea una colección. Si se especifica el nombre-colección, el ID de autori zación de la sentencia es el ID de autorización en tiempo de ejecución . El nombre no debe ser el de una colección o biblioteca existente en el servidor actual. nombre-autorización Identifica el ID de autorización de la sentenci a. Este nombre de autorización es también el nombre-colección. E l nombre no debe ser el de una colección o biblioteca existente en el s ervidor actual. IN ASP entero Especifica la agrupación de almacenamiento auxi liar (ASP) en la que crear la colección. El entero debe estar compr endido entre 1 y 16. Si se especifica 1, la colección se crea en la ASP del sistema. Si se omite esta cláusula, se presupone una ASP de 1. WITH DATA DICTIONARY Si se especifica esta cláusula se crea un dicci onario de datos IDDU en la colección. sentencia CREATE TABLE Crea una tabla en la colección. Véase la sente ncia CREATE TABLE en la página 5.16 . sentencia CREATE INDEX Crea un índice en la colección. Véase la sente ncia CREATE INDEX en la página 5.13 . sentencia CREATE VIEW Crea una vista en la colección. Véase la sente ncia CREATE VIEW en la página 5.17 . sentencia COMMENT ON Añade o sustituye comentarios en las descripcio nes de catálogo de tablas, vistas o columnas. Los comentarios sob re paquetes no están permitidos. Véase la sentencia COMMENT ON en l a página 5.8 . sentencia LABEL ON Añade o sustituye etiquetas en las descripcione s de catálogo de las tablas, vistas o columnas de la colección. Las etiquetas no están permitidas en los paquetes. Véase la sentencia LABEL ON en la página 5.35 . sentencia GRANT (Privilegios de tabla) Otorga privilegios para las tablas y vistas de la colección. Véase la sentencia GRANT en la página 5.31.6 .

DB2/400 Manual de Consulta SQL V3R7 Descripción

© Copyright IBM Corp. 1995, 1996 5.15.4 - 1

Page 498: DB2/400 Manual de Consulta SQLmarce.com/docs/systems/manuales/db2_400_manual_consulta_sql_v3r7.pdf · VERSION Nota de Versión Segunda edición (noviembre de 1996) Este manual es

5.15.5 Notas Si una sentencia CREATE TABLE, CREATE INDEX o CREAT E VIEW contiene un nombre calificado para la tabla, índice o vista que se está creando, el nombre de colección especificado en dicho nombre ca lificado debe ser el mismo que el nombre de la colección que se está cre ando. Cualquier otro nombre de tabla o vista a los que se haga referenci a dentro de la definición de esquema puede estar calificado por cu alquier nombre de colección. Los nombres de tabla, vista o índice no calificados de las sentencias SQL quedan calificados implícitamente co n el nombre de la colección creada. La longitud máxima de cualquier sentencia CREATE TABLE, CREATE INDEX, CREATE VIEW o GRANT individual dentro de la sentencia CREATE SCHEMA es 32766. Entre las sentencias SQL no se utilizan delimitador es. El propietario de los objetos creados se determina de la forma siguiente: � Si se ha especificado una cláusula AUTHORIZATION , el ID de autorización especificado posee todos los objet os creados por la sentencia. � Si no se ha especificado ninguna cláusula AUTHOR IZATION y se han especificado nombres SQL, el propietario de tod os los objetos creados por la sentencia es el perfil de usuario con el mismo nombre que el nombre-colección (si existe un perfil de usuari o con ese nombre). � De lo contrario, el propietario de todos los obj etos creados por la sentencia es el perfil de usuario (o el perfil de usuario de grupo) del trabajo que ejecute la sentencia.

DB2/400 Manual de Consulta SQL V3R7 Notas

© Copyright IBM Corp. 1995, 1996 5.15.5 - 1

Page 499: DB2/400 Manual de Consulta SQLmarce.com/docs/systems/manuales/db2_400_manual_consulta_sql_v3r7.pdf · VERSION Nota de Versión Segunda edición (noviembre de 1996) Este manual es

5.15.6 Ejemplos Ejemplo 1 : Crear una colección que tenga una tabla de pieza s de inventario y un índice que abarque los números de p ieza. Dar autorización para utilizar el esquema al perfil de usuario JURAD O. CREATE SCHEMA INVENTARIO CREATE TABLE PIEZA (NUMPIEZA SMALLINT NOT NULL, DESCR VARCHAR(24), CANTIDAD INT ) CREATE INDEX INDPIEZA ON PIEZA (NUMPIEZA) GRANT ALL ON PIEZA TO JURADO Ejemplo 2 : Crear una colección utilizando el ID de autoriza ción LOPEZ. Crear una tabla de alumnos que tenga un comentario sobre la columna de número de alumno. CREATE SCHEMA AUTHORIZATION LOPEZ CREATE TABLE LOPEZ.ALUMNO (NUMALUM SMALLINT NOT NULL UNIQUE , APELL CHAR(20), NOMBRE CHAR(20), DIRECCION CHAR(50)) COMMENT ON ALUMNO (NUMALUM IS 'ES UN NUM DE IDENTIFICACION EXCLUSIVO')

DB2/400 Manual de Consulta SQL V3R7 Ejemplos

© Copyright IBM Corp. 1995, 1996 5.15.6 - 1

Page 500: DB2/400 Manual de Consulta SQLmarce.com/docs/systems/manuales/db2_400_manual_consulta_sql_v3r7.pdf · VERSION Nota de Versión Segunda edición (noviembre de 1996) Este manual es

5.16 CREATE TABLE La sentencia CREATE TABLE define una tabla. La def inición debe incluir su nombre y los nombres y atributos de sus columnas. Puede incluir otros atributos de la tabla, por ejemplo la clave primari a. Subtemas 5.16.1 Invocación 5.16.2 Autorización 5.16.3 Sintaxis 5.16.4 Descripción 5.16.5 definición-columna 5.16.6 Restricción-unicidad 5.16.7 restricción-referencia 5.16.8 cláusula-grupo-nodos 5.16.9 Notas 5.16.10 Reglas para la generación de nombres del sistema 5.16.11 Ejemplos

DB2/400 Manual de Consulta SQL V3R7 CREATE TABLE

© Copyright IBM Corp. 1995, 1996 5.16 - 1

Page 501: DB2/400 Manual de Consulta SQLmarce.com/docs/systems/manuales/db2_400_manual_consulta_sql_v3r7.pdf · VERSION Nota de Versión Segunda edición (noviembre de 1996) Este manual es

5.16.1 Invocación Esta sentencia puede hospedarse en un programa de a plicación o emitirse interactivamente. Es una sentencia ejecutable que puede prepararse dinámicamente.

DB2/400 Manual de Consulta SQL V3R7 Invocación

© Copyright IBM Corp. 1995, 1996 5.16.1 - 1

Page 502: DB2/400 Manual de Consulta SQLmarce.com/docs/systems/manuales/db2_400_manual_consulta_sql_v3r7.pdf · VERSION Nota de Versión Segunda edición (noviembre de 1996) Este manual es

5.16.2 Autorización Los privilegios del ID de autorización de la senten cia deben incluir al menos uno de los privilegios siguientes: � Las autorizaciones del sistema siguientes: - *USE para utilizar el mandato CRTPF (Crear Archivo Físico) - *EXECUTE y *ADD para utilizar la biblioteca en la que se creará la tabla. - *OBJOPR y *OBJMGT para utilizar el diario - *CHANGE para utilizar el diccionario de dat os si la biblioteca en la que se creará la tabla es una colección SQL con un diccionario de datos. � Autorización de administrador Si se han especificado nombres SQL y existe un perf il de usuario que tenga el mismo nombre que la biblioteca en la que se ha c reado la tabla, y dicho nombre es distinto del ID de autorización de la sen tencia, los privilegios del ID de autorización de la sentencia deben inclui r al menos uno de los privilegios siguientes: � La autorización del sistema *ADD para utilizar e l perfil de usuario con ese nombre � Autorización de administrador Para definir una clave foránea, los privilegios que posea el ID de autorización de la sentencia deben incluir al menos uno de los siguientes sobre la tabla padre: � El privilegio REFERENCES o la autorización de g estión de objetos correspondiente a la tabla � La propiedad de la tabla � Autorización de administrador El ID de autorización de la sentencia tiene el priv ilegio REFERENCES sobre la tabla cuando se cumple una de las siguientes con diciones: � Es el propietario de la tabla. � Se le ha otorgado el privilegio REFERENCES sobre la tabla. � Se le han otorgado las autorizaciones del sistem a *OBJREF u *OBJMGT para la tabla.

DB2/400 Manual de Consulta SQL V3R7 Autorización

© Copyright IBM Corp. 1995, 1996 5.16.2 - 1

Page 503: DB2/400 Manual de Consulta SQLmarce.com/docs/systems/manuales/db2_400_manual_consulta_sql_v3r7.pdf · VERSION Nota de Versión Segunda edición (noviembre de 1996) Este manual es

5.16.3 Sintaxis +-------------------------------------------------- --------------------------------------------------- ----------------------+ ¦ ¦ ¦ ¦ ¦ ¦ ¦ <-,----------- ---------------+ ¦ ¦ >>-- CREATE TABLE-- nombre-tabla --(------ definición-columna ----------)---------------------------------------- ----------->< ¦| ¦ +- restricción-unicidad ---¦ +- cláusula-grupo-nodos -+ ¦ ¦ +- restricción-referencia -+ ¦ ¦ ¦ ¦ definición-columna: ¦ ¦ +-- nombre-col --------------------------------------------------- --- tipo-datos -------------------------------------------> ¦ ¦ ¦ +- TIPO DE DATOS-+ ¦ ¦ ¦ +- FOR--------------------- nombre-columna-sistema -+ ¦ ¦ ¦ ¦ <--------------------------------------------- ------------------+ ¦ ¦ >------------------------------------------------ --------------------------------------------------- --------------------¦ ¦ ¦ +- NOT NULL--------------------------------------------------- -¦ ¦ ¦ +- cláusula-default --------------------------------------------¦ ¦ ¦ +----------------------------------------- UNIQUE--------------+ ¦ ¦ +- CONSTRAINT-- nombre-restricción -+ ¦ +- PRIMARY KEY-+ ¦ ¦ ¦ +- cláusula-references -+ ¦ ¦ ¦ ¦ cláusula-default: ¦ ¦ +- WITH-+ ¦ ¦ +------------ DEFAULT--------------------------------------------------- -------------------------------------------------¦ ¦ ¦ +- constante ---------¦ ¦ ¦ +- NULL--------------¦ ¦ ¦ +- CURRENT_DATE------¦ ¦ ¦ +- CURRENT_TIME------¦ ¦ ¦ +- CURRENT_TIMESTAMP-+ ¦ ¦ ¦ ¦ tipo-datos: ¦ ¦ +------ INTEGER--------------------------------------------------- --------------------------------------------------- ----¦ ¦ ¦ ¦ +- INT -----+ ¦ ¦ ¦ +--- SMALLINT--------------------------------------------------- -------------------------------¦ ¦ ¦ +--- DECIMAL--------------------------------------------------- --------------------------------¦ ¦ ¦ ¦ +- DEC-----¦ +-(-- entero ----------------)-+ ¦ ¦ ¦ ¦ +- NUMERIC-+ +- , entero -+ ¦ ¦ ¦ +--- FLOAT--------------------------------------------------- ----------------------------------¦ ¦ ¦ ¦ ¦ +-(-- entero --)-+ ¦ ¦ ¦ ¦ ¦ +- REAL--------------------¦ ¦ ¦ ¦ ¦ ¦ +- PRECISION-+ ¦ ¦ ¦ ¦ ¦ +- DOUBLE------------------+ ¦ ¦ ¦ +----- CHARACTER--------------------------------------------------- ----------------------------¦ ¦ ¦ ¦ ¦ +- CHAR------+ +-(-- entero --)-+ ¦ +- FOR BIT DATA ---¦ ¦ ¦ ¦ ¦ +----- VARCHAR-------------------(-- entero --)--------------------------+ +- FOR SBCS DATA--¦ ¦ ¦ ¦ ¦ ¦ +--- CHARACTER---- VARYING-+ ¦ +- cláusula-allocate -+ +- FOR MIXED DATA-¦ ¦ ¦ ¦ ¦ ¦ +- CHAR------+ ¦ +- CCSID-- entero --+ ¦ ¦ ¦ ¦ +- LONG VARCHAR-----------------------------+ ¦ ¦ ¦ +----- GRAPHIC--------------------------------------------------- ------------------------------¦ ¦ ¦ ¦ ¦ +-(-- entero --)-+ ¦ +- CCSID-- entero -+ ¦ ¦ ¦ ¦ +----- VARGRAPHIC---------(-- entero --)--------------------------+ ¦ ¦ ¦ ¦ ¦ +- GRAPHIC VARYING-+ ¦ +- cláusula-allocate -+ ¦ ¦ ¦ ¦ +- LONG VARGRAPHIC-------------------+ ¦ ¦ ¦ +--- DATE--------------------------------------------------- -----------------------------------¦ ¦ ¦ +--- TIME--------------------------------------------------- -----------------------------------¦ ¦ ¦ +--- TIMESTAMP--------------------------------------------------- ------------------------------+ ¦ ¦ ¦ ¦ cláusula-allocate: ¦ ¦ +-- ALLOCATE-- (entero) --------------------------------------------------- ------------------------------------------------¦ ¦ ¦ ¦ ¦ ¦ +-------------------------------------------------- --------------------------------------------------- ----------------------+ +-------------------------------------------------- ----------------------+ ¦ ¦ ¦ ¦ ¦ restricción-unicidad: ¦ ¦ +---------------------------------------- UNIQUE---------(------------> ¦ ¦ +- CONSTRAINT-- nombre-restricción -+ +- PRIMARY KEY-+ ¦ ¦ ¦ ¦ <-,----------+ ¦ ¦ >---- nombre-col ----)---------------------------------------------- ---¦ ¦ ¦ ¦ ¦ restricción-referencia: ¦ ¦ (1) ¦ ¦ +-------------------------------------- FOREIGN KEY-------------------> ¦ ¦ +- CONSTRAINT-- nombre-restricción -+ ¦ ¦ ¦ ¦ <-,----------+ ¦ ¦ >--(---- nombre-col ----)-- cláusula-references -------------------------¦ ¦ ¦ ¦ ¦ cláusula-references: ¦ ¦ +-- REFERENCES-- nombre-tabla ------------------------------------------> ¦ ¦ ¦ <-,----------+ ¦ ¦ ¦ +-(---- nombre-col ----)-+ ¦ ¦ ¦ ¦ (2) ¦ ¦ +- ON DELETE NO ACTION--------+ +- ON UPDATE NO ACTION-+ ¦ ¦ >--+----------------------------+--+------------- --------+-----------¦ ¦ ¦ +- ON DELETE---- RESTRICT------+ +- ON UPDATE RESTRICT--+ ¦ ¦ +- CASCADE-----¦ ¦ ¦ +- SET NULL----¦ ¦ ¦ +- SET DEFAULT-+ ¦ ¦ ¦ ¦ cláusula-grupo-nodos: ¦

DB2/400 Manual de Consulta SQL V3R7 Sintaxis

© Copyright IBM Corp. 1995, 1996 5.16.3 - 1

Page 504: DB2/400 Manual de Consulta SQLmarce.com/docs/systems/manuales/db2_400_manual_consulta_sql_v3r7.pdf · VERSION Nota de Versión Segunda edición (noviembre de 1996) Este manual es

| ¦ +-- IN ---- nombre-grupo-nodos ----¦ clave de partición +----------------¦ ¦ ¦ ¦ ¦ clave de partición: ¦ ¦ +------------------------------------------------ --------------------¦ ¦| ¦ ¦ <-,-------+ +- USING HASHING-+ ¦ ¦| ¦ +- PARTITIONING KEY --(---- columna ----)--------------------+ ¦ ¦ ¦ ¦ Notas: ¦ ¦ ¦ ¦ (1) Por motivos de compatibilidad con otros prod uctos, puede ¦ ¦ especificarse nombre-restricción (sin la pal abra clave ¦ ¦ CONSTRAINT) a continuación de FOREIGN KEY. ¦ ¦ ¦ ¦ (2) Las cláusulas ON DELETE y ON UPDATE pueden e specificarse en ¦ ¦ cualquier orden. ¦ ¦ ¦ ¦ ¦ ¦ ¦ ¦ ¦ +-------------------------------------------------- ----------------------+

DB2/400 Manual de Consulta SQL V3R7 Sintaxis

© Copyright IBM Corp. 1995, 1996 5.16.3 - 2

Page 505: DB2/400 Manual de Consulta SQLmarce.com/docs/systems/manuales/db2_400_manual_consulta_sql_v3r7.pdf · VERSION Nota de Versión Segunda edición (noviembre de 1996) Este manual es

5.16.4 Descripción nombre-tabla Da nombre a la tabla. El nombre, incluido el c alificador implícito o explícito, no debe ser el mismo que un índice, tabla, vista o archivo que ya exista en el servidor actual. Para dar nombres de SQL, la tabla se creará en la colección o biblioteca especificada mediante el calificador implícito o explícito. El calificador es el propietario de la tabla si existe un perfil de usuario con ese nombre. Si no es así, el propietario de la tabla es el perfil de usuario o perfil de usuario de gru po del trabajo que invoque a la sentencia. Para dar nombres del sistema, la tabla se crear á en la colección o biblioteca especificada mediante el calificador . Si no se especifica calificador, la tabla se creará en la bibliotec a actual (*CURLIB). El propietario de la tabla es el perfil de usuario o perfil de us uario de grupo del trabajo que invoque a la sentencia.

DB2/400 Manual de Consulta SQL V3R7 Descripción

© Copyright IBM Corp. 1995, 1996 5.16.4 - 1

Page 506: DB2/400 Manual de Consulta SQLmarce.com/docs/systems/manuales/db2_400_manual_consulta_sql_v3r7.pdf · VERSION Nota de Versión Segunda edición (noviembre de 1996) Este manual es

5.16.5 definición-columna Define los atributos de una columna. Debe existir como mínimo una definición de columna y no más de 8000 definiciones de columna. La suma del recuento de bytes de las columnas no de be ser superior a 32766 o, si se ha especificado una columna VARCHAR, a 327 40. Para obtener información sobre el recuento de bytes de las colum nas según sea el tipo de datos, consulte el apartado "Notas" en el tema 5.17.5 . nombre-col Da nombre a una columna de la tabla. No califi que el nombre-col y no utilice el mismo nombre para más de una columna de la tabla o para un nombre-col-sistema de la tabla. FOR COLUMN nombre-col-sistema Proporciona un nombre del OS/400 para la column a. No utilice el mismo nombre para más de una columna de la tabla o pa ra un nombre-col de la tabla. Si no se especifica el nombre-col-sistema y el nombre-col no es un nombre-col-sistema válido, se generará un nombr e de columna del sistema. Para obtener más información acerca d e cómo se generan los nombres de columna del sistema, consulte el apa rtado "Reglas para la generación de nombres de columna" en el tema 5.16.1 0.1 . tipo-datos Especifica el tipo de datos de la columna. Uti lice: INTEGER o INT Para un entero grande. SMALLINT Para un entero pequeño. DECIMAL(entero,entero) o DEC(entero,entero) DECIMAL(entero) o DEC(entero) DECIMAL o DEC Para un número decimal empaquetado. El pri mer entero es la precisión del número; es decir, el número t otal de dígitos; puede ir de 1 a 31. El segundo entero es la esca la del número (el número de dígitos situados a la derecha de la coma decimal). Puede ir de 0 hasta la precisión del número . Puede utilizar DECIMAL( p) para DECIMAL( p,0) y DECIMAL para DECIMAL(5,0). NUMERIC(entero,entero) NUMERIC(entero) NUMERIC Para un número decimal con zona. El primer entero es la precisión del número, es decir, el número total de dí gitos; puede ir del 1 al 31. El segundo entero es la escala del número (el número de dígitos situados a la derecha de la coma de cimal). Puede ir de 0 hasta la precisión del número. Puede utilizar NUMERIC( p) para NUMERIC( p,0), y NUMERIC para NUMERIC(5,0). FLOAT Para un número de coma flotante de precisió n doble. FLOAT(entero) Para un número de coma flotante de precisió n doble o simple, dependiendo del valor del entero. El valor del entero debe estar comprendido entre 1 y 53. Los valores del 1 al 24 indican precisión simple; los valores del 25 al 53, precisión doble. REAL Para coma flotante de precisión simple. DOUBLE PRECISION o DOUBLE Para coma flotante de precisión doble. CHARACTER(entero) o CHAR(entero) CHARACTER o CHAR Para una serie de caracteres de longitud fi ja cuya longitud sea entero . El entero puede ir de 1 a 32766 (32765 si puede ser nulo). Si se especifica FOR MIXED DATA o u n CCSID de datos mixtos, el rango está comprendido entre 4 y 32766 (32765 si permite nulos). Si se omite la especificac ión de longitud, se supone una longitud de 1 carácter. VARCHAR(entero) CHARACTER VARYING (entero) o CHAR VARYING (entero) Para una serie de caracteres de longitud va riable cuya longitud máxima sea entero , que puede ir de 1 a 32740 (32739 si puede ser nulo). Si se especifica FOR MIXED DATA o u n CCSID de datos mixtos, el rango está comprendido entre 4 y 32740 (32739 si puede ser nulo). LONG VARCHAR (27) Para una serie de caracteres de longitud va riable cuya longitud máxima esté determinada por la cantidad de espacio disponible en la fila. Para obtener información acerca de cómo calcular la longitud máxima, consulte el apartado "Reglas para determinar el tamaño de LONG VARCHAR y LONG VARGRAPHIC" en el tem a 5.16.9 .

DB2/400 Manual de Consulta SQL V3R7 definición-columna

© Copyright IBM Corp. 1995, 1996 5.16.5 - 1

Page 507: DB2/400 Manual de Consulta SQLmarce.com/docs/systems/manuales/db2_400_manual_consulta_sql_v3r7.pdf · VERSION Nota de Versión Segunda edición (noviembre de 1996) Este manual es

GRAPHIC(entero) GRAPHIC Para una serie gráfica de longitud fija cuy a longitud sea entero , que puede ir de 1 a 16383 (16382 si puede s er nulo). Si se omite la especificación de longitud, se supone un a longitud de 1 carácter. VARGRAPHIC(entero) o GRAPHIC VARYING(entero) Para una serie gráfica de longitud variable cuya longitud máxima sea entero , que puede ir de 1 a 16370 (16369 si puede ser nul o). LONG VARGRAPHIC (27) Para una serie gráfica de longitud variable cuya longitud máxima esté determinada por la cantidad de espacio disponible en la fila. Para obtener información acerca de cómo cal cular la longitud máxima, consulte el apartado "Reglas para determinar el tamaño de LONG VARCHAR y LONG VARGRAPHIC" en el tema 5.16.9 . DATE Para una fecha. TIME Para una hora. TIMESTAMP Para una indicación de la hora. ALLOCATE(entero) Especifica para VARCHAR y VARGRAPHIC el esp acio que se ha de reservar para la columna en cada fila. Los valores de columna con longitudes inferiores o iguales al valor as ignado se almacenan en la parte de longitud fija de la fila. Los valores de columna con longitudes superiores al valor asignado se almacenan en la parte de longitud variable de la fila y precisan operaciones de entrada/salida adicionales para su recupera ción. El valor asignado puede ir de 1 a la longitud máxima de la serie. Si se especifica FOR MIXED o un CCSID de datos mi xtos, el rango está comprendido entre 4 y la longitud máxima de la serie. Si se omite la especificación de longitud asignada, se supone una longitud asignada de 0. Si se especifica una constante para el valo r por omisión y la longitud de ALLOCATE es menor que la del va lor por omisión, se presupone que la longitud de ALLOCATE es la del valor por omisión. FOR BIT DATA Indica que los valores de la columna no est án asociados a ningún juego de caracteres codificados y, por lo t anto, nunca se convierten. FOR BIT DATA sólo es válido pa ra las columnas CHARACTER o VARCHAR. El CCSID de una colum na FOR BIT DATA es 65535. FOR SBCS DATA Indica que los valores de la columna contie nen datos SBCS (juego de caracteres de un solo byte). FOR SBCS D ATA es el valor por omisión de las columnas CHAR y VARCHAR si e l CCSID por omisión del servidor actual en el momento de crear la t abla no puede contener datos DBCS, o si la longitud de la columna es menor que 4. FOR SBCS DATA sólo es válido para las columnas CHARACTER o VARCHAR. El CCSID de FOR SBCS DATA lo determina el C CSID por omisión del servidor actual en el momento de crear la t abla. FOR MIXED DATA Indica que los valores de la columna contie nen tanto datos SBCS como DBCS. FOR MIXED DATA es el valor por omisión de las columnas CHAR y VARCHAR si el CCSID por omisión del servidor actual en el momento de crear la tabla puede contener DB CS y la longitud de la columna es mayor que 3. Cada columna FOR M IXED DATA es un campo de la base de datos DBCS abierto. FOR MIXE D DATA sólo es válido para las columnas CHARACTER o VARCHAR. El CCSID de FOR MIXED DATA lo determina el CCSID por omisión del servi dor actual en el momento de crear la tabla. entero CCSID Indica que los valores de la columna contie nen datos de entero CCSID. Si el entero es un CCSID SBCS, la c olumna contendrá datos SBCS. Si el entero es un CCSID de datos mi xtos, la columna es de datos mixtos, y la longitud de la columna d ebe ser mayor que 3. Para las columnas de tipo carácter, el CCSI D debe ser un CCSID SBCS o un CCSID de datos mixtos. Para las columnas gráficas, el CCSID debe ser un CCSID UCS-2 o DBCS. Si n o se especifica ningún CCSID para una columna gráfica, el CCSID lo determina el CCSID por omisión del servidor actual en el momento d e crear la tabla. En el Apéndice E, "Valores CCSID" en el tema E.0 hallará una lista de los CCSID válidos. NOT NULL Impide que la columna contenga valores nulos. La omisión de NOT NULL conlleva que la columna pueda ser nula. DEFAULT Especifica un valor por omisión para la columna . Esta cláusula no se| puede especificar más de una vez en la definición-columna . Si no se| especifica ningún valor y la columna puede ser nula, el valor por| omisión es el valor nulo. Si no se especifica ningún valor y la| columna no puede ser nula, el valor por omisión depende del tipo de| datos de la columna:

DB2/400 Manual de Consulta SQL V3R7 definición-columna

© Copyright IBM Corp. 1995, 1996 5.16.5 - 2

Page 508: DB2/400 Manual de Consulta SQLmarce.com/docs/systems/manuales/db2_400_manual_consulta_sql_v3r7.pdf · VERSION Nota de Versión Segunda edición (noviembre de 1996) Este manual es

Tipo de datos Valor por omisión Numérico 0 Serie de longitud fija Blancos Serie de longitud variable Una serie de long itud 0 Fecha Fecha actual en e l momento de realizar la operación INSE RT Hora Hora actual en el momento de realizar la operación INSERT Indicación de la hora La indicación de la hora actual en el momento de realiz ar la operación INSERT La omisión de NOT NULL y DEFAULT de una definición-columna es una especificación implícita de DEFAULT NULL. constante Especifica la constante como el valor por o misión de la columna. La constante especificada debe representar un valor que puede asignarse a la columna según las reglas de asignación, tal como se describen en el apartado "Asignaciones y comparaciones" en el| tema 2.7 . No se debe utilizar una constante de coma flotan te para| una columna SMALLINT, INTEGER, DECIMAL o NU MERIC. Una constante| decimal no debe contener más dígitos a la d erecha de la coma| decimal que la escala especificada de la co lumna. NULL Especifica el valor nulo como el valor por omisión de la columna. Si se especifica NOT NULL, no debe especifi carse DEFAULT NULL dentro de la misma definición de columna. CURRENT_DATE Especifica la fecha actual como el valor po r omisión para la columna. Si se especifica CURRENT_DATE, el tipo de datos de la columna debe ser DATE. CURRENT_TIME Especifica la hora actual como el valor por omisión para la columna. Si se especifica CURRENT_TIME, el tipo de datos de la columna debe ser TIME. CURRENT_TIMESTAMP Especifica la indicación de la hora actual como el valor por omisión para la columna. Si se especifica CURRENT_TIMESTAMP, el tipo de datos de la columna debe ser TIMEST AMP. CONSTRAINT nombre-restricción Da nombre a la restricción. Un nombre-restricc ión no debe identificar una restricción que ya exista en el servidor ac tual. Si no se especifica la cláusula, el gestor de b ases de datos genera un nombre de restricción de unicidad. PRIMARY KEY Constituye un método abreviado de definir una c lave primaria compuesta de una sola columna. Así pues, si se especific a PRIMARY KEY en la definición de la columna C, el efecto es el mis mo que si especificase PRIMARY KEY(C) como cláusula aparte. Con esta cláusula debe especificarse también la cláusula NOT NULL. Esta cláusula no debe especificarse en más de u na definición de columna ni tampoco, bajo ningún concepto, si se especifica la cláusula UNIQUE en la definición de columna. UNIQUE Constituye un método abreviado de definir una c lave exclusiva compuesta de una sola columna. Por tanto, si s e especifica UNIQUE en la definición de la columna C, el efecto es el mismo que si se especificase la cláusula UNIQUE(C) como cláusul a aparte. Esta cláusula no puede especificarse más de una vez en una definición de columna y no debe especificarse si se especi fica PRIMARY KEY en la definición de columna. cláusula-references La cláusula-references de una definición-columna constituye un método abreviado de definir una clave foránea compuest a de una sola columna. Así pues, si se especifica cláusula-references en la definición de la columna C, el efecto es el mismo que si especif icase dicha cláusula-references como parte de una cláusula FOREIGN KEY en la que C fuese la única columna identificada. (27) Esta opción se proporciona para la compatibil idad con otros productos. Se aconseja que, en su lugar, se es pecifique VARCHAR(entero) o VARGRAPHIC(entero).

DB2/400 Manual de Consulta SQL V3R7 definición-columna

© Copyright IBM Corp. 1995, 1996 5.16.5 - 3

Page 509: DB2/400 Manual de Consulta SQLmarce.com/docs/systems/manuales/db2_400_manual_consulta_sql_v3r7.pdf · VERSION Nota de Versión Segunda edición (noviembre de 1996) Este manual es

5.16.6 Restricción-unicidad CONSTRAINT nombre-restricción Da nombre a la restricción. Un nombre-restricción no debe identificar una restricción que ya exista en el servidor ac tual. Si no se especifica la cláusula, el gestor de b ases de datos genera un nombre de restricción de unicidad. PRIMARY KEY(nombre-col ,...) Define una clave primaria compuesta por las col umnas identificadas. Una tabla sólo puede tener una clave primaria. Así pues, esta cláusula no puede especificarse más de una vez ni tampoco, bajo ningún concepto, si se ha utilizado el formato abrevia do para definir una clave primaria para la tabla. Las columnas ide ntificadas no pueden ser las mismas que las especificadas en otra re stricción UNIQUE especificada anteriormente en la sentencia CREA TE TABLE. Por ejemplo, PRIMARY KEY(A,B) no estaría permitido si ya se hubiese especificado UNIQUE(B,A). Cada nombre-col debe ser un nombre no calificado que identifique u na columna de la tabla y ésta debe estar definida como NOT NULL. La misma columna no debe identificarse más de una vez. El número de columnas identificadas no debe pasar de 120 y l a suma de sus longitudes no debe ser superior a 2000-n, donde n es el número de columnas especificadas que permiten nulos. El índice exclusivo se crea como parte del archivo físico AS/400, y no como un archivo lógico AS/400 separado. UNIQUE(nombre-col ,...) Define una clave exclusiva compuesta por las co lumnas identificadas. La cláusula UNIQUE puede especificarse más de u na vez. Las columnas identificadas no pueden ser las mismas que las especificadas en otra restricción UNIQUE o cláusula PRIMARY KEY espec ificadas anteriormente en la sentencia CREATE TABLE. Para determinar si una restricción exclusiva es la misma que otra especificación d e restricción, se comparan las listas de columnas. UNIQUE(A,B), por ejemplo, es lo mismo que UNIQUE(B,A). Cada nombre-col debe ser un nombre no calificad o que identifique una columna de la tabla. La misma columna no debe identificarse más de una vez. El número de columnas identificadas n o debe pasar de 120 y la suma de sus longitudes no debe ser superior a 2000-n, donde n es el número de columnas especificadas que permiten n ulos. Durante la ejecución de la sentencia CREATE TAB LE se crea un índice exclusivo en la columna identificada. El índic e exclusivo se crea como parte del archivo físico AS/400, y no como un archivo lógico AS/400 separado.

DB2/400 Manual de Consulta SQL V3R7 Restricción-unicidad

© Copyright IBM Corp. 1995, 1996 5.16.6 - 1

Page 510: DB2/400 Manual de Consulta SQLmarce.com/docs/systems/manuales/db2_400_manual_consulta_sql_v3r7.pdf · VERSION Nota de Versión Segunda edición (noviembre de 1996) Este manual es

5.16.7 restricción-referencia CONSTRAINT nombre-restricción| Da nombre a la restricción. Un nombre-restricción no debe identificar una restricción que ya exista en el servidor ac tual. Si no se especifica la cláusula, el gestor de b ases de datos genera un nombre de restricción de unicidad. FOREIGN KEY Cada especificación de la cláusula FOREIGN KEY define una restricción de referencia. (nombre-col,...) La clave foránea de la restricción de refer encia está compuesta por las columnas identificadas. Cada nombre-col debe ser un nombre no calificado que identifique una co lumna de la tabla. La misma columna no debe identificarse más de una vez. El número de columnas identificadas no debe pasar de 120 y la suma de sus longitudes no debe ser superior a 2000-n, d onde n es el número de columnas especificadas que permiten nulos. REFERENCES nombre-tabla El nombre-tabla especificado en la cláusula REFERENCES debe identificar la tabla que se está creando o una tabla base que ya exista en el servidor de la aplicación, per o no debe identificar ninguna tabla del catálogo. Una restricción de referencia es un duplicado si su clave foránea, clave padre y tabla padre son las mismas qu e las de una restricción de referencia especificada ante riormente. Las restricciones de referencia duplicadas está n permitidas, pero no son aconsejables. Sea T2 la tabla padre identificada y sea T1 la tabla que se está creando. La clave foránea especificada debe tener el mismo número de columnas que la clave padre de T2. La desc ripción de la enésima columna de la clave foránea y la enésima columna de la clave padre deben tener tipos de datos y longitudes idé nticos. (nombre-col,...) La clave padre de la restricción de ref erencia está compuesta por las columnas especificadas. Cada nombre-col debe ser un nombre no calificado que identifique un a columna de T2. La misma columna no debe identificarse más de una vez. El número de columnas identificadas no debe pasar de 120 y la suma de sus longitudes no debe ser superior a 2 000-n, donde n es el número de columnas especificadas que pe rmiten nulos. La lista de nombres de columna debe ser idéntica a la lista de nombres de columna de la clave primaria de T2 o de una| restricción UNIQUE que exista en T2. N o es necesario| especificar los nombres en el mismo ord en que en la clave| primaria; sin embargo, deben especifica rse en el orden| correspondiente a la lista de columnas de la cláusula foreign| key . Si no se especifica ninguna lista de nombres de columna,| entonces T2 debe tener una clave primar ia. La omisión de la lista de nombres de columna es una espe cificación implícita de las columnas de la clave primaria. La restricción de referencia especificada p or una cláusula FOREIGN KEY define una relación en la que T2 es la padre y T1 la dependiente. ON DELETE Especifica la acción que ha de llevarse a c abo en las tablas dependientes cuando se suprime una fila de la tabla padre. No debe especificarse SET NULL a menos que alguna columna de la clave foránea permita los valores nulos. La regla de supresión se aplica cuando una fila de T2 es objeto de una operación DELETE o de supresión propaga da y dicha fila tiene dependientes en T1. Sea p dicha fila de T2. � Si se especifica RESTRICT o NO ACTION, s e produce un error y no se suprime ninguna fila. � Si se especifica CASCADE, la operación d e supresión se propaga a las dependientes de p en T1. � Si se especifica SET NULL, cada columna que permite nulos en la clave foránea de cada dependiente de p en T1 queda establecida en el valor nulo. � Si se especifica SET DEFAULT, cada colum na de la clave foránea de cada dependiente de p en T1 queda establecida en su valor por omisión. ON UPDATE Especifica la acción que ha de llevarse a c abo en las tablas dependientes cuando se actualiza una fila d e la tabla padre. La regla de actualización se aplica cuando una fila de T2 es objeto de una operación UPDATE o de actuali zación propagada y dicha fila tiene dependientes en T1. Sea p dicha fila de T2. � Si se especifica RESTRICT o NO ACTION, s e produce un error y

DB2/400 Manual de Consulta SQL V3R7 restricción-referencia

© Copyright IBM Corp. 1995, 1996 5.16.7 - 1

Page 511: DB2/400 Manual de Consulta SQLmarce.com/docs/systems/manuales/db2_400_manual_consulta_sql_v3r7.pdf · VERSION Nota de Versión Segunda edición (noviembre de 1996) Este manual es

no se actualiza ninguna fila.

DB2/400 Manual de Consulta SQL V3R7 restricción-referencia

© Copyright IBM Corp. 1995, 1996 5.16.7 - 2

Page 512: DB2/400 Manual de Consulta SQLmarce.com/docs/systems/manuales/db2_400_manual_consulta_sql_v3r7.pdf · VERSION Nota de Versión Segunda edición (noviembre de 1996) Este manual es

| 5.16.8 cláusula-grupo-nodos | IN nombre-grupo-nodos| Especifica el grupo de nodos entre los que se p artirán los datos de la| tabla. El nombre debe identificar un grupo de nodos que exista en el| servidor actual. Si se especifica esta cláusul a, la tabla se crea| como una tabla distribuida entre todos los sist emas AS/400 del grupo| de nodos. | El producto DB2 Multisystem for OS/400 debe est ar instalado para crear| una tabla distribuida. Para obtener más inform ación sobre tablas distribuidas, consulte la publicación DB2 Multisystem for OS/400 , SC41-3705. PARTITIONING KEY(nombre-col,...)| Especifica la clave de partición. La clave de partición se utiliza| para determinar en qué nodo del grupo de nodos se situará una fila.| Cada nombre-col debe ser un nombre no calificado que identifique u na| columna de la tabla. La misma columna no debe identificarse más de| una vez. Si no se especifica la cláusula PARTI TIONING KEY, la primera| columna de la clave primaria se utiliza como la clave de partición.| Si no hay clave primaria, la primera columna de la tabla que no sea| coma flotante, fecha, hora o indicación de la h ora se utiliza como la| clave de partición. | Las columnas que conforman la clave de partició n, deben ser un| subconjunto de las columnas que configuran cual esquiera restricciones| exclusivas sobre la tabla. Las columnas de com a flotante, fecha, hora| e indicación de la hora no se pueden utilizar e n una clave de| partición. USING HASHING| Especifica que se efectuará un hash de los dato s de la clave de| partición para distribuir la fila en el AS/400 adecuado del grupo de| nodos.

DB2/400 Manual de Consulta SQL V3R7 cláusula-grupo-nodos

© Copyright IBM Corp. 1995, 1996 5.16.8 - 1

Page 513: DB2/400 Manual de Consulta SQLmarce.com/docs/systems/manuales/db2_400_manual_consulta_sql_v3r7.pdf · VERSION Nota de Versión Segunda edición (noviembre de 1996) Este manual es

5.16.9 Notas Las tablas se crean como archivos físicos. Si se u tilizan nombres SQL, se crean con la autorización del sistema *EXCLUDE sobr e *PUBLIC. Si se utilizan nombres del sistema, se crean con la autor ización *PUBLIC tal como está determinado en el parámetro de autorizaci ón para crear (CRTAUT) de la colección o de la biblioteca. Cuando se crea una tabla, el registro por diario se arranca automáticamente en el diario llamado QSQJRN, situado en la colección o en la biblioteca. Tamaño máximo de registro : El tamaño máximo de registro aludido en la descripción de nombre-col es 32766 o, si se especifica una columna VARCHAR o VARGRAPHIC, 32740. Para determinar la longitud d e un registro, sume la longitud de cada columna de ese registro tomando co mo base en el recuento de bytes del tipo de datos. La lista siguiente da el recuento de bytes de las c olumnas por tipo de datos correspondiente a columnas que no permiten va lores nulos. Si alguna columna permite valores nulos, se necesita un byte cada ocho columnas. Tipo de datos Recuento de bytes SMALLINT 2 INTEGER 4 DECIMAL( p, s) la parte entera de ( p/2) + 1 NUMERIC( p, s) p FLOAT (precisión simple) 4 FLOAT (precisión doble) 8 CHAR( n) n VARCHAR( n) n+2 GRAPHIC(n) n*2 VARGRAPHIC (n) n*2+2 DATE 10 (el almacenamiento inte rno utilizado es 4) TIME 8 (el almacenamiento inter no utilizado es 3) TIMESTAMP 26 (el almacenamiento inte rno utilizado es 10) Precisión según lo descrito a la base de datos: � Los campos de coma flotante se definen en la bas e de datos del AS/400 con una precisión decimal, y no con una precisi ón de bit. El algoritmo utilizado para convertir el número de bits a decimal es precisión decimal = x(n/3.31) , donde x es el entero más pequeño mayor que o igual al argumento, y n es el número de bits a convertir. La precisión decimal se utiliza para determinar cu ántos dígitos se han de visualizar utilizando el SQL interactivo. � Los campos SMALLINT se almacenan con una precisi ón decimal de 4,0. � Los campos INTEGER se almacenan con una precisió n decimal de 9,0. Reglas para determinar el tamaño de LONG VARCHAR y LONG VARGRAPHIC: La longitud de una columna LONG se determina de la sig uiente forma. Sea: � m el tamaño de fila máximo � i la suma del recuento de bytes de todas las columna s de la tabla que no son LONG VARCHAR o LONG VARGRAPHIC � j el número de columnas LONG VARCHAR y LONG VARGRAPH IC en la tabla � k el número de columnas de la fila que permiten nulo s. La longitud de cada columna LONG VARCHAR es INTEGER (( m-24- i -(( k+7)/8))/ j ). La longitud de cada columna LONG VARGRAPHIC se dete rmina tomando la longitud calculada para una columna LONG VARCHAR y dividiéndola por 2. La parte del entero del resultado es la longitud.

DB2/400 Manual de Consulta SQL V3R7 Notas

© Copyright IBM Corp. 1995, 1996 5.16.9 - 1

Page 514: DB2/400 Manual de Consulta SQLmarce.com/docs/systems/manuales/db2_400_manual_consulta_sql_v3r7.pdf · VERSION Nota de Versión Segunda edición (noviembre de 1996) Este manual es

5.16.10 Reglas para la generación de nombres del si stema Existen ocasiones específicas en las que el sistema genera un nombre de tabla, vista, índice o columna del sistema. En los apartados siguientes se describen tales circunstancias y las reglas para la generación de nombres del sistema. Subtemas 5.16.10.1 Reglas para la generación de nombres de columna 5.16.10.2 Reglas para la generación de nombres de tabla

DB2/400 Manual de Consulta SQL V3R7 Reglas para la generación de nombres del sistema

© Copyright IBM Corp. 1995, 1996 5.16.10 - 1

Page 515: DB2/400 Manual de Consulta SQLmarce.com/docs/systems/manuales/db2_400_manual_consulta_sql_v3r7.pdf · VERSION Nota de Versión Segunda edición (noviembre de 1996) Este manual es

5.16.10.1 Reglas para la generación de nombres de c olumna Se generará un nombre-col-sistema si no se ha espec ificado el nombre-col-sistema al crear la tabla o vista y el n ombre-col no es un nombre-col-sistema válido. Si el nombre-col no contiene caracteres especiales y es de una longitud superior a los 10 caracteres, se generará un nombre -col-sistema de 10 caracteres con: � Los 5 primeros caracteres del nombre � Un número exclusivo de 5 dígitos Por ejemplo: El nombre-col-sistema de NOMBCOLUMLARGO sería NOMBC 00001 Si el nombre de columna está delimitado: � Los 5 primeros caracteres comprendidos entre los delimitadores se utilizarán como los 5 primeros caracteres del n ombre-col-sistema. Si hay menos de 5 caracteres dentro de los delimit adores, el nombre se rellenará por la derecha con caracteres de subr ayado (_). Los caracteres en minúsculas se pasan a mayúsculas. Los únicos caracteres válidos en un nombre-col-sistema son: A-Z, 0-9, @, #, $ y _. Cualquier otro carácter se cambiará por el cará cter de subrayado (_). Si el primer carácter acaba como subrayado, ést e se cambiará por la letra Q. � A los 5 caracteres de les agrega un número exclu sivo de 5 dígitos. Por ejemplo: El nombre-col-sistema "abc" sería ABC__00001 El nombre-col-sistema "COL2.NOMB" sería COL2__00001 El nombre-col-sistema "C 3" sería C_3__00001 El nombre-col-sistema "??" sería Q____00001 El nombre-col-sistema "*column1" sería QCOLU00001

DB2/400 Manual de Consulta SQL V3R7 Reglas para la generación de nombres de columna

© Copyright IBM Corp. 1995, 1996 5.16.10.1 - 1

Page 516: DB2/400 Manual de Consulta SQLmarce.com/docs/systems/manuales/db2_400_manual_consulta_sql_v3r7.pdf · VERSION Nota de Versión Segunda edición (noviembre de 1996) Este manual es

5.16.10.2 Reglas para la generación de nombres de t abla Se generará un nombre del sistema si se crea una ta bla, vista o índice con: � Un nombre de longitud superior a los 10 caracter es o bien � Un nombre que contenga caracteres no válidos en un nombre del sistema Para acceder al archivo una vez creado, en las sent encias SQL puede utilizarse tanto el nombre SQL como su nombre del s istema correspondiente. Sin embargo, el nombre SQL sólo lo reconoce DB2 par a OS/400, y el nombre del sistema deberá utilizarse en los otros entornos . Si el nombre no contiene caracteres especiales y es de longitud superior a los 10 caracteres, se generará un nombre del sistem a de 10 caracteres con: � Los 5 primeros caracteres del nombre � Un número exclusivo de 5 dígitos Por ejemplo: El nombre del sistema de NOMBTABLALARG sería NOMBT0 0001 Si el nombre SQL contiene caracteres especiales, el nombre del sistema se generará con: � Los 4 primeros caracteres del nombre � Un número exclusivo de 4 dígitos Además: � Se sustituirán todos los caracteres especiales p or el subrayado (_) � Se eliminarán del nombre todos los blancos final es � Se delimitará el nombre con comillas dobles (") si es preciso que haya delimitadores para que el nombre sea un nombre del sistema válido. Por ejemplo: El nombre del sistema "??" sería "__0001" El nombre del sistema "nombtablalarg" sería "nomb00 01" El nombre del sistema "NOMBTablaLarg" sería NOMB000 1 El nombre del sistema "A b " sería "A_b0001" SQL se asegura de que el nombre del sistema sea exc lusivo realizando una búsqueda en el archivo de referencias cruzadas. Si el nombre ya existe en el archivo de referencias cruzadas, se irá incremen tando el número hasta que el nombre deje de ser un duplicado.

DB2/400 Manual de Consulta SQL V3R7 Reglas para la generación de nombres de tabla

© Copyright IBM Corp. 1995, 1996 5.16.10.2 - 1

Page 517: DB2/400 Manual de Consulta SQLmarce.com/docs/systems/manuales/db2_400_manual_consulta_sql_v3r7.pdf · VERSION Nota de Versión Segunda edición (noviembre de 1996) Este manual es

5.16.11 Ejemplos Ejemplo 1 : Partiendo del supuesto que el programador tiene autorización de administrador, crear una tabla llamada 'MORENO.I NVENTARIO' con las siguientes columnas: Número de pieza Entero comprendido entre 1 y 9 999; no debe ser nulo Descripción Carácter de longitud comprend ida entre 0 y 24 Cantidad en existencias Entero comprendido entre 0 y 100000 La clave primaria en NUMPIEZA CREATE TABLE MORENO.INVENTARIO ( NUMPIEZA SMALLINT NOT NULL, DESCR VARCHAR(24), CANTEXI INT , PRIMARY KEY(NUMPIEZA)) Ejemplo 2 : Crear una tabla llamada DATOSCORP.DEPT con las s iguientes columnas: Número de departamento Carácter de longitud 3; no debe ser nulo Nombre de departamento Carácter de longitud compr endida entre 0 y 36; no debe ser nulo Número de jefe Carácter de longitud 6 Depto de administración Carácter de longitud 3; no debe ser nulo CREATE TABLE DATOSCORP.DEPT ( NUMDEPT CHAR(3) NOT NULL, NOMBDEPT VARCHAR(36) NOT NULL , NUMJE CHAR(6) , DEPTOADM CHAR(3) NOT NULL)

DB2/400 Manual de Consulta SQL V3R7 Ejemplos

© Copyright IBM Corp. 1995, 1996 5.16.11 - 1

Page 518: DB2/400 Manual de Consulta SQLmarce.com/docs/systems/manuales/db2_400_manual_consulta_sql_v3r7.pdf · VERSION Nota de Versión Segunda edición (noviembre de 1996) Este manual es

5.17 CREATE VIEW La sentencia CREATE VIEW crea una vista sobre una o más tablas o vistas. Subtemas 5.17.1 Invocación 5.17.2 Autorización 5.17.3 Sintaxis 5.17.4 Descripción 5.17.5 Notas 5.17.6 Ejemplos

DB2/400 Manual de Consulta SQL V3R7 CREATE VIEW

© Copyright IBM Corp. 1995, 1996 5.17 - 1

Page 519: DB2/400 Manual de Consulta SQLmarce.com/docs/systems/manuales/db2_400_manual_consulta_sql_v3r7.pdf · VERSION Nota de Versión Segunda edición (noviembre de 1996) Este manual es

5.17.1 Invocación Esta sentencia puede hospedarse en un programa de a plicación o emitirse interactivamente. Es una sentencia ejecutable que puede prepararse dinámicamente.

DB2/400 Manual de Consulta SQL V3R7 Invocación

© Copyright IBM Corp. 1995, 1996 5.17.1 - 1

Page 520: DB2/400 Manual de Consulta SQLmarce.com/docs/systems/manuales/db2_400_manual_consulta_sql_v3r7.pdf · VERSION Nota de Versión Segunda edición (noviembre de 1996) Este manual es

5.17.2 Autorización Los privilegios del ID de autorización de la senten cia deben incluir al menos uno de los privilegios siguientes: � Las autorizaciones del sistema siguientes: - *USE para utilizar el mandato CL CRTLF (Cre ar Archivo Lógico) - *EXECUTE y *ADD para utilizar la biblioteca en la que se crea la vista. - *CHANGE para utilizar el diccionario de dat os si la biblioteca en la que se creará la tabla es una colección SQL con un diccionario de datos. � Autorización de administrador Los privilegios del ID de autorización de la senten cia deben incluir también al menos uno de los privilegios siguientes: � El privilegio SELECT sobre todas las tablas y vi stas a las que se haga referencia directa mediante la subselección o i ndirecta mediante las vistas a las que se haga referencia en la subse lección. � Autorización de administrador El ID de autorización de la sentencia tiene el priv ilegio SELECT sobre una tabla si: � Es el propietario de la tabla. � Se le ha otorgado el privilegio SELECT sobre la tabla o bien � Se le han otorgado las autorizaciones del sistem a *OBJOPR y *READ sobre la tabla. El ID de autorización de la sentencia tiene el priv ilegio SELECT sobre una vista si: � Es el propietario de la vista, � Se le ha otorgado el privilegio SELECT sobre la vista o bien � Se le han otorgado las autorizaciones del sistem a *OBJOPR y *READ sobre la vista y la autorización del sistema *R EAD sobre todas las tablas y vistas de las que depende esta vista d irecta o indirectamente. Es decir, sobre todas las tabl as y vistas a las que se hace referencia en la definición de la vista , y si se hace referencia a una vista, sobre todas las tablas y vistas a las que se hace referencia en la definición de la misma, y así sucesivamente.

DB2/400 Manual de Consulta SQL V3R7 Autorización

© Copyright IBM Corp. 1995, 1996 5.17.2 - 1

Page 521: DB2/400 Manual de Consulta SQLmarce.com/docs/systems/manuales/db2_400_manual_consulta_sql_v3r7.pdf · VERSION Nota de Versión Segunda edición (noviembre de 1996) Este manual es

5.17.3 Sintaxis +-------------------------------------------------- ---------------------------+ ¦ ¦ ¦ >>-- CREATE VIEW-- nombre-vista ---------------------------------------------> ¦ ¦ ¦ ¦ >------------------------------------------------ -------------------------> ¦ ¦ ¦ <-,-------------------------------------- -------------+ ¦ ¦ ¦ +-(---- nombre-col ---------------------------------------------)-+ ¦ ¦ ¦ +- COLUMN-+ ¦ ¦ ¦ +- FOR-------------- nombre-col-sistema -+ ¦ ¦ ¦ ¦ >-- AS-- subselección --------------------------------------------------- --->< ¦ ¦ ¦ +- CASCADED-+ ¦ ¦ ¦ +- WITH--+----------+-- CHECK OPTION-+ ¦ ¦ +- LOCAL----+ ¦ ¦ ¦ +-------------------------------------------------- ---------------------------+

DB2/400 Manual de Consulta SQL V3R7 Sintaxis

© Copyright IBM Corp. 1995, 1996 5.17.3 - 1

Page 522: DB2/400 Manual de Consulta SQLmarce.com/docs/systems/manuales/db2_400_manual_consulta_sql_v3r7.pdf · VERSION Nota de Versión Segunda edición (noviembre de 1996) Este manual es

5.17.4 Descripción nombre-vista Da nombre a la vista. El nombre, incluido el c alificador implícito o explícito, no debe ser el mismo que un índice, tabla, vista o archivo que ya exista en el servidor de la aplicación. Si se han especificado nombres SQL, la vista se creará en la colección o biblioteca especificadas por el calificador i mplícito o explícito. El calificador es el propietario de la vista si existe un perfil de usuario con ese nombre. De lo contrario, el propietario de la vista es el perfil de usuario o el perfil de usuario de grupo del trabajo que invoque a la sentencia. Si se han especificado nombres del sistema y el nombre de la vista está calificado, la vista se creará en la colec ción o biblioteca especificadas por el calificador. Si se han es pecificado nombres del sistema y el nombre de vista no está calificado , la vista se creará en la misma colección o biblioteca que la primera tabla especificada en la cláusula FROM. El propietario de la vista es el perfil de usuario o el perfil de usuario de grupo del trabajo que invoque a la sentencia. El propietario adquiere siempre el privilegio S ELECT sobre la vista y la autorización de eliminarla. El privilegio S ELECT puede otorgárseles a otros sólo si el propietario tie ne también la autorización para otorgar el privilegio SELECT sobre cada tabla o vista identificadas en la subselección. El propietario puede adquirir también los privi legios INSERT, UPDATE y DELETE sobre la vista. Si la vista no es de só lo lectura, se adquirirán los mismos privilegios sobre la nuev a vista que tiene el propietario sobre la tabla o la vista identific adas en la primera cláusula FROM de la subselección. Estos privil egios se pueden otorgan únicamente si los privilegios de los que deriva n también se pueden otorgar. Si el nombre de vista no es un nombre del sistema válido, SQL de DB2 para OS/400 generará un nombre del s istema. Para obtener información acerca de las reglas para generar e l nombre, consulte el apartado "Reglas para la generación de nombres de tabla" en el tema 5.16.10.2 . (nombre-col, ... ) Da nombre a las columnas de la vista. Si espec ifica una lista de nombres de columna, ésta debe constar de tantos nombres como columnas haya en la tabla de resultados de la subselecci ón. No califique el nombre-col y no utilice el mismo nombre para má s de una columna de la vista o para un nombre-col-sistema de la vista. Si no especifica una lista de los nombres de columna, las columnas d e la vista heredarán los nombres de las columnas y los nombres del s istema de las columnas de la tabla de resultados de la subselección. Debe especificar una lista de nombres de column a si la tabla de resultados de la subselección tiene nombres de columna duplicados, nombres de columna del sistema duplicados o una columna sin nombre. Para obtener más información sobre las columnas sin nombre, véase el apartado "Nombres de columnas de resultados" en el tema 4.2 .1 . FOR COLUMN nombre-col-sistema Proporciona un nombre del OS/400 para la column a. No utilice el mismo nombre para más de una columna de la vista o pa ra un nombre-col de la vista. Si no se especifica el nombre-col-sistema y el nombre-col no es un nombre-col-sistema válido, se generará un nombr e de columna del sistema. Para obtener más información acerca d e cómo se generan los nombres de columna del sistema, consulte el apa rtado "Reglas para la generación de nombres de columna" en el tema 5.16.1 0.1 . AS subselección Define la vista. En todo momento, la vista con sta de las filas que se generarían si la subselección se ejecutara. La subselección no debe contener referencias a variables del lengu aje principal. Para saber lo que es una subselección , consulte el Capítulo 4, "Consultas" en el tema 4.0 . WITH CASCADED CHECK OPTION Especifica la restricción de que todas las fila s insertadas o actualizadas mediante la vista deben ajustarse a la definición de la vista. Una fila que no se ajuste a la definici ón de la vista es una fila que no puede recuperarse utilizando dicha vista. WITH CHECK OPTION no se debe especificar si la vista es de sólo lectura o si la definición de la vista incluye una subconsulta. Si se especifica WITH CHECK OPTION para una vista act ualizable que permita inserciones, la restricción rige sólo para las actualizaciones. Si se omite WITH CHECK OPTION, no se utilizará la definición de la vista para comprobar las operaciones de inserci ón o actualización que utilicen la vista. Con todo, es posible que se realice alguna que otra comprobación durante las operaciones de in serción o actualización si la vista es una dependiente directa o indire cta de otra vista que incluya WITH CHECK OPTION. Puesto que no se ut iliza la definición de la vista, las filas que no se ajusten a ella pu eden insertarse o actualizarse mediante la misma. La restricción WITH CHECK OPTION sobre una vist a V la hereda cualquier

DB2/400 Manual de Consulta SQL V3R7 Descripción

© Copyright IBM Corp. 1995, 1996 5.17.4 - 1

Page 523: DB2/400 Manual de Consulta SQLmarce.com/docs/systems/manuales/db2_400_manual_consulta_sql_v3r7.pdf · VERSION Nota de Versión Segunda edición (noviembre de 1996) Este manual es

vista actualizable que esté dependiente directa o indirectamente a V. Así pues, si en V hay definida una vista actual izable, la restricción sobre V también regirá para dicha vista, inclus o aunque no se haya especificado WITH CHECK OPTION en dicha vista. Considérense, por ejemplo, las siguientes vistas actualizables: CREATE VIEW V1 AS SELECT COL1 FROM T1 WHERE COL1 > 10 CREATE VIEW V2 AS SELECT COL1 FROM V1 WITH CHECK OPTION CREATE VIEW V3 AS SELECT COL1 FROM V2 WHERE COL1 < 100 La siguiente sentencia INSERT utiliza V1; será satisfactoria porque V1 no tiene ninguna cláusula WITH CHECK OPTION y n o es dependiente de ninguna otra vista que tenga WITH CHECK OPTION. INSERT INTO V1 VALUES(5) La siguiente sentencia INSERT utiliza V2; dará como resultado un error porque V2 tiene una cláusula WITH CHECK OPTION y la inserción produciría una fila que no se ajustaría a la de finición de V2. INSERT INTO V2 VALUES(5) La siguiente sentencia INSERT utiliza V3; dará como resultado un error a pesar de no tener ninguna cláusula WITH CHECK OPTION porque V3 es dependiente de V2 que sí tiene una cláusula WIT H CHECK OPTION. INSERT INTO V3 VALUES(5) La siguiente sentencia INSERT utiliza V3; será satisfactoria porque, a pesar de no ajustarse a la definición de V3 (V3 no tiene ninguna cláusula WITH CHECK OPTION), sí se ajusta a la definición de V2 (que sí tiene WITH CHECK OPTION). INSERT INTO V3 VALUES(200) WITH LOCAL CHECK OPTION WITH LOCAL CHECK OPTION es idéntica a WITH CASC ADED CHECK OPTION, excepto en que sigue siendo posible actualizar una fila de manera que deje de ajustarse a la definición de la vista c uando ésta se defina con WITH LOCAL CHECK OPTION. Esto sólo puede o currir cuando la vista es dependiente directa o indirectamente de una vista definida sin la cláusula WITH CASCADED CHECK OPTION o la cláusu la WITH LOCAL CHECK OPTION. WITH LOCAL CHECK OPTION especifica que se compr obarán las condiciones de búsqueda únicamente para las vistas dependie ntes que tengan WITH LOCAL CHECK OPTION o WITH CASCADED CHECK OPTION al insertarse o actualizarse una fila. Por el contrario, WITH CASCADED CHECK OPTION especifica que se comprobarán las condiciones d e búsqueda de todas las vistas dependientes al insertarse o actualizars e una fila. La mejor manera de mostrar la diferencia que existe entre CASCADED y LOCAL es por medio de un ejemplo. Considérense las sigui entes vistas actualizables en las que x e y representan o bien L OCAL o bien CASCADED: � V1 definida en T0 � V2 definida en V1 WITH x CHECK OPTION � V3 definida en V2 � V4 definida en V3 WITH y CHECK OPTION � V5 definida en V4 La siguiente tabla señala cuáles son las condicione s de búsqueda de vistas que se comprueban durante una operación INSERT o UP DATE: +-------------------------------------------------- ----------------------+ ¦ Tabla 10. Vistas cuyas condiciones de búsqueda se comprueban durante ¦ ¦ INSERT y UPDATE ¦ +-------------------------------------------------- ----------------------¦ ¦ Vista ¦ x = LOCAL ¦ x = CASCADED ¦ x = LOCAL ¦ x = ¦ ¦ utilizada ¦ ¦ ¦ ¦ CASCADED ¦ ¦ en INSERT o ¦ y = LOCAL ¦ y = CASCADED ¦ y = CASCADED ¦ ¦ ¦ UPDATE ¦ ¦ ¦ ¦ y = LOCAL ¦ +-------------+--------------+--------------+------ --------+-------------¦ ¦ V1 ¦ ninguna ¦ ninguna ¦ ningu na ¦ ninguna ¦ +-------------+--------------+--------------+------ --------+-------------¦ ¦ V2 ¦ V2 ¦ V2 V1 ¦ V2 ¦ V2 V1 ¦ +-------------+--------------+--------------+------ --------+-------------¦ ¦ V3 ¦ V2 ¦ V2 V1 ¦ V2 ¦ V2 V1 ¦ +-------------+--------------+--------------+------ --------+-------------¦ ¦ V4 ¦ V4 V2 ¦ V4 V3 V2 V1 ¦ V4 V3 V2 V1 ¦ V4 V2 V1 ¦ +-------------+--------------+--------------+------ --------+-------------¦ ¦ V5 ¦ V4 V2 ¦ V4 V3 V2 V1 ¦ V4 V3 V2 V1 ¦ V4 V2 V1 ¦ +-------------------------------------------------- ----------------------+

DB2/400 Manual de Consulta SQL V3R7 Descripción

© Copyright IBM Corp. 1995, 1996 5.17.4 - 2

Page 524: DB2/400 Manual de Consulta SQLmarce.com/docs/systems/manuales/db2_400_manual_consulta_sql_v3r7.pdf · VERSION Nota de Versión Segunda edición (noviembre de 1996) Este manual es

5.17.5 Notas Las vistas se crean como archivos lógicos sin clave . Si se utilizan nombres SQL, se crean con la autorización del siste ma *EXCLUDE sobre *PUBLIC. Si se utilizan nombres del sistema, se cr ean con la autorización para utilizar *PUBLIC tal como está determinado por el parámetro de autorización para crear (CRTAUT) de la colección o de la biblioteca. La vista se crea con la secuencia de clasificación en vigor en el momento de ejecutar la sentencia CREATE VIEW. La secuencia de clasificación de la vista se aplicará a todas las comparaciones en las que intervengan datos SBCS y datos mixtos en la subselección de vista. S i la vista está incluida en una consulta, se generará una tabla de resultados intermedios a partir de la subselección de vista. La secuencia de clasificación que esté en vigor al ejecutarse la consulta se aplicará a todas las selecciones especificadas en la consulta. Una vista no puede ser la tabla de objeto de una se ntencia UPDATE a menos que la primera cláusula SELECT contenga como mínimo una columna de resultados que se derive exclusivamente de una colu mna. Es decir, al menos una columna de resultados no debe derivar de una expresión que contenga un operador, una función escalar, una cons tante o una columna que derive ella misma de tales expresiones. Una vista no puede hacer referencia a más de 32 tab las reales, incluyendo las tablas reales a las que se haga referencia en v istas subyacentes. Una vista no puede direccionar más de 8000 columnas . El número de tablas a las que se hace referencia en la vista, las longi tudes de nombre de columna y la longitud de la cláusula WHERE reducen aún más este número. | Una vista creada sobre una tabla distribuida se cre a en todos los sistemas| AS/400 entre los que se distribuye la tabla. Si se crea una vista sobre| más de una tabla distribuida y tales tablas no está n distribuidas| utilizando el mismo grupo de nodos, la vista se cre a sólo en el sistema| que realiza la sentencia CREATE VIEW. Para obtener más información sobre| tablas distribuidas, consulte la publicación DB2 Multisystem for OS/400 ,| SC41-3705. Vistas de sólo lectura : Una vista es de sólo lectura si en su definición aparece cualquiera de las siguientes situaciones: � La primera cláusula FROM identifica más de una t abla o vista. � La primera cláusula FROM identifica una vista de sólo lectura. � La primera cláusula SELECT especifica la palabra clave DISTINCT. � La subselección exterior contiene una cláusula G ROUP BY. � La subselección exterior contiene una cláusula H AVING. � La primera cláusula SELECT contiene una función de columna. � La subselección contiene una subconsulta tal que el objeto base de la subselección exterior y el de la subconsulta so n la misma tabla. Una vista de sólo lectura no puede ser el objeto de una sentencia INSERT, UPDATE o DELETE. Probar una definición de vista : Puede probar la semántica de la definición de vista ejecutando SELECT * FROM nombre-vista .

DB2/400 Manual de Consulta SQL V3R7 Notas

© Copyright IBM Corp. 1995, 1996 5.17.5 - 1

Page 525: DB2/400 Manual de Consulta SQLmarce.com/docs/systems/manuales/db2_400_manual_consulta_sql_v3r7.pdf · VERSION Nota de Versión Segunda edición (noviembre de 1996) Este manual es

5.17.6 Ejemplos Ejemplo 1 : Crear una vista llamada PROY_MA sobre la tabla P ROYECTO que contenga sólo aquellas filas con un número de proye cto (NUMPRO) que empiece con las letras 'MA'. CREATE VIEW PROY_MA AS SELECT * FROM PROYECTO WHERE SUBSTR(NUMPRO, 1, 2 ) = 'MA' Ejemplo 2 : Crear una vista como en el ejemplo 1, pero selec cionar únicamente las columnas correspondientes al número de proyecto (NUMPRO), el nombre del proyecto (NOMBREPRO) y el empleado a cargo del proyecto (EMPRESP). CREATE VIEW PROY_MA2 AS SELECT NUMPRO, NOMBREPRO, EMPRESP FROM PROYECTO WHERE SUBSTR(NUMPRO, 1, 2 ) = 'MA' Ejemplo 3 : Crear una vista como en el ejemplo 2, pero llama r en la vista a la columna correspondiente al empleado a cargo de l proyecto A_CARGO. CREATE VIEW PROY_MA ( NUMPRO, NOMBREPRO, A_CARGO) AS SELECT NUMPRO, NOMBREPRO, EMPRESP FROM PROYECTO WHERE SUBSTR(NUMPRO, 1, 2 ) = 'MA' Nota: Aunque se está cambiando sólo uno de los nombre d e columna, deben listarse los nombres de las tres columnas de la vista y hacerlo incluyéndolos entre los paréntesis que sigue n a PROY_MA. Ejemplo 4 : Crear una vista denominada JEFE_PROY que conteng a las primeras cuatro columnas (NUMPRO, NOMBREPRO, NUMDEPT, EMPRES P) de la tabla PROYECTO junto con el apellido (APELL) de la persona respons able del proyecto (EMPRESP). Obtener el nombre de la tabla EMPLEADO emparejando NUMEMP de EMPLEADO con EMPRESP de PROYECTO. CREATE VIEW JEFE_PROY AS SELECT NUMPRO, NOMBRRPROY, NUMDEPT, EMPRESP, APELL FROM PROYECTO, EMPLEADO WHERE EMPRESP = NUMEMP Ejemplo 5 : Crear una vista como en el ejemplo 4, pero mostr ar, además de las columnas NUMPRO, NOMBREPRO, NUMDEPT, EMPRESP y APELL, la paga total (SUELDO + BONIF + COMI) del empleado que sea el res ponsable. Seleccionar también sólo aquellos proyectos con un promedio de personal (PRPERSON) mayor que uno. CREATE VIEW JEFE_PROY ( NUMPRO, NOMBREPRO, NUMDEPT, EMPRESP, APELL, PAGA_TOTAL) AS SELECT NUMPRO, NOMBREPRO, NUMDEPT, EMPRESP, APELL, SUELDO+BONIF+COMI FROM PROYECTO, EMPLEADO WHERE EMPRESP = NUMEMP AND PRPERSON > 1

DB2/400 Manual de Consulta SQL V3R7 Ejemplos

© Copyright IBM Corp. 1995, 1996 5.17.6 - 1

Page 526: DB2/400 Manual de Consulta SQLmarce.com/docs/systems/manuales/db2_400_manual_consulta_sql_v3r7.pdf · VERSION Nota de Versión Segunda edición (noviembre de 1996) Este manual es

5.18 DECLARE CURSOR La sentencia DECLARE CURSOR define un cursor. Subtemas 5.18.1 Invocación 5.18.2 Autorización 5.18.3 Sintaxis 5.18.4 Descripción 5.18.5 Notas 5.18.6 Ejemplos

DB2/400 Manual de Consulta SQL V3R7 DECLARE CURSOR

© Copyright IBM Corp. 1995, 1996 5.18 - 1

Page 527: DB2/400 Manual de Consulta SQLmarce.com/docs/systems/manuales/db2_400_manual_consulta_sql_v3r7.pdf · VERSION Nota de Versión Segunda edición (noviembre de 1996) Este manual es

5.18.1 Invocación Esta sentencia sólo puede hospedarse en un programa de aplicación. No es una sentencia ejecutable.

DB2/400 Manual de Consulta SQL V3R7 Invocación

© Copyright IBM Corp. 1995, 1996 5.18.1 - 1

Page 528: DB2/400 Manual de Consulta SQLmarce.com/docs/systems/manuales/db2_400_manual_consulta_sql_v3r7.pdf · VERSION Nota de Versión Segunda edición (noviembre de 1996) Este manual es

5.18.2 Autorización No se requiere ninguna autorización para utilizar e sta sentencia. Sin embargo, para utilizar OPEN o FETCH para el cursor, los privilegios del ID de autorización de la sentencia deben incluir al me nos uno de los privilegios siguientes: � Para cada tabla o vista identificada en la sente ncia SELECT del cursor: - El privilegio SELECT sobre la tabla o vista y - La autorización del sistema *EXECUTE sobre la biblioteca que contiene la tabla o la vista � Autorización de administrador El ID de autorización de la sentencia tiene el priv ilegio SELECT sobre una tabla si: � Es el propietario de la tabla. � Se le ha otorgado el privilegio SELECT sobre la tabla o bien � Se le han otorgado las autorizaciones del sistem a *OBJOPR y *READ sobre la tabla El ID de autorización de la sentencia tiene el priv ilegio SELECT sobre una vista si: � Es el propietario de la vista, � Se le ha otorgado el privilegio SELECT sobre la vista o bien � Se le han otorgado las autorizaciones del sistem a *OBJOPR y *READ sobre la vista y la autorización del sistema *R EAD sobre todas las tablas y vistas de las que depende esta vista d irecta o indirectamente. Es decir, sobre todas las tabl as y vistas a las que se hace referencia en la definición de la vista , y si se hace referencia a una vista, sobre todas las tablas y vistas a las que se hace referencia en la definición de la misma, y así sucesivamente. La sentencia SELECT del cursor es una de las siguie ntes: � La sentencia-select preparada identificada por e l nombre-sentencia . � La sentencia-select especificada. Si se especifica nombre-sentencia: � El ID de autorización de la sentencia es el ID d e autorización en tiempo de ejecución, a menos que se especificas e DYNUSRPRF(*OWNER) en el mandato CRTSQLxxx cuando se creó el programa . Para obtener más información, consulte el apartado "ID de autorización y nombres-autorización" en el tema 2.5 . � La comprobación de autorización se realiza cuand o se prepara la sentencia-select, a menos que se especifique DL YPRP(*YES) en el mandato CRTSQLxxx. � La comprobación de autorización se realiza cuand o se abre el cursor para programas compilados con el parámetro DLYP RP(*YES). Si se especifica la sentencia select � Si se ha especificado USRPRF(*OWNER) o USRPRF(*N AMING) con la denominación SQL en el mandato CRTSQLxxx, el ID de autorización de la sentencia es el propietario del programa o paqu ete SQL. � Si se ha especificado USRPRF(*USER) o USRPRF(*NA MING) con la denominación del sistema en el mandato CRTSQLxx x, el ID de autorización de la sentencia es el ID de autori zación de tiempo de ejecución. � En REXX, el ID de autorización de la sentencia e s el ID de autorización en tiempo de ejecución. � La comprobación de autorización se lleva a cabo al abrir el cursor.

DB2/400 Manual de Consulta SQL V3R7 Autorización

© Copyright IBM Corp. 1995, 1996 5.18.2 - 1

Page 529: DB2/400 Manual de Consulta SQLmarce.com/docs/systems/manuales/db2_400_manual_consulta_sql_v3r7.pdf · VERSION Nota de Versión Segunda edición (noviembre de 1996) Este manual es

5.18.3 Sintaxis +-------------------------------------------------- ----------------------+ ¦ ¦ ¦ >>-- DECLARE-- nombre-cursor --------------------------- CURSOR----------> ¦ ¦ +-------------- SCROLL-+ ¦ ¦ +- DYNAMIC-+ ¦ ¦ ¦ ¦ >----------------- FOR---- sentencia-select --------------------------->< ¦ ¦ +- WITH HOLD-+ +- nombre-sentencia -+ ¦ ¦ ¦ +-------------------------------------------------- ----------------------+

DB2/400 Manual de Consulta SQL V3R7 Sintaxis

© Copyright IBM Corp. 1995, 1996 5.18.3 - 1

Page 530: DB2/400 Manual de Consulta SQLmarce.com/docs/systems/manuales/db2_400_manual_consulta_sql_v3r7.pdf · VERSION Nota de Versión Segunda edición (noviembre de 1996) Este manual es

5.18.4 Descripción nombre-cursor Da nombre a un cursor. El nombre no debe ser i gual que el nombre de otro cursor declarado en el programa fuente. SCROLL Especifica que el cursor es desplazable. El cu rsor puede o no detectar de forma inmediata las inserciones, ac tualizaciones y supresiones realizadas por otros grupos de acti vación. Si no se especifica DYNAMIC, el cursor es de sólo lectur a. Además, la sentencia SELECT no puede contener ninguna cláu sula FOR UPDATE. DYNAMIC SCROLL Especifica que el cursor es actualizable si lo es la tabla de resultados y que detectará de forma inmediata l as inserciones, actualizaciones y supresiones realizadas por ot ros procesos de aplicación. Sin embargo, en los casos siguient es, la palabra clave DYNAMIC no se tiene en cuenta y el cursor no de tectará de forma inmediata las inserciones, actualizaciones y su presiones: � Consultas implantadas como tablas de resultados provisionales. Una tabla de resultados provisional se crea cuando: - La longitud total en bytes del almacenamien to de las columnas especificadas en una cláusula ORDER BY sobr epasa los 2000 bytes. - Las cláusulas ORDER BY y GROUP BY especific an columnas diferentes o columnas en un orden distinto. - Se especifican las cláusulas UNION o DISTIN CT. - Las cláusulas ORDER BY o GROUP BY especific an columnas que no proceden todas de la misma tabla. - Un archivo lógico definido por la palabra c lave de especificaciones de definición de datos (DD S) JOINTDFT se une a otro archivo. - Se especifica un archivo lógico basado en v arios miembros de archivo de base de datos. - Se especifican las opciones desplazamiento CURRENT o RELATIVE en la sentencia FETCH cuando la sentencia-sele ct de DECLARE CURSOR contiene una cláusula GROUP BY. � Consultas que incluyan una subconsulta en las qu e: - La consulta más exterior no facilite valore s correlacionados a cualquiera de las subselecciones interiores . - En la consulta más exterior no se haga ning una referencia a las subconsultas IN, = ANY, = SOME o <> ALL. WITH HOLD Impide que se cierre el cursor como consecuenci a de una operación de compromiso. Un cursor que se declare utilizand o la cláusula WITH HOLD se cierra de forma implícita en el momento de r ealizar una operación de compromiso sólo si la conexión asociada con el cursor finaliza durante dicha operación de compromiso. Cuando se especifica WITH HOLD, una operación d e compromiso compromete todos los cambios de la unidad de trabajo actua l, pero, sólo libera los bloqueos que no sean precisos para mantener el cursor. Posteriormente, se necesitará una sentencia FET CH para que pueda ejecutarse una sentencia UPDATE o DELETE situad a. Todos los cursores quedan implícitamente cerrad os por una sentencia CONNECT (Tipo 1) o una operación de retrotracci ón. Todos los cursores asociados con una conexión quedan implícitament e cerrados por una desconexión de la conexión. Los cursores tambi én se cierran de forma implícita mediante una operación de compromiso si no se especifica WITH HOLD, o si la conexión asociada con el cur sor se encuentra en el estado pendiente de liberación. Si se cierra un cursor antes de la operación de compromiso, el efecto es el mismo que si el cursor se hubiese declara do sin la opción WITH HOLD. sentencia-select Especifica la sentencia SELECT del cursor. Con sulte el apartado "sentencia select" en el tema 4.4 para obtener más información. La sentencia-select no debe incluir ningún marcador de parámetro (excepto en REXX), pero sí puede incluir refere ncias a variables del lenguaje principal. En los lenguajes principal es que no sean RPG, PL/I ni REXX, las declaraciones de las variable s del lenguaje principal deben preceder a la sentencia DECLARE CURSOR del programa fuente. Las declaraciones de variable del leng uaje principal pueden seguir a la sentencia DECLARE CURSOR en RPG y P L/I. En REXX, se deben utilizar marcadores de parámetros en lugar de v ariables del lenguaje principal y la sentencia debe prepararse. nombre-sentencia

DB2/400 Manual de Consulta SQL V3R7 Descripción

© Copyright IBM Corp. 1995, 1996 5.18.4 - 1

Page 531: DB2/400 Manual de Consulta SQLmarce.com/docs/systems/manuales/db2_400_manual_consulta_sql_v3r7.pdf · VERSION Nota de Versión Segunda edición (noviembre de 1996) Este manual es

La sentencia SELECT del cursor es la sentencia- select preparada identificada por el nombre-sentencia al abrir el cursor. El nombre-sentencia no debe ser idéntico a un nombre-sentencia especificado en otra sentencia DECLARE CURSOR d el programa fuente. En el apartado "PREPARE" en el tema 5.38 hallará una explicación sobre sentencias preparadas. La sentencia DECLARE CURSOR debe preceder a todas l as sentencias que hagan referencia explícita al cursor por su nombre. Un cursor en el estado abierto designa a una tabla de resultados y una posición relativa a las filas de dicha tabla. La t abla es la tabla de resultados identificada por la sentencia SELECT del cursor. La tabla resultado es sólo de lectura si es cierto cualquiera de los puntos siguientes: � La primera cláusula FROM identifica más de una t abla o vista. � La primera cláusula FROM identifica una vista de sólo lectura. � La primera cláusula SELECT especifica la palabra clave DISTINCT. � La subselección exterior contiene una cláusula G ROUP BY. � La subselección exterior contiene una cláusula H AVING. � La primera cláusula SELECT contiene una función de columna. � La sentencia-select contiene una subconsulta tal que el objeto base de la subselección exterior y de la subconsulta es la misma tabla. � La sentencia-select contiene un operador UNION o UNION ALL. � La sentencia-select contiene una cláusula ORDER BY y no se han especificado la cláusula FOR UPDATE OF ni DYNAM IC SCROLL. � La sentencia-select incluye una cláusula FOR FET CH ONLY. � Se ha especificado la palabra clave SCROLL sin D YNAMIC. Pueden actualizarse los cursores cuyas tablas de re sultados no sean de sólo-lectura.

DB2/400 Manual de Consulta SQL V3R7 Descripción

© Copyright IBM Corp. 1995, 1996 5.18.4 - 2

Page 532: DB2/400 Manual de Consulta SQLmarce.com/docs/systems/manuales/db2_400_manual_consulta_sql_v3r7.pdf · VERSION Nota de Versión Segunda edición (noviembre de 1996) Este manual es

5.18.5 Notas El ámbito del nombre-cursor es el programa fuente en el que esté definido, es decir, el programa sometido al precompilador. A sí pues, sólo puede hacerse referencia a un cursor mediante sentencias que se precompilen con la declaración del cursor. Por ejemplo, un program a llamado desde otro programa compilado por separado no puede utilizar n ingún cursor abierto por el programa que efectúa la llamada. A un cursor sólo puede hacerse referencia en la mis ma aparición del programa dentro de la pila de programas a menos que se especifique CLOSQLCSR(*ENDJOB), CLOSQLCSR(*ENDSQL) o CLOSQLCSR(*ENDACTGRP) en los mandatos CRTSQLxxx. � Si se especifica CLOSQLCSR(*ENDJOB), cualquier a parición del programa en la pila de programas puede hacer referencia al cursor. � Si se especifica CLOSQLCSR(*ENDSQL), cualquier a parición del programa en la pila de programas podrá hacer referencia al cursor hasta que finalice el último programa SQL que haya en la pila de programas. � Si se especifica CLOSQLCSR(*ENDACTGRP), todas la s apariciones del modulo en el grupo de activación podrán hacer r eferencia al cursor hasta que finalice el grupo de activación. Aunque el ámbito de un cursor es el programa en el que está declarado, cada paquete creado a partir del programa incluye u na aparición separada del cursor y puede existir más de un cursor en el m omento de la ejecución. Supongamos, por ejemplo, que un programa que utiliz a sentencias CONNECT (Tipo 2) se conecta a la ubicación X y a la ubicaci ón Y en el siguiente orden: EXEC SQL DECLARE C CURSOR FOR... EXEC SQL CONNECT TO X; EXEC SQL OPEN C; EXEC SQL FETCH C INTO... EXEC SQL CONNECT TO Y; EXEC SQL OPEN C; EXEC SQL FETCH C INTO... La segunda sentencia OPEN C no provoca ningún error porque hace referencia a una aparición distinta del cursor C. La opción de precompilación ALWCPYDTA no se tiene e n cuenta para los cursores DYNAMIC SCROLL. Si debe mantenerse la det ección de inserciones, actualizaciones y supresiones, no se realiza nunca una copia provisional de los datos a menos que se precise un resultado pr ovisional para implantar la consulta. Una sentencia SELECT se evalúa al abrirse el cursor . Si se abre, se cierra y se vuelve a abrir el mismo cursor, los res ultados obtenidos pueden ser diferentes. Pueden abrirse concurrentem ente varios cursores que utilicen la misma sentencia SELECT. Cada uno d e ellos se considera una actividad independiente. Si se especifican tanto ORDER BY como FOR UPDATE OF , las columnas de la cláusula FOR UPDATE OF no pueden ser iguales a ning una de las especificadas en la cláusula ORDER BY. Si se omite la cláusula FOR UPDATE OF, sólo podrán cambiarse las columnas de la cláusula SELECT de la subselección que puedan actualizarse. Si se utilizan variables del lenguaje principal en la sentencia DECLARE CURSOR dentro de un procedimiento REXX, la sentenci a DECLARE CURSOR debe ser el objeto de PREPARE y EXECUTE.

DB2/400 Manual de Consulta SQL V3R7 Notas

© Copyright IBM Corp. 1995, 1996 5.18.5 - 1

Page 533: DB2/400 Manual de Consulta SQLmarce.com/docs/systems/manuales/db2_400_manual_consulta_sql_v3r7.pdf · VERSION Nota de Versión Segunda edición (noviembre de 1996) Este manual es

5.18.6 Ejemplos Ejemplo 1 : En un programa PL/I, utilizar el cursor C1 para obtener mediante una operación FETCH los valores correspond ientes a un proyecto determinado (NUMPRO) a partir de las cuatro primera s columnas de la tabla ACT_EMP, fila por fila, y ponerlos en las variables del lenguaje principal siguientes: EMP (char(6)), PRY (char(6)), ACT (smal lint) y TIM (dec(5,2)). Obtener el valor del proyecto que se ha de buscar a partir de la variable del lenguaje principal BUSCAR_PRY (char(6)). EXEC SQL BEGIN DECLARE SECTION; DCL EMP CHAR(6); DCL PRY CHAR(6); DCL BUSCAR_PRY CHAR(6); DCL ACT BINARY FIXED(15); DCL TIM DEC FIXED(5,2); EXEC SQL END DECLARE SECTION; . . . EXEC SQL DECLARE C1 CURSOR FOR SELECT NUMEMP, NUMPRO, NUMACT, TIEMEMP FROM ACT_EMP WHERE NUMPRO = :BUSCAR_PRY; EXEC SQL OPEN C1; EXEC SQL FETCH C1 INTO :EMP, :PRY, :ACT, :TIM; IF SQLSTATE = '02000' THEN CALL DATOS_NO_ENCON; ELSE DO WHILE (SUBSTR(SQLSTATE,1,2) = '00' | SUBSTR(SQLSTATE,1,2) = '01'); EXEC SQL FETCH C1 INTO :EMP, :PRY, :ACT, :TIM; END; EXEC SQL CLOSE C1; . . . Ejemplo 2 : En un programa PL/I, declarar un cursor llamado INCREMEN para devolver de la tabla EMPLEADO todos los números de empleado (NUMEMP), apellidos (APELL) y precio (SUELDO incrementado en un 10 por ciento) de las personas que tengan el trabajo de oficinistas ( TRAB). Ordenar la tabla de resultados en orden descendente por sueldo incrementado. EXEC SQL DECLARE INCREMEN CURSOR FOR SELECT NUMEMP, APELL, SUELDO * 1.1 FROM EMPLEADO WHERE TRAB = 'OFICI' ORDER BY 3 DESC; Ejemplo 3 : En un programa PL/I, declarar un cursor llamador CUR_AC para actualizar todas las columnas de la tabla DEPARTMEN TO. EXEC SQL DECLARE CUR_AC CURSOR FOR SELECT * FROM DEPARTMENTO FOR UPDATE OF NUMDEPT, NOMBDEPT, NUMJE, DEPTOADM; Ejemplo 4 : En un programa PL/I, declarar un cursor llamado CUR_SUP para examinar, y potencialmente suprimir, las filas de l a tabla DEPART. EXEC SQL DECLARE CUR_SUP CURSOR FOR SELECT * FROM DEPARTMENTO; Ejemplo 5 : Este ejemplo es similar al ejemplo 1. La difere ncia consiste en que la parte situada a la derecha de la cláusula WHERE debe especificarse de forma dinámica; así, la totalidad de la sentencia-select se coloca en una variable del lenguaje principal y se prepara dinámicamente. EXEC SQL BEGIN DECLARE SECTION; DCL EMP CHAR(6); DCL PRY CHAR(6); DCL BUSCAR_PRY CHAR(6); DCL ACT BINARY FIXED(15); DCL TIM DEC FIXED(5,2); DCL SELECT-STMT CHAR(200) VARYING; EXEC SQL END DECLARE SECTION; SELECT_STMT = 'SELECT NUMEMP, NUMPRO, NUMACT, TIEMEMP ' || 'FROM ACT_EMP ' || 'WHERE NUMPRO = ?'; . . . EXEC SQL PREPARE SELECT_PRY FROM:SELECT_STMT; EXEC SQL DECLARE C1 CURSOR FOR SELECT_PRY;

DB2/400 Manual de Consulta SQL V3R7 Ejemplos

© Copyright IBM Corp. 1995, 1996 5.18.6 - 1

Page 534: DB2/400 Manual de Consulta SQLmarce.com/docs/systems/manuales/db2_400_manual_consulta_sql_v3r7.pdf · VERSION Nota de Versión Segunda edición (noviembre de 1996) Este manual es

EXEC SQL OPEN C1 USING :BUSCAR_PRY; EXEC SQL FETCH C1 INTO :EMP, :PRYT, :ACT, :TIM; IF SQLSTATE = '02000' THEN CALL DATOS_NO_ENCON; ELSE DO WHILE (SUBSTR(SQLSTATE,1,2) = '00' | SUBSTR(SQLSTATE,1,2) = '01'); EXEC SQL FETCH C1 INTO :EMP, :PRY, :ACT, :TIM; END; EXEC SQL CLOSE C1; . . . Ejemplo 6 : La sentencia DECLARE CURSOR asocia el nombre de cursor C1 con los resultados de SELECT. C1 es un cursor actualiza ble y desplazable. EXEC SQL DECLARE C1 DYNAMIC SCROLL CURSOR FOR SELECT NUMDEPT, NOMBDEPT, NUMJE FROM DATOSCORP.TDEPT WHERE DEPTOADM = 'A00'; Ejemplo 7 : Declarar un cursor para obtener valores de cuatr o columnas y asignar los valores a variables del lenguaje princi pal utilizando el nivel de aislamiento serializable (RR): DECLARE CURSOR1 CURSOR FOR SELECT COL1, COL2, COL3, COL4 FROM TBLNAME WHERE COL1 = :varname WITH RR

DB2/400 Manual de Consulta SQL V3R7 Ejemplos

© Copyright IBM Corp. 1995, 1996 5.18.6 - 2

Page 535: DB2/400 Manual de Consulta SQLmarce.com/docs/systems/manuales/db2_400_manual_consulta_sql_v3r7.pdf · VERSION Nota de Versión Segunda edición (noviembre de 1996) Este manual es

5.19 DECLARE PROCEDURE La sentencia DECLARE PROCEDURE define un procedimie nto externo. Subtemas 5.19.1 Invocación 5.19.2 Autorización 5.19.3 Sintaxis 5.19.4 Descripción 5.19.5 Notas 5.19.6 Ejemplo

DB2/400 Manual de Consulta SQL V3R7 DECLARE PROCEDURE

© Copyright IBM Corp. 1995, 1996 5.19 - 1

Page 536: DB2/400 Manual de Consulta SQLmarce.com/docs/systems/manuales/db2_400_manual_consulta_sql_v3r7.pdf · VERSION Nota de Versión Segunda edición (noviembre de 1996) Este manual es

5.19.1 Invocación Esta sentencia sólo puede hospedarse en un programa de aplicación. No es una sentencia ejecutable. No debe especificarse en REXX.

DB2/400 Manual de Consulta SQL V3R7 Invocación

© Copyright IBM Corp. 1995, 1996 5.19.1 - 1

Page 537: DB2/400 Manual de Consulta SQLmarce.com/docs/systems/manuales/db2_400_manual_consulta_sql_v3r7.pdf · VERSION Nota de Versión Segunda edición (noviembre de 1996) Este manual es

5.19.2 Autorización Ninguna.

DB2/400 Manual de Consulta SQL V3R7 Autorización

© Copyright IBM Corp. 1995, 1996 5.19.2 - 1

Page 538: DB2/400 Manual de Consulta SQLmarce.com/docs/systems/manuales/db2_400_manual_consulta_sql_v3r7.pdf · VERSION Nota de Versión Segunda edición (noviembre de 1996) Este manual es

5.19.3 Sintaxis +-------------------------------------------------- ------------------------------------------------+ ¦ ¦ ¦ ¦ ¦ ¦ ¦ >>-- DECLARE-- nombre-procedimiento -- PROCEDURE--------------------------------------------------- > ¦ ¦ ¦ ¦ >------------------------------------------------ --------------------- cuerpo-procedimiento ---->< ¦ ¦ +- ( --------------------------------------------------- -------- ) -+ ¦ ¦ ¦ <-,------------------------------------ -----------+ ¦ ¦ ¦ ¦ +- IN ----+ ¦ ¦ ¦ ¦ +-----+-------+------------------------ tipo-datos -----+ ¦| ¦ +- OUT---¦ +- nombre-parámetro -+ ¦ ¦ +- INOUT-+ ¦ ¦ ¦ ¦ cuerpo-procedimiento: ¦ ¦ +- EXTERNAL-------------------------------+ ¦ ¦ +--+----------------------------------------+---- ----------------------------------------------> ¦ ¦ +- EXTERNAL NAME-- nombre-programa-externo -+ ¦ ¦ ¦ ¦ +- PARAMETER STYLE-+ (1) +- VARIANT-----+ ¦ ¦ >------------------------------------------------ ---- GENERAL---------------+-------------+-----¦ ¦ ¦ +- LANGUAGE---- C---------+ +- GENERAL WITH NULLS-+ +- NOT VARIANT-+ ¦ ¦ +- CL------¦ ¦ ¦ +- COBOL---¦ ¦ ¦ +- COBOLLE-¦ ¦ ¦ +- FORTRAN-¦ ¦ ¦ +- PLI -----¦ ¦ ¦ +- REXX----¦ ¦ ¦ +- RPG-----¦ ¦ ¦ +- RPGLE---+ ¦ ¦ ¦ ¦ tipo-datos: ¦ ¦ +------ INTEGER--------------------------------------------------- ------------------------------¦ ¦ ¦ ¦ +- INT -----+ ¦ ¦ ¦ +--- SMALLINT--------------------------------------------------- --------¦ ¦ ¦ +--- FLOAT--------------------------------------------------- -----------¦ ¦ ¦ ¦ ¦ +-(-- entero --)-+ ¦ ¦ ¦ ¦ ¦ +- REAL--------------------¦ ¦ ¦ ¦ ¦ ¦ +- PRECISION-+ ¦ ¦ ¦ ¦ ¦ +- DOUBLE------------------+ ¦ ¦ ¦ +--- DECIMAL--------------------------------------------------- ---------¦ ¦ ¦ ¦ +- DEC-----¦ +-(-- entero ----------------)-+ ¦ ¦ ¦ ¦ +- NUMERIC-+ +- , entero -+ ¦ ¦ ¦ +----- CHARACTER--------------------------------------------------- -----¦ ¦ ¦ ¦ ¦ +- CHAR------+ +-(-- entero --)-+ ¦ +- FOR BIT DATA ---¦ ¦ ¦ ¦ ¦ +----- VARCHAR-------------------(-- entero --)---+ +- FOR SBCS DATA--¦ ¦ ¦ ¦ ¦ +--- CHARACTER---- VARYING-+ +- FOR MIXED DATA-¦ ¦ ¦ ¦ ¦ +- CHAR------+ +- CCSID-- entero --+ ¦ ¦ ¦ +----- GRAPHIC--------------------------------------------------- -------¦ ¦ ¦ ¦ ¦ +-(-- entero --)-+ ¦ +- CCSID-- entero -+ ¦ ¦ ¦ ¦ +----- VARGRAPHIC---------(-- entero --)---+ ¦ ¦ ¦ ¦ +- GRAPHIC VARYING-+ ¦ ¦ ¦ +--- DATE--------------------------------------------------- ------------¦ ¦ ¦ +--- TIME--------------------------------------------------- ------------¦ ¦ ¦ +--- TIMESTAMP--------------------------------------------------- -------+ ¦ ¦ ¦ ¦ Nota: ¦ ¦ ¦ ¦ (1) Se pueden utilizar las palabras clave SIMPLE CALL como sinónimo de GENERAL. ¦ ¦ ¦ ¦ ¦ ¦ ¦ ¦ ¦ +-------------------------------------------------- ------------------------------------------------+

DB2/400 Manual de Consulta SQL V3R7 Sintaxis

© Copyright IBM Corp. 1995, 1996 5.19.3 - 1

Page 539: DB2/400 Manual de Consulta SQLmarce.com/docs/systems/manuales/db2_400_manual_consulta_sql_v3r7.pdf · VERSION Nota de Versión Segunda edición (noviembre de 1996) Este manual es

5.19.4 Descripción nombre-procedimiento Da nombre al procedimiento. El nombre no debe ser igual que el nombre de otro procedimiento declarado en el programa fuente. IN Especifica este parámetro como parámetro de ent rada. (28) OUT Especifica este parámetro como parámetro de sal ida. INOUT Especifica este parámetro como parámetro de ent rada y de salida. | nombre-parámetro Da nombre al parámetro. tipo-datos Especifica los atributos del parámetro. El tipo de datos debe ser válido para el lengua je especificado en la cláusula de lenguaje. Para obtener más informa ción acerca de los tipos de datos, consulte el apartado "CREATE TABLE" en el tema 5.16 y el manual DB/2 for OS/400 SQL Programming , SC41-4611. EXTERNAL NAME nombre-programa-externo Especifica el programa que se ejecutará cuando la sentencia CALL llame al procedimiento. El nombre de programa debe i dentificar un programa que exista en el servidor de la aplicación. El programa no puede ser un programa de servicio ILE. La validez del nombre se comprueba en el servid or de la aplicación. Si el formato del nombre no es correcto, se dev uelve un error. Si no se especifica el nombre-programa-externo, se supone que será el mismo que el del procedimiento. LANGUAGE Especifica el lenguaje en el que está escrito e l programa externo. La cláusula de lenguaje es obligatoria si el progr ama externo es un procedimiento REXX. Si no se especifica LANGUAGE, éste se determina rá a partir de la información de atributos de programa asociada c on el programa externo. Si dicha información no identifica un lenguaje reconocible, se presupone que se trata del lenguaje C. C El programa externo está escrito en C. CL El programa externo está escrito en CL. COBOL El programa externo está escrito en COBOL. COBOLLE El programa externo está escrito en ILE COB OL/400. FORTRAN El programa externo está escrito en FORTRAN . PLI El programa externo está escrito en PL/I. REXX El programa externo es un procedimiento REX X. RPG El programa externo está escrito en RPG. RPGLE El programa externo está escrito en ILE RPG /400. GENERAL Se efectúa una llamada general al procedimiento . No se pueden pasar argumentos adicionales para las variables de in dicador. GENERAL WITH NULLS Se efectúa una llamada general al procedimiento . Se pasa un argumento adicional para las variables de indicador. Par a obtener más información acerca de cómo se manejan los indic adores, consulte el manual DB/2 for OS/400 SQL Programming , SC41-4611. VARIANT Especifica que el procedimiento no siempre devo lverá el mismo resultado desde llamadas sucesivas con argument os de entrada idénticos. NOT VARIANT Especifica que el procedimiento siempre devolve rá el mismo resultado desde llamadas sucesivas con argumentos de entr ada idénticos. (28) Si el tipo de lenguaje es REXX, todos los par ámetros deben ser de entrada.

DB2/400 Manual de Consulta SQL V3R7 Descripción

© Copyright IBM Corp. 1995, 1996 5.19.4 - 1

Page 540: DB2/400 Manual de Consulta SQLmarce.com/docs/systems/manuales/db2_400_manual_consulta_sql_v3r7.pdf · VERSION Nota de Versión Segunda edición (noviembre de 1996) Este manual es

5.19.5 Notas El ámbito del nombre-procedimiento es el programa fuente en el que está definido; es decir, el programa presentado al preco mpilador. Por tanto, un programa llamado desde otro programa o módulo co mpilado por separado no utilizará los atributos de una sentencia DECLARE PR OCEDURE del programa que efectúa la llamada. La sentencia DECLARE PROCEDURE debe preceder a toda s las sentencias CALL que hacen referencia a dicho procedimiento. El número máximo de parámetros permitidos en DECLAR E PROCEDURE es 255. Si se especifica GENERAL WITH NULLS, el máximo es 254. El número máximo de parámetros también está limitado por el número máxi mo de parámetros que permite el programa bajo licencia que se utiliza pa ra compilar el programa externo. La sentencia DECLARE PROCEDURE sólo es aplicable a sentencias CALL estáticas. No es aplicable a las sentencias CALL p reparadas de forma dinámica o a una sentencia CALL en la que el nombre de procedimiento esté identificado mediante una variable del lenguaje pri ncipal.

DB2/400 Manual de Consulta SQL V3R7 Notas

© Copyright IBM Corp. 1995, 1996 5.19.5 - 1

Page 541: DB2/400 Manual de Consulta SQLmarce.com/docs/systems/manuales/db2_400_manual_consulta_sql_v3r7.pdf · VERSION Nota de Versión Segunda edición (noviembre de 1996) Este manual es

5.19.6 Ejemplo Declarar un procedimiento externo PROC1 en un progr ama PL/I. Cuando se llama al procedimiento utilizando la sentencia CALL , se llamará a un programa COBOL llamado PGM1 en la biblioteca LIB1. EXEC SQL DECLARE PROC1 PROCEDURE ( CHAR(10), CHAR(10)) ( EXTERNAL NAME LIB1/PGM1 LANGUAGE COBOL GENERAL); EXEC SQL CALL PROC1 ('NOMBRE ','APELL ');

DB2/400 Manual de Consulta SQL V3R7 Ejemplo

© Copyright IBM Corp. 1995, 1996 5.19.6 - 1

Page 542: DB2/400 Manual de Consulta SQLmarce.com/docs/systems/manuales/db2_400_manual_consulta_sql_v3r7.pdf · VERSION Nota de Versión Segunda edición (noviembre de 1996) Este manual es

5.20 DECLARE STATEMENT La sentencia DECLARE STATEMENT se utiliza para la d ocumentación de programas. Declara los nombres utilizados para ide ntificar sentencias SQL preparadas. Subtemas 5.20.1 Invocación 5.20.2 Autorización 5.20.3 Sintaxis 5.20.4 Descripción 5.20.5 Ejemplo

DB2/400 Manual de Consulta SQL V3R7 DECLARE STATEMENT

© Copyright IBM Corp. 1995, 1996 5.20 - 1

Page 543: DB2/400 Manual de Consulta SQLmarce.com/docs/systems/manuales/db2_400_manual_consulta_sql_v3r7.pdf · VERSION Nota de Versión Segunda edición (noviembre de 1996) Este manual es

5.20.1 Invocación Esta sentencia sólo puede hospedarse en un programa de aplicación. No es una sentencia ejecutable. Esta sentencia no se per mite en REXX.

DB2/400 Manual de Consulta SQL V3R7 Invocación

© Copyright IBM Corp. 1995, 1996 5.20.1 - 1

Page 544: DB2/400 Manual de Consulta SQLmarce.com/docs/systems/manuales/db2_400_manual_consulta_sql_v3r7.pdf · VERSION Nota de Versión Segunda edición (noviembre de 1996) Este manual es

5.20.2 Autorización No se requiere ninguna.

DB2/400 Manual de Consulta SQL V3R7 Autorización

© Copyright IBM Corp. 1995, 1996 5.20.2 - 1

Page 545: DB2/400 Manual de Consulta SQLmarce.com/docs/systems/manuales/db2_400_manual_consulta_sql_v3r7.pdf · VERSION Nota de Versión Segunda edición (noviembre de 1996) Este manual es

5.20.3 Sintaxis +-------------------------------------------------- ----------------------+ ¦ ¦ ¦ <-,----------------+ ¦ ¦ >>-- DECLARE---- nombre-sentencia ---- STATEMENT------------------------>< ¦ ¦ ¦ +-------------------------------------------------- ----------------------+

DB2/400 Manual de Consulta SQL V3R7 Sintaxis

© Copyright IBM Corp. 1995, 1996 5.20.3 - 1

Page 546: DB2/400 Manual de Consulta SQLmarce.com/docs/systems/manuales/db2_400_manual_consulta_sql_v3r7.pdf · VERSION Nota de Versión Segunda edición (noviembre de 1996) Este manual es

5.20.4 Descripción nombre-sentencia Lista uno o más nombres de sentencia que se uti lizarán en el programa para identificar sentencias SQL preparadas.

DB2/400 Manual de Consulta SQL V3R7 Descripción

© Copyright IBM Corp. 1995, 1996 5.20.4 - 1

Page 547: DB2/400 Manual de Consulta SQLmarce.com/docs/systems/manuales/db2_400_manual_consulta_sql_v3r7.pdf · VERSION Nota de Versión Segunda edición (noviembre de 1996) Este manual es

5.20.5 Ejemplo Este ejemplo muestra la utilización de la sentencia DECLARE STATEMENT en un programa escrito en PL/I. EXEC SQL DECLARE STNC_OBJ STATEMENT; (Asignar almacenamiento desde SQLDA) ( STNC_ORIG es "SELECT NUMDEPT, NOMBDEPT, NUMJE FROM CORPDATA.DEPARTMENTO WHERE DEPTOADM = 'A00'" ) EXEC SQL INCLUDE SQLDA; EXEC SQL DECLARE C1 CURSOR FOR STNC_OBJ; EXEC SQL PREPARE STNC_OBJ FROM :STNC_ORIG; EXEC SQL DESCRIBE STNC_OBJ INTO :SQLDA; (Examinar SQLDA) (Establecer direcciones de puntero SQLDATA) EXEC SQL OPEN C1; DO WHILE (SQLCODE = 0); EXEC SQL FETCH C1 USING DESCRIPTOR :SQLDA; (Imprimir resultados) END; EXEC SQL CLOSE C1;

DB2/400 Manual de Consulta SQL V3R7 Ejemplo

© Copyright IBM Corp. 1995, 1996 5.20.5 - 1

Page 548: DB2/400 Manual de Consulta SQLmarce.com/docs/systems/manuales/db2_400_manual_consulta_sql_v3r7.pdf · VERSION Nota de Versión Segunda edición (noviembre de 1996) Este manual es

5.21 DECLARE VARIABLE La sentencia DECLARE VARIABLE se utiliza para asign ar un subtipo o CCSID distintos del valor por omisión a una variable del lenguaje principal. Subtemas 5.21.1 Invocación 5.21.2 Autorización 5.21.3 Sintaxis 5.21.4 Descripción 5.21.5 Notas 5.21.6 Ejemplo

DB2/400 Manual de Consulta SQL V3R7 DECLARE VARIABLE

© Copyright IBM Corp. 1995, 1996 5.21 - 1

Page 549: DB2/400 Manual de Consulta SQLmarce.com/docs/systems/manuales/db2_400_manual_consulta_sql_v3r7.pdf · VERSION Nota de Versión Segunda edición (noviembre de 1996) Este manual es

5.21.1 Invocación Esta sentencia sólo puede hospedarse en un programa de aplicación. No es una sentencia ejecutable. No debe especificarse en REXX.

DB2/400 Manual de Consulta SQL V3R7 Invocación

© Copyright IBM Corp. 1995, 1996 5.21.1 - 1

Page 550: DB2/400 Manual de Consulta SQLmarce.com/docs/systems/manuales/db2_400_manual_consulta_sql_v3r7.pdf · VERSION Nota de Versión Segunda edición (noviembre de 1996) Este manual es

5.21.2 Autorización No se requiere ninguna.

DB2/400 Manual de Consulta SQL V3R7 Autorización

© Copyright IBM Corp. 1995, 1996 5.21.2 - 1

Page 551: DB2/400 Manual de Consulta SQLmarce.com/docs/systems/manuales/db2_400_manual_consulta_sql_v3r7.pdf · VERSION Nota de Versión Segunda edición (noviembre de 1996) Este manual es

5.21.3 Sintaxis +-------------------------------------------------- ----------------------+ ¦ ¦ ¦ <-,--------------+ ¦ ¦ >>-- DECLARE---- var-leng-princ ---- VARIABLE--------------------------->< ¦ ¦ +- FOR SBCS DATA--¦ ¦ ¦ +- FOR MIXED DATA-¦ ¦ ¦ +- CCSID-- entero --¦ ¦ ¦ +- FOR BIT DATA ---+ ¦ ¦ ¦ +-------------------------------------------------- ----------------------+

DB2/400 Manual de Consulta SQL V3R7 Sintaxis

© Copyright IBM Corp. 1995, 1996 5.21.3 - 1

Page 552: DB2/400 Manual de Consulta SQLmarce.com/docs/systems/manuales/db2_400_manual_consulta_sql_v3r7.pdf · VERSION Nota de Versión Segunda edición (noviembre de 1996) Este manual es

5.21.4 Descripción var-leng-princ Da nombre a una variable del lenguaje principal de serie de caracteres o gráfica definida en el programa. No se puede especificar una variable de indicador para la var-leng-princ. La definición de var-leng-princ puede preceder o seguir a una se ntencia DECLARE VARIABLE que haga referencia a esa variable. FOR BIT DATA Indica que los valores de la var-leng-princ no están asociados a ningún juego de caracteres codificados y, por l o tanto, nunca se convierten. El CCSID de una variable del lengu aje principal FOR BIT DATA es 65535. FOR BIT DATA no puede especific arse para variables-lenguaje-principal gráficas. FOR SBCS DATA Indica que los valores de la variable del lengu aje principal contienen datos SBCS (juego de caracteres de un solo byte ). FOR SBCS DATA es el valor por omisión si el atributo CCSID del trab ajo del peticionario de la aplicación no admite datos DBCS o si la long itud de la variable del lenguaje principal es inferior a 4. El CCSID d e FOR SBCS DATA está determinado por el atributo CCSID del trabajo d el peticionario de la aplicación. FOR SBCS DATA no puede especificar se para variables-lenguaje-principal gráficas. FOR MIXED DATA Indica que los valores de la variable del lengu aje principal contienen tanto datos SBCS como DBCS. FOR MIXED DATA es el valor por omisión si el atributo CCSID del trabajo del peticionario de la aplicación admite datos DBCS y si la longitud de la variable del lenguaje principal es mayor que 3. El CCSID de FOR DBCS DATA está de terminado por el atributo CCSID del trabajo del peticionario de la aplicación. FOR MIXED DATA no se puede especificar para variabl es-lenguaje-principal gráficas. CCSID entero Indica que los valores de la variable del lengu aje principal contienen datos de entero CCSID. Si el entero es un CCSI D SBCS, la variable del lenguaje principal es de datos SBCS. Si el ent ero es un CCSID de datos mixtos, la variable del lenguaje principa l es de datos mixtos. Para variables del lenguaje principal de caract eres, el CCSID especificado debe ser un CCSID SBCS o mixto. P ara variables del lenguaje principal gráficas, el CCSID especific ado debe ser un CCSID DBCS o UCS-2. En el Apéndice E, "Valores CCSID" en el tema E.0 hallará una lista de los CCSID válidos.

DB2/400 Manual de Consulta SQL V3R7 Descripción

© Copyright IBM Corp. 1995, 1996 5.21.4 - 1

Page 553: DB2/400 Manual de Consulta SQLmarce.com/docs/systems/manuales/db2_400_manual_consulta_sql_v3r7.pdf · VERSION Nota de Versión Segunda edición (noviembre de 1996) Este manual es

5.21.5 Notas La sentencia DECLARE VARIABLE puede especificarse e n cualquier parte de un programa de aplicación en el que sean válidas las s entencias SQL, con la siguiente excepción: Si el lenguaje principal es COBOL o RPG, la sen tencia DECLARE VARIABLE debe aparecer antes de una sentencia SQL que ha ga referencia a una variable del lenguaje principal especificada en la sentencia DECLARE VARIABLE. Las situaciones siguientes producen un mensaje de e rror durante la precompilación: � Se hace referencia a una variable que no existe. � Se hace referencia a una variable numérica. � Se hace referencia a una variable a la que ya se ha hecho referencia. En aquellos casos en los que la especificación de una referencia posterior es diferente de la primera, la especi ficación utilizada será la contenida en la primera referencia. � Se hace referencia a una variable que no es excl usiva. � Aparece una sentencia DECLARE VARIABLE después d e una sentencia SQL y ambas hacen referencia a la misma variable. � Se especifica la cláusula FOR BIT DATA, FOR SBCS DATA o FOR MIXED DATA para una variable del lenguaje principal gráfic a. � Se especifica un CCSID SBCS o mixto para una var iable del lenguaje principal gráfica. � Se especifica un CCSID DBCS o CCSID UCS-2 para u na variable del lenguaje principal de caracteres.

DB2/400 Manual de Consulta SQL V3R7 Notas

© Copyright IBM Corp. 1995, 1996 5.21.5 - 1

Page 554: DB2/400 Manual de Consulta SQLmarce.com/docs/systems/manuales/db2_400_manual_consulta_sql_v3r7.pdf · VERSION Nota de Versión Segunda edición (noviembre de 1996) Este manual es

5.21.6 Ejemplo En este ejemplo, declarar las variables de programa PL/I FEDE y PACO como datos mixtos, y PILI y JAVI como datos SBCS con el CCSID 37. EXEC SQL BEGIN DECLARE SECTION; DCL FEDE CHAR(10); EXEC SQL DECLARE :FEDE VARIABLE FOR MIXED DATA; DCL MARU DEC FIXED(6); DCL PACO CHAR(4); DCL PILI CHAR(30) VARYING; DCL JAVI CHAR(9); EXEC SQL DECLARE :PILI, :JAVI VARIABLE CCSID 37 ; EXEC SQL END DECLARE SECTION; EXEC SQL DECLARE :PACO VARIABLE FOR MIXED DATA ;

DB2/400 Manual de Consulta SQL V3R7 Ejemplo

© Copyright IBM Corp. 1995, 1996 5.21.6 - 1

Page 555: DB2/400 Manual de Consulta SQLmarce.com/docs/systems/manuales/db2_400_manual_consulta_sql_v3r7.pdf · VERSION Nota de Versión Segunda edición (noviembre de 1996) Este manual es

5.22 DELETE La sentencia DELETE suprime filas de una tabla o vi sta. Suprimir una fila de una vista es suprimir también la fila de la tabl a en la que se basa la vista. Esta sentencia presenta dos formas: � La forma DELETE buscada se utiliza para suprimir una o más filas (determinada opcionalmente por una condición de búsqueda). � La forma DELETE situada se utiliza para suprimir exactamente una fila (según lo determinado por la posición actual de un cursor). Subtemas 5.22.1 Invocación 5.22.2 Autorización 5.22.3 Sintaxis 5.22.4 Descripción 5.22.5 Reglas de DELETE 5.22.6 Notas 5.22.7 Ejemplos

DB2/400 Manual de Consulta SQL V3R7 DELETE

© Copyright IBM Corp. 1995, 1996 5.22 - 1

Page 556: DB2/400 Manual de Consulta SQLmarce.com/docs/systems/manuales/db2_400_manual_consulta_sql_v3r7.pdf · VERSION Nota de Versión Segunda edición (noviembre de 1996) Este manual es

5.22.1 Invocación Una sentencia DELETE buscada se puede hospedar en u n programa de aplicación o se puede emitir interactivamente. Una sentencia DELETE situada debe hospedarse en un programa de aplicació n. Tanto DELETE buscada como DELETE situada son sentencias ejecutab les que pueden prepararse de forma dinámica.

DB2/400 Manual de Consulta SQL V3R7 Invocación

© Copyright IBM Corp. 1995, 1996 5.22.1 - 1

Page 557: DB2/400 Manual de Consulta SQLmarce.com/docs/systems/manuales/db2_400_manual_consulta_sql_v3r7.pdf · VERSION Nota de Versión Segunda edición (noviembre de 1996) Este manual es

5.22.2 Autorización Los privilegios del ID de autorización de la senten cia deben incluir al menos uno de los privilegios siguientes: � Para la tabla o la vista mencionada en la senten cia: - El privilegio DELETE sobre la tabla o vista y - La autorización del sistema *EXECUTE sobre la biblioteca que contiene la tabla o la vista � Autorización de administrador El ID de autorización de la sentencia tiene el priv ilegio DELETE sobre una tabla si: � Es el propietario de la tabla. � Se le ha otorgado el privilegio DELETE sobre la tabla, o � Se le han otorgado las autorizaciones del sistem a *OBJOPR y *DLT sobre la tabla. El ID de autorización de la sentencia tiene el priv ilegio DELETE sobre una vista cuando: (29) � Se le ha otorgado el privilegio DELETE sobre la vista o bien � Se le han otorgado las autorizaciones del sistem a *OBJOPR y *DLT sobre la vista, y la autorización del sistema *DLT so bre la primera tabla o vista de la que esta vista es dependiente direc ta o indirectamente. Es decir, la primera tabla o vista a la que se haga referencia en la definición de vista y, si se hace referencia a una vista, la primera tabla o vista a la que se haga referencia en su definición, y así sucesivamente. Si la condición-búsqueda de una sentencia DELETE buscada contiene una referencia a una columna de la tabla o vista, los p rivilegios del ID de autorización de la sentencia deben incluir también uno de los privilegios siguientes: � El privilegio SELECT sobre la tabla o vista � Autorización de administrador Si la condición de búsqueda incluye una subconsulta, los privilegios del ID de autorización de la sentencia deben incluir ta mbién al menos uno de estos elementos: � Para cada tabla o vista identificada en la subco nsulta: - El privilegio SELECT sobre la tabla o vista y - La autorización del sistema *EXECUTE sobre la biblioteca que contiene la tabla o la vista � Autorización de administrador El ID de autorización de la sentencia tiene el priv ilegio SELECT sobre una tabla si: � Es el propietario de la tabla. � Se le ha otorgado el privilegio SELECT sobre la tabla o bien � Se le han otorgado las autorizaciones del sistem a *OBJOPR y *READ sobre la tabla. El ID de autorización de la sentencia tiene el priv ilegio SELECT sobre una vista si: � Es el propietario de la vista, � Se le ha otorgado el privilegio SELECT sobre la vista o bien � Se le han otorgado las autorizaciones del sistem a *OBJOPR y *READ sobre la vista y la autorización del sistema *R EAD sobre todas las tablas y vistas de las que depende esta vista d irecta o indirectamente. Es decir, sobre todas las tabl as y vistas a las que se hace referencia en la definición de la vista , y si se hace referencia a una vista, sobre todas las tablas y vistas a las que se hace referencia en la definición de la misma, y así sucesivamente. (29) Cuando se crea una vista, el propietario no a dquiere necesariamente el privilegio DELETE sobre la vi sta. El propietario solamente adquiere dicho privilegio si la vista permite que se realicen supresiones y el propie tario también dispone del privilegio DELETE sobre la primera tabla a la que se hace referencia en la subselección.

DB2/400 Manual de Consulta SQL V3R7 Autorización

© Copyright IBM Corp. 1995, 1996 5.22.2 - 1

Page 558: DB2/400 Manual de Consulta SQLmarce.com/docs/systems/manuales/db2_400_manual_consulta_sql_v3r7.pdf · VERSION Nota de Versión Segunda edición (noviembre de 1996) Este manual es

5.22.3 Sintaxis +-------------------------------------------------- ----------------------+ ¦ ¦ ¦ DELETE buscada: ¦ ¦ ¦ ¦ ¦ ¦ >>-- DELETE FROM---- nombre-tabla --------------------------------------> ¦ ¦ +- nombre-vista -+ +- nombre-correlación -+ ¦ ¦ ¦ ¦ >------------------------------------------------ ------------------->< ¦ ¦ +- WHERE-- condición-búsqueda -+ +- cláusula-isolation -+ ¦ ¦ ¦ ¦ DELETE situada: ¦ ¦ ¦ ¦ ¦ ¦ >>-- DELETE FROM---- nombre-tabla --------------------------------------> ¦ ¦ +- nombre-vista -+ ¦ +- AS-+ ¦ ¦ ¦ +--------- nombre-correlación -+ ¦ ¦ ¦ ¦ >-- WHERE CURRENT OF-- nombre-cursor ---------------------------------->< ¦ ¦ ¦ ¦ ¦ +-------------------------------------------------- ----------------------+

DB2/400 Manual de Consulta SQL V3R7 Sintaxis

© Copyright IBM Corp. 1995, 1996 5.22.3 - 1

Page 559: DB2/400 Manual de Consulta SQLmarce.com/docs/systems/manuales/db2_400_manual_consulta_sql_v3r7.pdf · VERSION Nota de Versión Segunda edición (noviembre de 1996) Este manual es

5.22.4 Descripción FROM nombre-tabla o nombre-vista Identifica la tabla o vista desde la que desea realizar la supresión. El nombre debe identificar una tabla o vista ex istentes en el servidor de la aplicación, pero no debe identificar ning una tabla del catálogo, ninguna vista de una tabla del catálogo ni ning una vista de sólo lectura. Para obtener una explicación de las v istas de sólo lectura, consulte el apartado "Vistas de sólo lectura" en el tema 5.17.5 . nombre-correlación Puede utilizarse en la condición-búsqueda para designar a la tabla o vista. Para obtener una explicación sobre el nombre-correlación , véase el apartado Capítulo 2 . WHERE Especifica las filas que se suprimirán. Puede omitir la cláusula, dar una condición de búsqueda o mencionar un cursor . Si omite la cláusula, se suprimirán todas las filas de la t abla o vista. condición-búsqueda Es cualquier condición de búsqueda según lo descrito en el Capítulo 2 . Cada nombre-col de la condición de búsqueda, siempre que no esté en una subconsulta, debe identi ficar una columna de la tabla o vista. La condición-búsqueda se aplica a cada fila de la tabla o vista y las filas suprimidas son aquellas para las que se cumple el resultado de la condición-búsqueda . Si la condición de búsqueda contiene una su bconsulta, puede considerarse que ésta se ejecuta cada vez q ue la condición de búsqueda se aplica a una fila, y los resultados se utilizan al aplicar la condición de búsqueda . En realidad, las subconsultas sin referencias correlacionadas sólo se eje cutan una vez, mientras que una subconsulta con una referencia corr elacionada puede tener que ejecutarse una vez para cada fila. La condición de búsqueda no debe incluir un a subconsulta tal que el objeto base de DELETE y de la subconsult a sea la misma tabla. CURRENT OF nombre-cursor Identifica el cursor que se utilizará en la operación de supresión. El nombre de cursor debe identificar un cursor declarado tal como se explica en las Notas de la sentencia DECLARE CURSOR. La tabla o vista mencionada también debe fi gurar en la cláusula FROM de la sentencia SELECT del cursor y la tabla de resultados del cursor no debe ser de sólo lectura. Pa ra obtener una explicación sobre las tablas de resultados de sólo lectura, véase el apartado "DECLARE CURSOR" en el tema 5.18 . Cuando se ejecuta la sentencia DELETE, el c ursor debe estar situado en una fila; esta fila es la que se suprimirá. Después de la supresión, el cursor se sitúa antes de l a siguiente fila de su tabla de resultados. Si no existe ninguna fila siguiente, se sitúa detrás de la última fila. cláusula-isolation Especifica el nivel de aislamiento que se va a utilizar para esta sentencia. Para obtener una explicación de cláusula-isolation , consulte el apartado 4.4.5 .

DB2/400 Manual de Consulta SQL V3R7 Descripción

© Copyright IBM Corp. 1995, 1996 5.22.4 - 1

Page 560: DB2/400 Manual de Consulta SQLmarce.com/docs/systems/manuales/db2_400_manual_consulta_sql_v3r7.pdf · VERSION Nota de Versión Segunda edición (noviembre de 1996) Este manual es

5.22.5 Reglas de DELETE Desencadenantes Si la tabla identificada o la tabla base de la vista identificada tiene un desencadenante de supresión, se dispar a dicho desencadenante para cada fila actualizada. Integridad referencial Si la tabla identificada o la tabla base de la tabla identificada es una tabla padre, las filas seleccionadas no deb en tener ninguna dependiente en una relación con una regla de su presión de RESTRICT o NO ACTION, y DELETE no debe afectar en cascada a las filas descendientes que tengan dependientes en una re lación con una regla de supresión de RESTRICT o NO ACTION. Si la operación de supresión no la impide ningu na regla de supresión RESTRICT ni NO ACTION, se suprimen las filas se leccionadas. Las filas que sean dependientes de las filas dependientes también se ven afectadas: � Las columnas que permiten nulos en las clave s foráneas de cualquier fila que sean sus dependientes en una relación con una regla de supresión de SET NULL quedan estab lecidas en el valor nulo. � Las columnas de las claves foráneas de todas las filas que sean sus dependientes en una relación con una re gla de supresión de SET DEFAULT quedan establecidas en el valor por omisión correspondiente. � Las filas que sean sus dependientes en una r elación con una regla de supresión de CASCADE se suprimen también y se les aplica, a su vez, las reglas anteriores. Las restricciones de referencia (excepto las qu e tienen la regla de supresión RESTRICT) se comprueban de forma efec tiva al final de la sentencia. En el caso de una supresión de vari as filas, esto sucedería después de que todas las filas se hub ieran suprimido y se hubieran disparado todos los desencadenantes as ociados.

DB2/400 Manual de Consulta SQL V3R7 Reglas de DELETE

© Copyright IBM Corp. 1995, 1996 5.22.5 - 1

Page 561: DB2/400 Manual de Consulta SQLmarce.com/docs/systems/manuales/db2_400_manual_consulta_sql_v3r7.pdf · VERSION Nota de Versión Segunda edición (noviembre de 1996) Este manual es

5.22.6 Notas Si se produce un error durante la ejecución de una sentencia DELETE y no se ha especificado COMMIT(*NONE), se restituyen tod os los cambios realizados durante la ejecución de la sentencia. N o obstante, no se restituirán los cambios realizados en la unidad de trabajo antes de que se produjera el error. Si se especifica COMMIT(*NONE) , los cambios no se restituyen. A menos que ya existan los bloqueos adecuados, se a dquieren uno o más bloqueos exclusivos durante la ejecución satisfacto ria de una sentencia DELETE. Hasta que los libere una operación de comp romiso o de retrotracción, los bloqueos pueden impedir que otro s procesos de aplicación realicen operaciones en la tabla. Para obtener más información acerca de los bloqueos, consulte la descripción de las sentencias COMMIT, ROLLBACK y LOCK TABLE, y el apartado "Nivel de aislamiento" en el tema 1.19 . Si un proceso de aplicación suprime una fila en la que se halle situado cualquiera de sus cursores no actualizables, dichos cursores se situarán antes de la siguiente fila de su tabla de resultado s. Sea C un cursor que se sitúa antes de la siguiente fila F (como resulta do de una operación OPEN, DELETE mediante C, DELETE mediante otro curso r o DELETE buscada). En presencia de operaciones INSERT, UPDATE y DELETE que afecten a la tabla base de la que deriva F, la siguiente operación FET CH que haga referencia a C no situará necesariamente a C en F. Por ejempl o, la operación puede situar C en F', donde F' es una fila nueva que es a hora la siguiente fila de la tabla de resultados. Cuando acaba la ejecución de una sentencia DELETE, el número de filas suprimidas se devuelve en el SQLERRD(3) de la SQLCA . El valor de SQLERRD(3) no incluye el número de filas que se han suprimido como resultado de una regla de supresión CASCADE o un de sencadenante. El SQLERRD(5) de la SQLCA muestra el número de fila s afectadas por las restricciones de referencia. Incluye las filas sup rimidas como resultado de una regla de supresión CASCADE y las filas en la s que las claves foráneas se han establecido en NULL o el valor por omisión como resultado de una regla de supresión SET NULL o SET DEFAULT. En el Apéndice B, "Área de comunicaciones SQL" en el tema B.0 hallará una descripción de la SQLCA. Se pueden suprimir o modificar un máximo de 524288 filas en una única sentencia DELETE cuando se ha especificado COMMIT(* RR), COMMIT(*ALL), COMMIT(*CS) o COMMIT(*CHG). El número de filas mod ificadas incluye las filas insertadas, actualizadas o suprimidas bajo la misma definición de compromiso como resultado de un desencadenante, una regla de supresión de integridad de referencia CASCADE, SET NULL o SET DE FAULT. Si se utilizan variables del lenguaje principal en la sentencia DELETE dentro de un procedimiento REXX, DELETE debe ser el objeto de PREPARE y EXECUTE.

DB2/400 Manual de Consulta SQL V3R7 Notas

© Copyright IBM Corp. 1995, 1996 5.22.6 - 1

Page 562: DB2/400 Manual de Consulta SQLmarce.com/docs/systems/manuales/db2_400_manual_consulta_sql_v3r7.pdf · VERSION Nota de Versión Segunda edición (noviembre de 1996) Este manual es

5.22.7 Ejemplos Ejemplo 1 : Suprimir el departamento (NUMDEPT) 'D11' de la t abla DEPARTMENTO. DELETE FROM DEPARTMENTO WHERE NUMDEPT = 'D11' Ejemplo 2 : Suprimir todos los departamentos de la tabla DEP ARTMENTO (es decir, vaciar la tabla). DELETE FROM DEPARTMENTO Ejemplo 3 : Utilizar una sentencia de programa PL/I para sup rimir todos los subproyectos (PROYPRIN es NULL) de la tabla PRO YECTO de un departamento igual al de la variable del lenguaje p rincipal DEPTPRAL (char(6)). EXEC SQL DELETE FROM PROYECTO WHERE NUMDEPT = :DEPTPRAL AND PROYPRIN IS NULL ; Ejemplo 4 : Codificar una parte de un programa PL/I que se u tilizará para visualizar los empleados retirados (TRAB) y a conti nuación, si se solicita, eliminar ciertos empleados de la tabla EM PLEADO. EXEC SQL DECLARE C1 CURSOR FOR SELECT * FROM EMPLEADO WHERE TRAB = 'RETIRADO'; EXEC SQL OPEN C1; EXEC SQL FETCH C1 INTO ... ; PUT ... ; GET LIST (ELIMIN); IF ELIMIN = 'SI' THEN EXEC SQL DELETE FROM EMPLEADO WHERE CURRENT OF C1; EXEC SQL CLOSE C1;

DB2/400 Manual de Consulta SQL V3R7 Ejemplos

© Copyright IBM Corp. 1995, 1996 5.22.7 - 1

Page 563: DB2/400 Manual de Consulta SQLmarce.com/docs/systems/manuales/db2_400_manual_consulta_sql_v3r7.pdf · VERSION Nota de Versión Segunda edición (noviembre de 1996) Este manual es

5.23 DESCRIBE La sentencia DESCRIBE obtiene información sobre una sentencia preparada. En el apartado "PREPARE" en el tema 5.38 hallará una explicación sobre las sentencias preparadas. Subtemas 5.23.1 Invocación 5.23.2 Autorización 5.23.3 Sintaxis 5.23.4 Descripción 5.23.5 Notas 5.23.6 Ejemplo

DB2/400 Manual de Consulta SQL V3R7 DESCRIBE

© Copyright IBM Corp. 1995, 1996 5.23 - 1

Page 564: DB2/400 Manual de Consulta SQLmarce.com/docs/systems/manuales/db2_400_manual_consulta_sql_v3r7.pdf · VERSION Nota de Versión Segunda edición (noviembre de 1996) Este manual es

5.23.1 Invocación Esta sentencia sólo puede hospedarse en un programa de aplicación. Es una sentencia ejecutable que no puede prepararse dinámi camente.

DB2/400 Manual de Consulta SQL V3R7 Invocación

© Copyright IBM Corp. 1995, 1996 5.23.1 - 1

Page 565: DB2/400 Manual de Consulta SQLmarce.com/docs/systems/manuales/db2_400_manual_consulta_sql_v3r7.pdf · VERSION Nota de Versión Segunda edición (noviembre de 1996) Este manual es

5.23.2 Autorización No se requiere ninguna. Véase el apartado "PREPARE" en el tema 5.38 para saber cuál es la autorización necesaria para utiliz ar una sentencia preparada.

DB2/400 Manual de Consulta SQL V3R7 Autorización

© Copyright IBM Corp. 1995, 1996 5.23.2 - 1

Page 566: DB2/400 Manual de Consulta SQLmarce.com/docs/systems/manuales/db2_400_manual_consulta_sql_v3r7.pdf · VERSION Nota de Versión Segunda edición (noviembre de 1996) Este manual es

5.23.3 Sintaxis +-------------------------------------------------- ----------------------+ ¦ ¦ ¦ >>-- DESCRIBE-- nombre-sentencia -- INTO-- nombre-descriptor --------------> ¦ ¦ ¦ ¦ >------------------------------------------------ ------------------->< ¦ ¦ +- USING---- NAMES----------+ ¦ ¦ +- SYSTEM NAMES-¦ ¦ ¦ +- LABELS-------¦ ¦ ¦ +- ANY----------¦ ¦ ¦ +- BOTH---------¦ ¦ ¦ +- ALL----------+ ¦ ¦ ¦ +-------------------------------------------------- ----------------------+

DB2/400 Manual de Consulta SQL V3R7 Sintaxis

© Copyright IBM Corp. 1995, 1996 5.23.3 - 1

Page 567: DB2/400 Manual de Consulta SQLmarce.com/docs/systems/manuales/db2_400_manual_consulta_sql_v3r7.pdf · VERSION Nota de Versión Segunda edición (noviembre de 1996) Este manual es

5.23.4 Descripción nombre-sentencia Identifica la sentencia que desea describir. C uando se ejecuta la sentencia DESCRIBE, el nombre debe identificar a una sentencia preparada en el servidor de la aplicación. INTO nombre-descriptor Identifica un área de descriptor SQL (SQLDA), q ue se describe en el Apéndice C, "Área de descriptor SQL (SQLDA)" en el tema C.0 . Antes de ejecutar la sentencia DESCRIBE, debe establecer se la variable siguiente en la SQLDA. (Las reglas para REXX s on diferentes. Para obtener más información, consulte el manual DB/2 for OS/400 SQL Programming , SC41-4611) SQLN Indica el número de apariciones de SQLVAR que se proporcionan en la SQLDA. Antes de ejecutar la sentencia DESCRIBE se debe establecer SQLN en un valor mayor o igual que cero. Al ejecutarse la sentencia DESCRIBE, el gestor de b ases de datos asigna valores a las variables de la SQLDA del siguiente m odo: Variable Información devuelta por el gestor de bases de dato s SQLDAID 'SQLDA ' SQLDABC Longitud de la SQLDA. SQLD Si la sentencia preparada es SELECT, nú mero de columnas de su tabla de resultado; en caso contrario, 0. SQLVAR Si el valor de SQLD es 0 o mayor que el valor de SQLN, no se asigna ningún valor a las apariciones d e SQLVAR. Si el valor de SQLD es n, donde n es mayor que 0 pero menor o igual que el valor de SQLN, se asignan valores a las n primeras apariciones de SQLVAR de maner a que la primera aparición de SQLVAR contenga una descri pción de la primera columna de la tabla de resultados, la s egunda aparición de SQLVAR contenga una descripción de la s egunda columna de la tabla de resultados, y así sucesivament e. La descripción de una columna consta de los valores asign ados a SQLTYPE, SQLLEN, SQLDATA y SQLNAME. SQLTYPE Código que muestra el tipo de datos de la columna y si puede contener o no valores nulos. Para obte ner más información sobre los códigos SQLTYPE devueltos des pués de la ejecución de una sentencia DESCRIBE, véase el aparta do "SQLTYPE y SQLLEN" en el tema C.3 . SQLLEN Valor de longitud según sea el tipo de datos de las columnas de resultados. Los posibles valores de SQLLEN aparecen en el apartado "SQLTYPE y SQLLEN" en el tema C.3 . SQLDATA CCSID de una columna de serie, tal como se muestra en la Tabla 27 en el tema C.4 . SQLIND Reservado SQLNAME Nombre no calificado de la columna. El nombre devuelto es el nombre-col especificado en la cláusula SELECT de la sentencia preparada. Si una columna no tiene nom bre, SQLNAME es la serie vacía. Para obtener más informac ión acerca de columnas sin nombre, consulte el apartado "Nombres de columnas de resultados" en el tema 4.2.1 . USING Indica el valor a asignar a cada variable SQLNA ME en la SQLDA. Si no existe el valor solicitado, SQLNAME se establec e en una longitud de 0. NAMES Asigna el nombre de la columna. Este es el valor por omisión. En el caso de una sentencia DESCRIBE de una se ntencia preparada en la que el nombre está especificado explícitame nte en la lista de selección, se devuelve el nombre especifica do. SYSTEM NAMES Asigna el nombre de la columna del sistema de la columna. LABELS Asigna la etiqueta de la columna (las etiqu etas de columna se definen mediante la sentencia LABEL ON). S ólo se devuelven los 30 primeros bytes de la etiqueta. ANY Asigna la etiqueta de columna. Si la colum na no tiene etiqueta, ésta será el nombre de la columna. BOTH Asigna la etiqueta y el nombre de la column a. En este caso, son necesarias dos apariciones de SQLVAR por co lumna para acomodar la información adicional. Para especificar es ta expansión de la matriz SQLVAR, establezca SQLN en 2* n (donde n es el número de columnas de la tabla de resultados). Las n primeras apariciones

DB2/400 Manual de Consulta SQL V3R7 Descripción

© Copyright IBM Corp. 1995, 1996 5.23.4 - 1

Page 568: DB2/400 Manual de Consulta SQLmarce.com/docs/systems/manuales/db2_400_manual_consulta_sql_v3r7.pdf · VERSION Nota de Versión Segunda edición (noviembre de 1996) Este manual es

de SQLVAR contienen los nombres de columna. Las n segundas apariciones contienen las etiquetas de colu mna. ALL Asigna la etiqueta, el nombre de columna y el nombre de columna del sistema. En este caso, son necesarias tres apariciones de SQLVAR por columna para acomodar la informa ción adicional. Para especificar esta expansión de la matriz SQL VAR, establezca SQLN en 3* n (donde n es el número de columnas de la tabla de r esultados). Las n primeras apariciones de SQLVAR contienen los nombr es de columna del sistema. Las n segundas apariciones contienen las etiquetas de columna. Las n terceras apariciones contienen los nombres de columna.

DB2/400 Manual de Consulta SQL V3R7 Descripción

© Copyright IBM Corp. 1995, 1996 5.23.4 - 2

Page 569: DB2/400 Manual de Consulta SQLmarce.com/docs/systems/manuales/db2_400_manual_consulta_sql_v3r7.pdf · VERSION Nota de Versión Segunda edición (noviembre de 1996) Este manual es

5.23.5 Notas También se puede obtener información sobre una sent encia preparada utilizando la cláusula INTO de la sentencia PREPARE . Antes de ejecutar la sentencia DESCRIBE o PREPARE I NTO, debe establecerse el valor de SQLN en un valor mayor o igual que cero para indicar cuántas apariciones de SQLVAR se dan en la SQLDA y si se de be asignar el almacenamiento suficiente para contener las aparici ones de SQLN. (En REXX, no es necesario que el almacenamiento esté as ignado para la SQLDA.) Para obtener la descripción de las columnas de la t abla de resultados de una sentencia SELECT preparada, el número de aparic iones SQLVAR no debe ser menor que el número de columnas. Si se especifica USING BOTH y SQLN es menor que 2*S QLD, SQLD se establece en 2 * (número de columnas). Si se especifica USIN G BOTH y SQLN es mayor o igual que 2*SQLD, SQLD se establece en el número de columnas. Si se especifica USING ALL y SQLN es menor que 3*SQ LD, SQLD se establece en 3 * (número de columnas). Si se especifica USIN G ALL y SQLN es mayor o igual que 3*SQLD, SQLD se establece en el número de columnas. Asignar la SQLDA : Entre las posibles maneras de asignar la SQLDA, están las tres que se describen a continuación. Primera técnica : Asignar una SQLDA con suficientes apariciones de SQLVAR como para acomodar cualquier lista de selección que la aplicación tenga que procesar. En caso extremo, el número de SQLVAR podría ser igual al máximo de columnas permitidas en una tabla de resul tados. Una vez hecha la asignación, la aplicación puede utilizar esta SQ LDA repetidas veces. Esta técnica utiliza un gran volumen de almacenamie nto que nunca se desasigna, aun cuando la mayor parte de este almace namiento no se utilice para una lista de selección en concreto. Segunda técnica : Repita los dos pasos siguientes para cada lista de selección procesada: 1. Ejecute una sentencia DESCRIBE con una SQLDA qu e no tenga apariciones de SQLVAR; es decir, una SQLDA para la que SQLN sea cero. El valor devuelto para SQLD es igual al número de aparic iones de SQLVAR requeridas. 2. Utilice el valor devuelto de SQLD para asignar una SQLDA con suficientes apariciones de SQLVAR. A continuac ión, ejecute la sentencia DESCRIBE una vez más, utilizando esta nueva SQLDA. Esta técnica permite una mejor gestión del almacena miento que la primera, pero duplica el número de sentencias DESCRIBE utili zadas. Tercera técnica : Asignar una SQLDA lo suficientemente grande como para manejar la mayoría de, y quizás todas, las listas d e selección, pero que sea, a la vez, razonablemente pequeña. Si fracasa la ejecución de DESCRIBE debido a que la SQLDA es demasiado pequeña , asigne una SQLDA mayor y ejecute de nuevo la sentencia DESCRIBE. Pa ra SQLDA nuevas, utilice el valor de SQLD devuelto desde la primera ejecución de DESCRIBE correspondiente al número de apariciones de SQLVAR. Esta técnica es una solución de compromiso entre la s dos primeras. Su efectividad depende de una elección correcta del ta maño de la SQLDA original.

DB2/400 Manual de Consulta SQL V3R7 Notas

© Copyright IBM Corp. 1995, 1996 5.23.5 - 1

Page 570: DB2/400 Manual de Consulta SQLmarce.com/docs/systems/manuales/db2_400_manual_consulta_sql_v3r7.pdf · VERSION Nota de Versión Segunda edición (noviembre de 1996) Este manual es

5.23.6 Ejemplo En un programa PL/I, ejecutar una sentencia DESCRIB E con una SQLDA que no contenga apariciones de SQLVAR. Si SQLD es mayor q ue cero, utilizar el valor para asignar una SQLDA con el número necesari o de apariciones de SQLVAR y, a continuación, ejecutar una sentencia DE SCRIBE utilizando esta SQLDA. EXEC SQL BEGIN DECLARE SECTION; DCL SER_STNC1 CHAR(200) VARYING; EXEC SQL END DECLARE SECTION; EXEC SQL INCLUDE SQLDA; EXEC SQL DECLARE CURSOR_DIN CURSOR FOR NOMB_STNC1; ... /* código para solicitar una consulta del usuar io, y generar después */ /* una sentencia-select en SER_STNC1 */ EXEC SQL PREPARE NOMB_STNC1 FROM :SER_STNC1; ... /* código para establecer SQLN a cero y asignar la SQLDA */ EXEC SQL DESCRIBE NOMB_STNC1 INTO :SQLDA; ... /* código para comprobar que SQLD es mayor que cero, para */ /* establecer SQLN en SQLD, después reasignar la SQ LDA */ EXEC SQL DESCRIBE NOMB_STNC1 INTO :SQLDA; ... /* código para preparar la utilización de la SQ LDA */ EXEC SQL OPEN CURSOR_DIN; ... /* bucle para traer filas desde tabla de result ados */ EXEC SQL FETCH CURSOR_DIN USING DESCRIPTOR :SQLDA; . . .

DB2/400 Manual de Consulta SQL V3R7 Ejemplo

© Copyright IBM Corp. 1995, 1996 5.23.6 - 1

Page 571: DB2/400 Manual de Consulta SQLmarce.com/docs/systems/manuales/db2_400_manual_consulta_sql_v3r7.pdf · VERSION Nota de Versión Segunda edición (noviembre de 1996) Este manual es

5.24 DESCRIBE TABLE La sentencia DESCRIBE TABLE obtiene información sob re una tabla o vista. Subtemas 5.24.1 Invocación 5.24.2 Autorización 5.24.3 Sintaxis 5.24.4 Descripción 5.24.5 Notas 5.24.6 Ejemplo

DB2/400 Manual de Consulta SQL V3R7 DESCRIBE TABLE

© Copyright IBM Corp. 1995, 1996 5.24 - 1

Page 572: DB2/400 Manual de Consulta SQLmarce.com/docs/systems/manuales/db2_400_manual_consulta_sql_v3r7.pdf · VERSION Nota de Versión Segunda edición (noviembre de 1996) Este manual es

5.24.1 Invocación Esta sentencia sólo puede hospedarse en un programa de aplicación. Es una sentencia ejecutable que no puede prepararse dinámi camente.

DB2/400 Manual de Consulta SQL V3R7 Invocación

© Copyright IBM Corp. 1995, 1996 5.24.1 - 1

Page 573: DB2/400 Manual de Consulta SQLmarce.com/docs/systems/manuales/db2_400_manual_consulta_sql_v3r7.pdf · VERSION Nota de Versión Segunda edición (noviembre de 1996) Este manual es

5.24.2 Autorización Los privilegios del ID de autorización de la senten cia deben incluir al menos uno de los privilegios siguientes: � Para la tabla o vista identificada en la sentenc ia: - La autorización del sistema *OBJOPR sobre l a tabla o la vista - La autorización del sistema *EXECUTE sobre la biblioteca que contiene la tabla o la vista � Autorización de administrador

DB2/400 Manual de Consulta SQL V3R7 Autorización

© Copyright IBM Corp. 1995, 1996 5.24.2 - 1

Page 574: DB2/400 Manual de Consulta SQLmarce.com/docs/systems/manuales/db2_400_manual_consulta_sql_v3r7.pdf · VERSION Nota de Versión Segunda edición (noviembre de 1996) Este manual es

5.24.3 Sintaxis +-------------------------------------------------- ----------------------+ ¦ ¦ ¦ >>-- DESCRIBE TABLE-- var-leng-princ -- INTO-- nombre-descriptor ----------> ¦ ¦ ¦ ¦ >------------------------------------------------ ------------------->< ¦ ¦ +- USING---- NAMES----------+ ¦ ¦ +- SYSTEM NAMES-¦ ¦ ¦ +- LABELS-------¦ ¦ ¦ +- ANY----------¦ ¦ ¦ +- BOTH---------¦ ¦ ¦ +- ALL----------+ ¦ ¦ ¦ +-------------------------------------------------- ----------------------+

DB2/400 Manual de Consulta SQL V3R7 Sintaxis

© Copyright IBM Corp. 1995, 1996 5.24.3 - 1

Page 575: DB2/400 Manual de Consulta SQLmarce.com/docs/systems/manuales/db2_400_manual_consulta_sql_v3r7.pdf · VERSION Nota de Versión Segunda edición (noviembre de 1996) Este manual es

5.24.4 Descripción var-leng-princ Identifica la tabla o vista sobre la que desea obtener información. Cuando se ejecuta la sentencia DESCRIBE TABLE: � El nombre debe identificar una tabla o vista existente en el servidor de la aplicación. � La var-leng-princ debe ser una variable de s erie de caracteres y no debe incluir una variable de indicador. � El nombre de tabla contenido dentro de la va r-leng-princ debe justificarse por la izquierda y debe rellen arse por la derecha con blancos si su longitud es inferior a la de dicha var-leng-princ. � El nombre de la tabla debe estar en mayúscul as a menos que sea un nombre delimitado. INTO nombre-descriptor Identifica un área de descriptor SQL (SQLDA), q ue se describe en el Apéndice C, "Área de descriptor SQL (SQLDA)" en el tema C.0 . Antes de ejecutar la sentencia DESCRIBE TABLE, debe esta blecerse la variable siguiente en la SQLDA. (Las reglas para REXX s on diferentes. Para obtener más información, consulte el manual DB/2 for OS/400 SQL Programming , SC41-4611) SQLN Indica el número de apariciones de SQLVAR que se proporcionan en la SQLDA. SQLN deb e establecerse en un valor mayor o igual que cero antes de ejecutar la sentencia DESCRIBE TABLE. Al ejecutarse la sentencia DESCRIBE TABLE, el gesto r de bases de datos asigna valores a las variables de la SQLDA del sigu iente modo: Variable Información devuelta por el gestor de bases de dato s SQLDAID 'SQLDA ' SQLDABC Longitud de la SQLDA. SQLD Número de columnas contenidas en la tab la o vista a la que se hace referencia. SQLVAR Si el valor de SQLD es 0 o mayor que el valor de SQLN, no se asigna ningún valor a las apariciones d e SQLVAR. Si el valor de SQLD es n, donde n es mayor que 0 pero menor o igual que el valor de SQLN, se asignan valores a las n primeras apariciones de SQLVAR de maner a que la primera aparición de SQLVAR contenga una descri pción de la primera columna de la tabla o vista, la segunda aparición de SQLVAR contenga una descripción de la segunda columna de la tabla o vista, y así sucesivamente. La descrip ción de una columna consta de los valores asignados a SQLTY PE, SQLLEN y SQLNAME. SQLTYPE Código que muestra el tipo de datos de la columna y si puede contener o no valores nulos. Para obte ner más información sobre los códigos SQLTYPE devueltos des pués de la ejecución de una sentencia DESCRIBE TABLE, véase el apartado "SQLTYPE y SQLLEN" en el tema C.3 . SQLLEN Valor de longitud según sea el tipo de datos de las columnas de resultados. Los posibles valores de SQLLEN aparecen en el apartado "SQLTYPE y SQLLEN" en el tema C.3 . SQLDATA CCSID de una columna de serie, tal como se muestra en la Tabla 27 en el tema C.4 . SQLIND Reservado SQLNAME Nombre no calificado de la columna. El nombre devuelto es el nombre de columna especificado en CREATE TABLE o CREATE VIEW, y no el nombre de columna del sistema . Si una columna no tiene nombre, SQLNAME es la serie vacía . Para obtener más información acerca de columnas sin nomb re, consulte el apartado "Nombres de columnas de resultados" en el tema 4.2. 1. USING Indica el valor a asignar a cada variable SQLNA ME en la SQLDA. Si no existe el valor solicitado, SQLNAME se establec e en una longitud de 0. NAMES Asigna el nombre de la columna. Este es el valor por omisión. SYSTEM NAMES Asigna el nombre de la columna del sistema de la columna. LABELS Asigna la etiqueta de la columna (las etiqu etas de columna se definen mediante la sentencia LABEL ON). S ólo se devuelven los 30 primeros bytes de la etiqueta. ANY Asigna la etiqueta de columna. Si la colum na no tiene etiqueta, ésta será el nombre de la columna. BOTH

DB2/400 Manual de Consulta SQL V3R7 Descripción

© Copyright IBM Corp. 1995, 1996 5.24.4 - 1

Page 576: DB2/400 Manual de Consulta SQLmarce.com/docs/systems/manuales/db2_400_manual_consulta_sql_v3r7.pdf · VERSION Nota de Versión Segunda edición (noviembre de 1996) Este manual es

Asigna la etiqueta y el nombre de la column a. En este caso, son necesarias dos apariciones de SQLVAR por co lumna para acomodar la información adicional. Para especificar es ta expansión de la matriz SQLVAR, establezca SQLN en 2* n (donde n es el número de columnas de la tabla o vista). Las n primeras apariciones de SQLVAR contienen los nombres de columna del sistema. Las n segundas apariciones contienen las etiqueta s de columna. ALL Asigna la etiqueta, el nombre de columna y el nombre de columna del sistema. En este caso, son necesarias tres apariciones de SQLVAR por columna para acomodar la informa ción adicional. Para especificar esta expansión de la matriz SQL VAR, establezca SQLN en 3* n (donde n es el número de columnas de la tabla de resultados ). Las n primeras apariciones de SQLVAR contienen los nombr es de columna del sistema. Las n segundas apariciones contienen las etiquetas de columna. Las n terceras apariciones contienen los nombres de columna.

DB2/400 Manual de Consulta SQL V3R7 Descripción

© Copyright IBM Corp. 1995, 1996 5.24.4 - 2

Page 577: DB2/400 Manual de Consulta SQLmarce.com/docs/systems/manuales/db2_400_manual_consulta_sql_v3r7.pdf · VERSION Nota de Versión Segunda edición (noviembre de 1996) Este manual es

5.24.5 Notas Antes de ejecutar la sentencia DESCRIBE TABLE, debe establecerse el valor de SQLN en un valor mayor o igual que cero para ind icar cuántas apariciones de SQLVAR se dan en la SQLDA y si se de be asignar el almacenamiento suficiente para contener las aparici ones de SQLN. Para obtener la descripción de las columnas de la tabla o vista, el número de apariciones de SQLVAR no debe ser menor que el núme ro de columnas. Si se especifica USING BOTH y SQLN es menor que 2*S QLD, SQLD se establece en 2 * (número de columnas). Si se especifica USIN G BOTH y SQLN es mayor o igual que 2*SQLD, SQLD se establece en el número de columnas. Si se especifica USING ALL y SQLN es menor que 3*SQ LD, SQLD se establece en 3 * (número de columnas). Si se especifica USIN G ALL y SQLN es mayor o igual que 3*SQLD, SQLD se establece en el número de columnas. En el apartado "DESCRIBE" en el tema 5.23 hallará una descripción de las técnicas que puede utilizar para asignar la SQLDA.

DB2/400 Manual de Consulta SQL V3R7 Notas

© Copyright IBM Corp. 1995, 1996 5.24.5 - 1

Page 578: DB2/400 Manual de Consulta SQLmarce.com/docs/systems/manuales/db2_400_manual_consulta_sql_v3r7.pdf · VERSION Nota de Versión Segunda edición (noviembre de 1996) Este manual es

5.24.6 Ejemplo En un programa PL/I, ejecutar una sentencia DESCRIB E TABLE con una SQLDA que no contenga apariciones de SQLVAR. Si SQLD es mayor que cero, utilizar el valor para asignar una SQLDA con el núm ero de apariciones de SQLVAR necesarias y, a continuación, ejecutar una s entencia DESCRIBE TABLE utilizando esta SQLDA. EXEC SQL BEGIN DECLARE SECTION; DCL NOMB_TABLA CHAR(200) VARYING; EXEC SQL END DECLARE SECTION; EXEC SQL INCLUDE SQLDA; ... /* código para solicitar del usuario una tabla o vista */ ... /* código para establecer SQLN a cero y asignar la SQLDA */ EXEC SQL DESCRIBE TABLE :NOMB_TABLA INTO :SQLDA; ... /* código para comprobar que SQLD es mayor que cero, para */ /* establecer SQLN en SQLD, después reasignar la SQ LDA */ EXEC SQL DESCRIBE TABLE :NOMB_TABLA INTO :SQLDA; . . .

DB2/400 Manual de Consulta SQL V3R7 Ejemplo

© Copyright IBM Corp. 1995, 1996 5.24.6 - 1

Page 579: DB2/400 Manual de Consulta SQLmarce.com/docs/systems/manuales/db2_400_manual_consulta_sql_v3r7.pdf · VERSION Nota de Versión Segunda edición (noviembre de 1996) Este manual es

5.25 DISCONNECT La sentencia DISCONNECT finaliza una o varias conex iones de conversaciones no protegidas. Subtemas 5.25.1 Invocación 5.25.2 Autorización 5.25.3 Sintaxis 5.25.4 Descripción 5.25.5 Notas 5.25.6 Ejemplos

DB2/400 Manual de Consulta SQL V3R7 DISCONNECT

© Copyright IBM Corp. 1995, 1996 5.25 - 1

Page 580: DB2/400 Manual de Consulta SQLmarce.com/docs/systems/manuales/db2_400_manual_consulta_sql_v3r7.pdf · VERSION Nota de Versión Segunda edición (noviembre de 1996) Este manual es

5.25.1 Invocación Esta sentencia sólo puede hospedarse en un programa de aplicación o emitirse interactivamente. Es una sentencia ejecut able que no puede prepararse dinámicamente. No debe especificarse en REXX. DISCONNECT no se permite en un programa desencadena nte. DISCONNECT no se permite en un procedimiento externo si se llama a d icho procedimiento externo en un servidor de la aplicación remoto.

DB2/400 Manual de Consulta SQL V3R7 Invocación

© Copyright IBM Corp. 1995, 1996 5.25.1 - 1

Page 581: DB2/400 Manual de Consulta SQLmarce.com/docs/systems/manuales/db2_400_manual_consulta_sql_v3r7.pdf · VERSION Nota de Versión Segunda edición (noviembre de 1996) Este manual es

5.25.2 Autorización No se requiere ninguna.

DB2/400 Manual de Consulta SQL V3R7 Autorización

© Copyright IBM Corp. 1995, 1996 5.25.2 - 1

Page 582: DB2/400 Manual de Consulta SQLmarce.com/docs/systems/manuales/db2_400_manual_consulta_sql_v3r7.pdf · VERSION Nota de Versión Segunda edición (noviembre de 1996) Este manual es

5.25.3 Sintaxis +-------------------------------------------------- ----------------------+ ¦ ¦ ¦ >>-- DISCONNECT---- nombre-servidor ----------------------------------->< ¦ ¦ +- var-leng-princ --¦ ¦ ¦ +- CURRENT---------¦ ¦ ¦ ¦ +- SQL-+ ¦ ¦ ¦ +- ALL-------------+ ¦ ¦ ¦ +-------------------------------------------------- ----------------------+

DB2/400 Manual de Consulta SQL V3R7 Sintaxis

© Copyright IBM Corp. 1995, 1996 5.25.3 - 1

Page 583: DB2/400 Manual de Consulta SQLmarce.com/docs/systems/manuales/db2_400_manual_consulta_sql_v3r7.pdf · VERSION Nota de Versión Segunda edición (noviembre de 1996) Este manual es

5.25.4 Descripción nombre-servidor o var-leng-princ Identifica al servidor de la aplicación mediant e el nombre de servidor especificado o mediante el nombre de servidor q ue figura en la variable del lenguaje principal. Si se especif ica una variable del lenguaje principal, ésta: � Debe ser una variable de serie de caracteres . � No debe estar seguida de una variable de ind icador. � El nombre de servidor debe estar justificado por la izquierda en la variable del lenguaje principal y debe o bservar las reglas de creación de identificadores normales � Si la longitud del nombre de servidor es men or que la longitud de la variable del lenguaje principal, debe re llenarse con espacios en blanco por la derecha. Cuando se ejecuta la sentencia DISCONNECT, el n ombre de servidor que se ha especificado o el que figura en la variab le del lenguaje principal debe identificar la conexión latente o actual del grupo de activación. La conexión identificada no puede utilizar una conversación protegida. CURRENT Identifica la conexión actual del grupo de acti vación. El grupo de activación debe encontrarse en estado conectado . La conexión actual no debe utilizar una conversación protegida. ALL o ALL SQL Identifica todas las conexiones existentes del grupo de activación (tanto locales como remotas). No se producirá ningún error ni se emitirá aviso alguno si no hay conexiones cuand o se ejecuta esta sentencia. Ninguna de las conexiones puede uti lizar conversaciones protegidas.

DB2/400 Manual de Consulta SQL V3R7 Descripción

© Copyright IBM Corp. 1995, 1996 5.25.4 - 1

Page 584: DB2/400 Manual de Consulta SQLmarce.com/docs/systems/manuales/db2_400_manual_consulta_sql_v3r7.pdf · VERSION Nota de Versión Segunda edición (noviembre de 1996) Este manual es

5.25.5 Notas Una conexión identificada no debe ser una conexión que se ha utilizado para ejecutar sentencias SQL durante la unidad de t rabajo actual ni una conexión para una conversación protegida. Para fin alizar conexiones en conversaciones protegidas, utilice la sentencia REL EASE. Las conexiones locales nunca se consideran conversaciones protegid as. Si la sentencia DISCONNECT es satisfactoria, finali zan todas las conexiones identificadas. Si se interrumpe la cone xión actual, el grupo de activación adquiere el estado no conectado. Si la sentencia DISCONNECT no es satisfactoria, el estado de conexión del grupo de activación y los estados de sus conexiones no cambian. La utilización de la semántica de CONNECT (Tipo 1) no evita la utilización de DISCONNECT. DISCONNECT cierra los cursores, libera los recursos e impide que se siga utilizando la conexión. ROLLBACK no vuelve a establecer una conexión que DI SCONNECT ha finalizado. Se necesitan recursos para crear y mantener conexio nes remotas. De este modo, una conexión remota que no se vaya a utilizar de nuevo debe finalizarse en cuanto sea posible, y una conexión r emota que sí se vaya a seguir utilizando no debe interrumpirse. La sentencia DISCONNECT debe ejecutarse inmediatame nte después de una operación de compromiso. Si DISCONNECT se utiliza para finalizar la conexión actual, la sentencia SQL que se ejecute a continuación debe ser CONNECT o SET CONNECTION. DISCONNECT ALL finaliza la conexión con el servidor de la aplicación local. Una conexión finaliza aunque tenga un curso r abierto definido con WITH HOLD.

DB2/400 Manual de Consulta SQL V3R7 Notas

© Copyright IBM Corp. 1995, 1996 5.25.5 - 1

Page 585: DB2/400 Manual de Consulta SQLmarce.com/docs/systems/manuales/db2_400_manual_consulta_sql_v3r7.pdf · VERSION Nota de Versión Segunda edición (noviembre de 1996) Este manual es

5.25.6 Ejemplos Ejemplo 1 : Ya no es necesaria la conexión con LAB1BCN. La s entencia siguiente se ejecuta después de una operación de co mpromiso. EXEC SQL DISCONNECT LAB1BCN; Ejemplo 2 : La conexión actual ya no es necesaria. La senten cia siguiente se ejecuta después de una operación de compromiso. EXEC SQL DISCONNECT CURRENT; Ejemplo 3 : Las conexiones existentes ya no son necesarias. La sentencia siguiente se ejecuta después de una operación de co mpromiso. EXEC SQL DISCONNECT ALL;

DB2/400 Manual de Consulta SQL V3R7 Ejemplos

© Copyright IBM Corp. 1995, 1996 5.25.6 - 1

Page 586: DB2/400 Manual de Consulta SQLmarce.com/docs/systems/manuales/db2_400_manual_consulta_sql_v3r7.pdf · VERSION Nota de Versión Segunda edición (noviembre de 1996) Este manual es

5.26 DROP La sentencia DROP suprime un objeto. Todos los obj etos que dependen directa o indirectamente de éste también se suprime n. Siempre que se suprime un objeto, su descripción se elimina del ca tálogo. Subtemas 5.26.1 Invocación 5.26.2 Autorización 5.26.3 Sintaxis 5.26.4 Descripción 5.26.5 Ejemplos

DB2/400 Manual de Consulta SQL V3R7 DROP

© Copyright IBM Corp. 1995, 1996 5.26 - 1

Page 587: DB2/400 Manual de Consulta SQLmarce.com/docs/systems/manuales/db2_400_manual_consulta_sql_v3r7.pdf · VERSION Nota de Versión Segunda edición (noviembre de 1996) Este manual es

5.26.1 Invocación Esta sentencia puede hospedarse en un programa de a plicación o emitirse interactivamente. Es una sentencia ejecutable que puede prepararse dinámicamente.

DB2/400 Manual de Consulta SQL V3R7 Invocación

© Copyright IBM Corp. 1995, 1996 5.26.1 - 1

Page 588: DB2/400 Manual de Consulta SQLmarce.com/docs/systems/manuales/db2_400_manual_consulta_sql_v3r7.pdf · VERSION Nota de Versión Segunda edición (noviembre de 1996) Este manual es

5.26.2 Autorización Para suprimir una tabla, vista, índice o paquete, l os privilegios del ID de autorización de la sentencia deben incluir al me nos una de las autorizaciones siguientes: � Las autorizaciones del sistema siguientes: - Las autorizaciones del sistema *OBJOPR y *O BJEXIST sobre el objeto a suprimir - Si el objeto es una tabla o una vista, las autorizaciones del sistema *OBJOPR y *OBJEXIST sobre todas las vistas, índices y archivos lógicos que son dependientes de di cha tabla o vista - La autorización del sistema *EXECUTE sobre la biblioteca que contiene el objeto a suprimir � Autorización de administrador Para suprimir una colección, los privilegios del ID de autorización de la sentencia deben incluir al menos una de las autoriz aciones siguientes: � Las autorizaciones del sistema siguientes: - Las autorizaciones del sistema *OBJEXIST, * OBJOPR, *EXECUTE y *READ sobre la biblioteca que se va a supri mir. - Las autorizaciones del sistema *OBJOPR y *O BJEXIST sobre todos los objetos de la colección y *OBJOPR y *OBJEXI ST sobre todas las vistas, índices y archivos lógicos que depe nden de las tablas y vistas de la colección. - Cualquiera de las autorizaciones necesarias para suprimir otros tipos de objeto que haya en la colección. Por ejemplo, *OBJMGT para el diccionario de datos si la colecció n contiene un diccionario de datos y alguna autorización sobre datos del sistema para el receptor de diario. Para obtener má s información, consulte la publicación Security - Reference , SC41-4302. � Autorización de administrador Para eliminar un procedimiento, los privilegios que tiene el ID de autorización de la sentencia deben incluir como mín imo uno de los privilegios siguientes: � Para las tablas de catálogo SYSPROCS y SYSPARMS: - El privilegio DELETE sobre la tabla, y - La autorización del sistema *EXECUTE sobre la biblioteca QSYS2 � Autorización de administrador El ID de autorización de la sentencia tiene el priv ilegio DELETE sobre una tabla si: � Es el propietario de la tabla. � Se le ha otorgado el privilegio DELETE sobre la tabla, o � Se le han otorgado las autorizaciones del sistem a *OBJOPR y *DLT sobre la tabla.

DB2/400 Manual de Consulta SQL V3R7 Autorización

© Copyright IBM Corp. 1995, 1996 5.26.2 - 1

Page 589: DB2/400 Manual de Consulta SQLmarce.com/docs/systems/manuales/db2_400_manual_consulta_sql_v3r7.pdf · VERSION Nota de Versión Segunda edición (noviembre de 1996) Este manual es

5.26.3 Sintaxis +-------------------------------------------------- ----------------------+ ¦ ¦ ¦ (1) ¦ ¦ >>-- DROP------ COLLECTION-------- nom-colec -- supr-comportamiento ------>< ¦ ¦ ¦ +- SCHEMA-----+ ¦ ¦ ¦ +- INDEX-- nombre-índice -------------------------------¦ ¦ ¦ ¦ (2) ¦ ¦ ¦ +- PACKAGE----- nombre-paquete -------------------------¦ ¦ ¦ +- PROCEDURE-- nombre-procedimiento --------------------¦ ¦ ¦ +- TABLE-- nombre-tabla -- supr-comportamiento -----------¦ ¦ ¦ +- VIEW-- nombre-vista -- supr-comportamiento ------------+ ¦ ¦ ¦ ¦ supr-comportamiento: ¦ ¦ +- CASCADE--+ ¦ ¦ +--+----------+---------------------------------- --------------------¦ ¦ ¦ +- RESTRICT-+ ¦ ¦ ¦ ¦ Notas: ¦ ¦ (1) Se puede utilizar la palabra clave DATABASE como sinónimo de ¦ ¦ COLLECTION o SCHEMA. ¦ ¦ ¦ ¦ (2) Se puede utilizar la palabra clave PROGRAM c omo sinónimo de ¦ ¦ PACKAGE. ¦ ¦ ¦ +-------------------------------------------------- ----------------------+

DB2/400 Manual de Consulta SQL V3R7 Sintaxis

© Copyright IBM Corp. 1995, 1996 5.26.3 - 1

Page 590: DB2/400 Manual de Consulta SQLmarce.com/docs/systems/manuales/db2_400_manual_consulta_sql_v3r7.pdf · VERSION Nota de Versión Segunda edición (noviembre de 1996) Este manual es

5.26.4 Descripción COLLECTION o SCHEMA nom-colec Identifica la colección que desea suprimir. El nom-colec debe identificar una colección que exista en el serv idor actual. La colección especificada se suprime. Se suprimen todos los objetos de la colección. Todos los planes de acceso que hacen referencia a algún objeto de la colección se preparan implícitamente de nuevo c uando se ejecuta a continuación un programa que utiliza el plan de acceso. Si el objeto al que se hace referencia no existe en ese mome nto, se devuelve un valor negativo en el campo SQLCODE de la SQLCA. DROP COLLECTION sólo es válido cuando el nivel de compromiso es *NONE. INDEX nombre-índice Identifica el índice que desea suprimir. El nombre-índice debe identificar un índice que exista en el servidor actual. El índice especificado se suprime de la colección o de la biblioteca. Los índices se pueden suprimir en cualquier momento excepto cuando se están utilizando. Todos los planes de acceso que hacen referencia al índice se preparan implícitamente de nuevo cuando se ejecuta a con tinuación un programa que utiliza el plan de acceso. PACKAGE nombre-paquete Identifica el paquete que desea suprimir. El nombre-paquete debe identificar un paquete que exista en el servido r actual. El paquete especificado se suprime de la colección o de la biblioteca. También se suprimen todos los privilegios sobre el paqu ete. PROCEDURE nombre-procedimiento Identifica el procedimiento que desea suprimir. El nombre-procedimiento debe identificar un procedimiento que exista en el servidor actual. El procedimiento especific ado se suprime de las tablas de catálogo SYSPROCS y SYSPARMS. TABLE nombre-tabla Identifica la tabla que desea suprimir. El nombre-tabla debe identificar una tabla base que exista en el ser vidor actual, pero no debe identificar una tabla de catálogo. La tab la especificada se suprime de la colección o biblioteca. También se suprimen todos los privilegios, restricciones, índices, desencaden antes, vistas y archivos lógicos de la tabla. Todos los planes de acceso que hacen referencia a la tabla se preparan de nuevo cuando se ejecuta a continuación un pr ograma que contiene el plan de acceso. Si la tabla a la que se hace r eferencia no existe en ese momento, se devolverá un valor negativo en el campo SQLCODE de la SQLCA. VIEW nombre-vista Identifica la vista que desea suprimir. El nombre-vista debe identificar una vista que exista en el servidor actual, pero no debe identificar una vista de catálogo. La vista es pecificada se suprime de la colección o biblioteca. También se supri men las vistas que dependen directa o indirectamente de dicha vist a. Cuando se suprime una vista, se suprimen los privilegios sobre es a vista. Todos los planes de acceso que hacen referencia a la vista se preparan implícitamente de nuevo cuando se ejecuta a con tinuación un programa que utiliza el plan de acceso. Si la vista a l a que se hace referencia no existe en ese momento, se devolve rá un valor negativo en el campo SQLCODE de la SQLCA. CASCADE Especifica que también se eliminan todas las ta blas, vistas, índices, archivos o restricciones de referencia que sean dependientes del objeto que se elimina. RESTRICT Especifica que el objeto no puede eliminarse si existen vistas, archivos lógicos, índices o restricciones depen dientes del objeto que se elimina. Si el objeto que se elimina es una colección, incluirá todas las dependencias sobre las tablas y vista s de la colección.

DB2/400 Manual de Consulta SQL V3R7 Descripción

© Copyright IBM Corp. 1995, 1996 5.26.4 - 1

Page 591: DB2/400 Manual de Consulta SQLmarce.com/docs/systems/manuales/db2_400_manual_consulta_sql_v3r7.pdf · VERSION Nota de Versión Segunda edición (noviembre de 1996) Este manual es

5.26.5 Ejemplos Ejemplo 1 : Suprimir la tabla denominada MI_BAND_EN. No per mitir la eliminación si se crean vistas o índices sobre esta tabla. DROP TABLE MI_BAND_EN RESTRICT Ejemplo 2 : Suprimir la vista llamada PROY_MA. DROP VIEW PROY_MA Ejemplo 3 : Suprimir el paquete denominado PERS.PAQUE. DROP PACKAGE PERS.PAQUE

DB2/400 Manual de Consulta SQL V3R7 Ejemplos

© Copyright IBM Corp. 1995, 1996 5.26.5 - 1

Page 592: DB2/400 Manual de Consulta SQLmarce.com/docs/systems/manuales/db2_400_manual_consulta_sql_v3r7.pdf · VERSION Nota de Versión Segunda edición (noviembre de 1996) Este manual es

5.27 END DECLARE SECTION La sentencia END DECLARE SECTION marca el final de una sección de declaración SQL. Subtemas 5.27.1 Invocación 5.27.2 Autorización 5.27.3 Sintaxis 5.27.4 Descripción 5.27.5 Ejemplos

DB2/400 Manual de Consulta SQL V3R7 END DECLARE SECTION

© Copyright IBM Corp. 1995, 1996 5.27 - 1

Page 593: DB2/400 Manual de Consulta SQLmarce.com/docs/systems/manuales/db2_400_manual_consulta_sql_v3r7.pdf · VERSION Nota de Versión Segunda edición (noviembre de 1996) Este manual es

5.27.1 Invocación Esta sentencia sólo puede hospedarse en un programa de aplicación. No es una sentencia ejecutable. No debe especificarse en RPG ni en REXX.

DB2/400 Manual de Consulta SQL V3R7 Invocación

© Copyright IBM Corp. 1995, 1996 5.27.1 - 1

Page 594: DB2/400 Manual de Consulta SQLmarce.com/docs/systems/manuales/db2_400_manual_consulta_sql_v3r7.pdf · VERSION Nota de Versión Segunda edición (noviembre de 1996) Este manual es

5.27.2 Autorización No se requiere ninguna.

DB2/400 Manual de Consulta SQL V3R7 Autorización

© Copyright IBM Corp. 1995, 1996 5.27.2 - 1

Page 595: DB2/400 Manual de Consulta SQLmarce.com/docs/systems/manuales/db2_400_manual_consulta_sql_v3r7.pdf · VERSION Nota de Versión Segunda edición (noviembre de 1996) Este manual es

5.27.3 Sintaxis +-------------------------------------------------- ----------------------+ ¦ ¦ ¦ >>-- END DECLARE SECTION--------------------------------------------->< ¦ ¦ ¦ +-------------------------------------------------- ----------------------+

DB2/400 Manual de Consulta SQL V3R7 Sintaxis

© Copyright IBM Corp. 1995, 1996 5.27.3 - 1

Page 596: DB2/400 Manual de Consulta SQLmarce.com/docs/systems/manuales/db2_400_manual_consulta_sql_v3r7.pdf · VERSION Nota de Versión Segunda edición (noviembre de 1996) Este manual es

5.27.4 Descripción La sentencia END DECLARE SECTION puede codificarse en el programa de aplicación allí donde el lenguaje principal permita las declaraciones. Se utiliza para indicar el final de una sección de dec laración SQL. Una sección de declaración SQL comienza con una sentenc ia BEGIN DECLARE SECTION, tal como se describe en la página 5.5 . Las sentencias BEGIN DECLARE SECTION y END DECLARE SECTION deben emparejarse y no pueden estar jerarquizadas. No se deben incluir sentencias SQL en la sección de declaración, exceptuando las sentencias DECLARE VARIABLE e INCLU DE. Si se especifican secciones de declaración SQL en e l programa, solamente las variables declaradas en las secciones de declar ación SQL pueden utilizarse como variables del lenguaje principal. Si no se especifican secciones de declaración SQL, todas las variables d el programa se pueden utilizar como variables del lenguaje principal. Deben especificarse secciones de declaración SQL pa ra los lenguajes principales que no sean RPG ni REXX para que el pro grama fuente se ajuste al estándar SQL de IBM. La sección de declaración SQL debe aparecer antes d e la primera referencia a la variable. Las variables del lenguaje principa l se declaran sin utilizar estas sentencias en RPG, y en REXX no se d eclaran. Las variables declaradas fuera de una sección de de claración SQL no deben tener el mismo nombre que las variables declaradas en una sección de declaración SQL. Se puede especificar más de una sección de declarac ión SQL en el programa.

DB2/400 Manual de Consulta SQL V3R7 Descripción

© Copyright IBM Corp. 1995, 1996 5.27.4 - 1

Page 597: DB2/400 Manual de Consulta SQLmarce.com/docs/systems/manuales/db2_400_manual_consulta_sql_v3r7.pdf · VERSION Nota de Versión Segunda edición (noviembre de 1996) Este manual es

5.27.5 Ejemplos Consulte el apartado "BEGIN DECLARE SECTION" en el tema 5.5 para ver ejemplos en los que se utiliza la sentencia END DEC LARE SECTION.

DB2/400 Manual de Consulta SQL V3R7 Ejemplos

© Copyright IBM Corp. 1995, 1996 5.27.5 - 1

Page 598: DB2/400 Manual de Consulta SQLmarce.com/docs/systems/manuales/db2_400_manual_consulta_sql_v3r7.pdf · VERSION Nota de Versión Segunda edición (noviembre de 1996) Este manual es

5.28 EXECUTE La sentencia EXECUTE ejecuta una sentencia SQL prep arada. Subtemas 5.28.1 Invocación 5.28.2 Autorización 5.28.3 Sintaxis 5.28.4 Descripción 5.28.5 Sustitución de los marcadores de parámetros 5.28.6 Ejemplo

DB2/400 Manual de Consulta SQL V3R7 EXECUTE

© Copyright IBM Corp. 1995, 1996 5.28 - 1

Page 599: DB2/400 Manual de Consulta SQLmarce.com/docs/systems/manuales/db2_400_manual_consulta_sql_v3r7.pdf · VERSION Nota de Versión Segunda edición (noviembre de 1996) Este manual es

5.28.1 Invocación Esta sentencia sólo puede hospedarse en un programa de aplicación. Es una sentencia ejecutable que no puede prepararse dinámi camente.

DB2/400 Manual de Consulta SQL V3R7 Invocación

© Copyright IBM Corp. 1995, 1996 5.28.1 - 1

Page 600: DB2/400 Manual de Consulta SQLmarce.com/docs/systems/manuales/db2_400_manual_consulta_sql_v3r7.pdf · VERSION Nota de Versión Segunda edición (noviembre de 1996) Este manual es

5.28.2 Autorización Las reglas de autorización son las que se definen p ara la sentencia SQL especificada por EXECUTE. Por ejemplo, vea la desc ripción de INSERT para conocer las reglas de autorización que son aplicabl es cuando una sentencia INSERT se ejecuta utilizando EXECUTE. El ID de autorización de la sentencia es el ID de a utorización en tiempo de ejecución, a menos que se especificase DYNUSRPRF (*OWNER) en el mandato CRTSQLxxx cuando se creó el programa. Para obtener más información, consulte el apartado "ID de autorización y nombres-autorización" en el tema 2.5 .

DB2/400 Manual de Consulta SQL V3R7 Autorización

© Copyright IBM Corp. 1995, 1996 5.28.2 - 1

Page 601: DB2/400 Manual de Consulta SQLmarce.com/docs/systems/manuales/db2_400_manual_consulta_sql_v3r7.pdf · VERSION Nota de Versión Segunda edición (noviembre de 1996) Este manual es

5.28.3 Sintaxis +-------------------------------------------------- ----------------------+ ¦ ¦ ¦ >>-- EXECUTE-- nombre-sentencia ----------------------------------------> ¦ ¦ ¦ ¦ >------------------------------------------------ ------------------->< ¦ ¦ ¦ <-,--------------+ ¦ ¦ ¦ +- USING---- var-leng-princ -------------¦ ¦ ¦ +- USING DESCRIPTOR-- nombre-descriptor -+ ¦ ¦ ¦ +-------------------------------------------------- ----------------------+

DB2/400 Manual de Consulta SQL V3R7 Sintaxis

© Copyright IBM Corp. 1995, 1996 5.28.3 - 1

Page 602: DB2/400 Manual de Consulta SQLmarce.com/docs/systems/manuales/db2_400_manual_consulta_sql_v3r7.pdf · VERSION Nota de Versión Segunda edición (noviembre de 1996) Este manual es

5.28.4 Descripción nombre-sentencia Identifica la sentencia preparada que se ha de ejecutar. El nombre de sentencia debe identificar una sentencia previamente prepara da en la unidad de trabajo. La sentencia preparada no p uede ser una sentencia SELECT. La sentencia puede haberse preparado e n una unidad de trabajo anterior si se utilizó COMMIT HOLD o ROLLBACK H OLD para preservar la sentencia preparada. USING Introduce una lista de variables del lenguaje p rincipal cuyos valores se sustituyen por marcadores de parámetros (sig nos de interrogación) en la sentencia preparada. Para obtener una ex plicación de los marcadores de parámetros, consulte el apartado "PREPARE" en el tema 5.38 . Si la sentencia preparada incluye marcadores de parámetros, la cláusula USING debe utilizarse. Si no hay marcadores de parámetros, USING se pasa por alto. var-leng-princ,... Identifica una o varias variables o estruct uras del lenguaje principal que deben declararse en el progra ma de acuerdo con las reglas de declaración de las variables y la s estructuras del lenguaje principal. Una referencia a una e structura del lenguaje principal se sustituye por una referencia a cada una de sus variables. El número de variables debe ser el mismo que el número de marcadores de parámetros que hay en la s entencia preparada. La variable enésima corresponde al marcador de parámetros enésimo de la sentencia preparada. DESCRIPTOR nombre-descriptor Identifica una SQLDA que debe contener una descripción válida de variables del lenguaje principal. Antes de procesar la sentencia EXECUTE, el usuario debe establecer los campos siguientes en la SQLDA. (Las re glas para REXX son diferentes. Para obtener más información, consulte el manual DB/2 for OS/400 SQL Programming , SC41-4611) � SQLN para indicar la cantidad de aparici ones de SQLVAR proporcionadas en la SQLDA. � SQLDABC para indicar la cantidad de byte s de almacenamiento asignados para la SQLDA. � SQLD para indicar la cantidad de variabl es utilizadas en la SQLDA mientras se procesa la sentencia. � Apariciones de SQLVAR para indicar los a tributos de las variables. La SQLDA debe disponer de almacenamiento su ficiente como para contener todas las apariciones de SQLVAR. Por lo tanto, el valor de SQLDABC debe ser mayor que o igual a 16 + SQLN*(80), siendo 80 la longitud de una aparición de SQLVAR. SQLD debe establecerse en un valor mayor o igual que cero y menor o igual que SQLN. Debe ser igual al número de marcadores de parámetros de la sentencia preparada. La v ariable enésima descrita por la SQLDA corresponde al marcad or de parámetros enésimo de la sentencia preparada. (Para o btener una descripción de una SQLDA, consulte el Apéndice C, "Área de descriptor SQL (SQLDA)" en el tema C.0 .) Observe que RPG/400 no proporciona la función p ara establecer punteros. Puesto que la SQLDA utiliza punteros para localizar las variables del lenguaje principal adecuadas, se deben establecer estos punteros fuera de la aplicación RPG/400.

DB2/400 Manual de Consulta SQL V3R7 Descripción

© Copyright IBM Corp. 1995, 1996 5.28.4 - 1

Page 603: DB2/400 Manual de Consulta SQLmarce.com/docs/systems/manuales/db2_400_manual_consulta_sql_v3r7.pdf · VERSION Nota de Versión Segunda edición (noviembre de 1996) Este manual es

5.28.5 Sustitución de los marcadores de parámetros Antes de ejecutar la sentencia preparada, se sustit uye cada marcador de parámetros de la sentencia por su variable del leng uaje principal correspondiente. A excepción del predicado LIKE, l a sustitución de un marcador de parámetros es una operación de asignaci ón donde el origen es el valor de la variable del lenguaje principal y el destino es una variable dentro del gestor de bases de datos. Los atributos de la variable destino se determinan del siguiente modo: � Si el marcador de parámetros se ha especificado como operando de un operador aritmético, el tipo de datos, la escal a y la precisión del destino son los mismos que los del otro operand o de dicho operador. � Si el marcador de parámetros se ha especificado en un operando de asignación, los atributos del destino son los m ismos que los del otro operando a menos que el tipo de datos de dicho operando sea DATE, TIME o TIMESTAMP, en cuyo caso el destino es de tipo carácter con un atributo de longitud de 32766. Un marcador de parámetros es un operando de asignación en una cláusula SET de u na sentencia UPDATE, en la cláusula VALUES de una sentencia INSERT o en la lista de selección de una sentencia-select en una sentencia INSERT . � Si el marcador de parámetros se ha especificado como operando de comparación en un predicado que no era BETWEEN, IN ni LIKE, los atributos del destino son los mismos que los de l otro operando del predicado, a menos que el tipo de datos de dich o operando sea DATE, TIME o TIMESTAMP, en cuyo caso el destino es de tipo carácter con un atributo de longitud de 32766. � Si el marcador de parámetros se ha especificado como operando de comparación en un predicado BETWEEN o IN, los a tributos de la variable destino se asignan del modo siguiente: - Si solamente un operando no es un marcador de parámetros, los atributos del destino son los atributos de dicho operando. - Si hay más de un operando que no es un marc ador de parámetros, los atributos del destino son los atributos que resultarían si se hubieran especificado dichos operandos en u na función escalar VALUE, con la excepción de que el atributo CCSID es el CCSID de su variable del lenguaje principal correspondi ente. � Si el marcador de parámetros se ha especificado como patrón o como carácter ESCAPE de un predicado LIKE, la variab le del lenguaje principal que se utiliza para sustituir el marc ador de parámetros debe ser compatible con el primer operando. | Si el marcador de parámetros se especificó como patrón, el tipo de| datos del destino es VARCHAR (si el primer oper ando es CHAR o VARCHAR)| o VARGRAPHIC (si el primer operando es GRAPHIC o VARGRAPHIC). El| atributo de longitud del destino es el mismo qu e el del primer| operando. | Si el marcador de parámetros se ha especificado como el carácter ESCAPE, el atributo de longitud del destino es 1. Nota: Cuando el patrón especificado en un predicado LIK E es un marcador de parámetros, y se utiliza una variable del lenguaje principal de tipo carácter de longitud f ija para sustituir el marcador de parámetros, especifique un v alor para la variable del lenguaje principal que tenga la long itud correcta. Si no especifica una longitud correcta, la sel ección no devolverá los resultados esperados. Por ejemplo, si se define la variable de l lenguaje principal como CHAR(10) y se asigna el valor WYSE% a esa variable del lenguaje principal, ésta se rellenará co n espacios en blanco al asignarse. El patrón utilizado será ('W YSE% '). Este patrón solicita al gestor de bases de da tos que busque todos los valores que empiezan por 'WYSE' y te rminan por ' '. Si desea buscar sólo aquellos valores que e mpiecen por 'WYSE', debe asignar el valor 'WYSE%%%%%%' a la variable del lenguaje principal. � Si el marcador de parámetros se ha especificado como operando en una función escalar VALUE, COALESCE, IFNULL, MIN, M AX, LAND, LOR o XOR, los atributos del destino se asignan de la sigu iente forma: - Si solamente un operando no es un marcador de parámetros, los atributos del destino son los atributos de dicho operando. - Si hay más de un operando que no es un marc ador de parámetros, los atributos del destino son los que resultarí an si se eliminaran los marcadores de parámetros de la función esca lar. Suponga que V se refiere a una variable del lenguaj e principal correspondiente al marcador de parámetros P. El va lor de V se asigna a la variable destino para P según las reglas de asignac ión de un valor a una columna. Por tanto: � V debe ser compatible con el destino. � Si V es un número, el valor absoluto de su parte entera no debe ser mayor que el valor absoluto máximo de la parte entera del destino. � Si los atributos de V no son idénticos a los atr ibutos del destino, el valor se convierte para adaptarse a los atribut os del destino. � Si el destino no puede contener nulos, el valor de V no debe ser nulo. No obstante, y a diferencia de las reglas para asig nar un valor a una

DB2/400 Manual de Consulta SQL V3R7 Sustitución de los marcadores de parámetros

© Copyright IBM Corp. 1995, 1996 5.28.5 - 1

Page 604: DB2/400 Manual de Consulta SQLmarce.com/docs/systems/manuales/db2_400_manual_consulta_sql_v3r7.pdf · VERSION Nota de Versión Segunda edición (noviembre de 1996) Este manual es

columna: � Si V es una serie, el valor se truncará (sin nin gún error), si su longitud es mayor que el atributo de longitud d el destino. Al ejecutar la sentencia preparada, el valor utiliz ado en lugar de P es el de la variable destino para P. Por ejemplo, si V e s CHAR(6) y el destino es CHAR(8), el valor utilizado en lugar de P es el valor de V rellenado con dos espacios en blanco.

DB2/400 Manual de Consulta SQL V3R7 Sustitución de los marcadores de parámetros

© Copyright IBM Corp. 1995, 1996 5.28.5 - 2

Page 605: DB2/400 Manual de Consulta SQLmarce.com/docs/systems/manuales/db2_400_manual_consulta_sql_v3r7.pdf · VERSION Nota de Versión Segunda edición (noviembre de 1996) Este manual es

5.28.6 Ejemplo Este ejemplo de partes de un programa COBOL muestra cómo se prepara y ejecuta una sentencia INSERT con marcadores de pará metros. EXEC SQL BEGIN DECLARE SECTION END-EXEC. 77 EMP PIC X(6). 77 PRY PIC X(6). 77 ACT PIC S9(4) COMP-4. 77 TIM PIC S9(3)V9(2). 01 CONTEN. 49 LONG-CONTEN PIC S9(4) COMP-4. 49 VALOR-CONTEN PIC X(80). EXEC SQL END DECLARE SECTION END-EXEC. . . . MOVE 70 TO VALOR-CONTEN. MOVE "INSERT INTO ACT_EMP ( NUMEMP, NUMPRO, NUMACT, TIEMEMP) - "VALUES (?, ?, ?, ?)" TO CONTEN. EXEC SQL PREPARE MIINSERC FROM :CONTEN END-EXEC. IF SQLCODE = 0 PERFORM HACER-INSERC THRU END-HACER-INSERC ELSE PERFORM CONDICION-ERROR. HACER-INSERC. MOVE "000010" TO EMP. MOVE "AD3100" TO PRY. MOVE 160 TO ACT. MOVE .50 TO TIM. EXEC SQL EXECUTE MIINSERC USING :EMP, :PRY, :ACT, :TIM END-EXEC. END-HACER-INSERC. . . .

DB2/400 Manual de Consulta SQL V3R7 Ejemplo

© Copyright IBM Corp. 1995, 1996 5.28.6 - 1

Page 606: DB2/400 Manual de Consulta SQLmarce.com/docs/systems/manuales/db2_400_manual_consulta_sql_v3r7.pdf · VERSION Nota de Versión Segunda edición (noviembre de 1996) Este manual es

5.29 EXECUTE IMMEDIATE La sentencia EXECUTE IMMEDIATE: � Prepara un formato ejecutable de una sentencia S QL a partir de un formato de serie de caracteres de la sentencia � Ejecuta la sentencia SQL � Destruye el formato ejecutable EXECUTE IMMEDIATE combina las funciones básicas de las sentencias PREPARE y EXECUTE. Se puede utilizar para preparar y ejecu tar sentencias SQL que no contengan variables del lenguaje principal ni ma rcadores de parámetros. Subtemas 5.29.1 Invocación 5.29.2 Autorización 5.29.3 Sintaxis 5.29.4 Descripción 5.29.5 Nota 5.29.6 Ejemplo

DB2/400 Manual de Consulta SQL V3R7 EXECUTE IMMEDIATE

© Copyright IBM Corp. 1995, 1996 5.29 - 1

Page 607: DB2/400 Manual de Consulta SQLmarce.com/docs/systems/manuales/db2_400_manual_consulta_sql_v3r7.pdf · VERSION Nota de Versión Segunda edición (noviembre de 1996) Este manual es

5.29.1 Invocación Esta sentencia sólo puede hospedarse en un programa de aplicación. Es una sentencia ejecutable que no puede prepararse dinámi camente.

DB2/400 Manual de Consulta SQL V3R7 Invocación

© Copyright IBM Corp. 1995, 1996 5.29.1 - 1

Page 608: DB2/400 Manual de Consulta SQLmarce.com/docs/systems/manuales/db2_400_manual_consulta_sql_v3r7.pdf · VERSION Nota de Versión Segunda edición (noviembre de 1996) Este manual es

5.29.2 Autorización Las reglas de autorización son las que se definen p ara la sentencia SQL especificada por EXECUTE IMMEDIATE. Por ejemplo, c onsulte el apartado "INSERT" en el tema 5.34 para saber cuáles son las reglas de autorización que se aplican cuando una sentencia INSERT se ejecu ta utilizando EXECUTE IMMEDIATE. El ID de autorización de la sentencia es el ID de a utorización en tiempo de ejecución, a menos que se especificase DYNUSRPRF (*OWNER) en el mandato CRTSQLxxx cuando se creó el programa. Para obtener más información, consulte el apartado "ID de autorización y nombres-autorización" en el tema 2.5 .

DB2/400 Manual de Consulta SQL V3R7 Autorización

© Copyright IBM Corp. 1995, 1996 5.29.2 - 1

Page 609: DB2/400 Manual de Consulta SQLmarce.com/docs/systems/manuales/db2_400_manual_consulta_sql_v3r7.pdf · VERSION Nota de Versión Segunda edición (noviembre de 1996) Este manual es

5.29.3 Sintaxis +-------------------------------------------------- ----------------------+ ¦ ¦ ¦ >>-- EXECUTE IMMEDIATE---- var-leng-princ ----------------------------->< ¦ ¦ +- expresión-serie -+ ¦ ¦ ¦ +-------------------------------------------------- ----------------------+

DB2/400 Manual de Consulta SQL V3R7 Sintaxis

© Copyright IBM Corp. 1995, 1996 5.29.3 - 1

Page 610: DB2/400 Manual de Consulta SQLmarce.com/docs/systems/manuales/db2_400_manual_consulta_sql_v3r7.pdf · VERSION Nota de Versión Segunda edición (noviembre de 1996) Este manual es

5.29.4 Descripción var-leng-princ Identifica una variable del lenguaje principal que debe declararse de acuerdo con las reglas de declaración de variab les del lenguaje principal de serie de caracteres. No se debe e specificar ninguna variable de indicador. expresión-serie Una expresión de serie es cualquier expresión de serie PL/I que produce una serie de caracteres. Las expresion es SQL que producen una serie de caracteres no están permitidas. Sólo se permite una expresión-serie en PL/I. El valor de la variable del lenguaje principal o de la expresión de serie identificada recibe el nombre de serie de sentencia . La serie de sentencia debe ser una las sentencias S QL siguientes: +-------------------------------------------------- ----------------------+ ¦ ALTER TABLE ¦ CREATE TABLE ¦ LO CK TABLE ¦ ¦ CALL ¦ CREATE VIEW ¦ RE NAME ¦ ¦ COMMENT ON ¦ DELETE ¦ RE VOKE ¦ ¦ COMMIT ¦ DROP ¦ RO LLBACK ¦ ¦ CREATE COLLECTION ¦ GRANT ¦ SE T TRANSACTION ¦ ¦ CREATE INDEX ¦ INSERT ¦ UP DATE ¦ ¦ CREATE PROCEDURE ¦ LABEL ON ¦ ¦ +-------------------------------------------------- ----------------------+ La serie de sentencia no debe: � Comenzar por EXEC SQL y terminar por END-EXEC o por un punto y coma (;). � Incluir referencias a variables de lenguaje prin cipal. � Incluir comentarios. � Incluir marcadores de parámetros. Cuando se ejecuta una sentencia EXECUTE IMMEDIATE, la serie de sentencia especificada se analiza y se comprueba si contiene errores. Si la sentencia SQL no es válida, no se ejecuta y se info rma de la condición de error que impide su ejecución en la SQLCA. Si la s entencia SQL es válida, pero se produce un error mientras se ejecuta, se in forma de esta condición de error en la SQLCA.

DB2/400 Manual de Consulta SQL V3R7 Descripción

© Copyright IBM Corp. 1995, 1996 5.29.4 - 1

Page 611: DB2/400 Manual de Consulta SQLmarce.com/docs/systems/manuales/db2_400_manual_consulta_sql_v3r7.pdf · VERSION Nota de Versión Segunda edición (noviembre de 1996) Este manual es

5.29.5 Nota Si se va a ejecutar la misma sentencia SQL más de u na vez, es más eficaz utilizar las sentencias PREPARE y EXECUTE en lugar de la sentencia EXECUTE IMMEDIATE.

DB2/400 Manual de Consulta SQL V3R7 Nota

© Copyright IBM Corp. 1995, 1996 5.29.5 - 1

Page 612: DB2/400 Manual de Consulta SQLmarce.com/docs/systems/manuales/db2_400_manual_consulta_sql_v3r7.pdf · VERSION Nota de Versión Segunda edición (noviembre de 1996) Este manual es

5.29.6 Ejemplo Utilice las sentencias de este programa PL/I para m over una sentencia SQL a la variable del lenguaje principal QSTRING (char( 80)) y para preparar y ejecutar la sentencia SQL que haya en la variable d el lenguaje principal QSTRING. IF CUENTAS = 'BIG' THEN QSTRING = ' INSERT INTO TABLA_TRAB SELECT * FROM ACT_EMP WHERE NUMACT < 100'; ELSE QSTRING = ' INSERT INTO TABLA_TRAB SELECT * FROM ACT_EMP WHERE NUMACT >= 100'; . . . EXEC SQL EXECUTE IMMEDIATE :QSTRING;

DB2/400 Manual de Consulta SQL V3R7 Ejemplo

© Copyright IBM Corp. 1995, 1996 5.29.6 - 1

Page 613: DB2/400 Manual de Consulta SQLmarce.com/docs/systems/manuales/db2_400_manual_consulta_sql_v3r7.pdf · VERSION Nota de Versión Segunda edición (noviembre de 1996) Este manual es

5.30 FETCH La sentencia FETCH sitúa un cursor en una fila de l a tabla de resultados. Puede devolver cero, una o varias filas, y asigna l os valores de las filas devueltas a las variables del lenguaje principal. Subtemas 5.30.1 Invocación 5.30.2 Autorización 5.30.3 Sintaxis 5.30.4 Descripción 5.30.5 operación-fetch-única 5.30.6 operación-fecth-varias-filas 5.30.7 Notas 5.30.8 Ejemplo

DB2/400 Manual de Consulta SQL V3R7 FETCH

© Copyright IBM Corp. 1995, 1996 5.30 - 1

Page 614: DB2/400 Manual de Consulta SQLmarce.com/docs/systems/manuales/db2_400_manual_consulta_sql_v3r7.pdf · VERSION Nota de Versión Segunda edición (noviembre de 1996) Este manual es

5.30.1 Invocación Esta sentencia sólo puede hospedarse en un programa de aplicación. Es una sentencia ejecutable que no puede prepararse dinámi camente. No se permite realizar una operación FETCH de varias filas en un procedimiento REXX.

DB2/400 Manual de Consulta SQL V3R7 Invocación

© Copyright IBM Corp. 1995, 1996 5.30.1 - 1

Page 615: DB2/400 Manual de Consulta SQLmarce.com/docs/systems/manuales/db2_400_manual_consulta_sql_v3r7.pdf · VERSION Nota de Versión Segunda edición (noviembre de 1996) Este manual es

5.30.2 Autorización Consulte el apartado "DECLARE CURSOR" en el tema 5.18 para obtener una explicación de las autorizaciones necesarias para u tilizar un cursor.

DB2/400 Manual de Consulta SQL V3R7 Autorización

© Copyright IBM Corp. 1995, 1996 5.30.2 - 1

Page 616: DB2/400 Manual de Consulta SQLmarce.com/docs/systems/manuales/db2_400_manual_consulta_sql_v3r7.pdf · VERSION Nota de Versión Segunda edición (noviembre de 1996) Este manual es

5.30.3 Sintaxis +-------------------------------------------------- ------------------------------------------------+ ¦ ¦ ¦ ¦ ¦ ¦ ¦ >>-- FETCH---------------------------------------------- nombre-cursor ---------------------------> ¦ ¦ +----------------------------------- FROM-+ ¦ ¦ +- NEXT-------------------------¦ ¦ ¦ +- PRIOR------------------------¦ ¦ ¦ +- FIRST------------------------¦ ¦ ¦ +- LAST-------------------------¦ ¦ ¦ ¦ (2) ¦ ¦ ¦ +- BEFORE-----------------------¦ ¦ ¦ ¦ (2) ¦ ¦ ¦ +- AFTER------------------------¦ ¦ ¦ +- CURRENT----------------------¦ ¦ ¦ +- RELATIVE---- var-leng-princ ---+ ¦ ¦ +- entero ---------+ ¦ ¦ ¦ ¦ >---- operación-fetch-única --------------------------------------------------- ----------------->< ¦ ¦ +- operación-fetch-varias-filas -+ ¦ ¦ ¦ ¦ operación-fetch-única: ¦ ¦ <-,--------------+ ¦ ¦ +---- INTO---- var-leng-princ --------------------------------------------------- -----------------¦ ¦ ¦ ¦ (1) ¦ ¦ ¦ +- INTO DESCRIPTOR----- nombre-descriptor -+ ¦ ¦ ¦ ¦ operación-fetch-varias-filas: ¦ ¦ +-- FOR---- var-leng-princ ---- ROWS--------------------------------------------------- ------------> ¦ ¦ +- entero ---------+ ¦ ¦ ¦ ¦ >---- INTO-- matriz-estructura-leng-princ --------------------------------------------------- -----¦ ¦ ¦ +- USING DESCRIPTOR-- nombre-descriptor -- INTO-- área-almacenamiento-filas -+ ¦ ¦ ¦ ¦ área-almacenamiento-filas: ¦ ¦ +--:-- identificador-1-lenguaje-principal --------------------------------------------------- ----¦ ¦ ¦ ¦ +- INDICATOR-+ ¦ ¦ ¦ +------ ----------:-- id-2-lenguaje-principal -+ ¦ ¦ ¦ ¦ Notas: ¦ ¦ ¦ ¦ (1) Se puede utilizar USING DESCRIPTOR como sinó nimo de INTO DESCRIPTOR en la ¦ ¦ cláusula-fetch-única. ¦ ¦ ¦ ¦ (2) Si se especifica BEFORE o AFTER, no debe esp ecificarse una cláusula-fetch-única o una ¦ ¦ cláusula-fetch de varias filas. ¦ ¦ ¦ ¦ ¦ ¦ ¦ ¦ ¦ +-------------------------------------------------- ------------------------------------------------+

DB2/400 Manual de Consulta SQL V3R7 Sintaxis

© Copyright IBM Corp. 1995, 1996 5.30.3 - 1

Page 617: DB2/400 Manual de Consulta SQLmarce.com/docs/systems/manuales/db2_400_manual_consulta_sql_v3r7.pdf · VERSION Nota de Versión Segunda edición (noviembre de 1996) Este manual es

5.30.4 Descripción Las palabras clave siguientes especifican una posic ión nueva para el cursor: NEXT, PRIOR, FIRST, LAST, BEFORE, AFTER, CU RRENT y RELATIVE. De todas ellas, tan solo NEXT se puede utilizar para l os cursores que no se han declarado como SCROLL. NEXT Sitúa el cursor en la fila siguiente de la tabl a de resultados respecto a la posición actual del cursor. NEXT es el valor por omisión si no se especifica otra orientación de l cursor. PRIOR Sitúa el cursor en la fila anterior de la tabla de resultados respecto a la posición actual del cursor. FIRST Sitúa el cursor en la primera fila de la tabla de resultados. LAST Sitúa el cursor en la última fila de la tabla d e resultados. BEFORE Sitúa el cursor antes de la primera fila de la tabla de resultados. AFTER Sitúa el cursor después de la última fila de la tabla de resultados. CURRENT No cambia la posición del cursor, sino que cons erva la posición actual. Si el cursor se ha declarado como DYNA MIC SCROLL y la fila actual se ha actualizado, por lo que ha cambiad o de lugar en el orden de clasificación de la tabla de resultados, se devuelve un error. RELATIVE Evalúa la variable del lenguaje principal o el entero como un valor entero k . RELATIVE sitúa el cursor en la fila k después de la fila actual de la tabla de resultados si k>0, o k filas antes de la fila actual si k<0. Si se especifica una variable del lenguaje principal , ésta debe ser una variable numérica con escala cero y no debe incluir una variable de indicador. +-------------------------------------------------- ----------------------+ ¦ Tabla 11. Especificaciones de desplazamiento sinó nimo ¦ +-------------------------------------------------- ----------------------¦ ¦ Especificación ¦ Alternativa ¦ +------------------------------------+------------- ----------------------¦ ¦ RELATIVE +1 ¦ NEXT ¦ +------------------------------------+------------- ----------------------¦ ¦ RELATIVE -1 ¦ PRIOR ¦ +------------------------------------+------------- ----------------------¦ ¦ RELATIVE 0 ¦ CURRENT ¦ +-------------------------------------------------- ----------------------+ FROM Esta palabra clave sólo se proporciona para fac ilitar la comprensión. Si se especifica una opción de posición de desp lazamiento, esta palabra clave es necesaria. Si no se especific a ninguna opción de desplazamiento, la palabra clave FROM es opcion al. nombre-cursor Identifica el cursor que se utilizará en la ope ración FETCH. El nombre-cursor debe identificar un cursor declarado, tal como se explica en el apartado "Descripción" en el tema 5.18.4 , para la sentencia DECLARE CURSOR. Cuando se ejecuta la sentencia FETCH, el cursor debe encontrarse en el estado abierto. Si no se especifica una cláusula de operación F ETCH única o de varias filas, no se devuelven datos al usuario. Sin e mbargo, el cursor ocupa la posición indicada y puede adquirirse un bloq ueo de registro. Para obtener más información acerca del bloqueo, véa se el apartado "Nivel de aislamiento" en el tema 1.19 .

DB2/400 Manual de Consulta SQL V3R7 Descripción

© Copyright IBM Corp. 1995, 1996 5.30.4 - 1

Page 618: DB2/400 Manual de Consulta SQLmarce.com/docs/systems/manuales/db2_400_manual_consulta_sql_v3r7.pdf · VERSION Nota de Versión Segunda edición (noviembre de 1996) Este manual es

5.30.5 operación-fetch-única INTO var-leng-princ ,... Identifica una o varias variables o estructuras del lenguaje principal que deben declararse de acuerdo con las reglas declaración de las variables y las estructuras del lenguaje princi pal. En el formato operativo de INTO, una estructura del lenguaje principal se sustituye por una referencia a cada una de sus variables. El primer valor de la fila de resultados se asigna a la primera varia ble del lenguaje principal de la lista, el segundo valor a la se gunda variable del lenguaje principal, y así sucesivamente. INTO DESCRIPTOR nombre-descriptor Identifica una SQLDA que debe contener una desc ripción válida de cero o más variables del lenguaje principal. Antes de procesar la sentencia FETCH, el usuario de be establecer los campos siguientes en la SQLDA. (Las reglas para RE XX son diferentes. Para obtener más información, consulte el manual DB/2 for OS/400 SQL Programming , SC41-4611) � SQLN para indicar la cantidad de apariciones de SQLVAR proporcionadas en la SQLDA � SQLDABC para indicar la cantidad de bytes de alm acenamiento asignados para la SQLDA � SQLD para indicar la cantidad de variables utili zadas en la SQLDA mientras se procesa la sentencia � Las apariciones de SQLVAR para indicar los atrib utos de las variables La SQLDA debe disponer de almacenamiento suficiente como para contener todas las apariciones de SQLVAR. Por lo tanto, el valor de SQLDABC debe ser mayor que o igual a 16 + SQLN*(80), siendo 80 l a longitud de una aparición de SQLVAR. SQLD debe establecerse en un valor mayor o igual qu e cero y menor o igual que SQLN. Para obtener más información, consulte e l apartado Apéndice C, "Área de descriptor SQL (SQLDA)" en el tema C.0 .

DB2/400 Manual de Consulta SQL V3R7 operación-fetch-única

© Copyright IBM Corp. 1995, 1996 5.30.5 - 1

Page 619: DB2/400 Manual de Consulta SQLmarce.com/docs/systems/manuales/db2_400_manual_consulta_sql_v3r7.pdf · VERSION Nota de Versión Segunda edición (noviembre de 1996) Este manual es

5.30.6 operación-fecth-varias-filas FOR k ROWS Evalúa la variable del lenguaje principal o el entero como un valor entero k . Si se especifica una var-leng-princ , ésta debe ser una variable del lenguaje principal numérica con es cala cero y no debe incluir una variable de indicador. k debe estar dentro del rango del 1 al 32767. El cursor se sitúa en la fila espe cificada por la palabra clave de orientación (por ejemplo, NEXT) y se r ealiza una operación FETCH en dicha fila. A continuación se realiza una operación FETCH en las siguientes k-1 filas (avanzando por la tabla) hasta que se alca nza el final del cursor. Después de la operación F ETCH, el cursor se sitúa en la última fila en la que se ha realiza do una operación FETCH. Por ejemplo, "FETCH PRIOR FROM C1 FOR 3 ROWS" h ace que se devuelvan la fila anterior, la fila actual y la fila siguien te, por este orden. El cursor se sitúa en la fila siguiente. "FETCH R ELATIVE -1 FROM C1 FOR 3 ROWS" devuelve el mismo resultado. "FETCH FI RST FROM C1 FOR :x ROWS" devuelve las primeras x filas, y deja el cursor situado en la fila número x . Cuando se ejecuta satisfactoriamente una operac ión FETCH de varias filas, se establecen tres variables en la SQLCA : � SQLERRD(3) muestra la cantidad de filas recu peradas. � SQLERRD(4) contiene la longitud de la fila r ecuperada. � SQLERRD(5) contiene +100 si se ha realizado una operación FETCH en la última fila. INTO matriz-estructura-lenguaje principal| La matriz-estructura-leng-princ identifica una matriz de estructuras del lenguaje principal definidas según las regl as de declaración de las estructuras del lenguaje principal. La primera estructura de la matriz corresponde a la primera fila, la segunda estructura corresponde a la segunda fil a, y así sucesivamente. Además, el primer valor de la fila corresponde al primer elemento de la estructura, el segundo valor de la fila corr esponde al segundo elemento de la estructura, etc. La cantidad de filas en las que se ha de realizar una operación FETCH debe ser menor que o igual a la dimensión de la matriz de estructuras del lengu aje principal. USING DESCRIPTOR nombre-descriptor Identifica una SQLDA que debe contener una desc ripción válida de cero o más variables del lenguaje principal que desc riben el formato de una fila en el área-almacenamiento-filas. Antes de procesar la sentencia FETCH, el usuari o debe establecer los campos siguientes en la SQLDA: � SQLN para indicar la cantidad de apariciones de SQLVAR proporcionadas en la SQLDA. � SQLDABC para indicar la cantidad de bytes de almacenamiento asignados para la SQLDA. � SQLD para indicar la cantidad de variables u tilizadas en la SQLDA mientras se procesa la sentencia. � Las apariciones de SQLVAR para indicar los a tributos de las variables del lenguaje principal. | Los valores de los demás campos de SQLDA (como SQLNAME) pueden no| estar definidos después de ejecutar la sentenci a FETCH y no deberían| utilizarse. La SQLDA debe disponer de almacenamiento sufici ente como para contener todas las apariciones de SQLVAR. Por lo tanto, el valor de SQLDABC debe ser mayor que o igual a 16 + SQLN*(80), si endo 80 la longitud de una aparición de SQLVAR. SQLD debe establecerse en un valor mayor o igua l que cero y menor o igual que SQLN. Para obtener más información, consulte el apartado Apéndice C, "Área de descriptor SQL (SQLDA)" en el tema C.0 . Cuando la sentencia FETCH termina, el puntero S QLDATA de la primera entrada SQLVAR dirige el valor devuelto a la pr imera columna del almacenamiento asignado en la primera fila, el puntero SQLDATA de la segunda entrada SQLVAR dirige el valor devuelto a la segunda columna del almacenamiento asignado en la primera fila, y así sucesivamente. El puntero SQLIND de la primera entrada SQLVAR con posibilidad de nulos dirige el valor del primer indicador, el puntero SQLIND de la segunda entrada SQLVAR con posibilidad de nulos dirige el valor del segundo indicador, etc. La SQLDA debe asignars e en un límite de 16 bytes. INTO área-almacenamiento-filas| El identificador-1-lenguaje-principal especificado con una variable del lenguaje principal identifica una asignació n de almacenamiento en la que se devolverán las filas. Las filas se d evuelven en el área de almacenamiento con el formato descrito por la S QLDA. El identificador 1 del lenguaje principal debe tener un tamaño suficiente para contener todas las filas solicitadas. El identificador-2-lenguaje-principal identifica el área opcional de indicadores. Debe especificarse si el SQLTYPE de alguna aparición de SQLVAR tiene posibilidad de nulos. Los indicad ores se devuelven como

DB2/400 Manual de Consulta SQL V3R7 operación-fecth-varias-filas

© Copyright IBM Corp. 1995, 1996 5.30.6 - 1

Page 620: DB2/400 Manual de Consulta SQLmarce.com/docs/systems/manuales/db2_400_manual_consulta_sql_v3r7.pdf · VERSION Nota de Versión Segunda edición (noviembre de 1996) Este manual es

enteros pequeños. El identificador-2-lenguaje-principal debe ser lo bastante grande para contener un indicador para cada valor que permita nulos en cada una de las filas que se van a dev olver. La variable enésima del lenguaje principal identificada por la cláusul a INTO o descrita en la SQLDA corresponde a la column a enésima de la tabla de resultados del cursor. El tipo de datos de cada variable del lenguaje principal debe ser compatible con su columna corres pondiente. Cada asignación a una variable se efectúa según las reglas descritas en el Capítulo 2, "Elementos del lenguaje" en el tema 2.0 . Si el número de variables es menor que el número de valores de la f ila, el campo SQLWARN3 de la SQLCA se establece en 'W'. Observe que no se producirá aviso alguno si hay más variables que columnas de resultados. S i el valor es nulo, debe facilitarse una variable de indicador. Si se produce un error de asignación, el valor no se asigna a la variable y t ampoco se asignarán más valores a las variables. Todos los valores que ya se hayan asignado a variables permanecen asignados. Si se produce un error como consecuencia de una exp resión aritmética en SELECT lista de una sentencia SELECT exterior (divi sión entre cero o desbordamiento) o si se da un error de conversión d e caracteres, el resultado es el valor nulo. Como en cualquier otro caso de valor nulo, se debe suministrar una variable de indicador. El val or de la variable del lenguaje principal es indefinido. En este caso, si n embargo, la variable de indicador se establece en -2. El proceso de la sentencia continuará como si el error no se hubiera producido. (No obst ante, este error provoca un SQLCODE positivo.) Si no se proporciona una variable de indicador, se devolverá un valor negativo en el cam po SQLCODE de la SQLCA. Es posible que algunos valores ya se hayan asignado a variables del lenguaje principal, y sigan estando asignados cuand o se produzca el error.

DB2/400 Manual de Consulta SQL V3R7 operación-fecth-varias-filas

© Copyright IBM Corp. 1995, 1996 5.30.6 - 2

Page 621: DB2/400 Manual de Consulta SQLmarce.com/docs/systems/manuales/db2_400_manual_consulta_sql_v3r7.pdf · VERSION Nota de Versión Segunda edición (noviembre de 1996) Este manual es

5.30.7 Notas Un cursor abierto tiene tres posiciones posibles: � Delante de una fila � En una fila � Después de la última fila Si un cursor está situado en una fila, ésta recibe el nombre de fila actual del cursor. Aquellos cursores a los que se haga referencia en sentencias UPDATE o DELETE deben estar situados en una fila. Un cursor sólo puede estar situado en una fila como consecuen cia de una sentencia FETCH. Es posible que se produzca un error que haga que el estado del cursor sea imprevisible. Si la variable del lenguaje principal especificada es de tipo carácter y no es lo suficientemente grande para contener el re sultado, se asigna 'W' a SQLWARN1 en la SQLCA. La longitud real del resul tado se devuelve en la variable de indicador asociada con la variable del lenguaje principal, en el caso de que se proporcione una variable de indic ador. En el caso del mandato CRTSQLCI, cuando se especifi ca la opción *CNULRQD, la variable del lenguaje principal especificada ter mina en NUL y no es lo suficientemente grande para contener el resultado y el terminador NUL, sucede lo siguiente: � El resultado se trunca. � El último carácter es el terminador NUL. � Se asigna el valor 'W' a SQLWARN1 en la SQLCA. En el mandato CRTSQLCI, cuando se especifica la opc ión *NOCNULRQD, la variable del lenguaje principal termina en NUL y es lo suficientemente grande para contener el resultado pero no el termin ador NUL, sucede lo siguiente: � No se devuelve el terminador NUL. � Se asigna el valor 'N' a SQLWARN1 en la SQLCA.

DB2/400 Manual de Consulta SQL V3R7 Notas

© Copyright IBM Corp. 1995, 1996 5.30.7 - 1

Page 622: DB2/400 Manual de Consulta SQLmarce.com/docs/systems/manuales/db2_400_manual_consulta_sql_v3r7.pdf · VERSION Nota de Versión Segunda edición (noviembre de 1996) Este manual es

5.30.8 Ejemplo Tenemos dos tablas, ENCUESTA y ARCHIVO, que tienen estas columnas: +-------------------------------------------------- -------------------------------------------+ ¦ Nombre: ¦ ENCUESTA ¦ RECIBIDO ¦ OR IGEN ¦ TEMA ¦ TEXTO_ENTRADA¦ +--------------+---------------+---------------+--- ------------+---------------+--------------¦ ¦ Tipo ¦ char(8) ¦ indicación ¦ ch ar(8) ¦ char(64) ¦ varchar(4000)¦ ¦ ¦ no nulo ¦ de la hora ¦ no nulo ¦ no nulo ¦ no nulo ¦ ¦ ¦ ¦ no nulo ¦ ¦ ¦ ¦ +--------------+---------------+---------------+--- ------------+---------------+--------------¦ ¦ Descripción: ¦ Nombre de la ¦ Fecha y hora ¦ ID de usuario ¦ Tema de la ¦ Texto ¦ ¦ ¦ encuesta ¦ en que se ha ¦ de la persona ¦ encuesta ¦ añadido en ¦ ¦ ¦ ¦ recibido la ¦ qu e hace la ¦ ¦ esta tabla ¦ ¦ ¦ ¦ entrada ¦ en trada ¦ ¦ de entradas ¦ +-------------------------------------------------- -------------------------------------------+ La tabla ENCUESTA contiene un número de encuestas c on nombre. Cada una de estas encuestas contiene uno o más temas y cada tem a una o más entradas. Cuando un tema queda en desuso, sus entradas se sup rimen o se trasladan a la tabla ARCHIVO. El programa PL/I siguiente se utiliza para realizar el mantenimiento de la tabla ENCUESTA. Un usuario puede invocar el progra ma con uno de tres mandatos. Cada mandato aparece acompañado de una s erie de texto que puede encontrarse en la columna TEMA de las entradas para un determinado tema (no es necesario el valor TEMA entero). Los tres m andatos son: � 1 (cambia el contenido del valor TEMA por todas las entradas de este tema) � 2 (traslada todas las entradas de ese tema a la tabla ARCHIVO) � 3 (suprime todas las entradas de ese tema sin archivarlas). BORRADO: PROC OPTIONS(MAIN); DCL SIN_FIN BIT(1); EXEC SQL BEGIN DECLARE SECTION; DCL ACCION BINARY FIXED(15); /* 1=cambiar tema 2=archivo 3=suprimir */ DCL BUSCAR_ENCUESTA CHAR(8); DCL BUSCAR_TEMA CHAR(66) VARYING; DCL TEMA_NUEVO CHAR(64) VARYING; DCL ENCUESTA CHAR(8); DCL TSTMP CHAR(26); DCL PERSONA CHAR(8); DCL TEMA CHAR(64) VARYING; DCL TEXTO CHAR(2000) VARYING; EXEC SQL END DECLARE SECTION; EXEC SQL INCLUDE SQLCA; EXEC SQL WHENEVER NOT FOUND CONTINUE; EXEC SQL WHENEVER SQLWARNING CONTINUE; EXEC SQL WHENEVER SQLERROR GOTO COMPRERR; EXEC SQL CONNECT TO LAB3BCN; GET LIST (ACCION, BUSCAR_ENCUESTA, BUSCAR_TEMA, TEM A_NUEVO); BUSCAR_TEMA = '%' || BUSCAR_TEMA || '%'; EXEC SQL DECLARE CUR CURSOR FOR SELECT * FROM ENCUESTA WHERE ENCUESTA = :BUSCAR_ENCUESTA AND TEMA LIKE :BUSCAR_TEMA FOR UPDATE OF TEMA; EXEC SQL OPEN CUR; SIN_FIN = '1'B; DO WHILE (SIN_FIN); EXEC SQL FETCH CUR INTO :ENCUESTA, :TSTMP, :PERSONA, :TEMA, :TEXTO; IF SQLSTATE = '02000' THEN SIN_FIN = '0'B; ELSE DO; SELECT; WHEN (ACCION = 1) /* cambiar valor del tema */ EXEC SQL UPDATE ENCUESTA SET TEMA = :TEMA_NUEVO WHERE CURRENT OF CUR; WHEN (ACCION = 2) /* archivar entrada en otra tabla */ DO; EXEC SQL INSERT INTO ARCHIVO VALUES ( :ENCUESTA, :TSTMP, :PERSONA, :TEMA, :TEXTO); EXEC SQL DELETE FROM ENCUESTA WHERE CURRENT OF CUR; END; WHEN (ACCION = 3) /* suprimir tema */ EXEC SQL DELETE FROM ENCUESTA WHERE CURRENT OF CUR; END; /* de "select" */ END; /* de "else do" */ END; /* de "do while" */ ACABADO: EXEC SQL CLOSE CUR; EXEC SQL COMMIT WORK; RETURN; COMPRERR: DISPLAY ('Error inesperado-se restituirán los cambi os'); PUT SKIP LIST (SQLCA); EXEC SQL WHENEVER SQLERROR CONTINUE; /* continuar si hay error en retrotracción */ EXEC SQL ROLLBACK WORK; RETURN; END; /* BORRADO */

DB2/400 Manual de Consulta SQL V3R7 Ejemplo

© Copyright IBM Corp. 1995, 1996 5.30.8 - 1

Page 623: DB2/400 Manual de Consulta SQLmarce.com/docs/systems/manuales/db2_400_manual_consulta_sql_v3r7.pdf · VERSION Nota de Versión Segunda edición (noviembre de 1996) Este manual es

5.31 GRANT (Privilegios de paquete) Esta forma de la sentencia GRANT otorga privilegios sobre un paquete. Subtemas 5.31.1 Invocación 5.31.2 Autorización 5.31.3 Sintaxis 5.31.4 Descripción 5.31.5 Nota 5.31.6 Ejemplo

DB2/400 Manual de Consulta SQL V3R7 GRANT (Privilegios de paquete)

© Copyright IBM Corp. 1995, 1996 5.31 - 1

Page 624: DB2/400 Manual de Consulta SQLmarce.com/docs/systems/manuales/db2_400_manual_consulta_sql_v3r7.pdf · VERSION Nota de Versión Segunda edición (noviembre de 1996) Este manual es

5.31.1 Invocación Esta sentencia puede hospedarse en un programa de a plicación o emitirse interactivamente. Es una sentencia ejecutable que puede prepararse dinámicamente.

DB2/400 Manual de Consulta SQL V3R7 Invocación

© Copyright IBM Corp. 1995, 1996 5.31.1 - 1

Page 625: DB2/400 Manual de Consulta SQLmarce.com/docs/systems/manuales/db2_400_manual_consulta_sql_v3r7.pdf · VERSION Nota de Versión Segunda edición (noviembre de 1996) Este manual es

5.31.2 Autorización Los privilegios del ID de autorización de la senten cia deben incluir al menos uno de los privilegios siguientes: � Para cada paquete que se identifica en la senten cia: - Todos los privilegios especificados en la s entencia - La autorización del sistema *OBJMGT sobre e l paquete - La autorización del sistema *EXECUTE sobre la biblioteca que contiene el paquete � Autorización de administrador Si se especifica WITH GRANT OPTION, los privilegios del ID de autorización de la sentencia deben incluir al menos uno de los s iguientes: � Propiedad del paquete � Autorización de administrador

DB2/400 Manual de Consulta SQL V3R7 Autorización

© Copyright IBM Corp. 1995, 1996 5.31.2 - 1

Page 626: DB2/400 Manual de Consulta SQLmarce.com/docs/systems/manuales/db2_400_manual_consulta_sql_v3r7.pdf · VERSION Nota de Versión Segunda edición (noviembre de 1996) Este manual es

5.31.3 Sintaxis +-------------------------------------------------- ----------------------+ ¦ ¦ ¦ +- PRIVILEGES-+ (2) ¦ ¦ >-- GRANT---- ALL-------------------- ON PACKAGE------------------------> ¦ ¦ ¦ <-,------------+ ¦ ¦ ¦ ¦ (1) ¦ ¦ ¦ ¦ +---- EXECUTE----------+ ¦ ¦ +- ALTER------+ ¦ ¦ ¦ ¦ <-,--------------+ <-,------------------- --+ ¦ ¦ >---- nombre-paquete ---- TO----- nombre-autorización --------------------> ¦ ¦ +- PUBLIC--------------+ ¦ ¦ ¦ ¦ >------------------------------------------------ --------------------> ¦ ¦ +- WITH GRANT OPTION-+ ¦ ¦ ¦ ¦ Notas: ¦ ¦ (1) Se puede utilizar la palabra clave RUN como sinónimo de EXECUTE. ¦ ¦ ¦ ¦ (2) Se puede utilizar la palabra clave PROGRAM c omo sinónimo de ¦ ¦ PACKAGE. ¦ ¦ ¦ +-------------------------------------------------- ----------------------+

DB2/400 Manual de Consulta SQL V3R7 Sintaxis

© Copyright IBM Corp. 1995, 1996 5.31.3 - 1

Page 627: DB2/400 Manual de Consulta SQLmarce.com/docs/systems/manuales/db2_400_manual_consulta_sql_v3r7.pdf · VERSION Nota de Versión Segunda edición (noviembre de 1996) Este manual es

5.31.4 Descripción ALL o ALL PRIVILEGES Otorga uno o más privilegios. Los privilegios otorgados son todos los privilegios otorgables que posee el ID de autor ización de la sentencia sobre los paquetes especificados. Observe que otorgar ALL PRIVILEGES sobre un paquete no es lo mismo que otorgar la autorización de sistema *ALL. Si no utiliza ALL, debe emplear una o varias de las palabras claves que se indican a continuación. Cada una de ell as otorga el privilegio descrito. ALTER Otorga el privilegio de utilizar las sentencias COMMENT ON y LABEL ON. EXECUTE Otorga el privilegio para ejecutar sentencias e n un paquete. ON PACKAGE nombre-paquete Identifica los paquetes sobre los que va a otor gar el privilegio. El nombre-paquete debe identificar un paquete que exista en el servi dor actual. TO Indica a quién se otorgan los privilegios. nombre-autorización,... Lista uno o más ID de autorización. PUBLIC Otorga los privilegios a un conjunto de usu arios (ID de autorización). El conjunto consta de los usuarios a los qu e no se les ha otorgado de forma privada privilegios sobre el paque te. Por ejemplo, si se ha otorgado ALTER a PUBLIC y después se oto rga EXECUTE a HERNANDEZ, esta concesión privada impide qu e HERNANDEZ tenga el privilegio ALTER. WITH GRANT OPTION Permite que los nombres-autorización que se han especificado otorguen privilegios sobre los paquetes especificados en la cláusula ON a otros usuarios. Si se omite WITH GRANT OPTION, los nombres-autorización que se han especificado no pueden otorgar privilegios sobr e los paquetes especificados en la cláusula ON a otro usuario, a menos que hayan recibido dicha autorización de alguna otra fuen te (por ejemplo, de una concesión de autorización de sistema *OBJMGT).

DB2/400 Manual de Consulta SQL V3R7 Descripción

© Copyright IBM Corp. 1995, 1996 5.31.4 - 1

Page 628: DB2/400 Manual de Consulta SQLmarce.com/docs/systems/manuales/db2_400_manual_consulta_sql_v3r7.pdf · VERSION Nota de Versión Segunda edición (noviembre de 1996) Este manual es

5.31.5 Nota Las sentencias GRANT y REVOKE asignan y eliminan la s autorizaciones del sistema AS/400 sobre los objetos SQL. En la tabla siguiente se describen las autorizaciones del sistema AS/400 que correspon den a los privilegios SQL: +-------------------------------------------------- ----------------------+ ¦ Tabla 12. Privilegios otorgados a o revocados de los paquetes ¦ +-------------------------------------------------- ----------------------¦ ¦ Privilegio SQL ¦ Autorizaciones del sistema AS/400 ¦ ¦ ¦ correspondientes cuando se ¦ ¦ ¦ otorgan o se revocan de un ¦ ¦ ¦ paquete ¦ +------------------------------------+------------- ----------------------¦ ¦ ALL (Otorgar o revocar ALL ¦ *OBJALTER ¦ ¦ otorga o revoca únicamente los ¦ *OBJOPR ¦ ¦ privilegios del ID de autorización ¦ *EXECUTE ¦ ¦ que tiene la sentencia) ¦ *OBJMGT (Sól o revocar) ¦ +------------------------------------+------------- ----------------------¦ ¦ ALTER ¦ *OBJALTER ¦ +------------------------------------+------------- ----------------------¦ ¦ EXECUTE ¦ *EXECUTE ¦ ¦ ¦ *OBJOPR ¦ +------------------------------------+------------- ----------------------¦ ¦ WITH GRANT OPTION ¦ *OBJMGT ¦ +-------------------------------------------------- ----------------------+

DB2/400 Manual de Consulta SQL V3R7 Nota

© Copyright IBM Corp. 1995, 1996 5.31.5 - 1

Page 629: DB2/400 Manual de Consulta SQLmarce.com/docs/systems/manuales/db2_400_manual_consulta_sql_v3r7.pdf · VERSION Nota de Versión Segunda edición (noviembre de 1996) Este manual es

5.31.6 Ejemplo Otorgar el privilegio EXECUTE sobre PACKAGE DATOSCO RP.PAQA a PUBLIC. GRANT EXECUTE ON PACKAGE DATOSCORP.PAQA TO PUBLIC

DB2/400 Manual de Consulta SQL V3R7 Ejemplo

© Copyright IBM Corp. 1995, 1996 5.31.6 - 1

Page 630: DB2/400 Manual de Consulta SQLmarce.com/docs/systems/manuales/db2_400_manual_consulta_sql_v3r7.pdf · VERSION Nota de Versión Segunda edición (noviembre de 1996) Este manual es

5.32 GRANT (Privilegios de tabla) Esta forma de la sentencia GRANT otorga privilegios sobre tablas o vistas. Subtemas 5.32.1 Invocación 5.32.2 Autorización 5.32.3 Sintaxis 5.32.4 Descripción 5.32.5 Notas 5.32.6 Ejemplos

DB2/400 Manual de Consulta SQL V3R7 GRANT (Privilegios de tabla)

© Copyright IBM Corp. 1995, 1996 5.32 - 1

Page 631: DB2/400 Manual de Consulta SQLmarce.com/docs/systems/manuales/db2_400_manual_consulta_sql_v3r7.pdf · VERSION Nota de Versión Segunda edición (noviembre de 1996) Este manual es

5.32.1 Invocación Esta sentencia puede hospedarse en un programa de a plicación o emitirse interactivamente. Es una sentencia ejecutable que puede prepararse dinámicamente.

DB2/400 Manual de Consulta SQL V3R7 Invocación

© Copyright IBM Corp. 1995, 1996 5.32.1 - 1

Page 632: DB2/400 Manual de Consulta SQLmarce.com/docs/systems/manuales/db2_400_manual_consulta_sql_v3r7.pdf · VERSION Nota de Versión Segunda edición (noviembre de 1996) Este manual es

5.32.2 Autorización Los privilegios del ID de autorización de la senten cia deben incluir al menos uno de los siguientes: � Para cada tabla o vista identificada en la sente ncia: - Todos los privilegios especificados en la s entencia - La autorización del sistema *OBJMGT sobre l a tabla o la vista - La autorización del sistema *EXECUTE sobre la biblioteca que contiene la tabla o la vista � Autorización de administrador Si se especifica WITH GRANT OPTION, los privilegios del ID de autorización de la sentencia deben incluir al menos uno de los s iguientes: � Propiedad de la tabla � Autorización de administrador

DB2/400 Manual de Consulta SQL V3R7 Autorización

© Copyright IBM Corp. 1995, 1996 5.32.2 - 1

Page 633: DB2/400 Manual de Consulta SQLmarce.com/docs/systems/manuales/db2_400_manual_consulta_sql_v3r7.pdf · VERSION Nota de Versión Segunda edición (noviembre de 1996) Este manual es

5.32.3 Sintaxis +-------------------------------------------------- ----------------------+ ¦ ¦ ¦ +- PRIVILEGES-+ +- TABLE-+ ¦ ¦ >-- GRANT---- ALL-------------------- ON--------------------------------> ¦ ¦ ¦ <-,------------+ ¦ ¦ ¦ +---- ALTER------------+ ¦ ¦ +- DELETE-----¦ ¦ ¦ +- INDEX------¦ ¦ ¦ +- INSERT-----¦ ¦ ¦ +- REFERENCES-¦ ¦ ¦ +- SELECT-----¦ ¦ ¦ +- UPDATE-----+ ¦ ¦ ¦ ¦ <-,--------------+ <-,------------------- --+ ¦ ¦ >----- nombre-tabla ----- TO----- nombre-autorización --------------------> ¦ ¦ +- nombre-vista -+ +- PUBLIC--------------+ ¦ ¦ ¦ ¦ >------------------------------------------------ --------------------> ¦ ¦ +- WITH GRANT OPTION-+ ¦ ¦ ¦ +-------------------------------------------------- ----------------------+

DB2/400 Manual de Consulta SQL V3R7 Sintaxis

© Copyright IBM Corp. 1995, 1996 5.32.3 - 1

Page 634: DB2/400 Manual de Consulta SQLmarce.com/docs/systems/manuales/db2_400_manual_consulta_sql_v3r7.pdf · VERSION Nota de Versión Segunda edición (noviembre de 1996) Este manual es

5.32.4 Descripción ALL o ALL PRIVILEGES Otorga uno o más privilegios. Los privilegios otorgados son todos los privilegios otorgables que posee el ID de autor ización de la sentencia sobre las tablas o vistas especificadas. Obser ve que otorgar ALL PRIVILEGES sobre una tabla o una vista no es lo mismo que otorgar la autorización de sistema *ALL. Si no utiliza ALL, debe emplear una o varias de las palabras claves que se indican a continuación. Cada una de est as palabras claves otorga el privilegio descrito, pero sólo a la t abla o vista indicada en la cláusula ON. Por ejemplo, los privilegio s UPDATE, DELETE y INSERT no se aplican a una vista de sólo lectur a. ALTER Otorga el privilegio de utilizar la sentencia A LTER TABLE en las tablas. Otorga el privilegio de utilizar las s entencias COMMENT ON y LABEL ON en las tablas y vistas. DELETE Otorga el privilegio de utilizar la sentencia D ELETE. DELETE no se puede otorgar a las vistas de sólo lectura. INDEX Otorga el privilegio de utilizar la sentencia C REATE INDEX. Este privilegio no puede otorgarse sobre una vista. INSERT Otorga el privilegio de utilizar la sentencia I NSERT. INSERT no se puede otorgar a una vista que no permita las in serciones. REFERENCES Otorga el privilegio de añadir una restricción de referencia en la que la tabla es una tabla padre. Este privilegio s e puede otorgar sobre una vista, pero no se utiliza para las vistas. SELECT Otorga el privilegio de utilizar las sentencias SELECT o CREATE VIEW. UPDATE Otorga el privilegio de utilizar la sentencia U PDATE. UPDATE no se puede otorgar a una vista que no permita actual izaciones. ON nombre-tabla o nombre-vista,... Identifica las tablas o las vistas sobre las qu e otorga privilegios. El nombre-tabla o nombre-vista debe identificar una tabla o vista que exista en el servidor actual. TO Indica a quién se otorgan los privilegios. nombre-autorización,... Lista uno o más ID de autorización. PUBLIC Otorga los privilegios a un conjunto de usu arios (ID de autorización). El conjunto consta de los usuarios a los qu e no se les han otorgado de forma privada privilegios sobre la tabla o vista. Por ejemplo, si se ha otorgado SELECT a PUBLIC y después se otorga UPDATE a HERNANDEZ, esta concesión privada impide que HERNANDEZ tenga el privilegio SELECT. WITH GRANT OPTION Permite que los nombres-autorización que se han especificado otorguen privilegios sobre las tablas y vistas especific adas en la cláusula ON a otros usuarios. Si se omite WITH GRANT OPTION, los nombres-autorización especificados no podrán otorgar privilegios sobre las tablas y las vistas especificadas en la cláusula ON, a menos que ha yan recibido dicha autorización de cualquier otra fuente (por ejem plo, al habérseles otorgado la autorización del sistema *OBJMGT).

DB2/400 Manual de Consulta SQL V3R7 Descripción

© Copyright IBM Corp. 1995, 1996 5.32.4 - 1

Page 635: DB2/400 Manual de Consulta SQLmarce.com/docs/systems/manuales/db2_400_manual_consulta_sql_v3r7.pdf · VERSION Nota de Versión Segunda edición (noviembre de 1996) Este manual es

5.32.5 Notas Las sentencias GRANT y REVOKE asignan y eliminan la s autorizaciones del sistema AS/400 sobre los objetos SQL. En la tabla siguiente se describen las autorizaciones del sistema AS/400 que correspon den a los privilegios SQL cuando se otorgan a una tabla. La columna de l a izquierda contiene el privilegio SQL. La columna de la derecha contiene las autorizaciones del sistema AS/400 equivalentes que se otorgan o se rev ocan. +-------------------------------------------------- ----------------------+ ¦ Tabla 13. Privilegios otorgados a o revocados de las tablas ¦ +-------------------------------------------------- ----------------------¦ ¦ Privilegio SQL ¦ Autorizaciones AS/400 ¦ ¦ ¦ correspondientes cuando se ¦ ¦ ¦ otorgan o se revocan de una tabla ¦ +------------------------------------+------------- ----------------------¦ ¦ ALL (otorgar o revocar ALL sólo ¦ *OBJALTER (30) ¦ ¦ otorga o revoca los privilegios ¦ *OBJMGT (Sól o revocar) ¦ ¦ que tiene el ID de autorización de ¦ *OBJOPR ¦ ¦ la sentencia) ¦ *OBJREF ¦ ¦ ¦ *ADD ¦ ¦ ¦ *DLT ¦ ¦ ¦ *READ ¦ ¦ ¦ *UPD ¦ +------------------------------------+------------- ----------------------¦ ¦ ALTER ¦ *OBJALTER (31) ¦ +------------------------------------+------------- ----------------------¦ ¦ DELETE ¦ *OBJOPR ¦ ¦ ¦ *DLT ¦ +------------------------------------+------------- ----------------------¦ ¦ INDEX ¦ *OBJALTER (31) ¦ +------------------------------------+------------- ----------------------¦ ¦ INSERT ¦ *OBJOPR ¦ ¦ ¦ *ADD ¦ +------------------------------------+------------- ----------------------¦ ¦ REFERENCES ¦ *OBJREF (31) ¦ +------------------------------------+------------- ----------------------¦ ¦ SELECT ¦ *OBJOPR ¦ ¦ ¦ *READ ¦ +------------------------------------+------------- ----------------------¦ ¦ UPDATE ¦ *OBJOPR ¦ +------------------------------------+------------- ----------------------¦ ¦ WITH GRANT OPTION ¦ *OBJMGT ¦ +-------------------------------------------------- ----------------------+ En la tabla siguiente se describen las autorizacion es del sistema AS/400 que corresponden a los privilegios SQL cuando se ot organ a una vista. La columna de la izquierda contiene el privilegio SQL. La columna central contiene las autorizaciones del sistema AS/400 equi valentes que se otorgan o se revocan de la propia vista. La columna de la derecha contiene las autorizaciones del sistema AS/400 que se otorgan a todas las tablas y vistas a las que se hace referencia en la definició n de las vistas y, si se hace referencia a una vista, las autorizaciones que se otorgan a todas las tablas y vistas a las que se hace referencia en su definición, y así sucesivamente. (32) Si una vista hace referencia a más de una tabla o v ista, las autorizaciones del sistema *DLT, *ADD y *UPD solame nte se otorgan a la primera tabla o lista de la subselección de la defi nición de la vista. La autorización del sistema *READ se otorga a todas la s tablas y vistas a las que se hace referencia en la definición de la vista . Si se va a otorgar más de una autorización del sist ema con un privilegio SQL, y alguna de las autorizaciones no se puede oto rgar, se emitirá un aviso y no se otorgará ninguna autorización para di cho privilegio. A diferencia de GRANT, REVOKE sólo revoca las autoriz aciones del sistema a la vista. No se revocan las autorizaciones del sis tema de las tablas y vistas a las que se hace referencia. +-------------------------------------------------- ----------------------+ ¦ Tabla 14. Privilegios otorgados a o revocados de las vistas ¦ +-------------------------------------------------- ----------------------¦ ¦ ¦ ¦ Autorizaciones AS/400 ¦ ¦ ¦ ¦ correspondientes ¦ ¦ ¦ Autorizaciones AS/400 ¦ otorgadas o revocadas ¦ ¦ ¦ correspondientes ¦ de tablas y vistas a ¦ ¦ ¦ otorgadas o revocadas ¦ las que se hace ¦ ¦ Privilegio SQL ¦ de una vista ¦ referencia ¦ +-----------------------+------------------------+- ----------------------¦ ¦ ALL (GRANT o REVOKE ¦ *OBJALTER ¦ *ADD ¦ ¦ de ALL sólo otorga o ¦ *OBJMGT (Sólo revocar) ¦ *DLT ¦ ¦ revoca los ¦ *OBJOPR ¦ *READ ¦ ¦ privilegios que tiene ¦ *OBJREF ¦ *UPD ¦ ¦ el ID de autorización ¦ *ADD ¦ ¦ ¦ de la sentencia) ¦ *DLT ¦ ¦ ¦ ¦ *READ ¦ ¦ ¦ ¦ *UPD ¦ ¦ +-----------------------+------------------------+- ----------------------¦ ¦ ALTER ¦ *OBJALTER (33) ¦ Ninguna ¦ +-----------------------+------------------------+- ----------------------¦ ¦ DELETE ¦ *OBJOPR ¦ *DLT ¦ ¦ ¦ *DLT ¦ ¦ +-----------------------+------------------------+- ----------------------¦ ¦ INDEX ¦ No se aplica ¦ No se aplica ¦ +-----------------------+------------------------+- ----------------------¦ ¦ INSERT ¦ *OBJOPR ¦ *ADD ¦ ¦ ¦ *ADD ¦ ¦

DB2/400 Manual de Consulta SQL V3R7 Notas

© Copyright IBM Corp. 1995, 1996 5.32.5 - 1

Page 636: DB2/400 Manual de Consulta SQLmarce.com/docs/systems/manuales/db2_400_manual_consulta_sql_v3r7.pdf · VERSION Nota de Versión Segunda edición (noviembre de 1996) Este manual es

+-----------------------+------------------------+- ----------------------¦ ¦ REFERENCES ¦ *OBJREF (33) ¦ Ninguna ¦ +-----------------------+------------------------+- ----------------------¦ ¦ SELECT ¦ *OBJOPR ¦ *READ ¦ ¦ ¦ *READ ¦ ¦ +-----------------------+------------------------+- ----------------------¦ ¦ UPDATE ¦ *OBJOPR ¦ *UPD ¦ ¦ ¦ *UPD ¦ ¦ +-----------------------+------------------------+- ----------------------¦ ¦ WITH GRANT OPTION ¦ *OBJMGT ¦ Ninguna ¦ +-------------------------------------------------- ----------------------+ (30) Los privilegios SQL INDEX y ALTER corresponde n a la misma autorización de sistema *OBJALTER. Si se otorg a INDEX y ALTER, no se proporcionarán al usuario autoriza ciones adicionales. (31) Si se otorga WITH GRANT OPTION a un usuario, éste también podrá realizar las funciones proporcionadas por la autorización ALTER y REFERENCES. (32) Los derechos especificados sólo se otorgan a las tablas y vistas a las que se hace referencia en la defin ición de la vista si el usuario todavía no ha adquirido los derechos de otra fuente de autorización, por ejemplo la aut orización pública. (33) Si se concede WITH GRANT OPTION a un usuario, éste también podrá efectuar las funciones proporcionadas por la autorización ALTER y REFERENCES.

DB2/400 Manual de Consulta SQL V3R7 Notas

© Copyright IBM Corp. 1995, 1996 5.32.5 - 2

Page 637: DB2/400 Manual de Consulta SQLmarce.com/docs/systems/manuales/db2_400_manual_consulta_sql_v3r7.pdf · VERSION Nota de Versión Segunda edición (noviembre de 1996) Este manual es

5.32.6 Ejemplos Ejemplo 1 : Suponga que tiene autorización para otorgar todo s los privilegios que posee sobre la tabla POESIA_CR (de la colección LAURA) a PUBLIC. GRANT ALL ON LAURA.POESIA_CR TO PUBLIC Ejemplo 2 : Otorgar los privilegios adecuados sobre la tabla AGENDA para que ROSA y EMMA puedan leerla e insertar entradas n uevas. No se les permite modificar ni eliminar las entradas existent es. GRANT SELECT, INSERT ON AGENDA TO ROSA, EMMA

DB2/400 Manual de Consulta SQL V3R7 Ejemplos

© Copyright IBM Corp. 1995, 1996 5.32.6 - 1

Page 638: DB2/400 Manual de Consulta SQLmarce.com/docs/systems/manuales/db2_400_manual_consulta_sql_v3r7.pdf · VERSION Nota de Versión Segunda edición (noviembre de 1996) Este manual es

5.33 INCLUDE La sentencia INCLUDE inserta declaraciones o senten cias en un programa fuente. Subtemas 5.33.1 Invocación 5.33.2 Autorización 5.33.3 Sintaxis 5.33.4 Descripción 5.33.5 Notas 5.33.6 Ejemplo

DB2/400 Manual de Consulta SQL V3R7 INCLUDE

© Copyright IBM Corp. 1995, 1996 5.33 - 1

Page 639: DB2/400 Manual de Consulta SQLmarce.com/docs/systems/manuales/db2_400_manual_consulta_sql_v3r7.pdf · VERSION Nota de Versión Segunda edición (noviembre de 1996) Este manual es

5.33.1 Invocación Esta sentencia sólo puede hospedarse en un programa de aplicación. No es una sentencia ejecutable. No debe especificarse en REXX.

DB2/400 Manual de Consulta SQL V3R7 Invocación

© Copyright IBM Corp. 1995, 1996 5.33.1 - 1

Page 640: DB2/400 Manual de Consulta SQLmarce.com/docs/systems/manuales/db2_400_manual_consulta_sql_v3r7.pdf · VERSION Nota de Versión Segunda edición (noviembre de 1996) Este manual es

5.33.2 Autorización | El ID de autorización de la sentencia debe tener la s autorizaciones del| sistema *OBJOPR y *READ en el archivo que contiene el miembro.

DB2/400 Manual de Consulta SQL V3R7 Autorización

© Copyright IBM Corp. 1995, 1996 5.33.2 - 1

Page 641: DB2/400 Manual de Consulta SQLmarce.com/docs/systems/manuales/db2_400_manual_consulta_sql_v3r7.pdf · VERSION Nota de Versión Segunda edición (noviembre de 1996) Este manual es

5.33.3 Sintaxis +-------------------------------------------------- ----------------------+ ¦ ¦ ¦ >>-- INCLUDE---- SQLCA------------------------------------------------>< ¦ ¦ +- SQLDA----------¦ ¦ ¦ +- nombre-miembro -+ ¦ ¦ ¦ +-------------------------------------------------- ----------------------+

DB2/400 Manual de Consulta SQL V3R7 Sintaxis

© Copyright IBM Corp. 1995, 1996 5.33.3 - 1

Page 642: DB2/400 Manual de Consulta SQLmarce.com/docs/systems/manuales/db2_400_manual_consulta_sql_v3r7.pdf · VERSION Nota de Versión Segunda edición (noviembre de 1996) Este manual es

5.33.4 Descripción SQLCA Indica que se va a incluir la descripción de un área de comunicación SQL (SQLCA). No debe especificarse INCLUDE SQL CA más de una vez en el mismo programa. Tampoco debe especificarse si el programa contiene un SQLCODE o un SQLSTATE autónomos. Se puede especificar una SQLCA para C, COBOL y PL/I. Si no se especifica la SQLCA, la variable SQLCODE o SQLS TATE debe aparecer en el programa. Para obtener más información, con sulte el apartado "Códigos de retorno SQL" en el tema 5.2 . La SQLCA no debe especificarse para programas R PG. En los programas RPG, el precompilador incluye automáticamente l a SQLCA. Para obtener una descripción de la SQLCA, véase el Apéndice B, "Área de comunicaciones SQL" en el tema B.0 . SQLDA Indica que se va a incluir la descripción de un área de descriptor SQL (SQLDA). Se puede especificar INCLUDE SQLDA en C, COBOL, PL/I e ILE RPG/400. Para obtener una descripción de la SQLDA, consu lte el Apéndice C, "Área de descriptor SQL (SQLDA)" en el tema C.0 . nombre-miembro Identifica un miembro que se va a incluir del a rchivo especificado en el parámetro INCFILE del mandato CRTSQL xxx . Este miembro puede contener cualquier sentencia del lenguaje principal y sentencias SQL que no sean INCLUDE. En COBOL , INCLUDE nombre-miembro sólo puede especificarse en la DATA DIVISION o en la PROCEDURE DIVISION. Cuando el programa se precompila, la sentencia INCL UDE se sustituye por sentencias fuente. La sentencia INCLUDE se debe especificar en un punt o del programa en el que el compilador pueda aceptar las sentencias fuen te resultantes.

DB2/400 Manual de Consulta SQL V3R7 Descripción

© Copyright IBM Corp. 1995, 1996 5.33.4 - 1

Page 643: DB2/400 Manual de Consulta SQLmarce.com/docs/systems/manuales/db2_400_manual_consulta_sql_v3r7.pdf · VERSION Nota de Versión Segunda edición (noviembre de 1996) Este manual es

5.33.5 Notas Si el CCSID del archivo fuente especificado en el p arámetro SRCFILE es distinto del CCSID del archivo fuente especificado en el parámetro INCFILE, el fuente de la sentencia INCLUDE se conve rtirá al CCSID del archivo fuente.

DB2/400 Manual de Consulta SQL V3R7 Notas

© Copyright IBM Corp. 1995, 1996 5.33.5 - 1

Page 644: DB2/400 Manual de Consulta SQLmarce.com/docs/systems/manuales/db2_400_manual_consulta_sql_v3r7.pdf · VERSION Nota de Versión Segunda edición (noviembre de 1996) Este manual es

5.33.6 Ejemplo Incluir un área de comunicación SQL en un programa PL/I. EXEC SQL INCLUDE SQLCA;

DB2/400 Manual de Consulta SQL V3R7 Ejemplo

© Copyright IBM Corp. 1995, 1996 5.33.6 - 1

Page 645: DB2/400 Manual de Consulta SQLmarce.com/docs/systems/manuales/db2_400_manual_consulta_sql_v3r7.pdf · VERSION Nota de Versión Segunda edición (noviembre de 1996) Este manual es

5.34 INSERT La sentencia INSERT inserta filas en una tabla o vi sta. Al insertar una fila en una vista también se inserta la fila en la tabla en la que se basa la vista. Esta sentencia tiene tres formatos: � El formato INSERT utilizando VALUES se utiliza para insertar una sola fila en la tabla o vista utilizando los valores proporcionados o a los que se hace referencia. � El formato INSERT utilizando SELECT se utiliza para insertar una o más filas en la tabla o vista utilizando valores de otras tablas o vistas. � El formato INSERT utilizando n ROWS se utiliza para insertar varias filas en la tabla o vista utilizando los valore s proporcionados en una matriz-estructura-leng-princ. Subtemas 5.34.1 Invocación 5.34.2 Autorización 5.34.3 Sintaxis 5.34.4 Descripción 5.34.5 insertar-múltiples-filas 5.34.6 Reglas de INSERT 5.34.7 Notas 5.34.8 Ejemplos

DB2/400 Manual de Consulta SQL V3R7 INSERT

© Copyright IBM Corp. 1995, 1996 5.34 - 1

Page 646: DB2/400 Manual de Consulta SQLmarce.com/docs/systems/manuales/db2_400_manual_consulta_sql_v3r7.pdf · VERSION Nota de Versión Segunda edición (noviembre de 1996) Este manual es

5.34.1 Invocación Esta sentencia puede hospedarse en un programa de a plicación o emitirse interactivamente. Es una sentencia ejecutable que se puede preparar de forma dinámica a excepción del formato n ROWS, que debe corresponder a una sentencia estática hospedada en un programa de apli cación. El formato n ROWS no se puede utilizar en los procedimientos REX X.

DB2/400 Manual de Consulta SQL V3R7 Invocación

© Copyright IBM Corp. 1995, 1996 5.34.1 - 1

Page 647: DB2/400 Manual de Consulta SQLmarce.com/docs/systems/manuales/db2_400_manual_consulta_sql_v3r7.pdf · VERSION Nota de Versión Segunda edición (noviembre de 1996) Este manual es

5.34.2 Autorización Los privilegios del ID de autorización de la senten cia deben incluir al menos uno de los siguientes: � Para la tabla o la vista mencionada en la senten cia: - El privilegio INSERT sobre la tabla o vista , y - La autorización del sistema *EXECUTE sobre la biblioteca que contiene la tabla o la vista � Autorización de administrador El ID de autorización de la sentencia tiene el priv ilegio INSERT sobre una tabla si: � Es el propietario de la tabla. � Se le ha otorgado el privilegio INSERT sobre la tabla, o � Se le han otorgado las autorizaciones del sistem a *OBJOPR y *ADD sobre la tabla. El ID de autorización de la sentencia tiene el priv ilegio INSERT sobre una vista cuando: (34) � Se le ha otorgado el privilegio INSERT sobre la vista, o � Se le han otorgado las autorizaciones del sistem a *OBJOPR y *ADD sobre la vista, y la autorización del sistema *ADD so bre la primera tabla o vista que figura en la primera cláusula FROM de la definición de la vista; si ésta es una vista, la autorización de l sistema *ADD sobre la primera tabla o vista que hay en la primera clá usula FROM de dicha definición de vista, y así sucesivamente. Si se especifica una subselección, los privilegios del ID de autorización de la sentencia también deben incluir uno de los pr ivilegios siguientes: � Para cada tabla o vista mencionada en la subsele cción: - El privilegio SELECT sobre la tabla o vista , y - La autorización del sistema *EXECUTE sobre la biblioteca que contiene la tabla o la vista � Autorización de administrador El ID de autorización de la sentencia tiene el priv ilegio SELECT sobre una tabla si: � Es el propietario de la tabla. � Se le ha otorgado el privilegio SELECT sobre la tabla, o � Se le han otorgado las autorizaciones del sistem a *OBJOPR y *READ sobre la tabla El ID de autorización de la sentencia tiene el priv ilegio SELECT sobre una vista si: � Es el propietario de la vista, � Se le ha otorgado el privilegio SELECT sobre la vista, o � Se le han otorgado las autorizaciones del sistem a *OBJOPR y *READ sobre la vista y la autorización del sistema *R EAD sobre todas las tablas y vistas de las que depende esta vista d irecta o indirectamente. Es decir, sobre todas las tabl as y vistas a las que se hace referencia en la definición de la vista , y si se hace referencia a una vista, sobre todas las tablas y vistas a las que se hace referencia en la definición de la misma, y así sucesivamente. (34) Cuando se crea una vista, el propietario no a dquiere necesariamente el privilegio INSERT sobre la vi sta. El propietario solamente adquiere dicho privilegio si la vista permite que se realicen inserciones y el propie tario también dispone del privilegio INSERT sobre la primera tabla a la que se hace referencia en la subselección.

DB2/400 Manual de Consulta SQL V3R7 Autorización

© Copyright IBM Corp. 1995, 1996 5.34.2 - 1

Page 648: DB2/400 Manual de Consulta SQLmarce.com/docs/systems/manuales/db2_400_manual_consulta_sql_v3r7.pdf · VERSION Nota de Versión Segunda edición (noviembre de 1996) Este manual es

5.34.3 Sintaxis +-------------------------------------------------- --------------------------------------------------- -----------------+ ¦ ¦ ¦ >>-- INSERT INTO ---- nombre-tabla --------------------------------------------------- ---------------------------------> ¦ ¦ +- nombre-vista -+ ¦ <-,----------+ ¦ ¦ ¦ +-(---- nombre-col ----)-+ ¦ ¦ ¦| ¦ <-,-------------------+ ¦| ¦ >------ VALUES--(----- constante -------------)------------------------------------- --------------------------------->< ¦| ¦ ¦ ¦ +- var-leng-princ ----¦ ¦ +- cláusula-isolation -+ ¦ ¦| ¦ ¦ ¦ +- NULL--------------¦ ¦ ¦ ¦| ¦ ¦ ¦ +- registro-especial -+ ¦ ¦ ¦| ¦ ¦ +- insertar-múltiples-filas --------------+ ¦ ¦| ¦ +- sentencia-select --------------------------------------------------+ ¦ ¦ ¦ ¦ insertar-múltiples-filas: ¦ ¦ +---- entero ------------ ROWS-- VALUES--(-- matriz-estructura-leng-princ --)--------------------------------------------¦ ¦ ¦ +- var-leng-princ -+ ¦ ¦ ¦ +-------------------------------------------------- --------------------------------------------------- -----------------+

DB2/400 Manual de Consulta SQL V3R7 Sintaxis

© Copyright IBM Corp. 1995, 1996 5.34.3 - 1

Page 649: DB2/400 Manual de Consulta SQLmarce.com/docs/systems/manuales/db2_400_manual_consulta_sql_v3r7.pdf · VERSION Nota de Versión Segunda edición (noviembre de 1996) Este manual es

5.34.4 Descripción INTO nombre-tabla o nombre-vista Identifica el objeto de la operación de inserci ón. El nombre debe identificar una tabla o vista que exista en el servidor actual, pero no debe identificar una tabla de catálogo, una vista de una tabla de catálogo o una vista de sólo lectura. En una columna de vista no se puede insertar ni ngún valor derivado de: � Una constante, expresión o función escalar. � La misma columna de tabla base como otras co lumnas de la vista. Si el objeto de la operación de inserción es un a vista con dichas columnas, se deberá especificar una lista con l os nombres de columnas, un lista donde no se debe identificar dichas co lumnas. (nombre-columna,...) Especifica las columnas para las que se proporc ionan valores de inserción. Los nombres deben ser no calificado s y tienen que identificar una columna de la tabla o vista. L a misma columna no debe identificarse más de una vez. No se debe ident ificar una columna que no puede aceptar valores de inserción. Si se omite la lista de columnas, se está espec ificando implícitamente una lista en la que cada columna de la tabla o vista se identifica de izquierda a derecha. Esta lista se establece a l preparar la sentencia y, por lo tanto, no incluye columnas añadidas a una tabla después de haber preparado la sentencia. Si la sentencia INSERT está hospedada en una ap licación y la tabla o vista a la que se hace referencia existe cuando se crea el programa, dicha sentencia estará preparada en el momento de la creación del programa. De lo contrario, la sentencia se pre para la primera vez que se ejecuta la sentencia INSERT de forma satisfa ctoria. VALUES Especifica una fila nueva como lista de valores . Todas las variables del lenguaje principal de la cláusula deben ide ntificar una estructura o variable del lenguaje principal que esté decl arada según las reglas de declaración de las estructuras y las variabl es del lenguaje principal. En el formato operativo de la sente ncia, una referencia a una estructura del lenguaje principal se sustit uye por una referencia a cada una de sus variables. El número de valores de la cláusula VALUES debe ser igual al número de nombres de la lista de columnas. Se inserta el primer valor en la primera columna de la lista, el segundo valor e n la segunda columna y así sucesivamente. Para obtener una explicación acerca de las constantes y las variables del lenguaje principal , véase el Capítulo 2 . Para ver una descripción del registro especial , remítase al apartado "Registros especiales" en el tema 2.9 . NULL especifica el valor nulo. sentencia-select Especifica un conjunto de filas nuevas en forma de la tabla de resultados de una sentencia-select. Las cláusu las FOR FETCH ONLY, FOR UPDATE y OPTIMIZE no son válidas para una sente ncia-select que se utilice con inserciones. Si se especifica una cláusula ORDER BY en la sentencia-select, las filas se insertan según l os valores de las columnas identificadas en la cláusula ORDER BY. La sentencia-select puede generar valores media nte la combinación de dos tablas de resultados con los operadores UNI ON o UNION ALL. Se pueden insertar una, más de una o ninguna fila al utilizar la sentencia-select. Si no se inserta ninguna fil a, se establece SQLCODE en +100 y SQLSTATE en '02000'. El número de columnas de la tabla de resultados debe ser igual al número de nombres de la lista de columnas. El valor de la primera columna de resultados se inserta en la primera columna de la lista, el segundo valor en la segunda columna y así suces ivamente. Para obtener una explicación de la sentencia-select, consult e el Capítulo 4, "Consultas" en el tema 4.0 . cláusula-isolation Especifica el nivel de aislamiento que desea ut ilizar para la sentencia INSERT. Para obtener una explicación de la cláusula-isolation, consulte el Capítulo 4, "Consultas" en el tema 4.0 .

DB2/400 Manual de Consulta SQL V3R7 Descripción

© Copyright IBM Corp. 1995, 1996 5.34.4 - 1

Page 650: DB2/400 Manual de Consulta SQLmarce.com/docs/systems/manuales/db2_400_manual_consulta_sql_v3r7.pdf · VERSION Nota de Versión Segunda edición (noviembre de 1996) Este manual es

5.34.5 insertar-múltiples-filas entero o var-leng-princ ROWS Especifica el número de filas que se van a inse rtar. Si se especifica una var-leng-princ, ésta debe ser numérica con escala cero y no puede incluir una variable de indicador. VALUES (matriz-estructura-leng-princ) Especifica un conjunto de filas nuevas en forma de matriz de estructuras del lenguaje principal. La matriz de la estructura del lenguaje principal debe declararse en el progra ma según las reglas de declaración de las matrices de estructuras del lenguaje principal. El número de variables de la estructura del len guaje principal debe ser igual a la cantidad de nombres que hay en l a lista de columnas. La primera estructura del lenguaje principal de la matriz corresponde a la primera fila, la segunda estructura del le nguaje principal a la segunda fila, y así sucesivamente. Además, la primera variable de la estructura del lenguaje principal corresponde a la primera columna de la fila, la segunda variable de la estructura d el lenguaje principal corresponde a la segunda columna de la fila, y así sucesivamente. Para obtener una explicación de las matrices de las estructuras del lenguaje principal, consulte el apartado "Matrices de estructuras del lenguaje principal en C, COBOL, PL/I y RPG" en el t ema 2.13 .

DB2/400 Manual de Consulta SQL V3R7 insertar-múltiples-filas

© Copyright IBM Corp. 1995, 1996 5.34.5 - 1

Page 651: DB2/400 Manual de Consulta SQLmarce.com/docs/systems/manuales/db2_400_manual_consulta_sql_v3r7.pdf · VERSION Nota de Versión Segunda edición (noviembre de 1996) Este manual es

5.34.6 Reglas de INSERT Valores por omisión El valor insertado en cualquier columna no pres ente en la lista de columnas es el valor por omisión de la columna. Las columnas sin un valor por omisión deber estar incluidas en la l ista de columnas. Igualmente, si efectúa una inserción en una vis ta, el valor por omisión se inserta en las columnas de la tabla base que no están incluidas en la vista. Por lo tanto, todas las columnas de la tabla base que no están en la vista deben tener valor es por omisión. Asignación Los valores de inserción se asignan a las colum nas según las reglas de asignación descritas en el el Capítulo 2 . Validez Si la tabla identificada o la tabla base de la vista identificada tiene uno o más índices exclusivos o restriccio nes exclusivas, cada fila insertada en la tabla deberá adaptarse a l as restricciones impuestas por dichos índices. Los índices y restricciones exclusivos se compr ueban al final de la sentencia a menos que se especifique COMMIT(*NO NE). En el caso de una inserción de varias filas, esto sucedería despu és de que todas las filas se hubieran insertado y se hubieran dispa rado todos los desencadenantes. Si se especifica COMMIT(*NONE ), la comprobación se lleva a acabo a medida que se inserta cada fila . Si se identifica una vista, las filas insertada s deben ajustarse a todas las WITH CHECK OPTION aplicables. Para o btener más información, consulte el apartado "CREATE VIEW" en el tema 5.17 . Desencadenantes Si la tabla identificada o la tabla base de la vista identificada tiene un desencadenante de inserción, se dispar a dicho desencadenante para cada fila insertada. Integridad de referencia Los valores de inserción que no sean nulos de u na clave foránea deben ser iguales a algún valor de la clave padre de la tabla padre en la relación. Las restricciones de referencia (excepto las qu e tienen la regla de supresión RESTRICT) se comprueban de forma efec tiva al final de la sentencia. En el caso de una inserción de vari as filas, esto sucedería después de que todas las filas se hub ieran insertado y se hubieran disparado todos los desencadenantes.

DB2/400 Manual de Consulta SQL V3R7 Reglas de INSERT

© Copyright IBM Corp. 1995, 1996 5.34.6 - 1

Page 652: DB2/400 Manual de Consulta SQLmarce.com/docs/systems/manuales/db2_400_manual_consulta_sql_v3r7.pdf · VERSION Nota de Versión Segunda edición (noviembre de 1996) Este manual es

5.34.7 Notas Si un valor de inserción viola alguna restricción o si se produce cualquier otro error durante la ejecución de una se ntencia INSERT y no se ha especificado COMMIT(*NONE), se restituyen todos los cambios realizados durante la ejecución de la sentencia. No obstante, no se restituirán los cambios realizados en la unidad de trabajo antes de que se produjera el error. Si se especifica COMMIT(*NONE), los cambios no se restituyen. Después de ejecutar una sentencia INSERT, el valor de SQLERRD(3) de la SQLCA es el número de filas que ha insertado el ges tor de bases de datos. Si se especifica COMMIT(*RR), COMMIT(*ALL), COMMIT( *CS) o COMMIT(*CHG), se adquieren uno o más bloqueos exclusivos durante la ejecución de una sentencia INSERT satisfactoria. Hasta que una oper ación de compromiso o de retrotracción libere los bloqueos, a una fila in sertada solamente puede acceder: � El proceso de la aplicación que ha realizado la inserción � El proceso de otra aplicación que utilice COMMIT (*NONE) o COMMIT(*CHG) mediante un cursor de sólo lectura, la sentenci a SELECT INTO o una subconsulta Los bloqueos pueden impedir que otros procesos de a plicación realicen operaciones en la tabla. Para obtener más informac ión acerca de los bloqueos, consulte la descripción de las sentencias COMMIT, ROLLBACK y LOCK TABLE, ( "Descripción" en el tema 5.9.4 , "Descripción" en el tema 5.43.4 y "Descripción" en el tema 5.36.4 ) y el apartado "Nivel de aislamiento" en el tema 1.19 . Consulte también el manual DB2/400 Programación de la base de datos , SC10-9634 (SC41-4701). Se puede insertar o modificar un máximo de 524288 f ilas en cualquier sentencia única INSERT cuando se ha especificado CO MMIT(*RR), COMMIT(*ALL), COMMIT(*CS) o COMMIT(*CHG). El númer o de filas modificado incluye las filas insertadas, actualizadas o suprim idas bajo la misma definición de compromiso como resultado de un desen cadenante. Si se utilizan variables del lenguaje principal en la sentencia INSERT dentro de un procedimiento REXX, INSERT debe ser el objeto de PREPARE y EXECUTE.

DB2/400 Manual de Consulta SQL V3R7 Notas

© Copyright IBM Corp. 1995, 1996 5.34.7 - 1

Page 653: DB2/400 Manual de Consulta SQLmarce.com/docs/systems/manuales/db2_400_manual_consulta_sql_v3r7.pdf · VERSION Nota de Versión Segunda edición (noviembre de 1996) Este manual es

5.34.8 Ejemplos Ejemplo 1 : Insertar un nuevo departamento, con las especifi caciones siguientes, en la tabla DEPART: � El número de departamento (NUMDEPT) es 'E31' � El nombre de departamento (NOMBDEPT) es 'ARQUITE CTURA' � Dirigido por (NUMJE) una persona con el número ' 00390' � Informa al (DEPTOADM) departamento 'E01' INSERT INTO DEPART VALUES ( 'E31', 'ARQUITECTURA', '00390', 'E01' ) Ejemplo 2 : Insertar un nuevo departamento en la tabla DEPAR T como en el ejemplo anterior, pero sin asignar un director al n uevo departamento. INSERT INTO DEPART ( NUMDEPT, NOMBDEPT, DEPTOADM) VALUES ( 'E31', 'ARQUITECTURA', 'E01' ) Ejemplo 3 : Crear la tabla provisional ACT_EMP_MA con las mi smas columnas que la tabla ACT_EMP. Cargar ACT_EMP_MA con las fil as de la tabla ACT_EMP con un número de proyecto (NUMPRO) que empiece por las letras 'MA'. CREATE TABLE ACT_EMP_MA ( NUMEMP CHAR(6) NOT NULL, NUMPRO CHAR(6) NOT NULL, NUMACT SMALLINT NOT NULL, TIEMEMP DEC(5,2 ), FECHAEMS DATE, FECHAEME DATE ) INSERT INTO ACT_EMP_MA SELECT * FROM ACT_EMP WHERE SUBSTR(NUMPRO, 1, 2 ) = 'MA' Ejemplo 4 : Utilizar una sentencia de programa PL/I para aña dir un proyecto esqueleto a la tabla PROYECTO. Obtener el número de proyecto (NUMPRO), el nombre del proyecto (NOMBREPR), el núm ero de departamento (NUMDEPT) y el empleado responsable (EMPRESP) a par tir de las variables del lenguaje principal. Utilizar la fecha actual c omo fecha de arranque del proyecto (FCHAINIP). Asignar el valor NULL a l as columnas restantes de la tabla. EXEC SQL INSERT INTO PROYECTO ( NUMPRO, NOMBREPR, NUMDEPT, EMPRESP, FCHAINIP) VALUES ( :NUMPRY, :NOMPRY, :NUMDPTO, :EMPR, CURRENT DATE); Ejemplo 5 : En un programa PL/I, utilizar una inserción bloq ueada para añadir 10 filas a la tabla DEPART. La matriz de es tructura del lenguaje principal DPTO contiene los datos que se insertarán . DCL 1 DPTO(10), 3 DPTO CHAR(3), 3 APELL CHAR(29) VARYING, 3 DEPTTRAB CHAR(6), 3 TRAB CHAR(3); EXEC SQL INSERT INTO DATOSCORP.DEPART 10 ROWS VALUES (:DPTO); Ejemplo 6 : Insertar un nuevo proyecto en la tabla ACT_EMP u tilizando la opción Lectura no comprometida (UR, CHG): INSERT INTO ACT_EMP VALUES ('000140', 'PL2100', 30) WITH CHG

DB2/400 Manual de Consulta SQL V3R7 Ejemplos

© Copyright IBM Corp. 1995, 1996 5.34.8 - 1

Page 654: DB2/400 Manual de Consulta SQLmarce.com/docs/systems/manuales/db2_400_manual_consulta_sql_v3r7.pdf · VERSION Nota de Versión Segunda edición (noviembre de 1996) Este manual es

5.35 LABEL ON La sentencia LABEL ON añade o sustituye etiquetas e n las descripciones de catálogo de tablas, vistas, paquetes o columnas. Subtemas 5.35.1 Invocación 5.35.2 Autorización 5.35.3 Sintaxis 5.35.4 Descripción 5.35.5 Notas 5.35.6 Ejemplos

DB2/400 Manual de Consulta SQL V3R7 LABEL ON

© Copyright IBM Corp. 1995, 1996 5.35 - 1

Page 655: DB2/400 Manual de Consulta SQLmarce.com/docs/systems/manuales/db2_400_manual_consulta_sql_v3r7.pdf · VERSION Nota de Versión Segunda edición (noviembre de 1996) Este manual es

5.35.1 Invocación Esta sentencia puede hospedarse en un programa de a plicación o emitirse interactivamente. Es una sentencia ejecutable que puede prepararse dinámicamente.

DB2/400 Manual de Consulta SQL V3R7 Invocación

© Copyright IBM Corp. 1995, 1996 5.35.1 - 1

Page 656: DB2/400 Manual de Consulta SQLmarce.com/docs/systems/manuales/db2_400_manual_consulta_sql_v3r7.pdf · VERSION Nota de Versión Segunda edición (noviembre de 1996) Este manual es

5.35.2 Autorización Los privilegios del ID de autorización de la senten cia deben incluir al menos uno de los siguientes: � Para la tabla o la vista mencionada en la senten cia, - El privilegio ALTER sobre la tabla o vista, y - La autorización del sistema *EXECUTE sobre la biblioteca que contiene la tabla o la vista � Autorización de administrador El ID de autorización de la sentencia tiene el priv ilegio ALTER sobre la tabla o vista si: � Es el propietario de la tabla o vista, � Se le ha otorgado el privilegio ALTER sobre la t abla o vista, o � Se le han otorgado las autorizaciones del sistem a *OBJALTER u *OBJMGT sobre la tabla o vista

DB2/400 Manual de Consulta SQL V3R7 Autorización

© Copyright IBM Corp. 1995, 1996 5.35.2 - 1

Page 657: DB2/400 Manual de Consulta SQLmarce.com/docs/systems/manuales/db2_400_manual_consulta_sql_v3r7.pdf · VERSION Nota de Versión Segunda edición (noviembre de 1996) Este manual es

5.35.3 Sintaxis +-------------------------------------------------- ------------------------------------------------+ ¦ ¦ ¦ >>-- LABEL ON--------------------------------------------------- --------------------------------> ¦ ¦ ¦ ¦ >------ TABLE---- nombre-tabla ------------------------------- IS -- const-serie -------------------->< ¦ ¦ ¦ ¦ +- nombre-vista -+ ¦ ¦ ¦ ¦ ¦ ¦ (1) ¦ ¦ ¦ ¦ ¦ +- PACKAGE----- nombre-paquete -----------------------¦ ¦ ¦ ¦ ¦ +- TIPO DE DATOS---- nom-tabla.nom-colum -------------+ ¦ ¦ ¦ ¦ +- nom-vista.nom-colum -+ +- TEXT-+ ¦ ¦ ¦ ¦ +- TIPO DE DATOS-+ <-,-------------------------- + ¦ ¦ ¦ +---------------------- nom-tabla ----(---- nom-colum -- IS -- const-serie ----)-------¦ ¦ ¦ ¦ +- nom-vista -+ ¦ ¦ ¦ ¦ +- TIPO DE DATOS-+ <-,-------------------------- ------+ ¦ ¦ ¦ +---------------------- nom-tabla ----(---- nom-colum -- TEXT-- IS -- const-serie ----)-+ ¦ ¦ +- nom-vista -+ ¦ ¦ ¦ ¦ Nota: ¦ ¦ (1) Se puede utilizar la palabra clave PROGRAM c omo sinónimo de PACKAGE. ¦ ¦ ¦ +-------------------------------------------------- ------------------------------------------------+

DB2/400 Manual de Consulta SQL V3R7 Sintaxis

© Copyright IBM Corp. 1995, 1996 5.35.3 - 1

Page 658: DB2/400 Manual de Consulta SQLmarce.com/docs/systems/manuales/db2_400_manual_consulta_sql_v3r7.pdf · VERSION Nota de Versión Segunda edición (noviembre de 1996) Este manual es

5.35.4 Descripción TABLE Indica que la etiqueta pertenece a una tabla o a una vista. Las etiquetas de las tablas o vistas se implantan c omo texto de objeto del AS/400. nom-tabla o nom-vista Identifica la tabla o la vista en la que de sea añadir una etiqueta. El nom-tabla o nom-vista debe identificar una tabla o vista que exista en el servidor actual. PACKAGE Indica que la etiqueta pertenece a un paquete. Las etiquetas de los paquetes se implantan como texto de objeto del AS/400. nombre-paquete Identifica el paquete al que se aplica la e tiqueta. El nombre debe identificar un paquete que exista en e l servidor actual. COLUMN Indica que la etiqueta pertenece a una columna. Las etiquetas de las columnas se implantan como cabeceras de columna o como texto de columna del AS/400. Las cabeceras de las colum nas se utilizan al visualizar o imprimir el resultado de las consu ltas. nom-tabla.nom-colum o nom-vista.nom-colum Identifica la columna, que está calificada por el nombre de la tabla o la vista en la que aparece. El nom bre-columna debe identificar una columna de la tabla o vista especificada que exista en el servidor actual. TEXT Indica que se especifica texto de columna OS/40 0. Si se omite TEXT, se especifica una cabecera de columna. IS Introduce la etiqueta que desea proporcionar. const-serie Puede ser cualquier constante de serie de c aracteres SQL de hasta 50 bytes de longitud para tablas, vistas, p aquetes SQL o texto de columna, o de hasta 60 bytes de longitud pa ra cabeceras de columna. La constante puede contener carac teres de un solo byte y de doble byte. La etiqueta de una cabecera de columna cons ta de tres segmentos de 20 bytes. Cada uno de estos segmentos se p uede visualizar o imprimir en una línea por separado mediante el SQL interactivo, el programa Query/400, Gestor de consultas DB2 para OS/400 y otros productos. Si la etiqueta de una columna c ontiene datos mixtos, cada segmento de 20 bytes debe ser una seri e de caracteres válida de datos mixtos. Los caracteres de desplaz amiento deben estar emparejados en cada segmento de 20 bytes.

DB2/400 Manual de Consulta SQL V3R7 Descripción

© Copyright IBM Corp. 1995, 1996 5.35.4 - 1

Page 659: DB2/400 Manual de Consulta SQLmarce.com/docs/systems/manuales/db2_400_manual_consulta_sql_v3r7.pdf · VERSION Nota de Versión Segunda edición (noviembre de 1996) Este manual es

5.35.5 Notas Las cabeceras de las columnas se utilizan al visual izar o imprimir el resultado de las consultas. La primera cabecera de columna se visualiza o se imprime en la primera línea, la segunda cabecera de columna en la segunda línea y la tercera cabecera de columna en l a tercera línea. Las cabeceras de las columnas pueden tener una longitud máxima de 60 bytes, de los cuales los primeros 20 bytes corresponden a la primera cabecera de columna, los segundos 20 bytes a la segunda cabecer a de columna y los terceros 20 bytes a la tercera cabecera de columna. Los espacios en blanco que haya al final de cada cabecera de column a de 20 bytes se recortan. Los 60 bytes de información de cabeceras de columna s están disponibles en la vista de catálogo SYSCOLUMNS; sin embargo, sólo se devuelve la primera cabecera en una SQLDA en una sentencia DESCRIBE o D ESCRIBE TABLE. El texto de las columnas no se devuelve en una sent encia DESCRIBE o DESCRIBE TABLE. Cuando el gestor de bases de datos cambia la información de cabecera de columna en una descripción de format o de registro compartida, dicho cambio se refleja en todos los ar chivos que comparten la descripción del formato. Para averiguar si un arch ivo comparte un formato con otro archivo, utilice el parámetro RCDFMT en el mandato CL Visualizar Relaciones de Base de Datos (DSPDBR).

DB2/400 Manual de Consulta SQL V3R7 Notas

© Copyright IBM Corp. 1995, 1996 5.35.5 - 1

Page 660: DB2/400 Manual de Consulta SQLmarce.com/docs/systems/manuales/db2_400_manual_consulta_sql_v3r7.pdf · VERSION Nota de Versión Segunda edición (noviembre de 1996) Este manual es

5.35.6 Ejemplos � Entrar una etiqueta en la columna NUMDEPT de la tabla CORPDATA.DEPART. LABEL ON COLUMN CORPDATA.DEPART.NUMDEPT IS 'NÚMERO DEPARTAMENTO' � Entrar una etiqueta que contenga datos mixtos en la columna NUMDEPT de la tabla DATOSCORP.DEPART. LABEL ON COLUMN DATOSCORP.DEPART.NUMDEPT IS IMAGEN 18 � Entrar una etiqueta en el paquete NOMINA. LABEL ON PACKAGE CORPDATA.NOMINA IS 'Paquete de Nómina'

DB2/400 Manual de Consulta SQL V3R7 Ejemplos

© Copyright IBM Corp. 1995, 1996 5.35.6 - 1

Page 661: DB2/400 Manual de Consulta SQLmarce.com/docs/systems/manuales/db2_400_manual_consulta_sql_v3r7.pdf · VERSION Nota de Versión Segunda edición (noviembre de 1996) Este manual es

5.36 LOCK TABLE La sentencia LOCK TABLE impide que los procesos de aplicaciones que se ejecutan al mismo tiempo modifiquen o utilicen una tabla. Subtemas 5.36.1 Invocación 5.36.2 Autorización 5.36.3 Sintaxis 5.36.4 Descripción 5.36.5 Ejemplo

DB2/400 Manual de Consulta SQL V3R7 LOCK TABLE

© Copyright IBM Corp. 1995, 1996 5.36 - 1

Page 662: DB2/400 Manual de Consulta SQLmarce.com/docs/systems/manuales/db2_400_manual_consulta_sql_v3r7.pdf · VERSION Nota de Versión Segunda edición (noviembre de 1996) Este manual es

5.36.1 Invocación Esta sentencia puede hospedarse en un programa de a plicación o emitirse interactivamente. Es una sentencia ejecutable que puede prepararse dinámicamente.

DB2/400 Manual de Consulta SQL V3R7 Invocación

© Copyright IBM Corp. 1995, 1996 5.36.1 - 1

Page 663: DB2/400 Manual de Consulta SQLmarce.com/docs/systems/manuales/db2_400_manual_consulta_sql_v3r7.pdf · VERSION Nota de Versión Segunda edición (noviembre de 1996) Este manual es

5.36.2 Autorización Los privilegios del ID de autorización de la senten cia deben incluir al menos uno de los siguientes: � Para la tabla identificada en la sentencia, - La autorización del sistema *OBJOPR sobre l a tabla, y - La autorización del sistema *EXECUTE sobre la biblioteca que contiene la tabla � Autorización de administrador

DB2/400 Manual de Consulta SQL V3R7 Autorización

© Copyright IBM Corp. 1995, 1996 5.36.2 - 1

Page 664: DB2/400 Manual de Consulta SQLmarce.com/docs/systems/manuales/db2_400_manual_consulta_sql_v3r7.pdf · VERSION Nota de Versión Segunda edición (noviembre de 1996) Este manual es

5.36.3 Sintaxis +-------------------------------------------------- ----------------------+ ¦ ¦ ¦ >>-- LOCK TABLE-- nombre-tabla -- IN ---- SHARE-------- MODE--------------->< ¦ ¦ +- EXCLUSIVE-+ ¦ ¦ ¦ +-------------------------------------------------- ----------------------+

DB2/400 Manual de Consulta SQL V3R7 Sintaxis

© Copyright IBM Corp. 1995, 1996 5.36.3 - 1

Page 665: DB2/400 Manual de Consulta SQLmarce.com/docs/systems/manuales/db2_400_manual_consulta_sql_v3r7.pdf · VERSION Nota de Versión Segunda edición (noviembre de 1996) Este manual es

5.36.4 Descripción nombre-tabla Identifica la tabla que se bloqueará. El nombr e-tabla debe identificar una tabla base que exista en el ser vidor actual, pero no debe identificar una tabla de catálogo. IN SHARE MODE Adquiere un bloqueo compartido (*SHRNUP) para e l proceso de aplicación en el que se ejecuta la sentencia. Hasta que n o se libere el bloqueo, evita que los procesos de aplicación simultáneo s ejecuten operaciones en la tabla que no sean sólo de lectura. IN EXCLUSIVE MODE Adquiere un bloqueo exclusivo (*EXCL) para el p roceso de aplicación en el que se ejecuta la sentencia. Hasta que no s e libere el bloqueo, evita que los procesos de aplicación simultáneo s ejecuten en la tabla cualquier tipo de operación. Se adquiere el bloqueo cuando se ejecuta la sentenc ia LOCK TABLE. El bloqueo se libera: � Cuando la unidad de trabajo finaliza, a menos qu e la finalice COMMIT HOLD o ROLLBACK HOLD � Cuando finaliza el primer programa SQL de la pil a de programas, a menos que se haya especificado CLOSQLCSR(*ENDJO B) o CLOSQLCSR(*ENDACTGRP) en el mandato CRTSQLxxx � Cuando finaliza el grupo de activación � Cuando se cambia la conexión mediante una senten cia CONNECT (Tipo 1) � Cuando la conexión asociada con el bloqueo se de sconecta mediante la sentencia DISCONNECT � Cuando la conexión se encuentra en el estado pen diente de liberación y tiene lugar una COMMIT satisfactoria Para desbloquear la tabla, también puede emitir el mandato Desasignar Objeto (DLCOBJ). Puesto que la sentencia es síncrona, los bloqueos d e otros procesos de aplicaciones que han entrado en conflicto harán que la aplicación espere a que transcurra el tiempo de espera por omisión.

DB2/400 Manual de Consulta SQL V3R7 Descripción

© Copyright IBM Corp. 1995, 1996 5.36.4 - 1

Page 666: DB2/400 Manual de Consulta SQLmarce.com/docs/systems/manuales/db2_400_manual_consulta_sql_v3r7.pdf · VERSION Nota de Versión Segunda edición (noviembre de 1996) Este manual es

5.36.5 Ejemplo Obtener un bloqueo de la tabla DEPART. No permitir a otros usuarios que actualicen o lean la tabla DEPART mientras está blo queada. LOCK TABLE DEPART IN EXCLUSIVE MODE

DB2/400 Manual de Consulta SQL V3R7 Ejemplo

© Copyright IBM Corp. 1995, 1996 5.36.5 - 1

Page 667: DB2/400 Manual de Consulta SQLmarce.com/docs/systems/manuales/db2_400_manual_consulta_sql_v3r7.pdf · VERSION Nota de Versión Segunda edición (noviembre de 1996) Este manual es

5.37 OPEN La sentencia OPEN abre un cursor. Subtemas 5.37.1 Invocación 5.37.2 Autorización 5.37.3 Sintaxis 5.37.4 Descripción 5.37.5 Sustitución de los marcadores de parámetros 5.37.6 Notas 5.37.7 Ejemplos

DB2/400 Manual de Consulta SQL V3R7 OPEN

© Copyright IBM Corp. 1995, 1996 5.37 - 1

Page 668: DB2/400 Manual de Consulta SQLmarce.com/docs/systems/manuales/db2_400_manual_consulta_sql_v3r7.pdf · VERSION Nota de Versión Segunda edición (noviembre de 1996) Este manual es

5.37.1 Invocación Esta sentencia sólo puede hospedarse en un programa de aplicación. Es una sentencia ejecutable que no puede prepararse dinámi camente.

DB2/400 Manual de Consulta SQL V3R7 Invocación

© Copyright IBM Corp. 1995, 1996 5.37.1 - 1

Page 669: DB2/400 Manual de Consulta SQLmarce.com/docs/systems/manuales/db2_400_manual_consulta_sql_v3r7.pdf · VERSION Nota de Versión Segunda edición (noviembre de 1996) Este manual es

5.37.2 Autorización Consulte el apartado "DECLARE CURSOR" en el tema 5.18 para ver cuál es la autorización necesaria para utilizar un cursor.

DB2/400 Manual de Consulta SQL V3R7 Autorización

© Copyright IBM Corp. 1995, 1996 5.37.2 - 1

Page 670: DB2/400 Manual de Consulta SQLmarce.com/docs/systems/manuales/db2_400_manual_consulta_sql_v3r7.pdf · VERSION Nota de Versión Segunda edición (noviembre de 1996) Este manual es

5.37.3 Sintaxis +-------------------------------------------------- ----------------------+ ¦ ¦ ¦ >>-- OPEN-- nombre-cursor --------------------------------------------->< ¦ ¦ ¦ <-,------------ --+ ¦ ¦ ¦ +- USING---- var-leng-princ -------------¦ ¦ ¦ +- USING DESCRIPTOR-- nombre-descriptor -+ ¦ ¦ ¦ +-------------------------------------------------- ----------------------+

DB2/400 Manual de Consulta SQL V3R7 Sintaxis

© Copyright IBM Corp. 1995, 1996 5.37.3 - 1

Page 671: DB2/400 Manual de Consulta SQLmarce.com/docs/systems/manuales/db2_400_manual_consulta_sql_v3r7.pdf · VERSION Nota de Versión Segunda edición (noviembre de 1996) Este manual es

5.37.4 Descripción nombre-cursor Identifica el cursor que se va a abrir. El nombre de cursor debe identificar un cursor declarado tal como se exp lica en las Notas de la sentencia DECLARE CURSOR. Cuando se ejecuta la sentencia OPEN, el estado del cursor debe ser cerrado. La sentencia SELECT asociada con el cursor pued e ser: � La sentencia-select especificada en la sentencia DECLARE CURSOR, o � La sentencia-select preparada identificada por el nombre de sentencia especificado en la sentencia DECLARE CURSOR. Si l a sentencia no se ha preparado satisfactoriam ente o no es una sentencia-select , el cursor no se puede abrir satisfactoriamente. La tabla de resultados del cursor se obtiene ev aluando la sentencia SELECT. La evaluación utiliza los valores actu ales de los registros especiales que se hayan especificado en la sent encia SELECT y los valores actuales de las variables del lenguaje principal que se hayan especificado en la sentencia SELECT o en la clá usula USING de la sentencia OPEN. Las filas de la tabla de resul tados se pueden derivar durante la ejecución de la sentencia OPEN y se puede crear una tabla provisional para que las contenga; también se p ueden derivar durante la ejecución de las sentencias FETCH subsiguien tes. En cualquier caso, el cursor adquiere el estado abierto y se sitúa antes de la primera fila de su tabla de resultados. Si la tabla está vacía, la posición del cursor es "después de la última fi la". USING Introduce una lista de variables del lenguaje p rincipal cuyos valores se sustituyen por marcadores de parámetros (sig nos de interrogación) de una sentencia preparada. Para obtener una e xplicación de los marcadores de parámetros, véase el apartado "PREPARE" en el tema 5.38 . Si la sentencia DECLARE CURSOR menciona una sen tencia preparada que incluye marcadores de parámetros, debe utilizar USING. Si la sentencia preparada no incluye marcadores de pa rámetros, USING se pasa por alto. var-leng-princ,... Identifica variables o estructuras del leng uaje principal que deben declararse en el programa de acuerdo con las reglas de declaración de las variables y las estructu ras del lenguaje principal. Una referencia a una estructura del lenguaje principal se sustituye por una referencia a cada una de sus variables. El número de variables debe ser el mismo que e l número de marcadores de parámetros que hay en la sentencia prepa rada. La variable enésima corresponde al marcador de parámetros enésimo de la sentencia preparada. DESCRIPTOR nombre-descriptor Identifica una SQLDA que debe contener una descripción válida de variables del lenguaje principal. Antes de procesar la sentencia OPEN, el usu ario debe establecer los campos siguientes en la SQLDA. (Las re glas para REXX son diferentes. Para obtener más información, consulte el manual DB/2 for OS/400 SQL Programming , SC41-4611) � SQLN para indicar la cantidad de aparici ones de SQLVAR proporcionadas en la SQLDA � SQLDABC para indicar la cantidad de byte s de almacenamiento asignados para la SQLDA � SQLD para indicar la cantidad de variabl es utilizadas en la SQLDA mientras se procesa la sentencia � Las apariciones de SQLVAR para indicar l os atributos de las variables La SQLDA debe disponer de almacenamiento su ficiente como para contener todas las apariciones de SQLVAR. Por tanto, el valor de SQLDABC debe ser mayor o igual que 16 + SQL N*(80), donde 80 es la longitud de una aparición de SQLVAR. SQLD debe establecerse en un valor mayor o igual que cero y menor o igual que SQLN. Debe ser igual al número de marcadores de parámetros de la sentencia preparada. La v ariable enésima descrita por la SQLDA corresponde al marcad or de parámetros enésimo de la sentencia preparada. Para obtener una descr ipción de una SQLDA, consulte el Apéndice C, "Área de descriptor SQL (SQLDA)" en el tema C.0 . Tenga en cuenta que, puesto que RPG/400 no prop orciona el recurso para establecer punteros y la SQLDA utiliza punteros para localizar las variables del lenguaje principal adecuadas, ten drá que establecer estos punteros fuera de la aplicación RPG/400.

DB2/400 Manual de Consulta SQL V3R7 Descripción

© Copyright IBM Corp. 1995, 1996 5.37.4 - 1

Page 672: DB2/400 Manual de Consulta SQLmarce.com/docs/systems/manuales/db2_400_manual_consulta_sql_v3r7.pdf · VERSION Nota de Versión Segunda edición (noviembre de 1996) Este manual es

5.37.5 Sustitución de los marcadores de parámetros Cuando se evalúa la sentencia SELECT del cursor, ca da marcador de parámetro se sustituye por su correspondiente varia ble del lenguaje principal. A excepción del predicado LIKE, la sust itución de un marcador de parámetros es una operación de asignación donde el origen es el valor de la variable del lenguaje principal y el destino es una variable dentro del gestor de bases de datos. Los atributos de la variable destino se determinan del siguiente modo: � Si el marcador de parámetros se ha especificado como operando de un operador aritmético, el tipo de datos, la escal a y la precisión del destino son los mismos que los del otro operand o de dicho operador. � Si el marcador de parámetros se ha especificado como operando de comparación en un predicado que no era BETWEEN, IN ni LIKE, los atributos del destino son los mismos que los de l otro operando del predicado, a menos que el tipo de datos de dich o operando sea DATE, TIME o TIMESTAMP, en cuyo caso el destino es de tipo carácter con un atributo de longitud de 32766. � Si el marcador de parámetros se ha especificado como operando de comparación en un predicado BETWEEN o IN, los a tributos de la variable destino se asignan del modo siguiente: - Si solamente un operando no es un marcador de parámetros, los atributos del destino serán los atributos d el operando. - Si existe más de un operando que no es un m arcador de parámetros, los atributos del destino son los que resul tarían si se hubieran especificado dichos operandos en una funció n escalar VALUE, con la excepción de que el atributo CCSID es el CC SID de su variable del lenguaje principal correspondiente. � Si el marcador de parámetros se ha especificado como patrón o como carácter ESCAPE de un predicado LIKE, la variab le del lenguaje principal que se utiliza para sustituir el marc ador de parámetros debe ser compatible con el primer operando. | Si el marcador de parámetros se especificó como patrón, el tipo de| datos del objetivo es VARCHAR (si el primer ope rando es CHAR o| VARCHAR) o VARGRAPHIC (si el primer operando es GRAPHIC o VARGRAPHIC).| El atributo de longitud del objetivo es el mism o que el del primer| operando. | Si el marcador de parámetros se ha especificado como el carácter ESCAPE, el atributo de longitud del destino es 1. Nota: Cuando el patrón especificado en un predicado LIK E es un marcador de parámetros, y se utiliza una variable del lenguaje principal de tipo carácter de longitud f ija para sustituir el marcador de parámetros, especifique un v alor para la variable del lenguaje principal que tenga la long itud correcta. Si no especifica una longitud correcta, la sel ección no devolverá los resultados esperados. Por ejemplo, si se define la variable de l lenguaje principal como CHAR(10) y se asigna el valor WYSE% a esa variable del lenguaje principal, ésta se rellenará co n espacios en blanco al asignarse. El patrón utilizado será 'WYSE% ' Este patrón solicita al gestor de bases de datos que busque todos los valores que empiezan por WYSE y terminan por cinco espacios en blanco. Si desea buscar sól o aquellos valores que empiecen por 'WYSE', debe asignar el val or 'WYSE%%%%%%' a la variable del lenguaje principal. � Si el marcador de parámetros se ha especificado como operando en una función escalar VALUE, COALESCE, IFNULL, MIN, M AX, LAND, LOR o XOR, los atributos del destino se asignan de la sigu iente forma: - Si solamente un operando no es un marcador de parámetros, los atributos del destino serán los atributos d el operando. - Si hay más de un operando que no es un marc ador de parámetros, los atributos del destino son los que resultarí an si se eliminaran los marcadores de parámetros de la función esca lar. Suponga que V se refiere a una variable del lenguaj e principal correspondiente al marcador de parámetros P. El va lor de V se asigna a la variable destino para P según las reglas de asignac ión de un valor a una columna. Por tanto: � V debe ser compatible con el destino. � Si V es un número, el valor absoluto de su parte entera no debe ser mayor que el valor absoluto máximo de la parte entera del destino. � Si los atributos de V no son idénticos a los atr ibutos del destino, el valor se convierte para adaptarse a los atribut os del destino. � Si el destino no puede contener nulos, el valor de V no debe ser nulo. No obstante, y a diferencia de las reglas para asig nar un valor a una columna: � Si V es una serie, el valor se truncará (sin nin gún error), si su longitud es mayor que el atributo de longitud d el destino. Cuando se evalúa una sentencia SELECT del cursor, e l valor utilizado en

DB2/400 Manual de Consulta SQL V3R7 Sustitución de los marcadores de parámetros

© Copyright IBM Corp. 1995, 1996 5.37.5 - 1

Page 673: DB2/400 Manual de Consulta SQLmarce.com/docs/systems/manuales/db2_400_manual_consulta_sql_v3r7.pdf · VERSION Nota de Versión Segunda edición (noviembre de 1996) Este manual es

lugar de P es el valor de la variable destino para P. Por ejemplo, si V es CHAR(6) y el destino es CHAR(8), el valor utiliz ado en lugar de P es el valor de V rellenado con dos espacios en blanco. La cláusula USING sirve para aquellas sentencias SE LECT preparadas que contienen marcadores de parámetros. No obstante, t ambién se pueden utilizar cuando la sentencia SELECT del cursor form a parte de la sentencia DECLARE CURSOR. En este caso, se ejecuta la senten cia OPEN como si cada variable del lenguaje principal dentro de la senten cia SELECT fuera un marcador de parámetros, excepto en que los atributo s de las variables destino son los mismos que los atributos de las var iables del lenguaje principal en la sentencia SELECT. El efecto consis te en alterar temporalmente los valores de las variables del leng uaje principal en la sentencia SELECT del cursor por los valores de las variables del lenguaje principal especificadas en la cláusula USING.

DB2/400 Manual de Consulta SQL V3R7 Sustitución de los marcadores de parámetros

© Copyright IBM Corp. 1995, 1996 5.37.5 - 2

Page 674: DB2/400 Manual de Consulta SQLmarce.com/docs/systems/manuales/db2_400_manual_consulta_sql_v3r7.pdf · VERSION Nota de Versión Segunda edición (noviembre de 1996) Este manual es

5.37.6 Notas Estado cerrado de los cursores : Todos los cursores de un programa tienen el estado cerrado cuando: � Se llama al programa: - Si se especifica CLOSQLCSR(*ENDPGM), todos los cursores estarán en estado cerrado cada vez que se llame al pro grama. - Si se especifica CLOSQLCSR(*ENDSQL), todos los cursores estarán en estado cerrado sólo la primera vez que se l lame al programa y siempre y cuando permanezca un programa SQL en la pila de llamadas. - Si se especifica CLOSQLCSR(*ENDJOB), todos los cursores estarán en estado cerrado sólo la primera vez que se l lame al programa y siempre y cuando el trabajo permanezca acti vo. - Si se especifica CLOSQLCSR(*ENDMOD), todos los cursores estarán en estado cerrado cada vez que se inicie el mó dulo. - Si se especifica CLOSQLCSR(*ENDACTGRP), tod os los cursores estarán en estado cerrado solamente la primera vez que se inicia el módulo del programa en el grupo de activación. � Un programa inicia una unidad de trabajo nueva e jecutando una sentencia COMMIT o ROLLBACK sin la opción HOLD. Los cursores declarados con la opción HOLD no se cierran com o resultado de una sentencia COMMIT. � Se ha ejecutado una sentencia CONNECT (Tipo 1). Un cursor también puede tener el estado cerrado por que: � Se ha ejecutado una sentencia CLOSE. � Una sentencia DISCONNECT ha desconectado la cone xión con la que el cursor estaba asociado. � La conexión con la que el cursor estaba asociado estaba en el estado pendiente de liberación y se realizó una operac ión COMMIT satisfactoria. Se debe ejecutar una sentencia FETCH cuando el curs or está abierto con el fin de recuperar filas de la tabla de resultados de un cursor. El único modo de cambiar el estado de un cursor de cerrado a abierto es ejecutando una sentencia OPEN. Efecto de tablas temporales : Si la tabla de resultados de un cursor no es de sólo lectura, sus filas se derivan en el transcu rso de la ejecución de sentencias FETCH posteriores. Puede utilizarse el mismo método para una tabla de resultados de sólo lectura. No obstante, si una tabla de resultados es de sólo lectura, DB2 para OS/400 pued e elegir utilizar el método de la tabla temporal en su lugar. Con este método, se inserta la tabla de resultados entera en una tabla temporal du rante la ejecución de la sentencia OPEN. Cuando se utiliza una tabla tem poral, el resultado de un programa puede diferir de dos maneras distintas: � Se puede producir un error durante la operación OPEN que, en otro caso, no se produciría hasta alguna sentencia F ETCH posterior. � Las sentencias INSERT, UPDATE y DELETE que se ej ecutan mientras el cursor está abierto no pueden afectar a la tabl a de resultados. Por el contrario, si no se utiliza una tabla tempor al, las sentencias INSERT, UPDATE y DELETE ejecutadas mientras el curs or está abierto pueden afectar a la tabla de resultados. El efecto de dic has operaciones no siempre es predecible. Por ejemplo, si el cursor C está situado en una fila de su tabla de resultados definida como SELECT * FROM T e inserta una fila en T, el efecto de esta inserción sobre la tab la de resultados no se puede predecir porque sus filas no están ordenadas. Una operación FETCH C posterior puede recuperar o no la fila nueva de T.

DB2/400 Manual de Consulta SQL V3R7 Notas

© Copyright IBM Corp. 1995, 1996 5.37.6 - 1

Page 675: DB2/400 Manual de Consulta SQLmarce.com/docs/systems/manuales/db2_400_manual_consulta_sql_v3r7.pdf · VERSION Nota de Versión Segunda edición (noviembre de 1996) Este manual es

5.37.7 Ejemplos Ejemplo 1 : Escribir las sentencias hospedadas en un program a COBOL para: 1. Definir un cursor C1 que va a utilizarse para r ecuperar todas las filas de la tabla DEPART para los departamentos que están administrados por el departamento (DEPTOADM) 'A 00' 2. Situar el cursor C1 antes de la primera fila qu e debe buscarse. EXEC SQL DECLARE C1 CURSOR FOR SELECT NUMDEPT, NOMBDEPT, NUMJE FROM DEPART WHERE DEPTOADM = 'A00' END-EXEC. EXEC SQL OPEN C1 END-EXEC. Ejemplo 2 : Codificar una sentencia OPEN para asociar un cur sor CURSOR_DIN con una sentencia-select definida dinámicamente en un programa PL/I. Suponga que cada sentencia-select preparada define siempre dos elementos en su lista de selección, de los cuales el primero corresponde al tipo de datos enteros y el segundo al tipo de varchar(64). (Las definiciones de variables del lenguaje principal relacionadas, la s entencia PREPARE y la sentencia DECLARE CURSOR también se muestran en est e ejemplo.) EXEC SQL BEGIN DECLARE SECTION; DCL HV_INT BINARY FIXED(31); DCL HV_VCHAR64 CHAR(64) VARYING; DCL SER_STNC1 CHAR(200) VARYING; EXEC SQL END DECLARE SECTION; EXEC SQL PREPARE NOMB_STNC1 FROM :SER_STNC1; EXEC SQL DECLARE EMPRESP_CURSOR CURSOR FOR NOMB_STNC1; EXEC SQL OPEN CURSOR_DIN USING :HV_INT, :HV_VCHAR64; Ejemplo 3 : Codificar una sentencia OPEN como en el ejemplo 3, pero en este caso el número y los tipos de datos de los ele mentos de la sentencia-select no se conocen. EXEC SQL BEGIN DECLARE SECTION; DCL SER_STNC1 CHAR(200) VARYING; EXEC SQL END DECLARE SECTION; EXEC SQL INCLUDE SQLDA; EXEC SQL PREPARE NOMB_STNC1 FROM :SER_STNC1; EXEC SQL DECLARE EMPRESP_CURSOR CURSOR FOR NOMB_STNC1; EXEC SQL OPEN CURSOR_DIN USING DESCRIPTOR :SQLDA;

DB2/400 Manual de Consulta SQL V3R7 Ejemplos

© Copyright IBM Corp. 1995, 1996 5.37.7 - 1

Page 676: DB2/400 Manual de Consulta SQLmarce.com/docs/systems/manuales/db2_400_manual_consulta_sql_v3r7.pdf · VERSION Nota de Versión Segunda edición (noviembre de 1996) Este manual es

5.38 PREPARE La sentencia PREPARE crea un formato ejecutable de una sentencia SQL a partir de un formato de serie de caracteres de la s entencia. El formato de serie de caracteres recibe el nombre de serie de sentencia , y el formato ejecutable es una sentencia preparada . Subtemas 5.38.1 Invocación 5.38.2 Autorización 5.38.3 Sintaxis 5.38.4 Descripción 5.38.5 Notas 5.38.6 Ejemplos

DB2/400 Manual de Consulta SQL V3R7 PREPARE

© Copyright IBM Corp. 1995, 1996 5.38 - 1

Page 677: DB2/400 Manual de Consulta SQLmarce.com/docs/systems/manuales/db2_400_manual_consulta_sql_v3r7.pdf · VERSION Nota de Versión Segunda edición (noviembre de 1996) Este manual es

5.38.1 Invocación Esta sentencia sólo puede hospedarse en un programa de aplicación. Es una sentencia ejecutable que no puede prepararse dinámi camente.

DB2/400 Manual de Consulta SQL V3R7 Invocación

© Copyright IBM Corp. 1995, 1996 5.38.1 - 1

Page 678: DB2/400 Manual de Consulta SQLmarce.com/docs/systems/manuales/db2_400_manual_consulta_sql_v3r7.pdf · VERSION Nota de Versión Segunda edición (noviembre de 1996) Este manual es

5.38.2 Autorización Las reglas de autorización son las mismas que las d efinidas para la sentencia SQL especificada en la sentencia PREPARE. Por ejemplo, véase el Capítulo 4, "Consultas" en el tema 4.0 para saber cuáles son las reglas de autorización que se aplican cuando se prepara una s entencia SELECT. Si se especifica DLYPRP(*NO) en el mandato CRTSQLxx x, la comprobación de la autorización se lleva a cabo cuando se prepara l a sentencia, excepto: � Si se prepara una sentencia DROP COLLECTION, la autorización del sistema *OBJEXIST sobre todos los objetos de la colección no se comprueba hasta que se ejecuta la sentencia. � Si se prepara una sentencia DROP TABLE, la autor ización del sistema *OBJEXIST sobre todas las vistas, índices y arc hivos lógicos que hacen referencia a la tabla no se comprueba hasta que se ejecuta la sentencia. � Si se prepara una sentencia DROP VIEW, la autori zación del sistema *OBJEXIST sobre todas las vistas que hacen refe rencia a la vista no se comprueba hasta que se ejecuta la sentencia. Si se especifica DLYPRP(*YES) en el mandato CRTSQLx xx, la comprobación de la autorización se demora hasta que se ejecuta la s entencia o se utiliza en una sentencia OPEN. El ID de autorización de la sentencia es el ID de a utorización en tiempo de ejecución, a menos que se especificase DYNUSRPRF (*OWNER) en el mandato CRTSQLxxx cuando se creó el programa. Para obtener más información, consulte el apartado "ID de autorización y nombres-autorización" en el tema 2.5 .

DB2/400 Manual de Consulta SQL V3R7 Autorización

© Copyright IBM Corp. 1995, 1996 5.38.2 - 1

Page 679: DB2/400 Manual de Consulta SQLmarce.com/docs/systems/manuales/db2_400_manual_consulta_sql_v3r7.pdf · VERSION Nota de Versión Segunda edición (noviembre de 1996) Este manual es

5.38.3 Sintaxis +-------------------------------------------------- ----------------------+ ¦ ¦ ¦ >-- PREPARE-- nombre-sentencia -----------------------------------------> ¦ ¦ ¦ ¦ >------------------------------------------------ ------------ FROM----> ¦ ¦ +- INTO-- nombre-descriptor ------------------------------+ ¦ ¦ +- USING---- NAMES----------+ ¦ ¦ +- SYSTEM NAMES-¦ ¦ ¦ +- LABELS-------¦ ¦ ¦ +- ANY----------¦ ¦ ¦ +- BOTH---------¦ ¦ ¦ +- ALL----------+ ¦ ¦ ¦ ¦ >---- expresión-serie -------------------------------------------------> ¦ ¦ +- var-leng-princ --+ ¦ ¦ ¦ +-------------------------------------------------- ----------------------+

DB2/400 Manual de Consulta SQL V3R7 Sintaxis

© Copyright IBM Corp. 1995, 1996 5.38.3 - 1

Page 680: DB2/400 Manual de Consulta SQLmarce.com/docs/systems/manuales/db2_400_manual_consulta_sql_v3r7.pdf · VERSION Nota de Versión Segunda edición (noviembre de 1996) Este manual es

5.38.4 Descripción nombre-sentencia Indica la sentencia preparada. Si el nombre id entifica una sentencia preparada existente, dicha sentencia se elimina a menos que se haya preparado en otra aparición del mismo programa o en otro programa. Este nombre no debe identificar una sentencia p reparada que sea la sentencia SELECT de un cursor abierto perteneci ente a este ejemplo del programa. INTO nombre-descriptor| Identifica un área de descriptor SQL (SQLDA), q ue se describe en el Apéndice C, "Área de descriptor SQL (SQLDA)" en el tema C.0 . Antes de ejecutar la sentencia PREPARE, debe establecers e la variable siguiente en la SQLDA: SQLN Indica el número de variables representadas por SQLVAR. (SQLN proporciona la dimensión de la matriz SQLVA R.) SQLN debe establecerse en un valor mayor o igual que cero y menor o igual que SQLN antes de que se ejecute la sentenc ia PREPARE. Si utiliza INTO, y se ejecuta satisfactoriament e la sentencia PREPARE, la información acerca de la sentencia preparada se sitúa en la SQLDA que especifica el nombre de descriptor. Así, e sta sentencia PREPARE: EXEC SQL PREPARE S1 INTO :SQLDA FROM :V1; equivale a: EXEC SQL PREPARE S1 FROM :V1; EXEC SQL DESCRIBE S1 INTO :SQLDA; Véase el apartado "DESCRIBE" en el tema 5.23 para obtener una explicación acerca de la información que se sit úa en la SQLDA. USING Indica el valor a asignar a cada variable SQLNA ME en la SQLDA. Si no existe el valor solicitado, SQLNAME se establec e en la longitud 0. NAMES Asigna el nombre de la columna. Éste es el valor por omisión. En el caso de una sentencia preparada en la qu e los nombres están especificados de forma explícita en la list a de selección, se devuelve el nombre especificado. SYSTEM NAMES Asigna el nombre de la columna del sistema de la columna. LABELS Asigna la etiqueta de la columna. (Las eti quetas de columna se definen mediante la sentencia LABEL ON.) S ólo se devuelven los 30 primeros bytes de la etiqueta. ANY Asigna la etiqueta de columna. Si la colum na no tiene etiqueta, ésta será el nombre de la columna. BOTH Asigna la etiqueta y el nombre de la column a. En este caso, son necesarias dos apariciones de SQLVAR por co lumna para acomodar la información adicional. Para especificar es ta expansión de la matriz SQLVAR, establezca SQLN en 2* n(donde n es el número de columnas de la tabla de resultados). Las p rimeras n apariciones de SQLVAR correspondientes a cada columna d e la tabla de resultados contienen los nombres de las col umnas. Las n segundas apariciones contienen las etiquetas de colu mna. Si se utiliza la misma SQLDA en una sentenc ia FETCH posterior, establezca SQLN en n una vez finalizada la sentencia PREPARE. ALL Asigna la etiqueta, el nombre de la columna y el nombre de columna del sistema. En este caso, son necesarias tres apariciones de SQLVAR por columna para acomodar la informa ción adicional. Para especificar esta expansión de la matriz SQL VAR, establezca SQLN en 3* n (siendo n el número de columnas de la tabla de resultados). Las n primeras apariciones de SQLVAR contienen los nombr es de columna del sistema. Las n segundas apariciones contienen las etiquetas de columna. Las n terceras apariciones contienen los nombres de columna. FROM Especifica la serie de sentencia. La serie de sentencia es el valor de la expresión-serie especificada o la var-leng-princ identificada. expresión-serie Una expresión de serie es cualquier expresión de serie PL/I que produce una serie de caracteres. Las expre siones SQL que producen una serie de caracteres no están permitidas . Sólo se permite una expresión-serie en PL/I. var-leng-princ Identifica una variable del lenguaje princi pal que está declarada en el programa según las reglas de declarac ión de las variables de serie de caracteres. No se debe especifica r ninguna variable de

DB2/400 Manual de Consulta SQL V3R7 Descripción

© Copyright IBM Corp. 1995, 1996 5.38.4 - 1

Page 681: DB2/400 Manual de Consulta SQLmarce.com/docs/systems/manuales/db2_400_manual_consulta_sql_v3r7.pdf · VERSION Nota de Versión Segunda edición (noviembre de 1996) Este manual es

indicador. La serie de sentencia debe ser una las sentencias S QL siguientes: +-------------------------------------------------- ----------------------+| ¦ ALTER TABLE ¦ CREATE PROCEDURE ¦ LOCK TABLE ¦ ¦ CALL ¦ CREATE VIEW ¦ ¦| ¦ COMMENT ON ¦ DELETE ¦ RENAME ¦ ¦ COMMIT ¦ DROP ¦ REVOKE ¦ ¦ CREATE COLLECTION ¦ GRANT ¦ ROLLBACK ¦ ¦ CREATE INDEX ¦ INSERT ¦ sentencia-select ¦ ¦ CREATE TABLE ¦ LABEL ON ¦ SET TRANSACTION ¦ ¦ ¦ ¦ UPDATE ¦ +-------------------------------------------------- ----------------------+ La serie de sentencia no debe: � Comenzar por EXEC SQL y terminar por END-EXEC o por un punto y coma (;). � Incluir referencias a variables de lenguaje prin cipal. � Incluir comentarios. Marcadores de parámetros : Aunque una serie de sentencia no puede incluir referencias a variables del lenguaje principal, sí puede incluir marcadores de parámetros . Éstos se pueden sustituir por los valores de las variables del lenguaje principal cuando se ejec uta la sentencia preparada. Un marcador de parámetros es un signo d e interrogación (?) que se utiliza donde podría utilizarse una variable del lenguaje principal si la serie de sentencia fuera una sentencia SQL estát ica. Para obtener una explicación de cómo se sustituyen los marcadores de parámetros por valores, véanse los apartados "OPEN" en el tema 5.37 y "EXECUTE" en el tema 5.28 . Reglas para los marcadores de parámetros: � Los marcadores de parámetros no deben utilizarse : - En una lista de selección (SELECT ? no es v álido) a menos que se trate de una subconsulta. - Como operando del operador de concatenación . - Como operandos de un solo operador aritméti co o de comparación. Por ejemplo, 'WHERE ? = ?' o 'WHERE ? = (SE LECT ? ...)' no son válidos. - Como operando de un menos unitario. - Como operando en una expresión aritmética d e fecha y hora. � Al menos uno de los operandos de los predicados BETWEEN o IN no debe ser un marcador de parámetros. � No puede especificarse un argumento de una funci ón escalar sólo como un marcador de parámetro. Por ejemplo, INTEGER (?) no es válido. � El primer argumento de las funciones escalares V ALUE, COALESCE, MIN, MAX, LAND, LOR y XOR no se puede especificar co mo marcador de parámetros. La primera expresión del predicado LIKE no debe ser un marcador de parámetros. � Si una función escalar tiene un argumento que se puede especificar como expresión aritmética, en dicha expresión s e puede incluir un marcador de parámetros, siempre y cuando sea el operando de un operador aritmético y el otro operando sea un n úmero. � Un marcador de parámetros se puede utilizar como argumento para una duración etiquetada.

DB2/400 Manual de Consulta SQL V3R7 Descripción

© Copyright IBM Corp. 1995, 1996 5.38.4 - 2

Page 682: DB2/400 Manual de Consulta SQLmarce.com/docs/systems/manuales/db2_400_manual_consulta_sql_v3r7.pdf · VERSION Nota de Versión Segunda edición (noviembre de 1996) Este manual es

5.38.5 Notas El ámbito del nombre de sentencia es el programa fu ente en el que está definido. Solamente puede hacer referencia a una s entencia preparada mediante otras sentencias SQL que se han precompila do con la sentencia PREPARE. Por ejemplo, un programa que se ha llamad o desde otro programa compilado por separado no puede utilizar una senten cia preparada creada por el programa que efectúa la llamada. Aunque el ámbito de una sentencia es el programa en el que está definida, cada paquete creado desde este programa incluye una aparición distinta de la sentencia preparada, por lo que puede haber más de una sentencia preparada en el momento de la ejecución. Por ejemp lo, suponga que un programa que utiliza sentencias CONNECT (Tipo 2) se conecta a la ubicación X y a la ubicación Y por el orden siguiente: EXEC SQL CONNECT TO X; EXEC SQL PREPARE S FROM :hv1; EXEC SQL EXECUTE S; . . . EXEC SQL CONNECT TO Y; EXEC SQL PREPARE S FROM :hv1; EXEC SQL EXECUTE S; La segunda preparación de S prepara otra aparición de S en Y. Cuando se ejecuta una sentencia PREPARE, la serie d e sentencia se analiza y se comprueba si contiene errores. Si la serie de sentencia no es válida, no se crea ninguna sentencia preparada y en la SQLCA se informa de la condición de error que impide su creación. Se puede hacer referencia a las sentencias preparad as en las siguientes clases de sentencias y con las restricciones mostra das a continuación: Sentencia Restricciones sobre sentencias preparadas DESCRIBE Ninguna DECLARE CURSOR Debe ser SELECT cuando se abre el cursor EXECUTE No debe ser SELECT Una sentencia preparada puede ejecutarse muchas vec es. Si no se ejecuta una sentencia preparada más de una vez y no contien e marcadores de parámetros, es mejor utilizar la sentencia EXECUTE IMMEDIATE en lugar de las sentencias PREPARE y EXECUTE. Si se utiliza COMMIT HOLD o ROLLBACK HOLD para fina lizar una unidad de trabajo, se conservan todas las sentencias preparad as. De lo contrario, todas las sentencias preparadas se eliminan cuando finaliza una unidad de trabajo, excepto las que están asociadas con cursor es abiertos que se han declarado con la opción WITH HOLD. Las sentencias preparadas también se eliminan cuand o: � Se ejecuta una sentencia CONNECT (Tipo 1). � Una sentencia DISCONNECT desconecta la conexión con la que se asocia la sentencia preparada. � Una sentencia preparada está asociada con una co nexión en estado pendiente de liberación, y se produce una opera ción de compromiso satisfactoria. Sólo se puede hacer referencia a una sentencia preparada en el mismo ejemplo del programa situado en la pila de prog ramas, a menos que se especifique CLOSQLCSR(*ENDJOB), CLOSQLCSR(*ENDA CTGRP), o CLOSQLCSR(*ENDSQL) en los mandatos CRTSQLxxx. - Si se especifica CLOSQLCSR(*ENDJOB), cualqu ier ejemplo del programa (que preparó la sentencia) de la p ila de programas puede hacer referencia a la sentencia preparada. - Si se especifica CLOSQLCSR(*ENDSQL), cualqu ier ejemplo del programa (que preparó la sentencia) de la p ila de programas puede hacer referencia a la sentencia preparada, hasta que finalice el último programa SQL presente en la pila de programas. - Si se especifica CLOSQLCSR(*ENDACTGRP), tod os los ejemplos del módulo del programa que ha preparado la sen tencia pueden hacer referencia a la sentencia preparada hasta q ue finaliza el grupo de activación.

DB2/400 Manual de Consulta SQL V3R7 Notas

© Copyright IBM Corp. 1995, 1996 5.38.5 - 1

Page 683: DB2/400 Manual de Consulta SQLmarce.com/docs/systems/manuales/db2_400_manual_consulta_sql_v3r7.pdf · VERSION Nota de Versión Segunda edición (noviembre de 1996) Este manual es

5.38.6 Ejemplos Ejemplo 1 : Preparar y ejecutar una sentencia que no sea sel ect en un programa COBOL. Se supone que la sentencia está in cluida en una variable CONTEN del lenguaje principal y que el programa col ocará una serie de sentencia en la variable del lenguaje principal bas ándose en algunas instrucciones dadas por el usuario. La sentencia q ue debe prepararse no tiene ningún marcador de parámetro. EXEC SQL PREPARE NOMBRE_STNC FROM :CONTEN END-EXEC. EXEC SQL EXECUTE NOMBRE_STNC END-EXEC. Ejemplo 2 : Preparar y ejecutar una sentencia que no sea sel ect como en el ejemplo anterior, con la excepción de que se codifi ca para un programa PL/I. Suponga también que la sentencia que se va a preparar puede contener cualquier número de marcadores de parámetr os. EXEC SQL PREPARE NOMBRE_STNC FROM :CONTEN; EXEC SQL EXECUTE NOMBRE_STNC USING DESCRIPTOR :INSERT_DA; Suponga que se va a preparar la sentencia siguiente : INSERT INTO DEPART VALUES(?, ?, ?, ? ) Para insertar el número de departamento G01 denomin ado QUEJAS, que no tiene director y depende del departamento A00, la e structura INSERT_DA debe tener los valores siguientes antes de ejecutar la sentencia EXECUTE. +---------------+ ¦SQLDAID¦ ¦ ¦SQLDABC¦ 336 ¦ ¦SQLN ¦ 4 ¦ ¦SQLD ¦ 4 ¦ +-------+-------¦ ¦SQLTYPE¦ 452 ¦ ¦SQLLEN ¦ 3 ¦ ¦SQLDATA¦-------+--- G01 ¦SQLIND ¦ ¦ ¦SQLNAME¦ ¦ +-------+-------¦ ¦SQLTYPE¦ 448 ¦ ¦SQLLEN ¦ 29 ¦ ¦SQLDATA¦-------+--- QUEJAS ¦SQLIND ¦ ¦ ¦SQLNAME¦ ¦ +-------+-------¦ ¦SQLTYPE¦ 453 ¦ ¦SQLLEN ¦ 6 ¦ ¦SQLDATA¦ ¦ ¦SQLIND ¦-------+--- -1 ¦SQLNAME¦ ¦ +-------+-------¦ ¦SQLTYPE¦ 452 ¦ ¦SQLLEN ¦ 3 ¦ ¦SQLDATA¦-------+--- A00 ¦SQLIND ¦ ¦ ¦SQLNAME¦ ¦ +---------------+

DB2/400 Manual de Consulta SQL V3R7 Ejemplos

© Copyright IBM Corp. 1995, 1996 5.38.6 - 1

Page 684: DB2/400 Manual de Consulta SQLmarce.com/docs/systems/manuales/db2_400_manual_consulta_sql_v3r7.pdf · VERSION Nota de Versión Segunda edición (noviembre de 1996) Este manual es

5.39 RELEASE La sentencia RELEASE pone una o más conexiones en e l estado pendiente de liberación. Subtemas 5.39.1 Invocación 5.39.2 Autorización 5.39.3 Sintaxis 5.39.4 Descripción 5.39.5 Notas 5.39.6 Ejemplos

DB2/400 Manual de Consulta SQL V3R7 RELEASE

© Copyright IBM Corp. 1995, 1996 5.39 - 1

Page 685: DB2/400 Manual de Consulta SQLmarce.com/docs/systems/manuales/db2_400_manual_consulta_sql_v3r7.pdf · VERSION Nota de Versión Segunda edición (noviembre de 1996) Este manual es

5.39.1 Invocación Esta sentencia sólo puede hospedarse en un programa de aplicación o emitirse interactivamente. Es una sentencia ejecut able que no puede prepararse dinámicamente. No debe especificarse en REXX. RELEASE no se permite en un programa desencadenante . RELEASE no se permite en un procedimiento externo si se llama a d icho procedimiento externo en un servidor de la aplicación remoto.

DB2/400 Manual de Consulta SQL V3R7 Invocación

© Copyright IBM Corp. 1995, 1996 5.39.1 - 1

Page 686: DB2/400 Manual de Consulta SQLmarce.com/docs/systems/manuales/db2_400_manual_consulta_sql_v3r7.pdf · VERSION Nota de Versión Segunda edición (noviembre de 1996) Este manual es

5.39.2 Autorización No se requiere ninguna.

DB2/400 Manual de Consulta SQL V3R7 Autorización

© Copyright IBM Corp. 1995, 1996 5.39.2 - 1

Page 687: DB2/400 Manual de Consulta SQLmarce.com/docs/systems/manuales/db2_400_manual_consulta_sql_v3r7.pdf · VERSION Nota de Versión Segunda edición (noviembre de 1996) Este manual es

5.39.3 Sintaxis +-------------------------------------------------- ----------------------+ ¦ ¦ ¦ >>-- RELEASE---- nombre-servidor -------------------------------------->< ¦ ¦ +- var-leng-princ --¦ ¦ ¦ +- CURRENT---------¦ ¦ ¦ ¦ +- SQL-+ ¦ ¦ ¦ +- ALL-------------+ ¦ ¦ ¦ +-------------------------------------------------- ----------------------+

DB2/400 Manual de Consulta SQL V3R7 Sintaxis

© Copyright IBM Corp. 1995, 1996 5.39.3 - 1

Page 688: DB2/400 Manual de Consulta SQLmarce.com/docs/systems/manuales/db2_400_manual_consulta_sql_v3r7.pdf · VERSION Nota de Versión Segunda edición (noviembre de 1996) Este manual es

5.39.4 Descripción nombre-servidor o var-leng-princ Identifica al servidor de la aplicación mediant e el nombre de servidor especificado o mediante el nombre de servidor q ue figura en la variable del lenguaje principal. Si se especif ica una variable del lenguaje principal, ésta: � Debe ser una variable de serie de caracteres . � No debe ir seguida de una variable de indica dor. � El nombre de servidor debe estar justificado por la izquierda en la variable del lenguaje principal y debe o bservar las reglas de creación de identificadores ordinarios. � Si la longitud del nombre de servidor es men or que la longitud de la variable del lenguaje principal, debe re llenarse con espacios en blanco por la derecha. Cuando se ejecuta la sentencia RELEASE, el nomb re del servidor especificado o el que contiene la variable del lenguaje principal debe identificar una conexión existente del grupo de activación. CURRENT Identifica la conexión actual del grupo de acti vación. El grupo de activación debe encontrarse en estado conectado . ALL o ALL SQL Identifica todas las conexiones existentes del grupo de activación (tanto locales como remotas). No se producirá ningún error ni se emitirá avis o alguno si no hay conexiones cuando se ejecuta esta sentencia. Si la sentencia RELEASE es satisfactoria, todas las conexiones identificadas adquieren el estado pendiente de libe ración y, por tanto, finalizarán durante la siguiente operación de compr omiso. Si la sentencia RELEASE no es satisfactoria, el estado de conexión del grupo de activación y de sus conexiones no cambia.

DB2/400 Manual de Consulta SQL V3R7 Descripción

© Copyright IBM Corp. 1995, 1996 5.39.4 - 1

Page 689: DB2/400 Manual de Consulta SQLmarce.com/docs/systems/manuales/db2_400_manual_consulta_sql_v3r7.pdf · VERSION Nota de Versión Segunda edición (noviembre de 1996) Este manual es

5.39.5 Notas La utilización de la semántica de CONNECT (Tipo 1) no evita la utilización de RELEASE. RELEASE no cierra los cursores, no libera ningún re curso ni impide que se siga utilizando la conexión. ROLLBACK no restablece el estado de una conexión de pendiente de liberación a retenido. Se necesitan recursos para crear y mantener conexio nes remotas. Por tanto, una conexión remota que no se vaya a utiliza r de nuevo debe estar en el estado pendiente de liberación, y las que sí vayan a utilizarse de nuevo no deben estar en el estado pendiente de libe ración. Si la conexión actual se encuentra en el estado pen diente de liberación cuando se efectúa una operación de compromiso, la c onexión finaliza y el grupo de activación adquiere el estado no conectado . En este caso, la sentencia SQL que se ejecute a continuación debe se r CONNECT o SET CONNECTION. RELEASE ALL hace que la conexión con el servidor lo cal de la aplicación adquiera el estado pendiente de liberación. Una co nexión en el estado pendiente de liberación finaliza durante una operac ión de compromiso aunque tenga un cursor abierto definido con WITH HO LD.

DB2/400 Manual de Consulta SQL V3R7 Notas

© Copyright IBM Corp. 1995, 1996 5.39.5 - 1

Page 690: DB2/400 Manual de Consulta SQLmarce.com/docs/systems/manuales/db2_400_manual_consulta_sql_v3r7.pdf · VERSION Nota de Versión Segunda edición (noviembre de 1996) Este manual es

5.39.6 Ejemplos Ejemplo 1 : La conexión con LAB1BCN no es necesaria en la uni dad de trabajo siguiente. La sentencia siguiente hará que finalic e durante la próxima operación de compromiso. EXEC SQL RELEASE LAB1BCN; Ejemplo 2 : La conexión actual no es necesaria en la siguient e unidad de trabajo. La sentencia siguiente hará que finalice durante la próxima operación de compromiso. EXEC SQL RELEASE CURRENT; Ejemplo 3 : Ninguna de las conexiones existentes son necesari as en la siguiente unidad de trabajo. La sentencia siguient e hará que finalice durante la próxima operación de compromiso. EXEC SQL RELEASE ALL;

DB2/400 Manual de Consulta SQL V3R7 Ejemplos

© Copyright IBM Corp. 1995, 1996 5.39.6 - 1

Page 691: DB2/400 Manual de Consulta SQLmarce.com/docs/systems/manuales/db2_400_manual_consulta_sql_v3r7.pdf · VERSION Nota de Versión Segunda edición (noviembre de 1996) Este manual es

| 5.40 RENAME | La sentencia RENAME redenomina una tabla, vista o í ndice. Se puede| cambiar el nombre y el nombre de objeto del sistema de la tabla, vista o| índice. Subtemas 5.40.1 Invocación 5.40.2 Autorización 5.40.3 Sintaxis 5.40.4 Descripción 5.40.5 Notas 5.40.6 Ejemplos

DB2/400 Manual de Consulta SQL V3R7 RENAME

© Copyright IBM Corp. 1995, 1996 5.40 - 1

Page 692: DB2/400 Manual de Consulta SQLmarce.com/docs/systems/manuales/db2_400_manual_consulta_sql_v3r7.pdf · VERSION Nota de Versión Segunda edición (noviembre de 1996) Este manual es

| 5.40.1 Invocación | Esta sentencia puede hospedarse en un programa de a plicación o emitirse| interactivamente. Es una sentencia ejecutable que puede prepararse| dinámicamente.

DB2/400 Manual de Consulta SQL V3R7 Invocación

© Copyright IBM Corp. 1995, 1996 5.40.1 - 1

Page 693: DB2/400 Manual de Consulta SQLmarce.com/docs/systems/manuales/db2_400_manual_consulta_sql_v3r7.pdf · VERSION Nota de Versión Segunda edición (noviembre de 1996) Este manual es

| 5.40.2 Autorización | Los privilegios del ID de autorización de la senten cia deben incluir al| menos uno de los privilegios siguientes: | � Las autorizaciones del sistema siguientes: | - Si se cambia el nombre del objeto: | - La autorización del sistema *OBJMGT en la tabla, vista o| índice a redenominar| - La autorización del sistema *EXECUTE en la biblioteca que| contiene la tabla, vista o índice a red enominar | - Si se cambia el nombre del sistema del obje to: | - La autorización del sistema *OBJMGT en la tabla, vista o| índice a redenominar| - Las autorizaciones del sistema *EXECUTE y *UPD en la| biblioteca que contiene la tabla, vista o índice a redenominar | � Autorización de administrador

DB2/400 Manual de Consulta SQL V3R7 Autorización

© Copyright IBM Corp. 1995, 1996 5.40.2 - 1

Page 694: DB2/400 Manual de Consulta SQLmarce.com/docs/systems/manuales/db2_400_manual_consulta_sql_v3r7.pdf · VERSION Nota de Versión Segunda edición (noviembre de 1996) Este manual es

| 5.40.3 Sintaxis +-------------------------------------------------- ----------------------+| ¦ ¦| ¦ +- TABLE-+ ¦| ¦ >>-- RENAME----------------- nombre-tabla ------------------------------> ¦| ¦ ¦ +- nombre-vista -+ ¦ ¦| ¦ +- INDEX-- nombre-índice --------+ ¦ ¦ ¦| ¦ >-- TO---- nombre --------------------------------------------------- -->< ¦| ¦ ¦ +- FOR SYSTEM NAME-- nombre-objeto-sistema -+ ¦ ¦| ¦ +- SYSTEM NAME-- nombre-objeto-sistema -----------------+ ¦ ¦ ¦ +-------------------------------------------------- ----------------------+

DB2/400 Manual de Consulta SQL V3R7 Sintaxis

© Copyright IBM Corp. 1995, 1996 5.40.3 - 1

Page 695: DB2/400 Manual de Consulta SQLmarce.com/docs/systems/manuales/db2_400_manual_consulta_sql_v3r7.pdf · VERSION Nota de Versión Segunda edición (noviembre de 1996) Este manual es

| 5.40.4 Descripción | TABLE nombre-tabla o nombre-vista| Identifica la tabla o vista a redenominar. El nombre-tabla o| nombre-vista debe identificar una tabla o vista que exista en e l| servidor actual, pero no debe identificar una t abla de catálogo o una| vista de catálogo. La tabla o la vista especif icada se redenomina con| el nuevo nombre. También se preservan todos lo s privilegios,| restricciones, índices, desencadenantes, vistas y archivos lógicos en| la tabla o vista. | Todos los planes de acceso que hacen referencia a la tabla o vista se| preparan implícitamente de nuevo cuando se ejec uta a continuación un| programa que utiliza el plan de acceso. Puesto que el programa se| refiere a una tabla o vista con el nombre origi nal, si no existe una| tabla o vista con el nombre original en ese mom ento, se devolverá un| valor negativo en el campo SQLCODE de SQLCA. | INDEX nombre-índice| Identifica el índice a redenominar. El nombre-índice debe identificar| un índice que exista en el servidor actual. El índice especificado se| redenomina con el nuevo nombre. Cualesquiera p lanes de acceso que| hagan referencia al índice no se ven afectados por la redenominación. | nombre| Identifica el nuevo nombre-tabla , nombre-vista o nombre-índice de la| tabla, vista o índice respectivamente. El nomb re no debe coincidir| con el de una tabla, vista o índice ya existent e en el servidor| actual. El nombre debe ser un identificador SQL no calificado.| Nombre no debe ser un identificador válido del sistema. | SYSTEM NAME nombre-objeto-sistema| Identifica el nuevo nombre-objeto-sistema de la tabla, vista o índice| respectivamente. El nombre no debe coincidir c on el de una tabla,| vista o índice ya existente en el servidor actu al. El| nombre-objeto-sistema debe ser un identificador del sistema no| calificado.

DB2/400 Manual de Consulta SQL V3R7 Descripción

© Copyright IBM Corp. 1995, 1996 5.40.4 - 1

Page 696: DB2/400 Manual de Consulta SQLmarce.com/docs/systems/manuales/db2_400_manual_consulta_sql_v3r7.pdf · VERSION Nota de Versión Segunda edición (noviembre de 1996) Este manual es

| 5.40.5 Notas | La operación de redenominación realizada depende de los dos nombres| proporcionados según se describe en la tabla siguie nte: +-------------------------------------------------- ----------------------+| ¦ Tabla 15. Operaciones de redenominación ¦ +-------------------------------------------------- ----------------------¦| ¦ Nombre-tabla, ¦ Nombre ¦ Operación ¦| ¦ nombre-vista o ¦ ¦ ¦| ¦ nombre-índice ¦ ¦ ¦ +-------------------------+------------------------ -+--------------------¦| ¦ identificador-sistema ¦ identificador-sistema ¦ Error ¦ +-------------------------+------------------------ -+--------------------¦| ¦ identificador-sistema ¦ no-identificador-sistem a¦ Se añade un nombre ¦| ¦ ¦ ¦ alternativo a la ¦| ¦ ¦ ¦ tabla, vista o ¦| ¦ ¦ ¦ índice ¦| ¦ ¦ ¦ especificado. Si ¦| ¦ ¦ ¦ ya existe un ¦| ¦ ¦ ¦ nombre ¦| ¦ ¦ ¦ alternativo, se ¦| ¦ ¦ ¦ devuelve un error. ¦ +-------------------------+------------------------ -+--------------------¦| ¦ no-identificador-sistema¦ identificador-sistema ¦ Error ¦ +-------------------------+------------------------ -+--------------------¦| ¦ no-identificador-sistema¦ no-identificador-sistem a¦ El nombre ¦| ¦ ¦ ¦ alternativo ¦| ¦ ¦ ¦ especificado de la ¦| ¦ ¦ ¦ tabla, vista o ¦| ¦ ¦ ¦ índice se cambia ¦| ¦ ¦ ¦ por el nuevo ¦| ¦ ¦ ¦ nombre ¦| ¦ ¦ ¦ alternativo. ¦ +-------------------------------------------------- ----------------------+

DB2/400 Manual de Consulta SQL V3R7 Notas

© Copyright IBM Corp. 1995, 1996 5.40.5 - 1

Page 697: DB2/400 Manual de Consulta SQLmarce.com/docs/systems/manuales/db2_400_manual_consulta_sql_v3r7.pdf · VERSION Nota de Versión Segunda edición (noviembre de 1996) Este manual es

| 5.40.6 Ejemplos | Ejemplo 1 : Redenominar una tabla denominada MI_BAND_EN por MI_BAND_EN_94.| El nombre del objeto del sistema permanecerá igual (MI_BAND_EN). | RENAME TABLE MI_BAND_EN TO MI_BAND_END_94 | Ejemplo 2 : Redenominar una tabla denominada JEFE_PROY to JE FE_PROY_94. | RENAME TABLE JEFE_PROY| TO SYSTEM NAME JEFE_PROY_94

DB2/400 Manual de Consulta SQL V3R7 Ejemplos

© Copyright IBM Corp. 1995, 1996 5.40.6 - 1

Page 698: DB2/400 Manual de Consulta SQLmarce.com/docs/systems/manuales/db2_400_manual_consulta_sql_v3r7.pdf · VERSION Nota de Versión Segunda edición (noviembre de 1996) Este manual es

5.41 REVOKE (Privilegios de paquete) Esta forma de la sentencia REVOKE elimina el privil egio para ejecutar sentencias en un paquete. Subtemas 5.41.1 Invocación 5.41.2 Autorización 5.41.3 Sintaxis 5.41.4 Descripción 5.41.5 Notas 5.41.6 Ejemplo

DB2/400 Manual de Consulta SQL V3R7 REVOKE (Privilegios de paquete)

© Copyright IBM Corp. 1995, 1996 5.41 - 1

Page 699: DB2/400 Manual de Consulta SQLmarce.com/docs/systems/manuales/db2_400_manual_consulta_sql_v3r7.pdf · VERSION Nota de Versión Segunda edición (noviembre de 1996) Este manual es

5.41.1 Invocación Esta sentencia puede hospedarse en un programa de a plicación o emitirse interactivamente. Es una sentencia ejecutable que puede prepararse dinámicamente.

DB2/400 Manual de Consulta SQL V3R7 Invocación

© Copyright IBM Corp. 1995, 1996 5.41.1 - 1

Page 700: DB2/400 Manual de Consulta SQLmarce.com/docs/systems/manuales/db2_400_manual_consulta_sql_v3r7.pdf · VERSION Nota de Versión Segunda edición (noviembre de 1996) Este manual es

5.41.2 Autorización Los privilegios del ID de autorización de la senten cia deben incluir al menos uno de los siguientes: � Para cada paquete que se identifica en la senten cia: - Todos los privilegios especificados en la s entencia - La autorización del sistema *OBJMGT sobre e l paquete - La autorización del sistema *EXECUTE sobre la biblioteca que contiene el paquete � Autorización de administrador

DB2/400 Manual de Consulta SQL V3R7 Autorización

© Copyright IBM Corp. 1995, 1996 5.41.2 - 1

Page 701: DB2/400 Manual de Consulta SQLmarce.com/docs/systems/manuales/db2_400_manual_consulta_sql_v3r7.pdf · VERSION Nota de Versión Segunda edición (noviembre de 1996) Este manual es

5.41.3 Sintaxis +-------------------------------------------------- ----------------------+ ¦ ¦ ¦ +- PRIVILEGES-+ (2) ¦ ¦ >>-- REVOKE---- ALL-------------------- ON PACKAGE----------------------> ¦ ¦ ¦ <-,------------+ ¦ ¦ ¦ ¦ (1) ¦ ¦ ¦ ¦ +---- EXECUTE----------+ ¦ ¦ +- ALTER------+ ¦ ¦ ¦ ¦ <-,--------------+ <-,----------------- ----+ ¦ ¦ >---- nombre-paquete ---- FROM----- nombre-autorización ----------------->< ¦ ¦ +- PUBLIC--------------+ ¦ ¦ ¦ ¦ Notas: ¦ ¦ (1) Se puede utilizar la palabra clave RUN como sinónimo de EXECUTE. ¦ ¦ ¦ ¦ (2) Se puede utilizar la palabra clave PROGRAM c omo sinónimo de ¦ ¦ PACKAGE. ¦ ¦ ¦ +-------------------------------------------------- ----------------------+

DB2/400 Manual de Consulta SQL V3R7 Sintaxis

© Copyright IBM Corp. 1995, 1996 5.41.3 - 1

Page 702: DB2/400 Manual de Consulta SQLmarce.com/docs/systems/manuales/db2_400_manual_consulta_sql_v3r7.pdf · VERSION Nota de Versión Segunda edición (noviembre de 1996) Este manual es

5.41.4 Descripción ALL o ALL PRIVILEGES Revoca uno o más privilegios de tabla de cada nombre-autorización . Los privilegios revocados son los privilegios d e los paquetes identificados a los que se otorgaron los nombres-autorizaciones . Observe que revocar todos los privilegios (ALL PRIVILEGES) sobre un paquete no es lo mismo que revocar la autorizac ión del sistema *ALL. Si no utiliza ALL, debe emplear una o varias de las palabras claves que se indican a continuación. Cada palabra cl ave revoca el privilegio descrito. ALTER Revoca el privilegio de utilizar las sentencias COMMENT ON y LABEL ON. EXECUTE Revoca el privilegio de utilizar sentencias en un paquete. ON PACKAGE nombre-paquete Identifica los paquetes cuyos privilegios va a revocar. El nombre-paquete debe identificar un paquete que exista en el servi dor actual. FROM Identifica a quién se le revocan los privilegio s. nombre-autorización,... Lista uno o más ID de autorización. No esp ecifique el mismo nombre-autorización más de una vez. PUBLIC Revoca los privilegios especificados de PUB LIC.

DB2/400 Manual de Consulta SQL V3R7 Descripción

© Copyright IBM Corp. 1995, 1996 5.41.4 - 1

Page 703: DB2/400 Manual de Consulta SQLmarce.com/docs/systems/manuales/db2_400_manual_consulta_sql_v3r7.pdf · VERSION Nota de Versión Segunda edición (noviembre de 1996) Este manual es

5.41.5 Notas Si revoca un privilegio sobre un paquete, esta acci ón anulará los privilegios otorgados sobre dicho paquete, independ ientemente de quién los haya otorgado. Cuando se revoca un privilegio de paquete, se revoc an las autorizaciones del sistema AS/400 correspondientes. Para obtener información acerca de las autorizaciones del sistema AS/400 que correspon den a los privilegios SQL, consulte el apartado "GRANT (Privilegios de paquete)" en el tema 5.31 .

DB2/400 Manual de Consulta SQL V3R7 Notas

© Copyright IBM Corp. 1995, 1996 5.41.5 - 1

Page 704: DB2/400 Manual de Consulta SQLmarce.com/docs/systems/manuales/db2_400_manual_consulta_sql_v3r7.pdf · VERSION Nota de Versión Segunda edición (noviembre de 1996) Este manual es

5.41.6 Ejemplo Revocar el privilegio EXECUTE sobre el paquete DATO SCORP.PAQA de PUBLIC. REVOKE EXECUTE ON PACKAGE DATOSCORP.PAQA FROM PUBLIC

DB2/400 Manual de Consulta SQL V3R7 Ejemplo

© Copyright IBM Corp. 1995, 1996 5.41.6 - 1

Page 705: DB2/400 Manual de Consulta SQLmarce.com/docs/systems/manuales/db2_400_manual_consulta_sql_v3r7.pdf · VERSION Nota de Versión Segunda edición (noviembre de 1996) Este manual es

5.42 REVOKE (Privilegios de tabla) Esta forma de la sentencia REVOKE elimina privilegi os sobre una tabla o vista. Subtemas 5.42.1 Invocación 5.42.2 Autorización 5.42.3 Sintaxis 5.42.4 Descripción 5.42.5 Notas 5.42.6 Ejemplos

DB2/400 Manual de Consulta SQL V3R7 REVOKE (Privilegios de tabla)

© Copyright IBM Corp. 1995, 1996 5.42 - 1

Page 706: DB2/400 Manual de Consulta SQLmarce.com/docs/systems/manuales/db2_400_manual_consulta_sql_v3r7.pdf · VERSION Nota de Versión Segunda edición (noviembre de 1996) Este manual es

5.42.1 Invocación Esta sentencia puede hospedarse en un programa de a plicación o emitirse interactivamente. Es una sentencia ejecutable que puede prepararse dinámicamente.

DB2/400 Manual de Consulta SQL V3R7 Invocación

© Copyright IBM Corp. 1995, 1996 5.42.1 - 1

Page 707: DB2/400 Manual de Consulta SQLmarce.com/docs/systems/manuales/db2_400_manual_consulta_sql_v3r7.pdf · VERSION Nota de Versión Segunda edición (noviembre de 1996) Este manual es

5.42.2 Autorización Los privilegios del ID de autorización de la senten cia deben incluir al menos uno de los siguientes: � Para cada tabla o vista identificada en la sente ncia: - Todos los privilegios especificados en la s entencia - La autorización del sistema *OBJMGT sobre l a tabla o la vista - La autorización del sistema *EXECUTE sobre la biblioteca que contiene la tabla o la vista � Autorización de administrador

DB2/400 Manual de Consulta SQL V3R7 Autorización

© Copyright IBM Corp. 1995, 1996 5.42.2 - 1

Page 708: DB2/400 Manual de Consulta SQLmarce.com/docs/systems/manuales/db2_400_manual_consulta_sql_v3r7.pdf · VERSION Nota de Versión Segunda edición (noviembre de 1996) Este manual es

5.42.3 Sintaxis +-------------------------------------------------- ----------------------+ ¦ ¦ ¦ +- PRIVILEGES-+ +- TABLE-+ ¦ ¦ >>-- REVOKE---- ALL-------------------- ON------------------------------> ¦ ¦ ¦ <-,------------+ ¦ ¦ ¦ +---- ALTER------------+ ¦ ¦ +- DELETE-----¦ ¦ ¦ +- INDEX------¦ ¦ ¦ +- INSERT-----¦ ¦ ¦ +- REFERENCES-¦ ¦ ¦ +- SELECT-----¦ ¦ ¦ +- UPDATE-----+ ¦ ¦ ¦ ¦ <-,--------------+ <-,----------------- ----+ ¦ ¦ >----- nombre-tabla ----- FROM----- nombre-autorización ----------------->< ¦ ¦ +- nombre-vista -+ +- PUBLIC--------------+ ¦ ¦ ¦ +-------------------------------------------------- ----------------------+

DB2/400 Manual de Consulta SQL V3R7 Sintaxis

© Copyright IBM Corp. 1995, 1996 5.42.3 - 1

Page 709: DB2/400 Manual de Consulta SQLmarce.com/docs/systems/manuales/db2_400_manual_consulta_sql_v3r7.pdf · VERSION Nota de Versión Segunda edición (noviembre de 1996) Este manual es

5.42.4 Descripción ALL o ALL PRIVILEGES Revoca uno o más privilegios de tabla de cada nombre-autorización . Los privilegios revocados son los privilegios d e las tablas y vistas identificadas a las que se otorgaron los nombres-autorizaciones . Observe que revocar ALL PRIVILEGES sobre una ta bla o vista no es lo mismo que revocar la autorización del sistema * ALL. Si no utiliza ALL, debe emplear una o varias de las palabras claves que se indican a continuación. Cada palabra cl ave revoca el privilegio descrito, pero sólo si se aplica a l as tablas y vistas denominadas en la cláusula ON. ALTER Revoca el privilegio de utilizar la sentencia A LTER TABLE sobre las tablas. Revoca el privilegio de utilizar las s entencias COMMENT ON y LABEL ON en tablas y vistas. DELETE Revoca el privilegio de utilizar la sentencia D ELETE. INDEX Revoca el privilegio de utilizar la sentencia C REATE INDEX. INSERT Revoca el privilegio de utilizar la sentencia I NSERT. REFERENCES Revoca el privilegio de añadir una restricción de referencia en la que la tabla es la tabla padre. SELECT Revoca el privilegio de utilizar las sentencias SELECT o CREATE VIEW. UPDATE Revoca el privilegio de utilizar la sentencia U PDATE. ON nombre-tabla o nombre-vista,... Identifica la tabla o la vista sobre la cual va a revocar los privilegios. El nombre-tabla o nombre-vista debe identificar una tabla o vista que exista en el servidor actual. FROM Identifica a quién se le revocan los privilegio s. nombre-autorización,... Lista uno o más ID de autorización. No esp ecifique el mismo nombre de autorización más de una vez. PUBLIC Revoca los privilegios especificados de PUB LIC.

DB2/400 Manual de Consulta SQL V3R7 Descripción

© Copyright IBM Corp. 1995, 1996 5.42.4 - 1

Page 710: DB2/400 Manual de Consulta SQLmarce.com/docs/systems/manuales/db2_400_manual_consulta_sql_v3r7.pdf · VERSION Nota de Versión Segunda edición (noviembre de 1996) Este manual es

5.42.5 Notas Autorizaciones del sistema AS/400 : Al revocar el privilegio INDEX o ALTER se revoca la autorización del sistema AS/400 *OBJAL TER. Cuando se revoca un privilegio de tabla o vista, se revocan las autorizaciones del sistema AS/400 correspondientes, excepto: � Al revocar autorizaciones a una tabla o vista, * OBJOPR sólo se revoca cuando se han revocado *ADD, *DLT, *READ y *UPD . � Al revocar las autorizaciones a una vista, éstas no se revocarán de las tablas o vistas a las que se hace referenci a en la subselección de la definición de vista. Si se va a revocar más de una autorización del sist ema con un privilegio SQL y alguna de las autorizaciones no se puede revo car, se emitirá un aviso y no se revocará ninguna autorización para di cho privilegio. Para obtener información acerca de las autorizacion es del sistema AS/400 que corresponden a privilegios SQL, consulte el apa rtado "GRANT (Privilegios de tabla)" en el tema 5.32 . Múltiples concesiones : Si se otorga el mismo privilegio al mismo usuari o en más de una ocasión, revocar dicho privilegio al usuario anulará todas las concesiones. Si se revoca un privilegio, se anula cualquier conc esión de ese privilegio, independientemente de quién lo haya oto rgado. La única manera de revocar WITH GRANT OPTION es rev ocando ALL.

DB2/400 Manual de Consulta SQL V3R7 Notas

© Copyright IBM Corp. 1995, 1996 5.42.5 - 1

Page 711: DB2/400 Manual de Consulta SQLmarce.com/docs/systems/manuales/db2_400_manual_consulta_sql_v3r7.pdf · VERSION Nota de Versión Segunda edición (noviembre de 1996) Este manual es

5.42.6 Ejemplos Ejemplo 1 : Revocar los privilegios SELECT sobre la tabla CORPDATA.EMPLEADO al usuario GARCIA. REVOKE SELECT ON TABLE CORPDATA.EMPLEADO FROM GARCIA Ejemplo 2 : Revocar privilegios de actualización sobre la ta bla CORPDATA.EMPLEADO, que se habían otorgado anteriorm ente a todos los usuarios locales. Observe que las concesiones hech as a usuarios específicos no se ven afectadas. REVOKE UPDATE ON TABLE CORPDATA.EMPLEADO FROM PUBLIC Ejemplo 3 : Revocar todos los privilegios sobre la tabla COR PDATA.EMPLEADO a los usuarios GONZALEZ y MARTINEZ. REVOKE ALL ON TABLE CORPDATA.EMPLEADO FROM GONZALEZ,MARTINEZ

DB2/400 Manual de Consulta SQL V3R7 Ejemplos

© Copyright IBM Corp. 1995, 1996 5.42.6 - 1

Page 712: DB2/400 Manual de Consulta SQLmarce.com/docs/systems/manuales/db2_400_manual_consulta_sql_v3r7.pdf · VERSION Nota de Versión Segunda edición (noviembre de 1996) Este manual es

5.43 ROLLBACK La sentencia ROLLBACK se utiliza para finalizar una unidad de trabajo y restituir los cambios de la base de datos que ha re alizado esta unidad de trabajo. Subtemas 5.43.1 Invocación 5.43.2 Autorización 5.43.3 Sintaxis 5.43.4 Descripción 5.43.5 Notas 5.43.6 Ejemplo

DB2/400 Manual de Consulta SQL V3R7 ROLLBACK

© Copyright IBM Corp. 1995, 1996 5.43 - 1

Page 713: DB2/400 Manual de Consulta SQLmarce.com/docs/systems/manuales/db2_400_manual_consulta_sql_v3r7.pdf · VERSION Nota de Versión Segunda edición (noviembre de 1996) Este manual es

5.43.1 Invocación Esta sentencia puede hospedarse en un programa de a plicación o emitirse interactivamente. Es una sentencia ejecutable que puede prepararse dinámicamente. ROLLBACK no se permite en un programa desencadenant e si el programa desencadenante y el programa que desencadena se eje cutan bajo la misma definición de compromiso. ROLLBACK no se permite e n un procedimiento externo si este procedimiento externo y el programa que ha emitido la sentencia CALL se ejecutan bajo la misma definición de compromiso.

DB2/400 Manual de Consulta SQL V3R7 Invocación

© Copyright IBM Corp. 1995, 1996 5.43.1 - 1

Page 714: DB2/400 Manual de Consulta SQLmarce.com/docs/systems/manuales/db2_400_manual_consulta_sql_v3r7.pdf · VERSION Nota de Versión Segunda edición (noviembre de 1996) Este manual es

5.43.2 Autorización No se requiere ninguna.

DB2/400 Manual de Consulta SQL V3R7 Autorización

© Copyright IBM Corp. 1995, 1996 5.43.2 - 1

Page 715: DB2/400 Manual de Consulta SQLmarce.com/docs/systems/manuales/db2_400_manual_consulta_sql_v3r7.pdf · VERSION Nota de Versión Segunda edición (noviembre de 1996) Este manual es

5.43.3 Sintaxis +-------------------------------------------------- ----------------------+ ¦ ¦ ¦ +- WORK-+ ¦ ¦ >>-- ROLLBACK--------------------------------------------------- ----->< ¦ ¦ +- HOLD-+ ¦ ¦ ¦ +-------------------------------------------------- ----------------------+

DB2/400 Manual de Consulta SQL V3R7 Sintaxis

© Copyright IBM Corp. 1995, 1996 5.43.3 - 1

Page 716: DB2/400 Manual de Consulta SQLmarce.com/docs/systems/manuales/db2_400_manual_consulta_sql_v3r7.pdf · VERSION Nota de Versión Segunda edición (noviembre de 1996) Este manual es

5.43.4 Descripción La sentencia ROLLBACK finaliza la unidad de trabajo en la que se ejecuta e inicia una unidad de trabajo nueva. Se restituyen todos los cambios realizados por las sentencias ALTER, CALL, COMMENT ON, CREATE, DELETE, DROP (excepto DROP COLLECTION), GRANT, INSERT, LABE L ON, REVOKE y UPDATE ejecutadas durante la unidad de trabajo. WORK ROLLBACK WORK tiene el mismo efecto que ROLLBAC K. HOLD Indica una retención sobre los recursos. Si se especifica, los cursores hasta ese momento abiertos no se cierr an, las sentencias SQL preparadas se conservan y se mantienen todos lo s recursos adquiridos durante la unidad de trabajo, a excepción de lo s bloqueos de filas de tablas. No obstante, se liberan los bloqueos s obre filas específicas adquiridas de forma implícita durante la unidad de trabajo. Las siguientes afirmaciones son verdaderas para la definición de compromiso de esta unidad de trabajo si se omit e HOLD: � Se cierran los cursores abiertos bajo la def inición de compromiso de esta unidad de trabajo. � Se eliminan las sentencias SQL preparadas. � Se liberan los bloqueos de tabla adquiridos por la sentencia LOCK TABLE bajo la definición de compromiso de e sta unidad de trabajo. Al final de una operación ROLLBACK HOLD, la pos ición del cursor es la misma que al principio de la unidad de trabajo.

DB2/400 Manual de Consulta SQL V3R7 Descripción

© Copyright IBM Corp. 1995, 1996 5.43.4 - 1

Page 717: DB2/400 Manual de Consulta SQLmarce.com/docs/systems/manuales/db2_400_manual_consulta_sql_v3r7.pdf · VERSION Nota de Versión Segunda edición (noviembre de 1996) Este manual es

5.43.5 Notas La finalización del grupo de activación por omisión provoca una retrotracción implícita. Por lo tanto, debe emitir se una sentencia COMMIT o ROLLBACK explícita antes del final del grupo de a ctivación por omisión. Se realiza automáticamente una operación ROLLBACK c uando: 1. El grupo de activación por omisión finaliza sin que se emita una operación COMMIT final. 2. Se produce una anomalía que impide que el grupo de activación finalice su trabajo (por ejemplo, una caída de tensión). Si la unidad de trabajo tiene el estado prepara do debido a que se estaba realizando una operación COMMIT cuando s e produjo la anomalía, no se realizará la retrotracción. En su lugar, se efectuará una resincronización de todas las conexiones relaci onadas con la unidad de trabajo. Para obtener más información, consult e el manual Backup and Recovery - Advanced . 3. Se produce una anomalía que provoca un corte en la conexión con el servidor de una aplicación (por ejemplo, una an omalía en la línea de comunicaciones). Si la unidad de trabajo tiene el estado prepara do debido a que se estaba realizando una operación COMMIT cuando s e produjo la anomalía, no se realizará la retrotracción. En su lugar, se efectuará una resincronización de todas las conexiones relaci onadas con la unidad de trabajo. Para obtener más información, consult e el manual Backup and Recovery - Advanced . 4. Un grupo de activación que no es por omisión fi naliza de forma anormal. Una unidad de trabajo puede incluir el proceso de h asta 524288 filas, incluyendo las filas recuperadas durante una senten cia SELECT INTO o FETCH, (35) y las filas insertadas, suprimidas o actualizadas como parte de las operaciones INSERT, DELETE y UPDATE. (36) Las operaciones de compromiso y retrotracción no af ectan a la sentencia DROP COLLECTION y, por tanto, no se permite esta se ntencia en un programa de aplicación que también especifique COMMIT(*CHG), COMMIT(*CS), COMMIT(*ALL) o COMMIT(*RR). Consulte las "Notas" en el tema 5.9.5 del apartado COMMIT para obtener información acerca de cómo determinar la definición de compromiso que utiliza SQL. Los cursores asociados con una sentencia preparada que está destruida no se pueden abrir hasta que la sentencia está prepara da de nuevo. ROLLBACK no ejerce ningún efecto sobre el estado de las cone xiones. Si, en una unidad de trabajo, CLOSE va seguido de R OLLBACK, todos los cambios realizados en la unidad de trabajo se resti tuyen. La propia sentencia CLOSE no se restituye y el archivo no se vuelve a abrir. (35) A menos que haya especificado COMMIT(*CHG) o COMMIT(*CS), en cuyo caso estas filas no se incluyen en este total. (36) Este límite incluye también: � Todos los registros a los que se accede o se cambian mediante archivos abiertos bajo el control de compromiso mediante el proceso de archivos en lenguaje de alto nivel � Todas las filas suprimidas, actualizadas o i nsertadas como resultado de un desencadenante o de la regla de supresión de integridad de referencia de CA SCADE, SET NULL, o SET DEFAULT.

DB2/400 Manual de Consulta SQL V3R7 Notas

© Copyright IBM Corp. 1995, 1996 5.43.5 - 1

Page 718: DB2/400 Manual de Consulta SQLmarce.com/docs/systems/manuales/db2_400_manual_consulta_sql_v3r7.pdf · VERSION Nota de Versión Segunda edición (noviembre de 1996) Este manual es

5.43.6 Ejemplo Véanse los ejemplos de COMMIT de la página 5.9 para saber cómo se utiliza la sentencia ROLLBACK.

DB2/400 Manual de Consulta SQL V3R7 Ejemplo

© Copyright IBM Corp. 1995, 1996 5.43.6 - 1

Page 719: DB2/400 Manual de Consulta SQLmarce.com/docs/systems/manuales/db2_400_manual_consulta_sql_v3r7.pdf · VERSION Nota de Versión Segunda edición (noviembre de 1996) Este manual es

5.44 SELECT INTO La sentencia SELECT INTO genera una tabla de result ados que tiene una fila como máximo y asigna los valores de esa fila a vari ables del lenguaje principal. Si la tabla está vacía, la sentencia as igna +100 a SQLCODE y '02000' a SQLSTATE, y no asigna valores a las varia bles del lenguaje principal. Si más de una fila cumple la condición de búsqueda, el proceso de la sentencia se termina y se produce un error. Subtemas 5.44.1 Invocación 5.44.2 Autorización 5.44.3 Sintaxis 5.44.4 Descripción 5.44.5 Ejemplos

DB2/400 Manual de Consulta SQL V3R7 SELECT INTO

© Copyright IBM Corp. 1995, 1996 5.44 - 1

Page 720: DB2/400 Manual de Consulta SQLmarce.com/docs/systems/manuales/db2_400_manual_consulta_sql_v3r7.pdf · VERSION Nota de Versión Segunda edición (noviembre de 1996) Este manual es

5.44.1 Invocación Esta sentencia sólo puede hospedarse en un programa de aplicación. Es una sentencia ejecutable que no puede prepararse dinámi camente. No debe especificarse en REXX.

DB2/400 Manual de Consulta SQL V3R7 Invocación

© Copyright IBM Corp. 1995, 1996 5.44.1 - 1

Page 721: DB2/400 Manual de Consulta SQLmarce.com/docs/systems/manuales/db2_400_manual_consulta_sql_v3r7.pdf · VERSION Nota de Versión Segunda edición (noviembre de 1996) Este manual es

5.44.2 Autorización Los privilegios del ID de autorización de la senten cia deben incluir al menos uno de los siguientes: � Para cada tabla o vista identificada en la sente ncia, - El privilegio SELECT sobre la tabla o vista , y - La autorización del sistema *EXECUTE sobre la biblioteca que contiene la tabla o la vista � Autorización de administrador El ID de autorización de la sentencia tiene el priv ilegio SELECT sobre una tabla si: � Es el propietario de la tabla. � Se le ha otorgado el privilegio SELECT sobre la tabla, o � Se le han otorgado las autorizaciones del sistem a *OBJOPR y *READ sobre la tabla. El ID de autorización de la sentencia tiene el priv ilegio SELECT sobre una vista si: � Es el propietario de la vista, � Se le ha otorgado el privilegio SELECT sobre la vista, o � Se le han otorgado las autorizaciones del sistem a *OBJOPR y *READ sobre la vista y la autorización del sistema *R EAD sobre todas las tablas y vistas de las que depende esta vista d irecta o indirectamente. Es decir, sobre todas las tabl as y vistas a las que se hace referencia en la definición de la vista , y si se hace referencia a una vista, sobre todas las tablas y vistas a las que se hace referencia en la definición de la misma, y así sucesivamente.

DB2/400 Manual de Consulta SQL V3R7 Autorización

© Copyright IBM Corp. 1995, 1996 5.44.2 - 1

Page 722: DB2/400 Manual de Consulta SQLmarce.com/docs/systems/manuales/db2_400_manual_consulta_sql_v3r7.pdf · VERSION Nota de Versión Segunda edición (noviembre de 1996) Este manual es

5.44.3 Sintaxis +-------------------------------------------------- ----------------------+ ¦ ¦ ¦ <-,--------------+ ¦ ¦ >-- cláusula-select -- INTO---- var-leng-princ ---- cláusula-from ----------> ¦ ¦ ¦ ¦ >------------------------------------------------ --------------------> ¦ ¦ +- cláusula-where -+ +- cláusula-group-by -+ +- cláusula-having -+ ¦ ¦ ¦ ¦ >------------------------------------------------ --------------------> ¦ ¦ +- cláusula-order-by -+ +- cláusula-isolation -+ ¦ ¦ ¦ +-------------------------------------------------- ----------------------+

DB2/400 Manual de Consulta SQL V3R7 Sintaxis

© Copyright IBM Corp. 1995, 1996 5.44.3 - 1

Page 723: DB2/400 Manual de Consulta SQLmarce.com/docs/systems/manuales/db2_400_manual_consulta_sql_v3r7.pdf · VERSION Nota de Versión Segunda edición (noviembre de 1996) Este manual es

5.44.4 Descripción La tabla de resultados se deriva evaluando la cláusula-from , la cláusula-where , la cláusula-group-by , la cláusula-having , la cláusula-select y la cláusula-order-by , por este orden. Consulte el Capítulo 4, "Consultas" en el tema 4.0 para obtener una descripción de las cláusulas select , from , where , group-by , having ,| order-by e isolation . . Observe que la agrupación, tal como la especifica l a cláusula group by , está muy relacionada con una tabla de resultados de más de una fila, y que probablemente será necesaria una cláusula having para reducir la tabla a una sola fila. INTO variable del lenguaje principal,... Identifica una o varias variables o estructuras del lenguaje principal que deben declararse en el programa de acuerdo con las reglas de declaración de las variables y las estructuras del lenguaje principal. En el formato operativo de esta cláusula, una r eferencia a una estructura del lenguaje principal se sustituye por una referencia a cada una de sus variables. El primer valor de la fila de resultados se asigna a la primera variable del lenguaje pr incipal de la lista, el segundo valor a la segunda variable del lenguaj e principal, y así sucesivamente. El tipo de datos de cada variab le del lenguaje principal debe ser compatible con su columna co rrespondiente. Cada asignación a una variable del lenguaje pri ncipal se realiza según las reglas descritas en el Capítulo 2 . Si el número de variables es menor que el número de valores de la fila, el c ampo SQLWARN3 de la SQLCA se establece en 'W'. Observe que no se p roducirá aviso alguno si hay más variables del lenguaje principal que columnas de resultados. Si el valor es nulo, debe facilita rse una variable de indicador. Si se produce un error de asignació n, el valor de dicha variable del lenguaje principal y de todas las que le siguen es imprevisible. Todos los valores que ya se haya n asignado a variables permanecen asignados. Si se produce cualquiera de los errores de corr elación de datos siguientes al evaluar una columna de resultados en la cláusula-select, el resultado es un valor nulo: � Los caracteres no han podido convertirse � Error en conversión numérica (subdesbordamie nto o desbordamiento) � Error en expresión aritmética (división por 0) � Error en conversión de fecha o de indicación de la hora (fecha o indicación de la hora no comprendida en el rango válido de fechas para el formato especificado) � Representación de serie del valor de fecha y hora no válida � Los datos mixtos no se han formado correctam ente � Un valor numérico no es válido � El argumento de la función escalar SUBSTR es tá fuera de rango Como en cualquier otro caso de valor nulo, se d ebe suministrar una variable de indicador. El valor de la variable del lenguaje principal es indefinido. En este caso, sin embargo, la v ariable de indicador se establece en -2. El proceso de la sentencia co ntinuará como si el error no se hubiera producido. (No obstante, e ste error provoca un SQLCODE positivo.) Si no se proporciona una va riable de indicador, se devolverá un valor negativo en el campo SQLCODE de la SQLCA. El valor de la variable o de cualquier variable posterio r es imprevisible. Todos los valores que ya se hayan asignado a va riables permanecen asignados. Si se produce un error (SQLCODE igual a -811) d ebido a que la tabla de resultados tiene más de una fila, se asignan va lores a todas las variables del lenguaje principal, pero la fila origen de los valores permanece indefinida e imprevisible.

DB2/400 Manual de Consulta SQL V3R7 Descripción

© Copyright IBM Corp. 1995, 1996 5.44.4 - 1

Page 724: DB2/400 Manual de Consulta SQLmarce.com/docs/systems/manuales/db2_400_manual_consulta_sql_v3r7.pdf · VERSION Nota de Versión Segunda edición (noviembre de 1996) Este manual es

5.44.5 Ejemplos Ejemplo 1 : Utilizando una sentencia de programa COBOL, pone r el sueldo máximo (SUELDO) de la tabla EMPLEADO en la variable del lenguaje principal SUELDO-MAX (dec(9,2)) con el nivel de aislamiento L ectura comprometida (CS). EXEC SQL SELECT MAX(SUELDO) INTO :SUELDO-MAX FROM EMPLEADO WITH CS END-EXEC. Ejemplo 2 : Utilizando una sentencia de programa PL/I, selec cionar la fila de la tabla EMPLEADO con un valor de número de empl eados (NUMEMP) igual al almacenado en la variable del lenguaje principal EM P_SISPRAL car(6)). A continuación, poner el apellido (APELL) y el nivel de formación (NIVELED) de esa fila en las variables del lenguaje principal NOMB_SISPRAL (car(20)) y ED_SISPRAL (entero). EXEC SQL SELECT APELL, NIVELED INTO :NOMB_SISPRAL, :ED_SISPRAL FROM EMPLEADO WHERE NUMEMP = :EMP_SISPRAL;

DB2/400 Manual de Consulta SQL V3R7 Ejemplos

© Copyright IBM Corp. 1995, 1996 5.44.5 - 1

Page 725: DB2/400 Manual de Consulta SQLmarce.com/docs/systems/manuales/db2_400_manual_consulta_sql_v3r7.pdf · VERSION Nota de Versión Segunda edición (noviembre de 1996) Este manual es

5.45 SET CONNECTION La sentencia SET CONNECTION establece el servidor a ctual del grupo de activación identificando una de sus conexiones exis tentes. Subtemas 5.45.1 Invocación 5.45.2 Autorización 5.45.3 Sintaxis 5.45.4 Descripción 5.45.5 Notas 5.45.6 Ejemplo

DB2/400 Manual de Consulta SQL V3R7 SET CONNECTION

© Copyright IBM Corp. 1995, 1996 5.45 - 1

Page 726: DB2/400 Manual de Consulta SQLmarce.com/docs/systems/manuales/db2_400_manual_consulta_sql_v3r7.pdf · VERSION Nota de Versión Segunda edición (noviembre de 1996) Este manual es

5.45.1 Invocación Esta sentencia sólo puede hospedarse en un programa de aplicación o emitirse interactivamente. Es una sentencia ejecut able que no puede prepararse dinámicamente. No debe especificarse en REXX. SET CONNECTION no se permite en un programa desenca denante. SET CONNECTION no se permite en un procedimiento extern o si se llama a este procedimiento en un servidor remoto de la aplicació n.

DB2/400 Manual de Consulta SQL V3R7 Invocación

© Copyright IBM Corp. 1995, 1996 5.45.1 - 1

Page 727: DB2/400 Manual de Consulta SQLmarce.com/docs/systems/manuales/db2_400_manual_consulta_sql_v3r7.pdf · VERSION Nota de Versión Segunda edición (noviembre de 1996) Este manual es

5.45.2 Autorización No se requiere ninguna.

DB2/400 Manual de Consulta SQL V3R7 Autorización

© Copyright IBM Corp. 1995, 1996 5.45.2 - 1

Page 728: DB2/400 Manual de Consulta SQLmarce.com/docs/systems/manuales/db2_400_manual_consulta_sql_v3r7.pdf · VERSION Nota de Versión Segunda edición (noviembre de 1996) Este manual es

5.45.3 Sintaxis +-------------------------------------------------- ----------------------+ ¦ ¦ ¦ >>-- SET CONNECTION---- nombre-servidor ------------------------------->< ¦ ¦ +- var-leng-princ --+ ¦ ¦ ¦ +-------------------------------------------------- ----------------------+

DB2/400 Manual de Consulta SQL V3R7 Sintaxis

© Copyright IBM Corp. 1995, 1996 5.45.3 - 1

Page 729: DB2/400 Manual de Consulta SQLmarce.com/docs/systems/manuales/db2_400_manual_consulta_sql_v3r7.pdf · VERSION Nota de Versión Segunda edición (noviembre de 1996) Este manual es

5.45.4 Descripción nombre-servidor o var-leng-princ Identifica la conexión mediante el nombre del s ervidor especificado o el nombre del servidor que figura en la variabl e del lenguaje principal. Si se especifica una variable del l enguaje principal, ésta: � Debe ser una variable de serie de caracteres . � No debe ir seguida de una variable de indica dor. � El nombre de servidor debe estar justificado por la izquierda en la variable del lenguaje principal y debe o bservar las reglas de creación de identificadores ordinarios. � Si la longitud del nombre de servidor es men or que la longitud de la variable del lenguaje principal, debe re llenarse con espacios en blanco por la derecha. Supongamos que S es el nombre del servidor especifi cado o el nombre del servidor que figura en la variable del lenguaje pri ncipal. S debe identificar una conexión existente del proceso de a plicación. Si S identifica la conexión actual, el estado de S y de todas las demás conexiones del proceso de aplicación no se modifica , pero la información acerca de S se coloca en el campo SQLERRP de la SQL CA. Las reglas siguientes se aplican cuando S identifica una conex ión latente. Si la sentencia SET CONNECTION es satisfactoria: � La conexión S adquiere el estado actual. � S se coloca en el registro especial CURRENT SERV ER. � La información acerca del servidor de la aplicac ión S se coloca en el campo SQLERRP de la SQLCA. Si el servidor de l a aplicación es un producto de bases de datos relacionales de IBM, la información tiene el formato pppvvrrm , donde: - ppp el producto: ARI para SQL/DS* DSN para DB2 para MVS QSQ para DB2 para OS/400 SQL para todos los demás productos DB2| - vv es un identificador de versión dos dígitos tal com o '04' - rr es un identificador de release de dos dígitos, por ejemplo '01' - m es el nivel de modificación de un dígito, tal como '0' | Por ejemplo, si el servidor de la aplicación es la versión 4 de DB2| para MVS, el valor de SQLERRP es 'DSN04010'. � La información adicional acerca de la conexión s e coloca en el campo SQLERRD(4) de la SQLCA. SQLERRD(4) contendrá v alores que indicarán si el servidor de la aplicación permite que se lle ven a cabo actualizaciones que puedan comprometerse. A co ntinuación se facilita una lista de valores y su significado para el c ampo SQLERRD(4) de la SQLCA en CONNECT: - 1 - Se pueden realizar actualizaciones que se pueden comprometer y la conexión utiliza una conversación no p rotegida, es una conexión establecida con el programa contro lador de un peticionario de la aplicación mediante una sentencia CONNECT (Tipo 1), o es una conexión local establecida med iante una sentencia CONNECT (Tipo 1). - 2 - No se pueden realizar actualizaciones que se puedan comprometer; la conversación no está proteg ida. - 3 - No se sabe si se pueden realizar actua lizaciones que se puedan comprometer; la conversación está pr otegida. - 4 - No se sabe si se pueden realizar actua lizaciones que se puedan comprometer; la conversación no está protegida. - 5 - No se sabe si se pueden realizar actua lizaciones que se puedan comprometer y la conexión es una con exión local establecida mediante una sentencia CONNECT (Tipo 2) o u na conexión con el programa controlador de un peticionario de la aplicación establecida mediante una sentencia CONNECT (Tipo 2). � La información adicional acerca de la conexión s e coloca en el campo SQLERRMC de la SQLCA. Consulte el Apéndice B, "Área de comunicaciones SQL" en el tema B.0 para obtener una descripción de la información del campo SQLERRMC. � Todas las conexiones actuales anteriores adquier en el estado latente. Si la sentencia SET CONNECTION no es satisfactoria, el estado de conexión del grupo de activación y de sus conexiones no camb ia.

DB2/400 Manual de Consulta SQL V3R7 Descripción

© Copyright IBM Corp. 1995, 1996 5.45.4 - 1

Page 730: DB2/400 Manual de Consulta SQLmarce.com/docs/systems/manuales/db2_400_manual_consulta_sql_v3r7.pdf · VERSION Nota de Versión Segunda edición (noviembre de 1996) Este manual es

5.45.5 Notas Cuando se utiliza una conexión, se convierte en lat ente y luego se restaura a su estado actual en la misma unidad de t rabajo, el estado de los bloqueos, cursores y sentencias preparadas de d icha conexión refleja la última utilización por parte del grupo de activa ción.

DB2/400 Manual de Consulta SQL V3R7 Notas

© Copyright IBM Corp. 1995, 1996 5.45.5 - 1

Page 731: DB2/400 Manual de Consulta SQLmarce.com/docs/systems/manuales/db2_400_manual_consulta_sql_v3r7.pdf · VERSION Nota de Versión Segunda edición (noviembre de 1996) Este manual es

5.45.6 Ejemplo Ejecutar sentencias SQL en LAB1BCN, ejecutar senten cias SQL en LAB2BCN y ejecutar más sentencias SQL en LAB1BCN. EXEC SQL CONNECT TO LAB1BCN; (Ejecutar sentencias que hacen referencia a objetos en LAB1BCN) EXEC SQL CONNECT TO LAB2BCN; (Ejecutar sentencias que hacen referencia a objetos en LAB2BCN) EXEC SQL SET CONNECTION LAB1BCN; (Ejecutar sentencias que hacen referencia a objetos en LAB1BCN) La primera sentencia CONNECT crea la conexión LAB1B CN, la segunda sentencia CONNECT hace que adquiera el estado laten te, y la sentencia SET CONNECTION hace que regrese al estado actual.

DB2/400 Manual de Consulta SQL V3R7 Ejemplo

© Copyright IBM Corp. 1995, 1996 5.45.6 - 1

Page 732: DB2/400 Manual de Consulta SQLmarce.com/docs/systems/manuales/db2_400_manual_consulta_sql_v3r7.pdf · VERSION Nota de Versión Segunda edición (noviembre de 1996) Este manual es

5.46 SET OPTION | La sentencia SET OPTION establece las opciones de p roceso que se| utilizarán para las sentencias SQL. Subtemas 5.46.1 Invocación 5.46.2 Autorización 5.46.3 Sintaxis 5.46.4 Descripción 5.46.5 Notas 5.46.6 Ejemplos

DB2/400 Manual de Consulta SQL V3R7 SET OPTION

© Copyright IBM Corp. 1995, 1996 5.46 - 1

Page 733: DB2/400 Manual de Consulta SQLmarce.com/docs/systems/manuales/db2_400_manual_consulta_sql_v3r7.pdf · VERSION Nota de Versión Segunda edición (noviembre de 1996) Este manual es

| 5.46.1 Invocación | Esta sentencia puede utilizarse en un procedimiento REXX o incluirse en un| programa de aplicación. Si se utiliza en un proced imiento REXX, es una| sentencia ejecutable. Si se incluye en un programa de aplicación, no es| ejecutable y debe preceder a cualesquiera otras sen tencias SQL. Esta| sentencia no puede prepararse de forma dinámica.

DB2/400 Manual de Consulta SQL V3R7 Invocación

© Copyright IBM Corp. 1995, 1996 5.46.1 - 1

Page 734: DB2/400 Manual de Consulta SQLmarce.com/docs/systems/manuales/db2_400_manual_consulta_sql_v3r7.pdf · VERSION Nota de Versión Segunda edición (noviembre de 1996) Este manual es

5.46.2 Autorización No se requiere ninguna.

DB2/400 Manual de Consulta SQL V3R7 Autorización

© Copyright IBM Corp. 1995, 1996 5.46.2 - 1

Page 735: DB2/400 Manual de Consulta SQLmarce.com/docs/systems/manuales/db2_400_manual_consulta_sql_v3r7.pdf · VERSION Nota de Versión Segunda edición (noviembre de 1996) Este manual es

5.46.3 Sintaxis +-------------------------------------------------- ----------------------+ ¦ ¦ ¦ ¦ ¦ ¦ ¦ <-,-------------------------+ ¦ ¦ >>-- SET OPTION----- COMMIT =-- opción-commit -------------------------->< ¦ ¦ +- DECMPT =-- opción-decmpt -¦ ¦ ¦ +- NAMING =-- opción-naming -¦ ¦ ¦ +- DATFMT =-- opción-datfmt -¦ ¦ ¦ +- DATSEP =-- opción-datsep -¦ ¦ ¦ +- TIMFMT = -- opción-timfmt -¦ ¦ ¦ +- TIMSEP = -- opción-timsep -¦ ¦ ¦ +- SRTSEQ =-- opción-srtseq -¦ ¦ ¦ +- LANGID = -- opción-langid -+ ¦ ¦ ¦ ¦ ¦ ¦ opción-commit: ¦ ¦ (1) ¦ ¦ +---- *CHG--------------------------------------------------- ---------¦ ¦ ¦ ¦ (2)¦ ¦ ¦ +- *NONE----¦ ¦ ¦ +- *CS------¦ ¦ ¦ ¦ (3) ¦ ¦ ¦ +- *ALL -----¦ ¦ ¦ +- *RR------+ ¦ ¦ ¦ ¦ opción-decmpt: ¦ ¦ +---- *PERIOD--------------------------------------------------- ------¦ ¦ ¦ +- *COMMA--¦ ¦ ¦ +- *SYSVAL-+ ¦ ¦ ¦ ¦ opción-naming: ¦ ¦ +---- *SYS--------------------------------------------------- ---------¦ ¦ ¦ +- *SQL-+ ¦ ¦ ¦ ¦ Notas: ¦ ¦ ¦ ¦ (1) *UR se puede utilizar como sinónimo de *CHG. ¦ ¦ ¦ ¦ (2) *NC se puede utilizar como sinónimo de *NONE . ¦ ¦ ¦ ¦ (3) *RS se puede utilizar como sinónimo de *ALL. ¦ ¦ ¦ ¦ ¦ ¦ ¦ ¦ ¦ +-------------------------------------------------- ----------------------+ +-------------------------------------------------- ----------------------+ ¦ ¦ ¦ ¦ ¦ ¦ ¦ opción-datfmt: ¦ ¦ +---- *JOB--------------------------------------------------- ---------¦ ¦ ¦ +- *ISO -¦ ¦ ¦ +- *EUR-¦ ¦ ¦ +- *USA-¦ ¦ ¦ +- *JIS -¦ ¦ ¦ +- *MDY-¦ ¦ ¦ +- *DMY-¦ ¦ ¦ +- *YMD-¦ ¦ ¦ +- *JUL -+ ¦ ¦ ¦ ¦ opción-datsep: ¦ ¦ +---- *JOB--------------------------------------------------- ---------¦ ¦ ¦ +- *SLASH--¦ ¦ ¦ +- '/' -----¦ ¦ ¦ +- *PERIOD-¦ ¦ ¦ +- '.' -----¦ ¦ ¦ +- *COMMA--¦ ¦ ¦ +- ',' -----¦ ¦ ¦ +- *DASH---¦ ¦ ¦ +- '-' -----¦ ¦ ¦ +- *BLANK--¦ ¦ ¦ +- ' ' -----+ ¦ ¦ ¦ ¦ opción-timfmt: ¦ ¦ +---- *HMS--------------------------------------------------- ---------¦ ¦ ¦ +- *ISO -¦ ¦ ¦ +- *EUR-¦ ¦ ¦ +- *USA-¦ ¦ ¦ +- *JIS -+ ¦ ¦ ¦ ¦ opción-timsep: ¦ ¦ +---- *JOB--------------------------------------------------- ---------¦ ¦ ¦ +- *COLON--¦ ¦ ¦ +- ':' -----¦ ¦ ¦ +- *PERIOD-¦ ¦ ¦ +- '.' -----¦ ¦ ¦ +- *COMMA--¦ ¦ ¦ +- ',' -----¦ ¦ ¦ +- *BLANK--¦ ¦ ¦ +- ' ' -----+ ¦ ¦ ¦ ¦ opción-srtseq: ¦

DB2/400 Manual de Consulta SQL V3R7 Sintaxis

© Copyright IBM Corp. 1995, 1996 5.46.3 - 1

Page 736: DB2/400 Manual de Consulta SQLmarce.com/docs/systems/manuales/db2_400_manual_consulta_sql_v3r7.pdf · VERSION Nota de Versión Segunda edición (noviembre de 1996) Este manual es

¦ +---- *JOB--------------------------------------------------- ---------¦ ¦ ¦ +- *HEX----------------------------------------¦ ¦ ¦ +- *JOBRUN-------------------------------------¦ ¦ ¦ +- *LANGIDUNQ----------------------------------¦ ¦ ¦ +- *LANGIDSHR----------------------------------¦ ¦ ¦ ¦ +- *LIBL/ -------------+ ¦ ¦ ¦ +-+--------------------+-- nombre-tabla-srtseq -+ ¦ ¦ +- *CURLIB/ -----------¦ ¦ ¦ +- nombre-biblioteca/ -+ ¦ ¦ ¦ ¦ opción-langid: ¦ ¦ +---- *JOB--------------------------------------------------- ---------¦ ¦ ¦ +- *JOBRUN---¦ ¦ ¦ +- ID-idioma -+ ¦ ¦ ¦ ¦ ¦ +-------------------------------------------------- ----------------------+

DB2/400 Manual de Consulta SQL V3R7 Sintaxis

© Copyright IBM Corp. 1995, 1996 5.46.3 - 2

Page 737: DB2/400 Manual de Consulta SQLmarce.com/docs/systems/manuales/db2_400_manual_consulta_sql_v3r7.pdf · VERSION Nota de Versión Segunda edición (noviembre de 1996) Este manual es

5.46.4 Descripción COMMIT| Especifica el nivel de aislamiento a utilizar. En REXX, los archivos| a los que se hace referencia en el fuente no es tán afectados por esta| opción. Solamente afecta a las tablas, vistas y paquetes a los que se hace referencia en sentencias SQL. Para obtene r más información acerca de los niveles de aislamiento, véase el apartado "Nivel de aislamiento" en el tema 1.19 . *CHG Especifica el nivel de aislamiento de Lectu ra No Comprometida. *NONE Especifica el nivel de aislamiento de Sin C ompromiso. Si se incluye la sentencia DROP COLLECTION en un procedimiento REXX, debe utilizarse *NONE. *CS Especifica el nivel de aislamiento de Estab ilidad de Cursor. *ALL Especifica el nivel de aislamiento de Estab ilidad de lectura. *RR Especifica el nivel de aislamiento de Lectu ra repetible. DECMPT Especifica el símbolo que desea que represente a la coma decimal. Las opciones posibles son las siguientes: *PERIOD La representación de la coma decimal es un punto. *COMMA La representación de la coma decimal es una coma. *SYSVAL La representación de la coma decimal es el valor del sistema (QDECFMT). NAMING Especifica si se utiliza el convenio de denomin ación de SQL o el del sistema. Las opciones posibles son: *SYS Se utilizará el convenio de denominación de l sistema. *SQL Se utilizará el convenio de denominación SQ L. DATFMT Especifica el formato que se utiliza al acceder a las columnas de resultados de fecha. Todos los campos de fecha de salida se devuelven en el formato especificado. En el caso de las series de fecha, el valor especificado se utiliza para determinar s i la fecha se ha especificado en un formato válido. Nota: Las series de fecha de entrada que utilizan el fo rmato *USA, *ISO, *EUR o *JIS siempre son válidas. *JOB: Se utiliza el formato especificado para el trabajo. Utilice el mandato Visualizar Trabajo (DSPJOB) para de terminar el formato de fecha actual del trabajo. *ISO Se utiliza el formato de fecha ISO (Interna tional Organization for Standardization), que es aaaa-mm-dd. *EUR Se utiliza el formato de fecha europeo (dd. mm.aaaa). *USA Se utiliza el formato de fecha de Estados U nidos (mm/dd/aaaa). *JIS Se utiliza el formato de fecha estándar ind ustrial japonés (aaaa-mm-dd). *MDY Se utiliza el formato de fecha (mm/dd/aa). *DMY Se utiliza el formato de fecha (dd/mm/aa). *YMD Se utiliza el formato de fecha (aa/mm/dd). *JUL Se utiliza el formato de fecha Juliano (aa/ ddd). DATSEP Especifica el separador que se utiliza al acced er a las columnas de

DB2/400 Manual de Consulta SQL V3R7 Descripción

© Copyright IBM Corp. 1995, 1996 5.46.4 - 1

Page 738: DB2/400 Manual de Consulta SQLmarce.com/docs/systems/manuales/db2_400_manual_consulta_sql_v3r7.pdf · VERSION Nota de Versión Segunda edición (noviembre de 1996) Este manual es

resultados de fecha. Nota: Este parámetro sólo se aplica si se especifica *J OB, *MDY, *DMY, *YMD o *JUL en el parámetro DATFMT . *JOB Se utiliza el separador de fecha del trabaj o. Utilice el mandato Visualizar Trabajo (DSPJOB) para determinar el valor actual del trabajo. *SLASH o '/' Se utiliza una barra inclinada (/). *PERIOD o '.' Se utiliza un punto (.) *COMMA o ',' Se utiliza una coma (,). *DASH o '-' Se utiliza un guión (-). *BLANK o ' ' Se utiliza un espacio en blanco ( ). TIMFMT Especifica el formato que se utiliza al acceder a las columnas de resultados de hora. Todos los campos de hora d e salida se devuelven en el formato especificado. En el caso de las s eries de hora de entrada, se utiliza el valor especificado para determinar si la hora se ha especificado en un formato válido. | Nota: Las series de hora de entrada que utilizan el for mato *USA,| *ISO, *EUR o *JIS siempre son válidas. *HMS Se utiliza el formato (hh:mm:ss). *ISO Se utiliza el formato de hora ISO (Internat ional Organization for Standardization), que es (hh.mm.ss). *EUR Se utiliza el formato de hora europeo (hh.m m.ss). *USA Se utiliza el formato de hora de Estados Un idos (hh:mm xx ), siendo xx AM o PM. *JIS Se utiliza el formato de hora estándar indu strial japonés (hh:mm:ss). TIMSEP Especifica el separador que se utiliza al acced er a las columnas de resultados de hora. Nota: Este parámetro sólo se aplica cuando se especific a *HMS en el parámetro TIMFMT. *JOB Se utiliza el separador de hora del trabajo . Utilice el mandato Visualizar Trabajo (DSPJOB) para determinar el valor actual del trabajo. *COLON o ':' Se utilizan dos puntos (:). *PERIOD o '.' Se utiliza un punto (.) *COMMA o ',' Se utiliza una coma (,). *BLANK o ' ' Se utiliza un espacio en blanco ( ). SRTSEQ Especifica la tabla de secuencia de clasificaci ón que se utilizará para las comparaciones de series en las sentenc ias SQL. Nota: Debe especificarse *HEX si un procedimiento REXX se conecta a un servidor de la aplicación que no es D B2 para OS/400 ni un sistema AS/400 cuyo nivel de release sea anterior al V2R3M0. *JOB o *JOBRUN Se utiliza el valor SRTSEQ para el trabajo. *HEX No se utiliza ninguna tabla de secuencia de clasificación. Los valores hexadecimales de los caracteres se utilizan para determinar la secuencia de clasificación. *LANGIDUNQ La tabla de secuencia de clasificación debe contener un peso

DB2/400 Manual de Consulta SQL V3R7 Descripción

© Copyright IBM Corp. 1995, 1996 5.46.4 - 2

Page 739: DB2/400 Manual de Consulta SQLmarce.com/docs/systems/manuales/db2_400_manual_consulta_sql_v3r7.pdf · VERSION Nota de Versión Segunda edición (noviembre de 1996) Este manual es

exclusivo para cada carácter de la página d e códigos. *LANGIDSHR Se utiliza la tabla de clasificación de pes os compartidos para el LANGID especificado. nombre-tabla-srtseq Especifique el nombre de la tabla de secuen cia de clasificación que se utilizará con este programa. El nom bre de la tabla de secuencia de clasificación se puede calific ar mediante uno de los siguientes valores de biblioteca: *LIBL Se busca en todas las bibliotecas situa das en la parte del usuario y del sistema de la lista de bi bliotecas del trabajo hasta que se encuentra la primera coinc idencia. *CURLIB Se busca en la biblioteca actual del tr abajo. Si no especifica ninguna biblioteca como bibl ioteca actual para el trabajo, se utilizará la biblioteca QGP L. nombre-biblioteca Especifique el nombre de la biblioteca en la que se buscará. LANGID Especifica el identificador de idioma que se ut ilizará cuando se especifique SRTSEQ(*LANGIDUNQ) o SRTSEQ(*LANGID SHR). *JOB o *JOBRUN Se utiliza el valor LANGID para el trabajo. En las aplicaciones distribuidas, LANGID(*J OBRUN) sólo es válido cuando también se especifica SRTSEQ(*JOBRUN ). id-idioma Especifique el identificador de idioma que se utilizará. Para obtener información acerca de los valores q ue se pueden utilizar para el identificador de idioma, consulte e l manual International Application Development , SC41-4603.

DB2/400 Manual de Consulta SQL V3R7 Descripción

© Copyright IBM Corp. 1995, 1996 5.46.4 - 3

Page 740: DB2/400 Manual de Consulta SQLmarce.com/docs/systems/manuales/db2_400_manual_consulta_sql_v3r7.pdf · VERSION Nota de Versión Segunda edición (noviembre de 1996) Este manual es

5.46.5 Notas | Al principio de un procedimiento REXX, las opciones toman su valor por omisión. El valor por omisión de cada opción es el primero que aparece en el diagrama de sintaxis. Cuando se modifica una op ción mediante una sentencia SET OPTION, el valor nuevo permanecerá en vigor hasta que la opción se modifique de nuevo o el procedimiento REX X finalice. | Para los programas de aplicación las opciones de pr oceso se establecen| inicialmente en los valores especificados en el man dato CRTSQLxxx. Cada| opción se actualiza según se encuentra con una sent encia SET OPTION.| Todas las sentencias SET OPTION deben preceder a cu alesquiera otras| sentencias SQL hospedadas.

DB2/400 Manual de Consulta SQL V3R7 Notas

© Copyright IBM Corp. 1995, 1996 5.46.5 - 1

Page 741: DB2/400 Manual de Consulta SQLmarce.com/docs/systems/manuales/db2_400_manual_consulta_sql_v3r7.pdf · VERSION Nota de Versión Segunda edición (noviembre de 1996) Este manual es

5.46.6 Ejemplos Ejemplo 1 : Establecer el nivel de aislamiento en *ALL y la m odalidad de denominación en nombres SQL. EXECSQL SET OPTION COMMIT = *ALL , NAMING = *SQL Ejemplo 2 : Establezca el formato de fecha europeo, el nivel de aislamiento en *CS y la coma decimal en coma. EXECSQL SET OPTION DATFMT = *EUR, COMMIT = *CS, DECMPT = *COMMA

DB2/400 Manual de Consulta SQL V3R7 Ejemplos

© Copyright IBM Corp. 1995, 1996 5.46.6 - 1

Page 742: DB2/400 Manual de Consulta SQLmarce.com/docs/systems/manuales/db2_400_manual_consulta_sql_v3r7.pdf · VERSION Nota de Versión Segunda edición (noviembre de 1996) Este manual es

5.47 SET RESULT SETS La sentencia SET RESULT SETS identifica uno o más c onjuntos de resultados que se pueden devolver desde un procedimiento cuand o se llama a éste mediante un cliente de Client Access. Subtemas 5.47.1 Invocación 5.47.2 Autorización 5.47.3 Sintaxis 5.47.4 Descripción 5.47.5 Notas 5.47.6 Ejemplo

DB2/400 Manual de Consulta SQL V3R7 SET RESULT SETS

© Copyright IBM Corp. 1995, 1996 5.47 - 1

Page 743: DB2/400 Manual de Consulta SQLmarce.com/docs/systems/manuales/db2_400_manual_consulta_sql_v3r7.pdf · VERSION Nota de Versión Segunda edición (noviembre de 1996) Este manual es

5.47.1 Invocación Esta sentencia sólo puede hospedarse en un programa de aplicación. Es una sentencia ejecutable que no puede prepararse dinámi camente. No se permite en un procedimiento REXX.

DB2/400 Manual de Consulta SQL V3R7 Invocación

© Copyright IBM Corp. 1995, 1996 5.47.1 - 1

Page 744: DB2/400 Manual de Consulta SQLmarce.com/docs/systems/manuales/db2_400_manual_consulta_sql_v3r7.pdf · VERSION Nota de Versión Segunda edición (noviembre de 1996) Este manual es

5.47.2 Autorización No se requiere ninguna.

DB2/400 Manual de Consulta SQL V3R7 Autorización

© Copyright IBM Corp. 1995, 1996 5.47.2 - 1

Page 745: DB2/400 Manual de Consulta SQLmarce.com/docs/systems/manuales/db2_400_manual_consulta_sql_v3r7.pdf · VERSION Nota de Versión Segunda edición (noviembre de 1996) Este manual es

5.47.3 Sintaxis +-------------------------------------------------- ------------------------------------------------+ ¦ ¦ ¦ ¦ ¦ ¦ ¦ >>-- SET RESULT SETS--------------------------------------------------- -------------------------> ¦ ¦ ¦ ¦ <-,----------------------------------------- -----------------------+ ¦ ¦ >------- ARRAY-- matriz-estructura-leng-princ -- FOR-- var-leng-princ -- ROWS------------------------>< ¦ ¦ ¦ +- CURSOR-- nombre-cursor ------------------------------------------+ ¦ ¦| ¦ +- NONE--------------------------------------------------- --------------+ ¦ ¦ ¦ ¦ ¦ +-------------------------------------------------- ------------------------------------------------+

DB2/400 Manual de Consulta SQL V3R7 Sintaxis

© Copyright IBM Corp. 1995, 1996 5.47.3 - 1

Page 746: DB2/400 Manual de Consulta SQLmarce.com/docs/systems/manuales/db2_400_manual_consulta_sql_v3r7.pdf · VERSION Nota de Versión Segunda edición (noviembre de 1996) Este manual es

5.47.4 Descripción CURSOR nombre-cursor Identifica un cursor que se va a utilizar para definir un conjunto de resultados que se pueden devolver desde un proc edimiento. El nombre-cursor debe identificar un cursor declarado, tal como se explica en el apartado "Descripción" en el tema 5.18.4 , para la sentencia DECLARE CURSOR. Cuando se ejecuta la sentencia SET RESULT SETS, el cursor debe encontrarse en el estado a bierto. ARRAY matriz-estructura-leng-princ La matriz-estructura-leng-princ identifica una matriz de estructuras del lenguaje principal definidas según las regl as de declaración de las estructuras del lenguaje principal. La primera estructura de la matriz corresponde a la primera fila del conjunto de resultados, la segunda estructura d e la matriz corresponde a la segunda fila del conjunto de resultados, y así sucesivamente. Además, el primer valor de la fila corresponde al primer elemento de la estructura, el segundo valor de la fila corr esponde al segundo elemento de la estructura, etc. Sólo se puede especificar una matriz en una sen tencia SET RESULT SETS. FOR var-leng-princ ROWS Especifica el número de filas del conjunto de r esultados. La var-leng-princ debe ser una variable del lenguaje principal numér ica con escala cero y no debe incluir una variable de indicador. El número de filas especificado debe estar dentro del rango del 1 al 32767 y debe ser menor o igual que la dimensión de la matriz de la estructura del lenguaje principal. | NONE| Especifica que no se devolverán resultados. Lo s cursores permanecerán| abiertos cuando no se devuelvan los finales de procedimiento.

DB2/400 Manual de Consulta SQL V3R7 Descripción

© Copyright IBM Corp. 1995, 1996 5.47.4 - 1

Page 747: DB2/400 Manual de Consulta SQLmarce.com/docs/systems/manuales/db2_400_manual_consulta_sql_v3r7.pdf · VERSION Nota de Versión Segunda edición (noviembre de 1996) Este manual es

5.47.5 Notas Los conjuntos de resultados sólo se devuelven desde un procedimiento cuando se llama a este procedimiento desde un clien te de conectividad de base de datos abierta (ODBC). Existen dos formas d e devolver conjuntos de resultados desde un procedimiento: � Si se ejecuta una sentencia SET RESULT SETS en e l procedimiento, la sentencia SET RESULT SETS identifica los conjun tos de resultados. Los conjuntos de resultados se devuelven en el orde n especificado en la sentencia SET RESULTS. � Si no se ejecuta una sentencia SET RESULT SETS e n el procedimiento, cada cursor que el procedimiento abre y deja ab ierto cuando regresa identifica un conjunto de resultados. Los conj untos de resultados se devuelven en el orden en que se abren los curso res. Se puede especificar hasta 20 conjuntos de resultad os, pero sólo se puede especificar una matriz en la sentencia SET RESULT S ETS.

DB2/400 Manual de Consulta SQL V3R7 Notas

© Copyright IBM Corp. 1995, 1996 5.47.5 - 1

Page 748: DB2/400 Manual de Consulta SQLmarce.com/docs/systems/manuales/db2_400_manual_consulta_sql_v3r7.pdf · VERSION Nota de Versión Segunda edición (noviembre de 1996) Este manual es

5.47.6 Ejemplo La siguiente sentencia SET RESULT SETS especifica e l cursor X como conjunto de resultados que se devolverá cuando se l lame al procedimiento| PROC1 desde un cliente de ODBC. Para obtener más i nformación y ejemplos| sobre ODBC, consulte la publicación AS/400 Client Access para Windows 3.1| ODBC - Guía del Usuario , SC10-9695 (SC41-3533). EXEC SQL SET RESULT SETS CURSOR X;

DB2/400 Manual de Consulta SQL V3R7 Ejemplo

© Copyright IBM Corp. 1995, 1996 5.47.6 - 1

Page 749: DB2/400 Manual de Consulta SQLmarce.com/docs/systems/manuales/db2_400_manual_consulta_sql_v3r7.pdf · VERSION Nota de Versión Segunda edición (noviembre de 1996) Este manual es

5.48 SET TRANSACTION La sentencia SET TRANSACTION establece el nivel de aislamiento de la unidad de trabajo actual. Subtemas 5.48.1 Invocación 5.48.2 Autorización 5.48.3 Sintaxis 5.48.4 Descripción 5.48.5 Notas 5.48.6 Ejemplos

DB2/400 Manual de Consulta SQL V3R7 SET TRANSACTION

© Copyright IBM Corp. 1995, 1996 5.48 - 1

Page 750: DB2/400 Manual de Consulta SQLmarce.com/docs/systems/manuales/db2_400_manual_consulta_sql_v3r7.pdf · VERSION Nota de Versión Segunda edición (noviembre de 1996) Este manual es

5.48.1 Invocación Esta sentencia puede hospedarse en un programa de a plicación o emitirse de forma interactiva. Es una sentencia ejecutable que puede prepararse dinámicamente.

DB2/400 Manual de Consulta SQL V3R7 Invocación

© Copyright IBM Corp. 1995, 1996 5.48.1 - 1

Page 751: DB2/400 Manual de Consulta SQLmarce.com/docs/systems/manuales/db2_400_manual_consulta_sql_v3r7.pdf · VERSION Nota de Versión Segunda edición (noviembre de 1996) Este manual es

5.48.2 Autorización No se requiere ninguna.

DB2/400 Manual de Consulta SQL V3R7 Autorización

© Copyright IBM Corp. 1995, 1996 5.48.2 - 1

Page 752: DB2/400 Manual de Consulta SQLmarce.com/docs/systems/manuales/db2_400_manual_consulta_sql_v3r7.pdf · VERSION Nota de Versión Segunda edición (noviembre de 1996) Este manual es

5.48.3 Sintaxis +-------------------------------------------------- ----------------------+ ¦ ¦ ¦ >>-- SET TRANSACTION--------------------------------------------------> ¦ ¦ ¦ ¦ (1) ¦ ¦ >-- ISOLATION LEVEL ---- NO COMMIT------------------------------------->< ¦ ¦ ¦ (2)¦ ¦ ¦ +- READ UNCOMMITTED , READ WRITE----¦ ¦ ¦ ¦ (3) ¦ ¦ ¦ +- READ COMMITTED-------------------¦ ¦ ¦ ¦ (4) ¦ ¦ ¦ +- REPEATABLE READ------------------¦ ¦ ¦ ¦ (5) ¦ ¦ ¦ +- SERIALIZABLE ---------------------+ ¦ ¦ ¦ ¦ Notas: ¦ ¦ (1) Las palabras clave NC o NONE se pueden utili zar como sinónimos de ¦ ¦ NO COMMIT. ¦ ¦ ¦ ¦ (2) Las palabras clave UR o CHG se pueden utiliz ar como sinónimo de ¦ ¦ READ UNCOMMITTED, READ WRITE. ¦ ¦ ¦ ¦ (3) La palabra clave CS se puede utilizar como s inónimo de READ ¦ ¦ COMMITTED. ¦ ¦ ¦ ¦ (4) Las palabras clave RS o ALL se pueden utiliz ar como sinónimo de ¦ ¦ REPEATABLE READ. ¦ ¦ ¦ ¦ (5) La palabra clave RR se puede utilizar como s inónimo de ¦ ¦ SERIALIZABLE. ¦ ¦ ¦ +-------------------------------------------------- ----------------------+

DB2/400 Manual de Consulta SQL V3R7 Sintaxis

© Copyright IBM Corp. 1995, 1996 5.48.3 - 1

Page 753: DB2/400 Manual de Consulta SQLmarce.com/docs/systems/manuales/db2_400_manual_consulta_sql_v3r7.pdf · VERSION Nota de Versión Segunda edición (noviembre de 1996) Este manual es

5.48.4 Descripción NO COMMIT Especifica el nivel de aislamiento NC (COMMIT(* NONE)). READ UNCOMMITTED, READ WRITE Especifica el nivel de aislamiento UR (COMMIT(* CHG)). READ COMMITTED Especifica el nivel de aislamiento CS (COMMIT(* CS)). REPEATABLE READ (37) Especifica el nivel de aislamiento RS (COMMIT(* ALL)). SERIALIZABLE Especifica el nivel de aislamiento RR (COMMIT(* RR)). (37) REPEATABLE READ es el término estándar ISO y A NS que corresponde al nivel de aislamiento *ALL para DB2 p ara OS/400 y al nivel de aislamiento de Estabilidad de lectura (RS) del SQL de IBM. SERIALIZABLE se utiliza en el estándar ISO y ANS para lo que en el SQL de IBM se conoce como "Lectur a repetible (RR)".

DB2/400 Manual de Consulta SQL V3R7 Descripción

© Copyright IBM Corp. 1995, 1996 5.48.4 - 1

Page 754: DB2/400 Manual de Consulta SQLmarce.com/docs/systems/manuales/db2_400_manual_consulta_sql_v3r7.pdf · VERSION Nota de Versión Segunda edición (noviembre de 1996) Este manual es

5.48.5 Notas La sentencia SET TRANSACTION establece el nivel de aislamiento de las sentencias SQL para el grupo de activación actual d el proceso. Si el control de compromiso del grupo de activación tiene como ámbito el trabajo, la sentencia SET TRANSACTION establece el nivel de aislamiento de todos los demás grupos de activación cuyo ámbito de compromiso también es el trabajo. La sentencia SET TRANSACTION sólo se puede ejecutar cuando es la primera sentencia SQL en una unidad de trabajo, a menos que se ejecute en un desencadenante. La sentencia SET TRANSACTION se pu ede ejecutar en un desencadenante en cualquier momento, pero es recome ndable que sea la primera sentencia del desencadenante que se ejecuta . La sentencia SET TRANSACTION es útil en los programas desencadenante s para establecer el nivel de aislamiento para las sentencias SQL del pr ograma desencadenante al mismo nivel que la aplicación que ha hecho que s e dispare el programa desencadenante. No se permite una SET TRANSACTION si la conexión ac tual es con un servidor remoto de la aplicación, a menos que esté en un pro grama desencadenante en el servidor actual. Una vez se haya ejecutado una sentencia SET TRANSACTION, no se permitirán las sentencias CONNEC T y SET CONNECTION hasta que la unidad de trabajo se comprometa o retr otraiga. El ámbito de la sentencia SET TRANSACTION se basa e n el contexto en el que se ejecuta. Si la sentencia SET TRANSACTION se eje cuta en un programa desencadenante, el nivel de aislamiento especificad o se aplica a todas las sentencias SQL posteriores hasta que se ejecute otr a sentencia SET TRANSACTION o hasta que finalice el programa desenc adenante, según cuál de estas acciones se produzca en primer lugar. Si la sentencia SET TRANSACTION se ejecuta fuera de un programa desenca denante, el nivel de aislamiento especificado se aplica a todas las sent encias SQL posteriores hasta que se lleve a cabo una operación COMMIT o RO LLBACK. Para obtener más información acerca de los niveles de aislamiento, consulte el apartado "Nivel de aislamiento" en el tema 1.19 .

DB2/400 Manual de Consulta SQL V3R7 Notas

© Copyright IBM Corp. 1995, 1996 5.48.5 - 1

Page 755: DB2/400 Manual de Consulta SQLmarce.com/docs/systems/manuales/db2_400_manual_consulta_sql_v3r7.pdf · VERSION Nota de Versión Segunda edición (noviembre de 1996) Este manual es

5.48.6 Ejemplos Ejemplo 1 : La siguiente sentencia SET TRANSACTION establece el nivel de aislamiento en NONE (lo que equivale a especificar *NONE en el mandato del precompilador SQL). EXEC SQL SET TRANSACTION ISOLATION LEVEL NO COMMIT; Ejemplo 2 : La siguiente sentencia SET TRANSACTION establece el nivel de aislamiento en SERIALIZABLE. SET TRANSACTION ISOLATION LEVEL SERIALIZABLE

DB2/400 Manual de Consulta SQL V3R7 Ejemplos

© Copyright IBM Corp. 1995, 1996 5.48.6 - 1

Page 756: DB2/400 Manual de Consulta SQLmarce.com/docs/systems/manuales/db2_400_manual_consulta_sql_v3r7.pdf · VERSION Nota de Versión Segunda edición (noviembre de 1996) Este manual es

5.49 UPDATE La sentencia UPDATE actualiza los valores de column as especificadas en las filas de una tabla o vista. La actualización de un a fila de una vista actualiza una fila de la tabla base correspondiente . Esta sentencia presenta dos formas: � La forma UPDATE Buscada se utiliza para actualizar una o más filas (determinada opcionalmente por una condición de búsqueda). � La forma UPDATE Colocada se utiliza para actualizar exactamente una fila (como lo determina la posición actual de u n cursor). Subtemas 5.49.1 Invocación 5.49.2 Autorización 5.49.3 Sintaxis 5.49.4 Descripción 5.49.5 Reglas de UPDATE 5.49.6 Notas 5.49.7 Ejemplos

DB2/400 Manual de Consulta SQL V3R7 UPDATE

© Copyright IBM Corp. 1995, 1996 5.49 - 1

Page 757: DB2/400 Manual de Consulta SQLmarce.com/docs/systems/manuales/db2_400_manual_consulta_sql_v3r7.pdf · VERSION Nota de Versión Segunda edición (noviembre de 1996) Este manual es

5.49.1 Invocación Una sentencia UPDATE buscada se puede hospedar en u n programa de aplicación o se puede emitir interactivamente. Una sentencia UPDATE colocada se puede hospedar en un programa de aplica ción. Ambas formas son sentencias ejecutables que pueden prepararse dinámi camente.

DB2/400 Manual de Consulta SQL V3R7 Invocación

© Copyright IBM Corp. 1995, 1996 5.49.1 - 1

Page 758: DB2/400 Manual de Consulta SQLmarce.com/docs/systems/manuales/db2_400_manual_consulta_sql_v3r7.pdf · VERSION Nota de Versión Segunda edición (noviembre de 1996) Este manual es

5.49.2 Autorización Los privilegios del ID de autorización de la senten cia deben incluir al menos uno de los siguientes: � Para la tabla o vista identificada en la sentenc ia: - El privilegio UPDATE sobre la tabla o vista , y - La autorización del sistema *EXECUTE sobre la biblioteca que contiene la tabla o la vista � Autorización de administrador El ID de autorización de la sentencia tiene el priv ilegio UPDATE sobre una tabla si: � Es el propietario de la tabla. � Se le ha otorgado el privilegio UPDATE sobre la tabla, o � Se le han otorgado las autorizaciones del sistem a *OBJOPR y *UPD sobre la tabla. El ID de autorización de la sentencia tiene el priv ilegio UPDATE sobre una vista cuando: (38) � Se le ha otorgado el privilegio UPDATE sobre la vista, o � Se le han otorgado las autorizaciones del sistem a *OBJOPR y *UPD sobre la vista y la autorización del sistema *UPD sob re la primera tabla o vista que figura en la primera cláusula FROM de la definición de la vista; si ésta es una vista, la autorización de l sistema *UPD sobre la primera tabla o vista que hay en la primera clá usula FROM de dicha definición de vista, y así sucesivamente. Si la expresión de la cláusula SET o la condición de búsqueda de una UPDATE Buscada contiene una referencia a una column a de la tabla o la vista, los privilegios del ID de autorización de la sentencia también deben incluir uno de los siguientes: � El privilegio SELECT sobre la tabla o vista � Autorización de administrador Si la condición de búsqueda incluye una subconsulta, los privilegios del ID de autorización de la sentencia deben incluir ta mbién al menos uno de estos elementos: � Para cada tabla o vista identificada en la subco nsulta: - El privilegio SELECT sobre la tabla o vista , y - La autorización del sistema *EXECUTE sobre la biblioteca que contiene la tabla o la vista � Autorización de administrador El ID de autorización de la sentencia tiene el priv ilegio SELECT sobre una tabla si: � Es el propietario de la tabla. � Se le ha otorgado el privilegio SELECT sobre la tabla, o � Se le han otorgado las autorizaciones del sistem a *OBJOPR y *READ sobre la tabla. El ID de autorización de la sentencia tiene el priv ilegio SELECT sobre una vista si: � Es el propietario de la vista, � Se le ha otorgado el privilegio SELECT sobre la vista, o � Se le han otorgado las autorizaciones del sistem a *OBJOPR y *READ sobre la vista y la autorización del sistema *R EAD sobre todas las tablas y vistas de las que depende esta vista d irecta o indirectamente. Es decir, sobre todas las tabl as y vistas a las que se hace referencia en la definición de la vista , y si se hace referencia a una vista, sobre todas las tablas y vistas a las que se hace referencia en la definición de la misma, y así sucesivamente. (38) Cuando se crea una vista, el propietario no a dquiere necesariamente el privilegio UPDATE sobre la vi sta. El propietario solamente adquiere dicho privilegio si la vista permite que se realicen actualizaciones y el pr opietario también dispone del privilegio UPDATE sobre la primera tabla a la que se hace referencia en la subselección.

DB2/400 Manual de Consulta SQL V3R7 Autorización

© Copyright IBM Corp. 1995, 1996 5.49.2 - 1

Page 759: DB2/400 Manual de Consulta SQLmarce.com/docs/systems/manuales/db2_400_manual_consulta_sql_v3r7.pdf · VERSION Nota de Versión Segunda edición (noviembre de 1996) Este manual es

5.49.3 Sintaxis +-------------------------------------------------- ----------------------+ ¦ ¦ ¦ UPDATE buscada: ¦ ¦ ¦ ¦ ¦ ¦ >>-- UPDATE---- nombre-tabla -------------------------------------------> ¦ ¦ +- nombre-vista -+ +- nombre-correlación -+ ¦ ¦ ¦ ¦ <-,------------------------------+ ¦ ¦ >-- SET---- nombre-col -- = ---- expresión -------------------------------> ¦ ¦ +- NULL------+ ¦ ¦ ¦ ¦ >------------------------------------------------ ------------------->< ¦ ¦ +- WHERE-- condición-búsqueda -+ +- cláusula-isolation -+ ¦ ¦ ¦ ¦ UPDATE colocada: ¦ ¦ ¦ ¦ ¦ ¦ >>-- UPDATE---- nombre-tabla -------------------------------------------> ¦ ¦ +- nombre-vista -+ ¦ +- AS-+ ¦ ¦ ¦ +--------- nombre-correlación -+ ¦ ¦ ¦ ¦ <-,------------------------------+ ¦ ¦ >-- SET---- nombre-col -- = ---- expresión ------ WHERE CURRENT OF---------> ¦ ¦ +- NULL------+ ¦ ¦ ¦ ¦ >-- nombre-cursor --------------------------------------------------- ->< ¦ ¦ ¦ ¦ ¦ +-------------------------------------------------- ----------------------+

DB2/400 Manual de Consulta SQL V3R7 Sintaxis

© Copyright IBM Corp. 1995, 1996 5.49.3 - 1

Page 760: DB2/400 Manual de Consulta SQLmarce.com/docs/systems/manuales/db2_400_manual_consulta_sql_v3r7.pdf · VERSION Nota de Versión Segunda edición (noviembre de 1996) Este manual es

5.49.4 Descripción nombre-tabla o nombre-vista Identifica la tabla o vista que desea actualiza r. El nombre debe identificar una tabla o vista que exista en el servidor actual, pero no debe identificar una tabla de catálogo, una vista de una tabla de catálogo o una vista de sólo lectura. Para obt ener una explicación de las vistas de sólo lectura y de las vistas actu alizables, consulte el apartado "CREATE VIEW" en el tema 5.17 . nombre-correlación Puede utilizarse en la condición de búsqueda para designar la tabla o la vista. Para obtener una explicación del nombre de correlación , véase el apartado "Nombres de correlación" en el tema 2.10.2 . SET Introduce una lista de valores y nombres de col umnas. nombre-columna Identifica una columna que se va a actualiz ar. El nombre de columna debe identificar una columna de la tabla o vista especificadas, pero no debe identificar una columna de vista derivada de una función escalar, de una con stante o de una expresión. Los nombres de columna no deben estar calificados, y no debe especificarse una columna en más de una ocasión. Para una UPDATE Colocada: � Si se ha especificado la cláusula UPDATE en la sentencia SELECT del cursor, los nombres de colum na de la lista SET también deberán aparecer en la cláusula UPDATE. � Si la cláusula UPDATE no se ha especific ado en la sentencia SELECT del cursor, se puede especificar el nombre de cualquier columna actualizable. Para obtener más información, véase "cláusu la-update" en la página 4.4.1 . Se puede actualizar una columna de una vist a derivada de las misma columna que otra columna de la vista, pero no se pueden actualizar ambas columnas en la misma sentencia UPDATE . expresión o NULL Indica el nuevo valor de la columna. La expresión es cualquier expresión del tipo que se describe en el ap artado "Expresiones" en el tema 2.14 . No debe incluir una función de columna. NULL especifica el valor nulo. Un nombre de columna en una expresión debe identificar una columna de la tabla o vista mencionada. Para cada fila actualizada, el valor de la columna contenida en la expresi ón es el valor de la columna en la fila antes de la actualizació n de ésta. WHERE Especifica las filas que se actualizarán. Pued e omitir la cláusula, dar una condición de búsqueda o mencionar un cu rsor. Si la cláusula se omite, se actualizarán todas las filas de la tabla o vista. condición-búsqueda Es cualquier búsqueda descrita en el aparta do "Condiciones de búsqueda" en el tema 2.16 . Cada nombre-columna que figura en la condición de búsqueda, a excepción de una s ubconsulta, debe identificar una columna de la tabla o vista . La condición de búsqueda no debe incluir una subconsulta si el objeto base de UPDATE y de la subconsulta es la misma tabl a. La condición de búsqueda se aplica a cada fila de la tabla o vista, y las filas actualizadas son aquella s para las que se cumple el resultado de la condición de búsqueda . Si la condición de búsqueda contiene una su bconsulta, puede considerarse que ésta se ejecuta cada vez q ue la condición de búsqueda se aplica a una fila, y los result ados se utilizan al aplicar la condición de búsqueda. En reali dad, las subconsultas sin referencias correlacionadas sólo se eje cutan una vez; una subconsulta con una referencia correlaciona da puede tener que ejecutarse una vez para cada fila. CURRENT OF nombre-cursor Identifica el cursor que se utilizará en la operación de actualización. El nombre de cursor debe identificar un cursor declarado tal como se explica en el apartad o "DECLARE CURSOR" en el tema 5.18 . La tabla o vista mencionada también debe fi gurar en la cláusula FROM de la sentencia SELECT del cursor, y l a tabla de resultados del cursor no debe ser de sólo lectura. Pa ra obtener una explicación de las tablas de resultados de sólo lectura, véase el apartado "DECLARE CURSOR" en el tema 5.18 . Cuando se ejecuta la sentencia UPDATE, el c ursor debe estar situado en una fila; esta fila se actualiza rá. cláusula-isolation Especifica el nivel de aislamiento que se va a utilizar para esta sentencia. Para obtener una explicación de cláusula-isolation ,

DB2/400 Manual de Consulta SQL V3R7 Descripción

© Copyright IBM Corp. 1995, 1996 5.49.4 - 1

Page 761: DB2/400 Manual de Consulta SQLmarce.com/docs/systems/manuales/db2_400_manual_consulta_sql_v3r7.pdf · VERSION Nota de Versión Segunda edición (noviembre de 1996) Este manual es

consulte el apartado 4.4.5 .

DB2/400 Manual de Consulta SQL V3R7 Descripción

© Copyright IBM Corp. 1995, 1996 5.49.4 - 2

Page 762: DB2/400 Manual de Consulta SQLmarce.com/docs/systems/manuales/db2_400_manual_consulta_sql_v3r7.pdf · VERSION Nota de Versión Segunda edición (noviembre de 1996) Este manual es

5.49.5 Reglas de UPDATE Asignación Los valores de actualización se asignan a las c olumnas siguiendo las reglas de asignación que se describen en el Capítulo 2 . Validez Si la tabla identificada o la tabla base de la vista identificada tiene uno o más índices exclusivos o restriccio nes de unicidad, cada fila actualizada de la tabla deberá ajustarse a las restricciones que imponen dichos índices exclusivos. Los índices y restricciones exclusivos se compr ueban al final de la sentencia a menos que se especifique COMMIT(*NO NE). En el caso de una actualización de varias filas, esto sucedería d espués de actualizar todas las filas. Si se especifica COMMIT(*NONE ), la comprobación se lleva a acabo a medida que se actualiza cada fi la. Si se identifica una vista, las filas actualiza das deben ajustarse a todas las WITH CHECK OPTION que sean aplicables . Para obtener más información, consulte el apartado "CREATE VIEW" en el tema 5.17 . Desencadenantes Si la tabla identificada o la tabla base de la vista identificada tiene un desencadenante de actualización, se di spara dicho desencadenante para cada fila actualizada. Integridad de referencia El valor de la clave padre de una fila padre no debe modificarse. Si los valores de actualización producen una cl ave foránea que no es nula, dicha clave debe ser igual a algún valor de la clave padre de la tabla padre de la relación. Las restricciones de referencia (excepto las qu e tienen la regla de supresión RESTRICT) se comprueban de forma efec tiva al final de la sentencia. En el caso de una actualización de varias filas, esto sucedería después de actualizar todas las filas .

DB2/400 Manual de Consulta SQL V3R7 Reglas de UPDATE

© Copyright IBM Corp. 1995, 1996 5.49.5 - 1

Page 763: DB2/400 Manual de Consulta SQLmarce.com/docs/systems/manuales/db2_400_manual_consulta_sql_v3r7.pdf · VERSION Nota de Versión Segunda edición (noviembre de 1996) Este manual es

5.49.6 Notas Si un valor de actualización viola alguna restricci ón, o si se produce algún otro error durante la ejecución de la sentenc ia UPDATE y no se ha especificado COMMIT(*NONE), se restituyen todos los cambios realizados durante la ejecución de la sentencia. No obstante, no se restituirán los cambios realizados en la unidad de trabajo antes de que se produjera el error. Si se especifica COMMIT(*NONE), los cambios no se restituyen. Es posible que se produzca un error que haga que el estado del cursor sea imprevisible. Cuando acaba la ejecución de una sentencia UPDATE, el valor de SQLERRD(3) en la SQLCA es el número de filas actualizadas. Pa ra obtener una descripción de la SQLCA, véase el Apéndice B, "Área de comunicaciones SQL" en el tema B.0 . A menos que ya existan los bloqueos apropiados, se adquieren uno o más bloqueos exclusivos mediante la ejecución satisfact oria de una sentencia UPDATE. Hasta que una operación de compromiso o de retrotracción libere los bloqueos, a las filas actualizadas solamente pu ede acceder: � El proceso de la aplicación que ha realizado la actualización. � El proceso de otra aplicación que utilice COMMIT (*NONE) o COMMIT(*CHG) mediante un cursor de sólo lectura, la sentenci a SELECT INTO o una subconsulta. Los bloqueos pueden impedir que otros procesos de a plicación realicen operaciones en la tabla. Para obtener más informaci ón sobre los bloqueos, véase la descripción de las sentencias COMMIT, ROLL BACK y LOCK TABLE, y los niveles de aislamiento en el apartado "Nivel de aislamiento" en el tema 1.19 . Consulte también el manual DB2/400 Programación de la base de datos . Se pueden actualizar o modificar un máximo de 52428 8 filas en una sola sentencia UPDATE cuando se ha especificado COMMIT(* RR), COMMIT(*ALL), COMMIT(*CS) o COMMIT(*CHG). El número de filas mod ificado incluye las filas insertadas, actualizadas o suprimidas bajo la misma definición de compromiso como resultado de un desencadenante. Si se utilizan variables del lenguaje principal en la sentencia UPDATE dentro de un procedimiento REXX, UPDATE debe ser el objeto de PREPARE y EXECUTE.

DB2/400 Manual de Consulta SQL V3R7 Notas

© Copyright IBM Corp. 1995, 1996 5.49.6 - 1

Page 764: DB2/400 Manual de Consulta SQLmarce.com/docs/systems/manuales/db2_400_manual_consulta_sql_v3r7.pdf · VERSION Nota de Versión Segunda edición (noviembre de 1996) Este manual es

5.49.7 Ejemplos Ejemplo 1 : Cambiar el trabajo (TRAB) del número de empleado (NUMEMP) '000290' de la tabla EMPLEADO por 'TRABAJADOR'. UPDATE EMPLEADO SET TRAB = 'TRABAJADOR' WHERE NUMEMP = '000290' Ejemplo 2 : Incrementar el personal de proyecto (PRPERSON) c on un 1,5 para todos los proyectos de los que es responsable el de partamento (NUMDEPT) 'D21' en la tabla PROYECTO. UPDATE PROYECTO SET PRPERSON = PRPERSON + 1.5 WHERE NUMDEPT = 'D21' Ejemplo 3 : Todos los empleados excepto el director del depa rtamento (DEPTTRAB) 'E21' se han reasignado provisionalmente . Indicar esto cambiando los valores correspondientes a su trabajo (TRAB) por NULL y su paga (SUELDO, BONIF, COMI) por cero en la tabla EMP LEADO. UPDATE EMPLEADO SET TRAB=NULL, SUELDO=0, BONIF=0, COMI=0 WHERE DEPTTRAB = 'E21' AND TRAB <> 'DIRECTOR' Ejemplo 4 : En un programa PL/I, visualizar las filas de la tabla EMPLEADO y, si se le solicita, cambiar el trabajo (TRAB) de determinados empleados por el nuevo trabajo tecleado. EXEC SQL DECLARE C1 CURSOR FOR SELECT * FROM EMPLEADO FOR UPDATE OF TRAB; EXEC SQL OPEN C1; EXEC SQL FETCH C1 INTO ... ; PUT ... ; GET LIST (CAMBIAR, OBJNUEVO); IF CAMBIAR = 'SI' THEN EXEC SQL UPDATE EMPLEADO SET TRAB = :OBJNUEVO WHERE CURRENT OF C1; EXEC SQL CLOSE C1;

DB2/400 Manual de Consulta SQL V3R7 Ejemplos

© Copyright IBM Corp. 1995, 1996 5.49.7 - 1

Page 765: DB2/400 Manual de Consulta SQLmarce.com/docs/systems/manuales/db2_400_manual_consulta_sql_v3r7.pdf · VERSION Nota de Versión Segunda edición (noviembre de 1996) Este manual es

5.50 WHENEVER La sentencia WHENEVER especifica la acción que se l levará a cabo cuando se dé la condición de excepción especificada. Subtemas 5.50.1 Invocación 5.50.2 Autorización 5.50.3 Sintaxis 5.50.4 Descripción 5.50.5 Notas 5.50.6 Ejemplo

DB2/400 Manual de Consulta SQL V3R7 WHENEVER

© Copyright IBM Corp. 1995, 1996 5.50 - 1

Page 766: DB2/400 Manual de Consulta SQLmarce.com/docs/systems/manuales/db2_400_manual_consulta_sql_v3r7.pdf · VERSION Nota de Versión Segunda edición (noviembre de 1996) Este manual es

5.50.1 Invocación Esta sentencia sólo puede hospedarse en un programa de aplicación. No es una sentencia ejecutable. No debe especificarse en REXX. Consulte el manual DB/2 for OS/400 SQL Programming , SC41-4611 para obtener información acerca del manejo de errores en REXX.

DB2/400 Manual de Consulta SQL V3R7 Invocación

© Copyright IBM Corp. 1995, 1996 5.50.1 - 1

Page 767: DB2/400 Manual de Consulta SQLmarce.com/docs/systems/manuales/db2_400_manual_consulta_sql_v3r7.pdf · VERSION Nota de Versión Segunda edición (noviembre de 1996) Este manual es

5.50.2 Autorización No se requiere ninguna.

DB2/400 Manual de Consulta SQL V3R7 Autorización

© Copyright IBM Corp. 1995, 1996 5.50.2 - 1

Page 768: DB2/400 Manual de Consulta SQLmarce.com/docs/systems/manuales/db2_400_manual_consulta_sql_v3r7.pdf · VERSION Nota de Versión Segunda edición (noviembre de 1996) Este manual es

5.50.3 Sintaxis +-------------------------------------------------- ----------------------+ ¦ ¦ ¦ >>-- WHENEVER---- NOT FOUND--------------------------------------------> ¦ ¦ +- SQLERROR---¦ ¦ ¦ +- SQLWARNING-+ ¦ ¦ ¦ ¦ >---- CONTINUE--------------------------------------------------- ---->< ¦ ¦ +--- GOTO------------ etiqueta-lenguaje-principal -+ ¦ ¦ +- GO TO-+ +- : -+ ¦ ¦ ¦ +-------------------------------------------------- ----------------------+

DB2/400 Manual de Consulta SQL V3R7 Sintaxis

© Copyright IBM Corp. 1995, 1996 5.50.3 - 1

Page 769: DB2/400 Manual de Consulta SQLmarce.com/docs/systems/manuales/db2_400_manual_consulta_sql_v3r7.pdf · VERSION Nota de Versión Segunda edición (noviembre de 1996) Este manual es

5.50.4 Descripción Las cláusulas NOT FOUND, SQLERROR, o SQLWARNING se utilizan para identificar el tipo de condición de excepción. NOT FOUND Identifica cualquier condición que da como resu ltado un SQLCODE de +100 o un SQLSTATE de '02000'. SQLERROR Identifica cualquier condición que da como resu ltado un SQLCODE negativo. SQLWARNING Identifica cualquier condición que da como resu ltado una condición de aviso (SQLWARN0 es 'W'), un SQLCODE positivo qu e no sea +100, o un SQLSTATE cuyo código de clase sea 01. La cláusula CONTINUE o GO TO se utiliza para especi ficar la siguiente sentencia que se ejecutará cuando existe el tipo id entificado de condición de excepción. CONTINUE Especifica la siguiente instrucción secuencial del programa fuente. GOTO o GO TO etiqueta-lenguaje-principal Especifica la sentencia identificada por la etiqueta del lenguaje principal . Para la etiqueta del lenguaje principal, sustitu ye un solo signo, precedido de forma opcional por dos punt os. La forma del signo depende del lenguaje principal. Por ejemplo, e n un programa COBOL, puede ser un nombre-apartado o un nombre-párrafo no calificado.

DB2/400 Manual de Consulta SQL V3R7 Descripción

© Copyright IBM Corp. 1995, 1996 5.50.4 - 1

Page 770: DB2/400 Manual de Consulta SQLmarce.com/docs/systems/manuales/db2_400_manual_consulta_sql_v3r7.pdf · VERSION Nota de Versión Segunda edición (noviembre de 1996) Este manual es

5.50.5 Notas Existen tres tipos de sentencias WHENEVER: WHENEVER NOT FOUND WHENEVER SQLERROR WHENEVER SQLWARNING Cada sentencia SQL ejecutable de un programa está e n el ámbito de una sentencia WHENEVER implícita o explícita de cada ti po. El ámbito de una sentencia WHENEVER se relaciona con la secuencia d e listado de las sentencias en el programa, no con su secuencia de e jecución. Una sentencia SQL está dentro del ámbito de la últi ma sentencia WHENEVER de cada tipo especificado en el programa fuente ant es de esa sentencia. Si no se especifica ninguna sentencia WHENEVER de a lgún tipo antes de una sentencia SQL, esa sentencia SQL estará dentro del ámbito de una sentencia implícita WHENEVER de ese tipo en el que se especif ica CONTINUE. | SQL soporta programas anidados en COBOL y C. Sin e mbargo, SQL no se| ajusta a las reglas de ámbito COBOL o C normales. Es decir, la última| sentencia WHENEVER especificada en el fuente del pr ograma antes del| programa anidado todavía está en efecto para el pro grama anidado. La| etiqueta a la que se hace referencia en la sentenci a WHENEVER debe| duplicarse en ese programa interno. De forma alter nativa, el programa| interno podría especificar una nueva sentencia WHEN EVER. | En FORTRAN, el ámbito de una sentencia WHENEVER est á limitado a las| sentencias SQL en el mismo subprograma.

DB2/400 Manual de Consulta SQL V3R7 Notas

© Copyright IBM Corp. 1995, 1996 5.50.5 - 1

Page 771: DB2/400 Manual de Consulta SQLmarce.com/docs/systems/manuales/db2_400_manual_consulta_sql_v3r7.pdf · VERSION Nota de Versión Segunda edición (noviembre de 1996) Este manual es

5.50.6 Ejemplo Escribir las sentencias que deben hospedarse en un programa COBOL para: 1. Ir a la etiqueta MANEJADOR para cada sentencia que produce un error. 2. Continuar el proceso de cada sentencia que prod uce un aviso. 3. Ir a la etiqueta FINDATOS para cualquier senten cia que no devuelva datos cuando se espera que efectúe dicha operac ión. EXEC SQL WHENEVER SQLERROR GOTO MANEJADOR END-EXEC. EXEC SQL WHENEVER NOT FOUND GOTO FINDATOS END-EXEC.

DB2/400 Manual de Consulta SQL V3R7 Ejemplo

© Copyright IBM Corp. 1995, 1996 5.50.6 - 1

Page 772: DB2/400 Manual de Consulta SQLmarce.com/docs/systems/manuales/db2_400_manual_consulta_sql_v3r7.pdf · VERSION Nota de Versión Segunda edición (noviembre de 1996) Este manual es

A.0 Apéndice A. Límites en SQL En las tablas siguientes se describen ciertos límit es impuestos por el gestor de base de datos de DB2 para OS/400. +-------------------------------------------------- ----------------------+ ¦ Tabla 16. Límites de longitud de identificador ¦ +-------------------------------------------------- ----------------------¦ ¦ Límites de identificador ¦ Límite de DB2 para ¦ ¦ ¦ OS/400 ¦ +-------------------------------------------------- -+--------------------¦ ¦ Nombre de autorización más largo ¦ 10 ¦ +-------------------------------------------------- -+--------------------¦ ¦ Nombre de correlación más largo ¦ 128 ¦ +-------------------------------------------------- -+--------------------¦ ¦ Nombre de cursor más largo ¦ 18 ¦ +-------------------------------------------------- -+--------------------¦ ¦ Nombre de identificador de lenguaje principal más ¦ 64 ¦ ¦ largo ¦ ¦ +-------------------------------------------------- -+--------------------¦ ¦ Nombre de servidor más largo ¦ 18 ¦ +-------------------------------------------------- -+--------------------¦ ¦ Nombre de sentencia más largo ¦ 18 ¦ +-------------------------------------------------- -+--------------------¦ ¦ Nombre de colección no calificado más largo ¦ 10 ¦ +-------------------------------------------------- -+--------------------¦ ¦ Nombre de la columna no calificado más largo ¦ 30 ¦ +-------------------------------------------------- -+--------------------¦ ¦ Nombre de paquete no calificado más largo ¦ 10 ¦ +-------------------------------------------------- -+--------------------¦ ¦ Nombre de tabla, vista e índice no calificado más ¦ 128 ¦ ¦ largo ¦ ¦ +-------------------------------------------------- -+--------------------¦ ¦ Nombre de restricción no calificado ¦ 128 ¦ +-------------------------------------------------- -+--------------------¦ ¦ Nombre de programa externo no calificado (39) ¦ 10 ¦ +-------------------------------------------------- -+--------------------¦ ¦ Nombre de procedimiento no calificado ¦ 128 ¦ +-------------------------------------------------- -+--------------------¦ ¦ Nombre de columna del sistema no calificado ¦ 10 ¦ +-------------------------------------------------- -+--------------------¦ ¦ Nombre de índice, vista y tabla del sistema no ¦ 10 ¦ ¦ calificado ¦ ¦ +-------------------------------------------------- ----------------------+ +--- Nota en línea -------------------------------------------------- ----+ ¦ ¦ ¦ La información siguiente contiene símbolos que el BookManager no ¦ ¦ visualiza. Por favor, consulte la versión publica da de este manual si ¦ ¦ desea información más completa sobre el tema. ¦ ¦ ¦ +-------------------------------------------------- ----------------------+ +-------------------------------------------------- ----------------------+ ¦ Tabla 17. Límites numéricos ¦ +-------------------------------------------------- ----------------------¦ ¦ Límites numéricos ¦ Límite de DB2 para ¦ ¦ ¦ OS/400 ¦ +-------------------------------------------------- -+--------------------¦ ¦ Valor INTEGER más pequeño ¦ -2147483648 ¦ +-------------------------------------------------- -+--------------------¦ ¦ Valor INTEGER más grande ¦ +2147483647 ¦ +-------------------------------------------------- -+--------------------¦ ¦ Valor SMALLINT más pequeño ¦ -32768 ¦ +-------------------------------------------------- -+--------------------¦ ¦ Valor SMALLINT más grande ¦ +32767 ¦ +-------------------------------------------------- -+--------------------¦ ¦ Precisión decimal más grande ¦ 31 ¦ +-------------------------------------------------- -+--------------------¦ ¦ Valor FLOAT más pequeño ¦ &app. ¦ ¦ ¦ -1,79x10(308) ¦ +-------------------------------------------------- -+--------------------¦ ¦ Valor FLOAT más grande ¦ &app. ¦ ¦ ¦ +1,79x10(308) ¦ +-------------------------------------------------- -+--------------------¦ ¦ Valor FLOAT positivo más pequeño ¦ &app. ¦ ¦ ¦ +2,23x10(-308) ¦ +-------------------------------------------------- -+--------------------¦ ¦ Valor FLOAT negativo más grande ¦ &app. ¦ ¦ ¦ -2,23x10(-308) ¦ +-------------------------------------------------- -+--------------------¦ ¦ Valor REAL más pequeño ¦ &app. -3,4x10(38) ¦ +-------------------------------------------------- -+--------------------¦ ¦ Valor REAL más grande ¦ &app. +3,4x10(38) ¦ +-------------------------------------------------- -+--------------------¦ ¦ Valor REAL positivo más pequeño ¦ &app. ¦ ¦ ¦ +1,17x10(-38) ¦ +-------------------------------------------------- -+--------------------¦ ¦ Valor REAL negativo más grande ¦ &app. ¦ ¦ ¦ -1,17x10(-38) ¦ +-------------------------------------------------- ----------------------+ +-------------------------------------------------- ----------------------+ ¦ Tabla 18. Límites de serie ¦ +-------------------------------------------------- ----------------------¦

DB2/400 Manual de Consulta SQL V3R7 Apéndice A. Límites en SQL

© Copyright IBM Corp. 1995, 1996 A.0 - 1

Page 773: DB2/400 Manual de Consulta SQLmarce.com/docs/systems/manuales/db2_400_manual_consulta_sql_v3r7.pdf · VERSION Nota de Versión Segunda edición (noviembre de 1996) Este manual es

¦ Límites de serie ¦ Límite de DB2 para ¦ ¦ ¦ OS/400 ¦ +-------------------------------------------------- -+--------------------¦ ¦ Longitud máxima de CHAR ¦ 32766 ¦ +-------------------------------------------------- -+--------------------¦ ¦ Longitud máxima de VARCHAR ¦ 32740 ¦ +-------------------------------------------------- -+--------------------¦ ¦ Longitud máxima de terminado en NUL C ¦ 32740 ¦ +-------------------------------------------------- -+--------------------¦ ¦ Longitud máxima de GRAPHIC ¦ 16383 ¦ +-------------------------------------------------- -+--------------------¦ ¦ Longitud máxima de VARGRAPHIC ¦ 16370 ¦ +-------------------------------------------------- -+--------------------¦ ¦ Longitud máxima de gráfico terminado en NUL C ¦ 16370 ¦ +-------------------------------------------------- -+--------------------¦ ¦ Longitud máxima de constante de caracteres ¦ 32740 ¦ +-------------------------------------------------- -+--------------------¦ ¦ Longitud máxima de constante gráfica ¦ 16370 ¦ +-------------------------------------------------- -+--------------------¦ ¦ Serie de caracteres concatenada más larga ¦ 32766 ¦ +-------------------------------------------------- -+--------------------¦ ¦ Serie gráfica concatenada más larga ¦ 16370 ¦ +-------------------------------------------------- ----------------------+ +-------------------------------------------------- ----------------------+ ¦ Tabla 19. Límites de fecha y hora ¦ +-------------------------------------------------- ----------------------¦ ¦ Límites de fecha y hora ¦ Límite de DB2 para OS/400 ¦ +------------------------------------------+------- ----------------------¦ ¦ Valor DATE más pequeño ¦ 0001-0 1-01 ¦ +------------------------------------------+------- ----------------------¦ ¦ Valor DATE más grande ¦ 9999-1 2-31 ¦ +------------------------------------------+------- ----------------------¦ ¦ Valor TIME más pequeño ¦ 00:00: 00 ¦ +------------------------------------------+------- ----------------------¦ ¦ Valor TIME más grande ¦ 24:00: 00 ¦ +------------------------------------------+------- ----------------------¦ ¦ Valor TIMESTAMP más pequeño ¦ 0001-0 1-01-00.00.00.000000 ¦ +------------------------------------------+------- ----------------------¦ ¦ Valor TIMESTAMP más grande ¦ 9999-1 2-31-24.00.00.000000 ¦ +-------------------------------------------------- ----------------------+ +--- Nota en línea -------------------------------------------------- ----+ ¦ ¦ ¦ La información siguiente contiene símbolos que el BookManager no ¦ ¦ visualiza. Por favor, consulte la versión publica da de este manual si ¦ ¦ desea información más completa sobre el tema. ¦ ¦ ¦ +-------------------------------------------------- ----------------------+ +-------------------------------------------------- ----------------------+ ¦ Tabla 20. Límites del gestor de base de datos ¦ +-------------------------------------------------- ----------------------¦ ¦ Límites del gestor de base de datos ¦ Límite de DB2 para ¦ ¦ ¦ OS/400 ¦ +-------------------------------------------------- -+--------------------¦ ¦ Máximo de columnas de una tabla ¦ 8000 ¦ +-------------------------------------------------- -+--------------------¦ ¦ Máximo de columnas de una vista ¦ 8000 ¦ +-------------------------------------------------- -+--------------------¦ ¦ Longitud máxima de una fila que incluya todas las ¦ 32766 ¦ ¦ actividades generales ¦ ¦ +-------------------------------------------------- -+--------------------¦ ¦ Tamaño máximo de una tabla ¦ 248 gigabytes ¦ +-------------------------------------------------- -+--------------------¦ ¦ Tamaño máximo de un índice ¦ 1 terabyte ¦ +-------------------------------------------------- -+--------------------¦ ¦ Máximo de filas de una tabla ¦ 2 gig ¦ +-------------------------------------------------- -+--------------------¦ ¦ Clave de índice más larga ¦ 2000 ¦ +-------------------------------------------------- -+--------------------¦ ¦ Máximo de columnas de una clave de índice ¦ 120 ¦ +-------------------------------------------------- -+--------------------¦ ¦ Máximo de índices de una tabla ¦ &app. 4000 ¦ +-------------------------------------------------- -+--------------------¦ ¦ Máximo de tablas a las que se hace referencia en ¦ 32 ¦ ¦ una sentencia SQL o una vista ¦ ¦ +-------------------------------------------------- -+--------------------¦ ¦ Máximo de declaraciones de variable del lenguaje ¦ almacenamiento ¦ ¦ principal en un programa precompilado (40) ¦ ¦ +-------------------------------------------------- -+--------------------¦ ¦ Máximo de variables del lenguaje principal en una ¦ &app. 8000 ¦ ¦ sentencia SQL (42) ¦ ¦ +-------------------------------------------------- -+--------------------¦ ¦ Variable del lenguaje principal más larga ¦ 32766 ¦ ¦ utilizada para insertar o actualizar ¦ ¦ +-------------------------------------------------- -+--------------------¦ ¦ Sentencia SQL más larga ¦ 32767 ¦ +-------------------------------------------------- -+--------------------¦ ¦ Máximo de elementos en una lista de ¦ &app. 8000 ¦ ¦ selección (41) ¦ ¦ +-------------------------------------------------- -+--------------------¦ ¦ Máximo de predicados en una cláusula WHERE o ¦ 4690 ¦ ¦ HAVING ¦ ¦ +-------------------------------------------------- -+--------------------¦

DB2/400 Manual de Consulta SQL V3R7 Apéndice A. Límites en SQL

© Copyright IBM Corp. 1995, 1996 A.0 - 2

Page 774: DB2/400 Manual de Consulta SQLmarce.com/docs/systems/manuales/db2_400_manual_consulta_sql_v3r7.pdf · VERSION Nota de Versión Segunda edición (noviembre de 1996) Este manual es

¦ Número máximo de columnas en una cláusula GROUP ¦ 120 ¦ ¦ BY ¦ ¦ +-------------------------------------------------- -+--------------------¦ ¦ Longitud total máxima de las columnas de una ¦ 2000 ¦ ¦ cláusula GROUP BY ¦ ¦ +-------------------------------------------------- -+--------------------¦ ¦ Número máximo de columnas en una cláusula ORDER ¦ 10000 ¦ ¦ BY ¦ ¦ +-------------------------------------------------- -+--------------------¦ ¦ Longitud total máxima de las columnas de una ¦ 10000 ¦ ¦ cláusula ORDER BY ¦ ¦ +-------------------------------------------------- -+--------------------¦ ¦ Tamaño máximo de una SQLDA ¦ 167776959 ¦ +-------------------------------------------------- -+--------------------¦ ¦ Número máximo de sentencias preparadas ¦ almacenamiento ¦ +-------------------------------------------------- -+--------------------¦ ¦ Máximo de cursores declarados en un programa ¦ almacenamiento ¦ +-------------------------------------------------- -+--------------------¦ ¦ Número máximo de cursores abiertos a la vez ¦ almacenamiento ¦ +-------------------------------------------------- -+--------------------¦ ¦ Máximo de tablas en una base de datos relacional ¦ almacenamiento ¦ +-------------------------------------------------- -+--------------------¦ ¦ Número máximo de restricciones sobre una tabla ¦ 300 ¦ +-------------------------------------------------- -+--------------------¦ ¦ Niveles máximos permitidos para una subselección ¦ 32 ¦ +-------------------------------------------------- -+--------------------¦ ¦ Longitud máxima de un comentario ¦ 2000 ¦ +-------------------------------------------------- -+--------------------¦| ¦ Número máximo de filas modificadas en una unidad ¦ 500000 ¦ ¦ de trabajo ¦ ¦ +-------------------------------------------------- ----------------------+ (39) Para procedimientos REXX, el límite es 33. (40) En programas RPG/400 y PL/I, cuando se utiliz a la técnica antigua para pasar parámetros, el límite es de 4000 aproximadamente. El límite se basa en el númer o de punteros permitidos en el programa. En todos los demás casos, el límite se basa en restricciones de la arquitect ura dentro del sistema operativo. (41) El límite se basa en el tamaño de las estruct uras internas generadas para la sentencia SQL analizada. (42) El límite se basa en el número de variables d el sistema principal que se ajustan a la mayor sentencia S QL de 32767 bytes.

DB2/400 Manual de Consulta SQL V3R7 Apéndice A. Límites en SQL

© Copyright IBM Corp. 1995, 1996 A.0 - 3

Page 775: DB2/400 Manual de Consulta SQLmarce.com/docs/systems/manuales/db2_400_manual_consulta_sql_v3r7.pdf · VERSION Nota de Versión Segunda edición (noviembre de 1996) Este manual es

B.0 Apéndice B. Área de comunicaciones SQL Una SQLCA es un conjunto de variables que se actual izan al final de la ejecución cada sentencia SQL. Un programa que cont enga sentencias SQL ejecutables debe proporcionar exactamente una SQLCA (a menos que se utilice un SQLCODE autónomo o una variable SQLSTATE autónoma en su lugar). Para proporcionar la declaración de la SQLCA en tod os los lenguajes principales, excepto RPG o REXX, puede utilizarse l a sentencia SQL INCLUDE. Para obtener información acerca de la uti lización de la SQLCA en un procedimiento REXX, consulte el manual DB/2 for OS/400 SQL Programming , SC41-4611. | En C, COBOL, FORTRAN, y PL/I el nombre del área de almacenamiento debe ser SQLCA. En PL/I y C, el nombre de la estructura deb e ser SQLCA. Toda sentencia SQL debe estar dentro del ámbito de su de claración. Cuando se especifica un SQLCODE autónomo en el prog rama, no debe incluirse la SQLCA. El precompilador incluirá una SQLCA con el nombre de la variable SQLCODE cambiado por SQLCADE (o SQLCOD cam biado por SQLCAD). El precompilador añadirá sentencias al programa para a segurar que el SQLCODE autónomo contiene los valores correctos. Cuando se especifica un SQLSTATE autónomo en el pro grama, no debe incluirse la SQLCA. El precompilador incluirá una SQLCA con el nombre de la variable SQLSTATE cambiado por SQLSTATE. El pre compilador añadirá sentencias al programa para asegurar que el SQLSTAT E autónomo contiene los valores correctos. El SQLCODE y el SQLSTATE autónomos no deben especif icarse en RPG ni en REXX. Subtemas B.1 Descripciones de campo B.2 Declaraciones INCLUDE SQLCA

DB2/400 Manual de Consulta SQL V3R7 Apéndice B. Área de comunicaciones SQL

© Copyright IBM Corp. 1995, 1996 B.0 - 1

Page 776: DB2/400 Manual de Consulta SQLmarce.com/docs/systems/manuales/db2_400_manual_consulta_sql_v3r7.pdf · VERSION Nota de Versión Segunda edición (noviembre de 1996) Este manual es

B.1 Descripciones de campo Los nombres de la tabla siguiente son los facilitad os por la sentencia SQL| INCLUDE. En la mayor parte de los casos C, COBOL, FORTRAN y PL/I utilizan| los mismos nombres. Los nombres en RPG son diferen tes porque en RPG/400 están limitados a 6 caracteres. Observe un caso en el que los nombres en PL/I difieren de los nombres en COBOL. +-------------------------------------------------- ------------------------------------------------+| ¦ Tabla 21. Nombres facilitados por la sentencia SQ L INCLUDE ¦ +-------------------------------------------------- ------------------------------------------------¦| ¦ Nombre en C, ¦ ¦ ¦ Tipo de ¦ ¦| ¦ nombre en ¦ Nombre en ¦ Nombre ¦ datos del ¦ ¦| ¦ COBOL y PL/I ¦ FORTRAN(1) ¦ RPG ¦ campo ¦ Valor del campo ¦ +---------------+--------------+--------------+---- -------+----------------------------------------¦| ¦ SQLCAID ¦ No utilizado ¦ SQLAID ¦ CHA R(8) ¦ Un "señalizador visual" para vuelcos ¦| ¦ sqlcaid ¦ SQLCAID ¦ ¦ ¦ de almacenamiento que contenga ¦| ¦ ¦ ¦ ¦ ¦ 'SQLCA'. ¦ +---------------+--------------+--------------+---- -------+----------------------------------------¦| ¦ SQLCABC ¦ No utilizado ¦ SQLABC ¦ INT EGER ¦ Contiene la longitud de la SQLCA, 136. ¦| ¦ sqlcabc ¦ SQLCABC ¦ ¦ ¦ ¦ +---------------+--------------+--------------+---- -------+----------------------------------------¦| ¦ SQLCODE ¦ SQLCOD ¦ SQLCOD ¦ INT EGER ¦ Contiene un código de retorno SQL. ¦| ¦ sqlcode ¦ SQLCODE ¦ ¦ ¦ ¦| ¦ ¦ ¦ ¦ ¦ Código Significado ¦| ¦ ¦ ¦ ¦ ¦ 0 Ejecución satisfactoria aunque ¦| ¦ ¦ ¦ ¦ ¦ pueden haberse establecido ¦| ¦ ¦ ¦ ¦ ¦ indicadores SQLWARN. ¦| ¦ ¦ ¦ ¦ ¦ positivo Ejecución satisfactoria, pero ¦| ¦ ¦ ¦ ¦ ¦ con una condición de aviso. ¦| ¦ ¦ ¦ ¦ ¦ negativo Condición de error. ¦ +---------------+--------------+--------------+---- -------+----------------------------------------¦| ¦ SQLERRML(2) ¦ SQLTXL ¦ SQLERL ¦ SMA LLINT ¦ Indicador de longitud para SQLERRMC, ¦| ¦ sqlerrml ¦ SQLERRML ¦ ¦ ¦ dentro del rango de 0 a 70. 0 ¦| ¦ ¦ ¦ ¦ ¦ significa que el valor de SQLERRMC no ¦| ¦ ¦ ¦ ¦ ¦ es pertinente. ¦ +---------------+--------------+--------------+---- -------+----------------------------------------¦| ¦ SQLERRMC(2) ¦ SQLTXT ¦ SQLERM ¦ CHA R (70) ¦ Contiene el texto de sustitución de ¦| ¦ sqlerrmc ¦ SQLERRMC ¦ ¦ ¦ mensaje asociado con el SQLCODE. Para ¦| ¦ ¦ ¦ ¦ ¦ CONNECT y SET CONNECTION, el campo ¦| ¦ ¦ ¦ ¦ ¦ SQLERRMC contiene información sobre la ¦| ¦ ¦ ¦ ¦ ¦ conexión; la Tabla 23 contiene una ¦| ¦ ¦ ¦ ¦ ¦ descripción del texto de sustitución. ¦ +---------------+--------------+--------------+---- -------+----------------------------------------¦| ¦ SQLERRP ¦ SQLERP ¦ SQLERP ¦ CHA R(8) ¦ Contiene el nombre del producto y del ¦| ¦ sqlerrp ¦ SQLERRP ¦ ¦ ¦ módulo que devuelve el error. Los ¦| ¦ ¦ ¦ ¦ ¦ tres primeros caracteres identifican ¦| ¦ ¦ ¦ ¦ ¦ el producto: ¦ ¦ ¦ ¦ ¦ ¦ ¦| ¦ ¦ ¦ ¦ ¦ ARI para SQL/DS ¦| ¦ ¦ ¦ ¦ ¦ DSN para DB2 para MVS ¦| ¦ ¦ ¦ ¦ ¦ QSQ para DB2 para OS/400 ¦| ¦ ¦ ¦ ¦ ¦ SQL para todos los demás productos ¦| ¦ ¦ ¦ ¦ ¦ DB2 ¦ ¦ ¦ ¦ ¦ ¦ ¦| ¦ ¦ ¦ ¦ ¦ Consulte el apartado "CONNECT (Tipo ¦| ¦ ¦ ¦ ¦ ¦ 1)" en el tema 5.10 o "CONNECT (Tipo ¦| ¦ ¦ ¦ ¦ ¦ 2)" en el tema 5.11 para obtener ¦| ¦ ¦ ¦ ¦ ¦ información adicional. ¦ +---------------+--------------+--------------+---- -------+----------------------------------------¦| ¦ SQLERRD ¦ SQLERR ¦ SQLERR(3) ¦ Mat riz ¦ Contiene seis variables INTEGER que ¦| ¦ sqlerrd ¦ SQLERRD ¦ ¦ ¦ proporcionan información de ¦| ¦ ¦ ¦ ¦ ¦ diagnóstico; en la Tabla 22 encontrará ¦| ¦ ¦ ¦ ¦ ¦ una descripción de la información de ¦| ¦ ¦ ¦ ¦ ¦ diagnóstico. ¦ +---------------+--------------+--------------+---- -------+----------------------------------------¦| ¦ SQLWARN ¦ SQLWRN ¦ SQLWRN(4) ¦ CHA R(11) ¦ Conjunto de 11 indicadores de aviso; ¦| ¦ sqlwarn ¦ SQLWARN ¦ ¦ ¦ cada uno de ellos contiene un blanco, ¦| ¦ ¦ ¦ ¦ ¦ 'W' o 'N'. ¦ +---------------+--------------+--------------+---- -------+----------------------------------------¦| ¦ SQLWARN0 ¦ SQLWRN(0) ¦ SQLWN0 ¦ CHA R(1) ¦ Si todos los otros indicadores están ¦| ¦ sqlwarn[0] ¦ SQLWARN(1:1) ¦ ¦ ¦ en blanco, éste también; contendrá 'W' ¦| ¦ ¦ ¦ ¦ ¦ si al menos otro indicador contiene ¦| ¦ ¦ ¦ ¦ ¦ 'W' o 'N'. ¦ +---------------+--------------+--------------+---- -------+----------------------------------------¦| ¦ SQLWARN1 ¦ SQLWRN(1) ¦ SQLWN1 ¦ CHA R(1) ¦ Contiene 'W' si el valor de una ¦| ¦ sqlwarn[1] ¦ SQLWARN(2:2) ¦ ¦ ¦ columna de serie se truncó al ¦| ¦ ¦ ¦ ¦ ¦ asignarla a una variable del lenguaje ¦| ¦ ¦ ¦ ¦ ¦ principal. Contiene 'N' si se ha ¦| ¦ ¦ ¦ ¦ ¦ especificado *NOCNULRQD en el mandato ¦| ¦ ¦ ¦ ¦ ¦ CRTSQLCI y se ha asignado el valor de ¦| ¦ ¦ ¦ ¦ ¦ una columna de serie a una variable ¦| ¦ ¦ ¦ ¦ ¦ del lenguaje principal terminada en ¦| ¦ ¦ ¦ ¦ ¦ NUL C, y dicha variable era lo ¦| ¦ ¦ ¦ ¦ ¦ bastante grande para contener el ¦| ¦ ¦ ¦ ¦ ¦ resultado pero no lo bastante para ¦| ¦ ¦ ¦ ¦ ¦ contener el terminador NUL. ¦ +---------------+--------------+--------------+---- -------+----------------------------------------¦| ¦ SQLWARN2 ¦ SQLWRN(2) ¦ SQLWN2 ¦ CHA R(1) ¦ Contiene 'W' si se han eliminado los ¦| ¦ sqlwarn[2] ¦ SQLWARN(3:3) ¦ ¦ ¦ valores nulos del argumento de una ¦| ¦ ¦ ¦ ¦ ¦ función; no necesariamente establecido ¦| ¦ ¦ ¦ ¦ ¦ en 'W' para la función MIN porque sus ¦| ¦ ¦ ¦ ¦ ¦ resultados no dependen de la ¦| ¦ ¦ ¦ ¦ ¦ eliminación de los valores nulos. ¦ +---------------+--------------+--------------+---- -------+----------------------------------------¦| ¦ SQLWARN3 ¦ SQLWRN(3) ¦ SQLWN3 ¦ CHA R(1) ¦ Contiene 'W' si el número de columnas ¦| ¦ sqlwarn[3] ¦ SQLWARN(4:4) ¦ ¦ ¦ es mayor que el número de variables ¦| ¦ ¦ ¦ ¦ ¦ del lenguaje principal. ¦

DB2/400 Manual de Consulta SQL V3R7 Descripciones de campo

© Copyright IBM Corp. 1995, 1996 B.1 - 1

Page 777: DB2/400 Manual de Consulta SQLmarce.com/docs/systems/manuales/db2_400_manual_consulta_sql_v3r7.pdf · VERSION Nota de Versión Segunda edición (noviembre de 1996) Este manual es

+---------------+--------------+--------------+---- -------+----------------------------------------¦| ¦ SQLWARN4 ¦ SQLWRN(4) ¦ SQLWN4 ¦ CHA R(1) ¦ Contiene 'W' si una sentencia ¦| ¦ sqlwarn[4] ¦ SQLWARN(5:5) ¦ ¦ ¦ preparada UPDATE o DELETE no incluye ¦| ¦ ¦ ¦ ¦ ¦ una cláusula WHERE. ¦ +---------------+--------------+--------------+---- -------+----------------------------------------¦| ¦ SQLWARN5 ¦ SQLWRN(5) ¦ SQLWN5 ¦ CHA R(1) ¦ Reservado ¦| ¦ sqlwarn[5] ¦ SQLWARN(6:6) ¦ ¦ ¦ ¦ +---------------+--------------+--------------+---- -------+----------------------------------------¦| ¦ SQLWARN6 ¦ SQLWRN(6) ¦ SQLWN6 ¦ CHA R(1) ¦ Contiene 'W' si la aritmética de ¦| ¦ sqlwarn[6] ¦ SQLWARN(7:7) ¦ ¦ ¦ fechas da como resultado un ajuste de ¦| ¦ ¦ ¦ ¦ ¦ final de mes. ¦ +---------------+--------------+--------------+---- -------+----------------------------------------¦| ¦ SQLWARN7 ¦ SQLWRN(7) ¦ SQLWN7 ¦ CHA R(1) ¦ Reservado ¦| ¦ sqlwarn[7] ¦ SQLWARN(8:8) ¦ ¦ ¦ ¦ +---------------+--------------+--------------+---- -------+----------------------------------------¦| ¦ SQLWARN8 ¦ SQLWRX(1) ¦ SQLWN8 ¦ CHA R(1) ¦ Contiene 'W' si el resultado de una ¦| ¦ sqlwarn[8] ¦ SQLWARN(10:10¦ ¦ ¦ conversión de caracteres contiene el ¦| ¦ ¦ ¦ ¦ ¦ carácter de sustitución. ¦ +---------------+--------------+--------------+---- -------+----------------------------------------¦| ¦ SQLWARN9 ¦ SQLWRX(2) ¦ SQLWN9 ¦ CHA R(1) ¦ Reservado ¦| ¦ sqlwarn[9] ¦ SQLWARN(11:11¦ ¦ ¦ ¦ +---------------+--------------+--------------+---- -------+----------------------------------------¦| ¦ SQLWARNA ¦ SQLWRX(3) ¦ SQLWNA ¦ CHA R(1) ¦ Reservado ¦| ¦ sqlwarn[10] ¦ SQLWARN(12:12¦ ¦ ¦ ¦ +---------------+--------------+--------------+---- -------+----------------------------------------¦| ¦ SQLSTATE ¦ SQLSTT ¦ SQLSTT ¦ CHA R(5) ¦ Código de retorno que indica el ¦| ¦ sqlstate ¦ SQLSTATE ¦ ¦ ¦ resultado de la sentencia SQL ¦| ¦ ¦ ¦ ¦ ¦ ejecutada más recientemente. ¦ +-------------------------------------------------- ------------------------------------------------¦ ¦ Notas: ¦ ¦ ¦| ¦ (1) El primer nombre indica los nombres SQL SQLCA de IBM para SQLCA de FORTRAN. El segundo ¦| ¦ nombre indica un nombre alternativo disponible debido a la implementación DB2 para OS/400 de ¦| ¦ SQLCA en FORTRAN. ¦ ¦ ¦| ¦ (2) En COBOL, SQLERRM incluye SQLERRML y SQLERRMC . En PL/I, la serie de longitud variable ¦ ¦ SQLERRM es equivalente a SQLERRML con el prefi jo SQLERRMC. ¦ ¦ ¦| ¦ (3) En RPG/400 e ILE RPG/400, SQLERR está definid o como 24 caracteres (no una matriz) que los ¦ ¦ vuelven a definir los campos que van de SQLER1 a SQLER6. Los campos son binarios de palabra ¦ ¦ completa. En ILE RPG/400, SQLERR también se v uelve a definir como matriz. El nombre de la ¦ ¦ matriz es SQLERRD. ¦ ¦ ¦| ¦ (4) Definido como 11 caracteres (no una matriz). ¦ +-------------------------------------------------- ------------------------------------------------+ +-------------------------------------------------- ----------------------+ ¦ Tabla 22. Información de diagnóstico SQLERRD ¦ +-------------------------------------------------- ----------------------¦ ¦ Descripción ¦ Valor del campo ¦ +-----------------+-------------------------------- ----------------------¦ ¦ SQLERRD(1) ¦ Contiene los cuatro últimos car acteres del mensaje ¦ ¦ ¦ de escape CPF si el SQLCODE es menor que 0. Por ¦ ¦ ¦ ejemplo, si el mensaje es CPF57 15, X'F5F7F1F5' se ¦ ¦ ¦ coloca en SQLERRD(1).(1) ¦ +-----------------+-------------------------------- ----------------------¦ ¦ SQLERRD(2) ¦ Contiene los cuatro últimos car acteres de un mensaje ¦ ¦ ¦ de diagnóstico CPD si el código SQL es menor que ¦ ¦ ¦ 0.(1) ¦ +-----------------+-------------------------------- ----------------------¦ ¦ SQLERRD(3) ¦ Para INSERT, UPDATE y DELETE, m uestra el número de ¦ ¦ ¦ filas que se ven afectadas. ¦ ¦ ¦ ¦ ¦ ¦ En una sentencia FETCH, SQLERRD (3) contiene el ¦ ¦ ¦ número de filas obtenidas. ¦ ¦ ¦ ¦ ¦ ¦ En una sentencia CONNECT para e stado, SQLERRD(3) ¦ ¦ ¦ contiene información sobre el e stado de conexión. ¦ ¦ ¦ Consulte el apartado "CONNECT (Tipo 2)" en el ¦ ¦ ¦ tema 5.11 para obtener más información. ¦ ¦ ¦ ¦ ¦ ¦ Para la sentencia PREPARE, cont iene el número ¦ ¦ ¦ estimado de filas seleccionadas . ¦ +-----------------+-------------------------------- ----------------------¦ ¦ SQLERRD(4) ¦ Para la sentencia PREPARE, cont iene un número ¦ ¦ ¦ relativo estimado de los recurs os precisos para cada ¦ ¦ ¦ ejecución. Este número varía d ependiendo de la ¦ ¦ ¦ disponibilidad actual de índice s, de los tamaños de ¦ ¦ ¦ archivo, del modelo de CPU, etc . Es un coste ¦ ¦ ¦ estimado para el plan de acceso elegido por el ¦ ¦ ¦ Optimizador de consultas DB2 pa ra OS/400. ¦ ¦ ¦ ¦ ¦ ¦ En una sentencia CONNECT y SET CONNECTION, ¦ ¦ ¦ SQLERRD(4) contiene el tipo de conversación ¦ ¦ ¦ utilizada e indica si se pueden o no realizar ¦ ¦ ¦ actualizaciones que se puedan c omprometer. Consulte ¦ ¦ ¦ el apartado "CONNECT (Tipo 2)" en el tema 5.11 para ¦ ¦ ¦ obtener más información. ¦ ¦ ¦ ¦ ¦ ¦ Para una sentencia FETCH, SQLER RD(4) contiene la ¦ ¦ ¦ longitud de la fila recuperada. ¦ +-----------------+-------------------------------- ----------------------¦ ¦ SQLERRD(5) ¦ En una sentencia DELETE, muestr a el número de filas ¦ ¦ ¦ que se ven afectadas mediante r estricciones de ¦ ¦ ¦ referencia. ¦ ¦ ¦ ¦ ¦ ¦ Para una sentencia EXECUTE IMME DIATE o PREPARE, ¦

DB2/400 Manual de Consulta SQL V3R7 Descripciones de campo

© Copyright IBM Corp. 1995, 1996 B.1 - 2

Page 778: DB2/400 Manual de Consulta SQLmarce.com/docs/systems/manuales/db2_400_manual_consulta_sql_v3r7.pdf · VERSION Nota de Versión Segunda edición (noviembre de 1996) Este manual es

¦ ¦ puede contener la posición de u n error de sintaxis. ¦ ¦ ¦ En una sentencia FETCH de varia s filas, SQLERRD(5) ¦ ¦ ¦ contiene +100 si se ha obtenido la última fila que ¦ ¦ ¦ existe actualmente en la tabla. ¦ ¦ ¦ ¦ ¦ ¦ En una sentencia CONNECT o SET CONNECTION, ¦ ¦ ¦ SQLERRD(5) contiene: ¦ ¦ ¦ ¦ �¦ ¦ -1 si la conexión es no cone ctada ¦ �¦ ¦ 0 si la conexión es local ¦ �¦ ¦ 1 si la conexión es remota ¦ +-----------------+-------------------------------- ----------------------¦ ¦ SQLERRD(6) ¦ Contiene el identificador de me nsaje de realización ¦ ¦ ¦ SQL cuando el SQLCODE es 0. ¦ ¦ ¦ ¦ ¦ ¦ En todos los demás casos, es in definido. ¦ +-------------------------------------------------- ----------------------¦ ¦ Nota: ¦ ¦ ¦ ¦ (1) SQLERRD(1) y SQLERRD(2) se establecen únicame nte si son adecuadas ¦ ¦ y si el servidor actual es DB2 para OS/400. ¦ +-------------------------------------------------- ----------------------+ +-------------------------------------------------- ----------------------+ ¦ Tabla 23. Texto de sustitución SQLERRMC para CONN ECT y SET CONNECTION ¦ +-------------------------------------------------- ----------------------¦ ¦ Descripción ¦ Tipo de datos ¦ +-------------------------------------------------- ----+-----------------¦ ¦ Nombre de base de datos relacional ¦ CHAR(18) ¦ +-------------------------------------------------- ----+-----------------¦ ¦ Identificación de producto (igual que SQLERRP) ¦ CHAR(8) ¦ +-------------------------------------------------- ----+-----------------¦ ¦ ID de usuario del trabajo de servidor ¦ CHAR(10) ¦ +-------------------------------------------------- ----+-----------------¦ ¦ Método de conexión (*DUW o *RUW) ¦ CHAR(10) ¦ +-------------------------------------------------- ----+-----------------¦ ¦ Nombre de clase de servidor DDM ¦ CHAR(10) ¦ ¦ ¦ ¦ ¦ QAS DB2 para OS/400 ¦ ¦ ¦ ¦ ¦ ¦ QDB2 DB2 para MVS ¦ ¦ ¦ ¦ ¦ ¦ QDB2/2 DB2 para OS/2 ¦ ¦ ¦ ¦ ¦ ¦ QDB2/6000 DB2 para AIX/6000 ¦ ¦ ¦ ¦ ¦| ¦ QDB2/HPUX DB2 para HP-UX** ¦ ¦ ¦ ¦ ¦| ¦ QDB2/NT DB2 para NT ¦ ¦ ¦ ¦ ¦ ¦ QDB2/SUN DB2 para SUN** Solaris** ¦ ¦ ¦ ¦ ¦ ¦ ¦ ¦ ¦ QSQLDS/VM SQL/DS VM ¦ ¦ ¦ ¦ ¦ ¦ QSQLDS/VSE SQL/DS VSE ¦ ¦ +-------------------------------------------------- ----+-----------------¦ ¦ Tipo de conexión (igual que SQLERRD(4)) ¦ SMALLINT ¦ +-------------------------------------------------- ----------------------+

DB2/400 Manual de Consulta SQL V3R7 Descripciones de campo

© Copyright IBM Corp. 1995, 1996 B.1 - 3

Page 779: DB2/400 Manual de Consulta SQLmarce.com/docs/systems/manuales/db2_400_manual_consulta_sql_v3r7.pdf · VERSION Nota de Versión Segunda edición (noviembre de 1996) Este manual es

B.2 Declaraciones INCLUDE SQLCA En C, las declaraciones INCLUDE SQLCA son equivalentes a: #ifndef SQLCODE struct sqlca { unsigned char sqlcaid[8]; long sqlcabc; long sqlcode; short sqlerrml; unsigned char sqlerrmc[70]; unsigned char sqlerrp[8]; long sqlerrd[6]; unsigned char sqlwarn[11]; unsigned char sqlstate[5]; }; #define SQLCODE sqlca.sqlcode #define SQLWARN0 sqlca.sqlwarn[0] #define SQLWARN1 sqlca.sqlwarn[1] #define SQLWARN2 sqlca.sqlwarn[2] #define SQLWARN3 sqlca.sqlwarn[3] #define SQLWARN4 sqlca.sqlwarn[4] #define SQLWARN5 sqlca.sqlwarn[5] #define SQLWARN6 sqlca.sqlwarn[6] #define SQLWARN7 sqlca.sqlwarn[7] #define SQLWARN8 sqlca.sqlwarn[8] #define SQLWARN9 sqlca.sqlwarn[9] #define SQLWARNA sqlca.sqlwarn[10] #define SQLSTATE sqlca.sqlstate #endif struct sqlca sqlca; En COBOL, las declaraciones INCLUDE SQLCA equivalen a: 01 SQLCA. 05 SQLCAID PIC X(8). 05 SQLCABC PIC S9(9) BINARY. 05 SQLCODE PIC S9(9) BINARY. 05 SQLERRM. 49 SQLERRML PIC S9(4) BINARY. 49 SQLERRMC PIC X(70). 05 SQLERRP PIC X(8). 05 SQLERRD OCCURS 6 TIMES PIC S9(9) BINARY. 05 SQLWARN. 10 SQLWARN0 PIC X(1). 10 SQLWARN1 PIC X(1). 10 SQLWARN2 PIC X(1). 10 SQLWARN3 PIC X(1). 10 SQLWARN4 PIC X(1). 10 SQLWARN5 PIC X(1). 10 SQLWARN6 PIC X(1). 10 SQLWARN7 PIC X(1). 10 SQLWARN8 PIC X(1). 10 SQLWARN9 PIC X(1). 10 SQLWARNA PIC X(1). 05 SQLSTATE PIC X(5). Nota: En COBOL, no se debe especificar INCLUDE SQLCA fu era de la sección de almacenamiento en uso. | En FORTRAN, las declaraciones INCLUDE SQLCA equivalen a: | CHARACTER SQLCA(136)| CHARACTER SQLCAID*8| INTEGER*4 SQLCABC| INTEGER*4 SQLCODE| INTEGER*2 SQLERRML| CHARACTER SQLERRMC*70| CHARACTER SQLERRP*8| INTEGER*4 SQLERRD(6)| CHARACTER SQLWARN*11| CHARACTER SQLSTOTE*5| EQUIVALENCE (SQLCA( 1), SQLCAID)| EQUIVALENCE (SQLCA( 9), SQLCABC)| EQUIVALENCE (SQLCA( 13), SQLCODE)| EQUIVALENCE (SQLCA( 17), SQLERRML)| EQUIVALENCE (SQLCA( 19), SQLERRMC)| EQUIVALENCE (SQLCA( 89), SQLERRP)| EQUIVALENCE (SQLCA( 97), SQLERRD)| EQUIVALENCE (SQLCA(121), SQLWARN)| EQUIVALENCE (SQLCA(132), SQLSTOTE) | INTEGER*4 SQLCOD,| C SQLERR(6)| INTEGER*2 SQLTXL| CHARACTER SQLERP*8,| C SQLWRN(0:7)*1,| C SQLWRX(1:3)*1,| C SQLTXT*70,| C SQLSTT*5,| C SQLWRNWK*8,| C SQLWRXWK*3,| C SQLERRWK*24,

DB2/400 Manual de Consulta SQL V3R7 Declaraciones INCLUDE SQLCA

© Copyright IBM Corp. 1995, 1996 B.2 - 1

Page 780: DB2/400 Manual de Consulta SQLmarce.com/docs/systems/manuales/db2_400_manual_consulta_sql_v3r7.pdf · VERSION Nota de Versión Segunda edición (noviembre de 1996) Este manual es

| C SQLERRDWK*24| EQUIVALENCE (SQLWRN(1), SQLWRNWK)| EQUIVALENCE (SQLWRX(1), SQLWRXWK)| EQUIVALENCE (SQLCA(97), SQLERRDWK)| EQUIVALENCE (SQLERR(1), SQLERRWK)| COMMON /SQLCA1/SQLCOD,SQLERR,SQLTXL| COMMON /SQLCA2/SQLERP,SQLWRN,SQLTXT,SQLWRX,SQLSTT En PL/I , las declaraciones INCLUDE SQLCA equivalen a: DCL 1 SQLCA, 2 SQLCAID CHAR(8), 2 SQLCABC BIN FIXED(31), 2 SQLCODE BIN FIXED(31), 2 SQLERRM CHAR(70) VAR, 2 SQLERRP CHAR(8), 2 SQLERRD(6) BIN FIXED(31), 2 SQLWARN, 3 SQLWARN0 CHAR(1), 3 SQLWARN1 CHAR(1), 3 SQLWARN2 CHAR(1), 3 SQLWARN3 CHAR(1), 3 SQLWARN4 CHAR(1), 3 SQLWARN5 CHAR(1), 3 SQLWARN6 CHAR(1), 3 SQLWARN7 CHAR(1), 3 SQLWARN8 CHAR(1), 3 SQLWARN9 CHAR(1), 3 SQLWARNA CHAR(1), 2 SQLSTATE CHAR(5); En RPG/400; las declaraciones SQLCA equivalen a lo siguiente: ISQLCA DS I 1 8 SQLAID SQL I B 9 120SQLABC SQL I B 13 160SQLCOD SQL I B 17 180SQLERL SQL I 19 88 SQLERM SQL I 89 96 SQLERP SQL I 97 120 SQLERR SQL I B 97 1000SQLER1 SQL I B 101 1040SQLER2 SQL I B 105 1080SQLER3 SQL I B 109 1120SQLER4 SQL I B 113 1160SQLER5 SQL I B 117 1200SQLER6 SQL I 121 131 SQLWRN SQL I 121 121 SQLWN0 SQL I 122 122 SQLWN1 SQL I 123 123 SQLWN2 SQL I 124 124 SQLWN3 SQL I 125 125 SQLWN4 SQL I 126 126 SQLWN5 SQL I 127 127 SQLWN6 SQL I 128 128 SQLWN7 SQL I 129 129 SQLWN8 SQL I 130 130 SQLWN9 SQL I 131 131 SQLWNA SQL I 132 136 SQLSTT SQL En ILE RPG/400 ; las declaraciones SQLCA equivalen a lo siguiente: D* Area de comunicaciones SQL D SQLCA DS D SQLAID 1 8A D SQLABC 9 12B 0 D SQLCOD 13 16B 0 D SQLERL 17 18B 0 D SQLERM 19 88A D SQLERP 89 96A D SQLERRD 97 120B 0 DIM(6) D SQLERR 97 120A D SQLER1 97 100B 0 D SQLER2 101 104B 0 D SQLER3 105 108B 0 D SQLER4 109 112B 0 D SQLER5 113 116B 0 D SQLER6 117 120B 0 D SQLWRN 121 131A D SQLWN0 121 121A D SQLWN1 122 122A D SQLWN2 123 123A D SQLWN3 124 124A D SQLWN4 125 125A D SQLWN5 126 126A D SQLWN6 127 127A D SQLWN7 128 128A D SQLWN8 129 129A D SQLWN9 130 130A D SQLWNA 131 131A D SQLSTT 132 136A D* Fin de la SQLCA

DB2/400 Manual de Consulta SQL V3R7 Declaraciones INCLUDE SQLCA

© Copyright IBM Corp. 1995, 1996 B.2 - 2

Page 781: DB2/400 Manual de Consulta SQLmarce.com/docs/systems/manuales/db2_400_manual_consulta_sql_v3r7.pdf · VERSION Nota de Versión Segunda edición (noviembre de 1996) Este manual es

C.0 Apéndice C. Área de descriptor SQL (SQLDA) Una SQLDA es un conjunto de variables necesario par a la ejecución de la sentencia SQL DESCRIBE, y que las sentencias PREPAR E, OPEN, CALL, FETCH y EXECUTE pueden utilizar de forma opcional. Puede u tilizarse una SQLDA en una sentencia DESCRIBE, modificarse con las direcci ones de las variables del lenguaje principal y, a continuación, reutiliza rse en una sentencia FETCH. Se da soporte a las SQLDA para todos los lenguajes, pero las declaraciones predefinidas se facilitan sólo en C, COBOL, ILE RPG/400, PL/I e REXX. En REXX, la SQLDA es algo diferente a la de los demás lenguajes; para obtener información acerca de la ut ilización de las SQLDA en REXX, consulte el manual DB/2 for OS/400 SQL Programming , SC41-4611. El significado de la información de una SQLDA depen de de su utilización. En PREPARE y DESCRIBE, la SQLDA facilita informació n a un programa de aplicación sobre una sentencia preparada. En OPEN, CALL, EXECUTE y FETCH, una SQLDA proporciona información al gestor de base de datos acerca de las variables del lenguaje principal. Subtemas C.1 Descripciones de campo C.2 Descripciones de campo en una aparición de SQLVAR C.3 SQLTYPE y SQLLEN C.4 SQLDATA o SQLNAME C.5 Declaraciones INCLUDE SQLDA

DB2/400 Manual de Consulta SQL V3R7 Apéndice C. Área de descriptor SQL (SQLDA)

© Copyright IBM Corp. 1995, 1996 C.0 - 1

Page 782: DB2/400 Manual de Consulta SQLmarce.com/docs/systems/manuales/db2_400_manual_consulta_sql_v3r7.pdf · VERSION Nota de Versión Segunda edición (noviembre de 1996) Este manual es

C.1 Descripciones de campo Una SQLDA consta de cuatro variables en una estruct ura de cabecera, seguidas de un número arbitrario de apariciones de una secuencia de cinco variables que se denominan colectivamente SQLVAR. En OPEN, CALL, FETCH y EXECUTE, cada aparición de SQLVAR describe una vari able del lenguaje principal. En PREPARE y DESCRIBE, en cada aparició n se describe una columna de una tabla de resultados. La sentencia SQL INCLUDE proporciona los siguientes nombres de campo: +-------------------------------------------------- ----------------------+ ¦ Tabla 24. Descripciones de campo para una cabecer a SQLDA ¦ +-------------------------------------------------- ----------------------¦ ¦ ¦ ¦ ¦ Uso en FETCH, ¦ ¦ ¦ ¦ Uso en DESCRIBE y ¦ OPEN, CALL o ¦ ¦ ¦ ¦ PREPARE ¦ EXECUTE ¦ ¦ Nombre en ¦ ¦ (establecido por el ¦ (establecido por ¦ ¦ C (43) , ¦ Tipo de ¦ gestor de bases de ¦ el usuario antes ¦ ¦ PL/I ¦ datos ¦ datos excepto para ¦ de ejecutar la ¦ ¦ y COBOL ¦ del campo ¦ SQLN) ¦ sentencia) ¦ +--------------+--------------+-------------------- -+--------------------¦ ¦ sqldaid ¦ CHAR(8) ¦ Un 'señalizador ¦ No se usa. ¦ ¦ SQLDAID ¦ ¦ visual' para ¦ ¦ ¦ ¦ ¦ vuelcos de ¦ ¦ ¦ ¦ ¦ almacenamiento, que ¦ ¦ ¦ ¦ ¦ contiene 'SQLDA '. ¦ ¦ +--------------+--------------+-------------------- -+--------------------¦ ¦ sqldabc ¦ INTEGER ¦ Longitud de la ¦ Número de bytes ¦ ¦ SQLDABC ¦ ¦ SQLDA. ¦ correspondiente al ¦ ¦ ¦ ¦ ¦ almacenamiento ¦ ¦ ¦ ¦ ¦ asignado para la ¦ ¦ ¦ ¦ ¦ SQLDA. Se debe ¦ ¦ ¦ ¦ ¦ asignar el ¦ ¦ ¦ ¦ ¦ suficiente ¦ ¦ ¦ ¦ ¦ almacenamiento ¦ ¦ ¦ ¦ ¦ como para poder ¦ ¦ ¦ ¦ ¦ contener todas las ¦ ¦ ¦ ¦ ¦ apariciones de ¦ ¦ ¦ ¦ ¦ SQLN. Se debe ¦ ¦ ¦ ¦ ¦ establecer SQLDABC ¦ ¦ ¦ ¦ ¦ en un valor mayor ¦ ¦ ¦ ¦ ¦ o igual que ¦ ¦ ¦ ¦ ¦ 16+SQLN*(80), ¦ ¦ ¦ ¦ ¦ donde 80 es la ¦ ¦ ¦ ¦ ¦ longitud de una ¦ ¦ ¦ ¦ ¦ aparición de ¦ ¦ ¦ ¦ ¦ SQLVAR. ¦ +--------------+--------------+-------------------- -+--------------------¦ ¦ sqln ¦ SMALLINT ¦ El gestor de bases ¦ Número total de ¦ ¦ SQLN ¦ ¦ de datos no lo ¦ apariciones de la ¦ ¦ ¦ ¦ modifica. Debe ¦ SQLVAR facilitada ¦ ¦ ¦ ¦ establecerse en un ¦ en la SQLDA. SQLN ¦ ¦ ¦ ¦ valor mayor o igual ¦ debe establecerse ¦ ¦ ¦ ¦ que cero antes de ¦ en un valor mayor ¦ ¦ ¦ ¦ ejecutar las ¦ o igual que cero. ¦ ¦ ¦ ¦ sentencias PREPARE ¦ ¦ ¦ ¦ ¦ o DESCRIBE. Indica ¦ ¦ ¦ ¦ ¦ el número total de ¦ ¦ ¦ ¦ ¦ apariciones de ¦ ¦ ¦ ¦ ¦ SQLVAR. ¦ ¦ +--------------+--------------+-------------------- -+--------------------¦ ¦ sqld ¦ SMALLINT ¦ Número de columnas ¦ Número de ¦ ¦ SQLD ¦ ¦ descritas por las ¦ variables ¦ ¦ ¦ ¦ apariciones de ¦ descritas por ¦ ¦ ¦ ¦ SQLVAR (cero si la ¦ SQLVAR a utilizar ¦ ¦ ¦ ¦ sentencia descrita ¦ en la SQLDA al ¦ ¦ ¦ ¦ no es una ¦ ejecutarse esta ¦ ¦ ¦ ¦ sentencia-select). ¦ sentencia. SQLD ¦ ¦ ¦ ¦ ¦ debe establecerse ¦ ¦ ¦ ¦ ¦ en un valor mayor ¦ ¦ ¦ ¦ ¦ o igual que cero y ¦ ¦ ¦ ¦ ¦ menor o igual que ¦ ¦ ¦ ¦ ¦ SQLN. ¦ +-------------------------------------------------- ----------------------+ (43) En esta columna, el nombre en minúsculas es e l Nombre en C. El nombre en mayúsculas es el Nombre en COBOL, PL/I o RPG.

DB2/400 Manual de Consulta SQL V3R7 Descripciones de campo

© Copyright IBM Corp. 1995, 1996 C.1 - 1

Page 783: DB2/400 Manual de Consulta SQLmarce.com/docs/systems/manuales/db2_400_manual_consulta_sql_v3r7.pdf · VERSION Nota de Versión Segunda edición (noviembre de 1996) Este manual es

C.2 Descripciones de campo en una aparición de SQLV AR +-------------------------------------------------- ----------------------+ ¦ Tabla 25. Descripciones de campo para SQLVAR ¦ +-------------------------------------------------- ----------------------¦ ¦ Nombre en ¦ ¦ ¦ Uso en FETCH, OPEN, ¦ ¦ C (44) ¦ ¦ ¦ CALL y EXECUTE ¦ ¦ Nombre en ¦ ¦ Uso en DESCRIBE y ¦ (establecida por el ¦ ¦ COBOL, ¦ Tipo de ¦ PREPARE (establecido ¦ usuario antes de ¦ ¦ PL/I ¦ datos ¦ por el gestor de ¦ ejecutar la ¦ ¦ y RPG ¦ del campo ¦ bases de datos) ¦ sentencia) ¦ +------------+------------+-----------------------+ ----------------------¦ ¦ sqltype ¦ SMALLINT ¦ Indica el tipo de ¦ Indica el tipo de ¦ ¦ SQLTYPE ¦ ¦ datos de la columna y ¦ datos de la variable ¦ ¦ ¦ ¦ si puede contener o ¦ del lenguaje ¦ ¦ ¦ ¦ no valores nulos. La ¦ principal y si se ¦ ¦ ¦ ¦ Tabla 26 en el ¦ facilita o no una ¦ ¦ ¦ ¦ tema C.3 contiene una ¦ variable de ¦ ¦ ¦ ¦ descripción de los ¦ indicador. La ¦ ¦ ¦ ¦ códigos de tipo. ¦ Tabla 26 en el ¦ ¦ ¦ ¦ ¦ tema C.3 contiene ¦ ¦ ¦ ¦ ¦ una descripción de ¦ ¦ ¦ ¦ ¦ los códigos de tipo. ¦ +------------+------------+-----------------------+ ----------------------¦ ¦ sqllen ¦ SMALLINT ¦ Atributo de longitud ¦ Atributo de longitud ¦ ¦ SQLLEN ¦ ¦ de la columna. Para ¦ de la variable del ¦ ¦ ¦ ¦ columnas de fecha y ¦ lenguaje principal. ¦ ¦ ¦ ¦ hora, es la longitud ¦ Véase la Tabla 26 en ¦ ¦ ¦ ¦ de la representación ¦ el tema C.3 . ¦ ¦ ¦ ¦ de serie de los ¦ ¦ ¦ ¦ ¦ valores. Véase la ¦ ¦ ¦ ¦ ¦ Tabla 26 en el ¦ ¦ ¦ ¦ ¦ tema C.3 . ¦ ¦ +------------+------------+-----------------------+ ----------------------¦ ¦ sqlres ¦ CHAR(12) ¦ Reservado. Da la ¦ Reservado. Da la ¦ ¦ SQLRES ¦ ¦ alineación de límite ¦ alineación de límite ¦ ¦ ¦ ¦ para SQLDATA. ¦ para SQLDATA. ¦ +------------+------------+-----------------------+ ----------------------¦ ¦ sqldata ¦ puntero ¦ CCSID de una columna ¦ Contiene la ¦ ¦ SQLDATA ¦ ¦ de serie tal como se ¦ dirección de la ¦ ¦ ¦ ¦ describe en la ¦ variable del ¦ ¦ ¦ ¦ Tabla 27 en el ¦ lenguaje principal. ¦ ¦ ¦ ¦ tema C.4 . ¦ ¦ +------------+------------+-----------------------+ ----------------------¦ ¦ sqlind ¦ puntero ¦ Reservado ¦ Contiene la ¦ ¦ SQLIND ¦ ¦ ¦ dirección de la ¦ ¦ ¦ ¦ ¦ variable de ¦ ¦ ¦ ¦ ¦ indicador. No se ¦ ¦ ¦ ¦ ¦ utiliza si no hay ¦ ¦ ¦ ¦ ¦ ningún indicador de ¦ ¦ ¦ ¦ ¦ variable (tal como ¦ ¦ ¦ ¦ ¦ indica un valor par ¦ ¦ ¦ ¦ ¦ de SQLTYPE). ¦ +------------+------------+-----------------------+ ----------------------¦ ¦ sqlname ¦ VARCHAR ¦ Nombre no calificado ¦ Contiene el CCSID de ¦ ¦ SQLNAME ¦ (30) ¦ de la columna. Si la ¦ la variable del ¦ ¦ ¦ ¦ columna no tiene ¦ lenguaje principal ¦ ¦ ¦ ¦ nombre, se devuelve ¦ tal como se describe ¦ ¦ ¦ ¦ una serie vacía. ¦ en la Tabla 27 en el ¦ ¦ ¦ ¦ ¦ tema C.4 . ¦ +-------------------------------------------------- ----------------------+ (44) En esta columna, el nombre es minúsculas es e l nombre en C. El nombre en mayúsculas es el nombre en COBOL o PL/I.

DB2/400 Manual de Consulta SQL V3R7 Descripciones de campo en una aparición de SQLVAR

© Copyright IBM Corp. 1995, 1996 C.2 - 1

Page 784: DB2/400 Manual de Consulta SQLmarce.com/docs/systems/manuales/db2_400_manual_consulta_sql_v3r7.pdf · VERSION Nota de Versión Segunda edición (noviembre de 1996) Este manual es

C.3 SQLTYPE y SQLLEN La tabla siguiente muestra los valores que pueden a parecer en los campos SQLTYPE y SQLLEN de la SQLDA. En PREPARE y DESCRIB E, un valor par de SQLTYPE significa que la columna no permite valores nulos y un valor impar significa que la columna sí los permite. Nota: En las sentencias PREPARE y DESCRIBE, se devuelve un valor impar para una expresión si uno de los operandos p ermite nulos o si la expresión puede dar como resultado un valor nulo de error de correlación -2. En FETCH, OPEN, CALL y EXECUTE, un valor par de SQL TYPE significa que no se proporciona variable de indicador, y un valor im par significa que SQLIND contiene la dirección de una variable de ind icador. +-------------------------------------------------- ------------------------------------------------+ ¦ Tabla 26. Valores de SQLTYPE y SQLLEN para PREPAR E, DESCRIBE, FETCH, OPEN, CALL o EXECUTE ¦ +-------------------------------------------------- ------------------------------------------------¦ ¦ ¦ Para PREPARE y DESCRIBE ¦ Para FETCH, OPEN, CALL y EXECUTE ¦ ¦ +---------------------------------------- -----+------------------------------------------¦ ¦ ¦ TIPO DE DATOS ¦ ¦ TIPO DE DATOS DE LA ¦ ¦ ¦ SQLTYPE ¦ DE LA COLUMNA ¦ SQLLEN ¦ DE LA COLUMNA ¦ SQLLEN ¦ +---------+------------------------+--------------- -----+---------------------+--------------------¦ ¦ 384/385 ¦ Fecha ¦ 10 ¦ Representación de ¦ Atributo de ¦ ¦ ¦ ¦ ¦ serie de caracteres ¦ longitud de la ¦ ¦ ¦ ¦ ¦ de longitud fija de ¦ variable del ¦ ¦ ¦ ¦ ¦ una fecha ¦ lenguaje principal ¦ +---------+------------------------+--------------- -----+---------------------+--------------------¦ ¦ 388/389 ¦ Hora ¦ 8 ¦ Representación de ¦ Atributo de ¦ ¦ ¦ ¦ ¦ serie de caracteres ¦ longitud de la ¦ ¦ ¦ ¦ ¦ de longitud fija de ¦ variable del ¦ ¦ ¦ ¦ ¦ una hora ¦ lenguaje principal ¦ +---------+------------------------+--------------- -----+---------------------+--------------------¦ ¦ 392/393 ¦ Indicación de la hora ¦ 26 ¦ Representación de ¦ Atributo de ¦ ¦ ¦ ¦ ¦ serie de caracteres ¦ longitud de la ¦ ¦ ¦ ¦ ¦ de longitud fija de ¦ variable del ¦ ¦ ¦ ¦ ¦ una indicación de ¦ lenguaje principal ¦ ¦ ¦ ¦ ¦ la hora ¦ ¦ +---------+------------------------+--------------- -----+---------------------+--------------------¦ ¦ 400/401 ¦ No procede ¦ No procede ¦ Serie gráfica ¦ Atributo de ¦ ¦ ¦ ¦ ¦ acabada en NUL ¦ longitud de la ¦ ¦ ¦ ¦ ¦ ¦ variable del ¦ ¦ ¦ ¦ ¦ ¦ lenguaje principal ¦ +---------+------------------------+--------------- -----+---------------------+--------------------¦ ¦ 448/449 ¦ Serie de caracteres de ¦ Atributo de ¦ Serie de caracteres ¦ Atributo de ¦ ¦ ¦ longitud variable ¦ longitud de la ¦ de longitud ¦ longitud de la ¦ ¦ ¦ ¦ columna ¦ variable ¦ variable del ¦ ¦ ¦ ¦ ¦ ¦ lenguaje principal ¦ +---------+------------------------+--------------- -----+---------------------+--------------------¦ ¦ 452/453 ¦ Serie de caracteres de ¦ Atributo de ¦ Serie de caracteres ¦ Atributo de ¦ ¦ ¦ longitud fija ¦ longitud de la ¦ de longitud fija ¦ longitud de la ¦ ¦ ¦ ¦ columna ¦ ¦ variable del ¦ ¦ ¦ ¦ ¦ ¦ lenguaje principal ¦ +---------+------------------------+--------------- -----+---------------------+--------------------¦ ¦ 456/457 ¦ Serie de caracteres ¦ Atributo de ¦ Serie de caracteres ¦ Atributo de ¦ ¦ ¦ larga de longitud ¦ longitud de la ¦ larga de longitud ¦ longitud de la ¦ ¦ ¦ variable ¦ columna ¦ variable ¦ variable del ¦ ¦ ¦ ¦ ¦ ¦ lenguaje principal ¦ +---------+------------------------+--------------- -----+---------------------+--------------------¦ ¦ 460/461 ¦ No procede ¦ No procede ¦ Serie de caracteres ¦ Atributo de ¦ ¦ ¦ ¦ ¦ acabada en NUL ¦ longitud de la ¦ ¦ ¦ ¦ ¦ ¦ variable del ¦ ¦ ¦ ¦ ¦ ¦ lenguaje principal ¦ +---------+------------------------+--------------- -----+---------------------+--------------------¦ ¦ 464/465 ¦ Serie gráfica de ¦ Atributo de ¦ Serie gráfica de ¦ Atributo de ¦ ¦ ¦ longitud variable ¦ longitud de la ¦ longitud variable ¦ longitud de la ¦ ¦ ¦ ¦ columna ¦ ¦ variable del ¦ ¦ ¦ ¦ ¦ ¦ lenguaje principal ¦ +---------+------------------------+--------------- -----+---------------------+--------------------¦ ¦ 468/469 ¦ Serie gráfica de ¦ Atributo de ¦ Serie gráfica de ¦ Atributo de ¦ ¦ ¦ longitud fija ¦ longitud de la ¦ longitud fija ¦ longitud de la ¦ ¦ ¦ ¦ columna ¦ ¦ variable del ¦ ¦ ¦ ¦ ¦ ¦ lenguaje principal ¦ +---------+------------------------+--------------- -----+---------------------+--------------------¦ ¦ 472/473 ¦ Serie gráfica larga de ¦ Atributo de ¦ Serie gráfica larga ¦ Atributo de ¦ ¦ ¦ longitud variable ¦ longitud de la ¦ ¦ longitud de la ¦ ¦ ¦ ¦ columna ¦ ¦ variable del ¦ ¦ ¦ ¦ ¦ ¦ lenguaje principal ¦ +---------+------------------------+--------------- -----+---------------------+--------------------¦ ¦ 476/477 ¦ No procede ¦ No procede ¦ Serie L de PASCAL ¦ Atributo de ¦ ¦ ¦ ¦ ¦ ¦ longitud de la ¦ ¦ ¦ ¦ ¦ ¦ variable del ¦ ¦ ¦ ¦ ¦ ¦ lenguaje principal ¦ +---------+------------------------+--------------- -----+---------------------+--------------------¦ ¦ 480/481 ¦ Coma flotante ¦ 4 para precisi ón ¦ Coma flotante ¦ 4 para precisión ¦ ¦ ¦ ¦ simple, ¦ ¦ simple, ¦ ¦ ¦ ¦ 8 para precisi ón ¦ ¦ 8 para precisión ¦ ¦ ¦ ¦ doble ¦ ¦ doble ¦ +---------+------------------------+--------------- -----+---------------------+--------------------¦ ¦ 484/485 ¦ Decimal empaquetado ¦ Precisión en e l ¦ Decimal empaquetado ¦ Precisión en el ¦ ¦ ¦ ¦ byte 1; escala en ¦ ¦ byte 1; escala en ¦ ¦ ¦ ¦ el byte 2 ¦ ¦ el byte 2 ¦ +---------+------------------------+--------------- -----+---------------------+--------------------¦ ¦ 488/489 ¦ Decimal con zona ¦ Precisión en e l ¦ Decimal con zona ¦ Precisión en el ¦ ¦ ¦ ¦ byte 1; escala en ¦ ¦ byte 1; escala en ¦ ¦ ¦ ¦ el byte 2 ¦ ¦ el byte 2 ¦ +---------+------------------------+--------------- -----+---------------------+--------------------¦

DB2/400 Manual de Consulta SQL V3R7 SQLTYPE y SQLLEN

© Copyright IBM Corp. 1995, 1996 C.3 - 1

Page 785: DB2/400 Manual de Consulta SQLmarce.com/docs/systems/manuales/db2_400_manual_consulta_sql_v3r7.pdf · VERSION Nota de Versión Segunda edición (noviembre de 1996) Este manual es

¦ 496/497 ¦ Entero grande ¦ 4 (45) ¦ Entero grande ¦ 4 ¦ +---------+------------------------+--------------- -----+---------------------+--------------------¦ ¦ 500/501 ¦ Entero pequeño ¦ 2 (45) ¦ Entero pequeño ¦ 2 ¦ +---------+------------------------+--------------- -----+---------------------+--------------------¦ ¦ 504/505 ¦ No procede ¦ No procede ¦ DISPLAY SIGN ¦ Precisión en el ¦ ¦ ¦ ¦ ¦ LEADING SEPARATE ¦ byte 1; escala en ¦ ¦ ¦ ¦ ¦ ¦ el byte 2 ¦ +-------------------------------------------------- ------------------------------------------------+ (45) Los números binarios pueden representarse en la SQLDA como de longitud 2 ó 4, o con la precisión en el byt e 1 y la escala en el byte 2. Si el primer byte es mayor de x'00', indica la precisión y la escala.

DB2/400 Manual de Consulta SQL V3R7 SQLTYPE y SQLLEN

© Copyright IBM Corp. 1995, 1996 C.3 - 2

Page 786: DB2/400 Manual de Consulta SQLmarce.com/docs/systems/manuales/db2_400_manual_consulta_sql_v3r7.pdf · VERSION Nota de Versión Segunda edición (noviembre de 1996) Este manual es

C.4 SQLDATA o SQLNAME En las sentencias OPEN, FETCH, CALL y EXECUTE, el c ampo SQLNAME del elemento SQLVAR se puede utilizar para especificar un CCSID para variables del lenguaje principal de serie. Si se utiliza el campo SQLNAME para especificar un CCSID, la longitud de SQLNAME debe e stablecerse en 8. Además, los 4 primeros bytes de SQLNAME deben estab lecerse según lo descrito en la tabla que figura más abajo. Si no s e especifica ningún CCSID, se utilizará el CCSID del trabajo. En las sentencias DESCRIBE, DESCRIBE TABLE y PREPAR E, el campo SQLDATA del elemento SQLVAR contiene el CCSID de la columna de la tabla de resultados si dicha columna es de serie. El CCSID se halla en los bytes 3 y 4, según lo descrito en la Tabla 27 . +-------------------------------------------------- ----------------------+ ¦ Tabla 27. Valores CCSID para SQLDATA o SQLNAME ¦ +-------------------------------------------------- ----------------------¦ ¦ del campo ¦ Subtipo ¦ Bytes 1 y 2 ¦ Bytes 3 y 4 ¦ +-----------------+------------------+------------- ----+-----------------¦ ¦ Carácter ¦ Datos SBCS ¦ X'0000' ¦ ccsid ¦ ¦ ¦ ¦ ¦ ¦ +-----------------+------------------+------------- ----+-----------------¦ ¦ Carácter ¦ Datos mixtos ¦ X'0000' ¦ ccsid ¦ ¦ ¦ ¦ ¦ ¦ +-----------------+------------------+------------- ----+-----------------¦ ¦ Carácter ¦ Datos de bit ¦ X'0000' ¦ 65535 ¦ ¦ ¦ ¦ ¦ ¦ +-----------------+------------------+------------- ----+-----------------¦ ¦ Gráfico ¦ No procede ¦ X'0000' ¦ ccsid ¦ +-----------------+------------------+------------- ----+-----------------¦ ¦ Cualquier otro ¦ No procede ¦ No procede ¦ No procede ¦ ¦ tipo de datos ¦ ¦ ¦ ¦ +-------------------------------------------------- ----------------------+

DB2/400 Manual de Consulta SQL V3R7 SQLDATA o SQLNAME

© Copyright IBM Corp. 1995, 1996 C.4 - 1

Page 787: DB2/400 Manual de Consulta SQLmarce.com/docs/systems/manuales/db2_400_manual_consulta_sql_v3r7.pdf · VERSION Nota de Versión Segunda edición (noviembre de 1996) Este manual es

C.5 Declaraciones INCLUDE SQLDA Subtemas C.5.1 Para C C.5.2 Para COBOL C.5.3 Para PL/I C.5.4 Para ILE RPG/400

DB2/400 Manual de Consulta SQL V3R7 Declaraciones INCLUDE SQLDA

© Copyright IBM Corp. 1995, 1996 C.5 - 1

Page 788: DB2/400 Manual de Consulta SQLmarce.com/docs/systems/manuales/db2_400_manual_consulta_sql_v3r7.pdf · VERSION Nota de Versión Segunda edición (noviembre de 1996) Este manual es

C.5.1 Para C En C, las declaraciones INCLUDE SQLDA equivalen a: --------------------------------------------------- ----------------------- #ifndef SQLDASIZE struct sqlda { unsigned char sqldaid[8]; long sqldabc; short sqln; short sqld; struct sqlvar { short sqltype; short sqllen; unsigned char *sqldata; short *sqlind; struct sqlname { short length; unsigned char data[30]; } sqlname; } sqlvar[1]; }; #define SQLDASIZE(n) (sizeof(struct sqlda)+(n-1) * sizeof(s truct sqlvar)) #endif --------------------------------------------------- ----------------------- Figura 11. Declaraciones INCLUDE SQLDA para C

DB2/400 Manual de Consulta SQL V3R7 Para C

© Copyright IBM Corp. 1995, 1996 C.5.1 - 1

Page 789: DB2/400 Manual de Consulta SQLmarce.com/docs/systems/manuales/db2_400_manual_consulta_sql_v3r7.pdf · VERSION Nota de Versión Segunda edición (noviembre de 1996) Este manual es

C.5.2 Para COBOL En COBOL, las declaraciones INCLUDE SQLDA equivalen a: --------------------------------------------------- ----------------------- 1 SQLDA. 05 SQLDAID PIC X(8). 05 SQLDABC PIC S9(9) BINARY. 05 SQLN PIC S9(4) BINARY. 05 SQLD PIC S9(4) BINARY. 05 SQLVAR OCCURS 0 TO 409 TIMES DEPENDING ON SQLN. 10 SQLTYPE PIC S9(4) BINARY. 10 SQLLEN PIC S9(4) BINARY. 10 FILLER REDEFINES SQLLEN. 15 SQLPRECISION PIC X. 15 SQLSCALE PIC X. 10 SQLRES PIC X(12). 10 SQLDATA POINTER. 10 SQLIND POINTER. 10 SQLNAME. 49 SQLNAMEL PIC S9(4) BINARY. 49 SQLNAMEC PIC X(30). --------------------------------------------------- ----------------------- Figura 12. Declaraciones INCLUDE SQLDA para COBOL

DB2/400 Manual de Consulta SQL V3R7 Para COBOL

© Copyright IBM Corp. 1995, 1996 C.5.2 - 1

Page 790: DB2/400 Manual de Consulta SQLmarce.com/docs/systems/manuales/db2_400_manual_consulta_sql_v3r7.pdf · VERSION Nota de Versión Segunda edición (noviembre de 1996) Este manual es

C.5.3 Para PL/I En PL/I, las declaraciones INCLUDE SQLDA equivalen a lo siguiente: --------------------------------------------------- ----------------------- DCL 1 SQLDA BASED(SQLDAPTR), 2 SQLDAID CHAR(8), 2 SQLDABC BIN FIXED(31), 2 SQLN BIN FIXED, 2 SQLD BIN FIXED, 2 SQLVAR (99), 3 SQLTYPE BIN FIXED, 3 SQLLEN BIN FIXED, 3 SQLRES CHAR(12), 3 SQLDATA PTR, 3 SQLIND PTR, 3 SQLNAME CHAR(30) VAR; DCL SQLDAPTR PTR; --------------------------------------------------- ----------------------- Figura 13. Declaraciones INCLUDE SQLDA para PL/I

DB2/400 Manual de Consulta SQL V3R7 Para PL/I

© Copyright IBM Corp. 1995, 1996 C.5.3 - 1

Page 791: DB2/400 Manual de Consulta SQLmarce.com/docs/systems/manuales/db2_400_manual_consulta_sql_v3r7.pdf · VERSION Nota de Versión Segunda edición (noviembre de 1996) Este manual es

C.5.4 Para ILE RPG/400 En ILE RPG/400, las declaraciones INCLUDE SQLDA equ ivalen a lo siguiente: --------------------------------------------------- ----------------------- D* Area de descriptor SQL D SQLDA DS D SQLDAID 1 8A D SQLDABC 9 12B 0 D SQLN 13 14B 0 D SQLD 15 16B 0 D SQL_VAR 80A DIM(SQL_NUM) D 17 18B 0 D 19 20B 0 D 21 32A D 33 48* D 49 64* D 65 66B 0 D 67 96A D* D SQLVAR DS D SQLTYPE 1 2B 0 D SQLLEN 3 4B 0 D SQLRES 5 16A D SQLDATA 17 32* D SQLIND 33 48* D SQLNAMELEN 49 50B 0 D SQLNAME 51 80A D* Fin de la SQLDA --------------------------------------------------- ----------------------- Figura 14. Declaraciones INCLUDE SQLDA para ILE RPG /400 El usuario tiene la responsabilidad de definir SQL_ NUM. SQL_NUM debe definirse como una constante numérica con la dimens ión necesaria para SQL_VAR. Puesto que RPG no da soporte a las estructuras incl uidas dentro de matrices, la SQLDA generará dos estructuras de dato s. La segunda estructura de datos se utiliza para configurar/hace r referencia a la parte de la SQLDA que contiene las descripciones de campo . Para establecer las descripciones de campo de la SQ LDA, el programa configura la descripción de campo en los subcampos de SQLVAR, y a continuación realiza una operación MOVEA de SQLVAR a SQL_VAR,n en la que n es el número del campo de la SQLDA. Esto se repite hasta que se establecen todas las descripciones de campo. Cuando se ha de hacer referencia a las descripcione s de campo SQLDA, el usuario efectúa una operación MOVEA de SQL_VAR,n a SQLVAR donde n es el número de la descripción de campo a procesar.

DB2/400 Manual de Consulta SQL V3R7 Para ILE RPG/400

© Copyright IBM Corp. 1995, 1996 C.5.4 - 1

Page 792: DB2/400 Manual de Consulta SQLmarce.com/docs/systems/manuales/db2_400_manual_consulta_sql_v3r7.pdf · VERSION Nota de Versión Segunda edición (noviembre de 1996) Este manual es

D.0 Apéndice D. Palabras reservadas Esta es una lista de las palabras actualmente reser vadas de DB2 para OS/400. Es posible que se añadan más palabras en c ualquier momento. Si desea una lista de las palabras adicionales que pue den convertirse en reservadas en el futuro, consulte el apartado de pa labras reservadas ANSI y SQL de IBM de la publicación IBM SQL Reference Version 1 , SC26-3255. Si utiliza como nombre una palabra que podría converti rse en reservada, delimítelo. +-------------------------------------------------- ----------------------+ ¦ Tabla 28. Palabras reservadas SQL ¦ +-------------------------------------------------- ----------------------¦ ¦ ADD ¦ END-EXEC(1) ¦ LABEL(2) ¦ SCHEMA ¦ ¦ ALL ¦ ESCAPE ¦ LANGUAGE ¦ SECOND ¦ ¦ ALLOCATE ¦ EXCEPTION ¦ LEFT ¦ SECONDS ¦ ¦ ALTER ¦ EXECUTE ¦ LIKE ¦ SELECT ¦ ¦ AND ¦ EXISTS ¦ LONG ¦ SET ¦ ¦ ANY ¦ EXTERNAL ¦ ¦ SIMPLE ¦ ¦ AS ¦ ¦ MICROSECOND ¦ SOME ¦ ¦ AUTHORIZATION ¦ FETCH ¦ MICROSECONDS ¦ SUBSTRING ¦ ¦ ¦ FOR ¦ MINUTE ¦ ¦ ¦ BETWEEN ¦ FOREIGN ¦ MINUTES ¦ TABLE ¦ ¦ BY ¦ FROM ¦ MONTH ¦ TO ¦ ¦ ¦ ¦ MONTHS ¦ TRANSACTION ¦ ¦ CCSID ¦ GENERAL ¦ ¦ TRIM ¦| ¦ CHAR ¦ GO ¦ NODENAME ¦ ¦| ¦ CHARACTER ¦ GOTO ¦ NODENUMBER ¦ UNION ¦ ¦ CHECK ¦ GRANT ¦ NOT ¦ UNIQUE ¦ ¦ COLLECTION ¦ GRAPHIC ¦ NULL ¦ UPDATE ¦ ¦ COLUMN ¦ GROUP ¦ ¦ USER ¦ ¦ COMMENT(2) ¦ ¦ OF ¦ USING ¦ ¦ CONCAT ¦ HAVING ¦ ON ¦ ¦ ¦ CONNECTION ¦ HOUR ¦ OPTIMIZE ¦ VALUES ¦ ¦ CONSTRAINT ¦ HOURS ¦ OPTION ¦ VARIABLE ¦ ¦ COUNT ¦ ¦ OR ¦ VIEW ¦ ¦ CREATE(2) ¦ IMMEDIATE ¦ ORDER ¦ ¦ ¦ CROSS ¦ IN ¦ OUT ¦ WHERE ¦ ¦ CURRENT ¦ INDEX ¦ OUTER ¦ WITH ¦ ¦ CURRENT_DATE ¦ INDICATOR ¦ ¦ ¦ ¦ CURRENT_SERVER ¦ INNER ¦ PACKAGE ¦ YEAR ¦ ¦ CURRENT_TIME ¦ INOUT ¦ PARAMETER ¦ YEARS ¦| ¦ CURRENT_TIMESTAM¦ INSERT ¦ PARTITION ¦ ¦ ¦ CURRENT_TIMEZONE¦ INTO ¦ PRIMARY ¦ ¦ ¦ CURRENT_USER ¦ IS ¦ PRIVILEGES ¦ ¦ ¦ CURSOR ¦ ISOLATION ¦ PROCEDURE ¦ ¦ ¦ ¦ ¦ PROGRAM ¦ ¦ ¦ DATABASE ¦ JOIN ¦ ¦ ¦ ¦ DAY ¦ ¦ REFERENCES ¦ ¦ ¦ DAYS ¦ KEY ¦ RESET ¦ ¦ ¦ DEFAULT ¦ ¦ RESULT ¦ ¦ ¦ DELETE ¦ ¦ ROW ¦ ¦ ¦ DESCRIPTOR ¦ ¦ ROWS ¦ ¦ ¦ DISTINCT ¦ ¦ RRN ¦ ¦ ¦ DOUBLE ¦ ¦ RUN ¦ ¦ ¦ DROP ¦ ¦ ¦ ¦ ¦ ¦ ¦ ¦ ¦ +-------------------------------------------------- ----------------------¦ ¦ Nota: ¦ ¦ ¦ ¦ (1) Sólo en COBOL ¦ ¦ ¦ ¦ (2) Sólo para la sentencia CREATE SCHEMA ¦ +-------------------------------------------------- ----------------------+

DB2/400 Manual de Consulta SQL V3R7 Apéndice D. Palabras reservadas

© Copyright IBM Corp. 1995, 1996 D.0 - 1

Page 793: DB2/400 Manual de Consulta SQLmarce.com/docs/systems/manuales/db2_400_manual_consulta_sql_v3r7.pdf · VERSION Nota de Versión Segunda edición (noviembre de 1996) Este manual es

E.0 Apéndice E. Valores CCSID En las tablas que siguen a continuación se describe n los CCSID y las conversiones facilitadas por los productos de bases de datos relacionales de IBM. � Para DB2 para MVS y SQL/DS, estas tablas represe ntan los únicos CCSID y de pares de tablas de conversiones de CCSID q ue se suministran inicialmente en el catálogo. Un usuario que te nga autorización de administrador puede añadir CCSID SBCS y tablas de conversión SBCS en cualquier momento que así lo desee. También es posible facilitar rutinas de salida de usuario que realicen conve rsiones SBCS o DBCS. � Para DB2 para OS/400 y DB2(cs), estos diagramas representan las únicas tablas de conversión y los únicos CCSID que est án disponibles. No existe forma alguna de añadir CCSID o tablas de conversión adicionales. En la lista siguiente se definen los símbolos utili zados en la columna de los productos de bases de datos relacionales de las tablas: X Indica que exiten tablas de conversión pa ra realizar la conversión a y desde este CCSID. C Indica que exiten tablas de conversión pa ra realizar la conversión desde dicho CCSID a otro. Est o también implica que este CCSID no puede utilizarse para ident ificar datos locales, porque el CCSID está en un esquema de cod ificación foráneo (por ejemplo, un CCSID de datos PC 850 no pued e utilizarse para identificar datos locales en DB2 para OS/ 400). T Indica que a pesar de que pueden identifi carse datos con este CCSID, las tablas de conversión no se sum inistran con el producto. La información de este apéndice hace referencia a l as siguientes versiones de producto: � DB2 para MVS Versión 4 � SQL/DS Versión 3 Release 5 � DB2 para OS/400 Versión 3 Release 2 � DB2(cs) (OS/2) Versión 2 � DB2(cs) (AIX/6000) Versión 2 � DB2(cs) (HP) Versión 2 � DB2(cs) (SUN) Versión 2 � DB2(cs) (NT) Versión 2 +-------------------------------------------------- --------------------------------------------------- ----------------------+ ¦ Tabla 29. Juego de caracteres universales (UCS-2) ¦ +-------------------------------------------------- --------------------------------------------------- ----------------------¦| ¦ CCSID ¦ Descripción ¦ DB2 MVS ¦ SQL/DS ¦ DB2 ¦ DB2(cs) ¦ DB2(cs) ¦ DB2(cs) ¦ DB2(cs) ¦ DB2(cs) ¦| ¦ ¦ ¦ ¦ ¦ para ¦ (OS/2) ¦ (AIX/6000) ¦ (HP) ¦ (SUN) ¦ (NT) ¦ ¦ ¦ ¦ ¦ ¦ OS/400 ¦ ¦ ¦ ¦ ¦ ¦ +--------+----------------------------+---------+-- ------+---------+--------+-------------------+----- ---+---------+--------¦| ¦ 13488 ¦ UCS-2 Nivel 1 ¦ C ¦ ¦ X ¦ ¦ ¦ ¦ ¦ ¦ +-------------------------------------------------- --------------------------------------------------- ----------------------+ +-------------------------------------------------- --------------------------------------------------- ----------------------+ ¦ Tabla 30. CCSID para países del grupo 1 (latino-1 ) EBCDIC ¦ +-------------------------------------------------- --------------------------------------------------- ----------------------¦| ¦ CCSID ¦ Descripción ¦ DB2 MVS ¦ SQL/DS ¦ DB2 ¦ DB2(cs) ¦ DB2(cs) ¦ DB2(cs) ¦ DB2(cs) ¦ DB2(cs) ¦| ¦ ¦ ¦ ¦ ¦ para ¦ (OS/2) ¦ (AIX/6000) ¦ (HP) ¦ (SUN) ¦ (NT) ¦ ¦ ¦ ¦ ¦ ¦ OS/400 ¦ ¦ ¦ ¦ ¦ ¦ +--------+----------------------------+---------+-- ------+---------+--------+-------------------+----- ---+---------+--------¦| ¦ 37 ¦ USA, Canadá (S/370), ¦ X ¦ X ¦ X ¦ C ¦ C ¦ C ¦ C ¦ C ¦ ¦ ¦ Países Bajos, Portugal, ¦ ¦ ¦ ¦ ¦ ¦ ¦ ¦ ¦ ¦ ¦ Brasil, Australia, Nueva ¦ ¦ ¦ ¦ ¦ ¦ ¦ ¦ ¦ ¦ ¦ Zelanda ¦ ¦ ¦ ¦ ¦ ¦ ¦ ¦ ¦ +--------+----------------------------+---------+-- ------+---------+--------+-------------------+----- ---+---------+--------¦| ¦ 256 ¦ Proceso de textos, Países ¦ T ¦ T ¦ X ¦ ¦ ¦ ¦ ¦ ¦ ¦ ¦ Bajos ¦ ¦ ¦ ¦ ¦ ¦ ¦ ¦ ¦ +--------+----------------------------+---------+-- ------+---------+--------+-------------------+----- ---+---------+--------¦| ¦ 273 ¦ Austria, Alemania ¦ X ¦ X ¦ X ¦ C ¦ C ¦ C ¦ C ¦ C ¦ +--------+----------------------------+---------+-- ------+---------+--------+-------------------+----- ---+---------+--------¦| ¦ 277 ¦ Dinamarca, Noruega ¦ X ¦ X ¦ X ¦ C ¦ C ¦ C ¦ C ¦ C ¦ +--------+----------------------------+---------+-- ------+---------+--------+-------------------+----- ---+---------+--------¦| ¦ 278 ¦ Finlandia, Suecia ¦ X ¦ X ¦ X ¦ C ¦ C ¦ C ¦ C ¦ C ¦ +--------+----------------------------+---------+-- ------+---------+--------+-------------------+----- ---+---------+--------¦| ¦ 280 ¦ Italia ¦ X ¦ X ¦ X ¦ C ¦ C ¦ C ¦ C ¦ C ¦ +--------+----------------------------+---------+-- ------+---------+--------+-------------------+----- ---+---------+--------¦| ¦ 284 ¦ España, Hispanoamérica ¦ X ¦ X ¦ X ¦ C ¦ C ¦ C ¦ C ¦ C ¦ ¦ ¦ (español) ¦ ¦ ¦ ¦ ¦ ¦ ¦ ¦ ¦ +--------+----------------------------+---------+-- ------+---------+--------+-------------------+----- ---+---------+--------¦| ¦ 285 ¦ Reino Unido ¦ X ¦ X ¦ X ¦ C ¦ C ¦ C ¦ C ¦ C ¦ +--------+----------------------------+---------+-- ------+---------+--------+-------------------+----- ---+---------+--------¦| ¦ 297 ¦ Francia ¦ X ¦ X ¦ X ¦ C ¦ C ¦ C ¦ C ¦ C ¦ +--------+----------------------------+---------+-- ------+---------+--------+-------------------+----- ---+---------+--------¦| ¦ 500 ¦ Bélgica, Canadá (AS/400), ¦ X ¦ X ¦ X ¦ C ¦ C ¦ C ¦ C ¦ C ¦ ¦ ¦ Suiza, latino-1 ¦ ¦ ¦ ¦ ¦ ¦ ¦ ¦ ¦ ¦ ¦ internacional ¦ ¦ ¦ ¦ ¦ ¦ ¦ ¦ ¦ +--------+----------------------------+---------+-- ------+---------+--------+-------------------+----- ---+---------+--------¦| ¦ 871 ¦ Islandia ¦ X ¦ X ¦ X ¦ C ¦ C ¦ C ¦ C ¦ C ¦ +-------------------------------------------------- --------------------------------------------------- ----------------------+

DB2/400 Manual de Consulta SQL V3R7 Apéndice E. Valores CCSID

© Copyright IBM Corp. 1995, 1996 E.0 - 1

Page 794: DB2/400 Manual de Consulta SQLmarce.com/docs/systems/manuales/db2_400_manual_consulta_sql_v3r7.pdf · VERSION Nota de Versión Segunda edición (noviembre de 1996) Este manual es

+-------------------------------------------------- --------------------------------------------------- ----------------------+ ¦ Tabla 31. CCSID para países del grupo 1 (latino-1 ) ISO y de datos PC ¦ +-------------------------------------------------- --------------------------------------------------- ----------------------¦| ¦ CCSID ¦ Descripción ¦ DB2 MVS ¦ SQL/DS ¦ DB2 ¦ DB2(cs) ¦ DB2(cs) ¦ DB2(cs) ¦ DB2(cs) ¦ DB2(cs) ¦| ¦ ¦ ¦ ¦ ¦ para ¦ (OS/2) ¦ (AIX/6000) ¦ (HP) ¦ (SUN) ¦ (NT) ¦ ¦ ¦ ¦ ¦ ¦ OS/400 ¦ ¦ ¦ ¦ ¦ ¦ +--------+----------------------------+---------+-- ------+---------+--------+-------------------+----- ---+---------+--------¦| ¦ 437 ¦ EE.UU. ¦ C ¦ C ¦ C ¦ X ¦ C ¦ C ¦ C ¦ C ¦ +--------+----------------------------+---------+-- ------+---------+--------+-------------------+----- ---+---------+--------¦| ¦ 819 ¦ Países latino-1 (ISO ¦ C ¦ C ¦ C ¦ C ¦ X ¦ X ¦ X ¦ C ¦ ¦ ¦ 8859-1) ¦ ¦ ¦ ¦ ¦ ¦ ¦ ¦ ¦ +--------+----------------------------+---------+-- ------+---------+--------+-------------------+----- ---+---------+--------¦| ¦ 850 ¦ Alfabeto latino número 1; ¦ C ¦ C ¦ C ¦ X ¦ X ¦ C ¦ C ¦ C ¦ ¦ ¦ países latino-1 ¦ ¦ ¦ ¦ ¦ ¦ ¦ ¦ ¦ +--------+----------------------------+---------+-- ------+---------+--------+-------------------+----- ---+---------+--------¦ ¦ 860 ¦ Portugal (subconjunto 850) ¦ C ¦ C ¦ C ¦ ¦ ¦ ¦ ¦ ¦ +--------+----------------------------+---------+-- ------+---------+--------+-------------------+----- ---+---------+--------¦ ¦ 861 ¦ Islandia ¦ ¦ ¦ C ¦ ¦ ¦ ¦ ¦ ¦ +--------+----------------------------+---------+-- ------+---------+--------+-------------------+----- ---+---------+--------¦| ¦ 863 ¦ Canadá (subconjunto 850) ¦ C ¦ C ¦ C ¦ X ¦ C ¦ C ¦ C ¦ C ¦ +--------+----------------------------+---------+-- ------+---------+--------+-------------------+----- ---+---------+--------¦| ¦ 865 ¦ Dinamarca, Noruega, ¦ C ¦ C ¦ C ¦ ¦ ¦ ¦ ¦ ¦ ¦ ¦ Finlandia, Suecia ¦ ¦ ¦ ¦ ¦ ¦ ¦ ¦ ¦ +--------+----------------------------+---------+-- ------+---------+--------+-------------------+----- ---+---------+--------¦| ¦ 1051 ¦ Emulación HP ¦ ¦ ¦ C ¦ C ¦ C ¦ X ¦ C ¦ C ¦ +--------+----------------------------+---------+-- ------+---------+--------+-------------------+----- ---+---------+--------¦| ¦ 1252 ¦ Windows** latino-1 ¦ C ¦ C ¦ C ¦ X ¦ C ¦ C ¦ C ¦ X ¦ +--------+----------------------------+---------+-- ------+---------+--------+-------------------+----- ---+---------+--------¦| ¦ 1275 ¦ Macintosh** latino-1 ¦ C ¦ ¦ C ¦ C ¦ C ¦ C ¦ C ¦ C ¦ +-------------------------------------------------- --------------------------------------------------- ----------------------+ +-------------------------------------------------- --------------------------------------------------- ----------------------+ ¦ Tabla 32. CCSID para países del grupo 1a (no lati no-1) EBCDIC ¦ +-------------------------------------------------- --------------------------------------------------- ----------------------¦| ¦ CCSID ¦ Descripción ¦ DB2 MVS ¦ SQL/DS ¦ DB2 ¦ DB2(cs) ¦ DB2(cs) ¦ DB2(cs) ¦ DB2(cs) ¦ DB2(cs) ¦| ¦ ¦ ¦ ¦ ¦ para ¦ (OS/2) ¦ (AIX/6000) ¦ (HP) ¦ (SUN) ¦ (NT) ¦ ¦ ¦ ¦ ¦ ¦ OS/400 ¦ ¦ ¦ ¦ ¦ ¦ +--------+----------------------------+---------+-- ------+---------+--------+-------------------+----- ---+---------+--------¦| ¦ 420 ¦ Arabe ¦ X ¦ X ¦ X ¦ C ¦ C ¦ C ¦ ¦ ¦ +--------+----------------------------+---------+-- ------+---------+--------+-------------------+----- ---+---------+--------¦| ¦ 423 ¦ Griego ¦ X ¦ X ¦ X ¦ C ¦ C ¦ C ¦ ¦ C ¦ +--------+----------------------------+---------+-- ------+---------+--------+-------------------+----- ---+---------+--------¦| ¦ 424 ¦ Hebreo ¦ X ¦ X ¦ X ¦ C ¦ C ¦ C ¦ ¦ ¦ +--------+----------------------------+---------+-- ------+---------+--------+-------------------+----- ---+---------+--------¦| ¦ 870 ¦ Latino-2 multilingüe ¦ X ¦ X ¦ X ¦ C ¦ C ¦ C ¦ ¦ C ¦ +--------+----------------------------+---------+-- ------+---------+--------+-------------------+----- ---+---------+--------¦| ¦ 875 ¦ Griego ¦ X ¦ X ¦ X ¦ C ¦ C ¦ C ¦ ¦ C ¦ +--------+----------------------------+---------+-- ------+---------+--------+-------------------+----- ---+---------+--------¦| ¦ 880 ¦ Cirílico multilingüe ¦ T ¦ T ¦ X ¦ ¦ ¦ ¦ ¦ ¦ +--------+----------------------------+---------+-- ------+---------+--------+-------------------+----- ---+---------+--------¦| ¦ 905 ¦ Latino-3 multilingüe de ¦ T ¦ T ¦ X ¦ ¦ ¦ ¦ ¦ ¦ ¦ ¦ Turquía ¦ ¦ ¦ ¦ ¦ ¦ ¦ ¦ ¦ +--------+----------------------------+---------+-- ------+---------+--------+-------------------+----- ---+---------+--------¦| ¦ 1025 ¦ Cirílico multilingüe ¦ T ¦ X ¦ X ¦ C ¦ C ¦ C ¦ ¦ C ¦ +--------+----------------------------+---------+-- ------+---------+--------+-------------------+----- ---+---------+--------¦| ¦ 1026 ¦ Latino-5 de Turquía ¦ X ¦ T ¦ X ¦ C ¦ C ¦ C ¦ ¦ C ¦ +--------+----------------------------+---------+-- ------+---------+--------+-------------------+----- ---+---------+--------¦| ¦ 1097 ¦ Farsí ¦ T ¦ T ¦ X ¦ ¦ ¦ ¦ ¦ ¦ +--------+----------------------------+---------+-- ------+---------+--------+-------------------+----- ---+---------+--------¦| ¦ 1112 ¦ Báltico múltilingüe ¦ T ¦ T ¦ X ¦ ¦ ¦ ¦ ¦ ¦ +--------+----------------------------+---------+-- ------+---------+--------+-------------------+----- ---+---------+--------¦| ¦ 1122 ¦ Estonia ¦ T ¦ T ¦ X ¦ ¦ ¦ ¦ ¦ ¦ +-------------------------------------------------- --------------------------------------------------- ----------------------+ +-------------------------------------------------- --------------------------------------------------- ----------------------+ ¦ Tabla 33. CCSID para países del grupo 1a (no lati no-1 SBCS) ISO y de datos PC ¦ +-------------------------------------------------- --------------------------------------------------- ----------------------¦| ¦ CCSID ¦ Descripción ¦ DB2 MVS ¦ SQL/DS ¦ DB2 ¦ DB2(cs) ¦ DB2(cs) ¦ DB2(cs) ¦ DB2(cs) ¦ DB2(cs) ¦| ¦ ¦ ¦ ¦ ¦ para ¦ (OS/2) ¦ (AIX/6000) ¦ (HP) ¦ (SUN) ¦ (NT) ¦ ¦ ¦ ¦ ¦ ¦ OS/400 ¦ ¦ ¦ ¦ ¦ ¦ +--------+----------------------------+---------+-- ------+---------+--------+-------------------+----- ---+---------+--------¦| ¦ 813 ¦ Griego/latino (ISO 8859-7) ¦ C ¦ C ¦ C ¦ X ¦ X ¦ X ¦ ¦ C ¦ +--------+----------------------------+---------+-- ------+---------+--------+-------------------+----- ---+---------+--------¦| ¦ 851 ¦ Griego ¦ ¦ ¦ C ¦ ¦ ¦ ¦ ¦ ¦ +--------+----------------------------+---------+-- ------+---------+--------+-------------------+----- ---+---------+--------¦| ¦ 852 ¦ Latino-2 multilingüe ¦ C ¦ C ¦ C ¦ X ¦ C ¦ C ¦ ¦ C ¦ +--------+----------------------------+---------+-- ------+---------+--------+-------------------+----- ---+---------+--------¦| ¦ 855 ¦ Cirílico multilingüe ¦ ¦ C ¦ C ¦ X ¦ C ¦ C ¦ ¦ C ¦ +--------+----------------------------+---------+-- ------+---------+--------+-------------------+----- ---+---------+--------¦| ¦ 857 ¦ Latino-5 de Turquía ¦ C ¦ ¦ C ¦ X ¦ C ¦ C ¦ ¦ C ¦ +--------+----------------------------+---------+-- ------+---------+--------+-------------------+----- ---+---------+--------¦| ¦ 862 ¦ Hebreo ¦ C ¦ C ¦ C ¦ X ¦ C ¦ C ¦ ¦ C ¦ +--------+----------------------------+---------+-- ------+---------+--------+-------------------+----- ---+---------+--------¦| ¦ 864 ¦ Arabe ¦ C ¦ C ¦ C ¦ X ¦ C ¦ ¦ ¦ ¦ +--------+----------------------------+---------+-- ------+---------+--------+-------------------+----- ---+---------+--------¦| ¦ 866 ¦ Cirílico ¦ ¦ C ¦ C ¦ X ¦ C ¦ C ¦ ¦ ¦ +--------+----------------------------+---------+-- ------+---------+--------+-------------------+----- ---+---------+--------¦| ¦ 869 ¦ Griego ¦ C ¦ C ¦ C ¦ X ¦ C ¦ C ¦ ¦ C ¦ +--------+----------------------------+---------+-- ------+---------+--------+-------------------+----- ---+---------+--------¦| ¦ 912 ¦ Latino-2 (ISO 8859-2) ¦ C ¦ C ¦ C ¦ C ¦ X ¦ X ¦ ¦ C ¦ +--------+----------------------------+---------+-- ------+---------+--------+-------------------+----- ---+---------+--------¦| ¦ 915 ¦ Cirílico multilingüe (ISO ¦ ¦ C ¦ C ¦ X ¦ X ¦ X ¦ ¦ C ¦ ¦ ¦ 8859-5) ¦ ¦ ¦ ¦ ¦ ¦ ¦ ¦ ¦ +--------+----------------------------+---------+-- ------+---------+--------+-------------------+----- ---+---------+--------¦| ¦ 916 ¦ Hebreo/latino (ISO 8859-8) ¦ C ¦ C ¦ C ¦ C ¦ X ¦ X ¦ ¦ ¦

DB2/400 Manual de Consulta SQL V3R7 Apéndice E. Valores CCSID

© Copyright IBM Corp. 1995, 1996 E.0 - 2

Page 795: DB2/400 Manual de Consulta SQLmarce.com/docs/systems/manuales/db2_400_manual_consulta_sql_v3r7.pdf · VERSION Nota de Versión Segunda edición (noviembre de 1996) Este manual es

+--------+----------------------------+---------+-- ------+---------+--------+-------------------+----- ---+---------+--------¦| ¦ 920 ¦ Latino-5 de Turquía (ISO ¦ C ¦ ¦ C ¦ C ¦ X ¦ X ¦ ¦ C ¦ ¦ ¦ 8859-9) ¦ ¦ ¦ ¦ ¦ ¦ ¦ ¦ ¦ +--------+----------------------------+---------+-- ------+---------+--------+-------------------+----- ---+---------+--------¦| ¦ 1008 ¦ Arabe ISO 8 bits ¦ ¦ ¦ C ¦ ¦ ¦ ¦ ¦ ¦ +--------+----------------------------+---------+-- ------+---------+--------+-------------------+----- ---+---------+--------¦| ¦ 1046 ¦ Arabe ¦ C ¦ ¦ C ¦ C ¦ X ¦ ¦ ¦ ¦ +--------+----------------------------+---------+-- ------+---------+--------+-------------------+----- ---+---------+--------¦| ¦ 1089 ¦ Arabe (ISO 8859-6) ¦ ¦ ¦ C ¦ C ¦ X ¦ X ¦ ¦ ¦ +--------+----------------------------+---------+-- ------+---------+--------+-------------------+----- ---+---------+--------¦| ¦ 1098 ¦ Farsí ¦ ¦ ¦ C ¦ ¦ ¦ ¦ ¦ ¦ ¦ ¦ ¦ ¦ ¦ ¦ ¦ ¦ ¦ ¦ ¦ +--------+----------------------------+---------+-- ------+---------+--------+-------------------+----- ---+---------+--------¦| ¦ 1250 ¦ Windows latino-2 ¦ C ¦ C ¦ C ¦ X ¦ C ¦ C ¦ ¦ X ¦ +--------+----------------------------+---------+-- ------+---------+--------+-------------------+----- ---+---------+--------¦| ¦ 1251 ¦ Windows cirílico ¦ C ¦ C ¦ C ¦ X ¦ C ¦ C ¦ ¦ X ¦ +--------+----------------------------+---------+-- ------+---------+--------+-------------------+----- ---+---------+--------¦| ¦ 1253 ¦ Windows griego ¦ C ¦ C ¦ C ¦ X ¦ C ¦ C ¦ ¦ X ¦ +--------+----------------------------+---------+-- ------+---------+--------+-------------------+----- ---+---------+--------¦| ¦ 1254 ¦ Windows turco ¦ C ¦ ¦ C ¦ X ¦ C ¦ C ¦ ¦ X ¦ +--------+----------------------------+---------+-- ------+---------+--------+-------------------+----- ---+---------+--------¦| ¦ 1255 ¦ Windows hebreo ¦ C ¦ C ¦ C ¦ X ¦ C ¦ ¦ ¦ ¦ +--------+----------------------------+---------+-- ------+---------+--------+-------------------+----- ---+---------+--------¦| ¦ 1256 ¦ Windows árabe ¦ C ¦ C ¦ C ¦ X ¦ C ¦ C ¦ ¦ ¦ +--------+----------------------------+---------+-- ------+---------+--------+-------------------+----- ---+---------+--------¦| ¦ 1280 ¦ Macintosh** Griego ¦ C ¦ ¦ C ¦ C ¦ C ¦ C ¦ ¦ C ¦ +--------+----------------------------+---------+-- ------+---------+--------+-------------------+----- ---+---------+--------¦| ¦ 1281 ¦ Macintosh** Turco ¦ C ¦ ¦ C ¦ C ¦ C ¦ C ¦ ¦ C ¦ +--------+----------------------------+---------+-- ------+---------+--------+-------------------+----- ---+---------+--------¦| ¦ 1282 ¦ Macintosh** latino-2 ¦ C ¦ ¦ C ¦ C ¦ C ¦ C ¦ ¦ C ¦ +--------+----------------------------+---------+-- ------+---------+--------+-------------------+----- ---+---------+--------¦| ¦ 1283 ¦ Macintosh** cirílico ¦ C ¦ ¦ C ¦ C ¦ C ¦ C ¦ ¦ C ¦ +--------+----------------------------+---------+-- ------+---------+--------+-------------------+----- ---+---------+--------¦| ¦ 4948 ¦ Latino-2 multilingüe ¦ ¦ ¦ C ¦ ¦ ¦ ¦ ¦ ¦ +--------+----------------------------+---------+-- ------+---------+--------+-------------------+----- ---+---------+--------¦| ¦ 4951 ¦ Cirílico multilingüe ¦ ¦ ¦ C ¦ ¦ ¦ ¦ ¦ ¦ +--------+----------------------------+---------+-- ------+---------+--------+-------------------+----- ---+---------+--------¦| ¦ 4952 ¦ Hebreo ¦ ¦ ¦ C ¦ ¦ ¦ ¦ ¦ ¦ +--------+----------------------------+---------+-- ------+---------+--------+-------------------+----- ---+---------+--------¦| ¦ 4953 ¦ Latino-5 de Turquía ¦ ¦ ¦ C ¦ ¦ ¦ ¦ ¦ ¦ +--------+----------------------------+---------+-- ------+---------+--------+-------------------+----- ---+---------+--------¦| ¦ 4960 ¦ Arabe ¦ ¦ ¦ C ¦ ¦ ¦ ¦ ¦ ¦ +--------+----------------------------+---------+-- ------+---------+--------+-------------------+----- ---+---------+--------¦| ¦ 4965 ¦ Griego ¦ ¦ ¦ C ¦ ¦ ¦ ¦ ¦ ¦ +-------------------------------------------------- --------------------------------------------------- ----------------------+ +-------------------------------------------------- --------------------------------------------------- ----------------------+ ¦ Tabla 34. CCSID SBCS para países del grupo 2 (DBC S) EBCDIC ¦ +-------------------------------------------------- --------------------------------------------------- ----------------------¦| ¦ CCSID ¦ Descripción ¦ DB2 MVS ¦ SQL/DS ¦ DB2 ¦ DB2(cs) ¦ DB2(cs) ¦ DB2(cs) ¦ DB2(cs) ¦ DB2(cs) ¦| ¦ ¦ ¦ ¦ ¦ para ¦ (OS/2) ¦ (AIX/6000) ¦ (HP) ¦ (SUN) ¦ (NT) ¦ ¦ ¦ ¦ ¦ ¦ OS/400 ¦ ¦ ¦ ¦ ¦ ¦ +--------+----------------------------+---------+-- ------+---------+--------+-------------------+----- ---+---------+--------¦| ¦ 290 ¦ Katakana (ampliado) de ¦ X ¦ X ¦ X ¦ C ¦ C ¦ C ¦ C ¦ C ¦ ¦ ¦ Japón ¦ ¦ ¦ ¦ ¦ ¦ ¦ ¦ ¦ +--------+----------------------------+---------+-- ------+---------+--------+-------------------+----- ---+---------+--------¦| ¦ 833 ¦ Corea (ampliado) ¦ X ¦ X ¦ X ¦ C ¦ C ¦ C ¦ C ¦ C ¦ +--------+----------------------------+---------+-- ------+---------+--------+-------------------+----- ---+---------+--------¦| ¦ 836 ¦ Chino simplificado ¦ X ¦ X ¦ X ¦ C ¦ C ¦ C ¦ C ¦ C ¦ ¦ ¦ (ampliado) ¦ ¦ ¦ ¦ ¦ ¦ ¦ ¦ ¦ +--------+----------------------------+---------+-- ------+---------+--------+-------------------+----- ---+---------+--------¦| ¦ 838 ¦ Tailandia (ampliado) ¦ T ¦ X ¦ X ¦ C ¦ C ¦ C ¦ C ¦ C ¦ +--------+----------------------------+---------+-- ------+---------+--------+-------------------+----- ---+---------+--------¦| ¦ 1027 ¦ Inglés (ampliado) de Japón ¦ X ¦ X ¦ X ¦ C ¦ C ¦ C ¦ C ¦ C ¦ +--------+----------------------------+---------+-- ------+---------+--------+-------------------+----- ---+---------+--------¦| ¦ 9030 ¦ Tailandia (ampliado) ¦ ¦ ¦ X ¦ ¦ ¦ ¦ ¦ ¦ +--------+----------------------------+---------+-- ------+---------+--------+-------------------+----- ---+---------+--------¦| ¦ 28709 ¦ Chino tradicional ¦ X ¦ X ¦ X ¦ C ¦ C ¦ C ¦ C ¦ C ¦ ¦ ¦ (ampliado) ¦ ¦ ¦ ¦ ¦ ¦ ¦ ¦ ¦ +-------------------------------------------------- --------------------------------------------------- ----------------------+ +-------------------------------------------------- --------------------------------------------------- ----------------------+ ¦ Tabla 35. CCSID SBCS para países del grupo 2 (DBC S) de datos PC ¦ +-------------------------------------------------- --------------------------------------------------- ----------------------¦| ¦ CCSID ¦ Descripción ¦ DB2 MVS ¦ SQL/DS ¦ DB2 ¦ DB2(cs) ¦ DB2(cs) ¦ DB2(cs) ¦ DB2(cs) ¦ DB2(cs) ¦| ¦ ¦ ¦ ¦ ¦ para ¦ (OS/2) ¦ (AIX/6000) ¦ (HP) ¦ (SUN) ¦ (NT) ¦ ¦ ¦ ¦ ¦ ¦ OS/400 ¦ ¦ ¦ ¦ ¦ ¦ +--------+----------------------------+---------+-- ------+---------+--------+-------------------+----- ---+---------+--------¦| ¦ 367 ¦ Coreano y chino ¦ C ¦ C ¦ C ¦ ¦ X ¦ ¦ ¦ C ¦ ¦ ¦ simplificado EUC ¦ ¦ ¦ ¦ ¦ ¦ ¦ ¦ ¦ +--------+----------------------------+---------+-- ------+---------+--------+-------------------+----- ---+---------+--------¦| ¦ 874 ¦ Tailandia (ampliado) ¦ C ¦ ¦ C ¦ X ¦ X ¦ ¦ ¦ X ¦ +--------+----------------------------+---------+-- ------+---------+--------+-------------------+----- ---+---------+--------¦| ¦ 891 ¦ Corea (no ampliado) ¦ ¦ C ¦ C ¦ ¦ ¦ ¦ ¦ ¦ +--------+----------------------------+---------+-- ------+---------+--------+-------------------+----- ---+---------+--------¦| ¦ 895 ¦ Japón EUC - Juego romano ¦ C ¦ ¦ ¦ ¦ ¦ ¦ ¦ ¦| ¦ ¦ JISX201 ¦ ¦ ¦ ¦ ¦ ¦ ¦ ¦ ¦ +--------+----------------------------+---------+-- ------+---------+--------+-------------------+----- ---+---------+--------¦| ¦ 896 ¦ Japón EUC - Juego Katakana ¦ C ¦ ¦ ¦ ¦ ¦ ¦ ¦ ¦| ¦ ¦ JISX201 ¦ ¦ ¦ ¦ ¦ ¦ ¦ ¦ ¦ +--------+----------------------------+---------+-- ------+---------+--------+-------------------+----- ---+---------+--------¦| ¦ 897 ¦ Japón (no ampliado) ¦ C ¦ C ¦ C ¦ ¦ ¦ ¦ ¦ ¦ +--------+----------------------------+---------+-- ------+---------+--------+-------------------+----- ---+---------+--------¦| ¦ 903 ¦ Chino simplificado (no ¦ ¦ C ¦ C ¦ ¦ ¦ ¦ ¦ ¦ ¦ ¦ ampliado) ¦ ¦ ¦ ¦ ¦ ¦ ¦ ¦ ¦ +--------+----------------------------+---------+-- ------+---------+--------+-------------------+----- ---+---------+--------¦

DB2/400 Manual de Consulta SQL V3R7 Apéndice E. Valores CCSID

© Copyright IBM Corp. 1995, 1996 E.0 - 3

Page 796: DB2/400 Manual de Consulta SQLmarce.com/docs/systems/manuales/db2_400_manual_consulta_sql_v3r7.pdf · VERSION Nota de Versión Segunda edición (noviembre de 1996) Este manual es

| ¦ 904 ¦ Chino tradicional (no ¦ C ¦ C ¦ C ¦ ¦ ¦ ¦ ¦ ¦ ¦ ¦ ampliado) ¦ ¦ ¦ ¦ ¦ ¦ ¦ ¦ ¦ +--------+----------------------------+---------+-- ------+---------+--------+-------------------+----- ---+---------+--------¦| ¦ 1040 ¦ Corea (ampliado) ¦ ¦ C ¦ C ¦ ¦ ¦ ¦ ¦ ¦ +--------+----------------------------+---------+-- ------+---------+--------+-------------------+----- ---+---------+--------¦| ¦ 1041 ¦ Japón (ampliado) ¦ C ¦ C ¦ C ¦ ¦ ¦ ¦ ¦ ¦ +--------+----------------------------+---------+-- ------+---------+--------+-------------------+----- ---+---------+--------¦| ¦ 1042 ¦ Chino simplificado ¦ ¦ C ¦ C ¦ ¦ ¦ ¦ ¦ ¦ ¦ ¦ (ampliado) ¦ ¦ ¦ ¦ ¦ ¦ ¦ ¦ ¦ +--------+----------------------------+---------+-- ------+---------+--------+-------------------+----- ---+---------+--------¦| ¦ 1043 ¦ Chino tradicional ¦ C ¦ C ¦ C ¦ ¦ ¦ ¦ ¦ ¦ ¦ ¦ (ampliado) ¦ ¦ ¦ ¦ ¦ ¦ ¦ ¦ ¦ +--------+----------------------------+---------+-- ------+---------+--------+-------------------+----- ---+---------+--------¦| ¦ 1088 ¦ Corea (código KS 5601-89) ¦ C ¦ C ¦ C ¦ ¦ ¦ ¦ ¦ ¦ +--------+----------------------------+---------+-- ------+---------+--------+-------------------+----- ---+---------+--------¦| ¦ 1114 ¦ Chino tradicional (Big-5) ¦ C ¦ C ¦ C ¦ ¦ ¦ ¦ ¦ ¦ +--------+----------------------------+---------+-- ------+---------+--------+-------------------+----- ---+---------+--------¦| ¦ 1115 ¦ Chino simplificado Código ¦ C ¦ C ¦ C ¦ ¦ ¦ ¦ ¦ ¦ ¦ ¦ GB ¦ ¦ ¦ ¦ ¦ ¦ ¦ ¦ ¦ +--------+----------------------------+---------+-- ------+---------+--------+-------------------+----- ---+---------+--------¦| ¦ 9066 ¦ Tailandia (ampliado) ¦ ¦ ¦ C ¦ ¦ ¦ ¦ ¦ ¦ +-------------------------------------------------- --------------------------------------------------- ----------------------+ +-------------------------------------------------- --------------------------------------------------- ----------------------+ ¦ Tabla 36. CCSID DBCS para países del grupo 2 (DBC S) EBCDIC ¦ +-------------------------------------------------- --------------------------------------------------- ----------------------¦| ¦ CCSID ¦ Descripción ¦ DB2 MVS ¦ SQL/DS ¦ DB2 ¦ DB2(cs) ¦ DB2(cs) ¦ DB2(cs) ¦ DB2(cs) ¦ DB2(cs) ¦| ¦ ¦ ¦ ¦ ¦ para ¦ (OS/2) ¦ (AIX/6000) ¦ (HP) ¦ (SUN) ¦ (NT) ¦ ¦ ¦ ¦ ¦ ¦ OS/400 ¦ ¦ ¦ ¦ ¦ ¦ +--------+----------------------------+---------+-- ------+---------+--------+-------------------+----- ---+---------+--------¦| ¦ 300 ¦ Japón - incluidos los ¦ X ¦ X ¦ X ¦ C ¦ C ¦ C ¦ C ¦ C ¦ ¦ ¦ caracteres definidos por ¦ ¦ ¦ ¦ ¦ ¦ ¦ ¦ ¦ ¦ ¦ el usuario (UDC) 4370 ¦ ¦ ¦ ¦ ¦ ¦ ¦ ¦ ¦ +--------+----------------------------+---------+-- ------+---------+--------+-------------------+----- ---+---------+--------¦| ¦ 834 ¦ Corea - incluidos los UDC ¦ X ¦ X ¦ X ¦ C ¦ C ¦ C ¦ C ¦ C ¦ ¦ ¦ 1880 ¦ ¦ ¦ ¦ ¦ ¦ ¦ ¦ ¦ +--------+----------------------------+---------+-- ------+---------+--------+-------------------+----- ---+---------+--------¦| ¦ 835 ¦ Chino tradicional - ¦ X ¦ X ¦ X ¦ C ¦ C ¦ C ¦ C ¦ C ¦ ¦ ¦ incluidos los UDC 6204 ¦ ¦ ¦ ¦ ¦ ¦ ¦ ¦ ¦ +--------+----------------------------+---------+-- ------+---------+--------+-------------------+----- ---+---------+--------¦| ¦ 837 ¦ Chino simplificado - ¦ X ¦ X ¦ X ¦ C ¦ C ¦ C ¦ C ¦ C ¦ ¦ ¦ incluidos los UDC 1880 ¦ ¦ ¦ ¦ ¦ ¦ ¦ ¦ ¦ +--------+----------------------------+---------+-- ------+---------+--------+-------------------+----- ---+---------+--------¦| ¦ 4396 ¦ Japón - incluidos los UDC ¦ X ¦ X ¦ X ¦ C ¦ C ¦ C ¦ C ¦ C ¦ ¦ ¦ 1880 ¦ ¦ ¦ ¦ ¦ ¦ ¦ ¦ ¦ +-------------------------------------------------- --------------------------------------------------- ----------------------+ +-------------------------------------------------- --------------------------------------------------- ----------------------+ ¦ Tabla 37. CCSID DBCS para países del grupo 2 (DBC S) de datos PC ¦ +-------------------------------------------------- --------------------------------------------------- ----------------------¦| ¦ CCSID ¦ Descripción ¦ DB2 MVS ¦ SQL/DS ¦ DB2 ¦ DB2(cs) ¦ DB2(cs) ¦ DB2(cs) ¦ DB2(cs) ¦ DB2(cs) ¦| ¦ ¦ ¦ ¦ ¦ para ¦ (OS/2) ¦ (AIX/6000) ¦ (HP) ¦ (SUN) ¦ (NT) ¦ ¦ ¦ ¦ ¦ ¦ OS/400 ¦ ¦ ¦ ¦ ¦ ¦ +--------+----------------------------+---------+-- ------+---------+--------+-------------------+----- ---+---------+--------¦| ¦ 301 ¦ Japón - incluidos los UDC ¦ C ¦ C ¦ C ¦ X ¦ X ¦ C ¦ C ¦ C ¦ ¦ ¦ 1880 ¦ ¦ ¦ ¦ ¦ ¦ ¦ ¦ ¦ +--------+----------------------------+---------+-- ------+---------+--------+-------------------+----- ---+---------+--------¦| ¦ 926 ¦ Corea - incluidos los UDC ¦ ¦ C ¦ C ¦ ¦ ¦ ¦ ¦ ¦ ¦ ¦ 1880 ¦ ¦ ¦ ¦ ¦ ¦ ¦ ¦ ¦ +--------+----------------------------+---------+-- ------+---------+--------+-------------------+----- ---+---------+--------¦| ¦ 927 ¦ Chino tradicional - ¦ C ¦ C ¦ C ¦ X ¦ C ¦ C ¦ C ¦ C ¦ ¦ ¦ incluidos los UDC 6204 ¦ ¦ ¦ ¦ ¦ ¦ ¦ ¦ ¦ +--------+----------------------------+---------+-- ------+---------+--------+-------------------+----- ---+---------+--------¦| ¦ 928 ¦ Chino simplificado - ¦ ¦ C ¦ C ¦ ¦ ¦ ¦ ¦ ¦ ¦ ¦ incluidos los UDC 1880 ¦ ¦ ¦ ¦ ¦ ¦ ¦ ¦ ¦ +--------+----------------------------+---------+-- ------+---------+--------+-------------------+----- ---+---------+--------¦| ¦ 941 ¦ Japón NT - incluidos los ¦ C ¦ ¦ C ¦ C ¦ C ¦ X ¦ C ¦ C ¦| ¦ ¦ UDC 4040 ¦ ¦ ¦ ¦ ¦ ¦ ¦ ¦ ¦ +--------+----------------------------+---------+-- ------+---------+--------+-------------------+----- ---+---------+--------¦| ¦ 947 ¦ Chino tradicional (Big-5) ¦ C ¦ C ¦ C ¦ X ¦ X ¦ C ¦ C ¦ X ¦ +--------+----------------------------+---------+-- ------+---------+--------+-------------------+----- ---+---------+--------¦| ¦ 951 ¦ Corea (código KS 5601-89) ¦ C ¦ C ¦ C ¦ X ¦ C ¦ C ¦ C ¦ X ¦ ¦ ¦ - incluidos los UDC 1880 ¦ ¦ ¦ ¦ ¦ ¦ ¦ ¦ ¦ +--------+----------------------------+---------+-- ------+---------+--------+-------------------+----- ---+---------+--------¦| ¦ 971 ¦ Corea (EUC) - incluidos ¦ C ¦ C ¦ ¦ C ¦ X ¦ X ¦ X ¦ C ¦ ¦ ¦ los UDC 188 ¦ ¦ ¦ ¦ ¦ ¦ ¦ ¦ ¦ +--------+----------------------------+---------+-- ------+---------+--------+-------------------+----- ---+---------+--------¦| ¦ 1380 ¦ Chino simplificado (Código ¦ C ¦ C ¦ C ¦ X ¦ C ¦ C ¦ C ¦ X ¦ ¦ ¦ GB) - incluidos los UDC ¦ ¦ ¦ ¦ ¦ ¦ ¦ ¦ ¦ ¦ ¦ 1880 ¦ ¦ ¦ ¦ ¦ ¦ ¦ ¦ ¦ +--------+----------------------------+---------+-- ------+---------+--------+-------------------+----- ---+---------+--------¦| ¦ 1382 ¦ Chino simplificado (EUC) - ¦ C ¦ C ¦ ¦ C ¦ X ¦ X ¦ X ¦ C ¦ ¦ ¦ incluidos los UDC 1360 ¦ ¦ ¦ ¦ ¦ ¦ ¦ ¦ ¦ +-------------------------------------------------- --------------------------------------------------- ----------------------+ +-------------------------------------------------- --------------------------------------------------- ----------------------+ ¦ Tabla 38. CCSID mixtos para países del grupo 2 (D BCS) EBCDIC ¦ +-------------------------------------------------- --------------------------------------------------- ----------------------¦| ¦ CCSID ¦ Descripción ¦ DB2 MVS ¦ SQL/DS ¦ DB2 ¦ DB2(cs) ¦ DB2(cs) ¦ DB2(cs) ¦ DB2(cs) ¦ DB2(cs) ¦| ¦ ¦ ¦ ¦ ¦ para ¦ (OS/2) ¦ (AIX/6000) ¦ (HP) ¦ (SUN) ¦ (NT) ¦ ¦ ¦ ¦ ¦ ¦ OS/400 ¦ ¦ ¦ ¦ ¦ ¦ +--------+----------------------------+---------+-- ------+---------+--------+-------------------+----- ---+---------+--------¦| ¦ 930 ¦ Katakana/kanji (ampliado) ¦ X ¦ X ¦ X ¦ C ¦ C ¦ C ¦ C ¦ C ¦ ¦ ¦ de Japón - incluyedo UDC ¦ ¦ ¦ ¦ ¦ ¦ ¦ ¦ ¦ ¦ ¦ 4370 ¦ ¦ ¦ ¦ ¦ ¦ ¦ ¦ ¦

DB2/400 Manual de Consulta SQL V3R7 Apéndice E. Valores CCSID

© Copyright IBM Corp. 1995, 1996 E.0 - 4

Page 797: DB2/400 Manual de Consulta SQLmarce.com/docs/systems/manuales/db2_400_manual_consulta_sql_v3r7.pdf · VERSION Nota de Versión Segunda edición (noviembre de 1996) Este manual es

+--------+----------------------------+---------+-- ------+---------+--------+-------------------+----- ---+---------+--------¦| ¦ 933 ¦ Corea (ampliado) - ¦ X ¦ X ¦ X ¦ C ¦ C ¦ C ¦ C ¦ C ¦ ¦ ¦ incluidos los UDC 1880 ¦ ¦ ¦ ¦ ¦ ¦ ¦ ¦ ¦ +--------+----------------------------+---------+-- ------+---------+--------+-------------------+----- ---+---------+--------¦| ¦ 935 ¦ Chino simplificado ¦ X ¦ X ¦ X ¦ C ¦ C ¦ C ¦ C ¦ C ¦ ¦ ¦ (ampliado) - incluidos los ¦ ¦ ¦ ¦ ¦ ¦ ¦ ¦ ¦ ¦ ¦ UDC 1880 ¦ ¦ ¦ ¦ ¦ ¦ ¦ ¦ ¦ +--------+----------------------------+---------+-- ------+---------+--------+-------------------+----- ---+---------+--------¦| ¦ 937 ¦ Chino tradicional ¦ X ¦ X ¦ X ¦ C ¦ C ¦ C ¦ C ¦ C ¦ ¦ ¦ (ampliado) - incluidos los ¦ ¦ ¦ ¦ ¦ ¦ ¦ ¦ ¦ ¦ ¦ UDC 4370 ¦ ¦ ¦ ¦ ¦ ¦ ¦ ¦ ¦ +--------+----------------------------+---------+-- ------+---------+--------+-------------------+----- ---+---------+--------¦| ¦ 939 ¦ Inglés/kanji (ampliado) de ¦ X ¦ X ¦ X ¦ C ¦ C ¦ C ¦ C ¦ C ¦ ¦ ¦ Japón - incluidos los UDC ¦ ¦ ¦ ¦ ¦ ¦ ¦ ¦ ¦ ¦ ¦ 4370 ¦ ¦ ¦ ¦ ¦ ¦ ¦ ¦ ¦ +--------+----------------------------+---------+-- ------+---------+--------+-------------------+----- ---+---------+--------¦| ¦ 5026 ¦ Katakana/kanji (ampliado) ¦ X ¦ X ¦ X ¦ C ¦ C ¦ C ¦ C ¦ C ¦ ¦ ¦ de Japón - incluyedo UDC ¦ ¦ ¦ ¦ ¦ ¦ ¦ ¦ ¦ ¦ ¦ 1880 ¦ ¦ ¦ ¦ ¦ ¦ ¦ ¦ ¦ +--------+----------------------------+---------+-- ------+---------+--------+-------------------+----- ---+---------+--------¦| ¦ 5035 ¦ Inglés/kanji (ampliado) de ¦ X ¦ X ¦ X ¦ C ¦ C ¦ C ¦ C ¦ C ¦ ¦ ¦ Japón - incluidos los UDC ¦ ¦ ¦ ¦ ¦ ¦ ¦ ¦ ¦ ¦ ¦ 1880 ¦ ¦ ¦ ¦ ¦ ¦ ¦ ¦ ¦ +-------------------------------------------------- --------------------------------------------------- ----------------------+ +-------------------------------------------------- --------------------------------------------------- ----------------------+ ¦ Tabla 39. CCSID mixtos para países del grupo 2 (D BCS) de datos PC ¦ +-------------------------------------------------- --------------------------------------------------- ----------------------¦| ¦ CCSID ¦ Descripción ¦ DB2 MVS ¦ SQL/DS ¦ DB2 ¦ DB2(cs) ¦ DB2(cs) ¦ DB2(cs) ¦ DB2(cs) ¦ DB2(cs) ¦| ¦ ¦ ¦ ¦ ¦ para ¦ (OS/2) ¦ (AIX/6000) ¦ (HP) ¦ (SUN) ¦ (NT) ¦ ¦ ¦ ¦ ¦ ¦ OS/400 ¦ ¦ ¦ ¦ ¦ ¦ +--------+----------------------------+---------+-- ------+---------+--------+-------------------+----- ---+---------+--------¦| ¦ 932 ¦ Japón (no ampliado) - ¦ C ¦ C ¦ C ¦ X ¦ X ¦ C ¦ C ¦ C ¦ ¦ ¦ incluidos los UDC 1880 ¦ ¦ ¦ ¦ ¦ ¦ ¦ ¦ ¦ +--------+----------------------------+---------+-- ------+---------+--------+-------------------+----- ---+---------+--------¦| ¦ 934 ¦ Corea (no ampliado) ¦ ¦ C ¦ C ¦ ¦ ¦ ¦ ¦ ¦ ¦ ¦ incluidos los UDC 1880 ¦ ¦ ¦ ¦ ¦ ¦ ¦ ¦ ¦ +--------+----------------------------+---------+-- ------+---------+--------+-------------------+----- ---+---------+--------¦| ¦ 936 ¦ Chino simplificado (no ¦ ¦ C ¦ C ¦ ¦ ¦ ¦ ¦ ¦ ¦ ¦ ampliado) - incluidos los ¦ ¦ ¦ ¦ ¦ ¦ ¦ ¦ ¦ ¦ ¦ UDC 1880 ¦ ¦ ¦ ¦ ¦ ¦ ¦ ¦ ¦ +--------+----------------------------+---------+-- ------+---------+--------+-------------------+----- ---+---------+--------¦| ¦ 938 ¦ Chino tradicional (no ¦ C ¦ C ¦ C ¦ X ¦ C ¦ C ¦ C ¦ C ¦ ¦ ¦ ampliado) - incluidos los ¦ ¦ ¦ ¦ ¦ ¦ ¦ ¦ ¦ ¦ ¦ UDC 6204 ¦ ¦ ¦ ¦ ¦ ¦ ¦ ¦ ¦ +--------+----------------------------+---------+-- ------+---------+--------+-------------------+----- ---+---------+--------¦| ¦ 942 ¦ Japón (ampliado) - ¦ C ¦ C ¦ C ¦ X ¦ C ¦ C ¦ C ¦ C ¦ ¦ ¦ incluidos los UDC 1880 ¦ ¦ ¦ ¦ ¦ ¦ ¦ ¦ ¦ +--------+----------------------------+---------+-- ------+---------+--------+-------------------+----- ---+---------+--------¦| ¦ 943 ¦ Japón NT ¦ ¦ ¦ C ¦ C ¦ C ¦ C ¦ C ¦ X ¦ +--------+----------------------------+---------+-- ------+---------+--------+-------------------+----- ---+---------+--------¦| ¦ 944 ¦ Corea (ampliado) - ¦ ¦ C ¦ C ¦ ¦ ¦ ¦ ¦ ¦ ¦ ¦ incluidos los UDC 1880 ¦ ¦ ¦ ¦ ¦ ¦ ¦ ¦ ¦ +--------+----------------------------+---------+-- ------+---------+--------+-------------------+----- ---+---------+--------¦| ¦ 946 ¦ Chino simplificado ¦ ¦ C ¦ C ¦ ¦ ¦ ¦ ¦ ¦ ¦ ¦ (ampliado) - incluidos los ¦ ¦ ¦ ¦ ¦ ¦ ¦ ¦ ¦ ¦ ¦ UDC 1880 ¦ ¦ ¦ ¦ ¦ ¦ ¦ ¦ ¦ +--------+----------------------------+---------+-- ------+---------+--------+-------------------+----- ---+---------+--------¦| ¦ 948 ¦ Chino tradicional ¦ C ¦ C ¦ C ¦ X ¦ C ¦ C ¦ C ¦ C ¦ ¦ ¦ (ampliado) - incluidos los ¦ ¦ ¦ ¦ ¦ ¦ ¦ ¦ ¦ ¦ ¦ UDC 6204 ¦ ¦ ¦ ¦ ¦ ¦ ¦ ¦ ¦ +--------+----------------------------+---------+-- ------+---------+--------+-------------------+----- ---+---------+--------¦| ¦ 949 ¦ Corea (código KS 5601-89) ¦ C ¦ C ¦ C ¦ X ¦ C ¦ C ¦ C ¦ X ¦ ¦ ¦ - incluidos los UDC 1880 ¦ ¦ ¦ ¦ ¦ ¦ ¦ ¦ ¦ +--------+----------------------------+---------+-- ------+---------+--------+-------------------+----- ---+---------+--------¦| ¦ 950 ¦ Chino tradicional (Big-5) ¦ C ¦ C ¦ C ¦ X ¦ X ¦ C ¦ C ¦ X ¦ +--------+----------------------------+---------+-- ------+---------+--------+-------------------+----- ---+---------+--------¦| ¦ 954 ¦ Japón (EUC) ¦ C ¦ ¦ ¦ C ¦ X ¦ X ¦ X ¦ C ¦ +--------+----------------------------+---------+-- ------+---------+--------+-------------------+----- ---+---------+--------¦| ¦ 964 ¦ Chino tradicional (EUC) ¦ C ¦ ¦ C ¦ C ¦ X ¦ X ¦ X ¦ C ¦ +--------+----------------------------+---------+-- ------+---------+--------+-------------------+----- ---+---------+--------¦| ¦ 970 ¦ Coreano EUC ¦ C ¦ C ¦ C ¦ C ¦ X ¦ X ¦ X ¦ C ¦ +--------+----------------------------+---------+-- ------+---------+--------+-------------------+----- ---+---------+--------¦| ¦ 1351 ¦ Japón HP15 ¦ ¦ ¦ ¦ C ¦ C ¦ X ¦ C ¦ C ¦ +--------+----------------------------+---------+-- ------+---------+--------+-------------------+----- ---+---------+--------¦| ¦ 1381 ¦ Chino simplificado Código ¦ C ¦ C ¦ C ¦ X ¦ C ¦ C ¦ C ¦ X ¦ ¦ ¦ GB ¦ ¦ ¦ ¦ ¦ ¦ ¦ ¦ ¦ +--------+----------------------------+---------+-- ------+---------+--------+-------------------+----- ---+---------+--------¦| ¦ 1383 ¦ Chino simplificado EUC ¦ C ¦ C ¦ C ¦ C ¦ X ¦ X ¦ X ¦ C ¦ +--------+----------------------------+---------+-- ------+---------+--------+-------------------+----- ---+---------+--------¦ ¦ 5050 ¦ Japón (EUC) ¦ ¦ ¦ C ¦ ¦ ¦ ¦ ¦ ¦ +-------------------------------------------------- --------------------------------------------------- ----------------------+

DB2/400 Manual de Consulta SQL V3R7 Apéndice E. Valores CCSID

© Copyright IBM Corp. 1995, 1996 E.0 - 5

Page 798: DB2/400 Manual de Consulta SQLmarce.com/docs/systems/manuales/db2_400_manual_consulta_sql_v3r7.pdf · VERSION Nota de Versión Segunda edición (noviembre de 1996) Este manual es

F.0 Apéndice F. Consideraciones para la utilizació n de la base de datos relacional distribuida Este apéndice contiene información que puede result ar útil para desarrollar aplicaciones que utilicen servidores de la aplicación que no sean del mismo producto que sus peticionarios. Todos los productos de bases de datos relacionales dan soporte a las ampliaciones a SQL de IBM. Algunas de estas amplia ciones son específicas de determinados productos y otras las comparten más de un producto. La mayor parte de las veces, una aplicación puede u tilizar las sentencias y cláusulas a las que da soporte el gestor de bases de datos del servidor actual, incluso aunque dicha aplicación pueda estar ejecutándose mediante el peticionario de aplicación de un gestor de bases de datos que no dé soporte a algunas de estas sentencias y cláusulas. Las restricciones a esta regla general están consignadas en la Tabla 40 , la Tabla 41 , la Tabla 42 y la Tabla 43 . Tenga presente que cuando aparezca una 'R' en la ta bla, significa que la función SQL no está soportada en el entorno específ ico. Si aparece una 'R' en todas las columnas de la misma fila, la func ión estará disponible sólo si el servidor y el peticionario actual son de l mismo producto. Tenga en cuenta que, en la siguiente tabla, DB2(CS) hace referencia a DB2| para AIX/6000, DB2 para OS/2, DB2 para HP, DB2 para SUN Solaris, o DB2| para NT. La información de este apéndice hace referencia a l as siguientes versiones de producto: � DB2 para MVS Versión 4 � SQL/DS Versión 3 Release 5 � DB2 para OS/400 Versión 3 Release 2 � DB2(cs) (OS/2) Versión 2 � DB2(cs) (AIX/6000) Versión 2 � DB2(cs) (HP) Versión 2| � DB2(cs) (NT) Versión 2 � DB2(cs) (SUN) Versión 2 +-------------------------------------------------- ----------------------+| ¦ Tabla 40. Peticionario de la aplicación de DB2 pa ra MVS ¦ +-------------------------------------------------- ----------------------¦| ¦ Sentencia o función SQL ¦ DB2 ¦ SQL/DS ¦ DB2 ¦ DB2(cs) ¦| ¦ ¦ para ¦ Applicati¦npara ¦ Applicat¦on| ¦ ¦ MVS ¦ Server ¦ OS/400 ¦ Server ¦| ¦ ¦ Applicat¦on ¦ Applicat¦on ¦| ¦ ¦ Server ¦ ¦ Server ¦ ¦ +-------------------------------+---------+-------- --+---------+---------¦| ¦ CALL ¦ ¦ R ¦ ¦ ¦ +-------------------------------+---------+-------- --+---------+---------¦| ¦ COMMIT HOLD ¦ R ¦ R ¦ R ¦ R ¦ +-------------------------------+---------+-------- --+---------+---------¦| ¦ COMMIT RELEASE ¦ R ¦ R ¦ R ¦ R ¦ +-------------------------------+---------+-------- --+---------+---------¦| ¦ CONNECT (Tipo 2) ¦ ¦ Nota 1 ¦ ¦ ¦ +-------------------------------+---------+-------- --+---------+---------¦| ¦ DECLARE CURSOR WITH HOLD ¦ ¦ R ¦ ¦ ¦ +-------------------------------+---------+-------- --+---------+---------¦| ¦ DECLARE STATEMENT ¦ ¦ ¦ ¦ ¦ +-------------------------------+---------+-------- --+---------+---------¦| ¦ DECLARE TABLE ¦ ¦ ¦ ¦ ¦ +-------------------------------+---------+-------- --+---------+---------¦| ¦ DECLARE VARIABLE ¦ R ¦ R ¦ R ¦ R ¦ +-------------------------------+---------+-------- --+---------+---------¦| ¦ Existencia diferida (Nota 3) ¦ ¦ ¦ ¦ R ¦ +-------------------------------+---------+-------- --+---------+---------¦| ¦ DESCRIBE TABLE ¦ ¦ R ¦ ¦ R ¦ +-------------------------------+---------+-------- --+---------+---------¦| ¦ DESCRIBE con cláusula USING ¦ ¦ ¦ ¦ R ¦ +-------------------------------+---------+-------- --+---------+---------¦| ¦ DISCONNECT ¦ R ¦ R ¦ R ¦ R ¦ +-------------------------------+---------+-------- --+---------+---------¦| ¦ Sentencias dinámicas ¦ R ¦ R ¦ R ¦ R ¦| ¦ ampliadas ¦ ¦ ¦ ¦ ¦ +-------------------------------+---------+-------- --+---------+---------¦| ¦ Estructuras del lenguaje ¦ ¦ ¦ ¦ ¦| ¦ principal ¦ ¦ ¦ ¦ ¦ +-------------------------------+---------+-------- --+---------+---------¦| ¦ Variables del lenguaje ¦ ¦ R ¦ R ¦ R ¦| ¦ principal - dos puntos ¦ ¦ ¦ ¦ ¦| ¦ opcionales ¦ ¦ ¦ ¦ ¦ +-------------------------------+---------+-------- --+---------+---------¦| ¦ Tipos de datos de objeto ¦ R ¦ R ¦ R ¦ R ¦| ¦ grande (LOB) ¦ ¦ ¦ ¦ ¦ +-------------------------------+---------+-------- --+---------+---------¦| ¦ Declaraciones del lenguaje ¦ ¦ Nota 2 ¦ Nota 2 ¦ Nota 2 ¦| ¦ principal SQL no de IBM ¦ ¦ ¦ ¦ ¦ +-------------------------------+---------+-------- --+---------+---------¦| ¦ PREPARE con la cláusula INTO ¦ ¦ ¦ ¦ ¦ +-------------------------------+---------+-------- --+---------+---------¦| ¦ PREPARE con la cláusula USING ¦ ¦ ¦ ¦ R ¦ +-------------------------------+---------+-------- --+---------+---------¦| ¦ PUT ¦ R ¦ R ¦ R ¦ R ¦ +-------------------------------+---------+-------- --+---------+---------¦| ¦ RELEASE ¦ ¦ ¦ ¦ ¦ +-------------------------------+---------+-------- --+---------+---------¦| ¦ ROLLBACK HOLD ¦ R ¦ R ¦ R ¦ R ¦

DB2/400 Manual de Consulta SQL V3R7 Apéndice F. Consideraciones para la utilización de la base de datos relacional distribuida

© Copyright IBM Corp. 1995, 1996 F.0 - 1

Page 799: DB2/400 Manual de Consulta SQLmarce.com/docs/systems/manuales/db2_400_manual_consulta_sql_v3r7.pdf · VERSION Nota de Versión Segunda edición (noviembre de 1996) Este manual es

+-------------------------------+---------+-------- --+---------+---------¦| ¦ ROLLBACK RELEASE ¦ R ¦ R ¦ R ¦ R ¦ +-------------------------------+---------+-------- --+---------+---------¦| ¦ SET CONNECTION ¦ ¦ ¦ ¦ ¦ +-------------------------------+---------+-------- --+---------+---------¦| ¦ SET CURRENT PACKAGESET ¦ ¦ ¦ ¦ ¦ +-------------------------------+---------+-------- --+---------+---------¦| ¦ SET variable del lenguaje ¦ ¦ R ¦ R ¦ R ¦| ¦ principal ¦ ¦ ¦ ¦ ¦ +-------------------------------+---------+-------- --+---------+---------¦| ¦ SET TRANSACTION ¦ R ¦ R ¦ R ¦ R ¦ +-------------------------------+---------+-------- --+---------+---------¦| ¦ Sentencias de cursor ¦ R ¦ R ¦ R ¦ R ¦| ¦ desplazable ¦ ¦ ¦ ¦ ¦ +-------------------------------+---------+-------- --+---------+---------¦| ¦ UPDATE cursor - ¦ ¦ ¦ ¦ ¦| ¦ cláusula FOR UPDATE OF no ¦ ¦ ¦ ¦ ¦| ¦ especificada ¦ ¦ ¦ ¦ ¦ +-------------------------------+---------+-------- --+---------+---------¦| ¦ WHENEVER con STOP ¦ R ¦ R ¦ R ¦ R ¦ +-------------------------------------------------- ----------------------¦| ¦ Notas: ¦ ¦ ¦| ¦ 1 El servidor de la aplicación sólo tendrá permitid o realizar ¦| ¦ operaciones de sólo lectura a menos que todas las demás conexiones ¦| ¦ ya sean de sólo lectura. ¦ ¦ ¦| ¦ 2 La sentencia está soportada si el peticionario de la aplicación la ¦| ¦ entiende. ¦ ¦ ¦| ¦ 3 No es necesario que existan los objetos en el mom ento del enlace ¦| ¦ lógico cuando se hace referencia a ellos en un a sentencia de ¦| ¦ manipulación de datos. ¦ +-------------------------------------------------- ----------------------+ +-------------------------------------------------- ----------------------+| ¦ Tabla 41. Peticionario de la aplicación SQL/DS ¦ +-------------------------------------------------- ----------------------¦| ¦ Sentencia o función SQL ¦ DB2 ¦ SQL/DS ¦ DB2 ¦ DB2(cs) ¦| ¦ ¦ para ¦ Applicati¦npara ¦ Applicat¦on| ¦ ¦ MVS ¦ Server ¦ OS/400 ¦ Server ¦| ¦ ¦ Applicat¦on ¦ Applicat¦on ¦| ¦ ¦ Server ¦ ¦ Server ¦ ¦ +-------------------------------+---------+-------- --+---------+---------¦| ¦ CALL ¦ Nota 4 ¦ R ¦ Nota 4 ¦ Nota 4 ¦ +-------------------------------+---------+-------- --+---------+---------¦| ¦ COMMIT HOLD ¦ R ¦ R ¦ R ¦ R ¦ +-------------------------------+---------+-------- --+---------+---------¦| ¦ COMMIT RELEASE ¦ ¦ ¦ ¦ ¦ +-------------------------------+---------+-------- --+---------+---------¦| ¦ CONNECT (Tipo 2) ¦ R ¦ R ¦ R ¦ R ¦ +-------------------------------+---------+-------- --+---------+---------¦| ¦ DECLARE CURSOR WITH HOLD ¦ ¦ R ¦ ¦ ¦ +-------------------------------+---------+-------- --+---------+---------¦| ¦ DECLARE STATEMENT ¦ R ¦ R ¦ R ¦ R ¦ +-------------------------------+---------+-------- --+---------+---------¦| ¦ DECLARE TABLE ¦ R ¦ R ¦ R ¦ R ¦ +-------------------------------+---------+-------- --+---------+---------¦| ¦ DECLARE VARIABLE ¦ R ¦ R ¦ R ¦ R ¦ +-------------------------------+---------+-------- --+---------+---------¦| ¦ Existencia diferida (Nota 2) ¦ ¦ ¦ R ¦ ¦ +-------------------------------+---------+-------- --+---------+---------¦| ¦ DESCRIBE TABLE ¦ R ¦ R ¦ R ¦ R ¦ +-------------------------------+---------+-------- --+---------+---------¦| ¦ DESCRIBE con cláusula USING ¦ ¦ ¦ R ¦ ¦ +-------------------------------+---------+-------- --+---------+---------¦| ¦ DISCONNECT ¦ R ¦ R ¦ R ¦ R ¦ +-------------------------------+---------+-------- --+---------+---------¦| ¦ Sentencias dinámicas ¦ R ¦ ¦ R ¦ R ¦| ¦ ampliadas ¦ Nota 3 ¦ ¦ Nota 3 ¦ Nota 3 ¦ +-------------------------------+---------+-------- --+---------+---------¦| ¦ Variables del lenguaje ¦ R ¦ R ¦ R ¦ R ¦| ¦ principal - dos puntos ¦ ¦ ¦ ¦ ¦| ¦ opcionales ¦ ¦ ¦ ¦ ¦ +-------------------------------+---------+-------- --+---------+---------¦| ¦ Estructuras del lenguaje ¦ ¦ ¦ ¦ ¦| ¦ principal ¦ ¦ ¦ ¦ ¦ +-------------------------------+---------+-------- --+---------+---------¦| ¦ Tipos de datos de objeto ¦ R ¦ R ¦ R ¦ R ¦| ¦ grande (LOB) ¦ ¦ ¦ ¦ ¦ +-------------------------------+---------+-------- --+---------+---------¦| ¦ Declaraciones del lenguaje ¦ Nota 1 ¦ ¦ Nota 1 ¦ Nota 1 ¦| ¦ principal SQL no de IBM ¦ ¦ ¦ ¦ ¦ +-------------------------------+---------+-------- --+---------+---------¦| ¦ PREPARE con la cláusula INTO ¦ R ¦ R ¦ R ¦ R ¦ +-------------------------------+---------+-------- --+---------+---------¦| ¦ PREPARE con la cláusula USING ¦ R ¦ R ¦ R ¦ R ¦ +-------------------------------+---------+-------- --+---------+---------¦| ¦ PUT ¦ ¦ ¦ ¦ ¦ +-------------------------------+---------+-------- --+---------+---------¦| ¦ RELEASE ¦ R ¦ R ¦ R ¦ R ¦ +-------------------------------+---------+-------- --+---------+---------¦| ¦ ROLLBACK HOLD ¦ R ¦ R ¦ R ¦ R ¦ +-------------------------------+---------+-------- --+---------+---------¦| ¦ ROLLBACK RELEASE ¦ ¦ ¦ ¦ ¦ +-------------------------------+---------+-------- --+---------+---------¦| ¦ SET CONNECTION ¦ R ¦ R ¦ R ¦ R ¦

DB2/400 Manual de Consulta SQL V3R7 Apéndice F. Consideraciones para la utilización de la base de datos relacional distribuida

© Copyright IBM Corp. 1995, 1996 F.0 - 2

Page 800: DB2/400 Manual de Consulta SQLmarce.com/docs/systems/manuales/db2_400_manual_consulta_sql_v3r7.pdf · VERSION Nota de Versión Segunda edición (noviembre de 1996) Este manual es

+-------------------------------+---------+-------- --+---------+---------¦| ¦ SET CURRENT PACKAGESET ¦ R ¦ R ¦ R ¦ R ¦ +-------------------------------+---------+-------- --+---------+---------¦| ¦ SET variable del lenguaje ¦ R ¦ R ¦ R ¦ R ¦| ¦ principal ¦ ¦ ¦ ¦ ¦ +-------------------------------+---------+-------- --+---------+---------¦| ¦ SET TRANSACTION ¦ R ¦ R ¦ R ¦ R ¦ +-------------------------------+---------+-------- --+---------+---------¦| ¦ Sentencias de cursor ¦ R ¦ R ¦ R ¦ R ¦| ¦ desplazable ¦ ¦ ¦ ¦ ¦ +-------------------------------+---------+-------- --+---------+---------¦| ¦ UPDATE cursor - ¦ ¦ ¦ ¦ ¦| ¦ cláusula FOR UPDATE OF no ¦ ¦ ¦ ¦ ¦| ¦ especificada ¦ ¦ ¦ ¦ ¦ +-------------------------------+---------+-------- --+---------+---------¦| ¦ WHENEVER con STOP ¦ ¦ ¦ ¦ ¦ +-------------------------------------------------- ----------------------¦| ¦ Notas: ¦ ¦ ¦| ¦ 1 La sentencia está soportada si el peticionario de la aplicación la ¦| ¦ entiende. ¦ ¦ ¦| ¦ 2 No es necesario que existan los objetos en el mom ento del enlace ¦| ¦ lógico cuando se hace referencia a ellos en un a sentencia de ¦| ¦ manipulación de datos. ¦ ¦ ¦| ¦ 3 La mayoría de las sentencias dinámicas ampliadas en las que ¦| ¦ intervengan paquetes no modificables funcionar án. Consulte la ¦| ¦ biblioteca del producto SQL/DS para obtener má s información. ¦ ¦ ¦| ¦ 4 La sentencia CALL sólo funcionará desde un petici onario de la ¦| ¦ aplicación SQL/DS si todos los parámetros son IN. ¦ +-------------------------------------------------- ----------------------+ +-------------------------------------------------- ----------------------+| ¦ Tabla 42. Peticionario de la aplicación de DB2 pa ra OS/400 ¦ +-------------------------------------------------- ----------------------¦| ¦ Sentencia o función SQL ¦ DB2 ¦ SQL/DS ¦ DB2 ¦ DB2(cs) ¦| ¦ ¦ para ¦ Applicati¦npara ¦ Applicat¦on| ¦ ¦ MVS ¦ Server ¦ OS/400 ¦ Server ¦| ¦ ¦ Applicat¦on ¦ Applicat¦on ¦| ¦ ¦ Server ¦ ¦ Server ¦ ¦ +-------------------------------+---------+-------- --+---------+---------¦| ¦ CALL ¦ ¦ R ¦ ¦ ¦ +-------------------------------+---------+-------- --+---------+---------¦| ¦ COMMIT HOLD ¦ R ¦ R ¦ ¦ R ¦ +-------------------------------+---------+-------- --+---------+---------¦| ¦ COMMIT RELEASE ¦ R ¦ R ¦ R ¦ R ¦ +-------------------------------+---------+-------- --+---------+---------¦| ¦ CONNECT (Tipo 2) ¦ ¦ Nota 1 ¦ ¦ ¦ +-------------------------------+---------+-------- --+---------+---------¦| ¦ DECLARE CURSOR WITH HOLD ¦ ¦ R ¦ ¦ ¦ +-------------------------------+---------+-------- --+---------+---------¦| ¦ DECLARE PROCEDURE ¦ ¦ ¦ ¦ ¦ +-------------------------------+---------+-------- --+---------+---------¦| ¦ DECLARE STATEMENT ¦ ¦ ¦ ¦ ¦ +-------------------------------+---------+-------- --+---------+---------¦| ¦ DECLARE TABLE ¦ ¦ ¦ ¦ ¦ +-------------------------------+---------+-------- --+---------+---------¦| ¦ DECLARE VARIABLE ¦ ¦ ¦ ¦ ¦ +-------------------------------+---------+-------- --+---------+---------¦| ¦ Existencia diferida (Nota 3) ¦ ¦ ¦ ¦ R ¦ +-------------------------------+---------+-------- --+---------+---------¦| ¦ DESCRIBE TABLE ¦ ¦ R ¦ ¦ R ¦ +-------------------------------+---------+-------- --+---------+---------¦| ¦ DESCRIBE con cláusula USING ¦ ¦ ¦ ¦ R ¦ +-------------------------------+---------+-------- --+---------+---------¦| ¦ DISCONNECT ¦ ¦ ¦ ¦ ¦ +-------------------------------+---------+-------- --+---------+---------¦| ¦ Sentencias dinámicas ¦ R ¦ R ¦ R ¦ R ¦| ¦ ampliadas ¦ ¦ ¦ ¦ ¦ +-------------------------------+---------+-------- --+---------+---------¦| ¦ Variables del lenguaje ¦ R ¦ R ¦ R ¦ R ¦| ¦ principal - dos puntos ¦ ¦ ¦ ¦ ¦| ¦ opcionales ¦ ¦ ¦ ¦ ¦ +-------------------------------+---------+-------- --+---------+---------¦| ¦ Estructuras del lenguaje ¦ ¦ ¦ ¦ ¦| ¦ principal ¦ ¦ ¦ ¦ ¦ +-------------------------------+---------+-------- --+---------+---------¦| ¦ Tipos de datos de objeto ¦ R ¦ R ¦ R ¦ R ¦| ¦ grande (LOB) ¦ ¦ ¦ ¦ ¦ +-------------------------------+---------+-------- --+---------+---------¦| ¦ Declaraciones del lenguaje ¦ Nota 2 ¦ Nota 2 ¦ ¦ Nota 2 ¦| ¦ principal SQL no de IBM ¦ ¦ ¦ ¦ ¦ +-------------------------------+---------+-------- --+---------+---------¦| ¦ PREPARE con la cláusula INTO ¦ ¦ ¦ ¦ ¦ +-------------------------------+---------+-------- --+---------+---------¦| ¦ PREPARE con la cláusula USING ¦ ¦ ¦ ¦ R ¦ +-------------------------------+---------+-------- --+---------+---------¦| ¦ PUT ¦ R ¦ R ¦ R ¦ R ¦ +-------------------------------+---------+-------- --+---------+---------¦| ¦ RELEASE ¦ ¦ ¦ ¦ ¦ +-------------------------------+---------+-------- --+---------+---------¦| ¦ ROLLBACK HOLD ¦ R ¦ R ¦ ¦ R ¦ +-------------------------------+---------+-------- --+---------+---------¦| ¦ ROLLBACK RELEASE ¦ R ¦ R ¦ R ¦ R ¦ +-------------------------------+---------+-------- --+---------+---------¦

DB2/400 Manual de Consulta SQL V3R7 Apéndice F. Consideraciones para la utilización de la base de datos relacional distribuida

© Copyright IBM Corp. 1995, 1996 F.0 - 3

Page 801: DB2/400 Manual de Consulta SQLmarce.com/docs/systems/manuales/db2_400_manual_consulta_sql_v3r7.pdf · VERSION Nota de Versión Segunda edición (noviembre de 1996) Este manual es

| ¦ SET CONNECTION ¦ ¦ ¦ ¦ ¦ +-------------------------------+---------+-------- --+---------+---------¦| ¦ SET CURRENT PACKAGESET ¦ R ¦ R ¦ R ¦ R ¦ +-------------------------------+---------+-------- --+---------+---------¦| ¦ SET variable del lenguaje ¦ R ¦ R ¦ R ¦ R ¦| ¦ principal ¦ ¦ ¦ ¦ ¦ +-------------------------------+---------+-------- --+---------+---------¦| ¦ SET TRANSACTION ¦ R ¦ R ¦ ¦ R ¦ +-------------------------------+---------+-------- --+---------+---------¦| ¦ Sentencias de cursor ¦ R ¦ R ¦ ¦ R ¦| ¦ desplazable ¦ ¦ ¦ ¦ ¦ +-------------------------------+---------+-------- --+---------+---------¦| ¦ UPDATE cursor - ¦ R ¦ R ¦ ¦ ¦| ¦ cláusula FOR UPDATE OF no ¦ ¦ ¦ ¦ ¦| ¦ especificada ¦ ¦ ¦ ¦ ¦ +-------------------------------+---------+-------- --+---------+---------¦| ¦ WHENEVER con STOP ¦ R ¦ R ¦ R ¦ R ¦ +-------------------------------------------------- ----------------------¦| ¦ Notas: ¦ ¦ ¦| ¦ 1 El servidor de la aplicación sólo tendrá permitid o realizar ¦| ¦ operaciones de sólo lectura a menos que todas las demás conexiones ¦| ¦ ya sean de sólo lectura. ¦ ¦ ¦| ¦ 2 La sentencia está soportada si el peticionario de la aplicación la ¦| ¦ entiende. ¦ ¦ ¦| ¦ 3 No es necesario que existan los objetos en el mom ento del enlace ¦| ¦ lógico cuando se hace referencia a ellos en un a sentencia de ¦| ¦ manipulación de datos. ¦ +-------------------------------------------------- ----------------------+ +-------------------------------------------------- ----------------------+| ¦ Tabla 43. Peticionario de la aplicación de DB2(cs ) ¦ +-------------------------------------------------- ----------------------¦| ¦ Sentencia o función SQL ¦ DB2 ¦ SQL/DS ¦ DB2 ¦ DB2(cs) ¦| ¦ ¦ para ¦ Applicati¦npara ¦ Applicat¦on| ¦ ¦ MVS ¦ Server ¦ OS/400 ¦ Server ¦| ¦ ¦ Applicat¦on ¦ Applicat¦on ¦| ¦ ¦ Server ¦ ¦ Server ¦ ¦ +-------------------------------+---------+-------- --+---------+---------¦| ¦ CALL ¦ ¦ R ¦ ¦ ¦ +-------------------------------+---------+-------- --+---------+---------¦| ¦ COMMIT HOLD ¦ R ¦ R ¦ R ¦ R ¦ +-------------------------------+---------+-------- --+---------+---------¦| ¦ COMMIT RELEASE ¦ R ¦ R ¦ R ¦ R ¦ +-------------------------------+---------+-------- --+---------+---------¦| ¦ CONNECT (Tipo 2) ¦ ¦ Nota 1 ¦ ¦ ¦ +-------------------------------+---------+-------- --+---------+---------¦| ¦ DECLARE CURSOR WITH HOLD ¦ ¦ R ¦ ¦ ¦ +-------------------------------+---------+-------- --+---------+---------¦| ¦ DECLARE STATEMENT ¦ R ¦ R ¦ R ¦ R ¦ +-------------------------------+---------+-------- --+---------+---------¦| ¦ DECLARE TABLE ¦ R ¦ R ¦ R ¦ R ¦ +-------------------------------+---------+-------- --+---------+---------¦| ¦ DECLARE VARIABLE ¦ R ¦ R ¦ R ¦ R ¦ +-------------------------------+---------+-------- --+---------+---------¦| ¦ Existencia diferida (Nota 3) ¦ ¦ ¦ ¦ R ¦ +-------------------------------+---------+-------- --+---------+---------¦| ¦ DESCRIBE TABLE ¦ R ¦ R ¦ R ¦ R ¦ +-------------------------------+---------+-------- --+---------+---------¦| ¦ DESCRIBE con cláusula USING ¦ R ¦ R ¦ R ¦ R ¦ +-------------------------------+---------+-------- --+---------+---------¦| ¦ DISCONNECT ¦ ¦ ¦ ¦ ¦ +-------------------------------+---------+-------- --+---------+---------¦| ¦ Sentencias dinámicas ¦ R ¦ R ¦ R ¦ R ¦| ¦ ampliadas ¦ ¦ ¦ ¦ ¦ +-------------------------------+---------+-------- --+---------+---------¦| ¦ Variables del lenguaje ¦ R ¦ R ¦ R ¦ R ¦| ¦ principal - dos puntos ¦ ¦ ¦ ¦ ¦| ¦ opcionales ¦ ¦ ¦ ¦ ¦ +-------------------------------+---------+-------- --+---------+---------¦| ¦ Estructuras del lenguaje ¦ Nota 4 ¦ Nota 4 ¦ Nota 4 ¦ Nota 4 ¦| ¦ principal ¦ ¦ ¦ ¦ ¦ +-------------------------------+---------+-------- --+---------+---------¦| ¦ Tipos de datos de objeto ¦ R ¦ R ¦ R ¦ ¦| ¦ grande (LOB) ¦ ¦ ¦ ¦ ¦ +-------------------------------+---------+-------- --+---------+---------¦| ¦ Declaraciones del lenguaje ¦ Nota 2 ¦ Nota 2 ¦ Nota 2 ¦ ¦| ¦ principal SQL no de IBM ¦ ¦ ¦ ¦ ¦ +-------------------------------+---------+-------- --+---------+---------¦| ¦ PREPARE con la cláusula INTO ¦ ¦ ¦ ¦ ¦ +-------------------------------+---------+-------- --+---------+---------¦| ¦ PREPARE con la cláusula USING ¦ R ¦ R ¦ R ¦ R ¦ +-------------------------------+---------+-------- --+---------+---------¦| ¦ PUT ¦ R ¦ R ¦ R ¦ R ¦ +-------------------------------+---------+-------- --+---------+---------¦| ¦ RELEASE ¦ ¦ ¦ ¦ ¦ +-------------------------------+---------+-------- --+---------+---------¦| ¦ ROLLBACK HOLD ¦ R ¦ R ¦ R ¦ R ¦ +-------------------------------+---------+-------- --+---------+---------¦| ¦ ROLLBACK RELEASE ¦ R ¦ R ¦ R ¦ R ¦ +-------------------------------+---------+-------- --+---------+---------¦| ¦ SET CONNECTION ¦ ¦ ¦ ¦ ¦ +-------------------------------+---------+-------- --+---------+---------¦| ¦ SET CURRENT PACKAGESET ¦ ¦ ¦ ¦ ¦ +-------------------------------+---------+-------- --+---------+---------¦

DB2/400 Manual de Consulta SQL V3R7 Apéndice F. Consideraciones para la utilización de la base de datos relacional distribuida

© Copyright IBM Corp. 1995, 1996 F.0 - 4

Page 802: DB2/400 Manual de Consulta SQLmarce.com/docs/systems/manuales/db2_400_manual_consulta_sql_v3r7.pdf · VERSION Nota de Versión Segunda edición (noviembre de 1996) Este manual es

| ¦ SET variable del lenguaje ¦ R ¦ R ¦ R ¦ R ¦| ¦ principal ¦ ¦ ¦ ¦ ¦ +-------------------------------+---------+-------- --+---------+---------¦| ¦ SET TRANSACTION ¦ R ¦ R ¦ R ¦ R ¦ +-------------------------------+---------+-------- --+---------+---------¦| ¦ Sentencias de cursor ¦ R ¦ R ¦ R ¦ R ¦| ¦ desplazable ¦ ¦ ¦ ¦ ¦ +-------------------------------+---------+-------- --+---------+---------¦| ¦ UPDATE cursor - ¦ R ¦ R ¦ ¦ ¦| ¦ cláusula FOR UPDATE OF no ¦ ¦ ¦ ¦ ¦| ¦ especificada ¦ ¦ ¦ ¦ ¦ +-------------------------------+---------+-------- --+---------+---------¦| ¦ WHENEVER con STOP ¦ R ¦ R ¦ R ¦ R ¦ +-------------------------------------------------- ----------------------¦| ¦ Notas: ¦ ¦ ¦| ¦ 1 El servidor de la aplicación sólo tendrá permitid o realizar ¦| ¦ operaciones de sólo lectura a menos que todas las demás conexiones ¦| ¦ ya sean de sólo lectura. ¦ ¦ ¦| ¦ 2 La sentencia está soportada si el peticionario de la aplicación la ¦| ¦ entiende. ¦ ¦ ¦| ¦ 3 No es necesario que existan los objetos en el mom ento del enlace ¦| ¦ lógico cuando se hace referencia a ellos en un a sentencia de ¦| ¦ manipulación de datos. ¦ ¦ ¦| ¦ 4 En DB2(cs) las estructuras del lenguaje principal sólo se soportan ¦| ¦ en COBOL. ¦ +-------------------------------------------------- ----------------------+ Subtemas F.1 Diferencias entre CONNECT (Tipo 1) y CONNECT (Tipo 2)

DB2/400 Manual de Consulta SQL V3R7 Apéndice F. Consideraciones para la utilización de la base de datos relacional distribuida

© Copyright IBM Corp. 1995, 1996 F.0 - 5

Page 803: DB2/400 Manual de Consulta SQLmarce.com/docs/systems/manuales/db2_400_manual_consulta_sql_v3r7.pdf · VERSION Nota de Versión Segunda edición (noviembre de 1996) Este manual es

F.1 Diferencias entre CONNECT (Tipo 1) y CONNECT (T ipo 2) Hay dos tipos de sentencias CONNECT. Tienen la mis ma sintaxis, pero diferente semántica: � CONNECT (tipo 1) se utiliza para unidades de tra bajo remotas. Véase el apartado "Unidad de trabajo remota" en el tema 1.20.3 . � CONNECT (tipo 2) se utiliza para unidades de tra bajo distribuidas. Consulte el apartado "CONNECT (Tipo 2)" en el tema 5.11 . En las tablas siguientes se resumen las diferencias que existen entre las reglas de CONNECT (Tipo 1) y CONNECT (Tipo 2): +-------------------------------------------------- ----------------------+ ¦ Tabla 44. Diferencias entre CONNECT (Tipo 1) y CO NNECT (Tipo 2) ¦ +-------------------------------------------------- ----------------------¦ ¦ Reglas para Tipo 1 ¦ Reglas para Tipo 2 ¦ +------------------------------------+------------- ----------------------¦ ¦ Las sentencias CONNECT sólo pueden ¦ No existen r eglas sobre el estado ¦ ¦ ejecutarse cuando el grupo de ¦ conectable. Se puede ejecutar ¦ ¦ activación está en el estado ¦ más de una s entencia CONNECT ¦ ¦ conectable. No se puede ejecutar ¦ dentro de la misma unidad de ¦ ¦ más de una sentencia CONNECT ¦ trabajo. ¦ ¦ dentro de la misma unidad de ¦ ¦ ¦ trabajo. ¦ ¦ +------------------------------------+------------- ----------------------¦ ¦ Si falla la sentencia CONNECT ¦ Si falla una sentencia CONNECT, ¦ ¦ porque el nombre de servidor no ¦ la conexión SQL actual no cambia ¦ ¦ consta en la lista del directorio ¦ y cualquier sentencia SQL ¦ ¦ local, el estado conexión del ¦ posterior la ejecutará el ¦ ¦ grupo de activación no cambia. ¦ servidor act ual. ¦ ¦ ¦ ¦ ¦ Si falla porque el grupo de ¦ ¦ ¦ activación no está en el estado ¦ ¦ ¦ conectable, el estado conexión SQL ¦ ¦ ¦ del grupo de activación no cambia. ¦ ¦ ¦ ¦ ¦ ¦ Si falla por cualquier otra razón, ¦ ¦ ¦ el grupo de activación se coloca ¦ ¦ ¦ en el estado no conectado. ¦ ¦ +------------------------------------+------------- ----------------------¦ ¦ CONNECT finaliza todas las ¦ CONNECT no f inaliza las ¦ ¦ conexiones existentes del grupo de ¦ conexiones y no cierra los ¦ ¦ activación. En consecuencia, ¦ cursores. ¦ ¦ CONNECT también cierra todos los ¦ ¦ ¦ cursores abiertos para dicho grupo ¦ ¦ ¦ de activación. ¦ ¦ +------------------------------------+------------- ----------------------¦ ¦ Una CONNECT para el servidor ¦ Una sentenci a CONNECT emitida a ¦ ¦ actual será satisfactoria si el ¦ una conexión SQL existente del ¦ ¦ grupo de aplicación es el estado ¦ grupo de act ivación es un error. ¦ ¦ conectable. ¦ Por tanto, u na CONNECT con el ¦ ¦ ¦ servidor act ual es un error. ¦ +-------------------------------------------------- ----------------------+ Determinar qué reglas de CONNECT son las que rigen : Para especificar el tipo de operación CONNECT que realizará un programa , se utiliza una opción de preparación de programa. La opción de preparaci ón del programa se especifica utilizando el parámetro RDBCNNMTH en el mandato CRTSQLxxx o utilizando la sentencia SET OPTION para REXX. Conexión a servidores de la aplicación que sólo den soporte a unidades de trabajo remotas : Las conexiones CONNECT (Tipo 2) a servidores de la aplicación que sólo den soporte a unidades de traba jo remotas pueden dar como resultado conexiones que sean de sólo lectura. Si se realiza una operación CONNECT (Tipo 2) a un s ervidor de la aplicación que sólo dé soporte a unidades de trabaj o remotas: � La conexión permite operaciones de sólo lectura si, en el momento de la conexión, hay conexiones latentes que permit en actualizaciones. En este caso, la conexión no permite las actualiza ciones. � En caso contrario, la conexión permite actualiza ciones. Si se realiza una operación CONNECT (Tipo 2) a un s ervidor de la aplicación que da soporte a unidades de trabajo dis tribuidas: � La conexión permite las operaciones de sólo lect ura cuando hay conexiones latentes que permiten actualizacione s a servidores de la aplicación que sólo den soporte a unidades de t rabajo remotas. En este caso, la conexión permitirá las actualizac iones tan pronto como finalice la conexión latente. � En caso contrario, la conexión permite actualiza ciones.

DB2/400 Manual de Consulta SQL V3R7 Diferencias entre CONNECT (Tipo 1) y CONNECT (Tipo 2)

© Copyright IBM Corp. 1995, 1996 F.1 - 1

Page 804: DB2/400 Manual de Consulta SQLmarce.com/docs/systems/manuales/db2_400_manual_consulta_sql_v3r7.pdf · VERSION Nota de Versión Segunda edición (noviembre de 1996) Este manual es

G.0 Apéndice G. Excepciones a los estándares DB2 para OS/400 se ajusta al Nivel de entrada de lo s siguientes estándares con muy pocas omisiones: � ISO (Organización Internacional de Estándares) 9 075-1992(E) � ANS (Estándar Nacional Americano) X3.135-1992 � FIPS (Estándar para el Proceso de Información Fe deral) 127-2 SQL de IBM es un superconjunto de Nivel de entrada en los estándares anteriores. DB2 para OS/400 también se ajusta a SQ L de IBM con unas cuantas omisiones adicionales. Subtemas G.1 Nivel de entrada ANS/ISO/FIPS 1992 G.2 SQL de IBM

DB2/400 Manual de Consulta SQL V3R7 Apéndice G. Excepciones a los estándares

© Copyright IBM Corp. 1995, 1996 G.0 - 1

Page 805: DB2/400 Manual de Consulta SQLmarce.com/docs/systems/manuales/db2_400_manual_consulta_sql_v3r7.pdf · VERSION Nota de Versión Segunda edición (noviembre de 1996) Este manual es

G.1 Nivel de entrada ANS/ISO/FIPS 1992 Los siguientes elementos son omisiones de DB2 para OS/400 del nivel de entrada ANS/ISO/FIPS 1992: � Los privilegios UPDATE y REFERENCES en una colum na � Restricciones CHECK � DEFAULT USER para una columna

DB2/400 Manual de Consulta SQL V3R7 Nivel de entrada ANS/ISO/FIPS 1992

© Copyright IBM Corp. 1995, 1996 G.1 - 1

Page 806: DB2/400 Manual de Consulta SQLmarce.com/docs/systems/manuales/db2_400_manual_consulta_sql_v3r7.pdf · VERSION Nota de Versión Segunda edición (noviembre de 1996) Este manual es

G.2 SQL de IBM Además de los elementos del Nivel de entrada ANS/IS O/FIPS 1992 anteriores, los siguientes elementos son omisiones y diferencia s de DB2/400 con respecto a SQL de IBM: � Omisiones: - El argumento numérico de la función escalar CHAR. - GRAPHIC y CONTROLLED en PL/I � Diferencias: - Los desplazamientos a teclado redundantes s on significativos en los predicados LIKE. - En una comparación, si una serie es SBCS y la otra es de datos mixtos, la conversión no siempre se realiza en la serie SBCS.

DB2/400 Manual de Consulta SQL V3R7 SQL de IBM

© Copyright IBM Corp. 1995, 1996 G.2 - 1

Page 807: DB2/400 Manual de Consulta SQLmarce.com/docs/systems/manuales/db2_400_manual_consulta_sql_v3r7.pdf · VERSION Nota de Versión Segunda edición (noviembre de 1996) Este manual es

H.0 Apéndice H. Vistas de catálogo de DB2 para OS/ 400 En este apartado se describen las vistas que se inc luyen en un catálogo DB2 para OS/400. El gestor de bases de datos manti ene un conjunto de tablas que contienen información acerca de los dato s de la base de datos. Estas tablas se conocen colectivamente con el nombr e de catálogo . Las tablas de catálogo contienen información acerca de tablas, parámetros , procedimientos, paquetes, vistas, índices y restric ciones del sistema AS/400. Las tablas de catálogo incluyen los siguie ntes archivos de la biblioteca QSYS: � QADBXREF � QADBPKG � QADBFDEP � QADBXRDBD � QADBFCST � QADBCCST � QADBIFLD � QADBKFLD Las tablas de catálogo también incluyen los siguien tes archivos en la biblioteca QSYS2: � SQL_LANGUAGES � SYSPARMS � SYSPROCS A diferencia de las demás tablas de catálogo de QSY S, estas tablas de catálogo no se pueden poblar desde objetos del sist ema. Por tanto, deberá salvarlas con regularidad. El gestor de bases de datos facilita vistas sobre l as tablas del catálogo. Las vistas proporcionan una mayor coherencia con la s vistas del catálogo de otros productos SQL de IBM y las vistas del catá logo del estándar ANSI e ISO (llamado esquema de información en el estánda r). A excepción de SYSINDEXES, SYSKEYS y SYSPACKAGES, c ada una de las siguientes vistas de catálogo tiene su vista corres pondiente definida en el Esquema de información. El catálogo incluye las siguientes vistas y tablas en la biblioteca QSYS2: +-------------------------------------------------- --------------------------------------------------- -------+ ¦ Nombre DB2 para ¦ Nombre ANSI/ISO ¦ Descripción ¦ ¦ OS/400 ¦ ¦ ¦ +-----------------+-------------------------------- ----+---------------------------------------------- -------¦ ¦ SQL_LANGUAGES ¦ SQL_LANGUAGES ¦ Información acerca de los lenguajes a los que se da ¦ ¦ ¦ ¦ soporte ¦ +-----------------+-------------------------------- ----+---------------------------------------------- -------¦ ¦ SYSCOLUMNS ¦ COLUMNS ¦ Información sobre atributos de columna ¦ +-----------------+-------------------------------- ----+---------------------------------------------- -------¦ ¦ SYSCST ¦ TABLE_CONSTRAINTS ¦ Información sobre todas las restricciones ¦ +-----------------+-------------------------------- ----+---------------------------------------------- -------¦ ¦ SYSCSTCOL ¦ CONSTRAINT_COLUMN_USAGE ¦ Información sobre las columnas a las que se h ace ¦ ¦ ¦ ¦ referencia en una restricción ¦ +-----------------+-------------------------------- ----+---------------------------------------------- -------¦ ¦ SYSCSTDEP ¦ CONSTRAINT_TABLE_USAGE ¦ Información sobre las dependencias de restric ción ¦ ¦ ¦ ¦ en las tablas ¦ +-----------------+-------------------------------- ----+---------------------------------------------- -------¦ ¦ SYSINDEXES ¦ ¦ Información sobre índices ¦ +-----------------+-------------------------------- ----+---------------------------------------------- -------¦ ¦ SYSKEYCST ¦ KEY_COLUMN_USAGE ¦ Información sobre claves exclusivas, primaria s y ¦ ¦ ¦ ¦ foráneas ¦ +-----------------+-------------------------------- ----+---------------------------------------------- -------¦ ¦ SYSKEYS ¦ ¦ Información sobre claves de índice ¦ +-----------------+-------------------------------- ----+---------------------------------------------- -------¦ ¦ SYSPACKAGE ¦ ¦ Información sobre paquetes ¦ +-----------------+-------------------------------- ----+---------------------------------------------- -------¦ ¦ SYSPARMS ¦ PARAMETERS ¦ Información acerca de parámetros de procedimi ento ¦ +-----------------+-------------------------------- ----+---------------------------------------------- -------¦ ¦ SYSPROCS ¦ ROUTINES ¦ Información acerca de procedimientos ¦ +-----------------+-------------------------------- ----+---------------------------------------------- -------¦ ¦ SYSREFCST ¦ REFERENTIAL_CONSTRAINTS ¦ Información sobre restricciones de referencia ¦ +-----------------+-------------------------------- ----+---------------------------------------------- -------¦ ¦ SYSTABLES ¦ TABLES ¦ Información sobre tablas y vistas ¦ +-----------------+-------------------------------- ----+---------------------------------------------- -------¦ ¦ SYSVIEWDEP ¦ VIEW_TABLE_USAGE ¦ Información sobre dependencias de vista en la s ¦ ¦ ¦ ¦ tablas ¦ +-----------------+-------------------------------- ----+---------------------------------------------- -------¦ ¦ SYSVIEWS ¦ VIEWS ¦ Información sobre la definición de una vista ¦ +-------------------------------------------------- --------------------------------------------------- -------+ Las vistas de catálogo de la biblioteca QSYS2 conti enen información acerca de todas las tablas, parámetros, procedimientos, pa quetes, vistas, índices y restricciones del sistema AS/400. De forma adici onal, una colección SQL contendrá un conjunto de estas vistas (excepto SQL_ LANGUAGES, SYSPARMS y SYSPROCS) que sólo contenga información acerca de t ablas, paquetes, vistas, índices y restricciones de la colección. Las tablas y vistas del catálogo son como cualquier otra tabla y vista de base de datos. Si dispone de la autorización neces aria, puede utilizar sentencias SQL para consultar los datos de las vist as del catálogo de la misma manera que recuperaría datos de cualquier otr a tabla del sistema AS/400. El gestor de bases de datos garantiza que el catálogo contenga descripciones precisas de los objetos de la base de datos en todo momento. Subtemas H.1 Notas H.2 SQL_LANGUAGES

DB2/400 Manual de Consulta SQL V3R7 Apéndice H. Vistas de catálogo de DB2 para OS/400

© Copyright IBM Corp. 1995, 1996 H.0 - 1

Page 808: DB2/400 Manual de Consulta SQLmarce.com/docs/systems/manuales/db2_400_manual_consulta_sql_v3r7.pdf · VERSION Nota de Versión Segunda edición (noviembre de 1996) Este manual es

H.3 SYSCOLUMNS H.4 SYSCST H.5 SYSCSTCOL H.6 SYSCSTDEP H.7 SYSINDEXES H.8 SYSKEYCST H.9 SYSKEYS H.10 SYSPACKAGE H.11 SYSPARMS H.12 SYSPROCS H.13 SYSREFCST H.14 SYSTABLES H.15 SYSVIEWDEP H.16 SYSVIEWS

DB2/400 Manual de Consulta SQL V3R7 Apéndice H. Vistas de catálogo de DB2 para OS/400

© Copyright IBM Corp. 1995, 1996 H.0 - 2

Page 809: DB2/400 Manual de Consulta SQLmarce.com/docs/systems/manuales/db2_400_manual_consulta_sql_v3r7.pdf · VERSION Nota de Versión Segunda edición (noviembre de 1996) Este manual es

H.1 Notas � Las colecciones que se crearon antes de la Versi ón 2 Release 1.1 no tienen la vista de catálogo SYSPACKAGE, a menos que se haya creado un paquete SQL en la colección. � Las colecciones que se crearon antes de la Versi ón 3 Release 1 no tienen las vistas de catálogo SYSCST, SYSCSTCOL , SYSCSTDEP, SYSKEYCST y SYSREFCST, a menos que se haya añadido una re stricción a una tabla o se haya creado una tabla con una restricción en la colección utilizando SQL. � Las columnas adicionales se añadieron a las vist as de catálogo SYSCOLUMNS, SYSINDEXES, SYSKEYS, SYSPACKAGE, SY STABLES, SYSVIEWDEP y SYSVIEW en la Versión 3 Release 1. Si la colec ción se creó antes de este release, no todas las columnas que se desc riben más adelante se encuentran en las vistas de catálogo. � El formato de algunas de las columnas ha cambiad o en la Versión 3 Release 1. Estos son algunos de los cambios: - Se han añadido columnas que muestran la cor relación entre los nombres SQL y los nombres del sistema. - Todas las columnas de nombre (identificador ) son VARCHAR(128). Esto se ajusta al esquema de información de ANS/ISO. - Los nombres delimitados no contienen los de limitadores, a excepción de las columnas de nombre de sist ema. Por ejemplo, si se ha creado la siguiente tabla: CREATE TABLE "nombcol"/"nomb_tabla_larg" ("nomb_columna_larg" CHAR(10), INTCOL INTEGER) Para devolver información acerca de la correlac ión entre nombres SQL y nombres del sistema, se utilizará la siguiente sentencia select: SELECT TABLE_NAME, SYSTEM_TABLE_NAME, COLUMN_NAME, SYSTEM_COLUMN_NAME FROM QSYS2/SYSCOLUMNS WHERE TABLE_NAME = 'nomb_tabla_larg' AND TABLE_SCHEMA = 'nombcol' Se devolverán las siguientes filas: +-------------------------------------------------- --------------------------------------------------- -------+ ¦ TABLE_NAME ¦ SYSTEM_TABLE_NAME ¦ COLUMN_NAME ¦ SYSTEM_COLUMN_NAME ¦ +--------------------------+----------------------- ----+--------------------------+------------------- -------¦ ¦ nomb_tabla_larg ¦ "long0001" ¦ nomb_columna_larg ¦ LONG_00001 ¦ +--------------------------+----------------------- ----+--------------------------+------------------- -------¦ ¦ nomb_tabla_larg ¦ "long0001" ¦ INTCOL ¦ INTCOL ¦ +-------------------------------------------------- --------------------------------------------------- -------+ � Si la información de la columna no es aplicable, se devuelve el valor nulo. Utilizando la tabla creada anteriormente, la si guiente sentencia select, que consulta a NUMERIC_SCALE y CHARACTE R_MAXIMUM_LENGTH, devolverá el valor nulo cuando los datos no sea n aplicables al tipo de datos de la columna. SELECT COLUMN_NAME, NUMERIC_SCALE, CHARACTER_MAXIMUM_LENGTH FROM QSYS2/SYSCOLUMNS WHERE TABLE_NAME = 'nomb_tabla_larg' AND TABLE_SCHEMA = 'nombcol' Se devolverán las siguientes filas: +-------------------------------------------------- --------------------------------------------------- -------+ ¦ COLUMN_NAME ¦ NUMERIC_SCALE ¦ CHARACTER_MAXIMUM_LENGTH ¦ +------------------------------+------------------- -----------+--------------------------------------- -------¦ ¦ nomb_columna_larg ¦ ? ¦ 10 ¦ +------------------------------+------------------- -----------+--------------------------------------- -------¦ ¦ INTCOL ¦ 0 ¦ ? ¦ +-------------------------------------------------- --------------------------------------------------- -------+ Puesto que la escala numérica no es válida para una columna de caracteres, se devuelve el valor nulo para NUME RIC_SCALE en la columna "nomb_columna_larg". Puesto que la longitud de carácter no es válida para una columna numérica, se devuelve el valor nulo para CHARACTER_MAXIMUM_LENGTH en la columna INTCOL. � CREATE VIEW se almacena utilizando la denominaci ón SQL. Sólo se almacena la parte de la sentencia-select de la vista. Las vistas de catálogo del sistema de la biblioteca QSYS2 son objetos del sistema. Esto significa que toda vista de usuario creada sobre las vistas de catálogo en la biblioteca QSYS2 debe eliminarse cuando se instale el sistema operativo. También deberán eliminarse todo s los objetos dependientes. Para evitar este requisito, puede sa lvar las vistas antes de la instalación y restaurarlas más adelante. Las vistas se pueden crear sobre los mismos archivos de la biblioteca QSYS sob re los que se han creado las vistas de catálogo. Estos archivos de r eferencia cruzada de la biblioteca QSYS no se eliminan durante la instalaci ón. Por tanto, toda vista creada sobre ellos se mantendrá a lo largo de l proceso de instalación.

DB2/400 Manual de Consulta SQL V3R7 Notas

© Copyright IBM Corp. 1995, 1996 H.1 - 1

Page 810: DB2/400 Manual de Consulta SQLmarce.com/docs/systems/manuales/db2_400_manual_consulta_sql_v3r7.pdf · VERSION Nota de Versión Segunda edición (noviembre de 1996) Este manual es

H.2 SQL_LANGUAGES La tabla SQL_LANGUAGES (nombre del sistema SYSLANGS ) contiene una fila para cada enlace de lenguaje SQL y lenguaje de prog ramación para los que se requiera conformidad. La siguiente tabla descri be las columnas de la vista SQL_LANGUAGES: +-------------------------------------------------- --------------------------------------------------- -------+ ¦ Tabla 45. Vista SQL_LANGUAGES ¦ +-------------------------------------------------- --------------------------------------------------- -------¦ ¦ Nombre de columna ¦ Nombre de ¦ Tipo de datos ¦ Descripción ¦ ¦ ¦ columna del ¦ ¦ ¦ ¦ ¦ sistema ¦ ¦ ¦ +------------------------+----------------+-------- --------+------------------------------------------ -------¦ ¦ SQL_LANGUAGE_SOURCE ¦ ORIGEN ¦ VARCHAR (254) ¦ Nombre del estándar. ¦ +------------------------+----------------+-------- --------+------------------------------------------ -------¦ ¦ SQL_LANGUAGE_YEAR ¦ SOURCEYEAR ¦ VARCHAR (254) ¦ Año en que se aprobó el estándar. ¦ ¦ ¦ ¦ con ¦ ¦ ¦ ¦ ¦ posibil idad de ¦ ¦ ¦ ¦ ¦ nulos ¦ ¦ +------------------------+----------------+-------- --------+------------------------------------------ -------¦ ¦ SQL_LANGUAGE_CONFORMANC¦ CONFORM ¦ VARCHAR (254) ¦ Nivel de conformidad. Si no se requiere ¦ ¦ ¦ ¦ con ¦ conformidad, el valor de esta columna es nulo. ¦ ¦ ¦ ¦ posibil idad de ¦ ¦ ¦ ¦ ¦ nulos ¦ YES Se requiere conformidad ¦ ¦ ¦ ¦ ¦ NO No se requiere conformidad ¦ ¦ ¦ ¦ ¦ nulo Los lenguajes no requieren o definen ¦ ¦ ¦ ¦ ¦ conformidad ¦ +------------------------+----------------+-------- --------+------------------------------------------ -------¦ ¦ SQL_LANGUAGE_INTEGRITY ¦ INTEGRITY ¦ VARCHAR (254) ¦ Soporte de la característica de integrida d. ¦ ¦ ¦ ¦ con ¦ ¦ ¦ ¦ ¦ posibil idad de ¦ Nivel de conformidad. Si no se requiere ¦ ¦ ¦ ¦ nulos ¦ conformidad, el valor de esta columna es nulo. ¦ ¦ ¦ ¦ ¦ ¦ ¦ ¦ ¦ ¦ YES Se requiere conformidad para la ¦ ¦ ¦ ¦ ¦ característica de integridad ¦ ¦ ¦ ¦ ¦ NO No se requiere conformidad para la ¦ ¦ ¦ ¦ ¦ característica de integridad ¦ ¦ ¦ ¦ ¦ nulo El lenguaje no da soporte a la ¦ ¦ ¦ ¦ ¦ característica de integridad ¦ +------------------------+----------------+-------- --------+------------------------------------------ -------¦ ¦ SQL_LANGUAGE_IMPLEMENTA¦IIMPLEMENT ¦ VARCHAR (254) ¦ Siempre será el valor nulo. ¦ ¦ ¦ ¦ con ¦ ¦ ¦ ¦ ¦ posibil idad de ¦ ¦ ¦ ¦ ¦ nulos ¦ ¦ +------------------------+----------------+-------- --------+------------------------------------------ -------¦ ¦ SQL_LANGUAGE_BINDING_ST¦LBINDSTYLE ¦ VARCHAR (254) ¦ El estilo de enlazar del lenguaje SQL ¦ ¦ ¦ ¦ con ¦ ¦ ¦ ¦ ¦ posibil idad de ¦ EMBEDDED Soporte para SQL hospedado para el ¦ ¦ ¦ ¦ nulos ¦ lenguaje en SQL_LANGUAGE_PROGRAMMING_L ANG ¦ ¦ ¦ ¦ ¦ DIRECT Se da soporte a DIRECT SQL (por ej emplo ¦ ¦ ¦ ¦ ¦ SQL interactivo) ¦ ¦ ¦ ¦ ¦ CLI Soporte para CLI para el lenguaje en ¦ ¦ ¦ ¦ ¦ SQL_LANGUAGE_PROGRAMMING_LANG ¦ +------------------------+----------------+-------- --------+------------------------------------------ -------¦ ¦ SQL_LANGUAGE_PROGRAMMIN¦_LANG ¦ VARCHAR (254) ¦ El lenguaje al que da soporte EMBEDDED o CLI. ¦ ¦ ¦ ¦ con ¦ ¦ ¦ ¦ ¦ posibil idad de ¦ Los lenguajes a los que se da soporte son C, ¦ ¦ ¦ ¦ nulos ¦ COBOL, FORTRAN y PLI. ¦ +-------------------------------------------------- --------------------------------------------------- -------+

DB2/400 Manual de Consulta SQL V3R7 SQL_LANGUAGES

© Copyright IBM Corp. 1995, 1996 H.2 - 1

Page 811: DB2/400 Manual de Consulta SQLmarce.com/docs/systems/manuales/db2_400_manual_consulta_sql_v3r7.pdf · VERSION Nota de Versión Segunda edición (noviembre de 1996) Este manual es

H.3 SYSCOLUMNS La vista SYSCOLUMNS contiene una fila para cada una de las columnas de las tablas y vistas de la colección SQL (incluidas las columnas del catálogo SQL). La siguiente tabla describe las columnas de la vista SYSCOLUMNS: +-------------------------------------------------- --------------------------------------------------- -------+ ¦ Tabla 46. Vista SYSCOLUMNS ¦ +-------------------------------------------------- --------------------------------------------------- -------¦ ¦ Nombre de columna ¦ Nombre de ¦ Tipo de datos ¦ Descripción ¦ ¦ ¦ columna del ¦ ¦ ¦ ¦ ¦ sistema ¦ ¦ ¦ +------------------------+----------------+-------- --------+------------------------------------------ -------¦ ¦ COLUMN_NAME ¦ NAME ¦ VARCHAR (128) ¦ Nombre de la columna. Será el nombre de ¦ ¦ ¦ ¦ ¦ columna SQL en caso que exista; de lo ¦ ¦ ¦ ¦ ¦ contrario, será el nombre de columna del ¦ ¦ ¦ ¦ ¦ sistema. ¦ +------------------------+----------------+-------- --------+------------------------------------------ -------¦ ¦ TABLE_NAME ¦ TBNAME ¦ VARCHAR (128) ¦ Nombre de la tabla o vista que contiene l a ¦ ¦ ¦ ¦ ¦ columna. Será el nombre de vista o de ta bla ¦ ¦ ¦ ¦ ¦ SQL en caso que exista; de lo contrario, será ¦ ¦ ¦ ¦ ¦ el nombre de vista o de tabla del sistema . ¦ +------------------------+----------------+-------- --------+------------------------------------------ -------¦ ¦ TABLE_OWNER ¦ TBCREATOR ¦ VARCHAR (128) ¦ El propietario de la tabla o vista. ¦ +------------------------+----------------+-------- --------+------------------------------------------ -------¦ ¦ ORDINAL_POSITION ¦ COLNO ¦ INTEGER ¦ Lugar numérico de la columna en la tabla o ¦ ¦ ¦ ¦ ¦ vista, ordenado de izquierda a derecha. ¦ +------------------------+----------------+-------- --------+------------------------------------------ -------¦ ¦ DATA_TYPE ¦ COLTYPE ¦ CHAR(8) ¦ Tipo de columna: ¦ ¦ ¦ ¦ ¦ ¦ ¦ ¦ ¦ ¦ INTEGER Número grande ¦ ¦ ¦ ¦ ¦ ¦ ¦ ¦ ¦ ¦ SMALLINT Número pequeño ¦ ¦ ¦ ¦ ¦ ¦ ¦ ¦ ¦ ¦ FLOAT Coma flotante; FLOAT, REAL o ¦ ¦ ¦ ¦ ¦ DOUBLE PRECISION ¦ ¦ ¦ ¦ ¦ ¦ ¦ ¦ ¦ ¦ CHAR Serie de caracteres de lon gitud ¦ ¦ ¦ ¦ ¦ fija ¦ ¦ ¦ ¦ ¦ ¦ ¦ ¦ ¦ ¦ VARCHAR Serie de caracteres de lon gitud ¦ ¦ ¦ ¦ ¦ variable ¦ ¦ ¦ ¦ ¦ ¦ ¦ ¦ ¦ ¦ DECIMAL Decimal empaquetado ¦ ¦ ¦ ¦ ¦ ¦ ¦ ¦ ¦ ¦ NUMERIC Decimal con zona ¦ ¦ ¦ ¦ ¦ ¦ ¦ ¦ ¦ ¦ DATE Fecha ¦ ¦ ¦ ¦ ¦ ¦ ¦ ¦ ¦ ¦ TIME Hora ¦ ¦ ¦ ¦ ¦ ¦ ¦ ¦ ¦ ¦ TIMESTMP Indicación de la hora ¦ ¦ ¦ ¦ ¦ ¦ ¦ ¦ ¦ ¦ GRAPHIC Serie gráfica de longitud fija ¦ ¦ ¦ ¦ ¦ ¦ ¦ ¦ ¦ ¦ VARG Serie gráfica de longitud ¦ ¦ ¦ ¦ ¦ variable ¦ +------------------------+----------------+-------- --------+------------------------------------------ -------¦ ¦ LENGTH ¦ LENGTH ¦ INTEGER ¦ El atributo de longitud de la columna; o, en el ¦ ¦ ¦ ¦ ¦ caso de una columna decimal, columna numé rica o ¦ ¦ ¦ ¦ ¦ columna binaria de precisión distinta a c ero, ¦ ¦ ¦ ¦ ¦ su precisión: ¦ ¦ ¦ ¦ ¦ ¦ ¦ ¦ ¦ ¦ 4 bytes INTEGER ¦ ¦ ¦ ¦ ¦ ¦ ¦ ¦ ¦ ¦ 2 bytes SMALLINT ¦ ¦ ¦ ¦ ¦ ¦ ¦ ¦ ¦ ¦ 8 bytes FLOAT, FLOAT(n) donde ¦ ¦ ¦ ¦ ¦ n = de 25 a 53, o ¦ ¦ ¦ ¦ ¦ DOUBLE PRECISION ¦ ¦ ¦ ¦ ¦ ¦ ¦ ¦ ¦ ¦ 4 bytes FLOAT(n) donde n = de ¦ ¦ ¦ ¦ ¦ 1 a 24, o REAL ¦ ¦ ¦ ¦ ¦ ¦ ¦ ¦ ¦ ¦ Longitud de serie CHAR ¦ ¦ ¦ ¦ ¦ ¦ ¦ ¦ ¦ ¦ Precisión de número DECIMAL ¦ ¦ ¦ ¦ ¦ ¦ ¦ ¦ ¦ ¦ Longitud máxima de serie VARCHAR ¦ ¦ ¦ ¦ ¦ ¦ ¦ ¦ ¦ ¦ Precisión de número NUMERIC ¦ ¦ ¦ ¦ ¦ ¦ ¦ ¦ ¦ ¦ 4 bytes DATE ¦ ¦ ¦ ¦ ¦ ¦ ¦ ¦ ¦ ¦ 3 bytes TIME ¦ ¦ ¦ ¦ ¦ ¦ ¦ ¦ ¦ ¦ 10 bytes TIMESTAMP ¦ ¦ ¦ ¦ ¦ ¦ ¦ ¦ ¦ ¦ Longitud de serie gráfica GRAPHIC ¦ ¦ ¦ ¦ ¦ ¦ ¦ ¦ ¦ ¦ Longitud máxima de serie gráfica VARGRAPH IC ¦ +------------------------+----------------+-------- --------+------------------------------------------ -------¦ ¦ NUMERIC_SCALE ¦ SCALE ¦ INTEGER con ¦ Escala de datos numéricos. ¦ ¦ ¦ ¦ posibil idad de ¦ ¦ ¦ ¦ ¦ nulos ¦ Contiene el valor nulo si no es una colum na ¦ ¦ ¦ ¦ ¦ decimal, numérica o binaria. ¦ +------------------------+----------------+-------- --------+------------------------------------------ -------¦ ¦ IS_NULLABLE ¦ NULLS ¦ CHAR(1) ¦ Si la columna puede contener valores nulo s: ¦

DB2/400 Manual de Consulta SQL V3R7 SYSCOLUMNS

© Copyright IBM Corp. 1995, 1996 H.3 - 1

Page 812: DB2/400 Manual de Consulta SQLmarce.com/docs/systems/manuales/db2_400_manual_consulta_sql_v3r7.pdf · VERSION Nota de Versión Segunda edición (noviembre de 1996) Este manual es

¦ ¦ ¦ ¦ ¦ ¦ ¦ ¦ ¦ N No ¦ ¦ ¦ ¦ ¦ ¦ ¦ ¦ ¦ ¦ Y Sí ¦ +------------------------+----------------+-------- --------+------------------------------------------ -------¦ ¦ IS_UPDATABLE ¦ UPDATES ¦ CHAR(1) ¦ Si se puede actualizar la columna: ¦ ¦ ¦ ¦ ¦ ¦ ¦ ¦ ¦ ¦ N No ¦ ¦ ¦ ¦ ¦ ¦ ¦ ¦ ¦ ¦ Y Sí ¦ +------------------------+----------------+-------- --------+------------------------------------------ -------¦ ¦ LONG_COMMENT ¦ REMARKS ¦ VARCHAR (2000) ¦ Una serie de caracteres que proporciona c on la ¦ ¦ ¦ ¦ con ¦ sentencia COMMENT ON. ¦ ¦ ¦ ¦ posibil idad de ¦ ¦ ¦ ¦ ¦ nulos. ¦ Contiene el valor nulo si no existe un ¦ ¦ ¦ ¦ ¦ comentario largo. ¦ +------------------------+----------------+-------- --------+------------------------------------------ -------¦ ¦ HAS_DEFAULT ¦ DEFAULT ¦ CHAR(1) ¦ Si la columna tiene un valor por omisión ¦ ¦ ¦ ¦ ¦ (cláusula DEFAULT o con posibilidad de nu los): ¦ ¦ ¦ ¦ ¦ ¦ ¦ ¦ ¦ ¦ N No ¦ ¦ ¦ ¦ ¦ ¦ ¦ ¦ ¦ ¦ Y Sí ¦ +------------------------+----------------+-------- --------+------------------------------------------ -------¦ ¦ COLUMN_HEADING ¦ LABEL ¦ VARCHAR (60) ¦ Una serie de caracteres que proporciona c on la ¦ ¦ ¦ ¦ con ¦ sentencia LABEL ON (cabeceras de columna) ¦ ¦ ¦ ¦ posibil idad de ¦ ¦ ¦ ¦ ¦ nulos. ¦ Contiene el valor nulo si no existe ningu na ¦ ¦ ¦ ¦ ¦ cabecera de columna. ¦ +------------------------+----------------+-------- --------+------------------------------------------ -------¦ ¦ STORAGE ¦ STORAGE ¦ INTEGER ¦ Los requisitos de almacenamiento para la ¦ ¦ ¦ ¦ ¦ columna: ¦ ¦ ¦ ¦ ¦ ¦ ¦ ¦ ¦ ¦ 4 bytes INTEGER ¦ ¦ ¦ ¦ ¦ ¦ ¦ ¦ ¦ ¦ 2 bytes SMALLINT ¦ ¦ ¦ ¦ ¦ ¦ ¦ ¦ ¦ ¦ 8 bytes FLOAT, FLOAT(n) donde ¦ ¦ ¦ ¦ ¦ n = de 25 a 53, o ¦ ¦ ¦ ¦ ¦ DOUBLE PRECISION ¦ ¦ ¦ ¦ ¦ ¦ ¦ ¦ ¦ ¦ 4 bytes FLOAT(n) donde n = de ¦ ¦ ¦ ¦ ¦ 1 a 24, o REAL ¦ ¦ ¦ ¦ ¦ ¦ ¦ ¦ ¦ ¦ Longitud de serie CHAR ¦ ¦ ¦ ¦ ¦ ¦ ¦ ¦ ¦ ¦ Longitud máxima de serie +2 VARCHAR ¦ ¦ ¦ ¦ ¦ ¦ ¦ ¦ ¦ ¦ (Precisión/2) + 1 DECIMAL ¦ ¦ ¦ ¦ ¦ ¦ ¦ ¦ ¦ ¦ Precisión de número NUMERIC ¦ ¦ ¦ ¦ ¦ ¦ ¦ ¦ ¦ ¦ 4 bytes DATE ¦ ¦ ¦ ¦ ¦ ¦ ¦ ¦ ¦ ¦ 3 bytes TIME ¦ ¦ ¦ ¦ ¦ ¦ ¦ ¦ ¦ ¦ 10 bytes TIMESTAMP ¦ ¦ ¦ ¦ ¦ ¦ ¦ ¦ ¦ ¦ Longitud de serie * 2 GRAPHIC ¦ ¦ ¦ ¦ ¦ ¦ ¦ ¦ ¦ ¦ Longitud máxima de serie * 2 + 2 VARGRAPH IC ¦ ¦ ¦ ¦ ¦ ¦ ¦ ¦ ¦ ¦ Nota: Esta columna proporciona los requisitos ¦ ¦ ¦ ¦ ¦ de almacenamiento para todos los t ipos ¦ ¦ ¦ ¦ ¦ de datos. ¦ +------------------------+----------------+-------- --------+------------------------------------------ -------¦ ¦ NUMERIC_PRECISION ¦ PRECISION ¦ INTEGER con ¦ La precisión de todas las columnas numéri cas. ¦ ¦ ¦ ¦ posibil idad de ¦ ¦ ¦ ¦ ¦ nulos ¦ Contiene el valor nulo si la columna no e s ¦ ¦ ¦ ¦ ¦ numérica. ¦ ¦ ¦ ¦ ¦ ¦ ¦ ¦ ¦ ¦ Nota: Esta columna proporciona la precisión de ¦ ¦ ¦ ¦ ¦ todos los tipos de datos numéricos , ¦ ¦ ¦ ¦ ¦ incluida la coma flotante de preci sión ¦ ¦ ¦ ¦ ¦ única y doble. La columna ¦ ¦ ¦ ¦ ¦ NUMERIC_PRECISION_RADIX indica si el ¦ ¦ ¦ ¦ ¦ valor de esta columna está en dígi tos ¦ ¦ ¦ ¦ ¦ binarios o decimales. ¦ +------------------------+----------------+-------- --------+------------------------------------------ -------¦ ¦ CCSID ¦ CCSID ¦ INTEGER con ¦ El valor del CCSID para las columnas CHAR , ¦ ¦ ¦ ¦ posibil idad de ¦ VARCHAR, DATE, TIME, TIMESTAMP, GRAPHIC y ¦ ¦ ¦ ¦ nulos ¦ VARGRAPHIC. ¦ ¦ ¦ ¦ ¦ ¦ ¦ ¦ ¦ ¦ Contiene el valor nulo si la columna es ¦ ¦ ¦ ¦ ¦ numérica. ¦ +------------------------+----------------+-------- --------+------------------------------------------ -------¦ ¦ TABLE_SCHEMA ¦ DBNAME ¦ VARCHAR (128) ¦ El nombre de la colección SQL que contien e la ¦ ¦ ¦ ¦ ¦ tabla o vista. ¦ +------------------------+----------------+-------- --------+------------------------------------------ -------¦ ¦ COLUMN_DEFAULT ¦ DFTVALUE ¦ VARCHAR (2000) ¦ El valor por omisión de una columna, si e xiste. ¦ ¦ ¦ ¦ con ¦ Si el valor por omisión de la columna no se ¦ ¦ ¦ ¦ posibil idad de ¦ puede representar sin truncamiento, el va lor de ¦ ¦ ¦ ¦ nulos. ¦ la columna es la serie 'TRUNCATED'. ¦ ¦ ¦ ¦ ¦ ¦ ¦ ¦ ¦ ¦ Contiene el valor nulo si la columna no t iene ¦ ¦ ¦ ¦ ¦ ningún valor por omisión. ¦ +------------------------+----------------+-------- --------+------------------------------------------ -------¦ ¦ CHARACTER_MAXIMUM_LENGT¦ CHARLEN ¦ INTEGER con ¦ Longitud máxima de la serie para tipos de datos ¦

DB2/400 Manual de Consulta SQL V3R7 SYSCOLUMNS

© Copyright IBM Corp. 1995, 1996 H.3 - 2

Page 813: DB2/400 Manual de Consulta SQLmarce.com/docs/systems/manuales/db2_400_manual_consulta_sql_v3r7.pdf · VERSION Nota de Versión Segunda edición (noviembre de 1996) Este manual es

¦ ¦ ¦ posibil idad de ¦ gráficos y de caracteres. ¦ ¦ ¦ ¦ nulos ¦ ¦ ¦ ¦ ¦ ¦ Contiene el valor nulo si la columna es ¦ ¦ ¦ ¦ ¦ numérica. ¦ +------------------------+----------------+-------- --------+------------------------------------------ -------¦ ¦ CHARACTER_OCTET_LENGTH ¦ CHARBYTE ¦ INTEGER con ¦ Número de bytes para tipos de datos gráf icos y ¦ ¦ ¦ ¦ posibil idad de ¦ de caracteres. ¦ ¦ ¦ ¦ nulos ¦ ¦ ¦ ¦ ¦ ¦ Contiene el valor nulo si la columna no e s ¦ ¦ ¦ ¦ ¦ gráfica o de caracteres. ¦ +------------------------+----------------+-------- --------+------------------------------------------ -------¦ ¦ NUMERIC_PRECISION_RADIX¦ RADIX ¦ INTEGER con ¦ Indica si la precisión especificada en la ¦ ¦ ¦ ¦ posibil idad de ¦ columna NUMERIC_PRECISION se especifica c omo un ¦ ¦ ¦ ¦ nulos ¦ número de dígitos decimales o binarios ¦ ¦ ¦ ¦ ¦ ¦ ¦ ¦ ¦ ¦ 2 Binarios; se especifica precisión de ¦ ¦ ¦ ¦ ¦ coma flotante en dígitos binari os. ¦ ¦ ¦ ¦ ¦ ¦ ¦ ¦ ¦ ¦ 10 Decimales; todos los demás tipos ¦ ¦ ¦ ¦ ¦ numéricos se especifican en díg itos ¦ ¦ ¦ ¦ ¦ decimales. ¦ ¦ ¦ ¦ ¦ ¦ ¦ ¦ ¦ ¦ Contiene el valor nulo si la columna no e s ¦ ¦ ¦ ¦ ¦ numérica. ¦ +------------------------+----------------+-------- --------+------------------------------------------ -------¦ ¦ DATETIME_PRECISION ¦ DATPRC ¦ INTEGER con ¦ La parte fraccional de una fecha, hora o ¦ ¦ ¦ ¦ posibil idad de ¦ indicación de la hora. ¦ ¦ ¦ ¦ nulos ¦ ¦ ¦ ¦ ¦ ¦ 0 Para tipos de datos DATE y TIME ¦ ¦ ¦ ¦ ¦ ¦ ¦ ¦ ¦ ¦ 6 Para tipos de datos TIMESTAMP (número ¦ ¦ ¦ ¦ ¦ de microsegundos). ¦ ¦ ¦ ¦ ¦ ¦ ¦ ¦ ¦ ¦ Contiene el valor nulo si la columna no e s ¦ ¦ ¦ ¦ ¦ fecha, hora o indicación de la hora. ¦ +------------------------+----------------+-------- --------+------------------------------------------ -------¦ ¦ COLUMN_TEXT ¦ LABELTEXT ¦ VARCHAR (50) ¦ Una serie de caracteres que proporciona c on la ¦ ¦ ¦ ¦ con ¦ sentencia LABEL ON (texto de columna) ¦ ¦ ¦ ¦ posibil idad de ¦ ¦ ¦ ¦ ¦ nulos. ¦ Contiene el valor nulo si la columna no t iene ¦ ¦ ¦ ¦ ¦ texto de columna. ¦ +------------------------+----------------+-------- --------+------------------------------------------ -------¦ ¦ SYSTEM_COLUMN_NAME ¦ SYS_CNAME ¦ CHAR(10 ) ¦ El nombre de sistema de la columna ¦ +------------------------+----------------+-------- --------+------------------------------------------ -------¦ ¦ SYSTEM_TABLE_NAME ¦ SYS_TNAME ¦ CHAR(10 ) ¦ El nombre de sistema de la tabla o vista ¦ +------------------------+----------------+-------- --------+------------------------------------------ -------¦ ¦ SYSTEM_TABLE_SCHEMA ¦ SYS_DNAME ¦ CHAR(10 ) ¦ El nombre de sistema de la colección ¦ +-------------------------------------------------- --------------------------------------------------- -------+

DB2/400 Manual de Consulta SQL V3R7 SYSCOLUMNS

© Copyright IBM Corp. 1995, 1996 H.3 - 3

Page 814: DB2/400 Manual de Consulta SQLmarce.com/docs/systems/manuales/db2_400_manual_consulta_sql_v3r7.pdf · VERSION Nota de Versión Segunda edición (noviembre de 1996) Este manual es

H.4 SYSCST La vista SYSCST contiene una fila para cada restric ción de la colección SQL. La siguiente tabla describe las columnas de l a vista SYSCST: +-------------------------------------------------- --------------------------------------------------- -------+ ¦ Tabla 47. Vista SYSCST ¦ +-------------------------------------------------- --------------------------------------------------- -------¦ ¦ Nombre de columna ¦ Nombre de ¦ Tipo de datos ¦ Descripción ¦ ¦ ¦ columna del ¦ ¦ ¦ ¦ ¦ sistema ¦ ¦ ¦ +------------------------+----------------+-------- --------+------------------------------------------ -------¦ ¦ CONSTRAINT_SCHEMA ¦ CDBNAME ¦ VARCHAR (128) ¦ Nombre de la colección que contiene la ¦ ¦ ¦ ¦ ¦ restricción. ¦ +------------------------+----------------+-------- --------+------------------------------------------ -------¦ ¦ CONSTRAINT_NAME ¦ RELNAME ¦ VARCHAR (128) ¦ Nombre de la restricción. ¦ +------------------------+----------------+-------- --------+------------------------------------------ -------¦ ¦ CONSTRAINT_TYPE ¦ TYPE ¦ VARCHAR (11) ¦ Tipo de restricción ¦ ¦ ¦ ¦ ¦ ¦ ¦ ¦ ¦ ¦ UNIQUE ¦ ¦ ¦ ¦ ¦ PRIMARY KEY ¦ ¦ ¦ ¦ ¦ FOREIGN KEY ¦ +------------------------+----------------+-------- --------+------------------------------------------ -------¦ ¦ TABLE_SCHEMA ¦ TDBNAME ¦ VARCHAR (128) ¦ Nombre de la colección que contiene la ta bla. ¦ +------------------------+----------------+-------- --------+------------------------------------------ -------¦ ¦ TABLE_NAME ¦ TBNAME ¦ VARCHAR (128) ¦ Nombre de la tabla sobre la que se crea l a ¦ ¦ ¦ ¦ ¦ restricción. Será el nombre de la tabla SQL, ¦ ¦ ¦ ¦ ¦ en caso que exista; de lo contrario, será el ¦ ¦ ¦ ¦ ¦ nombre de la tabla del sistema. ¦ +------------------------+----------------+-------- --------+------------------------------------------ -------¦ ¦ IS_DEFERRABLE ¦ ISDEFER ¦ VARCHAR (3) ¦ Indica si se puede diferir la comprobació n de ¦ ¦ ¦ ¦ ¦ la restricción. Siempre será NO. ¦ +------------------------+----------------+-------- --------+------------------------------------------ -------¦ ¦ INITIALLY_DEFERRED ¦ INITDEFER ¦ VARCHAR (3) ¦ Indica si se ha definido la restricción c omo ¦ ¦ ¦ ¦ ¦ diferida inicialmente. Siempre será NO. ¦ +------------------------+----------------+-------- --------+------------------------------------------ -------¦ ¦ SYSTEM_TABLE_NAME ¦ SYS_TNAME ¦ CHAR(10 ) ¦ Nombre de sistema de la tabla. ¦ +------------------------+----------------+-------- --------+------------------------------------------ -------¦ ¦ SYSTEM_TABLE_SCHEMA ¦ SYS_DNAME ¦ CHAR(10 ) ¦ Nombre de sistema de la colección que con tiene ¦ ¦ ¦ ¦ ¦ la tabla. ¦ +-------------------------------------------------- --------------------------------------------------- -------+

DB2/400 Manual de Consulta SQL V3R7 SYSCST

© Copyright IBM Corp. 1995, 1996 H.4 - 1

Page 815: DB2/400 Manual de Consulta SQLmarce.com/docs/systems/manuales/db2_400_manual_consulta_sql_v3r7.pdf · VERSION Nota de Versión Segunda edición (noviembre de 1996) Este manual es

H.5 SYSCSTCOL La vista SYSCSTCOL registra las columnas sobre las que se definen las restricciones. Existe una fila para cada columna d e una restricción de clave exclusiva o primaria y las columnas de refere ncia de una restricción de referencia. La siguiente tabla describe las col umnas de la vista SYSCSTCOL: +-------------------------------------------------- --------------------------------------------------- -------+ ¦ Tabla 48. Vista SYSCSTCOL ¦ +-------------------------------------------------- --------------------------------------------------- -------¦ ¦ Nombre de columna ¦ Nombre de ¦ Tipo de datos ¦ Descripción ¦ ¦ ¦ columna del ¦ ¦ ¦ ¦ ¦ sistema ¦ ¦ ¦ +------------------------+----------------+-------- --------+------------------------------------------ -------¦ ¦ TABLE_SCHEMA ¦ TDBNAME ¦ VARCHAR (128) ¦ Nombre de la colección SQL que contiene l a ¦ ¦ ¦ ¦ ¦ tabla de la que depende la restricción. ¦ +------------------------+----------------+-------- --------+------------------------------------------ -------¦ ¦ TABLE_NAME ¦ TBNAME ¦ VARCHAR (128) ¦ Nombre de la tabla de la que depende la ¦ ¦ ¦ ¦ ¦ restricción. Se trata del nombre de tabl a SQL, ¦ ¦ ¦ ¦ ¦ en caso que exista; de lo contrario, es e l ¦ ¦ ¦ ¦ ¦ nombre de tabla del sistema. ¦ +------------------------+----------------+-------- --------+------------------------------------------ -------¦ ¦ COLUMN_NAME ¦ TIPO DE DATOS ¦ VARCHAR (128) ¦ Columna sobre la que se ha creado la ¦ ¦ ¦ ¦ ¦ restricción. Se trata del nombre de colu mna ¦ ¦ ¦ ¦ ¦ SQL, en caso que exista; de lo contrario, es el ¦ ¦ ¦ ¦ ¦ nombre de columna del sistema. ¦ +------------------------+----------------+-------- --------+------------------------------------------ -------¦ ¦ CONSTRAINT_SCHEMA ¦ CDBNAME ¦ VARCHAR (128) ¦ Nombre de la colección de la restricción. ¦ +------------------------+----------------+-------- --------+------------------------------------------ -------¦ ¦ CONSTRAINT_NAME ¦ RELNAME ¦ VARCHAR (128) ¦ Nombre de la restricción. ¦ +------------------------+----------------+-------- --------+------------------------------------------ -------¦ ¦ SYSTEM_COLUMN_NAME ¦ SYS_CNAME ¦ CHAR(10 ) ¦ Nombre del sistema de la columna. ¦ +------------------------+----------------+-------- --------+------------------------------------------ -------¦ ¦ SYSTEM_TABLE_NAME ¦ SYS_TNAME ¦ CHAR(10 ) ¦ Nombre de sistema de la tabla. ¦ +------------------------+----------------+-------- --------+------------------------------------------ -------¦ ¦ SYSTEM_TABLE_SCHEMA ¦ SYS_DNAME ¦ CHAR(10 ) ¦ Nombre de sistema de la colección que con tiene ¦ ¦ ¦ ¦ ¦ la tabla. ¦ +-------------------------------------------------- --------------------------------------------------- -------+

DB2/400 Manual de Consulta SQL V3R7 SYSCSTCOL

© Copyright IBM Corp. 1995, 1996 H.5 - 1

Page 816: DB2/400 Manual de Consulta SQLmarce.com/docs/systems/manuales/db2_400_manual_consulta_sql_v3r7.pdf · VERSION Nota de Versión Segunda edición (noviembre de 1996) Este manual es

H.6 SYSCSTDEP La vista SYSCSTDEP registra las tablas sobre las qu e se definen las restricciones. La siguiente tabla describe las col umnas de la vista SYSCSTDEP: +-------------------------------------------------- --------------------------------------------------- -------+ ¦ Tabla 49. Vista SYSCSTDEP ¦ +-------------------------------------------------- --------------------------------------------------- -------¦ ¦ Nombre de columna ¦ Nombre de ¦ Tipo de datos ¦ Descripción ¦ ¦ ¦ columna del ¦ ¦ ¦ ¦ ¦ sistema ¦ ¦ ¦ +------------------------+----------------+-------- --------+------------------------------------------ -------¦ ¦ TABLE_SCHEMA ¦ TDBNAME ¦ VARCHAR (128) ¦ Nombre de la colección SQL que contiene l a ¦ ¦ ¦ ¦ ¦ tabla de la que depende la restricción ¦ +------------------------+----------------+-------- --------+------------------------------------------ -------¦ ¦ TABLE_NAME ¦ TBNAME ¦ VARCHAR (128) ¦ Nombre de la tabla de la que depende la ¦ ¦ ¦ ¦ ¦ restricción. Se trata del nombre de tabl a SQL, ¦ ¦ ¦ ¦ ¦ en caso que exista; de lo contrario, es e l ¦ ¦ ¦ ¦ ¦ nombre de tabla del sistema. ¦ +------------------------+----------------+-------- --------+------------------------------------------ -------¦ ¦ CONSTRAINT_SCHEMA ¦ CDBNAME ¦ VARCHAR (128) ¦ Nombre de la colección de la restricción. ¦ +------------------------+----------------+-------- --------+------------------------------------------ -------¦ ¦ CONSTRAINT_NAME ¦ RELNAME ¦ VARCHAR (128) ¦ Nombre de la restricción. ¦ +------------------------+----------------+-------- --------+------------------------------------------ -------¦ ¦ SYSTEM_TABLE_NAME ¦ SYS_TNAME ¦ CHAR(10 ) ¦ Nombre de sistema de la tabla. ¦ +------------------------+----------------+-------- --------+------------------------------------------ -------¦ ¦ SYSTEM_TABLE_SCHEMA ¦ SYS_DNAME ¦ CHAR(10 ) ¦ Nombre de sistema de la colección que con tiene ¦ ¦ ¦ ¦ ¦ la tabla. ¦ +-------------------------------------------------- --------------------------------------------------- -------+

DB2/400 Manual de Consulta SQL V3R7 SYSCSTDEP

© Copyright IBM Corp. 1995, 1996 H.6 - 1

Page 817: DB2/400 Manual de Consulta SQLmarce.com/docs/systems/manuales/db2_400_manual_consulta_sql_v3r7.pdf · VERSION Nota de Versión Segunda edición (noviembre de 1996) Este manual es

H.7 SYSINDEXES La vista SYSINDEXES contiene una fila para cada índ ice de la colección SQL que se ha creado utilizando la sentencia SQL CREATE INDEX, incluidos los índices del catálogo SQL. La siguiente tabla descr ibe las columnas de la vista SYSINDEXES: +-------------------------------------------------- --------------------------------------------------- -------+ ¦ Tabla 50. Vista SYSINDEXES ¦ +-------------------------------------------------- --------------------------------------------------- -------¦ ¦ Nombre de columna ¦ Nombre de ¦ Tipo de datos ¦ Descripción ¦ ¦ ¦ columna del ¦ ¦ ¦ ¦ ¦ sistema ¦ ¦ ¦ +------------------------+----------------+-------- --------+------------------------------------------ -------¦ ¦ INDEX_NAME ¦ NAME ¦ VARCHAR (128) ¦ Nombre del índice. Será el nombre de índ ice ¦ ¦ ¦ ¦ ¦ SQL, en caso que exista; de lo contrario, será ¦ ¦ ¦ ¦ ¦ el nombre de índice del sistema. ¦ +------------------------+----------------+-------- --------+------------------------------------------ -------¦ ¦ INDEX_OWNER ¦ CREATOR ¦ VARCHAR (128) ¦ Propietario del índice ¦ +------------------------+----------------+-------- --------+------------------------------------------ -------¦ ¦ TABLE_NAME ¦ TBNAME ¦ VARCHAR (128) ¦ Nombre de la tabla sobre la que se ha def inido ¦ ¦ ¦ ¦ ¦ el índice. Será el nombre de tabla SQL, en ¦ ¦ ¦ ¦ ¦ caso que exista; de lo contrario, será el ¦ ¦ ¦ ¦ ¦ nombre de tabla del sistema. ¦ +------------------------+----------------+-------- --------+------------------------------------------ -------¦ ¦ TABLE_OWNER ¦ TBCREATOR ¦ VARCHAR (128) ¦ Propietario de la tabla ¦ +------------------------+----------------+-------- --------+------------------------------------------ -------¦ ¦ TABLE_SCHEMA ¦ TBDBNAME ¦ VARCHAR (128) ¦ Nombre de la colección SQL que contiene l a ¦ ¦ ¦ ¦ ¦ tabla sobre la que se ha definido el índi ce ¦ +------------------------+----------------+-------- --------+------------------------------------------ -------¦ ¦ IS_UNIQUE ¦ UNIQUERULE ¦ CHAR(1) ¦ Si el índice es exclusivo: ¦ ¦ ¦ ¦ ¦ ¦ ¦ ¦ ¦ ¦ D No (se permiten duplicados) ¦ ¦ ¦ ¦ ¦ V Sí (se permiten valores NULL duplicado s) ¦ ¦ ¦ ¦ ¦ U Sí ¦ +------------------------+----------------+-------- --------+------------------------------------------ -------¦ ¦ COLUMN_COUNT ¦ COLCOUNT ¦ INTEGER ¦ Número de columnas de la clave ¦ +------------------------+----------------+-------- --------+------------------------------------------ -------¦ ¦ INDEX_SCHEMA ¦ DBNAME ¦ VARCHAR (128) ¦ Nombre de la colección SQL que contiene e l ¦ ¦ ¦ ¦ ¦ índice ¦ +------------------------+----------------+-------- --------+------------------------------------------ -------¦ ¦ SYSTEM_INDEX_NAME ¦ SYS_IXNAME ¦ CHAR(10 ) ¦ Nombre de índice del sistema ¦ +------------------------+----------------+-------- --------+------------------------------------------ -------¦ ¦ SYSTEM_INDEX_SCHEMA ¦ SYS_IDNAME ¦ CHAR(10 ) ¦ Nombre de colección de índice del sistema ¦ +------------------------+----------------+-------- --------+------------------------------------------ -------¦ ¦ SYSTEM_TABLE_NAME ¦ SYS_TNAME ¦ CHAR(10 ) ¦ Nombre de tabla del sistema ¦ +------------------------+----------------+-------- --------+------------------------------------------ -------¦ ¦ SYSTEM_TABLE_SCHEMA ¦ SYS_DNAME ¦ CHAR(10 ) ¦ Nombre de colección de tabla del sistema ¦ +------------------------+----------------+-------- --------+------------------------------------------ -------¦| ¦ LONG_COMMENT ¦ REMARKS ¦ VARCHAR (2000) ¦ Una serie de caracteres que proporciona c on la ¦| ¦ ¦ ¦ con ¦ sentencia COMMENT ON. Contiene el valor nulo ¦| ¦ ¦ ¦ posibil idad de ¦ si no existen comentarios. ¦| ¦ ¦ ¦ nulos. ¦ ¦ +-------------------------------------------------- --------------------------------------------------- -------+

DB2/400 Manual de Consulta SQL V3R7 SYSINDEXES

© Copyright IBM Corp. 1995, 1996 H.7 - 1

Page 818: DB2/400 Manual de Consulta SQLmarce.com/docs/systems/manuales/db2_400_manual_consulta_sql_v3r7.pdf · VERSION Nota de Versión Segunda edición (noviembre de 1996) Este manual es

H.8 SYSKEYCST La vista SYSKEYCST contiene una o más filas para ca da UNIQUE KEY, PRIMARY KEY o FOREIGN KEY en la colección SQL. Existe una fila para cada una de las columnas de cada restricción de clave exclusiva o primaria y las columnas de referencia de una restricción de refere ncia. La siguiente tabla describe las columnas de la vista SYSKEYCST: +-------------------------------------------------- --------------------------------------------------- -------+ ¦ Tabla 51. Vista SYSKEYCST ¦ +-------------------------------------------------- --------------------------------------------------- -------¦ ¦ Nombre de columna ¦ Nombre de ¦ Tipo de datos ¦ Descripción ¦ ¦ ¦ columna del ¦ ¦ ¦ ¦ ¦ sistema ¦ ¦ ¦ +------------------------+----------------+-------- --------+------------------------------------------ -------¦ ¦ CONSTRAINT_SCHEMA ¦ CDBNAME ¦ VARCHAR (128) ¦ Nombre de la colección que contiene la ¦ ¦ ¦ ¦ ¦ restricción. ¦ +------------------------+----------------+-------- --------+------------------------------------------ -------¦ ¦ CONSTRAINT_NAME ¦ RELNAME ¦ VARCHAR (128) ¦ Nombre de la restricción. ¦ +------------------------+----------------+-------- --------+------------------------------------------ -------¦ ¦ TABLE_SCHEMA ¦ TDBNAME ¦ VARCHAR (128) ¦ Nombre de la colección que contiene la ta bla. ¦ +------------------------+----------------+-------- --------+------------------------------------------ -------¦ ¦ TABLE_NAME ¦ TBNAME ¦ VARCHAR (128) ¦ Nombre de la tabla. ¦ +------------------------+----------------+-------- --------+------------------------------------------ -------¦ ¦ COLUMN_NAME ¦ COLNAME ¦ VARCHAR (128) ¦ El nombre de la columna. ¦ +------------------------+----------------+-------- --------+------------------------------------------ -------¦ ¦ ORDINAL_POSITION ¦ COLSEQ ¦ INTEGER ¦ La posición de la columna dentro de la cl ave ¦ +------------------------+----------------+-------- --------+------------------------------------------ -------¦ ¦ COLUMN_POSITION ¦ COLNO ¦ INTEGER ¦ La posición de la columna dentro de la fi la ¦ +------------------------+----------------+-------- --------+------------------------------------------ -------¦ ¦ TABLE_OWNER ¦ CREATOR ¦ VARCHAR (128) ¦ Propietario de la tabla. ¦ +------------------------+----------------+-------- --------+------------------------------------------ -------¦ ¦ SYSTEM_COLUMN_NAME ¦ SYS_CNAME ¦ CHAR(10 ) ¦ Nombre del sistema de la columna. ¦ +------------------------+----------------+-------- --------+------------------------------------------ -------¦ ¦ SYSTEM_TABLE_NAME ¦ SYS_TNAME ¦ CHAR(10 ) ¦ Nombre de sistema de la tabla. ¦ +------------------------+----------------+-------- --------+------------------------------------------ -------¦ ¦ SYSTEM_TABLE_SCHEMA ¦ SYS_DNAME ¦ CHAR(10 ) ¦ Nombre del sistema de la colección que co ntiene ¦ ¦ ¦ ¦ ¦ la tabla del esquema. ¦ +-------------------------------------------------- --------------------------------------------------- -------+

DB2/400 Manual de Consulta SQL V3R7 SYSKEYCST

© Copyright IBM Corp. 1995, 1996 H.8 - 1

Page 819: DB2/400 Manual de Consulta SQLmarce.com/docs/systems/manuales/db2_400_manual_consulta_sql_v3r7.pdf · VERSION Nota de Versión Segunda edición (noviembre de 1996) Este manual es

H.9 SYSKEYS La vista SYSKEYS contiene una fila para cada column a de un índice de la colección SQL, incluidas las claves para los índice s del catálogo SQL. La siguiente tabla describe las columnas de la vista S YSKEYS: +-------------------------------------------------- --------------------------------------------------- -------+ ¦ Tabla 52. Vista SYSKEYS ¦ +-------------------------------------------------- --------------------------------------------------- -------¦ ¦ Nombre de columna ¦ Nombre de ¦ Tipo de datos ¦ Descripción ¦ ¦ ¦ columna del ¦ ¦ ¦ ¦ ¦ sistema ¦ ¦ ¦ +------------------------+----------------+-------- --------+------------------------------------------ -------¦ ¦ INDEX_NAME ¦ IXNAME ¦ VARCHAR (128) ¦ Nombre del índice. Será el nombre de índ ice ¦ ¦ ¦ ¦ ¦ SQL, en caso que exista; de lo contrario, será ¦ ¦ ¦ ¦ ¦ el nombre de índice del sistema. ¦ +------------------------+----------------+-------- --------+------------------------------------------ -------¦ ¦ INDEX_OWNER ¦ IXCREATOR ¦ VARCHAR (128) ¦ Propietario del índice ¦ +------------------------+----------------+-------- --------+------------------------------------------ -------¦ ¦ COLUMN_NAME ¦ COLNAME ¦ VARCHAR (128) ¦ Nombre de la columna de la clave. Será e l ¦ ¦ ¦ ¦ ¦ nombre de columna SQL en caso que exista; de lo ¦ ¦ ¦ ¦ ¦ contrario, será el nombre de columna del ¦ ¦ ¦ ¦ ¦ sistema. ¦ +------------------------+----------------+-------- --------+------------------------------------------ -------¦ ¦ COLUMN_POSITION ¦ COLNO ¦ INTEGER ¦ Posición numérica de la columna en la fil a ¦ +------------------------+----------------+-------- --------+------------------------------------------ -------¦ ¦ ORDINAL_POSITION ¦ COLSEQ ¦ INTEGER ¦ Posición numérica de la columna de la cla ve ¦ +------------------------+----------------+-------- --------+------------------------------------------ -------¦ ¦ ORDERING ¦ ORDERING ¦ CHAR(1) ¦ Orden de la columna de la clave: ¦ ¦ ¦ ¦ ¦ ¦ ¦ ¦ ¦ ¦ A Ascendente ¦ ¦ ¦ ¦ ¦ D Descendente ¦ +------------------------+----------------+-------- --------+------------------------------------------ -------¦ ¦ INDEX_SCHEMA ¦ IXDBNAME ¦ VARCHAR (128) ¦ Nombre de la colección que contiene el ín dice. ¦ +------------------------+----------------+-------- --------+------------------------------------------ -------¦ ¦ SYSTEM_COLUMN_NAME ¦ SYS_CNAME ¦ CHAR(10 ) ¦ Nombre del sistema de la columna ¦ +------------------------+----------------+-------- --------+------------------------------------------ -------¦ ¦ SYSTEM_INDEX_NAME ¦ SYS_IXNAME ¦ CHAR(10 ) ¦ Nombre del sistema del índice ¦ +------------------------+----------------+-------- --------+------------------------------------------ -------¦ ¦ SYSTEM_INDEX_SCHEMA ¦ SYS_IDNAME ¦ CHAR(10 ) ¦ Nombre del sistema de la colección que co ntiene ¦ ¦ ¦ ¦ ¦ el índice ¦ +-------------------------------------------------- --------------------------------------------------- -------+

DB2/400 Manual de Consulta SQL V3R7 SYSKEYS

© Copyright IBM Corp. 1995, 1996 H.9 - 1

Page 820: DB2/400 Manual de Consulta SQLmarce.com/docs/systems/manuales/db2_400_manual_consulta_sql_v3r7.pdf · VERSION Nota de Versión Segunda edición (noviembre de 1996) Este manual es

H.10 SYSPACKAGE La vista SYSPACKAGE contiene una fila para cada paq uete SQL de la colección SQL. La siguiente tabla describe las col umnas de la vista SYSPACKAGE: +-------------------------------------------------- --------------------------------------------------- -------+ ¦ Tabla 53. Vista SYSPACKAGE ¦ +-------------------------------------------------- --------------------------------------------------- -------¦ ¦ Nombre de columna ¦ Nombre de ¦ Tipo de datos ¦ Descripción ¦ ¦ ¦ columna del ¦ ¦ ¦ ¦ ¦ sistema ¦ ¦ ¦ +------------------------+----------------+-------- --------+------------------------------------------ -------¦ ¦ PACKAGE_CATALOG ¦ LOCATION ¦ VARCHAR (128) ¦ Ubicación del paquete SQL ¦ +------------------------+----------------+-------- --------+------------------------------------------ -------¦ ¦ PACKAGE_SCHEMA ¦ COLLID ¦ VARCHAR (128) ¦ Nombre de la colección ¦ +------------------------+----------------+-------- --------+------------------------------------------ -------¦ ¦ PACKAGE_NAME ¦ NAME ¦ VARCHAR (128) ¦ Nombre del paquete SQL ¦ +------------------------+----------------+-------- --------+------------------------------------------ -------¦ ¦ PACKAGE_OWNER ¦ OWNER ¦ VARCHAR (128) ¦ Propietario del paquete SQL ¦ +------------------------+----------------+-------- --------+------------------------------------------ -------¦ ¦ PACKAGE_CREATOR ¦ CREATOR ¦ VARCHAR (128) ¦ Creador del paquete SQL ¦ +------------------------+----------------+-------- --------+------------------------------------------ -------¦ ¦ CREATION_TIMESTAMP ¦ TIMESTAMP ¦ CHAR(26 ) ¦ Indicación de la hora en que se creó el p aquete ¦ ¦ ¦ ¦ ¦ SQL ¦ +------------------------+----------------+-------- --------+------------------------------------------ -------¦ ¦ DEFAULT_SCHEMA ¦ QUALIFIER ¦ VARCHAR (128) ¦ Nombre implícito para tablas, vistas e ín dices ¦ ¦ ¦ ¦ ¦ no calificados ¦ +------------------------+----------------+-------- --------+------------------------------------------ -------¦ ¦ PROGRAM_NAME ¦ PROGNAME ¦ VARCHAR (128) ¦ Nombre del programa a partir del que se c reó el ¦ ¦ ¦ ¦ ¦ paquete ¦ +------------------------+----------------+-------- --------+------------------------------------------ -------¦ ¦ PROGRAM_SCHEMA ¦ LIBRARY ¦ VARCHAR (128) ¦ Nombre de la colección que contiene el pr ograma ¦ +------------------------+----------------+-------- --------+------------------------------------------ -------¦ ¦ PROGRAM_CATALOG ¦ RDB ¦ VARCHAR (128) ¦ Nombre de la base de datos relacional don de ¦ ¦ ¦ ¦ ¦ reside el programa ¦ +------------------------+----------------+-------- --------+------------------------------------------ -------¦ ¦ ISOLATION ¦ ISOLATION ¦ CHAR(2) ¦ Especificación de opción de aislamiento: ¦ ¦ ¦ ¦ ¦ RR Lectura repetible ¦ ¦ ¦ ¦ ¦ RS Estabilidad de lectura (*ALL) ¦ ¦ ¦ ¦ ¦ CS Estabilidad de cursor (*CS) ¦ ¦ ¦ ¦ ¦ UR Lectura no comprometida (*CHG) ¦ ¦ ¦ ¦ ¦ NO Ninguna (*NONE) ¦ +------------------------+----------------+-------- --------+------------------------------------------ -------¦ ¦ QUOTE ¦ QUOTE ¦ CHAR(1) ¦ Especificación de carácter de escape (Y/N ): ¦ ¦ ¦ ¦ ¦ Y = Comillas ¦ ¦ ¦ ¦ ¦ N = Apóstrofo ¦ +------------------------+----------------+-------- --------+------------------------------------------ -------¦ ¦ COMMA ¦ COMMA ¦ CHAR(1) ¦ Especificación de opción de coma (Y/N): ¦ ¦ ¦ ¦ ¦ Y = Coma ¦ ¦ ¦ ¦ ¦ N = Punto ¦ +------------------------+----------------+-------- --------+------------------------------------------ -------¦ ¦ PACKAGE_TEXT ¦ LABEL ¦ VARCHAR (50) ¦ Una serie de caracteres que proporciona c on la ¦ ¦ ¦ ¦ ¦ sentencia LABEL ON. ¦ +------------------------+----------------+-------- --------+------------------------------------------ -------¦ ¦ LONG_COMMENT ¦ REMARKS ¦ VARCHAR (2000) ¦ Una serie de caracteres que proporciona c on la ¦ ¦ ¦ ¦ ¦ sentencia COMMENT ON. ¦ +------------------------+----------------+-------- --------+------------------------------------------ -------¦ ¦ CONSISTENCY_TOKEN ¦ CONTOKEN ¦ CHAR(8) FOR ¦ Símbolo de coherencia de paquete ¦ ¦ ¦ ¦ BIT DAT A ¦ ¦ +------------------------+----------------+-------- --------+------------------------------------------ -------¦ ¦ SYSTEM_PACKAGE_NAME ¦ SYS_NAME ¦ CHAR(10 ) ¦ Nombre de sistema del paquete. ¦ +------------------------+----------------+-------- --------+------------------------------------------ -------¦ ¦ SYSTEM_PACKAGE_SCHEMA ¦ SYS_DNAME ¦ CHAR(10 ) ¦ Nombre de sistema de la colección que con tiene ¦ ¦ ¦ ¦ ¦ el paquete. ¦ +------------------------+----------------+-------- --------+------------------------------------------ -------¦ ¦ SYSTEM_DEFAULT_SCHEMA ¦ SYS_DDNAME ¦ CHAR(10 ) ¦ Nombre de sistema del calificador implíci to ¦ ¦ ¦ ¦ ¦ para tablas, vistas, índices y paquetes n o ¦ ¦ ¦ ¦ ¦ calificados. ¦ +------------------------+----------------+-------- --------+------------------------------------------ -------¦ ¦ SYSTEM_PROGRAM_NAME ¦ SYS_PNAME ¦ CHAR(10 ) ¦ Nombre de sistema del programa. ¦ +------------------------+----------------+-------- --------+------------------------------------------ -------¦ ¦ SYSTEM_PROGRAM_SCHEMA ¦ SYS_PDNAME ¦ CHAR(10 ) ¦ Nombre de sistema de la colección que con tiene ¦ ¦ ¦ ¦ ¦ el programa ¦ +-------------------------------------------------- --------------------------------------------------- -------+

DB2/400 Manual de Consulta SQL V3R7 SYSPACKAGE

© Copyright IBM Corp. 1995, 1996 H.10 - 1

Page 821: DB2/400 Manual de Consulta SQLmarce.com/docs/systems/manuales/db2_400_manual_consulta_sql_v3r7.pdf · VERSION Nota de Versión Segunda edición (noviembre de 1996) Este manual es

H.11 SYSPARMS La tabla SYSPARMS contiene una fila para cada parám etro de un procedimiento que se ha creado mediante la sentenci a CREATE PROCEDURE. La siguiente tabla describe las columnas de la tabla S YSPARMS: +-------------------------------------------------- --------------------------------------------------- -------+ ¦ Tabla 54. Tabla SYSPARMS ¦ +-------------------------------------------------- --------------------------------------------------- -------¦ ¦ Nombre de columna ¦ Nombre de ¦ Tipo de datos ¦ Descripción ¦ ¦ ¦ columna del ¦ ¦ ¦ ¦ ¦ sistema ¦ ¦ ¦ +------------------------+----------------+-------- --------+------------------------------------------ -------¦ ¦ SPECIFIC_SCHEMA ¦ SPECSCHEMA ¦ VARCHAR (128) ¦ Nombre de esquema del ejemplo de rutina. ¦ +------------------------+----------------+-------- --------+------------------------------------------ -------¦ ¦ SPECIFIC_NAME ¦ SPECNAME ¦ VARCHAR (128) ¦ Nombre del ejemplo de rutina. ¦ +------------------------+----------------+-------- --------+------------------------------------------ -------¦ ¦ ORDINAL_POSITION ¦ PARMNO ¦ INTEGER ¦ Lugar numérico del parámetro en la lista de ¦ ¦ ¦ ¦ ¦ parámetros, ordenados de izquierda a dere cha. ¦ +------------------------+----------------+-------- --------+------------------------------------------ -------¦ ¦ PARAMETER_MODE ¦ PARMMODE ¦ VARCHAR (5) ¦ El tipo de parámetro: ¦ ¦ ¦ ¦ ¦ ¦ ¦ ¦ ¦ ¦ IN Se trata de un parámetro de entra da. ¦ ¦ ¦ ¦ ¦ OUT Se trata de un parámetro de salid a. ¦ ¦ ¦ ¦ ¦ INOUT Se trata de un parámetro de ¦ ¦ ¦ ¦ ¦ entrada/salida. ¦ +------------------------+----------------+-------- --------+------------------------------------------ -------¦ ¦ PARAMETER_NAME ¦ PARMNAME ¦ VARCHAR (128) ¦ El nombre del parámetro. ¦ ¦ ¦ ¦ Con ¦ ¦ ¦ ¦ ¦ posibil idad de ¦ ¦ ¦ ¦ ¦ nulos ¦ ¦ +------------------------+----------------+-------- --------+------------------------------------------ -------¦ ¦ DATA_TYPE ¦ DATA_TYPE ¦ VARCHAR (17) ¦ Tipo de columna: ¦ ¦ ¦ ¦ ¦ ¦ ¦ ¦ ¦ ¦ INTEGER Número grande ¦ ¦ ¦ ¦ ¦ ¦ ¦ ¦ ¦ ¦ SMALLINT Número pequeño ¦ ¦ ¦ ¦ ¦ ¦ ¦ ¦ ¦ ¦ DOUBLE PRECISION Coma flotante; DOUBL E ¦ ¦ ¦ ¦ ¦ PRECISION ¦ ¦ ¦ ¦ ¦ ¦ ¦ ¦ ¦ ¦ REAL Coma flotante; REAL ¦ ¦ ¦ ¦ ¦ ¦ ¦ ¦ ¦ ¦ CHARACTER Serie de caracteres d e ¦ ¦ ¦ ¦ ¦ longitud fija ¦ ¦ ¦ ¦ ¦ ¦ ¦ ¦ ¦ ¦ CHARACTER VARYING Serie de caracteres d e ¦ ¦ ¦ ¦ ¦ longitud variable ¦ ¦ ¦ ¦ ¦ ¦ ¦ ¦ ¦ ¦ DECIMAL Decimal empaquetado ¦ ¦ ¦ ¦ ¦ ¦ ¦ ¦ ¦ ¦ NUMERIC Decimal con zona ¦ ¦ ¦ ¦ ¦ ¦ ¦ ¦ ¦ ¦ DATE Fecha ¦ ¦ ¦ ¦ ¦ ¦ ¦ ¦ ¦ ¦ TIME Hora ¦ ¦ ¦ ¦ ¦ ¦ ¦ ¦ ¦ ¦ TIMESTAMP Indicación de la hora ¦ ¦ ¦ ¦ ¦ ¦ ¦ ¦ ¦ ¦ GRAPHIC Serie gráfica de long itud ¦ ¦ ¦ ¦ ¦ fija ¦ ¦ ¦ ¦ ¦ ¦ ¦ ¦ ¦ ¦ GRAPHIC VARYING Serie gráfica de long itud ¦ ¦ ¦ ¦ ¦ variable ¦ +------------------------+----------------+-------- --------+------------------------------------------ -------¦ ¦ NUMERIC_SCALE ¦ SCALE ¦ INTEGER Con ¦ Escala de datos numéricos. ¦ ¦ ¦ ¦ posibil idad de ¦ ¦ ¦ ¦ ¦ nulos ¦ Contiene el valor nulo si no es un paráme tro ¦ ¦ ¦ ¦ ¦ decimal, numérico o binario. ¦ +------------------------+----------------+-------- --------+------------------------------------------ -------¦ ¦ NUMERIC_PRECISION ¦ PRECISION ¦ INTEGER Con ¦ La precisión de todos los parámetros numé ricos. ¦ ¦ ¦ ¦ posibil idad de ¦ ¦ ¦ ¦ ¦ nulos ¦ Contiene el valor nulo si el parámetro no es ¦ ¦ ¦ ¦ ¦ numérico. ¦ ¦ ¦ ¦ ¦ ¦ ¦ ¦ ¦ ¦ Nota: Esta columna proporciona la precisión de ¦ ¦ ¦ ¦ ¦ todos los tipos de datos numéricos , ¦ ¦ ¦ ¦ ¦ incluida la coma flotante de preci sión ¦ ¦ ¦ ¦ ¦ única y doble. La columna ¦ ¦ ¦ ¦ ¦ NUMERIC_PRECISION_RADIX indica si el ¦ ¦ ¦ ¦ ¦ valor de esta columna está en dígi tos ¦ ¦ ¦ ¦ ¦ binarios o decimales. ¦ +------------------------+----------------+-------- --------+------------------------------------------ -------¦ ¦ CCSID ¦ CCSID ¦ INTEGER Con ¦ El valor del CCSID para los parámetros CH AR, ¦ ¦ ¦ ¦ posibil idad de ¦ VARCHAR, DATE, TIME, TIMESTAMP, GRAPHIC y ¦ ¦ ¦ ¦ nulos ¦ VARGRAPHIC. ¦ ¦ ¦ ¦ ¦ ¦ ¦ ¦ ¦ ¦ Contiene el valor nulo si el parámetro es ¦ ¦ ¦ ¦ ¦ numérico. ¦ +------------------------+----------------+-------- --------+------------------------------------------ -------¦ ¦ CHARACTER_MAXIMUM_LENGT¦ CHARLEN ¦ INTEGER Con ¦ Longitud máxima de la serie para tipos de datos ¦ ¦ ¦ ¦ posibil idad de ¦ gráficos y de caracteres. ¦ ¦ ¦ ¦ nulos ¦ ¦ ¦ ¦ ¦ ¦ Contiene el valor nulo si el parámetro es ¦ ¦ ¦ ¦ ¦ numérico. ¦ +------------------------+----------------+-------- --------+------------------------------------------ -------¦ ¦ CHARACTER_OCTET_LENGTH ¦ CHARBYTE ¦ INTEGER Con ¦ Número de bytes para tipos de datos gráf icos y ¦ ¦ ¦ ¦ posibil idad de ¦ de caracteres. ¦

DB2/400 Manual de Consulta SQL V3R7 SYSPARMS

© Copyright IBM Corp. 1995, 1996 H.11 - 1

Page 822: DB2/400 Manual de Consulta SQLmarce.com/docs/systems/manuales/db2_400_manual_consulta_sql_v3r7.pdf · VERSION Nota de Versión Segunda edición (noviembre de 1996) Este manual es

¦ ¦ ¦ nulos ¦ ¦ ¦ ¦ ¦ ¦ Contiene el valor nulo si el parámetro no es ¦ ¦ ¦ ¦ ¦ gráfico o de caracteres. ¦ +------------------------+----------------+-------- --------+------------------------------------------ -------¦ ¦ NUMERIC_PRECISION_RADIX¦ RADIX ¦ INTEGER Con ¦ Indica si la precisión especificada en la ¦ ¦ ¦ ¦ posibil idad de ¦ columna NUMERIC_PRECISION se especifica c omo un ¦ ¦ ¦ ¦ nulos ¦ número de dígitos decimales o binarios: ¦ ¦ ¦ ¦ ¦ ¦ ¦ ¦ ¦ ¦ 2 Binarios; se especifica precisión de ¦ ¦ ¦ ¦ ¦ coma flotante en dígitos binari os. ¦ ¦ ¦ ¦ ¦ ¦ ¦ ¦ ¦ ¦ 10 Decimales; todos los demás tipos ¦ ¦ ¦ ¦ ¦ numéricos se especifican en díg itos ¦ ¦ ¦ ¦ ¦ decimales. ¦ ¦ ¦ ¦ ¦ ¦ ¦ ¦ ¦ ¦ Contiene el valor nulo si el parámetro no es ¦ ¦ ¦ ¦ ¦ numérico. ¦ +------------------------+----------------+-------- --------+------------------------------------------ -------¦ ¦ DATETIME_PRECISION ¦ DATPRC ¦ INTEGER Con ¦ La parte fraccional de una fecha, hora o ¦ ¦ ¦ ¦ posibil idad de ¦ indicación de la hora. ¦ ¦ ¦ ¦ nulos ¦ ¦ ¦ ¦ ¦ ¦ 0 Para tipos de datos DATE y TIME ¦ ¦ ¦ ¦ ¦ ¦ ¦ ¦ ¦ ¦ 6 Para tipos de datos TIMESTAMP (número ¦ ¦ ¦ ¦ ¦ de microsegundos). ¦ ¦ ¦ ¦ ¦ ¦ ¦ ¦ ¦ ¦ Contiene el valor nulo si el parámetro no es ¦ ¦ ¦ ¦ ¦ una fecha, hora o indicación de la hora. ¦ +------------------------+----------------+-------- --------+------------------------------------------ -------¦ ¦ IS_NULLABLE ¦ NULLS ¦ VARCHAR (3) ¦ Indica si el parámetro tiene posibilidad de ¦ ¦ ¦ ¦ ¦ nulos. ¦ ¦ ¦ ¦ ¦ ¦ ¦ ¦ ¦ ¦ NO El parámetro no permite nulos. ¦ ¦ ¦ ¦ ¦ YES El parámetro permite nulos. ¦ +------------------------+----------------+-------- --------+------------------------------------------ -------¦ ¦ LONG_COMMENT ¦ REMARKS ¦ VARCHAR (2000) ¦ Una serie de caracteres que proporciona c on la ¦ ¦ ¦ ¦ Con ¦ sentencia COMMENT ON. Contiene el valor nulo ¦ ¦ ¦ ¦ posibil idad de ¦ si no existen comentarios. ¦ ¦ ¦ ¦ nulos ¦ ¦ +-------------------------------------------------- --------------------------------------------------- -------+

DB2/400 Manual de Consulta SQL V3R7 SYSPARMS

© Copyright IBM Corp. 1995, 1996 H.11 - 2

Page 823: DB2/400 Manual de Consulta SQLmarce.com/docs/systems/manuales/db2_400_manual_consulta_sql_v3r7.pdf · VERSION Nota de Versión Segunda edición (noviembre de 1996) Este manual es

H.12 SYSPROCS La tabla SYSPROCS contiene una fila para cada proce dimiento creado mediante la sentencia CREATE PROCEDURE. La siguien te tabla describe las columnas de la tabla SYSPROCS: +-------------------------------------------------- --------------------------------------------------- -------+ ¦ Tabla 55. Tabla SYSPROCS ¦ +-------------------------------------------------- --------------------------------------------------- -------¦ ¦ Nombre de columna ¦ Nombre de ¦ Tipo de datos ¦ Descripción ¦ ¦ ¦ columna del ¦ ¦ ¦ ¦ ¦ sistema ¦ ¦ ¦ +------------------------+----------------+-------- --------+------------------------------------------ -------¦ ¦ SPECIFIC_SCHEMA ¦ SPECSCHEMA ¦ VARCHAR (128) ¦ Nombre de esquema del ejemplo de la rutin a ¦ ¦ ¦ ¦ ¦ (procedimiento). ¦ +------------------------+----------------+-------- --------+------------------------------------------ -------¦ ¦ SPECIFIC_NAME ¦ SPECNAME ¦ VARCHAR (128) ¦ Nombre del ejemplo de rutina. ¦ +------------------------+----------------+-------- --------+------------------------------------------ -------¦ ¦ ROUTINE_SCHEMA ¦ PROCSCHEMA ¦ VARCHAR (128) ¦ Nombre del esquema SQL (colección) que co ntiene ¦ ¦ ¦ ¦ ¦ la rutina. ¦ +------------------------+----------------+-------- --------+------------------------------------------ -------¦ ¦ ROUTINE_NAME ¦ PROCNAME ¦ VARCHAR (128) ¦ Nombre de la rutina. ¦ +------------------------+----------------+-------- --------+------------------------------------------ -------¦ ¦ ROUTINE_DEFINER ¦ DEFINER ¦ VARCHAR (128) ¦ Nombre del usuario que ha definido la rut ina. ¦ +------------------------+----------------+-------- --------+------------------------------------------ -------¦ ¦ ROUTINE_BODY ¦ BODY ¦ VARCHAR (8) ¦ El tipo del cuerpo de la rutina: ¦ ¦ ¦ ¦ ¦ ¦ ¦ ¦ ¦ ¦ EXTERNAL Se trata de una rutina externa. ¦ ¦ ¦ ¦ ¦ SQL Se trata de una rutina SQL. Ob serve ¦ ¦ ¦ ¦ ¦ que actualmente no se da soport e a ¦ ¦ ¦ ¦ ¦ las rutinas SQL. ¦ +------------------------+----------------+-------- --------+------------------------------------------ -------¦ ¦ EXTERNAL_NAME ¦ EXTNAME ¦ VARCHAR (128) ¦ Si se trata de una rutina externa, esta c olumna ¦ ¦ ¦ ¦ Con ¦ identifica el nombre del programa externo . Si ¦ ¦ ¦ ¦ posibil idad de ¦ se trata de una rutina SQL, esta columna es ¦ ¦ ¦ ¦ nulos ¦ nula. ¦ ¦ ¦ ¦ ¦ ¦ �¦ ¦ ¦ ¦ Para REXX, el nombre del programa exte rno ¦ ¦ ¦ ¦ ¦ es ¦ ¦ ¦ ¦ ¦ nombre-colección/nombre-archivo-fuente(nombr¦-miemb ro) . �¦ ¦ ¦ ¦ Para todos los demás lenguajes, el nom bre ¦ ¦ ¦ ¦ ¦ del programa externo es ¦ ¦ ¦ ¦ ¦ nombre-colección/nombre-programa . ¦ +------------------------+----------------+-------- --------+------------------------------------------ -------¦ ¦ EXTERNAL_LANGUAGE ¦ LANGUAGE ¦ VARCHAR (8) Con ¦ Si se trata de una rutina externa, esta c olumna ¦ ¦ ¦ ¦ posibil idad de ¦ identifica el nombre del programa externo . Si ¦ ¦ ¦ ¦ nulos ¦ se trata de una rutina SQL, esta columna es ¦ ¦ ¦ ¦ ¦ nula. ¦ ¦ ¦ ¦ ¦ ¦ ¦ ¦ ¦ ¦ C El programa externo está escrit o en ¦ ¦ ¦ ¦ ¦ C. ¦ ¦ ¦ ¦ ¦ CL El programa externo está escrit o en ¦ ¦ ¦ ¦ ¦ CL. ¦ ¦ ¦ ¦ ¦ COBOL El programa externo está escrit o en ¦ ¦ ¦ ¦ ¦ COBOL. ¦ ¦ ¦ ¦ ¦ COBOLLE El programa externo está escrit o en ¦ ¦ ¦ ¦ ¦ ILE COBOL/400. ¦ ¦ ¦ ¦ ¦ FORTRAN El programa externo está escrit o en ¦ ¦ ¦ ¦ ¦ FORTRAN. ¦ ¦ ¦ ¦ ¦ PLI El programa externo está escrit o en ¦ ¦ ¦ ¦ ¦ PL/I. ¦ ¦ ¦ ¦ ¦ REXX El programa externo es un ¦ ¦ ¦ ¦ ¦ procedimiento REXX. ¦ ¦ ¦ ¦ ¦ RPG El programa externo está escrit o en ¦ ¦ ¦ ¦ ¦ RPG. ¦ ¦ ¦ ¦ ¦ RPGLE El programa externo está escrit o en ¦ ¦ ¦ ¦ ¦ ILE RPG/400. ¦ +------------------------+----------------+-------- --------+------------------------------------------ -------¦ ¦ PARAMETER_STYLE ¦ PARM_STYLE ¦ VARCHAR (7) Con ¦ Si se trata de una rutina externa, esta c olumna ¦ ¦ ¦ ¦ posibil idad de ¦ identifica el estilo del parámetro (conve nio de ¦ ¦ ¦ ¦ nulos ¦ denominación). Si se trata de una rutina SQL, ¦ ¦ ¦ ¦ ¦ esta columna es nula. ¦ ¦ ¦ ¦ ¦ ¦ ¦ ¦ ¦ ¦ GENERAL Es el convenio de denominación ¦ ¦ ¦ ¦ ¦ GENERAL. ¦ ¦ ¦ ¦ ¦ NULLS Es el convenio de denominación ¦ ¦ ¦ ¦ ¦ GENERAL WITH NULLS. ¦ +------------------------+----------------+-------- --------+------------------------------------------ -------¦ ¦ IS_VARIANT ¦ VARIANT ¦ VARCHAR (3) Con ¦ Si se trata de una rutina externa, esta c olumna ¦ ¦ ¦ ¦ posibil idad de ¦ indica si la rutina es variable. Es deci r, si ¦ ¦ ¦ ¦ nulos ¦ una llamada al procedimiento con los mism os ¦ ¦ ¦ ¦ ¦ argumentos devolverá siempre el mismo ¦ ¦ ¦ ¦ ¦ resultado. Si se trata de una rutina SQL , esta ¦ ¦ ¦ ¦ ¦ columna es nula. ¦ ¦ ¦ ¦ ¦ ¦ ¦ ¦ ¦ ¦ NO El procedimiento no es variable. ¦ ¦ ¦ ¦ ¦ YES El procedimiento es variable. ¦ +------------------------+----------------+-------- --------+------------------------------------------ -------¦ ¦ RESULT_SETS ¦ RESULTS ¦ SMALLIN T ¦ Identifica el número máximo de conjuntos de ¦ ¦ ¦ ¦ ¦ resultados devuelto. 0 indica que no exi ste ¦ ¦ ¦ ¦ ¦ ningún conjunto de resultados. ¦ +------------------------+----------------+-------- --------+------------------------------------------ -------¦ ¦ IN_PARMS ¦ IN_PARMS ¦ SMALLIN T ¦ Identifica el número de parámetros de ent rada. ¦ ¦ ¦ ¦ ¦ 0 indica que no existe ningún parámetro d e ¦ ¦ ¦ ¦ ¦ entrada. ¦ +------------------------+----------------+-------- --------+------------------------------------------ -------¦ ¦ OUT_PARMS ¦ OUT_PARMS ¦ SMALLIN T ¦ Identifica el número de parámetros de sal ida. ¦ ¦ ¦ ¦ ¦ 0 indica que no existe ningún parámetro d e ¦

DB2/400 Manual de Consulta SQL V3R7 SYSPROCS

© Copyright IBM Corp. 1995, 1996 H.12 - 1

Page 824: DB2/400 Manual de Consulta SQLmarce.com/docs/systems/manuales/db2_400_manual_consulta_sql_v3r7.pdf · VERSION Nota de Versión Segunda edición (noviembre de 1996) Este manual es

¦ ¦ ¦ ¦ salida. ¦ +------------------------+----------------+-------- --------+------------------------------------------ -------¦ ¦ INOUT_PARMS ¦ INOUT_PARM ¦ SMALLIN T ¦ Identifica el número de parámetros de ¦ ¦ ¦ ¦ ¦ entrada/salida. 0 indica que no existe n ingún ¦ ¦ ¦ ¦ ¦ parámetro de entrada/salida. ¦ +------------------------+----------------+-------- --------+------------------------------------------ -------¦ ¦ PARSE_TREE ¦ PARSE_TREE ¦ VARCHAR (350) ¦ Si se trata de una rutina externa, esta c olumna ¦ ¦ ¦ ¦ FOR BIT DATA ¦ identifica el árbol de análisis de la sen tencia ¦ ¦ ¦ ¦ ¦ CREATE PROCEDURE. Sólo se utiliza ¦ ¦ ¦ ¦ ¦ internamente. ¦ +------------------------+----------------+-------- --------+------------------------------------------ -------¦ ¦ PARM_ARRAY ¦ PARM_ARRAY ¦ VARCHAR (10000) ¦ Si se trata de una rutina externa, esta c olumna ¦ ¦ ¦ ¦ FOR BIT DATA ¦ identifica la matriz de parámetros creada a ¦ ¦ ¦ ¦ ¦ partir de la sentencia CREATE PROCEDURE. Sólo ¦ ¦ ¦ ¦ ¦ se utiliza internamente. ¦ +------------------------+----------------+-------- --------+------------------------------------------ -------¦ ¦ PARM_LIST ¦ PARMLIST ¦ VARCHAR (3000) ¦ Si se trata de una rutina externa, esta c olumna ¦ ¦ ¦ ¦ ¦ identifica los parámetros de la rutina de una ¦ ¦ ¦ ¦ ¦ representación de caracteres. ¦ +------------------------+----------------+-------- --------+------------------------------------------ -------¦ ¦ LONG_COMMENT ¦ REMARKS ¦ VARCHAR (2000) ¦ Una serie de caracteres que proporciona c on la ¦ ¦ ¦ ¦ Con ¦ sentencia COMMENT ON. Contiene el valor nulo ¦ ¦ ¦ ¦ posibil idad de ¦ si no existen comentarios. ¦ ¦ ¦ ¦ nulos ¦ ¦ +-------------------------------------------------- --------------------------------------------------- -------+

DB2/400 Manual de Consulta SQL V3R7 SYSPROCS

© Copyright IBM Corp. 1995, 1996 H.12 - 2

Page 825: DB2/400 Manual de Consulta SQLmarce.com/docs/systems/manuales/db2_400_manual_consulta_sql_v3r7.pdf · VERSION Nota de Versión Segunda edición (noviembre de 1996) Este manual es

H.13 SYSREFCST La vista SYSREFCST contiene una fila para cada clav e foránea de la colección SQL. La siguiente tabla describe las col umnas de la vista SYSREFCST: +-------------------------------------------------- --------------------------------------------------- -------+ ¦ Tabla 56. Vista SYSREFCST ¦ +-------------------------------------------------- --------------------------------------------------- -------¦ ¦ Nombre de columna ¦ Nombre de ¦ Tipo de datos ¦ Descripción ¦ ¦ ¦ columna del ¦ ¦ ¦ ¦ ¦ sistema ¦ ¦ ¦ +------------------------+----------------+-------- --------+------------------------------------------ -------¦ ¦ CONSTRAINT_SCHEMA ¦ CDBNAME ¦ VARCHAR (128) ¦ Nombre de la colección que contiene la ¦ ¦ ¦ ¦ ¦ restricción. ¦ +------------------------+----------------+-------- --------+------------------------------------------ -------¦ ¦ CONSTRAINT_NAME ¦ RELNAME ¦ VARCHAR (128) ¦ Nombre de la restricción. ¦ +------------------------+----------------+-------- --------+------------------------------------------ -------¦ ¦ UNIQUE_CONSTRAINT_SCHEM¦ UNQDBNAME ¦ VARCHAR (128) ¦ Nombre de la colección SQL que contiene l a ¦ ¦ ¦ ¦ ¦ restricción de unicidad a la que se hace ¦ ¦ ¦ ¦ ¦ referencia mediante la restricción de ¦ ¦ ¦ ¦ ¦ referencia. ¦ +------------------------+----------------+-------- --------+------------------------------------------ -------¦ ¦ UNIQUE_CONSTRAINT_NAME ¦ UNQNAME ¦ VARCHAR (128) ¦ Nombre de la restricción de unicidad a la que ¦ ¦ ¦ ¦ ¦ se hace referencia mediante la restricció n de ¦ ¦ ¦ ¦ ¦ referencia. ¦ +------------------------+----------------+-------- --------+------------------------------------------ -------¦ ¦ MATCH_OPTION ¦ MATCH ¦ VARCHAR (7) ¦ Opción de coincidencia. Siempre será NONE . ¦ +------------------------+----------------+-------- --------+------------------------------------------ -------¦ ¦ UPDATE_RULE ¦ UPDATE ¦ VARCHAR (11) ¦ Regla de actualización. ¦ ¦ ¦ ¦ ¦ ¦ �¦ ¦ ¦ ¦ NO ACTION ¦ �¦ ¦ ¦ ¦ RESTRICT ¦ +------------------------+----------------+-------- --------+------------------------------------------ -------¦ ¦ DELETE_RULE ¦ DELETE ¦ VARCHAR (11) ¦ Regla de supresión ¦ ¦ ¦ ¦ ¦ ¦ �¦ ¦ ¦ ¦ NO ACTION ¦ �¦ ¦ ¦ ¦ CASCADE ¦ �¦ ¦ ¦ ¦ SET NULL ¦ �¦ ¦ ¦ ¦ SET DEFAULT ¦ �¦ ¦ ¦ ¦ RESTRICT ¦ +------------------------+----------------+-------- --------+------------------------------------------ -------¦ ¦ COLUMN_COUNT ¦ COLCOUNT ¦ INTEGER ¦ Número de columnas de la clave foránea. ¦ +-------------------------------------------------- --------------------------------------------------- -------+

DB2/400 Manual de Consulta SQL V3R7 SYSREFCST

© Copyright IBM Corp. 1995, 1996 H.13 - 1

Page 826: DB2/400 Manual de Consulta SQLmarce.com/docs/systems/manuales/db2_400_manual_consulta_sql_v3r7.pdf · VERSION Nota de Versión Segunda edición (noviembre de 1996) Este manual es

H.14 SYSTABLES La vista SYSTABLES contiene una fila para cada tabl a o vista de la colección SQL, incluidas las tablas y vistas del ca tálogo SQL. La siguiente tabla describe las columnas de la vista S YSTABLES: +-------------------------------------------------- --------------------------------------------------- -------+ ¦ Tabla 57. Vista SYSTABLES ¦ +-------------------------------------------------- --------------------------------------------------- -------¦ ¦ Nombre de columna ¦ Nombre de ¦ Tipo de datos ¦ Descripción ¦ ¦ ¦ columna del ¦ ¦ ¦ ¦ ¦ sistema ¦ ¦ ¦ +------------------------+----------------+-------- --------+------------------------------------------ -------¦ ¦ TABLE_NAME ¦ NAME ¦ VARCHAR (128) ¦ Nombre de la tabla o vista. Se trata del ¦ ¦ ¦ ¦ ¦ nombre de tabla o vista SQL, en caso que ¦ ¦ ¦ ¦ ¦ exista; de lo contrario, es el nombre de tabla ¦ ¦ ¦ ¦ ¦ o vista del sistema. ¦ +------------------------+----------------+-------- --------+------------------------------------------ -------¦ ¦ TABLE_OWNER ¦ CREATOR ¦ VARCHAR (128) ¦ Propietario de la tabla o vista ¦ +------------------------+----------------+-------- --------+------------------------------------------ -------¦ ¦ TABLE_TYPE ¦ TYPE ¦ CHAR(1) ¦ Si la fila describe una tabla o vista: ¦ ¦ ¦ ¦ ¦ ¦ ¦ ¦ ¦ ¦ L Archivo lógico ¦ ¦ ¦ ¦ ¦ P Archivo físico ¦ ¦ ¦ ¦ ¦ T Tabla ¦ ¦ ¦ ¦ ¦ V Vista ¦ +------------------------+----------------+-------- --------+------------------------------------------ -------¦ ¦ COLUMN_COUNT ¦ COLCOUNT ¦ INTEGER ¦ Número de columnas de la tabla o vista ¦ +------------------------+----------------+-------- --------+------------------------------------------ -------¦ ¦ ROW_LENGTH ¦ RECLENGTH (46) ¦ INTEGER ¦ Longitud máxima de cualquier re gistro de la ¦ ¦ ¦ ¦ ¦ tabla ¦ +------------------------+----------------+-------- --------+------------------------------------------ -------¦ ¦ TABLE_TEXT ¦ LABEL ¦ VARCHAR (50) ¦ Una serie de caracteres que proporciona c on la ¦ ¦ ¦ ¦ ¦ sentencia LABEL ON. ¦ +------------------------+----------------+-------- --------+------------------------------------------ -------¦ ¦ LONG_COMMENT ¦ REMARKS ¦ VARCHAR (2000) ¦ Una serie de caracteres que proporciona c on la ¦ ¦ ¦ ¦ con ¦ sentencia COMMENT ON. Contiene el valor nulo ¦ ¦ ¦ ¦ posibil idad de ¦ si no existen comentarios. ¦ ¦ ¦ ¦ nulos. ¦ ¦ +------------------------+----------------+-------- --------+------------------------------------------ -------¦ ¦ TABLE_SCHEMA ¦ DBNAME ¦ VARCHAR (128) ¦ Nombre de la colección SQL que contiene l a ¦ ¦ ¦ ¦ ¦ tabla o vista ¦ +------------------------+----------------+-------- --------+------------------------------------------ -------¦ ¦ LAST_ALTERED_TIMESTAMP ¦ ALTEREDTS ¦ TIMESTA MP ¦ Última modificación de indicación de la h ora de ¦ ¦ ¦ ¦ ¦ la tabla ¦ +------------------------+----------------+-------- --------+------------------------------------------ -------¦ ¦ SYSTEM_TABLE_NAME ¦ SYS_TNAME ¦ CHAR(10 ) ¦ Nombre de tabla del sistema. ¦ +------------------------+----------------+-------- --------+------------------------------------------ -------¦ ¦ SYSTEM_TABLE_SCHEMA ¦ SYS_DNAME ¦ CHAR(10 ) ¦ Nombre de colección del sistema ¦ +-------------------------------------------------- --------------------------------------------------- -------+ (46) La longitud es el número de bytes pasados en almacenamientos intermedios de base de datos, n o la longitud del almacenamiento interno.

DB2/400 Manual de Consulta SQL V3R7 SYSTABLES

© Copyright IBM Corp. 1995, 1996 H.14 - 1

Page 827: DB2/400 Manual de Consulta SQLmarce.com/docs/systems/manuales/db2_400_manual_consulta_sql_v3r7.pdf · VERSION Nota de Versión Segunda edición (noviembre de 1996) Este manual es

H.15 SYSVIEWDEP La vista SYSVIEWDEP registra las dependencias de vi stas sobre tablas, incluidas las vistas del catálogo SQL. La siguient e tabla describe las columnas de la vista SYSVIEWDEP: +-------------------------------------------------- --------------------------------------------------- -------+ ¦ Tabla 58. Vista SYSVIEWDEP ¦ +-------------------------------------------------- --------------------------------------------------- -------¦ ¦ Nombre de columna ¦ Nombre de ¦ Tipo de datos ¦ Descripción ¦ ¦ ¦ columna del ¦ ¦ ¦ ¦ ¦ sistema ¦ ¦ ¦ +------------------------+----------------+-------- --------+------------------------------------------ -------¦ ¦ VIEW_NAME ¦ DNAME ¦ VARCHAR (128) ¦ Nombre de la vista. Se trata del nombre de ¦ ¦ ¦ ¦ ¦ vista SQL, en caso que exista; de lo cont rario, ¦ ¦ ¦ ¦ ¦ es el nombre de vista del sistema. ¦ +------------------------+----------------+-------- --------+------------------------------------------ -------¦ ¦ VIEW_OWNER ¦ DCREATOR ¦ VARCHAR (128) ¦ Propietario de la vista ¦ +------------------------+----------------+-------- --------+------------------------------------------ -------¦ ¦ TABLE_NAME ¦ BNAME ¦ VARCHAR (128) ¦ Nombre de la tabla o vista de la que depe nde la ¦ ¦ ¦ ¦ ¦ vista. Se trata del nombre de vista SQL, en ¦ ¦ ¦ ¦ ¦ caso que exista; de lo contrario, es el n ombre ¦ ¦ ¦ ¦ ¦ de vista del sistema. ¦ +------------------------+----------------+-------- --------+------------------------------------------ -------¦ ¦ TABLE_OWNER ¦ BCREATOR ¦ VARCHAR (128) ¦ Propietario de la tabla o vista de la que ¦ ¦ ¦ ¦ ¦ depende la vista ¦ +------------------------+----------------+-------- --------+------------------------------------------ -------¦ ¦ TABLE_SCHEMA ¦ BDBNAME ¦ VARCHAR (128) ¦ Nombre de la colección SQL que contiene l a ¦ ¦ ¦ ¦ ¦ tabla o vista de la que depende la vista ¦ +------------------------+----------------+-------- --------+------------------------------------------ -------¦ ¦ TABLE_TYPE ¦ BTYPE ¦ CHAR(1) ¦ Tipo de objeto en el que se ha basado la vista: ¦ ¦ ¦ ¦ ¦ ¦ ¦ ¦ ¦ ¦ T Tabla ¦ ¦ ¦ ¦ ¦ P Archivo físico ¦ ¦ ¦ ¦ ¦ V Vista ¦ ¦ ¦ ¦ ¦ L Archivo lógico ¦ +------------------------+----------------+-------- --------+------------------------------------------ -------¦ ¦ VIEW_SCHEMA ¦ DDBNAME ¦ VARCHAR (128) ¦ Nombre de la colección de la vista. ¦ +------------------------+----------------+-------- --------+------------------------------------------ -------¦ ¦ SYSTEM_VIEW_NAME ¦ SYS_VNAME ¦ CHAR(10 ) ¦ Nombre de vista del sistema ¦ +------------------------+----------------+-------- --------+------------------------------------------ -------¦ ¦ SYSTEM_VIEW_SCHEMA ¦ SYS_VDNAME ¦ CHAR(10 ) ¦ Colección de vista del sistema ¦ +------------------------+----------------+-------- --------+------------------------------------------ -------¦ ¦ SYSTEM_TABLE_NAME ¦ SYS_TNAME ¦ CHAR(10 ) ¦ Nombre de tabla del sistema ¦ +------------------------+----------------+-------- --------+------------------------------------------ -------¦ ¦ SYSTEM_TABLE_SCHEMA ¦ SYS_DNAME ¦ CHAR(10 ) ¦ Colección de tabla del sistema ¦ +-------------------------------------------------- --------------------------------------------------- -------+

DB2/400 Manual de Consulta SQL V3R7 SYSVIEWDEP

© Copyright IBM Corp. 1995, 1996 H.15 - 1

Page 828: DB2/400 Manual de Consulta SQLmarce.com/docs/systems/manuales/db2_400_manual_consulta_sql_v3r7.pdf · VERSION Nota de Versión Segunda edición (noviembre de 1996) Este manual es

H.16 SYSVIEWS La vista SYSVIEWS contiene una fila para cada vista de la colección SQL, incluidas las vistas del catálogo SQL. La siguient e tabla describe las columnas de la vista SYSVIEWS: +-------------------------------------------------- --------------------------------------------------- -------+ ¦ Tabla 59. Vista SYSVIEWS ¦ +-------------------------------------------------- --------------------------------------------------- -------¦ ¦ Nombre de columna ¦ Nombre de ¦ Tipo de datos ¦ Descripción ¦ ¦ ¦ columna del ¦ ¦ ¦ ¦ ¦ sistema ¦ ¦ ¦ +------------------------+----------------+-------- --------+------------------------------------------ -------¦ ¦ TABLE_NAME ¦ NAME ¦ VARCHAR (128) ¦ Nombre de la vista. Se trata del nombre de ¦ ¦ ¦ ¦ ¦ vista SQL, en caso que exista; de lo cont rario, ¦ ¦ ¦ ¦ ¦ es el nombre de vista del sistema. ¦ +------------------------+----------------+-------- --------+------------------------------------------ -------¦ ¦ VIEW_OWNER ¦ CREATOR ¦ VARCHAR (128) ¦ Propietario de la vista ¦ +------------------------+----------------+-------- --------+------------------------------------------ -------¦ ¦ SEQNO ¦ SEQNO ¦ INTEGER ¦ Número de secuencia de esta fila; siempre será ¦ ¦ ¦ ¦ ¦ 1. ¦ +------------------------+----------------+-------- --------+------------------------------------------ -------¦ ¦ CHECK_OPTION ¦ CHECK ¦ CHAR(1) ¦ La opción de comprobación utilizada en la vista ¦ ¦ ¦ ¦ ¦ ¦ ¦ ¦ ¦ ¦ N No se ha especificado opción de compro bación ¦ ¦ ¦ ¦ ¦ Y Se ha especificado la opción local ¦ ¦ ¦ ¦ ¦ C Se ha especificado la opción en cascad a ¦ +------------------------+----------------+-------- --------+------------------------------------------ -------¦ ¦ VIEW_DEFINITION ¦ TEXT ¦ VARCHAR (2000) ¦ La parte de la expresión de consulta de l a ¦ ¦ ¦ ¦ con ¦ sentencia CREATE VIEW. Si la serie no se puede ¦ ¦ ¦ ¦ posibil idad de ¦ contener, el valor es nulo. ¦ ¦ ¦ ¦ nulos. ¦ ¦ +------------------------+----------------+-------- --------+------------------------------------------ -------¦ ¦ IS_UPDATABLE ¦ UPDATES ¦ CHAR(1) ¦ Especifica si la vista es actualizable: ¦ ¦ ¦ ¦ ¦ ¦ ¦ ¦ ¦ ¦ Y La vista es actualizable ¦ ¦ ¦ ¦ ¦ N La vista es de sólo lectura ¦ +------------------------+----------------+-------- --------+------------------------------------------ -------¦ ¦ TABLE_SCHEMA ¦ DBNAME ¦ VARCHAR (128) ¦ Nombre de la colección SQL que contiene l a ¦ ¦ ¦ ¦ ¦ vista. ¦ +------------------------+----------------+-------- --------+------------------------------------------ -------¦ ¦ SYSTEM_VIEW_NAME ¦ SYS_VNAME ¦ CHAR(10 ) ¦ Nombre de vista del sistema ¦ +------------------------+----------------+-------- --------+------------------------------------------ -------¦ ¦ SYSTEM_VIEW_SCHEMA ¦ SYS_VDNAME ¦ CHAR(10 ) ¦ Nombre de colección de vista del sistema ¦ +-------------------------------------------------- --------------------------------------------------- -------+

DB2/400 Manual de Consulta SQL V3R7 SYSVIEWS

© Copyright IBM Corp. 1995, 1996 H.16 - 1

Page 829: DB2/400 Manual de Consulta SQLmarce.com/docs/systems/manuales/db2_400_manual_consulta_sql_v3r7.pdf · VERSION Nota de Versión Segunda edición (noviembre de 1996) Este manual es

BIBLIOGRAFIA Bibliografía La publicaciones que figuran en esta lista contiene n información adicional sobre los temas tratados o mencionados en esta guía . Estos manuales se listan con sus títulos completos y números de pedid o. Cuando se citan en esta guía, se utiliza una versión abreviada del tít ulo. � Copia seguridad y recuperación - Básica , SC10-9626 (SC41-4304) Esta guía contiene un subconjunto de la informa ción que se encuentra en la publicación Backup and Recovery - Advanced , SC41-4305. Contiene información sobre la planificación de la estrat egia de copia de seguridad y recuperación, los distintos tipo de soportes magnéticos disponibles para los procedimientos de salvar y restaurar, y los procedimientos de recuperación de disco. En el la se describe también la forma de instalar de nuevo el sistema a part ir de una copia de seguridad. � ILE COBOL/400 Guía del programador , SC10-9658 (SC09-2072) Esta guía facilita la información precisa para diseñar, escribir, probar y mantener programas en COBOL/400 en el sistema AS/400. | � ILE RPG/400 Guía del programador , SC10-9659 (SC09-2074) | Esta guía facilita la información necesaria par a diseñar, escribir,| probar y mantener programas en ILE RPG/400 en e l sistema AS/400. | � ILE C/400 Programmer's Guide , SC09-2069 | Esta guía facilita la información necesaria par a diseñar, escribir,| probar y mantener programas en ILE C/400 en el sistema AS/400. | � REXX/400 Programmer's Guide , SC24-5739 | Esta guía facilita la información necesaria par a diseñar, escribir,| probar y mantener programas en REXX/400 en el s istema AS/400. � PL/I User's Guide and Reference , SC09-1825 Esta guía facilita información sobre la utiliza ción del AS/400 PL/I en el entorno Sistema/38. En ella se señalan las d iferencias entre el entorno Sistema/38 y el entorno AS/400 así como las mejoras disponibles en el entorno AS/400. � CL Programación , SC10-9637 (SC41-4721) Esta guía contiene una amplia exposición sobre temas de programación en AS/400, incluida una explicación general sob re los objetos y bibliotecas, la programación en CL, el control de flujo y las comunicaciones entre programas, trabajar con ob jetos en los programas CL y la creación de programas CL. Otros temas tratados son los mensajes predefinidos e improvisados y su manej o, la definición y creación de mandatos y menús definidos por el u suario, y las pruebas de aplicaciones, que incluyen la modalidad de d epuración, los puntos de interrupción, los rastreos y las funciones d e visualización. � Gestión de datos , SC10-9635 (SC41-4710) Esta guía facilita información sobre la utiliza ción de los archivos en los programas de aplicación. � DB2/400 Programación de la base de datos , SC10-9634 (SC41-4701) Esta guía contiene una descripción detallada de la organización de las bases de datos en AS/400, e incluye información sobre la forma de crear, describir y actualizar archivos de base de datos en el sistema. � Distributed Database Programming , SC41-3702 Proporciona información acerca de cómo preparar y gestionar un sistema AS/400 en una base de datos relacional distribu ida utilizando la Arquitectura de Bases de Datos Relacionales Dis tribuidas (DRDA). Describe la planificación, puesta a punto, prog ramación, administración y forma de operar con una base d e datos relacional distribuida en más de un sistema AS/400 en un e ntorno de sistema par. � Security - Reference , SC41-4302 Esta guía facilita información sobre los concep tos de seguridad del sistema, la planificación y configuración de la misma en el sistema. También proporciona información acerca de cómo proteger el sistema y los datos frente a la utilización de personas q ue no tengan la autorización adecuada, de cómo proteger los dat os de posibles daños o de su destrucción intencionada o no intencionad a, y de cómo poner al día y configurar la seguridad del sistema. � DB/2 for OS/400 SQL Programming , SC41-4611 Este manual contiene una visión general de cómo diseñar, escribir, ejecutar y probar sentencias DB2 para OS/400. En él se describe también el Lenguaje de Consulta Estructurada (S QL) interactivo. El manual proporciona ejemplos de cómo escribir se ntencias SQL en programas COBOL, ILE COBOL/400, ILE RPG/400, IL E C/400 y PL/I. � IDDU Use , SC41-3704 En este manual se describe la utilización del p rograma de utilidad de

DB2/400 Manual de Consulta SQL V3R7 Bibliografía

© Copyright IBM Corp. 1995, 1996 BIBLIOGRAFIA - 1

Page 830: DB2/400 Manual de Consulta SQLmarce.com/docs/systems/manuales/db2_400_manual_consulta_sql_v3r7.pdf · VERSION Nota de Versión Segunda edición (noviembre de 1996) Este manual es

definición de datos interactivos (IDDU) del AS/ 400 para describir diccionarios de datos, archivos y registros al sistema. � DB2 for OS/400 SQL Call Level Interface , SC41-4806 En este manual se describe cómo utilizar la Int erfaz de Nivel de Llamada X/Open SQL para acceder directamente a funciones de SQL a través de llamadas de procedimiento a un progra ma de servicio suministrado por DB2 para OS/400. � DB2 para OS/400 Advanced Database Functions , GG24-4249-00 En este manual se proporcionan sugerencias, dir ectrices y ejemplos prácticos de cuándo y cómo se pueden utilizar c on eficacia las funciones que ofrece DB2 para OS/400, por ejemp lo desencadenantes, integridad referencial, DRDA-2, compromiso en 2 etapas y procedimientos almacenados. También proporcion a ejemplos desarrollados en varios lenguajes de programaci ón (RPG, COBOL, C), utilizando la interfaz de acceso a datos SQL y nativos en el Entorno de Lenguajes Integrados y con el Modelo de Prog rama Original. � AS/400 Client Access para Windows 3.1 ODBC - Guía d el Usuario , SC10-9695 (SC41-3533) En este manual se describe cómo poner a punto y ejecutar aplicaciones ODBC utilizando ODBC Client Access. En este doc umento se incluyen capítulos acerca del rendimiento, ejemplos y la configuración de aplicaciones específicas para la ejecución con ODBC Client Access. | � DB2 Multisystem for OS/400 , SC41-3705 | Esta publicación describe los conceptos fundame ntales de los archivos| de bases de datos relacionales distribuidas, gr upos de nodos y| particiones. El manual proporciona la informac ión necesaria para| crear y utilizar archivos de base de datos part icionados entre| múltiples sistemas AS/400. Se proporciona info rmación acerca de cómo| configurar los sistemas, cómo crear los archivo s y cómo utilizar los| archivos en las aplicaciones.

DB2/400 Manual de Consulta SQL V3R7 Bibliografía

© Copyright IBM Corp. 1995, 1996 BIBLIOGRAFIA - 2

Page 831: DB2/400 Manual de Consulta SQLmarce.com/docs/systems/manuales/db2_400_manual_consulta_sql_v3r7.pdf · VERSION Nota de Versión Segunda edición (noviembre de 1996) Este manual es

' (apóstrofo) 2.3.1 2.8.4 - (resta) 2.14.3 Caracteres Especiales ? (signo de interrogación) Véase marcador de parámetros / (división) 2.14.3 " (comillas) 2.3.1 * (asterisco) en la función COUNT 3.1.3 en subselección 4.2.1 * (multiplicación) 2.14.3 ** (exponenciación) 2.14.3 *APOST, opción de precompilador 2.8.7 *APOSTSQL, opción de precompilador 2.8.7 *CNULRQD, opción de precompilador 2.7.2 5.30.7 *COMMA, opción 2.8.6 *DMY, formato de fecha y hora 2.6.6.4 *EUR, formato de fecha y hora 2.6.6.4 *HMS, formato de fecha y hora 2.6.6.4 *ISO, formato de fecha y hora 2.6.6.4 *JIS, formato de fecha y hora 2.6.6.4 *JUL, formato de fecha y hora 2.6.6.4 *MYD, formato de fecha y hora 2.6.6.4 *NOCNULRQD, opción de precompilador 2.7.2 5.30.7 *PERIOD, opción 2.8.6 *PUBLIC autorización 1.23 *QUOTE, opción de precompilador 2.8.7 *QUOTESQL, opción de precompilador 2.8.7 *SYSVAL, opción 2.8.6 *USA, formato de fecha y hora 2.6.6.4 *YMD, formato de fecha y hora 2.6.6.4 + (suma) 2.14.3 || (operador de concatenación) 2.14.2 A ABS, función 3.2.2 ABSVAL, función 3.2.2 ACOS, función 3.2.3 actual, estado de conexión 1.20.4.2 ADD COLUMN, cláusula en la sentencia ALTER TABLE 5.4.5 ADD restricción-unicidad, cláusula sentencia ALTER TABLE 5.4.8 AFTER, cláusula en la sentencia FETCH 5.30.3 5.30.4 ALTER COLUMN, cláusula sentencia ALTER TABLE 5.4.6 ALTER TABLE, sentencia 5.4 a 5.4.13 ALTER, cláusula sentencia GRANT (privilegios de paquete) 5.31.4 sentencia GRANT (privilegios de tabla) 5.32.4 sentencia REVOKE (privilegios de paquete) 5.41.4 sentencia REVOKE (privilegios de tabla) 5.42.4 ALL PRIVILEGES, cláusula sentencia GRANT (privilegios de paquete) 5.31.4 sentencia GRANT (privilegios de tabla) 5.32.4 sentencia REVOKE (privilegios de paquete) 5.41.4 sentencia REVOKE (privilegios de tabla) 5.42.4 ALL SQL, cláusula sentencia DISCONNECT 5.25.4 sentencia RELEASE 5.39.4 ALL, cláusula cláusula de subselección 4.2.1 en cláusula USING sentencia DESCRIBE 5.23.4 sentencia DESCRIBE TABLE 5.24.4 sentencia PREPARE 5.38.4 palabra clave función AVG 3.1.2 función COUNT 3.1.3 función de columna MIN 3.1.5 función MAX 3.1.4 función STDDEV 3.1.6 función SUM 3.1.7 función VAR 3.1.8 función VARIANCE 3.1.8 predicado cuantificado 2.15.2 sentencia DISCONNECT 5.25.4 sentencia GRANT (privilegios de paquete) 5.31.4 sentencia RELEASE 5.39.4 sentencia REVOKE (privilegios de paquete) 5.41.4 sentencia REVOKE (privilegios de tabla) 5.42.4 ALLOCATE, cláusula sentencia CREATE TABLE 5.16.5 AND operador en una condición de búsqueda 3.2.46.1 tabla de verdad 2.16 ANS, estándar G.1 ANTILOG, función 3.2.4 ANY, cláusula en cláusula USING sentencia DESCRIBE 5.23.4 sentencia DESCRIBE TABLE 5.24.4 sentencia PREPARE 5.38.4 predicado cuantificado 2.15.2 área-almacenamiento-filas en la sentencia FETCH 5.30.6 aritméticos, operadores 2.14.3

DB2/400 Manual de Consulta SQL V3R7 Índice

© Copyright IBM Corp. 1995, 1996 INDICE - 1

Page 832: DB2/400 Manual de Consulta SQLmarce.com/docs/systems/manuales/db2_400_manual_consulta_sql_v3r7.pdf · VERSION Nota de Versión Segunda edición (noviembre de 1996) Este manual es

arquitectura de bases de datos relacionales distrib uidas (DRDA) 1.20 Arquitectura de Representación de Datos de Tipo Car ácter (CDRA) 1.21.2 ARRAY, cláusula sentencia SET RESULT SETS 5.47.4 AS, cláusula 4.4.1 cláusula de subselección 4.2.1 cláusula FROM de subselección 4.2.2 cláusula FROM de UPDATE 5.49.4 en cláusula FROM de DELETE 5.22.4 sentencia CREATE VIEW 5.17.4 ASC, cláusula de sentencia select 4.4.1 sentencia CREATE INDEX 5.13.4 asignación números 2.7.1 a 2.7.1.6 reglas 2.7.1 reglas de conversión 2.7.3 series 2.7.2 valores de fecha y hora 2.7.4 ASIN, función 3.2.5 asterisco (*) en la función COUNT 3.1.3 en subselección 4.2.1 ATANH, función 3.2.7 autorización descripción 1.23 privilegios 1.23 autorreferente, fila 1.11 autorreferente, tabla 1.11 AVG, función 3.1.2 B base de datos relacional 1.1 base de datos relacional distribuida consideraciones para su utilización F.0 consideraciones sobre la representación de datos 1.20.5 nivel de aislamiento 1.19 peticionario de la aplicación 1.19 1.20 servidor de la aplicación 1.19 1.20 unidad de trabajo distribuida 1.20.4.1 unidad de trabajo distribuida dirigida por la apl icación 1.20.4.1 unidad de trabajo remota 1.20.3 uso de las ampliaciones a SQL de IBM en servidore s de la aplicación dispares F.0 BEFORE, cláusula en la sentencia FETCH 5.30.3 5.30.4 BEGIN DECLARE SECTION, sentencia 5.5 a 5.5.5 BETWEEN, predicado 2.15.3 bibliografía BIBLIOGRAFIA bloqueo compartir 1.19 durante UPDATE 5.49.6 espacios de tabla 5.36 exclusivo 1.19 sentencia COMMIT 5.9.4 sentencia LOCK TABLE 5.36 bloqueos compartidos 1.19 bloqueos exclusivos 1.19 BOTH, cláusula en cláusula USING sentencia DESCRIBE 5.23.4 sentencia DESCRIBE TABLE 5.24.4 sentencia PREPARE 5.38.4 C C matrices de estructura del lenguaje principal 2.13 programa de aplicación var-leng-princ 2.12 SQLCA (Área de comunicaciones SQL) B.2 SQLDA (área de descriptor SQL) C.5.1 var-leng-princ 2.11 calificación de los nombres de columna 2.10.2 CALL, sentencia 5.6 a 5.6.6 campo SQLERRMC de SQLCA valores para CONNECT B.1 valores para SET CONNECTION B.1 carácter de desplazamiento a teclado estándar 2.7.3 no truncado por asignaciones 2.7.2 carácter de doble byte en la sentencia COMMENT ON 5.8.4 en predicados LIKE 2.15.6 truncado durante la asignación 2.7.2 carácter de escape en SQL identificador delimitado 2.3.1 carácter de sustitución 1.21 carácter de un sólo byte en predicados LIKE 2.15.6 CASCADE, cláusula en DROP COLUMN de sentencia ALTER TABLE 5.4.7 en restricción DROP de sentencia ALTER TABLE 5.4.10 sentencia DROP 5.26.4 CASCADE, regla de supresión descripción 1.11 en la sentencia ALTER TABLE 5.4.9 en la sentencia CREATE TABLE 5.16.7 CASCADED CHECK OPTION, cláusula sentencia CREATE VIEW 5.17.4 catálogo 1.17 H.0 CCSID (identificador de juego de caracteres codific ados) definición 1.21.2

DB2/400 Manual de Consulta SQL V3R7 Índice

© Copyright IBM Corp. 1995, 1996 INDICE - 2

Page 833: DB2/400 Manual de Consulta SQLmarce.com/docs/systems/manuales/db2_400_manual_consulta_sql_v3r7.pdf · VERSION Nota de Versión Segunda edición (noviembre de 1996) Este manual es

especificar en SQLDATA C.4 en SQLNAME C.4 por omisión 1.21.3 valores E.0 CCSID, cláusula DECLARE VARIABLE, sentencia 5.21.1 sentencia CREATE PROCEDURE 5.14.3 sentencia CREATE TABLE 5.16.5 sentencia DECLARE PROCEDURE 5.19.3 CDRA (Arquitectura de Representación de Datos de Ti po Carácter) 1.21.2 ciclo de referencia 1.11 clave compuesta 1.9 exclusiva 1.9 exclusivo, índice 1.10 foránea 1.11 índice primario 1.10 padre 1.11 primaria 1.10 sentencia ALTER TABLE 5.4.8 sentencia CREATE TABLE 5.16.6 clave de partición definición 1.8 en la sentencia CREATE TABLE 5.16.8 CLOSE, sentencia 5.7 a 5.7.6 COALESCE, función 3.2.10 COBOL programa de aplicación enteros 2.6.5.1 matrices de estructura del lenguaje principal 2.13 var-leng-princ 2.11 2.12 variables de serie de longitud variable 2.6.1.3 SQLCA (Área de comunicaciones SQL) B.2 SQLDA (área de descriptor SQL) C.5.2 colección crear 5.12 descripción 1.7 suprimir 5.26.4 COLUMN, cláusula sentencia COMMENT ON 5.8.4 sentencia LABEL ON 5.35.4 columna atributo de longitud 2.6.1.1 de agrupación 4.2.4 definición 1.8 nombre calificado 2.10 en un resultado 4.2.1 nombre de columna del sistema 1.8 reglas 4.3 columna, función de Véase función columnas de resultados de una subselección 4.2.1 COLLECTION, cláusula sentencia CREATE COLLECTION 5.12 5.12.4 sentencia DROP 5.26.4 coma decimal 2.8.6 coma flotante constantes 2.8.2 números 2.6.5.3 comentario en la tabla de catálogo 5.8 SQL 2.2 5.3 COMMENT ON, sentencia 5.8 a 5.8.5 calificación de nombres 2.10.1 COMMIT efecto en SET TRANSACTION 5.48.5 COMMIT, cláusula en sentencia SET OPTION 5.46.4 COMMIT, sentencia 5.9 a 5.9.6 comparación números 2.7.5 reglas de compatibilidad 2.7 reglas de conversión 2.7.7 series 2.7.6 valores de fecha y hora 2.7.8 compatibilidad reglas 2.7 tipos de datos 2.7 compuesta, clave 1.9 CONCAT (operador de concatenación) 2.14.2 CONCAT, función 3.2.11 concurrencia 1.18 con sentencia LOCK TABLE 5.36 condición de búsqueda con DELETE 5.22.4 con HAVING 4.2.5 con UPDATE 5.49.4 con WHERE 4.2.3 descripción 2.16 en cláusula JOIN 4.2.2 orden de evaluación 2.16 condición-búsqueda en sentencia UPDATE 5.49.4 conectado, estado 1.20.4.3 conexión cambiar con SET CONNECTION 5.45

DB2/400 Manual de Consulta SQL V3R7 Índice

© Copyright IBM Corp. 1995, 1996 INDICE - 3

Page 834: DB2/400 Manual de Consulta SQLmarce.com/docs/systems/manuales/db2_400_manual_consulta_sql_v3r7.pdf · VERSION Nota de Versión Segunda edición (noviembre de 1996) Este manual es

finalización 5.39 liberación 5.39 SQL 1.20.3.1 CONNECT diferencias, tipo 1 y tipo 2 F.1 CONNECT (Tipo 1), sentencia 5.10.6 CONNECT (Tipo 2), sentencia 5.11.6 constante en la sentencia ALTER TABLE 5.4.5 en la sentencia CALL 5.6.4 en sentencia INSERT 5.34.4 en sentencia LABEL ON 5.35.4 constante gráfica hexadecimal 2.8.5.1 constantes coma flotante 2.8.2 decimal 2.8.3 entero 2.8.1 hexadecimal 2.8.4 serie de caracteres 2.8.4 serie gráfica 2.8.5.1 CONSTRAINT, cláusula en la sentencia ALTER TABLE 5.4.5 5.4.8 5.4.9 en la sentencia CREATE TABLE 5.16.5 5.16.6 5.16.7 consulta 4.0 a 4.4.6 CONTINUE, cláusula sentencia WHENEVER 5.50.4 contraseña en la sentencia CONNECT (Tipo 1) 5.10.4 en la sentencia CONNECT (Tipo 2) 5.11.4 control de compromiso 1.18 Véase también nivel de aislamiento convenios de denominación en SQL 2.4 conversión de caracteres carácter de sustitución 1.21 elemento de código 1.21 esquema de codificación 1.21 juego de caracteres 1.21 juego de caracteres codificados 1.21 página de códigos 1.21 conversión de números escala y precisión 2.7.1.3 regla de conversión para comparaciones 2.7.3 COS, función 3.2.12 COSH, función 3.2.13 COT, función 3.2.14 COUNT, función 3.1.3 CREATE COLLECTION, sentencia 5.12 a 5.12.6 CREATE INDEX, sentencia 5.13 a 5.13.6 CREATE PROCEDURE, sentencia 5.14.6 CREATE SCHEMA, sentencia 5.15 a 5.15.6 CREATE TABLE, sentencia 5.16 a 5.16.11 CREATE VIEW, sentencia 1.14 5.17 a 5.17.6 CROSS JOIN, cláusula en cláusula FROM 4.2.2 CS (estabilidad de cursor) 1.19 cuantificado, predicado 2.15.2 cumplimiento de los estándares G.0 CURDATE, función 3.2.15 CURRENT DATE, registro especial 2.9.1 CURRENT SERVER, registro especial 2.9.2 CURRENT TIME, registro especial 2.9.3 CURRENT TIMESTAMP, registro especial 2.9.4 CURRENT TIMEZONE, registro especial 2.9.5 CURRENT_DATE sentencia ALTER TABLE 5.4.5 sentencia CREATE TABLE 5.16.5 CURRENT_DATE, registro especial 2.9.1 CURRENT_SERVER, registro especial 2.9.2 CURRENT_TIME sentencia ALTER TABLE 5.4.5 5.16.5 CURRENT_TIME, registro especial 2.9.3 CURRENT_TIMESTAMP sentencia ALTER TABLE 5.4.5 5.16.5 CURRENT_TIMESTAMP, registro especial 2.9.4 CURRENT_TIMEZONE, registro especial 2.9.5 CURRENT, cláusula en la sentencia FETCH 5.30.4 en sentencia DISCONNECT 5.25.4 en sentencia RELEASE 5.39.4 cursor Véase también DECLARE CURSOR, sentencia Véase también nombre-cursor cerrado por error sentencia FETCH 5.30.7 UPDATE 5.49.6 cerrar 5.7 definir 5.18 establecido como activo 5.37 estado cerrado 5.37.6 fila actual 5.30.7 mover posición 5.30 posiciones para abrir 5.30.7 preparar 5.37 CURTIME, función 3.2.16 CHAR función 3.2.8 tipo de datos 2.6.1

DB2/400 Manual de Consulta SQL V3R7 Índice

© Copyright IBM Corp. 1995, 1996 INDICE - 4

Page 835: DB2/400 Manual de Consulta SQLmarce.com/docs/systems/manuales/db2_400_manual_consulta_sql_v3r7.pdf · VERSION Nota de Versión Segunda edición (noviembre de 1996) Este manual es

tipo de datos para CREATE PROCEDURE 5.14.3 tipo de datos para CREATE TABLE 5.16.5 tipo de datos para DECLARE PROCEDURE 5.19.3 CHAR_LENGTH, función 3.2.9 CHARACTER_LENGTH, función 3.2.9 CHECK OPTION, cláusula efecto sobre la actualización 5.49.5 sentencia CREATE VIEW 5.17.4 D DATA DICTIONARY, cláusula sentencia CREATE COLLECTION 5.12.4 sentencia CREATE SCHEMA 5.15.4 DATE asignación 2.7.4 función 3.2.17 operaciones aritméticas 2.14.10.1 tipo de datos 2.6.6.1 tipo de datos para CREATE TABLE DATFMT, cláusula en sentencia SET OPTION 5.46.4 datos de bit 2.6.2 datos decimales aritmética 2.14.7 datos distribuidos sentencia CONNECT F.1 datos mixtos descripción 2.6.2 en asignaciones de serie 2.7.2 en predicados LIKE 2.15.6 datos SBCS 2.6.2 DATSEP, cláusula en sentencia SET OPTION 5.46.4 DAY, función 3.2.18 DAYOFMONTH, función 3.2.19 DAYOFWEEK, función 3.2.20 DAYOFYEAR, función 3.2.21 DAYS, función 3.2.22 DBCS (juego de caracteres de doble byte) descripción 2.6.4 truncado durante la asignación 2.7.3 decimal constantes 2.8.3 números 2.6.5.4 tipo de datos 2.6.5.4 tipo de datos para CREATE PROCEDURE 5.14.3 tipo de datos para CREATE TABLE 5.16.3 tipo de datos para DECLARE PROCEDURE 5.19.3 DECIMAL, función 3.2.23 declaración insertar en un programa 5.33 DECLARE CURSOR, sentencia 5.18 a 5.18.6 DECLARE PROCEDURE, sentencia 5.19 a 5.19.6 DECLARE STATEMENT, sentencia 5.20 a 5.20.5 DECLARE VARIABLE, sentencia 5.21 a 5.21.6 DECLARE, sentencias sentencia BEGIN DECLARE SECTION 5.5 sentencia END DECLARE SECTION 5.27 DECMPT, cláusula en sentencia SET OPTION 5.46.4 DEFAULT, cláusula sentencia ALTER TABLE 5.4.5 sentencia CREATE TABLE 5.16.5 definición de compromiso 1.18 DEGREES, función 3.2.24 DELETE, cláusula en la cláusula ON DELETE de la sentencia ALTER TA BLE 5.4.9 en la cláusula ON DELETE de la sentencia CREATE T ABLE 5.16.7 sentencia GRANT (privilegios de tabla) 5.32.4 sentencia REVOKE (privilegios de tabla) 5.42.4 DELETE, sentencia 5.22 a 5.22.7 delimitador de serie 2.2 2.8.4 dependiente, fila 1.11 dependiente, tabla 1.11 DESC, cláusula de sentencia select 4.4.1 sentencia CREATE INDEX 5.13.4 descendiente, fila 1.11 descendiente, tabla 1.11 desconectar objetos SQL 5.25 DESCRIBE TABLE, sentencia 5.24 a 5.24.6 descripción 5.24.6 variables SQLD 5.24.4 SQLDABC 5.24.4 SQLDAID 5.24.4 SQLDATA 5.24.4 SQLIND 5.24.4 SQLN 5.24.4 SQLNAME 5.24.4 SQLTYPE 5.24.4 SQLVAR 5.24.4 SQLLEN 5.24.4 DESCRIBE, sentencia 5.23 a 5.23.6 variables SQLD 5.23.4 SQLDABC 5.23.4 SQLDAID 5.23.4 SQLDATA 5.23.4

DB2/400 Manual de Consulta SQL V3R7 Índice

© Copyright IBM Corp. 1995, 1996 INDICE - 5

Page 836: DB2/400 Manual de Consulta SQLmarce.com/docs/systems/manuales/db2_400_manual_consulta_sql_v3r7.pdf · VERSION Nota de Versión Segunda edición (noviembre de 1996) Este manual es

SQLIND 5.23.4 SQLN 5.23.4 SQLNAME 5.23.4 SQLTYPE 5.23.4 SQLVAR 5.23.4 SQLLEN 5.23.4 desencadenante 1.12 establecer el nivel de aislamiento 5.48.5 reglas de actualización 5.49.5 reglas de supresión 5.22.5 ROLLBACK 5.43.1 sentencia RELEASE 5.39.1 sentencia SET CONNECTION 5.45.1 designador tabla 2.10.3 3.2.55 DFTRDBCOL, parámetro 2.4.1 DIGITS, función 3.2.25 DISCONNECT, sentencia 5.25 a 5.25.6 DISCONNECT 5.25.6 DISTINCT AVG, función 3.1.2 función COUNT 3.1.3 función MAX 3.1.4 función MIN 3.1.5 función STDDEV 3.1.6 función SUM 3.1.7 función VAR 3.1.8 función VARIANCE 3.1.8 DISTINCT, cláusula subselección 4.2.1 DOUBLE función 3.2.26 DOUBLE PRECISION tipo de datos para CREATE PROCEDURE 5.14.3 tipo de datos para CREATE TABLE 5.16.5 tipo de datos para DECLARE PROCEDURE 5.19.3 DOUBLE_PRECISION, función 3.2.26 DRDA (arquitectura de bases de datos relacionales d istribuidas) 1.20 DRDB Véase base de datos relacional distribuida DROP COLUMN, cláusula sentencia ALTER TABLE 5.4.7 DROP CONSTRAINT, cláusula 5.4.10 sentencia ALTER TABLE 5.4.10 DROP DEFAULT, cláusula sentencia ALTER TABLE 5.4.6 DROP FOREIGN KEY, cláusula 5.4.10 sentencia ALTER TABLE 5.4.10 DROP NOT NULL, cláusula sentencia ALTER TABLE 5.4.6 DROP PRIMARY KEY, cláusula 5.4.10 sentencia ALTER TABLE 5.4.10 DROP UNIQUE, cláusula 5.4.10 sentencia ALTER TABLE 5.4.10 DROP, sentencia 5.26 a 5.26.5 duración etiquetada 2.14.9 fecha 2.14.9 hora 2.14.9 indicación de la hora 2.14.9 DYNAMIC SCROLL, cláusula en la sentencia DECLARE CURSOR 5.18.4 E ejemplos supuestos de sentencias SQL PREFACIO.2 elemento de código 1.21 en la función COUNT 3.1.3 END DECLARE SECTION, sentencia 5.27 a 5.27.5 enlazar 1.2 enteros grandes 2.6.5.2 enteros pequeños 2.6.5.1 enteros, constantes de 2.8.1 entrada interactiva de sentencias SQL 5.1.5 error cierra un cursor 5.37.6 durante UPDATE 5.49.6 sentencia FETCH 5.30.7 escala de datos comparaciones en SQL 2.7.5 conversión de números en SQL 2.7.1.3 en los resultados de operaciones aritméticas 2.14.6 en SQL 2.6.5.4 escala de los datos determinada por la variable SQLLEN C.2 escalar, función Véase función ESCAPE, cláusula del predicado LIKE 2.15.6 esquema de codificación 1.21 estabilidad de cursor 1.19 estabilidad de lectura 1.19 estado abierto del cursor 5.30.7 estado cerrado del cursor 5.37.6 estado de conexión pendiente de liberación 1.20.4.2 estados conexión SQL 1.20.4.2 estados de conexión grupo de activación 1.20.4.3 sentencia CONNECT (tipo 2) 1.20.3.1

DB2/400 Manual de Consulta SQL V3R7 Índice

© Copyright IBM Corp. 1995, 1996 INDICE - 6

Page 837: DB2/400 Manual de Consulta SQLmarce.com/docs/systems/manuales/db2_400_manual_consulta_sql_v3r7.pdf · VERSION Nota de Versión Segunda edición (noviembre de 1996) Este manual es

unidad de trabajo distribuida 1.20.4.1 unidad de trabajo remota 1.20.3.1 estándar estadounidense de IBM (USA) Véase fecha y hora estándar europeo de IBM (EUR) Véase fecha y hora estándar horario LOCAL Véase fecha y hora Estándar Industrial Japonés (JIS) Véase fecha y hora Estático, SQL 1.3 estructura del lenguaje principal descripción 2.12 etiqueta-lenguaje-principal descripción 2.4 en la sentencia WHENEVER 5.50.4 etiquetada, duración 2.14.9 EUR (estándar europeo de IBM) Véase fecha y hora evaluación, orden de 2.14.11 excepciones a los estándares G.0 EXCEPTION JOIN, cláusula en cláusula FROM 4.2.2 exclusiva, clave 1.9 EXCLUSIVE cláusula IN EXCLUSIVE MODE sentencia LOCK TABLE 5.36.4 EXCLUSIVE MODE, cláusula en sentencia LOCK TABLE 5.36.4 exclusivo, índice 1.10 reglas de actualización 5.49.5 EXECUTE IMMEDIATE, sentencia 5.29 a 5.29.6 EXECUTE, cláusula sentencia GRANT (privilegios de paquete) 5.31.4 sentencia REVOKE (privilegios de paquete) 5.41.4 EXECUTE, sentencia 5.28 a 5.28.6 EXISTS, predicado 2.15.4 EXP, función 3.2.27 expresión con operador de concatenación 2.14.2 con operadores aritméticos 2.14.3 en sentencia UPDATE 5.49.4 en subselección 4.2.1 operandos de coma flotante 2.14.8 operandos de fecha y hora 2.14.9 operandos decimales 2.14.5 2.14.6 operandos enteros 2.14.4 2.14.5 operandos numéricos 2.14.5 2.14.6 precedencia de operación 2.14.11 sin operadores 2.14.1 expresión-serie en sentencia EXECUTE IMMEDIATE 5.29.4 en sentencia PREPARE 5.38.4 expuesto, nombre 4.2.2 EXTERNAL NAME, cláusula en CREATE PROCEDURE 5.14.4 en DECLARE PROCEDURE 5.19.4 EXTERNAL, cláusula en CREATE PROCEDURE 5.14.4 en DECLARE PROCEDURE 5.19.4 F fecha duración 2.14.9 series 2.6.6.4 fecha y hora asignaciones 2.7.4 comparaciones 2.7.8 formato 3.2.8 año/mes/día 2.6.6.4 día/mes/año 2.6.6.4 EUR 2.6.6.4 horas/minutos/segundos 2.6.6.4 ISO 2.6.6.4 JIS 2.6.6.4 juliano 2.6.6.4 juliano sin formatear 2.6.6.4 mes/día/año 2.6.6.4 USA 2.6.6.4 límites A.0 operaciones aritméticas 2.14.10 a 2.14.10.3 tipos de datos descripción 2.6.6 representación de serie 2.6.6.4 FETCH, sentencia 5.30 a 5.30.8 fila autorreferente 1.11 dependiente 1.11 descendiente 1.11 insertar 5.34 padre 1.11 suprimir 5.22 filas duplicadas con UNION 4.3 finalización unidad de trabajo 5.9 5.43 FIPS, estándar G.1 FIRST, cláusula en la sentencia FETCH 5.30.4 FLOAT

DB2/400 Manual de Consulta SQL V3R7 Índice

© Copyright IBM Corp. 1995, 1996 INDICE - 7

Page 838: DB2/400 Manual de Consulta SQLmarce.com/docs/systems/manuales/db2_400_manual_consulta_sql_v3r7.pdf · VERSION Nota de Versión Segunda edición (noviembre de 1996) Este manual es

tipo de datos para CREATE PROCEDURE 5.14.3 tipo de datos para CREATE TABLE 5.16.5 tipo de datos para DECLARE PROCEDURE 5.19.3 FLOAT, función 3.2.28 FLOOR, función 3.2.29 FOR BIT DATA, cláusula DECLARE VARIABLE, sentencia 5.21.4 sentencia CREATE PROCEDURE 5.14.3 sentencia CREATE TABLE 5.16.5 sentencia DECLARE PROCEDURE 5.19.3 FOR COLUMN, cláusula ALTER TABLE, sentencia 5.4.5 sentencia CREATE TABLE 5.16.5 sentencia CREATE VIEW 5.17.4 FOR FETCH ONLY, cláusula de sentencia select 4.4.3 FOR MIXED DATA, cláusula sentencia CREATE PROCEDURE 5.14.3 sentencia CREATE TABLE 5.16.5 sentencia DECLARE PROCEDURE 5.19.3 sentencia DECLARE VARIABLE TABLE 5.21.4 FOR READ ONLY, cláusula de sentencia select 4.4.3 FOR ROWS, cláusula sentencia FETCH 5.30.6 sentencia SET RESULT SETS 5.47.4 FOR SBCS DATA, cláusula DECLARE VARIABLE, sentencia 5.21.4 sentencia CREATE PROCEDURE 5.14.3 sentencia CREATE TABLE 5.16.5 sentencia DECLARE PROCEDURE 5.19.3 FOR UPDATE OF, cláusula de sentencia select 4.4.2 prohibido en vistas 5.17.5 foránea, clave 1.11 FOREIGN KEY, cláusula de sentencia ALTER TABLE 5.4.9 de sentencia CREATE TABLE 5.16.7 formato de fecha año, mes y día Véase fecha y hora formato de fecha día, mes y año Véase fecha y hora formato de fecha juliano Véase fecha y hora formato de fecha juliano sin formatear Véase fecha y hora formato de fecha mes, día y año Véase fecha y hora FORTRAN SQLCA (Área de comunicaciones SQL) B.2 FROM, cláusula de subselección 4.2.2 DELETE, sentencia 5.22.4 sentencia PREPARE 5.38.4 sentencia REVOKE (privilegios de paquete) 5.41.4 sentencia REVOKE (privilegios de tabla) 5.42.4 función 3.0 3.2 anidamiento 3.2 columna 3.1 AVG 3.1.2 COUNT 3.1.3 MAX 3.1.4 MIN 3.1.5 STDDEV 3.1.6 SUM 3.1.7 VAR 3.1.8 VARIANCE 3.1.8 descripción 3.0 escalar 3.2 ABS 3.2.2 ABSVAL 3.2.2 ACOS 3.2.3 ANTILOG 3.2.4 ASIN 3.2.5 ATAN 3.2.6 ATANH 3.2.7 COALESCE 3.2.10 CONCAT 3.2.11 COS 3.2.12 COSH 3.2.13 COT 3.2.14 CURDATE 3.2.15 CURTIME 3.2.16 CHAR 3.2.8 CHAR_LENGTH 3.2.9 CHARACTER_LENGTH 3.2.9 DATE 3.2.17 DAY 3.2.18 DAYOFMONTH 3.2.19 DAYOFWEEK 3.2.20 DAYOFYEAR 3.2.21 DAYS 3.2.22 DECIMAL 3.2.23 DEGREES 3.2.24 DIGITS 3.2.25 DOUBLE 3.2.26 DOUBLE_PRECISION 3.2.26 EXP 3.2.27

DB2/400 Manual de Consulta SQL V3R7 Índice

© Copyright IBM Corp. 1995, 1996 INDICE - 8

Page 839: DB2/400 Manual de Consulta SQLmarce.com/docs/systems/manuales/db2_400_manual_consulta_sql_v3r7.pdf · VERSION Nota de Versión Segunda edición (noviembre de 1996) Este manual es

FLOAT 3.2.28 FLOOR 3.2.29 HASH 3.2.30 HEX 3.2.31 HOUR 3.2.32 IFNULL 3.2.33 INTEGER 3.2.34 LAND 3.2.35 LEFT 3.2.36 LENGTH 3.2.37 LN 3.2.38 LNOT 3.2.39 LOG 3.2.40 LOG10 3.2.40 LOR 3.2.41 LTRIM 3.2.42 MAX 3.2.43 MICROSECOND 3.2.44 MIN 3.2.45 MINUTE 3.2.46 MOD 3.2.47 MONTH 3.2.48 NODENAME 3.2.49 NODENUMBER 3.2.50 NOW 3.2.51 PARTITION 3.2.52 POWER 3.2.53 QUARTER 3.2.54 RRN 3.2.55 RTRIM 3.2.56 SECOND 3.2.57 SIN 3.2.58 SINH 3.2.59 SQRT 3.2.60 STRIP 3.2.61 SUBSTR 3.2.62 SUBSTRING 3.2.62 TAN 3.2.63 TANH 3.2.64 TIME 3.2.65 TIMESTAMP 3.2.66 TRANSLATE 3.2.67 TRIM 3.2.68 UCASE 3.2.69 UPPER 3.2.69 VALUE 3.2.70 VARCHAR 3.2.71 VARGRAPHIC 3.2.72 WEEK 3.2.73 XOR 3.2.74 YEAR 3.2.75 ZONED 3.2.76 G generación de nombres de tablas reglas 5.16.10.2 generación de nombres del sistema reglas 5.16.10 GENERAL WITH NULLS, cláusula sentencia CREATE PROCEDURE 5.14.4 sentencia DECLARE PROCEDURE 5.19.4 GENERAL, cláusula sentencia CREATE PROCEDURE 5.14.4 sentencia DECLARE PROCEDURE 5.19.4 GO TO, cláusula sentencia WHENEVER 5.50.4 GRANT (privilegios de paquete), sentencia 5.31 a 5.31.6 GRANT (privilegios de tabla), sentencia 5.32 a 5.32.4 5.32.6 GRAPHIC tipo de datos para CREATE PROCEDURE 5.14.3 tipo de datos para CREATE TABLE 5.16.5 tipo de datos para DECLARE PROCEDURE 5.19.3 GROUP BY, cláusula de subselección 4.2.4 no es posible unir vistas utilizando 5.17.5 resulta con subselección 4.2.1 grupo de activación 1.18 grupo de nodos definición 1.8 en la sentencia CREATE TABLE 5.16.8 H HASH, función 3.2.30 HASHING en la sentencia CREATE TABLE 5.16.8 HAVING, cláusula de subselección 4.2.5 resulta con subselección 4.2.1 HEX, función 3.2.31 hexadecimales, constantes 2.8.4 HOLD, cláusula sentencia COMMIT 5.9.4 sentencia ROLLBACK 5.43.4 hora duración 2.14.9 operaciones aritméticas 2.14.10.2 series 2.6.6.4 hora y fecha Véase también fecha y hora tipos de datos

DB2/400 Manual de Consulta SQL V3R7 Índice

© Copyright IBM Corp. 1995, 1996 INDICE - 9

Page 840: DB2/400 Manual de Consulta SQLmarce.com/docs/systems/manuales/db2_400_manual_consulta_sql_v3r7.pdf · VERSION Nota de Versión Segunda edición (noviembre de 1996) Este manual es

representación de serie 2.6.6.4 HOUR, función 3.2.32 I ID de autorización descripción 2.5 ID de autorización en tiempo de ejecución 2.5 identificador de juego de caracteres codificados (C CSID) Véase CCSID (identificador de juego de caracteres codificados) identificador del lenguaje principal 2.3.3 identificador del sistema 2.3.1 identificador delimitado 2.3.1 en nombres de sistema 2.3.1 identificador ordinario en nombres de sistema 2.3.1 en SQL 2.3.1 identificador-lenguaje-principal en una variable del lenguaje principal 2.4 identificadores en SQL delimitado 2.3.1 descripción 2.3 lenguaje principal 2.3.3 ordinario 2.3.1 sistema 2.3.1 límites 2.4 A.0 IFNULL, función 3.2.33 ILE RPG/400 SQLCA (Área de comunicaciones SQL) B.2 SQLDA (área de descriptor SQL) C.5.4 IMMEDIATE EXECUTE IMMEDIATE, sentencia 5.29.6 sentencia EXECUTE IMMEDIATE 5.29 IN ASP, cláusula sentencia CREATE COLLECTION 5.12.4 sentencia CREATE SCHEMA 5.15.4 IN EXCLUSIVE, cláusula en sentencia LOCK TABLE 5.36.4 IN SHARE MODE, cláusula en sentencia LOCK TABLE 5.36.4 IN, cláusula sentencia CREATE PROCEDURE 5.14.4 sentencia DECLARE PROCEDURE 5.19.4 IN, predicado 2.15.5 INCLUDE, sentencia 5.33 a 5.33.6 incorporada, función Véase función INDEX, cláusula sentencia COMMENT ON 5.8.4 sentencia CREATE INDEX 5.13 sentencia DROP 5.26.4 sentencia GRANT (privilegios de tabla) 5.32.4 sentencia RENAME 5.40.4 sentencia REVOKE (privilegios de tabla) 5.42.4 indicación de la hora duración 2.14.9 operaciones aritméticas 2.14.10.3 series 2.6.6.4 indicador matriz 2.12 variable 2.12 5.29.4 índice 1.13 suprimir 5.26.4 información relacionada BIBLIOGRAFIA INNER JOIN, cláusula en cláusula FROM 4.2.2 INOUT, cláusula sentencia CREATE PROCEDURE 5.14.4 sentencia DECLARE PROCEDURE 5.19.4 INSERT, cláusula sentencia GRANT (privilegios de tabla) 5.32.4 sentencia REVOKE (privilegios de tabla) 5.42.4 INSERT, sentencia 5.34 a 5.34.8 INTEGER tipo de datos para CREATE PROCEDURE 5.14.3 tipo de datos para CREATE TABLE 5.16.5 tipo de datos para DECLARE PROCEDURE 5.19.3 INTEGER, función 3.2.34 INTEGER, tipo de datos 2.6.5.1 2.6.5.2 integridad referencial 1.11 reglas de actualización 5.49.5 reglas de supresión 5.22.5 Interactivo, SQL 1.5 interfaz de nivel de llamada (CLI) 1.6 INTO DESCRIPTOR, cláusula sentencia FETCH 5.30.5 INTO, cláusula en la sentencia FETCH 5.30.5 5.30.6 en sentencia PREPARE 5.38.4 en sentencia SELECT INTO 5.44.4 INTO, palabra clave DESCRIBE, sentencia 5.23.4 sentencia DESCRIBE TABLE 5.24.4 sentencia INSERT 5.34.4 IS, cláusula sentencia COMMENT ON 5.8.4 sentencia LABEL ON 5.35.4 ISO (Organización Internacional de Estándares) Véase fecha y hora

DB2/400 Manual de Consulta SQL V3R7 Índice

© Copyright IBM Corp. 1995, 1996 INDICE - 10

Page 841: DB2/400 Manual de Consulta SQLmarce.com/docs/systems/manuales/db2_400_manual_consulta_sql_v3r7.pdf · VERSION Nota de Versión Segunda edición (noviembre de 1996) Este manual es

ISO, estándar G.1 ISOLATION LEVEL, cláusula sentencia SET TRANSACTION 5.48.4 isolation, cláusula 4.4.5 en sentencia DELETE 5.22.4 en sentencia INSERT 5.34.4 en sentencia SELECT INTO 5.44.4 en sentencia UPDATE 5.49.4 J JIS (Estándar Industrial Japonés) Véase fecha y hora JOIN, cláusula en cláusula FROM 4.2.2 juego de caracteres 1.21 juego de caracteres de doble byte (DBCS) truncado durante la asignación 2.7.3 L LABEL ON, sentencia 5.35 a 5.35.6 LABELS en cláusula USING sentencia DESCRIBE 5.23.4 sentencia DESCRIBE TABLE 5.24.4 sentencia PREPARE 5.38.4 en tablas de catálogo 5.35 LAND, función 3.2.35 LANGID, cláusula en sentencia SET OPTION 5.46.4 LANGUAGE, cláusula en sentencia CREATE PROCEDURE 5.14.4 en sentencia DECLARE PROCEDURE 5.19.4 LAST, cláusula en la sentencia FETCH 5.30.4 latente, estado de conexión 1.20.4.2 lectura no comprometida 1.19 lectura repetible 1.19 LEFT JOIN, cláusula en cláusula FROM 4.2.2 LEFT OUTER JOIN, cláusula en cláusula FROM 4.2.2 LEFT, función 3.2.36 LENGTH, función 3.2.37 LIKE, predicado 2.15.6 límites en SQL A.0 fecha y hora A.0 gestor de base de datos A.0 identificador 2.4 A.0 numérico A.0 serie A.0 límites del gestor de bases de datos A.0 lista de selección aplicación 4.2.1 notación 4.2.1 literales 2.8 LN, función 3.2.38 LNOT, función 3.2.39 LOCAL CHECK OPTION, cláusula sentencia CREATE VIEW 5.17.4 LOCK TABLE, sentencia 5.36 a 5.36.5 LOG, función 3.2.40 LOG10, función 3.2.40 lógica de valor de verdadero 2.16 LONG VARCHAR tipo de datos para CREATE TABLE 5.16.5 LONG VARGRAPHIC tipo de datos para CREATE TABLE 5.16.5 LOR, función 3.2.41 LTRIM, función 3.2.42 llamar procedimientos, externos 5.6 M marcador de parámetros 5.28.4 en sentencia EXECUTE 5.28.4 en sentencia OPEN 5.37.4 en sentencia PREPARE 5.38.4 reglas 5.38.4 matrices de estructura del lenguaje principal descripción 2.13 matriz-estructura-leng-princ en la sentencia FETCH 5.30.6 en sentencia INSERT 5.34.5 en sentencia SET RESULT SETS 5.47.4 MAX escalar, función 3.2.43 función de columna 3.1.4 MICROSECOND, función 3.2.44 MIN escalar, función 3.2.45 función de columna 3.1.5 MINUTE, función 3.2.46 MOD, función 3.2.47 MODE cláusula IN EXCLUSIVE MODE sentencia LOCK TABLE 5.36.4 cláusula IN SHARE MODE sentencia LOCK TABLE 5.36.4 MONTH, función 3.2.48 N

DB2/400 Manual de Consulta SQL V3R7 Índice

© Copyright IBM Corp. 1995, 1996 INDICE - 11

Page 842: DB2/400 Manual de Consulta SQLmarce.com/docs/systems/manuales/db2_400_manual_consulta_sql_v3r7.pdf · VERSION Nota de Versión Segunda edición (noviembre de 1996) Este manual es

NAMES en cláusula USING sentencia DESCRIBE 5.23.4 sentencia DESCRIBE TABLE 5.24.4 sentencia PREPARE 5.38.4 NAMING, cláusula en sentencia SET OPTION 5.46.4 NC (no compromiso) 1.19 NEXT, cláusula en la sentencia FETCH 5.30.4 nivel de aislamiento CS 1.19 descripción 1.19 en aplicaciones distribuidas 1.19 estabilidad de cursor 1.19 estabilidad de lectura 1.19 filas fantasma 1.19 establecer utilizando SET TRANSACTION 5.48 lectura no comprometida 1.19 lectura repetible 1.19 NC 1.19 no compromiso 1.19 RR 1.19 RS 1.19 UR 1.19 NO ACTION, regla de supresión en la sentencia ALTER TABLE 5.4.9 en la sentencia CREATE TABLE 5.16.7 NO COMMIT, cláusula sentencia SET TRANSACTION 5.48.4 no compromiso 1.19 no conectado, estado 1.20.4.3 NODENAME, función 3.2.49 NODENUMBER, función 3.2.50 nom-colec en sentencia DROP 5.26.4 nombre expuesto 4.2.2 para sentencias SQL 5.20 subselección 4.2.1 nombre de autorización definición 2.4 nombre de columna del sistema 1.8 1.14 5.16.5 5.17.4 5.23.4 5.24.4 5.38.4 nombre de correlación calificar un nombre de columna 2.10.2 cláusula FROM de subselección 4.2.2 definir 2.10.2 descripción 2.4 nombre de tabla del sistema 1.8 nombre-autorización descripción 2.5 en la sentencia CONNECT (Tipo 1) 5.10.4 en la sentencia CONNECT (Tipo 2) 5.11.4 en sentencia CREATE SCHEMA 5.15.4 en sentencia GRANT (privilegios de paquete) 5.31.4 en sentencia GRANT (privilegios de tabla) 5.32.4 en sentencia REVOKE (privilegios de paquete) 5.41.4 en sentencia REVOKE (privilegios de tabla) 5.42.4 nombre-col en clásula ADD PRIMARY de sentencia ALTER TABLE 5.4.8 en cláusula FOREIGN KEY de sentencia ALTER TABLE 5.4.9 en cláusula REFERENCES de sentencia ALTER TABLE 5.4.9 en DROP COLUMN de sentencia ALTER TABLE 5.4.7 en la cláusula ADD UNIQUE de la sentencia ALTER T ABLE 5.4.8 en la sentencia ALTER TABLE 5.4.6 en la sentencia CREATE TABLE 5.16.5 5.16.6 5.16.7 en sentencia CREATE VIEW 5.17.4 en sentencia INSERT 5.34.4 en sentencia UPDATE 5.49.4 nombre-col-sistema 5.16.10.1 en la sentencia CREATE TABLE 5.16.5 en sentencia CREATE VIEW 5.17.4 nombre-colección definición 2.4 en CREATE COLLECTION 5.12.4 en sentencia CREATE SCHEMA 5.15.4 nombre-columna definición 2.4 en la sentencia ALTER TABLE 5.4.5 en sentencia LABEL ON 5.35.4 nombre-columna-sistema descripción 2.4 en la sentencia ALTER TABLE 5.4.5 nombre-correlación en sentencia DELETE 5.22.4 en sentencia UPDATE 5.49.4 nombre-cursor descripción 2.4 en la sentencia CLOSE 5.7.4 en la sentencia DECLARE CURSOR 5.18.4 en la sentencia FETCH 5.30.4 en sentencia DELETE 5.22.4 en sentencia OPEN 5.37.4 en sentencia SET RESULT SETS 5.47.4 en sentencia UPDATE 5.49.4 nombre-descriptor descripción 2.4

DB2/400 Manual de Consulta SQL V3R7 Índice

© Copyright IBM Corp. 1995, 1996 INDICE - 12

Page 843: DB2/400 Manual de Consulta SQLmarce.com/docs/systems/manuales/db2_400_manual_consulta_sql_v3r7.pdf · VERSION Nota de Versión Segunda edición (noviembre de 1996) Este manual es

en la sentencia CALL 5.6.4 en la sentencia FETCH 5.30.5 en sentencia DESCRIBE 5.23.4 en sentencia EXECUTE 5.28.4 en sentencia OPEN 5.37.4 en sentencia PREPARE 5.38.4 nombre-grupo-nodos 2.4 nombre-índice descripción 2.4 en la sentencia CREATE INDEX 5.13.4 en sentencia DROP 5.26.4 en sentencia RENAME 5.40.4 nombre-miembro en sentencia INCLUDE 5.33.4 nombre-objeto-sistema definición 2.4 nombre-paquete 2.4 en sentencia DROP 5.26.4 en sentencia LABEL ON 5.35.4 en sentencia REVOKE (privilegios de paquete) 5.41.4 nombre-parámetro descripción 2.4 en CREATE PROCEDURE 5.14.4 en DECLARE PROCEDURE 5.19.4 nombre-procedimiento descripción 2.4 en CREATE PROCEDURE 5.14.4 en DECLARE PROCEDURE 5.19.4 en la sentencia CALL 5.6.4 en sentencia DROP 5.26.4 nombre-programa-externo descripción 2.4 nombre-restricción descripción 2.4 en cláusula CONSTRAINT de sentencia ALTER TABLE 5.4.9 en cláusula DROP CONSTRAINT de sentencia ALTER TA BLE 5.4.10 en cláusula DROP FOREIGN KEY de sentencia ALTER T ABLE 5.4.10 en cláusula DROP UNIQUE de sentencia ALTER TABLE 5.4.10 en la sentencia ALTER TABLE 5.4.5 5.4.8 en la sentencia CREATE TABLE 5.16.5 5.16.6 5.16.7 nombre-sentencia descripción 2.4 en la sentencia DECLARE CURSOR 5.18.4 en sentencia DECLARE STATEMENT 5.20.4 en sentencia DESCRIBE 5.23.4 en sentencia EXECUTE 5.28.4 en sentencia PREPARE 5.38.4 nombre-servidor descripción 2.4 en la sentencia CONNECT (Tipo 1) 5.10.4 en la sentencia CONNECT (Tipo 2) 5.11.4 en sentencia DISCONNECT 5.25.4 en sentencia RELEASE 5.39.4 en sentencia SET CONNECTION 5.45.4 nombre-tabla descripción 2.4 en cláusula REFERENCES de sentencia ALTER TABLE 5.4.9 en la sentencia ALTER TABLE 5.4.4 en la sentencia CREATE INDEX 5.13.4 en la sentencia CREATE TABLE 5.16.4 5.16.7 en sentencia DELETE 5.22.4 en sentencia DROP 5.26.4 en sentencia GRANT (privilegios de tabla) 5.32.4 en sentencia INSERT 5.34.4 en sentencia LABEL ON 5.35.4 en sentencia LOCK TABLE 5.36.4 en sentencia RENAME 5.40.4 en sentencia REVOKE (privilegios de tabla) 5.42.4 en sentencia UPDATE 5.49.4 nombre-vista descripción 2.4 en sentencia CREATE VIEW 5.17.4 en sentencia DELETE 5.22.4 en sentencia DROP 5.26.4 en sentencia GRANT (privilegios de tabla) 5.32.4 en sentencia INSERT 5.34.4 en sentencia LABEL ON 5.35.4 en sentencia RENAME 5.40.4 en sentencia REVOKE (privilegios de tabla) 5.42.4 en sentencia UPDATE 5.49.4 NONE, cláusula sentencia SET RESULT SETS 5.47.4 NOT FOUND, cláusula sentencia WHENEVER 5.50.4 NOT NULL, cláusula sentencia ALTER TABLE 5.4.5 sentencia CREATE TABLE 5.16.5 NOT VARIANT, cláusula en CREATE PROCEDURE 5.14.4 5.19.4 NOW, función 3.2.51 nulos descripción 2.6 NULL en sentencia UPDATE 5.49.4 palabra clave SET NULL regla de supresión descripción 1.11 en la sentencia CREATE TABLE 5.16.7 regla de actualización, SET NULL palabra clave

DB2/400 Manual de Consulta SQL V3R7 Índice

© Copyright IBM Corp. 1995, 1996 INDICE - 13

Page 844: DB2/400 Manual de Consulta SQLmarce.com/docs/systems/manuales/db2_400_manual_consulta_sql_v3r7.pdf · VERSION Nota de Versión Segunda edición (noviembre de 1996) Este manual es

en la sentencia ALTER TABLE 5.4.9 regla de supresión, SET NULL palabra clave en la sentencia ALTER TABLE 5.4.9 NULL, cláusula en la sentencia CALL 5.6.4 en sentencia INSERT 5.34.4 sentencia ALTER TABLE 5.4.5 NULL, predicado 2.15.7 NUMERIC tipo de datos para CREATE PROCEDURE 5.14.3 tipo de datos para CREATE TABLE 5.16.5 tipo de datos para DECLARE PROCEDURE 5.19.3 numérico asignaciones 2.7.1 comparaciones 2.7.5 límites A.0 números 2.6.5 tipos de datos 2.6.5 números 2.6.5 O omisiones de los estándares G.0 ON PACKAGE, cláusula sentencia GRANT (privilegios de paquete) 5.31.4 sentencia REVOKE (privilegios de paquete) 5.41.4 ON TABLE, cláusula sentencia GRANT (privilegios de tabla) 5.32.4 sentencia REVOKE (privilegios de tabla) 5.42.4 ON, cláusula sentencia CREATE INDEX 5.13.4 opción de precompilador *ALL (estabilidad de lectur a) 1.19 opción de precompilador *CS (estabilidad de cursor) 1.19 opción de precompilador *CHG (lectura no comprometi da) 1.19 opción de precompilador *NC (no compromiso) 1.19 opción de precompilador *NONE (no compromiso) 1.19 opción de precompilador *RR (lectura repetible) 1.19 opción de precompilador *RS (estabilidad de lectura ) 1.19 opción de precompilador *UR (lectura no comprometid a) 1.19 OPEN, sentencia 5.37 a 5.37.7 operación asignación 2.7 a 2.7.2 2.7.4 comparación 2.7.5 a 2.7.8 descripción 2.7 operaciones básicas de SQL 2.7 operador de concatenación (CONCAT) 2.14.2 operador de división 2.14.3 operador de exponenciación 2.14.3 operador de multiplicación 2.14.3 operador de prefijo 2.14.3 operador de resta 2.14.3 operador lógico 2.16 operadores 2.14.3 aritméticos 2.14.3 operadores de infijo 2.14.3 operando coma flotante 2.14.8 decimal 2.14.5 2.14.6 entero 2.14.4 2.14.5 fecha y hora 2.14.9 numérico 2.14.5 2.14.6 OPTIMIZE, cláusula 4.4.4 OR tabla de verdad 2.16 orden de evaluación 2.14.11 ORDER BY, cláusula de sentencia select 4.4.1 prohibido en vistas 5.17.5 Organización Internacional de Estándares (ISO) Véase fecha y hora OUT, cláusula sentencia CREATE PROCEDURE 5.14.4 sentencia DECLARE PROCEDURE 5.19.4 OVRDBF (Alterar Temporalmente Archivo de Base de Da tos) 2.4.1 P PACKAGE, cláusula sentencia DROP 5.26.4 sentencia LABEL ON 5.35.4 padre, clave 1.11 padre, fila 1.11 padre, tabla 1.11 página de códigos 1.21 palabras reservadas 2.3.1 D.0 paquete descripción 1.15 en DRDA 1.20.1 suprimir 5.26.4 PARAMETER, cláusula sentencia COMMENT ON 5.8.4 paréntesis con UNION 4.3 PARTITION, función 3.2.52 peticionario de la aplicación 1.19 1.20 F.0 PL/I matrices de estructura del lenguaje principal 2.13 programa de aplicación variables de serie de longitud variable 2.6.1.3 SQLCA (Área de comunicaciones SQL) B.2 SQLDA (área de descriptor SQL) C.5.3

DB2/400 Manual de Consulta SQL V3R7 Índice

© Copyright IBM Corp. 1995, 1996 INDICE - 14

Page 845: DB2/400 Manual de Consulta SQLmarce.com/docs/systems/manuales/db2_400_manual_consulta_sql_v3r7.pdf · VERSION Nota de Versión Segunda edición (noviembre de 1996) Este manual es

var-leng-princ 2.11 2.12 plan de acceso y paquetes 1.15 POWER, función 3.2.53 precedencia nivel 2.14.11 operación 2.14.11 precisión de un número 2.6.5 precisión doble, coma flotante 2.6.5.3 precisión simple, coma flotante de 2.6.5.3 predicado básico 2.15.1 BETWEEN 2.15.3 cuantificado 2.15.2 descripción 2.15 EXISTS 2.15.4 IN 2.15.5 LIKE 2.15.6 NULL 2.15.7 predicado básico 2.15.1 PREPARE, sentencia 5.38 a 5.38.6 PRIMARY KEY, cláusula sentencia ALTER TABLE 5.4.5 5.4.8 sentencia CREATE TABLE 5.16.5 5.16.6 principal, clave 1.10 principal, índice 1.10 PRIOR, cláusula en la sentencia FETCH 5.30.4 privilegios descripción 1.23 procedimiento Véase también DECLARE PROCEDURE, sentencia Véase también sentencia CREATE PROCEDURE crear 5.14 definir 5.19 ROLLBACK 5.43.1 sentencia RELEASE 5.39.1 suprimir 5.26.4 procedimientos 1.16 sentencia SET CONNECTION 5.45.1 procedimientos almacenados Véase procedimientos procedimientos externos Véase procedimientos PROCEDURE, cláusula sentencia COMMENT ON 5.8 sentencia DROP 5.26.4 proceso de aplicación 1.18 programa de aplicación SQLCA B.0 B.2 C B.2 COBOL B.2 FORTRAN B.2 ILE RPG/400 B.2 PL/I B.2 RPG/400 B.2 SQLDA C.5.1 C.5.2 C.5.3 C.5.4 C C.5.1 COBOL C.5.2 descripción C.0 ILE RPG/400 C.5.4 PL/I C.5.3 programas anidados 5.50.5 propiedad 1.23 PUBLIC autorización 1.23 PUBLIC, cláusula en sentencia GRANT (privilegios de paquete) 5.31.4 en sentencia REVOKE (privilegios de tabla) 5.42.4 sentencia GRANT (privilegios de tabla) 5.32.4 sentencia REVOKE (privilegios de paquete) 5.41.4 punto de compromiso 5.9 Q QUARTER, función 3.2.54 R READ COMMITTED, cláusula sentencia SET TRANSACTION 5.48.4 READ UNCOMMITTED, cláusula sentencia SET TRANSACTION 5.48.4 read-only, cláusula 4.4.3 REAL tipo de datos para CREATE PROCEDURE 5.14.3 tipo de datos para CREATE TABLE 5.16.5 tipo de datos para DECLARE PROCEDURE 5.19.3 recuperación 1.18 redenominación de objetos SQL 5.40 REFERENCES, cláusula sentencia ALTER TABLE 5.4.5 5.4.9 sentencia CREATE TABLE 5.16.5 5.16.7 sentencia GRANT (privilegios de tabla) 5.32.4 sentencia REVOKE (privilegios de tabla) 5.42.4 referencia correlacionada 2.10.4 referencias ambiguas 2.10.3 referencias no definidas 2.10.3 registro especial 2.9 CURRENT DATE 2.9.1 CURRENT SERVER 2.9.2 CURRENT TIME 2.9.3 CURRENT TIMESTAMP 2.9.4

DB2/400 Manual de Consulta SQL V3R7 Índice

© Copyright IBM Corp. 1995, 1996 INDICE - 15

Page 846: DB2/400 Manual de Consulta SQLmarce.com/docs/systems/manuales/db2_400_manual_consulta_sql_v3r7.pdf · VERSION Nota de Versión Segunda edición (noviembre de 1996) Este manual es

CURRENT TIMEZONE 2.9.5 CURRENT_DATE 2.9.1 CURRENT_SERVER 2.9.2 CURRENT_TIME 2.9.3 CURRENT_TIMESTAMP 2.9.4 CURRENT_TIMEZONE 2.9.5 en la sentencia CALL 5.6.4 en sentencia INSERT 5.34.4 USER 2.9.6 regla de actualización NO ACTION en la sentencia ALTER TABLE 5.4.9 en la sentencia CREATE TABLE 5.16.7 regla de actualización SET DEFAULT en la sentencia ALTER TABLE 5.4.9 regla de inserción con restricción de referencia 1.11 reglas generación de nombres de tablas 5.16.10.2 generación de nombres del sistema 5.16.10 nombres en SQL 2.4 reglas de actualización 5.49.5 comprobación de restricciones de unicidad 5.49.5 desencadenante 5.49.5 efecto del control de compromiso 5.49.5 integridad referencial 5.49.5 vistas con WITH CHECK OPTION 5.49.5 reglas de supresión desencadenantes 5.22.5 integridad referencial 5.22.5 restricción de referencia 1.11 RELATIVE, cláusula en la sentencia FETCH 5.18.4 5.30.4 RELEASE, sentencia 5.39 a 5.39.6 RENAME, sentencia 5.40 a 5.40.6 REPEATABLE READ, cláusula sentencia SET TRANSACTION 5.48.4 representación de datos en DRDA 1.20.5 reservadas, palabras 2.3.1 D.0 RESET, cláusula sentencia CONNECT (Tipo 1) 5.10.4 sentencia CONNECT (tipo 2) 5.11.4 restricción de referencia 1.11 restricción-referencial, cláusula de sentencia ALTER TABLE 5.4.9 de sentencia CREATE TABLE 5.16.7 RESTRICT, cláusula en DROP COLUMN de sentencia ALTER TABLE 5.4.7 en restricción DROP de sentencia ALTER TABLE 5.4.10 sentencia DROP 5.26.4 RESTRICT, regla de actualización en la sentencia ALTER TABLE 5.4.9 en la sentencia CREATE TABLE 5.16.7 RESTRICT, regla de supresión descripción 1.11 en la sentencia ALTER TABLE 5.4.9 en la sentencia CREATE TABLE 5.16.7 RESULT SETS, cláusula en CREATE PROCEDURE 5.14.4 retenido, estado de conexión 1.20.4.2 retrotracción definición 1.18 descripción 1.18 REVOKE (privilegios de paquete), sentencia 5.41 a 5.41.6 REVOKE (privilegios de tabla), sentencia 5.42 a 5.42.6 REXX var-leng-princ 2.11 ROLLBACK efecto en SET TRANSACTION 5.48.5 ROLLBACK, sentencia 5.43 a 5.43.6 ROWS, cláusula sentencia INSERT 5.34.5 RPG enteros 2.6.5.1 matrices de estructura del lenguaje principal 2.13 programa de aplicación var-leng-princ 2.12 variables de serie de caracteres de longitud va riable no permitidas 2.6.1.3 var-leng-princ 2.11 RPG/400 SQLCA (Área de comunicaciones SQL) B.2 RR (lectura repetible) 1.19 RRN, función 3.2.55 RS (estabilidad de lectura) 1.19 RTRIM, función 3.2.56 S SCROLL, cláusula en la sentencia DECLARE CURSOR 5.18.4 SECOND, función 3.2.57 secuencia de clasificación 1.22 selección completa 4.3 selección de una sola fila 5.44 selección dinámica 5.1.4 selección estática 5.1.3 SELECT INTO, sentencia 5.44 a 5.44.5 SELECT, cláusula como componente sintáctico 4.2.1 sentencia GRANT (privilegios de tabla) 5.32.4 sentencia REVOKE (privilegios de tabla) 5.42.4

DB2/400 Manual de Consulta SQL V3R7 Índice

© Copyright IBM Corp. 1995, 1996 INDICE - 16

Page 847: DB2/400 Manual de Consulta SQLmarce.com/docs/systems/manuales/db2_400_manual_consulta_sql_v3r7.pdf · VERSION Nota de Versión Segunda edición (noviembre de 1996) Este manual es

SELECT, sentencia selección completa 4.3 subselección 4.2 sentencia CONNECT (Tipo 1) 5.10 sentencia CONNECT (Tipo 2) 5.11 sentencia CREATE INDEX autorización *PUBLIC 1.23 sentencia CREATE PROCEDURE 5.14 sentencia CREATE TABLE autorización *PUBLIC 1.23 sentencia CREATE VIEW autorización *PUBLIC 1.23 sentencia ejecutable 5.1 5.1.1 sentencia no ejecutable 5.1 5.1.1 sentencia SET RESULT SETS 5.47 sentencia SQL preparada ejecutar 5.28 a 5.28.6 identificación por DECLARE 5.20 obtener información con DESCRIBE 5.23 con DESCRIBE TABLE 5.24 con SQLDA C.0 mediante INTO con PREPARE 5.23.5 5.24.5 preparado dinámicamente por PREPARE 5.38 a 5.38.5 sentencia-select en la sentencia DECLARE CURSOR 5.18.4 utilizada en la sentencia INSERT 5.34.4 sentencias SQL ALTER TABLE 5.4 a 5.4.13 BEGIN DECLARE SECTION 5.5 a 5.5.5 CALL 5.6 a 5.6.6 CLOSE 5.7 a 5.7.6 COMMENT ON 5.8 a 5.8.5 COMMIT 5.9 a 5.9.6 CONNECT (Tipo 1) 5.10 a 5.10.6 CONNECT (Tipo 2) 5.11 a 5.11.6 CREATE COLLECTION 5.12 a 5.12.6 CREATE INDEX 5.13 a 5.13.6 CREATE PROCEDURE 5.14 a 5.14.6 CREATE SCHEMA 5.15 a 5.15.6 CREATE TABLE 5.16 a 5.16.11 CREATE VIEW 5.17 a 5.17.6 DECLARE CURSOR 5.18 a 5.18.6 DECLARE PROCEDURE 5.19 a 5.19.6 DECLARE STATEMENT 5.20 a 5.20.5 DECLARE VARIABLE 5.21 a 5.21.6 DELETE 5.22 a 5.22.7 DESCRIBE 5.23 a 5.23.6 DESCRIBE TABLE 5.24 a 5.24.6 diferencias CONNECT F.1 DISCONNECT 5.25 a 5.25.6 DROP 5.26 a 5.26.5 END DECLARE SECTION 5.27 a 5.27.5 EXECUTE 5.28 a 5.28.6 EXECUTE IMMEDIATE 5.29 a 5.29.6 FETCH 5.30 a 5.30.8 GRANT (privilegios de paquete) 5.31 GRANT (privilegios de tabla) 5.32 a 5.32.6 INCLUDE 5.33 a 5.33.6 INSERT 5.34 a 5.34.8 LABEL ON 5.35 a 5.35.6 LOCK TABLE 5.36 a 5.36.5 nombres para 5.20 OPEN 5.37 a 5.37.7 preparado 1.2 PREPARE 5.38 a 5.38.6 RELEASE 5.39.6 RENAME 5.40 a 5.40.6 REVOKE (privilegios de tabla) 5.42 a 5.42.6 ROLLBACK 5.43 a 5.43.6 SELECT INTO 5.44 a 5.44.5 SET CONNECTION 5.45 a 5.45.6 SET OPTION 5.46 a 5.46.6 SET RESULT SETS 5.47 a 5.47.6 SET TRANSACTION 5.48 a 5.48.6 supuestos para ejemplos PREFACIO.2 UPDATE 5.49 a 5.49.7 WHENEVER 5.50 a 5.50.6 SERIALIZABLE, cláusula sentencia SET TRANSACTION 5.48.4 serie columnas 2.6.1 constante carácter 2.8.4 gráfica 2.8.5.1 hexadecimal 2.8.4 límites A.0 variable longitud fija 2.6.1.3 longitud variable 2.6.1.3 serie de datos de caracteres asignación 2.7.2 comparación 2.7.6 constantes 2.8.4 datos de bit 2.6.2 datos mixtos 2.6.2 datos SBCS 2.6.2 descripción 2.6.1

DB2/400 Manual de Consulta SQL V3R7 Índice

© Copyright IBM Corp. 1995, 1996 INDICE - 17

Page 848: DB2/400 Manual de Consulta SQLmarce.com/docs/systems/manuales/db2_400_manual_consulta_sql_v3r7.pdf · VERSION Nota de Versión Segunda edición (noviembre de 1996) Este manual es

vacía 2.6.1 serie de sentencia 5.29.4 serie gráfica constantes 2.8.5.1 definición 2.6.3 servidor de la aplicación 1.19 1.20 F.0 SET cláusula-default sentencia ALTER TABLE 5.4.6 SET CONNECTION, sentencia 5.45 a 5.45.6 SET DATA TYPE, cláusula sentencia ALTER TABLE 5.4.6 SET DEFAULT, regla de supresión descripción 1.11 en la sentencia ALTER TABLE 5.4.9 en la sentencia CREATE TABLE 5.16.7 SET NOT NULL, cláusula sentencia ALTER TABLE 5.4.6 SET NULL, regla de actualización en la sentencia ALTER TABLE 5.4.9 SET NULL, regla de supresión descripción 1.11 en la sentencia ALTER TABLE 5.4.9 en la sentencia CREATE TABLE 5.16.7 SET OPTION, sentencia 5.46 a 5.46.6 SET RESULT SETS. sentencia 5.47.6 SET TRANSACTION, sentencia 5.48 a 5.48.6 SET, cláusula sentencia UPDATE 5.49.4 SHARE IN SHARE MODE, cláusula sentencia LOCK TABLE 5.36.4 SHARE MODE, cláusula en sentencia LOCK TABLE 5.36.4 signo de interrogación (?) Véase marcador de parámetros símbolos del SQL 2.2 SIN, función 3.2.58 SINH, función 3.2.59 sinónimo para calificar un nombre de columna 2.10.2 SMALLINT tipo de datos para CREATE PROCEDURE 5.14.3 tipo de datos para CREATE TABLE 5.16.5 tipo de datos para DECLARE PROCEDURE 5.19.3 sólo lectura vista 5.17.5 SOME, predicado cuantificado 2.15.2 SQL (Lenguaje de Consulta Estructurada) 1.3 1.4 asignaciones y comparaciones 2.7 carácter de escape 2.3.1 caracteres 2.1 constantes 2.8 convenios de denominación 2.4 enlazar 1.2 fechas y horas 2.6.6 identificadores 2.3 interfaz de nivel de llamada (CLI) 1.6 límites A.0 nombres de variale utilizados 2.4 nulos 2.6 números 2.6.5 operación de asignación 2.7 operación de comparación 2.7 recurso de SQL interactivo 1.5 series de caracteres 2.6.1 símbolos 2.2 SQL dinámico 1.4 SQL estático 1.3 tipos de datos 2.6 valor 2.6 valor nulo 2.6 SQL de IBM, estándar G.2 SQL dinámico definido 5.1 descripción 1.4 ejecución sentencia EXECUTE 5.28 sentencia EXECUTE IMMEDIATE 5.29 en la cláusula USING de la sentencia DESCRIBE 5.23 obtener información de sentencia con DESCRIBE 5.23 DESCRIBE TABLE 5.24 preparación y ejecución 5.1.2 sentencia PREPARE 5.38 SQLDA (área de descriptor SQL) C.0 SQL estático 5.1 SQL, sentencias GRANT (privilegios de paquete) 5.31.6 RELEASE 5.39 REVOKE (privilegios de paquete) 5.41 a 5.41.6 SQLCA (área de comunicaciones de SQL), cláusula sentencia INCLUDE 5.33.4 SQLCA (área de comunicaciones SQL) C B.2 COBOL B.2 contenido B.0 descripción B.0 entrada cambiada mediante UPDATE 5.49.6 FORTRAN B.2

DB2/400 Manual de Consulta SQL V3R7 Índice

© Copyright IBM Corp. 1995, 1996 INDICE - 18

Page 849: DB2/400 Manual de Consulta SQLmarce.com/docs/systems/manuales/db2_400_manual_consulta_sql_v3r7.pdf · VERSION Nota de Versión Segunda edición (noviembre de 1996) Este manual es

ILE RPG/400 B.2 PL/I B.2 RPG/400 B.2 SQLCODE 5.2.1 SQLD, campo de la SQLDA 5.23.4 5.24.4 C.1 SQLDA (área de descriptor SQL) C C.5.1 COBOL C.5.2 contenido C.0 ILE RPG/400 C.5.4 PL/I C.5.3 SQLDA (área de descriptor SQL), cláusula sentencia INCLUDE 5.33.4 SQLDABC, campo de la SQLDA 5.23.4 5.24.4 C.1 SQLDAID, campo de la SQLDA 5.23.4 5.24.4 C.1 SQLDATA, campo de la SQLDA 5.23.4 5.24.4 C.4 SQLERROR, cláusula sentencia WHENEVER 5.50.4 SQLIND, campo de la SQLDA 5.23.4 5.24.4 C.2 SQLN, campo de la SQLDA 5.23.4 5.24.4 C.1 SQLNAME, campo de la SQLDA 5.23.4 5.24.4 C.2 C.4 SQLSTATE descripción 5.2.2 SQLTYPE, campo de la SQLDA 5.23.4 5.24.4 C.2 C.3 SQLVAR, campo de la SQLDA 5.23.4 5.24.4 C.2 SQLWARNING, cláusula sentencia WHENEVER 5.50.4 SQLLEN, campo de la SQLDA 5.23.4 5.24.4 C.2 C.3 SQRT, función 3.2.60 SRTSEQ, cláusula en sentencia SET OPTION 5.46.4 STDDEV, función 3.1.6 STRIP, función 3.2.61 subconsulta descripción 2.10.4 en cláusula HAVING 4.2.5 subselección 4.2 en sentencia CREATE VIEW 4.2 utilizada en sentencia CREATE VIEW 5.17.4 SUBSTR, función 3.2.62 SUBSTRING, función 3.2.62 SUM, función 3.1.7 suprimir objetos SQL 5.26 SYSCOLUMNS, vista H.3 SYSCST, vista H.4 SYSCSTCOL, vista H.5 SYSCSTDEP, vista H.6 SYSINDEXES, vista H.7 SYSKEYCST, vista H.8 SYSKEYS, vista H.9 SYSPACKAGE, vista H.10 SYSREFCST, vista H.13 SYSTABLES, vista H.14 SYSTEM NAME, cláusula sentencia RENAME 5.40.4 SYSTEM NAMES en cláusula USING sentencia DESCRIBE 5.23.4 sentencia DESCRIBE TABLE 5.24.4 sentencia PREPARE 5.38.4 SYSVIEWDEP, vista H.15 SYSVIEWS, vista H.16 T tabla alterar 5.4 autorreferente 1.11 clave primaria 1.10 crear 5.16 definición 1.8 dependiente 1.11 descendiente 1.11 designador 2.10.3 3.2.55 distribuida 1.8 nombre de tabla del sistema 1.8 padre 1.11 suprimir 5.26.4 temporal 5.37.6 tabla base 1.8 tabla conectada por supresión 1.11 tabla de catálogo SYSPARMS H.11 SYSPROCS H.12 tabla de resultados 1.8 tabla de verdad 2.16 tabla objeto 2.10.3 tabla SQL_LANGUAGES H.2 tabla SYSLANGS H.2 tabla SYSPARMS H.11 tabla SYSPROCS H.12 tablas distribuidas definición 1.8 sintaxis 5.16.8 subconsultas 4.2 tablas temporales en OPEN 5.37.6 TABLE, cláusula sentencia COMMENT ON 5.8.4 sentencia DROP 5.26.4 sentencia LABEL ON 5.35.4

DB2/400 Manual de Consulta SQL V3R7 Índice

© Copyright IBM Corp. 1995, 1996 INDICE - 19

Page 850: DB2/400 Manual de Consulta SQLmarce.com/docs/systems/manuales/db2_400_manual_consulta_sql_v3r7.pdf · VERSION Nota de Versión Segunda edición (noviembre de 1996) Este manual es

sentencia RENAME 5.40.4 TAN, función 3.2.63 TANH, función 3.2.64 TEXT, cláusula sentencia LABEL ON 5.35.4 TIME asignación 2.7.4 función 3.2.65 tipo de datos 2.6.6.2 tipo de datos para CREATE TABLE TIMESTAMP asignación 2.7.4 función 3.2.66 tipo de datos 2.6.6.3 tipo de datos para CREATE TABLE TIMFMT, cláusula en sentencia SET OPTION 5.46.4 TIMSEP, cláusula en sentencia SET OPTION 5.46.4 tipo de datos columnas de resultados 4.2.1 descripción 2.6 5.16.5 en la SQLDA C.1 fecha y hora 2.6.6 nulos 2.6 numérico 2.6.5 serie de caracteres 2.6.1 tipo-datos en CREATE TABLE 5.16.5 en la sentencia ALTER TABLE 5.4.5 5.4.6 en sentencia CREATE PROCEDURE 5.14.4 en sentencia DECLARE PROCEDURE 5.19.4 TRANSLATE, función 3.2.67 TRIM, función 3.2.68 truncamiento de números 2.7.1 U UCASE, función 3.2.69 UCS-2 (juego de caracteres codificado universal) descripción 2.6.4 unidad de trabajo COMMIT 5.9 finalización cierra cursores 5.37.6 COMMIT 5.9 finaliza sentencias preparadas 5.38.5 referente a sentencias preparadas 5.38 ROLLBACK 5.43 unidad de trabajo distribuida dirigida por la aplic ación 1.20.4.1 unidad de trabajo remota 1.20.3 UNION ALL, cláusula de subselección 4.3 unión externa Véase LEFT OUTER JOIN, cláusula UNION, cláusula con filas duplicadas 4.3 de subselección 4.3 UNIQUE, cláusula sentencia ALTER TABLE 5.4.5 5.4.8 sentencia CREATE INDEX 5.13.4 sentencia CREATE TABLE 5.16.5 5.16.6 unitario más 2.14.3 menos 2.14.3 UPDATE en la cláusula ON UPDATE de la sentencia ALTER TA BLE 5.4.9 en la cláusula ON UPDATE de la sentencia CREATE T ABLE 5.16.7 UPDATE, cláusula 4.4.2 sentencia GRANT (privilegios de tabla) 5.32.4 sentencia REVOKE (privilegios de tabla) 5.42.4 UPDATE, sentencia 5.49 a 5.49.7 UPPER, función 3.2.69 UR (lectura no comprometida) 1.19 USA (estándar estadounidense de IBM) Véase fecha y hora USER, cláusula sentencia CONNECT (Tipo 1) 5.10.4 sentencia CONNECT (tipo 2) 5.11.4 USER, registro especial 2.9.6 USING DESCRIPTOR, cláusula sentencia CALL 5.6.4 sentencia EXECUTE 5.28.4 sentencia OPEN 5.37.4 USING HASHING en la sentencia CREATE TABLE 5.16.8 USING, cláusula sentencia CONNECT (Tipo 1) 5.10.4 sentencia CONNECT (tipo 2) 5.11.4 sentencia DESCRIBE 5.23.4 sentencia DESCRIBE TABLE 5.24.4 sentencia EXECUTE 5.28.4 sentencia OPEN 5.37.4 sentencia PREPARE 5.38.4 V vacía, serie de caracteres 2.6.1 valor de SQL 2.6 valor nulo en SQL asignación 2.7 definido 2.6

DB2/400 Manual de Consulta SQL V3R7 Índice

© Copyright IBM Corp. 1995, 1996 INDICE - 20

Page 851: DB2/400 Manual de Consulta SQLmarce.com/docs/systems/manuales/db2_400_manual_consulta_sql_v3r7.pdf · VERSION Nota de Versión Segunda edición (noviembre de 1996) Este manual es

en columnas de agrupación 4.2.4 en columnas de resultados 4.2.1 espeficado por variable indicador 2.11 VALUE, función 3.2.70 VALUES, cláusula sentencia INSERT 5.34.4 5.34.5 var-leng-princ descripción 2.11 en la sentencia CALL 5.6.4 en la sentencia CONNECT (Tipo 1) 5.10.4 en la sentencia CONNECT (Tipo 2) 5.11.4 en la sentencia FETCH 5.30.5 en sentencia DECLARE VARIABLE 5.21.4 en sentencia DESCRIBE TABLE 5.24.4 en sentencia DISCONNECT 5.25.4 en sentencia EXECUTE 5.28.4 en sentencia EXECUTE IMMEDIATE 5.29.4 en sentencia INSERT 5.34.4 5.34.5 en sentencia OPEN 5.37.4 en sentencia PREPARE 5.38.4 en sentencia RELEASE 5.39.4 en sentencia SELECT INTO 5.44.4 en sentencia SET CONNECTION 5.45.4 serie de sentencia 5.29.4 sustitución por marcadores de parámetros 5.28.4 variable indicador 2.11 VAR, función 3.1.8 VARCHAR función 3.2.71 tipo de datos para CREATE PROCEDURE 5.14.3 tipo de datos para CREATE TABLE 5.16.5 tipo de datos para DECLARE PROCEDURE 5.19.3 VARGRAPHIC función 3.2.72 tipo de datos para CREATE PROCEDURE 5.14.3 tipo de datos para CREATE TABLE 5.16.5 tipo de datos para DECLARE PROCEDURE 5.19.3 variable del lenguaje principal DECLARE VARIABLE, sentencia 5.21 variable-lenguaje-principal descripción 2.4 en predicado LIKE 2.15.6 variables de serie de caracteres terminadas en NUL permitidas 2.6.1.3 VARIANCE, función 3.1.8 VARIANT, cláusula en CREATE PROCEDURE 5.14.4 5.19.4 VIEW, cláusula sentencia CREATE VIEW 5.17 sentencia DROP 5.26.4 vista Véase también CREATE VIEW, sentencia actualizar con vistas WITH CHECK OPTION 5.49.5 catálogo H.0 crear 5.17 descripción 1.14 sólo lectura 5.17.5 suprimir 5.26.4 vista de catálogo descripción H.0 SQL_LANGUAGES H.2 SYSCOLUMNS H.3 SYSCST H.4 SYSCSTCOL H.5 SYSCSTDEP H.6 SYSINDEXES H.7 SYSKEYCST H.8 SYSKEYS H.9 SYSLANGS H.2 SYSPACKAGE H.10 SYSREFCST H.13 SYSTABLES H.14 SYSVIEWDEP H.15 SYSVIEWS H.16 vista de paquete SYSPACKAGE H.10 W WEEK, función 3.2.73 WHENEVER, sentencia 5.50 a 5.50.6 WHERE CURRENT OF, cláusula DELETE, sentencia 5.22.4 sentencia UPDATE 5.49.4 WHERE NOT NULL, cláusula en la sentencia CREATE INDEX 5.13.4 WHERE, cláusula de subselección 4.2.3 DELETE, sentencia 5.22.4 sentencia UPDATE 5.49.4 WITH CASCADED CHECK OPTION, cláusula sentencia CREATE VIEW 5.17.4 WITH CHECK OPTION, cláusula efecto sobre la actualización 5.49.5 sentencia CREATE VIEW 5.17.4 WITH DATA DICTIONARY, cláusula sentencia CREATE COLLECTION 5.12.4 sentencia CREATE SCHEMA 5.15.4 WITH DEFAULT, cláusula sentencia CREATE TABLE 5.16.5 WITH GRANT OPTION, cláusula

DB2/400 Manual de Consulta SQL V3R7 Índice

© Copyright IBM Corp. 1995, 1996 INDICE - 21

Page 852: DB2/400 Manual de Consulta SQLmarce.com/docs/systems/manuales/db2_400_manual_consulta_sql_v3r7.pdf · VERSION Nota de Versión Segunda edición (noviembre de 1996) Este manual es

en sentencia GRANT (privilegios de tabla) 5.32.4 in sentencia GRANT (privilegios de paquete) 5.31.4 WITH HOLD, cláusula en la sentencia DECLARE CURSOR 5.18.4 WITH LOCAL CHECK OPTION, cláusula sentencia CREATE VIEW 5.17.4 WITH, cláusula 4.4.5 WORK, cláusula en sentencia COMMIT 5.9 5.9.4 sentencia ROLLBACK 5.43.4 X XOR, función 3.2.74 Y YEAR, función 3.2.75 Z ZONED, función 3.2.76

DB2/400 Manual de Consulta SQL V3R7 Índice

© Copyright IBM Corp. 1995, 1996 INDICE - 22

Page 853: DB2/400 Manual de Consulta SQLmarce.com/docs/systems/manuales/db2_400_manual_consulta_sql_v3r7.pdf · VERSION Nota de Versión Segunda edición (noviembre de 1996) Este manual es

COMENTARIOS Hoja de Comentarios AS/400 Advanced Series DB2/400 Manual de consulta SQL Versión 3 Release 7 Número de Publicación SC10-9632-01 En general, ¿está Ud. satisfecho con la información de este libro? Valores: 1 Muy satisfecho 2 Satisfecho 3 Normal 4 Insatisfecho 5 Muy insatisfecho +-------------------------------------------------- ----------------------+ ¦ ¦ 1 ¦ 2 ¦ 3 ¦ 4 ¦ 5 ¦ +------------------------------------------+-----+- ----+-----+-----+-----¦ ¦ Satisfacción general ¦ ¦ ¦ ¦ ¦ ¦ +-------------------------------------------------- ----------------------+ ¿Cómo valora los siguientes aspectos de este libro? +-------------------------------------------------- ----------------------+ ¦ ¦ 1 ¦ 2 ¦ 3 ¦ 4 ¦ 5 ¦ +------------------------------------------+-----+- ----+-----+-----+-----¦ ¦ Organización ¦ ¦ ¦ ¦ ¦ ¦ +------------------------------------------+-----+- ----+-----+-----+-----¦ ¦ Información completa y precisa ¦ ¦ ¦ ¦ ¦ ¦ +------------------------------------------+-----+- ----+-----+-----+-----¦ ¦ Información fácil de encontrar ¦ ¦ ¦ ¦ ¦ ¦ +------------------------------------------+-----+- ----+-----+-----+-----¦ ¦ Utilidad de las ilustraciones ¦ ¦ ¦ ¦ ¦ ¦ +------------------------------------------+-----+- ----+-----+-----+-----¦ ¦ Claridad de la redacción ¦ ¦ ¦ ¦ ¦ ¦ +------------------------------------------+-----+- ----+-----+-----+-----¦ ¦ Calidad de la edición ¦ ¦ ¦ ¦ ¦ ¦ +------------------------------------------+-----+- ----+-----+-----+-----¦ ¦ Adaptación a los formatos, unidades, ¦ ¦ ¦ ¦ ¦ ¦ ¦ etc. del país ¦ ¦ ¦ ¦ ¦ ¦ +-------------------------------------------------- ----------------------+ Comentarios y sugerencias: IBM, S.A. National Language Solutions Center Av. Diagonal, 571 08029 Barcelona España Nombre . . . . . . . . __________________________ _____________________ Compañía u Organización __________________________ _____________________ Dirección . . . . . . . __________________________ _____________________ __________________________ _____________________ __________________________ _____________________ Teléfono . . . . . . . __________________________ _____________________

DB2/400 Manual de Consulta SQL V3R7 Hoja de Comentarios

© Copyright IBM Corp. 1995, 1996 COMENTARIOS - 1