我有一個光標,基本上是在一個表中插入新的用戶名。我想檢查現有的和追加「_1」或「_2」等雖然存在SQL陷入循環?
但是它看起來好像我的代碼被陷在一個循環,並永遠不會完成。
這裏是有問題的代碼,我相信:
SET @NUM = 1
--If Username already exists append number
While Exists (select Null from CUSTOMTABLE Where USER_PRINCIPAL_NAME = @UPN)
BEGIN
SET @UPN = @UPN+'_'+RTRIM(CONVERT(varchar(10), @NUM))
SET @NUM = @NUM+1
END
我接下來要值「@upn」插入表中。我是否在正確存在的情況下這樣做?
那看起來像一個單一的聲明。你爲什麼使用'While'?只要使用'如果Exists' –
我希望它循環和不斷增加,直到UPN不存在 – MogulBomb
什麼是@UPN的開始循環之前的價值?我的猜測是它是NULL。將NULL與另一個字符串聯繫在一起會返回NULL。所以這可能會陷入一個無限循環,取決於空的ansi設置。 – UnhandledExcepSean