4D v16

Recibir el resultado de una petición SQL en una variable

Inicio

 
4D v16
Recibir el resultado de una petición SQL en una variable

Recibir el resultado de una petición SQL en una variable  


 

 

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:

 C_LONGINT($AllMovies)
 $AllMovies:=0
 ALL RECORDS([MOVIES])
 $AllMovies:=Records in selection([MOVIES])
 ALERT("La videoteca contiene "+String($AllMovies)+"películas ")

  • 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:

     C_LONGINT($AllMovies)
     $AllMovies:=0
      ` Inicializa una conexión con el motor SQL interno
     SQL LOGIN(SQL_INTERNAL;"";"")
      ` Ejecuta la búsqueda y devuelve el resultado en la variable $AllMovies
     SQL EXECUTE("SELECT COUNT(*) FROM MOVIES";$AllMovies)
      ` Recupera todos los registros encontrados
     SQL LOAD RECORD(SQL all records)
      ` Cierra la conexión
     SQL LOGOUT
     ALERT("La videoteca contiene "+String($AllMovies)+" películas")


    Para mayor información sobre los comandos SQL genéricos, consulte el capítulo "SQL del manual Lenguaje 4D.
  • La tercera forma de interactuar con el motor SQL es utilizar el comando 4D QUERY BY SQL. En este caso, la búsqueda simple se convierte en:

     C_LONGINT($AllMovies)
     $AllMovies:=0
     QUERY BY SQL([MOVIES];"ID <> 0")
     $AllMovies:=Records in selection([MOVIES])
     ALERT("La videoteca contiene "+String($AllMovies)+" películas")


    El comando QUERY BY SQL ejecuta una búsqueda de tipo SELECT que puede escribirse de esta forma:

    SELECT *
    FROM myTable
    WHERE <SQL_Formula>


    myTable
    es el nombre de la tabla pasada en el primer parámetro y SQL_Formula es el texto de la búsqueda pasado como segundo parámetro:

     QUERY BY SQL(myTable;SQL_Formula)


    En nuestro caso no hay cláusula WHERE, entonces forzamos una: "ID <> 0". El equivalente de la búsqueda en código SQL es:

    SELECT *
    FROM MOVIES
    WHERE ID <> 0
  • 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:


Luego presione el botón SQL query results in variables.

 
PROPIEDADES 

Producto: 4D
Tema: Tutorial

 
HISTORIA 

 
ARTICLE USAGE

Manual de SQL ( 4D v16)