我试图通过批处理文件运行SQL查询,当我试图这样做时,我正在
无效参数错误
下面是我正在尝试运行SQL脚本的批处理文件
:start
cls
@echo ------BILLING REPORT---------
@echo Please enter billing report Date in (YYYY/MM/DD)
@echo off
::set /P D = Enter Date:
::Date %Date% > Billing_Data.sql
PAUSE
sqlcmd -S database\instance_name -E -i "C:\Users\rb54761\Deskto\rb54761\Billing_Data_For_Certs_New.sql" > Output.txt -v Date = '2016-07-01'
:: -o "C:\Users\rb54761\Desktop\rb54761\Output.txt"
PAUSE
COPY C:\Users\rb54761\Desktop\rb54761\Output.txt C:\Users\rb54761\Desktop
PAUSE
goto start为此,我需要1。当用户输入日期时,数据将根据该日期获取。2.我希望在where子句中添加该日期,以便数据将相应地在下面获取,这是我要输入数据的where子句。
WHERE
DateCompleted > CONVERT(DATETIME, '$(Date)', 102))发布于 2016-07-26 22:05:05
在命令行中使用-v Date = '2016-07-01',单引号被认为是sqlcmd变量的一部分。在您的脚本中,您使用了'$(Date)',它变成了''2016-07-01'',错误应该是相当明显的。
从命令行或脚本中删除一组引号,所有这些都会正常工作。
如果您希望引用命令行中的值,以防止出现有毒字符,或者包括批处理令牌分隔符(如空格或逗号),则必须使用双引号:类似于
-v var = "Some value with spaces"。在这种情况下,双引号是,而不是值中包含的。
https://stackoverflow.com/questions/38600175
复制相似问题