Ecrire une fonction qui retourne la liste de tous les exemplaires qui devrait être rendu et qui ne le sont toujours pas. En face du numéro de l'exemplaire, il est nécessaire de trouver le titre du film, la date d'emprunt ainsi que les coordonnées de l'emprunteur (nom, prénom, téléphone) du film emprunté.
La fonction portera le nom exemplairesEnRetard.
Exemple d'utilisation de la fonction:
Note: La ligne n°3 concernant l'exemplaire n°1 à était ajoutée sur la fiche n°4 afin de pouvoir tester la fonction en cours de création
Cette fonction peut être définie à l'aide du script suivant:
USE video; go CREATE FUNCTION exemplairesEnRetard() RETURNS @detailExemplaire TABLE (numeroExemplaire int, titre nvarchar(80), dateEmprunt datetime, nomEmprunteur nvarchar(50), prenomEmprunteur nvarchar(50), telephoneEmprunteur char(14))AS BEGIN INSERT INTO @detailExemplaire(numeroExemplaire, titre, dateEmprunt, nomEmprunteur, prenomEmprunteur, telephoneEmprunteur) SELECT md.exemplaire, f.titre, mf.creele, nom, prenom, telephone FROM Magasin.Details md INNER JOIN Magasin.Exemplaires e ON e.numero=md.exemplaire INNER JOIN Films f ON e.film=f.numero INNER JOIN Magasin.Fiches mf ON md.fiche=mf.numero INNER JOIN Magasin.Clients mc ON mf.client=mc.numero WHERE retourEffectifLe is null AND retourPrevuLe<getdate(); RETURN; END;
Etant donné que cette fonction ne contient qu'une seule instruction, il est possible de la définir de la façon suivante:
USE video; go CREATE FUNCTION exemplairesEnRetard() RETURNS TABLE AS RETURN SELECT numeroExemplaire=md.exemplaire, f.titre, dateEmprunt=mf.creele, nomEmprunteur=nom, prenomEmprunteur=prenom, telephoneEmprunteur=telephone FROM Magasin.Details md INNER JOIN Magasin.Exemplaires e ON e.numero=md.exemplaire INNER JOIN Films f ON e.film=f.numero INNER JOIN Magasin.Fiches mf ON md.fiche=mf.numero INNER JOIN Magasin.Clients mc ON mf.client=mc.numero WHERE retourEffectifLe is null AND retourPrevuLe<getdate();