Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/batch-file/6.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Sql server 分配给1个变量批次的用户输入多个值_Sql Server_Batch File_Batch Processing - Fatal编程技术网

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分隔符。。。