我正在努力做到这一点。我在网上搜索过,无法找到正确的解决方案。 我想写一个bat文件放在用户桌面上,点击后会要求用户输入一个序列号并使用该序列来查询数据库
数据库是SQL Server 2012
到目前为止,我有一个bat文件(batfile.bat)
batfile.bat包含
sqlcmd -S SERVER1\MSSQL2012 -i C:\KD\SerialNumber.sql -o C:\KD\SerialNumber.txt
在SerialNumber.sql中我有
USE StockDatabase
GO
select * FROM tblStock where SerialNumber like '%1234%'
GO
但显然这不会提示用户输入序列或使用sql中的输入 我想要做的是使用用户在SQL查询
中输入的序列号我想我应该做像
这样的事情set /P var= Enter Serial
获取用户输入?但是如何在SQL查询中使用他们输入的内容?
我已将batfile.bat更改为;
ECHO OFF
set /P var= Enter Serial: %=%
Serial %var% > SerialNumber.sql
sqlcmd -S EUROSERVER2\MSSQL2012 -i C:\KD\SerialNumber.sql -o C:\KD\SerialNumber.txt
和sql到
select * FROM tblStock where SerialNumber like '%1234%
认为它有意义但它不起作用
答案 0 :(得分:2)
要将环境变量的值传递给SQL脚本,您只需在脚本中按名称引用它(只需用$()
包围环境变量的名称),或者,如果您我希望明确地设置它,使用-v
的{{1}}开关。
例如(显式使用变量):
sqlcmd
或(隐含使用变量):
set /P sn= Enter Serial:
sqlcmd -S SERVER1\MSSQL2012 -i SerialNumber.sql -o SerialNumber.txt -v serial=%sn%
并且,为了使其正常工作,您的脚本(set /P serial= Enter Serial:
sqlcmd -S SERVER1\MSSQL2012 -i SerialNumber.sql -o SerialNumber.txt
)将具有:
SerialNumber.sql
更多信息here(MSDN)。