SQL 通过批处理 - 效果不佳

SQL via Batch - Not working well

我编写了一个批处理脚本来从 sql 数据库中获取特定值或更新值。 它仅适用于 一些 次,如下所列。

案例 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!

有效!!