在存儲過程中,我使用INSERT動態創建查詢。這是爲了強制默認值(如果它是NULL,則使用@name)。從動態INSERT獲取IDENTITY
SET @sql = 'INSERT INTO table (username, password'
+ CASE @name IS NULL THEN '' ELSE ',name' END
+ ') VALUES (''root'',''gelehallon''' +
+ CASE @name IS NULL THEN '' ELSE ',''@name''' END
+ ')'
EXEC sp_executesql @sql
SET @id = SCOPE_IDENTITY()
@id無論如何都是0。
即使另一個線程同時運行相同的存儲過程,如何以安全方式檢索IDENTITY?
爲什麼你動態創建一個存儲過程的查詢? – 2011-04-19 08:09:42
這是一種強制未傳遞到存儲過程的字段上的默認值的方法。假設我可能需要@name,但是如果不通過,它應該默認爲表格的默認值。因此,我動態構建它,如果沒有傳遞,則刪除@name。 – ANisus 2011-04-19 08:12:44