4D v14

Utilizar la función CAST

Inicio

 
4D v14
Utilizar la función CAST

Utilizar la función CAST  


 

 

El lenguaje SQL tiene reglas bastante restrictivas sobre la combinación de datos de diferentes tipos en las expresiones. Por lo general, el SMBD (DBMS) se encarga de la conversión automática. Sin embargo, el estándar SQL requiere que el SMDB genere un error si se intenta comparar números con cadenas de caracteres. En este contexto, la expresión CAST es muy importante, especialmente cuando utiliza SQL dentro de un lenguaje de programación cuyos tipos de datos no coinciden con los tipos soportados por el estándar SQL. Encontrará a continuación la búsqueda de la sección modificada ligeramente para poder utilizar la expresión CAST.

  • El código 4D inicial sería:

     ARRAY LONGINT(aSoldTickets;0)
     ARRAY INTEGER(aMovieYear;0)
     ARRAY TEXT(aTitles;0)
     ARRAY TEXT(aDirectors;0)
     ARRAY TEXT(aMedias;0)
     
     REDUCE SELECTION([MOVIES];0)
     $MovieYear:=Num("1960")
     QUERY([MOVIES];[MOVIES]Year_of_Movie>=$MovieYear)
     SELECTION TO ARRAY([MOVIES]Year_of_Movie;aMovieYear;[MOVIES]Title;aTitles;[MOVIES]Director;aDirectors;[MOVIES]Media;aMedias;
     [MOVIES]Sold_Tickets;aSoldTickets)
      ` Inicializa el resto de las columnas del list box para mostrar la información
     ARRAY LONGINT(aNrActors;Size of array(aMovieYear))
  • Utilizando código SQL:

     ARRAY LONGINT(aSoldTickets;0)
     ARRAY INTEGER(aMovieYear;0)
     ARRAY TEXT(aTitles;0)
     ARRAY TEXT(aDirectors;0)
     ARRAY TEXT(aMedias;0)
     
     Begin SQL
        SELECT Year_of_Movie, Title, Director, Media, Sold_Tickets
        FROM MOVIES
        WHERE Year_of_Movie >= CAST('1960' AS INT)
        INTO :aMovieYear, :aTitles, :aDirectors, :aMedias, :aSoldTickets;
     End SQL
      `Inicializa el resto de las columnas del list box para mostrar la información
     ARRAY LONGINT(aNrActors;Size of array(aMovieYear))
  • Utilizando el comando QUERY BY SQL:

     ARRAY LONGINT(aSoldTickets;0)
     ARRAY INTEGER(aMovieYear;0)
     ARRAY TEXT(aTitles;0)
     ARRAY TEXT(aDirectors;0)
     ARRAY TEXT(aMedias;0)
     
     REDUCE SELECTION([MOVIES];0)
     QUERY BY SQL([MOVIES];"Year_of_Movie >= CAST('1960' AS INT)")
     SELECTION TO ARRAY([MOVIES]Year_of_Movie;aMovieYear;[MOVIES]Title;aTitles;[MOVIES]Director;aDirectors;[MOVIES]Media;aMedias;
     [MOVIES]Sold_Tickets;aSoldTickets)
      ` Inicializa el resto de las columnas del list box para mostrar la información
     ARRAY LONGINT(aNrActors;Size of array(aMovieYear))
  • Utilizando el comando SQL EXECUTE IMMEDIATE:

     ARRAY LONGINT(aSoldTickets;0)
     ARRAY INTEGER(aMovieYear;0)
     ARRAY TEXT(aTitles;0)
     ARRAY TEXT(aDirectors;0)
     ARRAY TEXT(aMedias;0)
     C_TEXT($tQueryTxt)
     
     REDUCE SELECTION([MOVIES];0)
     $tQueryTxt:=""
     $tQueryTxt:=$tQueryTxt+"SELECT Year_of_Movie, Title, Director, Media, Sold_Tickets"
     $tQueryTxt:=$tQueryTxt+" FROM MOVIES"
     $tQueryTxt:=$tQueryTxt+" WHERE Year_of_Movie >= CAST('1960' AS INT)"
     $tQueryTxt:=$tQueryTxt+" INTO :aMovieYear, :aTitles, :aDirectors, :aMedias, :aSoldTickets;"
     Begin SQL
        EXECUTE IMMEDIATE :$tQueryTxt;
     End SQL
      ` Inicializa el resto de las columnas del list box para mostrar la información
     ARRAY LONGINT(aNrActors;Size of array(aMovieYear))

Para probar todos los ejemplos anteriores, lance la base "4D SQL Code Samples" y vaya a la ventana principal. Luego elija el modo de consulta y presione el botón Using CAST.

 
PROPIEDADES 

Producto: 4D
Tema: Tutorial

 
ARTICLE USAGE

Manual de SQL ( 4D v11 SQL Release 4 )
Manual de SQL ( 4D v14)
Manual de SQL ( 4D v12.1)
Manual de SQL ( 4D v13.4)
Manual de SQL ( 4D v14 R2)
Manual de SQL ( 4D v14 R3)
Manual de SQL ( 4D v14 R4)