Comencemos por una búsqueda simple: queremos saber cuántas películas están en nuestra videoteca. En el lenguaje 4D, el código sería:
- La primera forma de interactuar de una manera similar con el motor SQL es ubicar la petición entre las etiquetas Begin SQL y End SQL. De esta forma, la búsqueda anterior se convierte en:
C_LONGINT($AllMovies)
$AllMovies:=0
Begin SQL
SELECT COUNT(*)
FROM MOVIES
INTO <<$AllMovies>>
End SQL
ALERT("La videoteca contiene "+String($AllMovies)+" películas")
- Como puede ver, puede recuperar el resultado de la búsqueda en una variable (en nuestro caso $AllMovies) que está entre los símbolos "<<" y ">>".
Otra forma de referenciar todo tipo de expresión 4D valida (variable, campo, array, “expresión…”) es poner dos puntos ":" antes de la expresión:
C_LONGINT($AllMovies)
$AllMovies:=0
Begin SQL
SELECT COUNT(*)
FROM MOVIES
INTO :$AllMovies
End SQL
ALERT("La videoteca contiene "+String($AllMovies)+" películas")
Se debe prestar atención especial a las variables interproceso, donde la notación es un poco diferente: debe poner una variable interproceso entre corchetes "[" y "]":
C_LONGINT(<>AllMovies)
<>AllMovies:=0
Begin SQL
SELECT COUNT(*)
FROM MOVIES
INTO <<[<>AllMovies]>>
End SQL
ALERT("La videoteca contiene "+String(<>AllMovies)+" películas")
- La segunda forma de interactuar con el motor SQL es utilizar los comandos SQL genéricos integrados (compatibles ODBC). La búsqueda simple se convierte en:
Para mayor información sobre los comandos SQL genéricos, consulte el capítulo "SQL del manual Lenguaje 4D.
- La cuarta forma de interactuar con el motor SQL es utilizar el comando SQL dinámico EXECUTE IMMEDIATE. El código se convierte en:
C_LONGINT(AllMovies)
AllMovies:=0
C_TEXT(tQueryTxt)
tQueryTxt:="SELECT COUNT(*) FROM MOVIES INTO :AllMovies"
Begin SQL
EXECUTE IMMEDIATE :tQueryTxt;
End SQL
ALERT("La videoteca contiene "+String(AllMovies)+" películas")
Atención: puede ver que en este último ejemplo, utilizamos variables proceso. Esto es necesario si quiere utilizar la base en modo compilado. En este contexto, en efecto, no es posible utilizar variables locales con el comando EXECUTE IMMEDIATE.
Para probar todos estos ejemplos, lance la base "4D SQL Code Samples" y muestre la caja de diálogo principal. A la izquierda de la ventana, puede elegir el modo de interrogación del motor de 4D:
![](../../picture/147924/pict147924.EN.png)
Luego presione el botón SQL query results in variables.