4D v14Acceder al motor SQL de 4D |
||
|
4D v14
Acceder al motor SQL de 4D
Acceder al motor SQL de 4D
El motor SQL integrado de 4D puede llamarse de tres maneras diferentes:
QUERY BY SQL([OFFICES];"SALES > 100")
Es posible hacer referencia a todo tipo de expresión 4D válida (variable, campo, array, expresión ...) dentro de las cláusulas WHERE e INTO de las expresiones SQL. Para indicar una referencia 4D, puede utilizar cualquiera de las siguientes notaciones:
Ejemplos: C_STRING(80;vNombre) o: C_STRING(80;vNombre) Notas:
En modo compilado, puede utilizar referencias de variables locales (comenzando por el carácter $) en instrucciones SQL bajo ciertas condiciones:
La recuperación de datos en una instrucción SELECT se gestionará dentro de las etiquetas Begin SQL/End SQL vía la cláusula INTO del comando SELECT o vía los comandos 4D del tema "SQL".
Begin SQL
SQL EXECUTE("SELECT ename FROM emp";[Empleados]Nombre) La principal diferencia entre estas dos maneras de obtener los datos de SQL (etiquetas Begin SQL/End SQL y comandos SQL) es que en el primer caso toda la información se envía de nuevo a 4D en un solo paso, mientras que en el segundo caso, los registros deberán cargarse de forma explícita utilizando el comando SQL LOAD RECORD. Por ejemplo, suponiendo que en la tabla PERSONAS hay 100 registros:
ARRAY INTEGER(añoNacimiento;0) Aquí tenemos que efectuar 10 bucles para recuperar los 100 registros. Si desea cargar todos los registros en un solo paso debemos utilizar: ARRAY INTEGER(añoNacimiento;0) En esta situación, después de la ejecución de la instrucción SELECT, el array añoNacimiento contiene 100 elementos y cada elemento almacena un año de nacimiento de todos los 100 registros.
C_STRING(40;vNombre) Aquí tenemos que efectuar 10 bucles para recuperar todos los 100 registros. Cada pasada por el bucle crea 10 registros en la tabla [MITABLA] y cada valor Año_Nacimiento recuperado de la tabla PERSONAS se guardará en el campo Año_Nacimiento. C_STRING(40;vNombre) En este caso, durante la ejecución de la instrucción SELECT, se crearán 100 registros en la tabla [MITABLA] y cada campo Año_Nacimiento contendrá los datos correspondientes de la tabla PERSONAS, columna Birth_Year.. 4D incluye un funcionamiento automático específico (palabra clave LISTBOX) que permite poner los datos de las consultas SELECT en un list box. Para mayor información, consulte el Manual de Diseño. Por razones de optimización, es preferible utilizar expresiones 4D en lugar de funciones SQL en las consultas. Las expresiones 4D se calcularán una vez antes de la ejecución de la consulta mientras que las funciones SQL se evalúan para cada registro encontrado. Por ejemplo, con la siguiente instrucción: SQL EXECUTE("SELECT nombreCompleto FROM PEOPLE WHERE nombreCompleto=<<vApellido+vNombre>>") ... la expresión vApellido+vNombre se calcula una vez, antes de la ejecución de la consulta. Con la siguiente instrucción: SQL EXECUTE("SELECT nombreCompleto FROM PEOPLE WHERE nombreCompleto=CONCAT(<<vApellido>>,<<vNombre>>)") ... la función CONCAT(<<vApellido>>,<<vNombre>>) se llama para cada registro de la tabla, es decir, la expresión se evalúa para cada registro. |
PROPIEDADES
Producto: 4D VER TAMBIÉN ARTICLE USAGE
Manual de SQL ( 4D v11 SQL Release 4 ) |