Отладить CTE с переменными? - PullRequest
0 голосов
/ 07 марта 2019

Много раз я хочу посмотреть, проверить результат определенного запроса в CTE с @variable без необходимости изменять все это, добавляя select * from cte в конце.

Пример выглядит примерно так:

declare @From date
declare @To date
declare @city varchar(20)
declare @st varchar(5)

// Lots of code that sets all the @variables

;with cteSales as
(
    select * from MyTable 
    where 
    From = @From and To = @To and 
    salesman = @salesman and city = @city and st = @st
) 
//HERE GOES A LONG QUERY THAT USES cteSales

Единственный известный мне способ отладки запроса в CTE - это 1) заменить переменные значениями и выполнить запрос или 2)прокомментируйте все после cteSales и добавьте select * from cteSales.

Последнее менее неудобно, но оба требуют изменения многих вещей из исходного кода.

Возможно ли отладить select отметка в cte без использования какого-либо из вышеперечисленных вариантов?

Ответы [ 2 ]

2 голосов
/ 08 марта 2019

Вы также можете заключить очень длинный запрос в cte, а затем в нижней части все, что вам нужно сделать, это закомментировать одну строку.

;with cteSales as
(
    select * from MyTable 
    where 
    From = @From and To = @To and 
    salesman = @salesman and city = @city and st = @st
) 
, cteVeryLongQuery as (
    //HERE GOES A LONG QUERY THAT USES cteSales
)
SELECT * FROM cteVeryLongQuery
-- SELECT * FROM cteSales -- Uncomment this for debugging `cteSales` and comment out the line above.

Наконец, если вы используете SQL Management Studio, используйте ярлыки Ctrl+K+C, чтобы закомментировать строки и Ctrl+K+U, чтобы раскомментировать их.

2 голосов
/ 07 марта 2019

Другой вариант, использующий ваш пример кода, заключается в следующем:

declare @From date
declare @To date
declare @city varchar(20)
declare @st varchar(5)

// Lots of code that sets all the @variables

--;with cteSales as   --comment these two lines out for testing
--(
    select * from MyTable 
    where 
    From = @From and To = @To and 
    salesman = @salesman and city = @city and st = @st  --highlight the code up to here and execute
) 
//HERE GOES A LONG QUERY THAT USES cteSales

РЕДАКТИРОВАТЬ в ответ на:

Я думал, что в IDE скрыта какая-то неясностьфункция, которая позволила бы мне просматривать результаты cte без необходимости изменять весь запрос

В этом случае ответ - нет.В IDE нет ничего подобного.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...