Возвращение 2 наборов результатов из sproc с CTE в DataSet - PullRequest
1 голос
/ 15 ноября 2011

Мой сохраненный процесс выглядит следующим образом:

WITH MYCTE(...)
AS
(
..
)


SELECT cte.*
FROM MYCTE cte

SELECT *
FROM table1
  INNER JOIN MYCTE ...

Так что с одним набором результатов все работало нормально, я добавил последний оператор SELECT в sproc, и теперь я получаю сообщение об ошибке, что он не знаетчто такое MYCTE

Почему мне не разрешено это делать?

Если предположить, что это работает как-то (с вашим советом), нужно ли мне изменить вызов dataset.fill, чтобы вернуть 2 набора результатов (таблицы)

1 Ответ

3 голосов
/ 15 ноября 2011

Вы пытаетесь вернуть один набор результатов? Затем вам нужно будет выполнить UNION или использовать временную таблицу или табличную переменную для их объединения.

Но чтобы ответить на вопрос: CTE хороши только для одного SELECT (или UPDATE, DELETE и т. Д.). Они на самом деле являются частью инструкции SELECT. Поэтому, когда вы делаете второй выбор, он понятия не имеет, каким должен быть MYCTE.

...