Documenti di Didattica
Documenti di Professioni
Documenti di Cultura
INGLES
The following example shows various ways to use
SQLEXEC()
to execute ad-hoc queries and to call or create stored procedures:
CLEAR
LOCAL lnConn
LOCAL lnPercent AS Int && Input parameters must be typed.
LOCAL lnOutput
lnPercent = 50
lnOutput = 0
* Disconnect.
SQLDISCONNECT(m.lnConn)
ELSE
? "Unable to connect to SQL Server"
ENDIF
RETURN
USE employee
INSERT INTO employee (emp_no, fname, lname, officeno) ;
VALUES (3022, "John", "Smith", 2101)
El ejemplo siguiente abre la tabla customer de la base de datos testdata. El contenido del registro actual
se reparte en variables, y la estructura de la tabla se copia a una nueva tabla llamada cust2. Se usa
INSERT - SQL para insertar un registro nuevo en la tabla cust2 y se ejecuta BROWSE para mostrar el
nuevo registro.
CLOSE DATABASES
CLEAR
SELECT CUST2
BROWSE
Operador Comparación
= Igual
== Exactamente igual
Cuando utiliza el operador = con cadenas, actúa de forma distinta dependiendo del ajuste de
SET ANSI. Cuando SET ANSI está desactivado, Visual FoxPro trata las comparaciones de cadenas
en la forma habitual en Xbase. Cuando SET ANSI está activado, Visual FoxPro sigue las normas
ANSI para las comparaciones de cadenas. VeaSET ANSI y SET EXACT para obtener información
adicional acerca de cómo realiza Visual FoxPro las comparaciones de cadenas.
La cláusula WHERE admite el operador ESCAPE para la JoinCondition, lo que le permite realizar
consultas significativas sobre datos que contengan caracteres comodín _ y % de SELECT - SQL.
La cláusula ESCAPE le permite especificar que se traten los caracteres comodín de SELECT - SQL
como si fueran caracteres literales. En la cláusula ESCAPE se especifica un carácter, que si se
coloca inmediatamente antes del carácter comodín, indica que se tratará al carácter comodín
como a un carácter literal.
FilterCondition
Especifica los criterios que deben satisfacer los registros para ser incluidos en los resultados de
la consulta. Una consulta puede incluir tantas condiciones de filtro como desee, conectadas con
el operador AND y OR. También puede utilizar el operador NOT para invertir el valor de una
expresión lógica o utilizar EMPTY( ) para comprobar si hay campos vacíos.
FilterCondition puede adoptar cualquier de las formas de los siguientes ejemplos:
Ejemplo 1
En el ejemplo 1 se muestra FilterCondition como FieldName1 Comparison FieldName2
customer.cust_id = orders.cust_id
Ejemplo 2
En el ejemplo 2 se muestra FilterCondition como FieldName Comparison Expression
customer.cust_id IN ;
(SELECT orders.cust_id FROM orders WHERE orders.city="Seattle")
Ejemplo 9
En el ejemplo 9 se muestra FilterCondition como FieldName [NOT] LIKE cExpression
customer.country NOT LIKE "UK"
Esta condición de filtro busca cada uno de los campos que coinciden con cExpression.
Puede utilizar el signo de porcentaje (%) y subrayado ( _ ) como parte de cExpression. El signo de
porcentaje representa a cualquier secuencia de caracteres desconocidos en la cadena. El subrayado
representa un solo carácter desconocido en la cadena.
GROUP BY GroupColumn [, GroupColumn ...]
Agrupa las filas de la consulta basándose en los valores de una o más
columnas. GroupColumn puede ser el nombre de un campo normal de una tabla, o un campo
que incluya una función de campo SQL o una expresión numérica que indique la posición de la
columna en la tabla de resultados (la columna más a la izquierda tiene el número 1).
HAVING FilterCondition
Especifica una condición de filtro que los grupos deben satisfacer para quedar incluidos en el
resultado de la consulta. HAVING debe utilizarse con GROUP BY. Puede incluir tantas
condiciones de filtro como desee, conectadas con los operadores AND u OR. También puede
utilizar NOT para invertir el valor de una expresión lógica.
FilterCondition no puede contener una subconsulta.
Una cláusula HAVING sin una cláusula GROUP BY actúa como una cláusula WHERE. Puede
utilizar alias locales y funciones de campo en la cláusula HAVING. Utilice una cláusula WHERE
para acelerar el rendimiento si la cláusula HAVING no contiene funciones de campo. No olvide
que la cláusula HAVING debería de aparecer antes de una cláusula INTO porque de lo contrario
se producirá un error de sintaxis.
[UNION [ALL] SELECTCommand]
Combina el resultado final de un SELECT con el resultado final de otro SELECT. De forma
predeterminada, UNION comprueba el resultado combinado y elimina las filas duplicadas.
Puede utilizar paréntesis para combinar varias cláusulas UNION.
ALL impide que UNION elimine filas duplicadas de los resultados combinados.
Las cláusulas UNION siguen las reglas siguientes:
No puede utilizar UNION para combinar subconsultas.
Los resultados de ambos SELECT deben tener el mismo número de columnas.
Cada columna de resultados de la consulta de un SELECT debe tener el mismo tipo de
datos y ancho que su columna correspondiente en el otro SELECT.
Únicamente el SELECT final puede tener una cláusula ORDER BY, que debe referirse a
las columnas de resultados por su número. Si se incluye otra cláusula ORDER BY,
afectará al resultado completo.
También puede utilizar la cláusula UNION para simular una combinación externa.
Al combinar dos tablas en una consulta, sólo se incluirán en los resultados los registros que
tengan valores coincidentes en los campos combinados. Si un registro de la tabla primaria no
tiene un registro correspondiente en la tabla secundaria, no se incluirá en los resultados. Una
combinación externa permite incluir todos los registros de la tabla primaria en los resultados,
junto con los registros coincidentes de la tabla secundaria. Para crear una combinación externa
en Visual FoxPro, debe utilizar un comando SELECT anidado, como en el siguiente ejemplo:
CLOSE ALL
CLOSE DATABASES
OPEN DATABASE (HOME(2) + 'data\testdata')
SELECT customer.company ;
FROM customer
Ejemplo 2
El ejemplo 2 muestra el contenido de tres campos de dos tablas y combina las dos tablas basándose en
el campo cust_id. Utiliza alias locales para ambas tablas.
CLOSE ALL
CLOSE DATABASES
OPEN DATABASE (HOME(2) + 'data\testdata')
SELECT x.company, y.order_date, y.shipped_on ;
FROM customer x, orders y ;
WHERE x.cust_id = y.cust_id
Ejemplo 3
El ejemplo 3 muestra únicamente registros con datos únicos en los campos especificados.
CLOSE ALL
CLOSE DATABASES
OPEN DATABASE (HOME(2) + 'data\testdata')
SELECT DISTINCT x.company, y.order_date, y.shipped_on ;
FROM customer x, orders y ;
WHERE x.cust_id = y.cust_id
Ejemplo 4
El ejemplo 4 muestra los campos country, postalcode y company en orden ascendente.
CLOSE ALL
CLOSE DATABASES
OPEN DATABASE (HOME(2) + 'data\testdata')
SELECT country, postalcode, company ;
FROM customer ;
ORDER BY country, postalcode, company
Ejemplo 5
El ejemplo 5 almacena el contenido de los campos de dos tablas en una tercera tabla.
CLOSE ALL
CLOSE DATABASES
OPEN DATABASE (HOME(2) + 'data\testdata')
SELECT x.company, y.order_date, y.shipped_on ;
FROM customer x, orders y ;
WHERE x.cust_id = y.cust_id ;
INTO TABLE custship.dbf
BROWSE
Ejemplo 6
El ejemplo 6 muestra únicamente los registros con una fecha de pedido anterior al 16/02/1994.
CLOSE ALL
CLOSE DATABASES
OPEN DATABASE (HOME(2) + 'data\testdata')
SELECT x.company, y.order_date, y.shipped_on ;
FROM customer x, orders y ;
WHERE x.cust_id = y.cust_id ;
AND y.order_date < {^1994-02-16}
Ejemplo 7
El ejemplo 7 muestra los nombres de todas las compañías de customer con un código postal que
coincida con el código postal de la tabla orders.
CLOSE ALL
CLOSE DATABASES
OPEN DATABASE (HOME(2) + 'data\testdata')
SELECT company FROM customer x WHERE ;
EXISTS (SELECT * FROM orders y WHERE x.postalcode = y.postalcode)
Ejemplo 8
El ejemplo 8 muestra todos los registros de customer que tengan un nombre de compañía que
comience por una C mayúscula y tenga cualquier longitud.
CLOSE ALL
CLOSE DATABASES
OPEN DATABASE (HOME(2) + 'data\testdata')
SELECT * FROM customer x WHERE x.company LIKE "C%"
Ejemplo 9
El ejemplo 9 muestra todos los registros de customer que tengan un nombre de país que comience por
U mayúscula seguido de un carácter desconocido.
CLOSE ALL
CLOSE DATABASES
OPEN DATABASE (HOME(2) + 'data\testdata')
SELECT * FROM customer x WHERE x.country LIKE "U_"
Ejemplo 10
El ejemplo 10 muestra los nombres de todas las ciudades de customer en mayúsculas y llama CityList a
la columna de resultados.
CLOSE ALL
CLOSE DATABASES
OPEN DATABASE (HOME(2) + 'data\testdata')
SELECT UPPER(city) AS CityList FROM customer
Ejemplo 11
El ejemplo 11 muestra cómo se puede realizar una consulta de datos que contengan signos de
porcentaje (%). Se colocará una barra inversa (\) antes del signo de porcentaje para indicar que debe ser
tratado como un literal, y la barra inversa se especifica como el carácter de escape en la cláusula
ESCAPE.
Dado que las tablas de ejemplo incluidas con Visual FoxPro no contienen el carácter de signo de
porcentaje, esta consulta no devolverá ningún resultado.
CLOSE ALL
CLOSE DATABASES
OPEN DATABASE (HOME(2) + 'data\testdata')
SELECT * FROM customer;
WHERE company LIKE "%\%%" ESCAPE "\"
Ejemplo 12
En el ejemplo 12 se muestra cómo se puede realizar una consulta de datos que contenga signos de
subrayado (_). Se coloca una barra inversa (\) antes del signo de subrayado para indicar que debe ser
tratado como un literal, y se especifica la barra inversa como el carácter de escape en la cláusula
ESCAPE.
Dado que las tablas de ejemplo incluidas con Visual FoxPro no contienen el carácter de subrayado, esta
consulta no devolverá ningún resultado.
CLOSE ALL
CLOSE DATABASES
OPEN DATABASE (HOME(2) + 'data\testdata')
SELECT * FROM customer;
WHERE company LIKE "%\_%" ESCAPE "\"
Ejemplo 13
En el ejemplo 13, el carácter Escape se utiliza como un literal. El guión es tanto el carácter escape como
un literal. La consulta devuelve todas las filas en las que el nombre de la organización contiene un signo
de porcentaje seguido de un guión.
Dado que las tablas de ejemplo incluidas con Visual FoxPro no contienen el carácter de signo de
porcentaje, esta consulta no devolverá ningún resultado.
CLOSE ALL
CLOSE DATABASES
OPEN DATABASE (HOME(2) + 'data\testdata')
SELECT * FROM customer;
WHERE company LIKE "%-%--%" Escape "-"
Vea también
CREATE QUERY | CREATE TABLE - SQL | INSERT - SQL | MODIFY QUERY | SET ANSI | SET EXACT | SET
PATH | _TALLY | Definir múltiples condiciones de combinación