【发布时间】:2018-05-15 05:55:09
【问题描述】:
我正在使用stored procedure 和sp_executesql 插入记录。一旦我使用sp_executesql 插入记录,我需要该会话中最后插入的identity 字段值。
ALTER proc [dbo].[spHoldTransaction]
@RegisterNo int,
@StoreID int,
@Department varchar(50),
@TransactionDateFrom date,
@TransactionDateTo date,
@Comment Varchar(50)
AS
BEGIN
DECLARE @RegisterID int;
DECLARE @DatabaseName varchar(15);
DECLARE @Batch int;
SELECT @RegisterID=ID FROM Register WHERE Register.Number = @RegisterNo;
SELECT @Batch = BatchNumber From Batch WHERE Status = 0 and RegisterID = @RegisterID
SET @DatabaseName = 'xxx'
SELECT @Department=''''+REPLACE(@Department,',',''',''')+''''
DECLARE @Qry nvarchar(MAX);
DECLARE @ParamDefinition nvarchar(MAX);
SET @ParamDefinition = N'@comment nvarchar(50),@StoreID int,@Batch int'
SET @Qry = '
INSERT INTO '+@DatabaseName+'.dbo.TransactionHold
(
[StoreID]
,[HoldComment]
,[BatchNumber]
,[ShippingNotes]
)
SELECT
@StoreID AS [StoreID]
,@Comment AS [HoldComment]
,@Batch AS [BatchNumber]
,'''' AS [ShippingNotes];
'
EXECUTE sp_executesql @Qry, @ParamDefinition, @Comment, @StoreID, @Batch
SELECT SCOPE_IDENTITY()
END
当我执行上面的存储过程时,它返回空。但是TransactionHold 有标识列Id
【问题讨论】:
-
你试过@@identity
-
@AswaniMadhavan 是的,我尝试使用
Scope_Identity()、Identity()、@@Identity和Ident_Current()。一切都返回 null -
对我来说@@identity 工作..
-
@AswaniMadhavan 你能告诉我你的问题吗,让我看看。我现在试过了。它仍然返回 null
-
该代码是特定于产品的。您使用的是哪个 dbms?
标签: sql-server tsql stored-procedures identity