>백엔드 개발 >C++ >C#의 SQL Server 저장 프로시저에서 SCOPE_IDENTITY()를 포함한 출력 매개 변수를 검색하려면 어떻게 해야 합니까?

C#의 SQL Server 저장 프로시저에서 SCOPE_IDENTITY()를 포함한 출력 매개 변수를 검색하려면 어떻게 해야 합니까?

Patricia Arquette
Patricia Arquette원래의
2025-01-10 09:11:41576검색

How Can I Retrieve Output Parameters, Including SCOPE_IDENTITY(), from SQL Server Stored Procedures in C#?

C# 애플리케이션 내의 SQL Server 저장 프로시저에서 출력 매개변수에 액세스

도전

C#의 SQL Server 저장 프로시저에서 출력 매개 변수 값, 특히 SCOPE_IDENTITY()을 사용하여 기본 키를 성공적으로 검색하는 것은 까다로울 수 있습니다. 이 기사에서는 일반적인 어려움을 해결하고 실용적인 솔루션을 제공합니다.

저장 프로시저 예시

usp_InsertContract 저장 프로시저는 프로세스를 보여줍니다. Contracts 테이블에 레코드를 삽입하고 Id 출력 매개변수를 통해 새로 생성된 기본 키(@NewId 열)를 반환합니다. 업데이트된 절차에서는 정확한 기본 키 검색을 위해 SCOPE_IDENTITY()을 사용합니다.

<code class="language-sql">CREATE PROCEDURE usp_InsertContract
    @ContractNumber varchar(7),
    @NewId int OUTPUT
AS
BEGIN
    INSERT INTO [dbo].[Contracts] (ContractNumber)
    VALUES (@ContractNumber);

    SELECT @NewId = SCOPE_IDENTITY();
END;</code>

C# 구현

아래 C# 코드 조각은 출력 매개변수를 처리하는 방법을 보여줍니다.

<code class="language-csharp">SqlParameter pvNewId = new SqlParameter();
pvNewId.ParameterName = "@NewId";
pvNewId.DbType = DbType.Int32;
pvNewId.Direction = ParameterDirection.Output;

// ... (Add pvNewId to the SqlCommand object 'cmd') ...

// Execute the stored procedure
cmd.ExecuteNonQuery();

// Retrieve the output value
int contractID = Convert.ToInt32(cmd.Parameters["@NewId"].Value);</code>

일반적인 문제 및 해결 방법

문제가 발생하는 경우 다음을 확인하세요.

  • ID 열: Contracts 테이블에 ID 열(자동 증가 기본 키)이 포함되어 있는지 확인하세요.
  • SCOPE_IDENTITY() 사용법: 마지막으로 삽입된 ID 값을 검색하려면 저장 프로시저 내에서 SCOPE_IDENTITY()을 올바르게 사용해야 합니다.
  • 매개변수 구성: SqlParameter 개체(pvNewId)가 SqlCommand 개체(cmd)에 올바르게 추가되었는지, 해당 속성(ParameterName, DbType, Direction)이 정확하게 설정되어 있습니다.

이러한 점을 해결하면 C# 애플리케이션 내의 SQL Server 저장 프로시저에서 SCOPE_IDENTITY()에 의해 생성된 매개변수를 포함하여 출력 매개변수를 효과적으로 검색할 수 있습니다.

위 내용은 C#의 SQL Server 저장 프로시저에서 SCOPE_IDENTITY()를 포함한 출력 매개 변수를 검색하려면 어떻게 해야 합니까?의 상세 내용입니다. 자세한 내용은 PHP 중국어 웹사이트의 기타 관련 기사를 참조하세요!

성명:
본 글의 내용은 네티즌들의 자발적인 기여로 작성되었으며, 저작권은 원저작자에게 있습니다. 본 사이트는 이에 상응하는 법적 책임을 지지 않습니다. 표절이나 침해가 의심되는 콘텐츠를 발견한 경우 admin@php.cn으로 문의하세요.