Nous souhaitons effectuer des recherches relatives aux acteurs des films. Plus précisément, nous voulons trouver tous les films auxquels ont participé au moins 7 acteurs. Les résultats devront être triés par année.
Pour cela, nous allons utiliser une fonction 4D (Find_Nr_Of_Actors) qui, à partir d'un numéro d'ID de film reçu en paramètre, retourne le nombre d'acteurs qui ont joué dans ce film :
Voici le code 4D correspondant à notre requête :
- En utilisant les commandes SQL génériques :
- En utilisant la commande SQL dynamique EXECUTE IMMEDIATE :
TABLEAU ENTIER LONG(aSoldTickets;0)
TABLEAU ENTIER(aMovieYear;0)
TABLEAU ENTIER LONG(aNrActors;0)
TABLEAU TEXTE(aTitles;0)
TABLEAU TEXTE(aDirectors;0)
TABLEAU TEXTE(aMedias;0)
C_ENTIER LONG($NrOfActors;$i;$vInd)
C_TEXTE($tQueryTxt)
$vInd:=0
$NrOfActors:=7
$tQueryTxt:=""
$tQueryTxt:=$tQueryTxt+"SELECT Year_of_Movie, Title, Director, Media, Sold_Tickets, {fn Find_Nr_Of_Actors(ID) AS NUMERIC}"
$tQueryTxt:=$tQueryTxt+" FROM MOVIES"
$tQueryTxt:=$tQueryTxt+" WHERE {fn Find_Nr_Of_Actors(ID) AS NUMERIC} >= :$NrOfActors"
$tQueryTxt:=$tQueryTxt+" ORDER BY 1"
$tQueryTxt:=$tQueryTxt+" INTO :aMovieYear, :aTitles, :aDirectors, :aMedias, :aSoldTickets,"+" :aNrActors;"
Debut SQL
EXECUTE IMMEDIATE :$tQueryTxt;
Fin SQL
Pour tester 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 Appel de méthode 4D.