4D v16

Utiliser la fonction CAST

Accueil

 
4D v16
Utiliser la fonction CAST

Utiliser la fonction CAST  


 

 

Le langage SQL établit des règles relativement restrictives pour la combinaison de données de différents types dans les expressions. Généralement le SGBD est chargé d'effectuer les conversions de données nécessaires.Cependant, le standard SQL requiert que le SGBD génère une erreur si vous tentez de comparer par exemple des numériques avec des chaînes de caractères. Dans ce contexte, la fonction CAST est très précieuse, en particulier lorsque le SQL est combiné à un langage de programmation manipulant des types de données non pris en charge par le standard SQL.
Cette section adapte l'exemple de la section Recevoir le résultat d'une requête SQL dans un tableau de manière à utiliser la fonction CAST.

  • Le code 4D initial est le suivant :

     TABLEAU ENTIER LONG(aSoldTickets;0)
     TABLEAU ENTIER(aMovieYear;0)
     TABLEAU TEXTE(aTitles;0)
     TABLEAU TEXTE(aDirectors;0)
     TABLEAU TEXTE(aMedias;0)
     
     REDUIRE SELECTION([MOVIES];0)
     $MovieYear:=Num("1960")
     CHERCHER([MOVIES];[MOVIES]Year_of_Movie>=$MovieYear)
     SELECTION VERS TABLEAU([MOVIES]Year_of_Movie;aMovieYear;[MOVIES]Title;aTitles;[MOVIES]Director;aDirectors;
     [MOVIES]Media;aMedias;[MOVIES]Sold_Tickets;aSoldTickets)
  • En utilisant du code SQL :

     TABLEAU ENTIER LONG(aSoldTickets;0)
     TABLEAU ENTIER(aMovieYear;0)
     TABLEAU TEXTE(aTitles;0)
     TABLEAU TEXTE(aDirectors;0)
     TABLEAU TEXTE(aMedias;0)
     
     Debut 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;
     Fin SQL
  • En utilisant les commandes SQL génériques :

     TABLEAU ENTIER LONG(aSoldTickets;0)
     TABLEAU ENTIER(aMovieYear;0)
     TABLEAU TEXTE(aTitles;0)
     TABLEAU TEXTE(aDirectors;0)
     TABLEAU TEXTE(aMedias;0)
     C_TEXTE($tQueryTxt)
     
     REDUIRE SELECTION([MOVIES];0)
     SQL LOGIN(SQL_INTERNAL;"";"")
     $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)"
     SQL EXECUTER($tQueryTxt;aMovieYear;aTitles;aDirectors;aMedias;aSoldTickets)
     SQL CHARGER ENREGISTREMENT(SQL tous les enregistrements)
     SQL LOGOUT
  • En utilisant la commande CHERCHER PAR SQL :

     TABLEAU ENTIER LONG(aSoldTickets;0)
     TABLEAU ENTIER(aMovieYear;0)
     TABLEAU TEXTE(aTitles;0)
     TABLEAU TEXTE(aDirectors;0)
     TABLEAU TEXTE(aMedias;0)
     
     REDUIRE SELECTION([MOVIES];0)
     CHERCHER PAR SQL([MOVIES];"Year_of_Movie >= CAST('1960' AS INT)")
     SELECTION VERS TABLEAU([MOVIES]Year_of_Movie;aMovieYear;[MOVIES]Title;aTitles;[MOVIES]Director;aDirectors;
     [MOVIES]Media;aMedias;[MOVIES]Sold_Tickets;aSoldTickets)
  • En utilisant la commande SQL dynamique EXECUTE IMMEDIATE :

     TABLEAU ENTIER LONG(aSoldTickets;0)
     TABLEAU ENTIER(aMovieYear;0)
     TABLEAU TEXTE(aTitles;0)
     TABLEAU TEXTE(aDirectors;0)
     TABLEAU TEXTE(aMedias;0)
     C_TEXTE($tQueryTxt)
     
     REDUIRE 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;"
     Debut SQL
        EXECUTE IMMEDIATE :$tQueryTxt;
     Fin SQL

    Pour tester tous ces exemples, lancez la base "4D SQL Code Samples" et affichez la boîte de dialogue principale. Choisissez le mode d'interrogation du moteur de 4D et cliquez sur le bouton Utilisation de CAST.

 
PROPRIÉTÉS 

Produit : 4D
Thème : Prise en main
Nom intl. : Using CAST

 
HISTORIQUE 

 
UTILISATION DE L'ARTICLE

4D - Référence SQL ( 4D v16)