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 :
(Timestep as float)
Code : Sélectionner tout - Visualiser dans une fenêtre à part GetProfile(@CellID, @Duration, @ReturnPeriod, @Timestep)
Grace aux parametres @CellID, @Duration, @ReturnPeriod, j'identifie quelle TotalDepth est associée avec le code suivant :
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.
Code : Sélectionner tout - Visualiser dans une fenêtre à part
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
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 :
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.
Code : Sélectionner tout - Visualiser dans une fenêtre à part
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
En fait, j aurais crus qu un truc comme le code suivant marche, mais non ...
Merci
Code : Sélectionner tout - Visualiser dans une fenêtre à part
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
Slumpy.
Partager