SQL变量和IF语句

时间:2015-08-06 22:25:29

标签: tsql variables if-statement ssms sqlcmd

我在SSMS中使用SQLCMD模式的T-SQL从一个文件运行各种子文件,主要文件(princ.sql)是我需要声明的地方,并设置一个变量@MyInteger并运行一个子文件:

DECLARE @MyInteger INT
SET @MyInteger = 20

:setvar path "your absolute file path here"

:r $(path)\"query.sql"
:r $(path)\"uses Myingteger too.sql" 

这很好用;作为一个最小的例子,考虑query.sql和'使用MyInteger too.sql'拥有相同的一行

SELECT @MyInteger

我确实得到了两个20的实例。

我的麻烦在于我希望能够使用本地定义的变量@SubMyInteger自行运行query.sql。 我对query.sql的理想情况是

IF @MyInteger is declared 
    SET @SubMyInteger = @MyInteger
ELSE 
    SET @SubMyInteger = 90

SELECT @SubMyInteger

然后当我运行query.sql时,不会声明@MyInteger,因此@SubMyInteger将被分配90,并且将返回90。如果我运行princ.sql

,我也会像以前一样回来两个20秒

对于IF声明,我到目前为止尝试了两件事:

IF OBJECT_ID('@MyInteger') IS NOT NULL

IF @MyInteger IS NOT NULL

我收到错误

Must declare scalar variable "@MyInteger".

如果我尝试声明@MyInteger然后运行princ.sql,我会收到错误

The variable '@MyInteger' has already been declared.

即使声明语句是以IF为条件的。

有没有办法在这里实现我想要的?

由于

0 个答案:

没有答案