Sql server 分配给1个变量批次的用户输入多个值
我的批处理文件如下所示Sql server 分配给1个变量批次的用户输入多个值,sql-server,batch-file,batch-processing,Sql Server,Batch File,Batch Processing,我的批处理文件如下所示 ECHO OFF SET /P colu= Enter column name: SET /P sn= Enter ID (Press enter when finished): if %sn%={ENTER} GOTO START :START sqlcmd -U USER -P PWORD -S SERVER -d DBNAME-i sqlSCRIPT.sql -o LOG.txt -v delete=colu d_id=sn 我希望用户能够在
ECHO OFF
SET /P colu= Enter column name:
SET /P sn= Enter ID (Press enter when finished):
if %sn%={ENTER}
GOTO START
:START
sqlcmd -U USER -P PWORD -S SERVER -d DBNAME-i sqlSCRIPT.sql -o LOG.txt
-v delete=colu d_id=sn
我希望用户能够在一行中输入多个ID。这些ID将使用sqlScript.sql从数据库中删除,但是此代码不允许我输入多个ID
它将我输入的值视为一个整数值
例如,如果我输入1,2,3作为单独的值,它会将其视为“1,2,3”作为1个整数值。您的代码中有几个问题: 变量colu和sn应在开始时清除,以避免使用以前的值; if子句没有意义,语法错误; 若要使用变量的值,需要将其展开为%colu%; 要连续使用一个值,请使用for循环; 在SqLCMD命令行的中间有一行断线; 以下操作应满足您的要求:
@ECHO OFF
SET colu=
SET sn=
SET /P colu= Enter column name:
SET /P sn= Enter ID (Press enter when finished):
FOR %%I IN (%sn%) DO (
sqlcmd -U USER -P PWORD -S SERVER -d DBNAME-i sqlSCRIPT.sql -o LOG.txt -v delete=%colu% d_id=%%I
)
使用FOR循环设置逗号,作为分隔符,然后使用另一个FOR循环来处理每个i.d的SQL命令好的,您可以基于分隔符创建一个数组并循环。我不理解if语句的用途,它的用途是什么?我是否要分隔列或空格输入的值?当我尝试使用空格时,程序仍然将两个值视为1个整数值=根据FOR/?,默认分隔符集为空格和制表符。@礼拜者,您将/F和plain混淆为:set do中的%%I…-set参数使用标准cmd分隔符。。。