在带有sql的批处理文件中使用While循环

时间:2015-10-13 13:04:25

标签: sql-server batch-file

我是Batch的新手。

我的代码:

    @ECHO OFF

    SET colu=
    SET sn=
    SET /P colu= Enter column name:
    SET /P sn= Enter ID : 

     sqlcmd -U USER -P PWORD -S SERVER -d DBNAME-i sqlSCRIPT.sql -o LOG.txt -v delete=%colu% d_id=%%I

    pause

 SET /P sn= Enter ID :
     sqlcmd -U USER -P PWORD -S SERVER -d DBNAME-i sqlSCRIPT.sql -o LOG.txt -v delete=%colu% d_id=%%I

pause

 SET /P sn= Enter ID :
     sqlcmd -U USER -P PWORD -S SERVER -d DBNAME-i sqlSCRIPT.sql -o LOG.txt -v delete=%colu% d_id=%%I

代码工作并执行我需要它执行的操作,这是从db中删除记录但我希望有更有效的方法来编写它。

我如何批量生成一个while循环,在按下结束键之前不断要求用户输入ID?我也意识到暂停 sqlcmd之间非常不方便。

1 个答案:

答案 0 :(得分:2)

这样的事情怎么样:

@ECHO OFF

SETLOCAL

SET /P "colu=Enter column name:"

:Prompt
REM Clear any existing values.
SET "sn="

ECHO Enter a blank value to stop the operation.
SET /P "sn=Enter ID:"

REM Check for exist conditions.
IF "%colu%"=="" GOTO :EOF
IF "%sn%"=="" GOTO :EOF

REM If we get here, data was entered for both
sqlcmd -U USER -P PWORD -S SERVER -d DBNAME-i sqlSCRIPT.sql -o LOG.txt -v delete=%colu% d_id=%sn%
ECHO.
ECHO.

REM Ask again.
GOTO Prompt

:EOF
ENDLOCAL

这将继续提示,直到您为colusn输入空白值。另外,我注意到您在SQL语句中使用%%I - 我认为您打算使用%sn%代替。