[Debutant] utilisation d'une stored procedure + Table-valued function
Bonjour,
Je suis debutant en SQL donc soyez indulgent svp :). Voila mon probleme.
J ai une base de donnee tres simple, juste une table TABLE qui contient : CellID as int, ReturnPeriod as int, Duration as int and TotalDepth as float.
Quand l utilisateur fournit :
Code:
GetProfile(@CellID, @Duration, @ReturnPeriod, @Timestep)
(Timestep as float)
Grace aux parametres @CellID, @Duration, @ReturnPeriod, j'identifie quelle TotalDepth est associée avec le code suivant :
Code:
1 2 3 4 5 6 7 8 9 10 11 12 13
| USE [Ireland - Pluvial Data]
GO
ALTER PROCEDURE [dbo].[GetProfile]
@CellID int,
@ReturnPeriod int,
@Duration int,
@Timestep float
AS
BEGIN
SELECT CellsRainfall.TotalDepth
From CellsRainfall
Where CellsRainfall.CellID=@CellID AND CellsRainfall.ReturnPeriod=@ReturnPeriod AND CellsRainfall.Duration=@Duration
END |
Mais mon probleme est que je ne voudrais pas directement retourner le TotalDepth associé, mais l utiliser (ainsi que @Duration et @Timestep) pour calculer un vecteur de valeurs.
Par exemple, imaginons que ma fonction soit que je veuille retourner a l utilisateur un vecteur contenant @Duration valeurs qui sont TotalDepth*index*@Timestep. (Avec index variant de 1 a @Duration), donc un truc comme :
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 27
| ALTER FUNCTION [dbo].[TestTable]
(
@TotalDepth float,
@Duration int,
@Timestep float
)
RETURNS
@IDS TABLE
(
ID int
)
AS
BEGIN
DECLARE
@Index1 int,
@Resultat float;
SET @Index1=1
WHILE @Index1<=@Duration
BEGIN
SET @Resultat=@TotalDepth*@Index1*@Timestep
INSERT INTO @IDS(ID)
VALUES(@Resultat)
SET @Index1=@Index1+1
END
RETURN
END |
Mon probleme est que je ne sais pas comment inserer dans ma stored procedure, le fait que je doive appeler ma fonction TestTable avec la TotalDepth identifiée dans ma table et les parametres @Duration et @Timestep.
En fait, j aurais crus qu un truc comme le code suivant marche, mais non ...
Code:
1 2 3 4
| SELECT dbo.TableTest(CellsRainfall.TotalDepth,@Duration,@Timestep)
From CellsRainfall
Where CellsRainfall.CellID=@CellID AND CellsRainfall.ReturnPeriod=@ReturnPeriod AND CellsRainfall.Duration=@Duration
END |
Merci
Slumpy.