SQL 通过批处理 - 效果不佳
SQL via Batch - Not working well
我编写了一个批处理脚本来从 sql 数据库中获取特定值或更新值。
它仅适用于 一些 次,如下所列。
案例 1:
第一次无效(未更新)但 returns - 1 行受影响
第二次成功(在数据库中更新良好)returns - 1 行受影响
情况2:
有时会抛出错误(Sqlcmd:'username=':参数无效。输入“-?”寻求帮助。)
发现我的cmd错误here。
请在下面找到我的脚本和 sql 代码。
main.bat
@ECHO OFF
:: DB Properties
SET dbPath=XXXX
SET dbUsername=YYYY
SET dbPassword=ZZZZ
SET dataBaseName=KKKK
:: SQL Properties
SET originId=50
ECHO DB NAME - %dataBaseName%
ECHO Select an option
ECHO 1.Token
ECHO 2.Activate
SET /P option=Enter an option:
IF "%option%"=="1" ( SET /P inputUserName=Enter username:
sqlcmd -S %dbPath% -U %dbUsername% -P %dbPassword% -i token.sql -v dbName=%dataBaseName% username=%inputUserName% )
IF "%option%"=="2" ( SET /P inputUserName=Enter username:
sqlcmd -S %dbPath% -U %dbUsername% -P %dbPassword% -i update.sql -v dbName=%dataBaseName% username=%inputUserName% orgId=%originId% )
ECHO Executed Successfully ..!!
::PAUSE
token.sql
use $(dbName);
select VerificationCode from users where username = '$(username)'
update.sql
use $(dbName);
UPDATE users
SET passwordHash = (SELECT PasswordHash FROM users WHERE userid = $(orgId)),
passwordsalt = (SELECT passwordsalt FROM users WHERE userid = $(orgId)),
isActive = 1,
emailConfirmed = 1
WHERE username = '$(username)'
如何解决这个问题?
参考
1。启用延迟扩展
setlocal enabledelayedexpansion
2。将传递的引用从 %inputUserName% 更改为 !inputUserName!
有效!!
我编写了一个批处理脚本来从 sql 数据库中获取特定值或更新值。 它仅适用于 一些 次,如下所列。
案例 1:
第一次无效(未更新)但 returns - 1 行受影响
第二次成功(在数据库中更新良好)returns - 1 行受影响
情况2:
有时会抛出错误(Sqlcmd:'username=':参数无效。输入“-?”寻求帮助。)
发现我的cmd错误here。
请在下面找到我的脚本和 sql 代码。
main.bat
@ECHO OFF
:: DB Properties
SET dbPath=XXXX
SET dbUsername=YYYY
SET dbPassword=ZZZZ
SET dataBaseName=KKKK
:: SQL Properties
SET originId=50
ECHO DB NAME - %dataBaseName%
ECHO Select an option
ECHO 1.Token
ECHO 2.Activate
SET /P option=Enter an option:
IF "%option%"=="1" ( SET /P inputUserName=Enter username:
sqlcmd -S %dbPath% -U %dbUsername% -P %dbPassword% -i token.sql -v dbName=%dataBaseName% username=%inputUserName% )
IF "%option%"=="2" ( SET /P inputUserName=Enter username:
sqlcmd -S %dbPath% -U %dbUsername% -P %dbPassword% -i update.sql -v dbName=%dataBaseName% username=%inputUserName% orgId=%originId% )
ECHO Executed Successfully ..!!
::PAUSE
token.sql
use $(dbName);
select VerificationCode from users where username = '$(username)'
update.sql
use $(dbName);
UPDATE users
SET passwordHash = (SELECT PasswordHash FROM users WHERE userid = $(orgId)),
passwordsalt = (SELECT passwordsalt FROM users WHERE userid = $(orgId)),
isActive = 1,
emailConfirmed = 1
WHERE username = '$(username)'
如何解决这个问题?
参考
1。启用延迟扩展
setlocal enabledelayedexpansion
2。将传递的引用从 %inputUserName% 更改为 !inputUserName!
有效!!