#sqlcmd
#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: .
Ответ №1:
Поддерживает ли команда SQLCMD : r непостоянные литеральные пути?
Это так. Вы неправильно определяете свою переменную. Попробуйте:
:setvar path1 "script.sql"
:r $(path1)
Смотрите также эту статью о MSDN.
Комментарии:
1. есть ли такая возможность, как
:r $(path)module_v$(milesone)1_AlterScript.sql
Ответ №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)" "%"
Ответ №3:
Проблема не в файле VS lists в списке ошибок, а скорее в файле, на который вы ссылаетесь.
Следует выполнить поиск синтаксической ошибки для файла, на который вы ссылаетесь. Для вашего примера .script.sql