Presentación de los comandos SQL

4D - Documentation   Français   English   German   Español   English   4D v11 SQL, Comandos por temas   4D v11 SQL, Lista alfabética de comandos   4D v11 SQL, Constantes por temas   Regresar   Anterior   Siguiente

versión 11.3 (Modificado)


A partir de la versión 11, 4D incluye un motor SQL integrado. El programa también incluye un servidor SQL que puede ser consultado por otras aplicaciones 4D o de terceras partes (vía el piloto OBDC de 4D).

Los diferentes modos de acceder al motor SQL de 4D, la configuración del servidor SQL como también los comandos y palabras claves que pueden utilizarse en las búsquedas SQL se detallan en un manual independiente, el manual 4D SQL.

El tema "SQL" agrupa varios comandos 4D relacionados con el uso de SQL en 4D:

Control del servidor SQL: START SQL SERVER y STOP SQL SERVER

Acceso directo al motor SQL integrado: SET FIELD VALUE NULL, Is field value Null, QUERY BY SQL, GET LAST SQL ERROR

Gestión de las conexiones a fuentes de datos externas o internas (SQL pass-through): GET DATA SOURCE LIST, Get current data source, SQL LOGIN, SQL LOGOUT Begin SQL, End SQL, USE INTERNAL DATABASE, USE EXTERNAL DATABASE.

Comandos de alto nivel para manipulación de datos en el marco de conexiones SQL directas o vía ODBC: Begin SQL, End SQL, SQL CANCEL LOAD, SQL LOAD RECORD, SQL EXECUTE, SQL EXPORT, SQL End of selection, SQL SET OPTION, SQL SET Parámetro, SQL IMPORT, SQL GET LAST ERROR, SQL GET OPTION.

Presentación

Este tema contiene los comandos que permiten a 4D acceder a los datos almacenados en otras aplicaciones a través de los protocolos estándar. En la versión actual de 4D, sólo los comandos ODBC están disponibles.

Cómo funcionan los comandos de alto nivel SQL

Los comandos SQL integrados de 4D comienzan con el prefijo "SQL" e implementan los siguientes principios:

Puede utilizar estos comandos de este tema con el motor interno 4D o en una conexión externa que se abre directamente o vía ODBC. El comando SQL LOGIN le permite especificar el tipo de conexión a abrir.

El alcance de una conexión es el proceso. Si quiere administrar simultáneamente varias conexiones, debe iniciar un proceso por SQL LOGIN.

El comando SQL CANCEL LOAD permite ejecutar varias solicitudes SELECT en la misma conexión.

Puede interceptar los errores ODBC generados durante la ejecución de uno de los comandos SQL de alto nivel utilizando el comando ON ERR CALL. El comando SQL GET LAST ERROR puede utilizarse en este caso para obtener información adicional.

Soporte de ODBC estándar

El estándar ODBC (Open DataBase Connectivity) define una librería de funciones estandarizadas. Estas funciones permiten a una aplicación como 4D acceder a través del lenguaje SQL a todos los sistemas de gestión de datos compatibles con ODBC (bases de datos, hojas de cálculo, otras aplicaciones 4D, etc.).

Nota: 4D permite igualmente importar y exportar datos de una fuente ODBC en modo Diseño. Para mayor información, consulte el Manual de Diseño 4D.

Nota: Los comandos SQL de alto nivel del tema "Fuente de datos externos" de 4D pueden utilizarse para implementar soluciones simples permitiendo la comunicación entre las aplicaciones 4D y las fuentes de datos ODBC. Si sus aplicaciones necesitan un soporte más extenso del estándar ODBC, usted necesitará el plug-in ODBC "bajo nivel" de 4D, 4D ODBC Pro.

Correspondencia de los tipos de datos

La siguiente tabla lista las correspondencias establecidas automáticamente por 4D entre los tipos de datos 4D y SQL:

4D TipoSQL Tipo
C_STRINGSQL_C_CHAR
C_TEXTSQL_C_CHAR
C_REALSQL_C_DOUBLE
C_DATESQL_C_TYPE_DATE
C_TIMESQL_C_TYPE_TIME
C_BOOLEANSQL_C_BIT
C_INTEGERSQL_C_SHORT
C_LONGINTSQL_C_SLONG
C_BLOBSQL_C_BINARY
C_PICTURESQL_C_BINARY
C_GRAPHSQL_C_BINARY

Referenciar las expresiones 4D en las solicitudes SQL

4D ofrece dos maneras de insertar expresiones 4D (variables, arrays, campos, expresiones válidas) en las solicitudes SQL: la asociación directa y la definición de parámetros utilizando SQL SET PARAMETER.

La asociación directa se puede efectuar de dos formas:

Insertando el nombre del objeto 4D a utilizar entre los caracteres << y >> en el texto de la solicitud.

Precediendo la referencia con dos puntos":".

Ejemplos:

   ODBC EXECUTE("INSERT INTO emp (empnum,enombre) VALUES (<<vEmpnum>>,<<vEnombre>>)")
   ODBC EXECUTE("SELECT edad FROM Persona WHERE nombre= :vNombre")

En estos ejemplos, los valores actuales de las variables 4D vEmpnum, vEnombre y Vnombre reemplazarán los parámetros cuando la solicitud se ejecute. Esta solución también funciona con campos y arrays 4D.

Esta sintaxis de fácil utilización, presenta el inconveniente de no estar conforme al estándar SQL y no permitir la utilización de parámetros de salida. Para remediar esto, puede utilizar el comando SQL SET PARAMETER. Este comando puede utilizarse para definir cada objeto 4D a integrar en una solicitud así como también su modo de utilización (entrada, salida o ambos). Entonces la sintaxis producida es estándar. Para mayor información, consulte la descripción del comando SQL SET PARAMETER.

1. Este ejemplo ejecuta una solicitud SQL que utiliza directamente los arrays 4D asociados:

   ARRAY TEXT(MiArrayText;10)
   ARRAY LONGINT(MiArrayEnteroLargo;10)

   For(vContador;1;Size of array(MiArrayText))
      MiArrayText{vContador}:="Text"+String(vContador)
      MiArrayEnteroLargo{vContador}:=vContador
   End for
   SQL LOGIN("mysql";"root";"")
   SQLStmt:="insert into app_testTable (campo_alfa, campo_enterolargo) VALUES (<<MiArrayText>>, <<MiArrayEnteroLargo>>)"
   SQL EXECUTE(SQLStmt)

2. Este ejemplo puede utilizarse para ejecutar una SQL que utiliza directamente los campos 4D asociados:

   ALL RECORDS([Tabla 2])
   SQL LOGIN("mysql";"root";"")
   SQLStmt:="insert into app_testTable (campo_alfa, campo_enterolargo) VALUES (<<[Tabla 2]Campo1>"+">,<<[Tabla2]Campo2>>)"
   SQL EXECUTE(SQLStmt)

3. Este ejemplo le permite ejecutar una búsqueda SQL pasando directamente una variable vía un puntero sin referencia:

   C_LONGINT($vLong)
   C_POINTER($vPuntero)
   $vLong:=1
   $vPuntero:=->$vLong
   SQL LOGIN("mysql";"root";"")
   SQLStmt:="SELECT Col1 FROM TEST WHERE Col1=:$vPuntero"
   SQL EXECUTE(SQLStmt)

Recuperación de valores en 4D

La recuperación de los valores en el lenguaje 4D que resulta de las de las consultas SQL se lleva a cabo de dos formas:

Utilizando los parámetros adicionales del comando SQL EXECUTE (solución recomendada).

Utilizando la cláusula INTO en la búsqueda SQL misma (solución reservada para casos especiales).


4D - Documentation   Français   English   German   Español   English   4D v11 SQL, Comandos por temas   4D v11 SQL, Lista alfabética de comandos   4D v11 SQL, Constantes por temas   Regresar   Anterior   Siguiente