Cómo utilizar comandos de SQL Translator

En esta sección:

Cómo:

Referencia:

El comando SQL se puede utilizar para informar desde cualquier origen de datos o conjunto de orígenes de datos admitido. Se puede añadir frases TABLE de formato de informes a declaraciones SQL para aprovechar la variedad de opciones de preparación de informes.

Nota: Si necesita unir orígenes de datos para su solicitud, tiene dos opciones: usar el comando JOIN antes de enviar cualquier comando SQL, o usar el comando WHERE en el comando SQL SELECT para unir los campos necesarios de forma dinámica. Consulte Joins SQL.


Principio de página

x
Sintaxis: Cómo Utilizar comandos SQL Translator
SQL 
sql statement;
[ECHO|FILE]
[TABLE phrases]
END

donde:

SQL

Es el identificador de comandos SQL que invoca al SQL Translator.

Nota: Los componentes de comando SQL deben aparecer en el orden que se muestra más arriba.

sql statement

Es una declaración SQL admitida. La declaración debe terminar por un punto y coma (;). Puede ocupar más de una línea. Vaya a Declaraciones de SQL admitidas.

Dentro de la declaración SQL, los nombres de campos tienen un límite de 48 caracteres (limitación ANSI estándar de nivel 2). Los nombre de vistas generados por medio de la declaración SQL CREATE VIEW tienen un límite de 18 caracteres y las subconsultas pueden anidarse en hasta 15 niveles de profundidad. Tenga en cuenta que no se admiten subconsultas correlacionadas en FOCUS ni en otros orígenes de datos no relacionales.

ECHO

Son frases de depuración opcionales que capturan la solicitud TABLE generada. Estas opciones se colocan después de la declaración SQL.

FILE[NAME]

Escribe las frases TABLE traducidas en el procedimiento identificado. Si no proporciona un nombre de archivo, se asigna un nombre predeterminado cuando se ejecuta la solicitud. A continuación, se borra el archivo.

Frases TABLE

Son frases opcionales de formato de TABLE. Consulte Frases de formato de TABLE en solicitudes SQL.

END o QUIT

Se requieren para finalizar el procedimiento.



Ejemplo: Cómo utilizar comandos de SQL Translator

La siguiente solicitud contiene una declaración SQL y comandos de formateo TABLE:

SQL
SELECT BODYTYPE, AVG(MPG), SUM(SALES)
FROM CAR
WHERE RETAIL_COST > 5000
GROUP BY BODYTYPE;
TABLE HEADING CENTER
"AVERAGE MPG AND TOTAL SALES PER BODYTYPE"
END

Principio de página

x
Referencia: Frases de formato de TABLE en solicitudes SQL

Puede incluir frases de formato de TABLE en una solicitud SQL, sujeto a las siguientes reglas:


Principio de página

x
La declaración SQL SELECT

La declaración SQL SELECT se traduce en uno o varios comandos TABLE PRINT o TABLE SUM, en función de si es aplicable la visualización de campos individuales o agregación, en la solicitud. Vaya a Cómo mostrar datos de informes.

La declaración SELECT * de SQL se traduce a un PRINT de cada campo en el archivo máster y utiliza todos los campos del producto cartesiano. Esta es una forma rápida de mostrar un archivo, siempre y cuando quepa en un número razonable de pantallas para mostrarlo o que utilice ON TABLE HOLD o ON TABLE PCHOLD para mantener datos recuperados en un archivo para reutilizarlos. Consulte Cómo guardar y reutilizar su salida de informes.

Se admiten funciones SQL (como COUNT, SUM, MAX, MIN, AVG) en listas SELECT y en condiciones HAVING. Las expresiones se pueden utilizar como argumentos de función.

La función COUNT (*) traduce a una suma del número de registros generados al imprimir todos los campos del archivo máster. Es lo mismo que contar todas las filas en el producto cartesiano que produce una SELECT en todos los campos.

Siempre que sea posible, las expresiones en el predicado WHERE de SQL se traducen a los criterios WHERE correspondientes en la solicitud TABLE. Las expresiones en las listas SELECT generan campos virtuales. Las cláusulas SQL HAVING también se traducen en los criterios WHERE TOTAL correspondientes en la solicitud TABLE. El operador SQL LIKE se traduce directamente al operador LIKE correspondiente, en los criterios WHERE de la solicitud TABLE. Para más detalles sobre la selección de registros en las solicitudes TABLE, consulte Cómo seleccionar registros para su informe.

Sólo se admiten las subconsultas basadas en una igualdad, donde la expresión WHERE se compara con una subconsulta mediante un signo de igual (=). Por ejemplo: Campo WHERE = (SELECT ...).

El operador SQL UNION se traduce en una solicitud TABLE que crea un archivo HOLD para cada origen de datos especificado, seguido de un comando MATCH con la opción HOLD OLD-OR-NEW, que combina registros del primer (antiguo) origen de datos y del segundo (nuevo) origen de datos. Consulte Cómo fusionar orígenes de datos.

Para más información, consulte Declaraciones de SQL admitidas y Cómo Utilizar comandos SQL Translator.


Principio de página

x
Joins SQL

Cómo:

Referencia:

Al realizar joins SQL, los campos unidos deben tener el mismo formato. Los campos join no necesitan estar indexados y no se admiten los que no sean equijoins.

Se admiten joins recursivas, externas e internas. Las joins internas son las predeterminadas.



x
Sintaxis: Cómo Crear una join interna

Las joins internas admiten dos variaciones de sintaxis.

Variación 1

SQL
SELECT fieldlist FROM file1 [alias1], file2 [alias2]
[WHERE where_condition];
END

Variación 2

SQL
SELECT fieldlist FROM file1 [alias1] INNER JOIN file2 [alias2]
ON join_condition [INNER JOIN ...]
[WHERE where_condition];
END

donde:

fieldlist

Identifica los campos y los orígenes de datos de los que se van a recuperar estos.

Si los nombres no son únicos, los campos combinados en el predicado SQL WHERE deben estar cualificados. Especifíquelos con sus correspondientes nombres o alias de archivos. Por ejemplo:

{file1|alias1}.field1, {file2|alias2}.field2									
FROM

Introduce los orígenes de datos que hay que combinar.

file1, file2

Son los orígenes de datos que hay que combinar.

alias1, alias2

Son nombres alternativos opcionales para los orígenes de datos que hay que combinar.

where_condition

Es una condición de selección opcional para el conjunto de respuestas unidas. Las filas unidas que no satisfagan esta condición se eliminan del conjunto de respuestas devueltas. Si se omite en la Variación 1, el conjunto de respuestas es el producto cartesiano de los dos orígenes de datos.

join_condition

Es la condición de join.



x
Sintaxis: Cómo Crear una join externa
SQL
SELECT fieldlist FROM file1 {LEFT|RIGHT|FULL} JOIN file2 
ON join_condition [{LEFT|RIGHT|FULL} JOIN ...]
WHERE where_condition 
END

donde:

fieldlist

Identifica qué campos hay que recuperar de qué orígenes de datos.

Si los nombres no son únicos, los campos combinados en el predicado SQL WHERE deben estar cualificados. Especifíquelos con sus correspondientes nombres o alias de archivos. Por ejemplo:

{file1|alias1}.field1, {file2|alias2}.field2									
FROM

Introduce los orígenes de datos que hay que combinar.

file1, file2

Son los orígenes de datos que hay que combinar.

alias1, alias2

Son nombres alternativos opcionales para los orígenes de datos que hay que combinar.

join_condition

Es la condición de join. La condición debe especificar igualdad. Por ejemplo, T1.A=T2.B.

where_condition

Es una condición de selección opcional para el conjunto de respuestas unidas. Las filas unidas que no satisfagan esta condición se eliminan del conjunto de respuestas devueltas.



x
Referencia: Combinar asignaciones de nombres del SQL Translator

A las joins emitidas por SQL Translator se les asignan nombres en el formato:

SQLJNMnn						

donde:

SQLJNM

Es el prefijo de join de SQL Translator.

nn

Es un número entre 01 y 16 asignado en el orden en que se generan las joins (FOCUS admite un máximo de 16 joins). La primera join tiene el nombre de tipo AS, SQLJNM01; la segunda join se identifica como SQLJNM02 y así sucesivamente hasta SQLJNM16.

SQL Translator crea y elimina automáticamente todas las joins. Ninguna join especificada por el usuario se ve afectada.



Ejemplo: Cómo utilizar nombres de campo cualificados en joins SQL

En la siguiente declaración, T.A y U.B son nombres de campo cualificados:

SQL
 SELECT T.A, T.B
 FROM T, U
 WHERE T.A = U.B;
END


Ejemplo: Cómo utilizar joins recursivas SQL

En la siguiente declaración, A y B son distintos alias para el mismo origen de datos, CAR. La salida desde CAR son pares de valores de B que tienen los mismos valores A:

SQL
   SELECT A.SEATS, B.SEATS
   FROM CAR A, CAR B
   WHERE A.MODEL = B.MODEL;
END

Tenga en cuenta que todos los nombres de campo en la cláusula SELECT deben ser únicos o cualificados.



Ejemplo: Cómo usar los joins externos completos de SQL

En la siguiente declaración, B y C son alias de orígenes de datos diferentes:

SQL
SELECT   
       B.FIELD1 AS B_FIELD1, B.FIELD2 AS B_FIELD2, 
       D.FIELD1 AS D_FIELD1, D.FIELD2 AS D_FIELD2   
FROM   
((FILE1 B FULL OUTER JOIN FILE2 C ON B.FIELD2 = C.FIELD2 )   
           FULL OUTER JOIN FILE3 D ON C.FIELD2 = D.FIELD2 )   
WHERE B.FIELD1 < 2   
END 

Se admite el uso de múltiples joins externos completos. Sin embargo, dan lugar a un número indeterminado de archivos HOLD temporales.



x
Referencia: Consideraciones acerca del join SQL

Para obtener información relacionada sobre la optimización de índices y declaraciones de join, consulte la documentación de su servidor.


Principio de página

x
Comandos SQL CREATE TABLE e INSERT INTO

Referencia:

SQL Translator admite los comandos CREATE TABLE e INSERT INTO table:

Estos comandos le permiten crear tablas para mejorar la eficiencia de los informes.

Nota: Cuando las aplicaciones están habilitadas, el archivo máster y el origen de datos se graban en el directorio APPHOLD. Cuando se deshabilitan las aplicaciones, el archivo máster y el origen de datos se escriben en el directorio TEMP.



x
Referencia: Notas de uso para comandos CREATE TABLE e INSERT INTO


Ejemplo: Cómo crear una tabla insertando un solo registro

A continuación se muestra la inserción de un solo registro, generando una tabla U de un solo registro:

-* Single-record insert example.
-*
SQL
CREATE TABLE U (A INT, B CHAR(6), C CHAR(6), X INT, Y INT);
END
SQL
INSERT INTO U (A,B,C,X,Y) VALUES (10, '123456','654321', 10, 15);
END

Principio de página

x
Los comandos CREATE VIEW y DROP VIEW de SQL

Cómo:

Una vista es un objeto pasajero que hereda la mayoría de las características de una tabla. Al igual que las tablas, está compuesto de filas y columnas:

Sugerencia: Para utilizar una vista, emita desde ésta un SELECT. No puede emitir una solicitud TABLE contra la vista porque ésta no se extrae como un origen de datos físico de FOCUS. Para crear un archivo HOLD para datos extraídos, especifique ON TABLE HOLD después de las oraciones SQL. Para obtener información detallada acerca de cómo crear archivos HOLD, vaya a Cómo guardar y reutilizar su salida de informes.



x
Sintaxis: Cómo Crear una vista

SQL Translator admite la siguiente declaración:

CREATE VIEW viewname AS subquery ;

donde:

viewname

Es el nombre de la vista.

subquery

Es una declaración SELECT anidada dentro de:

  • Una cláusula WHERE, HAVING o SELECT de otra SELECT.
  • Una declaración UPDATE, DELETE o INSERT.
  • Otra subconsulta.


Ejemplo: Cómo crear e informar desde una vista de SQL

El ejemplo que sigue crea una vista llamada XYZ:

SQL
CREATE VIEW XYZ
 AS SELECT CAR, MODEL
 FROM CAR;
END

Para realizar un informe desde la vista, ejecute:

SQL
 SELECT CAR, MODEL
 FROM XYZ;
END

Según la sintaxis normal de definición de datos de SQL, cada declaración CREATE VIEW debe terminar en punto y coma.



Ejemplo: Cómo abandonar una vista de SQL

La solicitud siguiente elimina la vista XYZ:

SQL
 DROP VIEW XYZ;
END

Principio de página

x
Conjunto de respuestas de estilo de producto cartesiano

A menos que desactive explícitamente esta característica, SQL Translator genera de manera automática conjuntos de repuestas de estilo de producto cartesiano. Se aconseja dejar la configuración CARTESIAN activada, pues apagarla viola los estándares ANSI. Para obtener información detallada acerca del comando SET CARTESIAN, vaya a Cómo fusionar orígenes de datos.


Principio de página

x
Notación decimal continental (CDN)

La notación decimal continental muestra números utilizando una coma para señalar la posición decimal y puntos para separar los dígitos significativos en grupos de tres. Esta notación está disponible para solicitudes SQL Translator.



Ejemplo: Cómo utilizar CDN para separar dígitos

El ejemplo que sigue crea una columna definida como 1.2 + SEATS:

SET CDN=ON
SQL
   SELECT SEATS + 1,2
   FROM CAR;
END

Principio de página

x
Cómo especificar nombres de campo en solicitudes SQL

Especifique campos en una solicitud SQL con:



Ejemplo: Cómo especificar un nombre de campo con un identificador delimitado

Se puede incluir el siguiente identificador de campo en una solicitud:

"COUNTRY.NAME"


Ejemplo: Cómo calificar un nombre de campo delimitado

Para calificar el nombre de campo delimitado COUNTRY.NAME con su nombre de campo, utilice:

CAR."COUNTRY.NAME"

Principio de página

x
Los operadores UNION, INTERSECT y EXCEPT de SQL

Los operadores UNION, INTERSECT y EXCEPT de SQL generan lógica MATCH. El número de archivos que puede participar está determinado por el límite MATCH. Se admite UNION entre paréntesis.

La lógica Match fusiona los contenidos de sus orígenes de datos. Consulte Cómo fusionar orígenes de datos.


Principio de página

x
Constantes numéricas, literales, expresiones y funciones

La lista SELECT, el predicado WHERE y la cláusula HAVING de SQL pueden incluir constantes numéricas, literales colocados entre comillas simples, expresiones y Cualquier funciones escalares. En el ámbito interno, se crea un campo virtual para cada una de éstas, en la lista SELECT. El valor del campo virtual viene incluido en el conjunto de respuestas.


WebFOCUS