Bonjour

Je tatonne toujours a chercher les bonnes syntaxe en procédure stockée.
En C# j'aurais déja écrit ca de maniere tres simple mais j'aimerais quand meme essayer de maitriser la syntaxe en SP

J'ai écrit la petite procedure suivante ca compile mais je ne sais pas si ca s'execute je pense que c'est vraiment mauvais comme maniere d'ecrire

Plusieurs questions ;
1 Je n'ai pas du faire de bloc BEGIN END pour mon IF et mon ELSE c'est normal ?

2 Le ELSE est un cas particulier du IF si ChauffeurID a été défini, avez vous une suggestion pour mieux integrer cette situation sans reecrire toute la methode comme je l'ai fait ?

Merci de m'aider pour mieux comprendre cette syntaxe (vraiment mal documentée )

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
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
USE [Clark]
GO
/****** Object:  StoredProcedure [dbo].[sp_DoTotal]    Script Date: 03/06/2011 00:12:00 ******/
SET ANSI_NULLS ON
GO
SET QUOTED_IDENTIFIER ON
GO
 
ALTER PROCEDURE [dbo].[sp_DoTotal]
   @ChauffeurID  int,
   @TotalType  int
AS
set @TotalType = (SELECT 
                     CASE @TotalType
                        WHEN 0 THEN 0
                        WHEN 9 THEN 9
                        ELSE 0
                     END)
IF @ChauffeurID IS NULL
BEGIN
INSERT INTO  
 [Clark].[dbo].TotalChauffeur 
 (
   ChauffeurID,
   ChauffeurName,
   Date,
   Gewicht
  )
SELECT 
      [ChauffeurID]
      ,[ChauffeurName]
      ,MAX(Date) as Date
      ,SUM([bruto])-sum([tarra]) as Gewicht
  FROM [Clark].[dbo].[BakMove]
  where ChauffeurID in (select ChauffeurID From [BakMove] where TotalStatus=@TotalType)
  group by 
  [ChauffeurID]
  ,[ChauffeurName]
  ,CAST(Date as Date)
  END
ELSE
  BEGIN
INSERT INTO  
 [Clark].[dbo].TotalChauffeur 
 (
   ChauffeurID,
   ChauffeurName,
   Date,
   Gewicht
  )
SELECT 
      [ChauffeurID]
      ,[ChauffeurName]
      ,MAX(Date) as Date
      ,SUM([bruto])-sum([tarra]) as Gewicht
  FROM [BakMove]
  where ChauffeurID in 
  (select 
    ChauffeurID 
    From [BakMove] 
    where TotalStatus=@TotalType
    AND ChauffeurID=@ChauffeurID)
  group by 
  [ChauffeurID]
  ,[ChauffeurName]
  ,CAST(Date as Date)  
  END
  return