내 질문에 대한 답변을 찾았습니다. 모두 아래 구문이 작동해야한다고 나와 있습니다. 그것은 나를 위해 작동하지 않습니다. 내 출력 변수는 항상 NULL
이므로 도움을 주시면 감사하겠습니다.sp_executesql Cross Server Insert return Scope_Identity()
DECLARE @SqlCommand NVARCHAR(1000),
@ParamDefinition nvarchar(500),
@Id INT
SET @SqlCommand = N'INSERT INTO [server].db.dbo.table(Title) VALUES(''Insert Into table From othertable Test'') SELECT @Id = SCOPE_IDENTITY()'
SET @ParamDefinition = N'@Id integer OUTPUT'
EXECUTE sp_executesql @SqlCommand, @ParamDefinition, @Id OUTPUT
Select @Id
내 Select @Id
반환 NULL
모든 시간은 있지만, 행이 테이블에 삽입됩니다.
내 코드가 작동하고 ID를 반환해야하는 상태에서 스택 오버플로에 대해 4 ~ 5 개의 결과가 발견되었습니다. 그러나 그렇지 않습니다.
제 3 자 서버에서 작업하고 있는데,보고 있지 않다고 오류가 표시 될 가능성이 있습니다.
도움 주셔서 감사합니다.
참고 : 아래 문은 Scope_Identity() 값을 반환합니다. 문제는 변수에서 그 값을 잡는 방법을 모른다는 것입니다. @Id NULL 항상 -
EXEC [Server].[db].[dbo].sp_executesql N'
INSERT INTO [server].db.dbo.table(Title) VALUES(''Test Title Insert'')
SELECT SCOPE_IDENTITY()'
나는
DECLARE @Id INT
EXEC @Id = [Server].[db].[dbo].sp_executesql N'
INSERT INTO [server].db.dbo.table(Title) VALUES(''Test Title Insert'')
SELECT SCOPE_IDENTITY()'
선택 @Id는 행운과 함께 아래의 구문을 시도했습니다.
매개 변수 정의를 int로 변경했으며 여전히 변수가 NULL을 반환했습니다. – Alwelder
@Alwelder 연결된 질문 에서처럼 OUTPUT을 사용해보세요. –