SQLCMD:r <path>其中path是变量</path>

时间:2011-04-13 17:23:18

标签: sqlcmd

SQLCMD命令:r是否支持非常量文字路径?

例如:

setvar $(path1) '.\script.sql'
:r $(path1) -- SQL01260: A fatal parser error occurred: .
:r '$(path1)' -- SQL01260: A fatal parser error occurred: .
:r "$(path1)" -- SQL01260: A fatal parser error occurred: .

3 个答案:

答案 0 :(得分:6)

  

SQLCMD命令:r支持   非常数文字路径?

确实如此。您以错误的方式定义变量。尝试:

:setvar path1 "script.sql"
:r $(path1)

另见this article on MSDN

答案 1 :(得分:2)

这里只是张贴这个作为其他人的例子来节省我刚丢失的时间。

test_setvar.sql文件包含以下内容

-- :r test_setvar.sql
:reset

:setvar Name "filename"
print '$(Name)'
-- :setvar OutName '$(Name)'  -- NO wont work
-- :out $(OutName).txt
:r $(Name).sql  -- filename.sql exists and prints "Hello World"
:out $(Name).txt  -- filename.txt is created  

go
:out stdout

明确陈述here

注意: 多部分字符串和字段所需的双引号:out 例如

:out "string bit"$(field1)"string bit2"$(field2)

单引号包装无法使用:out for this。

但是... 查询中需要双重或单引号包装。

where col.name LIKE "%" + "$(SEARCH_STRING)" + "%"

答案 2 :(得分:1)

问题不在于错误列表中的文件VS列表,而在于您引用的文件。

应搜索您引用的文件的语法错误。对于你的例子。\ script.sql