Я вставляю записи, используя 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