4D v12.4

Presentación de los comandos SQL

Inicio

 
4D v12.4
SQL
Presentación de los comandos SQL

 

Presentación de los comandos SQL  


 

 

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:

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

  • A menos de que se indique lo contrario, puede utilizar estos comandos con el motor SQL interno 4D o en una conexión externa que se abre directamente o vía ODBC. El comando SQL LOGIN permite definir 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.

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 también permite importar y exportar datos en una fuente ODBC vía los comandos IMPORT ODBC and EXPORT ODBC o manualmente en modo Diseño. Para mayor información, consulte el Manual de Diseño 4D.

Nota: los comandos SQL de alto nivel de 4D permiten implementar soluciones simples para 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, necesitará el plug-in ODBC “bajo nivel” de 4D, 4D ODBC Pro.

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

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:
 SQL EXECUTE("INSERT INTO emp (empnum,enombre) VALUES (<<vEmpnum>>,<<vEnombre>>)")
 SQL EXECUTE("SELECT edad FROM Persona WHERE nombre= :vNombre")

Nota: en modo compilado, no puede utilizar referencias a variables locales (que comienzan por $).

En estos ejemplos, los valores actuales de las variables 4D vEmpnum, vEnombre y Vnombre reemplazarán los parámetros cuando la petición 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 cumplir el estándar SQL y de no permitir la utilización de parámetros de salida. Para remediar esto, puede utilizar el comando SQL SET PARAMETER. Este comando permite 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 permite ejecutar una petición SQL utilizando 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 permite ejecutar una búsqueda SQL pasando directamente una variable utilizando un puntero derreferenciado:

 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)

En modo compilado, puede utilizar referencias de variables locales (comenzando por el carácter $) en instrucciones SQL bajo ciertas condiciones:

  • Puede utilizar variables locales dentro de una secuencia Begin SQL / End SQL, excepto con el comando EXECUTE IMMEDIATE;
  • Puede utilizar variables locales con el comando SQL EXECUTE cuando estas variables se utilizan directamente en el parámetro de petición SQL y no vía las referencias.
    Por ejemplo, el siguiente código funciona en modo compilado:
     SQL EXECUTE("select * from t1 into :$myvar") // funciona en modo compilado

    El siguiente código generará un error en modo compilado:
     C_TEXT(tRequest)
     tRequest:="select * from t1 into :$myvar"
     SQL EXECUTE(tRequest// error en modo compilado

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).

 
PROPIEDADES 

Producto: 4D
Tema: SQL

 
VER TAMBIÉN 

Acceder al motor SQL de 4D
EXPORT ODBC
IMPORT ODBC