03/07/2008Il est possible de retourner plusieurs valeurs dans une fonction SQL-SERVER en utilisant une table pour renvoyer les données.
Voici la syntaxe (particulière) d'une fonction renvoyant la date actuelle et la durée à partir d'une date demandée :
IF OBJECT_ID ('[dbo].[CalculeDuree]') IS NOT NULL
DROP FUNCTION [dbo].[CalculeDuree];
GO
CREATE FUNCTION [dbo].[CalculeDuree] (
@dateFin datetime)
-- Table retournée
RETURNS @tableRetour TABLE (DateActuelle DATETIME, Duree INT)
AS
BEGIN
-- Déclare les variables
DECLARE @dureeCalc AS INT;
DECLARE @dateActu AS DATETIME;
-- Affecte les variables
SET @dateActu=getdate();
SET @dureeCalc = DATEDIFF(mi, @dateFin, @dateActu);
-- Insère les variables pour le retour
INSERT INTO @tableRetour
VALUES (@dateActu, @dureeCalc)
RETURN
END
GO
Exécute la fonction et retourne les résultats
SELECT DateActuelle, Duree FROM dbo.CalculeDuree ('2008-07-03 10:26:00')
Attention : dans le cas d'un appel avec un nom de champ, il faut que le
compatibility_level soit à 90.
Affichage :
SELECT compatibility_level, * FROM sys.databases
Modification :
EXEC SP_DBCMPTLEVEL NomBase, 90
Dernière modification le 08/01/2019 - Quillevere.net