我寫了一個批處理腳本來獲取特定值或從sql數據庫更新值。 它只適用於一些次,下面列出。SQL通過批處理 - 不能很好地工作
案例1:
第一次不工作(未更新),但回報 - 1行受到影響
它的工作原理(在數據庫更新以及)返回第二次 - 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)'
如何解決這個問題?
「不是第一次工作,但第二次」通常是[延遲擴展問題]的提示(http://stackoverflow.com/a/30284028/2152082)(有兩個「if」塊問題發生的地方) – Stephan
謝謝@Stephan。它的工作原理和得到了一個很好的解釋:-) –
如果你解決了你的問題,不要改變你的問題。用解決方案添加答案並接受答案。 –