4D v12.4Presentación de los comandos SQL |
||||||||||||||||||||||||||
|
4D v12.4
Presentación de los comandos SQL
|
4D Tipo | SQL Tipo |
C_STRING | SQL_C_CHAR |
C_TEXT | SQL_C_CHAR |
C_REAL | SQL_C_DOUBLE |
C_DATE | SQL_C_TYPE_DATE |
C_TIME | SQL_C_TYPE_TIME |
C_BOOLEAN | SQL_C_BIT |
C_INTEGER | SQL_C_SHORT |
C_LONGINT | SQL_C_SLONG |
C_BLOB | SQL_C_BINARY |
C_PICTURE | SQL_C_BINARY |
C_GRAPH | SQL_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:
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:
SQL EXECUTE("select * from t1 into :$myvar") // funciona 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:
Producto: 4D
Tema: SQL
Acceder al motor SQL de 4D
EXPORT ODBC
IMPORT ODBC