J'ai un code comme celui-ci
create function factfind(@num integer) returns integer as begin if (@num=1) then return 1; else return(@num*factfind(@num-1)); end if; end
3 Réponses :
Exécuter ceci: ou: p>
...
begin
return ( CASE
WHEN @num=1 THEN 1
ELSE @num * dbo.factfind(@num-1)
END
);
end
Edit: needs to be dbo.factfind because scalar udfs must be schema qualified
Pas une déclaration de cas nécessite une "fin"?
Le problème que vous avez est en partie la syntaxe de l'instruction IF dans TSQL, la bonne chose à faire est la suivante:
create function factfind(@num integer)
returns integer
as
begin
declare @Result int
set @Result = 1
if (@num>1)
set @Result = @num * dbo.factfind(@num-1);
return @Result
end
Ne devriez-vous pas inclure un sinon code> car vous retournez deux fois?
La fonction devrait renvoyer une décimale (38,0) car les résultats sont assez grands et ne peuvent pas être contenus dans un entier de 12!