Question sur les fonctions avec "TABLE" comme param. de retour
Bonjour à toutes et à tous,
Je viens de chercher pendant un long moment à faire fonctionner le code qui suit :
Code:
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26
|
CREATE FUNCTION dbo.ConfirmMotDePasse2
(
@N_User varchar(100),
@Equipe varchar(20),
@Pass varchar(20)
)
RETURNS @MaTable TABLE(Nb int)
AS
BEGIN
IF (@Equipe is NOT NULL)
BEGIN
insert into @MaTable(Nb) SELECT COUNT(password) FROM T_utilisateur_L1
WHERE Nom_user = @N_User
AND Lettre_equipe = @Equipe
AND password = @Pass
END;
ELSE
BEGIN
insert into @MaTable(Nb) SELECT COUNT(password) FROM TUtilisateur
WHERE Nom_user = @N_User
AND Lettre_equipe is null
AND password = @Pass
END
RETURN;
END |
Mais je ne comprend pas pourquoi celui-ci ne fonctionnait pas :
Code:
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26
|
CREATE FUNCTION dbo.ConfirmMotDePasse2
(
@N_User varchar(100),
@Equipe varchar(20),
@Pass varchar(20)
)
RETURNS TABLE
AS
BEGIN
IF (@Equipe is NOT NULL)
BEGIN
SELECT COUNT(password) FROM Tutilisateur
WHERE Nom_user = @N_User
AND Lettre_equipe = @Equipe
AND password = @Pass
END;
ELSE
BEGIN
SELECT COUNT(password) FROM TUtilisateur
WHERE Nom_user = @N_User
AND Lettre_equipe is null
AND password = @Pass
END
RETURN;
END |
Alors que le code suivant, plus simple, mais écrit différemment, fonctionne également :
Code:
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16
|
CREATE FUNCTION dbo.ConfirmMotDePasse
(
@N_User varchar(100),
@Equipe varchar(20),
@Pass varchar(20)
)
RETURNS TABLE
AS
RETURN
(
SELECT COUNT(password) as Nb FROM TUtilisateur
WHERE Nom_user = @N_User
AND Lettre_equipe = @Equipe
AND password = @Pass
) |
Quelqu'un peut t'il m'expliquer pourquoi dans un cas il faut déclarer la table de retour et pas dans l'autre ?
D'avance merci,
Cordialement,
Alex01