Как определить, определена ли переменная (-v) в командной строке (SQLCMD) - PullRequest
8 голосов
/ 12 октября 2010

Есть ли способ узнать, определена ли переменная в командной строке с помощью SQLCMD?

Вот моя командная строка:

sqlcmd -vDB="EduC_E100" -i"Z:\SQL Common\Admin\ProdToTest_DB.sql"

Внутри ProdToTest_DB.sql Я хотел бы установить какой-то условный IF, чтобы проверить, существует ли переменная, и определить, если она не существует.

IF NOT $(DB)
:setvar DB "C_Q200"
END

Я хочу разрешить запуск сценария как из командной строки, так и внутри SSMS.

Заранее спасибо.

Ответы [ 2 ]

13 голосов
/ 12 октября 2010

Я использовал варианты следующей подпрограммы в многочисленных сценариях, зависящих от переменных командной строки. Здесь «DataPath» является обязательным значением.

DECLARE @Test_SQLCMD  varchar(100)

--  Confirm that SQLCMD values have been set (assume that if 1 is, all are)
SET @Test_SQLCMD = '$(DataPath)'

IF reverse(@Test_SQLCMD) = ')htaPataD($'
    --  SQLCMD variables have not been set, crash and burn!
    RAISERROR('This script must be called with the required SQLCMD variables!', 20, 1) with log
0 голосов
/ 01 мая 2014

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

...