Vraag : Behoefte aan opstelling deze opgeslagen procedure.

Cre�ër PROCEDURE [dbo]. [prc_Messages_Response_Select_All]
@FromProfileID INT
; MET msgs
AS
BEGIN
(
    -- krijg eerste message
SELECTEREN 0 aangezien MessageLevel,
a. [MessageID],
a. [ProfileID],
a. [FromProfileID],
a. [FromUsername],
b. [Gebruikersbenaming] ALS SentToUserName,
a. [Onderwerp],
a. [Lichaam],
omzet (varchar, a. [MsgDate], 107) ALS zdate,
a. [MsgDate],
a. [MsgRead],
a. [MsgReplied],
a. [MsgNew],
a. [ReplyOfMessageID],
a. [InitialMessageID]
    FROM
[tbl_Messages] a
BINNENJOIN
[tbl_Profile] b
ON
a. [ProfileID] = b. [ProfileID]
WHERE
a. [FromProfileID] = @FromProfileID

    -- de recursieve CTE gedeelte
UNIE AL

UITGEZOCHT m.MessageLevel + 1,
a. [MessageID],
a. [ProfileID],
a. [FromProfileID],
a. [FromUsername],
b. [Gebruikersbenaming] ALS SentToUserName,
a. [Onderwerp],
a. [Lichaam],
zet (varchar, a. [MsgDate], 107) om ALS zdate,
a. [MsgDate],
a. [MsgRead],
a. [MsgReplied],
a. [MsgNew],
a. [ReplyOfMessageID],
            a. [InitialMessageID]
FROM
[tbl_Messages] a
BINNENJOIN
[tbl_Profile] b
ON
a. [ProfileID] = b. [ProfileID]
BINNEN SLUIT zich aan bij
msgs m
ON
a. [ReplyOfMessageID] = m. [MessageID]
OF a. [InitialMessageID] = m. [MessageID] -- kan this
)

SELECT * VAN msgs
ORDER DOOR MessageLevel dichtbij niet vereisen, [MsgDate] DESC

END
Msg 102, Niveau 15, Staat 1, Procedure prc_Messages_Response_Select_All, de syntaxis van de Lijn 3
Incorrect „; “.
Msg 156, Niveau 15, Staat 1, Procedure prc_Messages_Response_Select_All, de syntaxis van de Lijn 5
Incorrect dichtbij het sleutelwoord „BEGINT“.

Antwoord : Behoefte aan opstelling deze opgeslagen procedure.

U moet herinneren dat de basisstructuur van de opgeslagen procedure is:

cre�ër procedure proc_name
   @parameter1 [, @parameter2 [, @parameterN]]
zoals
[begin]
-- procedure lichaam hier
[eind]

Helpen dingen recht houden, zou ik altijd met dat beginnen en ik zou facultatief enkel begin en beëindig omvatten zodat is het duidelijk waar uw procedurelichaam begint.

MET verklaring in de vraag die ik u heb gegeven is een gemeenschappelijke lijstuitdrukking en het neemt de vorm:

MET cte_name ZOALS ({uitgezochte vraag})

De vorige verklaringen moeten vóór MET worden geëindigdv, zodat zult u vaak dit zoals zien; MET om ervoor te zorgen dat andere verklaringen eerst gesloten zijn.

Uw fout is hierboven toe te schrijven aan u verwarren vanaf MET aan vanaf procedure en zo opgenomen BEGIN in de verkeerde plaats. Probeer de verbeterde hieronder code.

Hoop die helpt!
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:
CRE�ëR PROCEDURE [dbo]. [prc_Messages_Response_Select_All]
      @FromProfileID int.
ZOALS
BEGIN

PLAATS NOCOUNT;

; MET msgs
ZOALS
(
    -- krijg het eerste bericht
    SELECTEER  0 als MessageLevel,
            a. [MessageID],
            a. [ProfileID],
            a. [FromProfileID],
            a. [FromUsername],
            b. [Gebruikersbenaming] ALS SentToUserName,
            a. [Onderwerp],
            a. [Lichaam],
            zet (varchar, a. [MsgDate], 107) om ALS zdate,
            a. [MsgDate],
            a. [MsgRead],
            a. [MsgReplied],
            a. [MsgNew],
            a. [ReplyOfMessageID],
            a. [InitialMessageID]
    VAN
            [tbl_Messages] a
      BINNEN TREED TOE
            [tbl_Profile] B
            OP
                  a. [ProfileID] = b. [ProfileID]
    WAAR
            a. [FromProfileID] = @FromProfileID
    
    -- recursief gedeelte CTE        
    UNIE ALLEN 
    
    SELECTEER  m.MessageLevel + 1,
            a. [MessageID],
            a. [ProfileID],
            a. [FromProfileID],
            a. [FromUsername],
            b. [Gebruikersbenaming] ALS SentToUserName,
            a. [Onderwerp],
            a. [Lichaam],
            zet (varchar, a. [MsgDate], 107) om ALS zdate,
            a. [MsgDate],
            a. [MsgRead],
            a. [MsgReplied],
            a. [MsgNew],
            a. [ReplyOfMessageID],
            a. [InitialMessageID]
    VAN
            [tbl_Messages] a
      BINNEN TREED TOE
            [tbl_Profile] B
            OP
                  a. [ProfileID] = b. [ProfileID]
      BINNEN TREED TOE 
            msgs m
            OP
                  a. [ReplyOfMessageID] = m. [MessageID]
                  OF a. [InitialMessageID] = m. [MessageID] -- kan dit niet vereisen
) 
SELECTEER * UIT msgs
ORDE DOOR MessageLevel, [MsgDate] DESC
;

EIND
Andere oplossingen  
 
programming4us programming4us