2011-04-13 65 views
6

SQLCMD命令:r是否支持非常量文字路徑?SQLCMD:r <path>其中路徑是變量

例如:

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

回答

5

是否SQLCMD命令:R t支持 非恆定字面路徑?

它的確如此。你正在以一種錯誤的方式定義你的變量。請嘗試:

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

另請參閱this article on MSDN

1

只是發佈這裏作爲其他人的例子,以節省我剛剛失去的時間。

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 "string bit"$(field1)"string bit2"$(field2) 

單引號與包裹不會工作:出這一點。

但... 查詢中需要雙引號或單引號換行。

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

問題不在於錯誤列表中的文件VS列表,而是與您引用的文件有關。

應該搜索您引用的文件的語法錯誤。舉個例子,\ script.sql