7

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: .
4

3 回答 3

6

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

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

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

另请参阅MSDN 上的这篇文章

于 2011-07-09T15:21:07.487 回答
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

这里说清楚

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

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

单引号换行不适用于 :out 。

但是...在查询中需要双引号或单引号。

where col.name LIKE "%" + "$(SEARCH_STRING)" + "%"
于 2011-09-30T07:48:02.077 回答
1

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

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

于 2012-01-17T11:36:04.807 回答