Как я могу проверить переменные среды, установленные в Transact SQL? - PullRequest
0 голосов
/ 15 апреля 2020

Я хочу написать запрос для SQL Сервера, который при необходимости проверяет переменную среды. Я вызываю свой запрос из PowerShell с чем-то вроде

$sqlVariables = "MY_VAR='something'"
Invoke-Sqlcmd ... -InputFile myQuery.sql -Variable $sqlVariables `

И myQuery.sql имеет предложение вроде:

WHERE sometable.somefield = $(MY_VAR)

Но я не могу запустить этот запрос в SQL Управление сервером Studio, потому что переменная не установлена. Если я объявлю переменную в SQL, я могу сделать что-то вроде:

WHERE (@MY_VAR IS NOT NULL AND somefield.somefield = @MY_VAR)

Есть ли способ проверить, существует ли $(MY_VAR), чтобы я мог поставить тест в первой половине WHERE предложение и пропустить сравнение, если это не так? Я гуглил повсюду и не нашел ничего близкого.

1 Ответ

0 голосов
/ 23 апреля 2020

Моей целью было не редактировать сложный запрос, чтобы удалить или изменить обработку переменной PowerShell при интерактивном тестировании запроса. В итоге я добавил в начало файла:

DECLARE @MY_VAR AS VARCHAR(25) = NULL;

-- Comment out for interactive use
SET @MY_VAR = $(MY_VAR);

Затем в тело запроса я включил предложение в WHERE, например:

AND (@MY_VAR IS NULL OR sometable.somefield = @MY_VAR)

Таким образом, я могу открыть файл .sql в Management Studio, быстро и безопасно внести изменения в первые несколько строк и выполнить запрос.

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