я создал динамическую хранимую процедуру обновление, вставка и удаление из конкретной таблицы:sp_executesql возвращает идентификатор при вставке в хранимой процедуре
CREATE PROCEDURE dbo.Pj_Change
@Action Varchar(20),
@TableName Varchar(20),
@InsertQuery Nvarchar(max),
@UpdateQuery Nvarchar(max),
@Where Varchar(50)
AS
BEGIN
DECLARE @SQLString nvarchar(max);
SET NOCOUNT ON
IF(@Action = 'UPDATE')
SET @SQLString = 'UPDATE '[email protected]+' SET '[email protected]+' WHERE ('[email protected]+')';
ELSE IF(@Action = 'INSERT')
SET @SQLString = 'INSERT INTO '[email protected]+' '[email protected] + ';
ELSE IF(@Action = 'DELETE')
SET @SQLString = 'DELETE FROM '[email protected]+' WHERE ('[email protected]+')';
EXECUTE sys.sp_executesql @SQLString
END
Проблема заключается в том, чем я пытаюсь добавить к этому коду SELECT SCOPE_IDENTITY()
, чтобы получить ID новой строки на вставке, я получаю -1 на выходе. Изменение, что я делаю это:
@SQLString = 'INSERT INTO '[email protected]+' '[email protected] + '; SELECT SCOPE_IDENTITY()';
Что мне нужно изменить для этой работы?