Question : Le besoin d'installer ce procédé stocké.

Créer le PROCÉDÉ [dbo]. [prc_Messages_Response_Select_All] @FromProfileID INT
du
; AVEC le msgs
AS
BEGIN
(
    -- obtenir le premier message
CHOISISSENT 0 comme MessageLevel, le
A. [MessageID], le
A. [ProfileID], le
A. [FromProfileID], le
A. [FromUsername], le
B. [username] COMME SentToUserName, le
A. [sujet], le
A. [corps], converti du
(varchar, A. [MsgDate], 107) COMME zdate, le
A. [MsgDate], le
A. [MsgRead], le
A. [MsgReplied], le
A. [MsgNew], le
A. [ReplyOfMessageID], le
du
A. [InitialMessageID]    B
ON
A. [ProfileID] de l'a
JOIN
de FROM
[tbl_Messages] =
WHERE
A. [FromProfileID] de B. [ProfileID] =
du @FromProfileID
    -- UNION récursive du
de partie de CTE que TOUT LE
du
CHOISIR m.MessageLevel + 1,
A. [MessageID],
A. [ProfileID],
A. [FromProfileID],
A. [FromUsername],
B. [username] COMME SentToUserName,
A. [sujet],
A. [corps], converti du
(varchar, A. [MsgDate], 107) COMME zdate,
A. [MsgDate],
A. [MsgRead],
A. [MsgReplied],
A. [MsgNew],
A. [ReplyOfMessageID],
            le b
ON
A. [ProfileID] de l'a
JOIN
du
FROM
[tbl_Messages] d'A. [InitialMessageID] = le
de B. [ProfileID] INTÉRIEUR JOIGNENT le m
ON
A. [ReplyOfMessageID] = le
de M. [MessageID] OU A. [InitialMessageID] de msgs du
= M. [MessageID] -- ne peut pas presque avoir besoin du
)/>
SELECT * du msgs
ORDER PAR MessageLevel, [MsgDate] DESC

END
Msg 102, le niveau 15, l'état 1, le prc_Messages_Response_Select_All, ligne syntaxe de procédé de 3
Incorrect « ;  ». le
Msg 156, le niveau 15, l'état 1, le prc_Messages_Response_Select_All, la ligne syntaxe de procédé de 5
Incorrect près du mot-clé « COMMENCENT ».
class= de

Réponse : Le besoin d'installer ce procédé stocké.

Vous devez se rappeler que la structure basse du procédé stocké est :

créer le proc_name de procédé
   @parameter1 [, @parameter2 [, @parameterN]]
As
[commencer]
-- corps de procédé ici
[extrémité]

Pour aider à maintenir des choses droites, je commencerais toujours par celui et j'inclurais le facultatif commence et extrémité juste ainsi il est clair où votre corps de procédé commence.

AVEC le rapport dans la question que je vous ai donné est une expression commune de table et elle prend la forme :

AVEC le cte_name COMME ({choisir la question})

Des rapports précédents doivent être terminés avant AVEC, ainsi vous verrez souvent ceci As ; AVEC pour s'assurer que d'autres rapports sont clôturés d'abord.

Votre erreur ci-dessus est due à vous confondre en date de AVEC au en date du procédé et ainsi inséré COMMENCER dans l'endroit faux. Essayer le code corrigé ci-dessous.

Espérer que des aides !
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 :
69 :
70 :
CRÉER LE PROCÉDÉ [dbo]. [prc_Messages_Response_Select_All]
      @FromProfileID international
AS
COMMENCER

PLACER NOCOUNT DESSUS ;

; AVEC des msgs
AS
(
    -- recevoir le premier message
    CHOISIR  0 comme MessageLevel,
            a. [MessageID],
            a. [ProfileID],
            a. [FromProfileID],
            a. [FromUsername],
            b. [username] COMME SentToUserName,
            a. [sujet],
            a. [corps],
            converti (varchar, A. [MsgDate], 107) COMME zdate,
            a. [MsgDate],
            a. [MsgRead],
            a. [MsgReplied],
            a. [MsgNew],
            a. [ReplyOfMessageID],
            a. [InitialMessageID]
    DE
            [tbl_Messages] a
      INTÉRIEUR JOINDRE
            b [tbl_Profile]
            SUR
                  a. [ProfileID] = B. [ProfileID]
    LÀ OÙ
            a. [FromProfileID] = @FromProfileID
    
    -- partie récursive de CTE        
    UNION TOUTE 
    
    CHOISIR  m.MessageLevel + 1,
            a. [MessageID],
            a. [ProfileID],
            a. [FromProfileID],
            a. [FromUsername],
            b. [username] COMME SentToUserName,
            a. [sujet],
            a. [corps],
            converti (varchar, A. [MsgDate], 107) COMME zdate,
            a. [MsgDate],
            a. [MsgRead],
            a. [MsgReplied],
            a. [MsgNew],
            a. [ReplyOfMessageID],
            a. [InitialMessageID]
    DE
            [tbl_Messages] a
      INTÉRIEUR JOINDRE
            b [tbl_Profile]
            SUR
                  a. [ProfileID] = B. [ProfileID]
      INTÉRIEUR JOINDRE 
            msgs m
            SUR
                  a. [ReplyOfMessageID] = M. [MessageID]
                  OU A. [InitialMessageID] = M. [MessageID] -- ne peut pas avoir besoin de ceci
) 
CHOISIR * À PARTIR des msgs
ORDRE PAR MessageLevel, [MsgDate] DESC
;

EXTRÉMITÉ
Autres solutions  
  •  MS Excel 2007 et pdf - l'exportation vers le pdf prend de longues heures !
  •  Dans le Perl, comment j'ajoute une valeur à la liste, puis le contrôle pour voir si la valeur existent avant d'ajouter une nouvelle valeur
  •  Comment fais j'initialiser de la HP BL460c G6 de san et de la HP XP 240000
  •  Comment fais j'employer une clef de permis de volume sur un ordinateur de HP avec du CD de restauration
  •  Emplacement primaire de deux SCCM dans l'annuaire actif
  •  L'initiateur et la HP D2D de l'iSCSI R2 du serveur 2008 de Windows GERCENT l'issue
  •  Stocker le dossier dans le mysql using connector.net et le champ de goutte
  •  Carte vidéo d'USB - bit 32 sur le matériel travaillant au niveau du bit 64 ?
  •  asp.net que j'essaye de convertir une forme de HTML en forme d'aspx ou ? ce qui jamais. Aide du besoin sur la façon dont à à elle.
  •  Winzip 12 issues de secours du travail ?
  •  
    programming4us programming4us