将SQL参数与外部路径组合?

时间:2016-06-13 20:27:35

标签: sql sql-server sql-server-2012

我有以下内容,正如我所期望的那样正常工作:

IF '$(EnvName)' LIKE 'Path%'
BEGIN
    :r .\Path\Path1.sql
END

我想做的是:

IF '$(EnvName)' LIKE 'Path%'
BEGIN
    :r .\Path\'$(EnvName)'.sql
END

但是这失败了,因为结果是.\Path\".sql - 尽管IF ('$EnvName')工作得很好。

我做错了什么?

2 个答案:

答案 0 :(得分:0)

SQLCMD变量就像一个预处理器。您只需要担心在表达式需要引用值时引用它们,而:r只需要引用整个路径。

尝试:

IF '$(EnvName)' LIKE 'Path%'
BEGIN
    :r .\Path\$(EnvName).sql
END

或者:

IF '$(EnvName)' LIKE 'Path%'
BEGIN
    :r ".\Path\$(EnvName).sql"
END

答案 1 :(得分:0)

试试这个:

:SETVAR FilePath ".\Path\"
:SETVAR FileExt ".sql"
IF '$(EnvName)' LIKE 'Path%'
BEGIN
    :r $(FilePath)$(EnvName)$(FileExt)
END