如何使用bat文件从用户和查询sql server DB获取数据

时间:2014-09-17 12:48:48

标签: tsql batch-file user-input sqlcmd

我正在努力做到这一点。我在网上搜索过,无法找到正确的解决方案。 我想写一个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%

认为它有意义但它不起作用

1 个答案:

答案 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)。