Frage : Notwendigkeit, dieses gespeicherte Verfahren zu gründen.

VERFAHREN [dbo] verursachen. [prc_Messages_Response_Select_All]
@FromProfileID INT
; MIT msgs
AS
BEGIN
(
    -- das erste message
erhalten VORWÄHLEN 0 als MessageLevel,
A. [MessageID],
A. [ProfileID],
A. [FromProfileID],
A. [FromUsername],
B. [username] ALS SentToUserName,
A. [Thema],
A. [Körper],
der Bekehrte (varchar, A. [MsgDate], 107) ALS zdate,
A. [MsgDate],
A. [MsgRead],
A. [MsgReplied],
A. [MsgNew],
A. [ReplyOfMessageID],
A. [InitialMessageID]
    FROM
[tbl_Messages] a
INNERES JOIN
[tbl_Profile] b
ON
A. [ProfileID] = B. [ProfileID]
WHERE
A. [FromProfileID] = @FromProfileID

    -- rekursiver CTE Teil
ANSCHLUSS ALLES

VORWÄHLEN m.MessageLevel + 1,
A. [MessageID],
A. [ProfileID],
A. [FromProfileID],
A. [FromUsername],
B. [username] ALS SentToUserName,
A. [Thema],
A. [Körper],
Bekehrter (varchar, A. [MsgDate], 107) ALS zdate,
A. [MsgDate],
A. [MsgRead],
A. [MsgReplied],
A. [MsgNew],
A. [ReplyOfMessageID],
            a. [InitialMessageID]
FROM
[tbl_Messages] a
INNERES JOIN
[tbl_Profile] b
ON
A. [ProfileID] = das INNERE B. [ProfileID]
SCHLIESSEN sich
Msgs m
ON
A. [ReplyOfMessageID] = M. [MessageID]
ODER A. [InitialMessageID] = M. an [MessageID] -- this
)

SELECT * vom msgs
ORDER nicht DURCH MessageLevel nahe benötigen, [MsgDate] kann DESC

END
Msg 102, Niveau 15, Zustand 1, Verfahren prc_Messages_Response_Select_All, Linie 3
Incorrect Syntax „; “.
Msg 156, Niveau 15, Zustand 1, Verfahren prc_Messages_Response_Select_All, Linie 5
Incorrect Syntax nahe dem Schlüsselwort „FANGEN“ an.

Antwort : Notwendigkeit, dieses gespeicherte Verfahren zu gründen.

Sie müssen dich daran erinnern, dass die niedrige Struktur des gespeicherten Verfahrens ist:

Verfahren proc_name verursachen
   @parameter1 [, @parameter2 [, @parameterN]]
wie
[anfangen]
-- Prozedurrumpf hier
[Ende]

Um zu helfen Sachen gerade zu halten, würde ich immer mit dem beginnen und ich würde das wahlweise freigestellte anfange und Ende gerade miteinschließen also ist es frei wo Ihr Prozedurrumpf beginnt.

MIT Aussage in der Frage, die ich Sie gab, ist ein allgemeiner Tabellenausdruck und er nimmt die Gestalt an:

MIT cte_name WIE ({Frage vorwählen})

Vorhergehende Aussagen müssen vor MIT beendet werden, also sehen Sie häufig dieses wie; MIT garantieren, dass andere Aussagen zuerst geschlossen werden.

Ihre Störung, die oben genannt ist, liegt an Ihnen die Verwechslung, die ab MIT zu ab Verfahren ist und also eingesetzt im falschen Platz ANFANGEN. Den behobenen Code unten versuchen.

Hoffen dass Hilfen!
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:
6:
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:
VERFAHREN [dbo] VERURSACHEN. [prc_Messages_Response_Select_All]
      @FromProfileID INT
WIE
ANFANGEN

NOCOUNT AN EINSTELLEN;

; MIT Msgs
WIE
(
    -- die erste Mitteilung erhalten
    0  als MessageLevel VORWÄHLEN,
            a. [MessageID],
            a. [ProfileID],
            a. [FromProfileID],
            a. [FromUsername],
            b. [username] ALS SentToUserName,
            a. [Thema],
            a. [Körper],
            Bekehrter (varchar, A. [MsgDate], 107) ALS zdate,
            a. [MsgDate],
            a. [MsgRead],
            a. [MsgReplied],
            a. [MsgNew],
            a. [ReplyOfMessageID],
            a. [InitialMessageID]
    VON
            [tbl_Messages] a
      INNER VERBINDEN
            [tbl_Profile] b
            AUF
                  a. [ProfileID] = B. [ProfileID]
    WO
            a. [FromProfileID] = @FromProfileID
    
    -- rekursiver CTE Teil        
    ANSCHLUSS ALLER 
    
    VORWÄHLEN  m.MessageLevel + 1,
            a. [MessageID],
            a. [ProfileID],
            a. [FromProfileID],
            a. [FromUsername],
            b. [username] ALS SentToUserName,
            a. [Thema],
            a. [Körper],
            Bekehrter (varchar, A. [MsgDate], 107) ALS zdate,
            a. [MsgDate],
            a. [MsgRead],
            a. [MsgReplied],
            a. [MsgNew],
            a. [ReplyOfMessageID],
            a. [InitialMessageID]
    VON
            [tbl_Messages] a
      INNER VERBINDEN
            [tbl_Profile] b
            AUF
                  a. [ProfileID] = B. [ProfileID]
      INNER VERBINDEN 
            Msgs m
            AUF
                  a. [ReplyOfMessageID] = M. [MessageID]
                  ODER A. [InitialMessageID] = M. [MessageID] -- kann dieses nicht benötigen
) 
* von den Msgs VORWÄHLEN
AUFTRAG DURCH MessageLevel, [MsgDate] DESC
;

ENDE
Weitere Lösungen  
 
programming4us programming4us