在存储过程中,我使用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