Bonjour, voici ci desous la function que j'ai crée :
IF
EXISTS(select*from sysobjects wherename= N'funUserListAppart')DROPFUNCTION funUserListAppartGO
CREATE
FUNCTION funUserListAppart(@IDAccount BIGINT)RETURNS
@User_ListAppartTAB TABLE(
[sAppart] [VARCHAR], [IDLocataire] [BIGINT])AS
BEGIN
/* Déclaration standard */
DECLARE @IDAppart BIGINTDECLARE @sAdresse VARCHARDECLARE @IDLoc BIGINTDECLARE @sLoc VARCHARDECLARE @sOut VARCHARDECLARE @Solde MONEY/* Déclaration du curseur */
DECLARE C1 CURSORFORSELECT Appartements.ID, BatHTML +' '+ AdresseHTMLFROM Appartements WHERE Appartements.IDAccount = @IDAccountOPEN C1/* Parcours la liste des appartements */
FETCH C1 INTO @IDAppart, @sAdresseWHILE@@FETCH_STATUS= 0BEGIN/* On récupère l'ientification du locataire qui occupe l'appartement */
SELECT @IDLoc = Locataires.ID FROM Locataires WHERELocataires
.IDAppart = @IDAppart/* Si l'appartements n'est pas vide, alors on récupère l'identité du locataire */
IF @IDLoc ISNOTNULLBEGINSELECT @sLoc = NomHTML FROM Locataires WHERELocataires
.IDAppart = @IDAppartSET @sOut = @sOut + @sLoc +'<br />'+ @sAdresse/* On récupère le solde du locataire */
SELECT @Solde =(SUM(Loyer)+SUM(Charges))-SUM(Paiement)FROM Suivi WHERESuivi
.IDLocataire = @IDLocSET @Solde =ISNULL(@Solde,0)IF @Solde < 0SET @sOut = @sOut +'Vous devez à ce locataire 'ELSESET @sOut = @sOut +'Ce locataire vous doit 'SET @sOut = @sOut + @SoldeENDELSESET @sOut = @sOut + @sAdresse/* On ajoute tous cela à notre table @User_ListAppartTAB
INSERT INTO @User_ListAppartTAB SELECT @sOut, @IDLoc*/
/* Appartemement suivant*/
FETCH C1 INTO @IDAppart, @sAdresseEND/* Fermeture du curseur */
CLOSE C1DEALLOCATE C1return
END
J'ai l'erreur suivante :
Msg 402, Niveau 16, État 1, Procédure funUserListAppart, Ligne 18
Les types de données text et varchar sont incompatibles dans l'opérateur add.