Este es el sitio web histórico de la documentación de 4D. La documentación se está trasladando progresivamente a developer.4d.com |
||||||||||||||||||||||||||||
|
4D v19.8
Presentación de los comandos del tema 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 |
C_OBJECT | SQL_C_BINARY |
4D ofrece dos maneras de insertar expresiones 4D (variables, arrays, campos, punteros, expresiones válidas) en las peticiones 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,ename) VALUES (<<vEmpnum>>,<<vEname>>)")
SQL EXECUTE("SELECT age FROM People WHERE name= :vName")
Nota: en modo compilado, puede utilizar referencias a variables locales (que comienzan por $) bajo cierta condiciones únicamente (ver abjao).
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(MyTextArray;10)
ARRAY LONGINT(MyLongintArray;10)
For(vCounter;1;Size of array(MyTextArray))
MyTextArray{vCounter}:="Text"+String(vCounter)
MyLongintArray{vCounter}:=vCounter
End for
SQL LOGIN("mysql";"root";"")
SQLStmt:="insert into app_testTable (alpha_field, longint_field) VALUES (<<MyTextArray>>, <<MyLongintArray>>)"
SQL EXECUTE(SQLStmt)
2. Este ejemplo permite ejecutar una petición SQL utilizando directamente los campos 4D asociados:
ALL RECORDS([Table 2])
SQL LOGIN("mysql";"root";"")
SQLStmt:="insert into app_testTable (alpha_field, longint_field) VALUES (<<[Table 2]Field1>"+">,<<[Table 2]Field2>>)"
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($vPointer)
$vLong:=1
$vPointer:=->$vLong
SQL LOGIN("mysql";"root";"")
SQLStmt:="SELECT Col1 FROM TEST WHERE Col1=:$vPointer"
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:
Es posible poner directamente el resultado de una petición SQL en un list box de tipo array. Esta función ofrece un medio rápido de visualizar el resultado de peticiones SQL. Sólo pueden utilizarse las peticiones de tipo SELECT. Este mecanismo no puede utilizarse con una base SQL externa.
Esto funciona de acuerdo a los siguientes principios:
Ejemplo
Queremos recuperar todos los campos de la tabla PERSONAS y ubicar su contenido en el list box cuyo nombre de variable es vlistbox. En el método de objeto de un botón (por ejemplo), es suficiente escribir:
Begin SQL
SELECT * FROM PEOPLE INTO <<vlistbox>>
End SQL
_o_EXPORT ODBC
_o_IMPORT ODBC
Blog: Read 4D object fields with SQL Engine
Producto: 4D
Tema: SQL
Modificado: 4D v17 R5
Manual de lenguaje 4D ( 4D v19)
Manual de lenguaje 4D ( 4D v19.1)
Manual de lenguaje 4D ( 4D v19.4)
Manual de lenguaje 4D ( 4D v19.5)
Manual de lenguaje 4D ( 4D v19.6)
Manual de lenguaje 4D ( 4D v19.7)
Manual de lenguaje 4D ( 4D v19.8)