Вопрос : Потребность setup эта, котор хранят процедура.

Создайте ПРОЦЕДУРУ [dbo]. [prc_Messages_Response_Select_All] @FromProfileID INT

; С msgs
AS
BEGIN
(
    -- получите первое message
ВЫБЕРИТЕ 0 как MessageLevel, A.
[MessageID], A.
[ProfileID], A.
[FromProfileID], A.
[FromUsername], B.
[UserName] КАК SentToUserName, A.
[вопрос], A.
[тело], новообращенный
(varchar, A. [MsgDate], 107) КАК zdate, A.
[MsgDate], A.
[MsgRead], A.
[MsgReplied], A.
[MsgNew], A.
[ReplyOfMessageID],
A.
[InitialMessageID]    A. b
ON
a
ВНУТРЕННЕЕ JOIN
FROM
[tbl_Messages] [tbl_Profile] [ProfileID] = A.
WHERE
B. [ProfileID] [FromProfileID] =
@FromProfileID
    -- рекурсивное СОЕДИНЕНИЕ ВСЕ

ВЫБЕРИТЕ m.MessageLevel + 1, A.
части CTE
[MessageID], A.
[ProfileID], A.
[FromProfileID], A.
[FromUsername], B.
[UserName] КАК SentToUserName, A.
[вопрос], A.
[тело], новообращенный
(varchar, A. [MsgDate], 107) КАК zdate, A.
[MsgDate], A.
[MsgRead], A.
[MsgReplied], A.
[MsgNew], A.
[ReplyOfMessageID],
            A. b
ON
a
ВНУТРЕННЕЕ JOIN

FROM
A. [InitialMessageID] [tbl_Messages] [tbl_Profile] [ProfileID] =
B. [ProfileID] ВНУТРЕННЕЕ СОЕДИНЯЕТ A. m
ON
msgs
[ReplyOfMessageID] =
M. [MessageID] ИЛИ A. [InitialMessageID] = M. [MessageID] -- не может

SELECT this
) * ОТ msgs
ORDER MessageLevel, [MsgDate] DESC

END
Msg 102, уровень 15, положение 1, prc_Messages_Response_Select_All процедуры, линия синтаксис 3
Incorrect ближайше «; ».
Msg 156, уровень 15, положение 1, prc_Messages_Response_Select_All процедуры, линия синтаксис 5
Incorrect около ключевого слова «НАЧИНАЕТ».
class=

Ответ : Потребность setup эта, котор хранят процедура.

Вы должны вспомнить что низкопробная структура, котор хранят процедуры является следующим:

создайте proc_name процедуры
   @parameter1 [, @parameter2 [, @parameterN]]
как
[начните]
-- тело процедуры здесь
[конец]

Помочь держать вещи прямым, я всегда начинал бы с тем и я включил бы опционное начинаю и конец как раз поэтому ясно где ваше тело процедуры начинает.

С заявлением в вопросе, котор я дал вас обычный выражение таблицы и оно принимает форму:

С cte_name КАК ({выберите вопрос})

Ранее заявления должны быть прекращены перед С, поэтому вы часто будете видеть это как; С обеспечить что другие заявления закрыны сперва.

Ваша ошибка вышеуказанная должна к вам смущать от С к от процедуры и поэтому введено НАЧНИТЕ в неправильном месте. Попытайтесь исправленное Кодий ниже.

Понадейтесь что помощь!
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:
СОЗДАЙТЕ ПРОЦЕДУРУ [dbo]. [prc_Messages_Response_Select_All]
      @FromProfileID INT
КАК
НАЧНИТЕ

УСТАНОВИТЕ NOCOUNT ДАЛЬШЕ;

; С msgs
КАК
(
    -- получите первое сообщение
    ВЫБЕРИТЕ  0 как MessageLevel,
            A. [MessageID],
            A. [ProfileID],
            A. [FromProfileID],
            A. [FromUsername],
            B. [UserName] КАК SentToUserName,
            A. [вопрос],
            A. [тело],
            новообращенный (varchar, A. [MsgDate], 107) КАК zdate,
            A. [MsgDate],
            A. [MsgRead],
            A. [MsgReplied],
            A. [MsgNew],
            A. [ReplyOfMessageID],
            A. [InitialMessageID]
    ОТ
            [tbl_Messages] a
      ВНУТРЕННЕ СОЕДИНИТЕ
            [tbl_Profile] b
            НА
                  A. [ProfileID] = B. [ProfileID]
    ГДЕ
            A. [FromProfileID] = @FromProfileID
    
    -- рекурсивная часть CTE        
    СОЕДИНЕНИЕ ВСЕ 
    
    ВЫБЕРИТЕ  m.MessageLevel + 1,
            A. [MessageID],
            A. [ProfileID],
            A. [FromProfileID],
            A. [FromUsername],
            B. [UserName] КАК SentToUserName,
            A. [вопрос],
            A. [тело],
            новообращенный (varchar, A. [MsgDate], 107) КАК zdate,
            A. [MsgDate],
            A. [MsgRead],
            A. [MsgReplied],
            A. [MsgNew],
            A. [ReplyOfMessageID],
            A. [InitialMessageID]
    ОТ
            [tbl_Messages] a
      ВНУТРЕННЕ СОЕДИНИТЕ
            [tbl_Profile] b
            НА
                  A. [ProfileID] = B. [ProfileID]
      ВНУТРЕННЕ СОЕДИНИТЕ 
            msgs m
            НА
                  A. [ReplyOfMessageID] = M. [MessageID]
                  ИЛИ A. [InitialMessageID] = M. [MessageID] -- не смогите это
) 
ВЫБЕРИТЕ * ОТ msgs
ЗАКАЗ MessageLevel, [MsgDate] DESC
;

КОНЕЦ
Другие решения  
  •  Как я добавляю кнопки на форме PDF для того чтобы добавить/извлекаю рядки данных?
  •  Шнур ошибки в блоке задвижки?
  •  сколько вариант сервера SQL на одной машине
  •  Внешний вид 2007 не может архивный файл открытой сети сохраненный
  •  Активно директория DNS записывает вопрос
  •  Отчет о доступа 2010 экспорта к CSV с коллекторами?
  •  Прокладчик OCE 9400 не начинает
  •  как добавить десятичное место в формуле в отчете о кристалла seagate
  •  Windows XP и Мичрософт Оутлоок и проблемы установителя Windows
  •  VB6 к VS2010 - консультации тренировки?
  •  
    programming4us programming4us