Windows/MFC

Stored procedure (ado type)

aucd29 2013. 10. 2. 18:07
// 팁이라고 할것까지 있을런지...

// C++에서 ADO를 이용한 Stored Procedure 사용법.
// 객체 해제는 기술하지 않음.


void TestStoredProc()
{
        try{
                // 객체 생성
                _RecordsetPtr recordset;
                _CommandPtr cmd;
                _ConnectionPtr connection;
                connection.CreateInstance(__uuidof(Connection));
                recordset.CreateInstance(__uuidof(Recordset));
                cmd.CreateInstance(__uuidof(Command));

                // 커넥션 객체 오픈
                connection->ConnectionTimeOut=10;
                connection->open("provider=...",NULL,NULL,adOptionUnspecified);

                // 커맨트 객체 초기화
                cmd->CommandType=adCmdStoredProc;        

                cmd->CommandText=_bstr_t("spBeginJob");

                cmd->ActiveConnection=connection;

                // 저장프로시져의 리턴 값 및 파라메터값을 지정함.
                _ParameterPtr paramRet=cmd->CreateParameter("return",adInteger,adParamReturnValue,sizeof(int)) ;
                _ParameterPtr paramInput=cmd->CreateParameter("@inputData",adChar,adParamInput,4) ;
                
                // adParamInput에 해당하는 파라메터에 입력 값 대입
                ptr1->Value=_variant_t("Test");        
                
                // 파라미터값을 command객체에 추가( returnValue를 처음에 append해야 함.)
                cmd->Parameters->Append(paramRet);
                cmd->Parameters->Append(paramInput);

                // 명령실행
                recordset=cmd->Execute(NULL,NULL,adCmdStoredProc);

                // Return값 읽어 옴. 방법#1
                _variant_t retData(paramRet->Value);
                // Return값 읽어 옴. 방법#2
                cmd->Parameters->GetItem("ret")->Value;
        }catch(_com_error &e){
                //에러처리
        }
}