在批处理文件中使用While循环使用sql
问题描述:
我是批处理新手。在批处理文件中使用While循环使用sql
我的代码:
@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
代码工作和做什么,我需要做的是从数据库中删除记录,但我希望有写它更有效的方式。
我将如何实现一个批处理while循环,这将继续要求用户输入id,直到他们按结束键?另外我意识到,拥有暂停之间sqlcmd是非常不方便。
答
怎么是这样的:
@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
,直到你输入任何colu
或sn
空值这将使提示。另外,我注意到你在你的SQL语句中使用了%%I
- 我想你的意思是使用%sn%
来代替。
谢谢!这非常有帮助。 – royalblue
看来你忘了清除'colu'也... – aschipfl