다음을 통해 공유


방법: 저장 프로시저 실행(RPC 구문 사용) 및 반환 코드와 출력 매개 변수 처리(OLE DB)

SQL Server 저장 프로시저는 정수 반환 코드 및 출력 매개 변수를 사용할 수 있습니다. 반환 코드와 출력 매개 변수는 서버의 마지막 패킷으로 전달되지 않으므로 행 집합이 완전히 릴리스될 때까지 응용 프로그램에서 사용할 수 없습니다. 명령이 여러 결과를 반환하는 경우 IMultipleResults::GetResult에서 DB_S_NORESULT를 반환할 때 또는 IMultipleResults 인터페이스가 완전히 릴리스될 때 중 먼저 발생하는 시기에 출력 매개 변수 데이터를 사용할 수 있습니다.

반환 코드 및 출력 매개 변수를 처리하려면

  1. RPC 이스케이프 시퀀스를 사용하는 SQL 문을 생성합니다.

  2. ICommandWithParameters::SetParameterInfo 메서드를 호출하여 공급자에게 매개 변수를 설명합니다. PARAMBINDINFO 구조의 배열에 매개 변수 정보를 채웁니다.

  3. DBBINDING 구조의 배열을 사용하여 각 매개 변수 작성자에 대해 하나씩, 바인딩 집합을 만듭니다.

  4. IAccessor::CreateAccessor 메서드를 사용하여 정의된 매개 변수에 대한 접근자를 만듭니다. CreateAccessor는 바인딩 집합에서 접근자를 만듭니다.

  5. DBPARAMS 구조를 채웁니다.

  6. Execute 명령을 호출(이 경우 저장 프로시저 호출)합니다.

  7. 행 집합을 처리하고 IRowset::Release 메서드를 사용하여 해제합니다.

  8. 저장 프로시저에서 받은 반환 코드와 출력 매개 변수 값을 처리합니다.

이 예에서는 행 집합, 반환 코드 및 출력 매개 변수 처리를 보여 줍니다. 결과 집합은 처리되지 않습니다. 응용 프로그램에서 사용하는 예제 저장 프로시저는 다음과 같습니다.

USE AdventureWorks2008R2;
GO
DROP PROCEDURE myProc;
GO

CREATE PROCEDURE myProc 
    @inparam int,
    @outparam int OUTPUT

AS
SELECT Color, ListPrice 
FROM Production.Product WHERE Size > @inparam;
SELECT @outparam = 100

IF  (@outparam > 0)
    RETURN 999
ELSE
    RETURN 888;
GO

전체 예제 코드는 InitializeAndEstablishConnection_B.cpp 파일에 있습니다. MSDN의 SQL Server 다운로드(SQL Server Downloads) 페이지에서 예제가 포함된 보관 파일을 다운로드할 수 있습니다.

이 예제는 Microsoft Visual C++ 2005를 사용하여 개발되었습니다.

보안 정보보안 정보

가능하면 Windows 인증을 사용하십시오. Windows 인증을 사용할 수 없으면 런타임에 사용자에게 자격 증명을 입력하라는 메시지를 표시합니다. 자격 증명은 파일에 저장하지 않는 것이 좋습니다. 자격 증명을 유지하려면 Win32 Crypto API를 사용하여 자격 증명을 암호화해야 합니다.