我正在尝试通过批处理文件运行SQL查询,当我尝试这样做时,我正在
无效参数错误
以下是我尝试运行SQL SCRIPT的批处理文件
: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))
答案 0 :(得分:0)
在命令行中使用-v Date = '2016-07-01'
,单引号被视为sqlcmd变量的一部分。在您的脚本中,您使用的'$(Date)'
变为''2016-07-01''
,错误应该非常明显。
从命令行或脚本中删除一组引号,所有引号都应该有效。
如果要在命令行中引用该值以防止出现毒字符或包含批处理标记分隔符(如空格或逗号),则必须使用双引号:类似于
-v var = "Some value with spaces"
。在这种情况下,双引号不包含在值中。