Cuestión : Necesidad de fijar este procedimiento almacenado.

Crear el PROCEDIMIENTO [dbo]. [prc_Messages_Response_Select_All] @FromProfileID INT
del
; CON el msgs
AS
BEGIN
(
    -- conseguir el primer message
SELECCIONAN 0 como MessageLevel,
A. [MessageID],
A. [ProfileID],
A. [FromProfileID],
A. [FromUsername],
B. [username] COMO SentToUserName,
A. [tema],
A. [cuerpo], convertido del
(varchar, A. [MsgDate], 107) COMO zdate,
A. [MsgDate],
A. [MsgRead],
A. [MsgReplied],
A. [MsgNew],
A. [ReplyOfMessageID],
del
A. [InitialMessageID]    B
ON
A. [ProfileID] del a
JOIN
de FROM
[tbl_Messages] =
WHERE
A. [FromProfileID] del B. [ProfileID] =
del @FromProfileID
    -- UNIÓN recurrente que TODO EL
del
SELECCIONAR m.MessageLevel + 1,
A. [MessageID],
A. [ProfileID],
A. [FromProfileID],
A. [FromUsername],
B. [username] del
de la porción de CTE COMO SentToUserName,
A. [tema],
A. [cuerpo], convertido del
(varchar, A. [MsgDate], 107) COMO zdate,
A. [MsgDate],
A. [MsgRead],
A. [MsgReplied],
A. [MsgNew],
A. [ReplyOfMessageID],
            el b
ON
A. [ProfileID] del a
JOIN
del
FROM
[tbl_Messages] del A. [InitialMessageID] = el
del B. [ProfileID] INTERNO ENSAMBLA el m
ON
A. [ReplyOfMessageID] = el
del M. [MessageID] O A. [InitialMessageID] de los msgs del
= M. [MessageID] -- no puede necesitar el

SELECT del this
) * del msgs
ORDER de MessageLevel, [MsgDate] DESC

END
Msg 102, nivel 15, estado 1, prc_Messages_Response_Select_All, línea sintaxis del procedimiento de 3
Incorrect cerca “; ”. el
Msg 156, nivel 15, estado 1, prc_Messages_Response_Select_All, línea sintaxis del procedimiento de 5
Incorrect cerca de la palabra clave “COMIENZA”.
class= del

Respuesta : Necesidad de fijar este procedimiento almacenado.

Usted tiene que recordar que es la estructura baja del procedimiento almacenado:

crear el proc_name del procedimiento
   @parameter1 [, @parameter2 [, @parameterN]]
como
[comenzar]
-- cuerpo de procedimiento aquí
[extremo]

Para ayudar a mantener cosas rectas, comenzaría siempre con ése e incluiría el opcional comienzo y extremo apenas así que está claro donde su cuerpo de procedimiento comienza.

CON la declaración en la pregunta que le di es una expresión común de la tabla y toma la forma:

CON el cte_name COMO ({seleccionar la pregunta})

Las declaraciones anteriores tienen que ser terminadas antes de CON, así que usted verá a menudo esto como; CON para asegurarse de que otras declaraciones estén cerradas primero.

Su error antedicho es debido a usted confusión en fecha CON a en fecha procedimiento y así que insertado COMENZAR en el lugar incorrecto. Intentar el código corregido abajo.

¡Esperar que las ayudas!
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:
CREAR EL PROCEDIMIENTO [dbo]. [prc_Messages_Response_Select_All]
      @FromProfileID internacional
COMO
COMENZAR

FIJAR NOCOUNT ENCENDIDO;

; CON msgs
COMO
(
    -- conseguir el primer mensaje
    SELECCIONAR  0 como MessageLevel,
            a. [MessageID],
            a. [ProfileID],
            a. [FromProfileID],
            a. [FromUsername],
            b. [username] COMO SentToUserName,
            a. [tema],
            a. [cuerpo],
            convertido (varchar, A. [MsgDate], 107) COMO zdate,
            a. [MsgDate],
            a. [MsgRead],
            a. [MsgReplied],
            a. [MsgNew],
            a. [ReplyOfMessageID],
            a. [InitialMessageID]
    DE
            [tbl_Messages] a
      INTERNO ENSAMBLAR
            b [tbl_Profile]
            EN
                  a. [ProfileID] = B. [ProfileID]
    DONDE
            a. [FromProfileID] = @FromProfileID
    
    -- porción recurrente de CTE        
    UNIÓN TODA 
    
    SELECCIONAR  m.MessageLevel + 1,
            a. [MessageID],
            a. [ProfileID],
            a. [FromProfileID],
            a. [FromUsername],
            b. [username] COMO SentToUserName,
            a. [tema],
            a. [cuerpo],
            convertido (varchar, A. [MsgDate], 107) COMO zdate,
            a. [MsgDate],
            a. [MsgRead],
            a. [MsgReplied],
            a. [MsgNew],
            a. [ReplyOfMessageID],
            a. [InitialMessageID]
    DE
            [tbl_Messages] a
      INTERNO ENSAMBLAR
            b [tbl_Profile]
            EN
                  a. [ProfileID] = B. [ProfileID]
      INTERNO ENSAMBLAR 
            msgs m
            EN
                  a. [ReplyOfMessageID] = M. [MessageID]
                  O A. [InitialMessageID] = M. [MessageID] -- no puede necesitar esto
) 
SELECCIONAR * de los msgs
ORDEN de MessageLevel, [MsgDate] DESC
;

EXTREMO
Otras soluciones  
 
programming4us programming4us