C++ ADO 调用存储过程获取OutPut参数(SQL Server)

void ado::ExecuteProc( int BillID, int SNID, int Key, CString Way, int IsPass, int DayPassQty,CString ProjectNo )
{

try
{
_CommandPtr cmd;
cmd.CreateInstance("ADODB.Command");


//@BillID
_ParameterPtr pParamBillID;		
pParamBillID.CreateInstance("ADODB.Parameter");
pParamBillID->Name="BillID";	//存储过程的参数1
pParamBillID->Type=adInteger;	//整型
pParamBillID->Size=20;			//
pParamBillID->Direction=adParamInput;//表明是输入参数
CString m_BillID;
m_BillID.Format(_T("%d"),BillID); 
pParamBillID->Value=_variant_t(m_BillID);//int->CString->_variant_t后赋值
cmd->Parameters->Append(pParamBillID);


//@SNID
_ParameterPtr pParamSNID;		
pParamSNID.CreateInstance("ADODB.Parameter");
pParamSNID->Name="SNID";	//存储过程的参数3
pParamSNID->Type=adInteger;	//整型
pParamSNID->Size=20;			//
pParamSNID->Direction=adParamInput;//表明是输入参数
CString m_SNID;
m_SNID.Format(_T("%d"),SNID);
pParamSNID->Value=_variant_t(m_SNID);//int->CString->_variant_t后赋值
cmd->Parameters->Append(pParamSNID);


//@Key
_ParameterPtr pParamKey;		
pParamKey.CreateInstance("ADODB.Parameter");
pParamKey->Name="Key";	//存储过程的参数3
pParamKey->Type=adInteger;	//整型
pParamKey->Size=20;			//
pParamKey->Direction=adParamInput;//表明是输入参数
CString m_key;
m_key.Format(_T("%d"),0);

pParamKey->Value=_variant_t(m_key);//int->CString->_variant_t后赋值
cmd->Parameters->Append(pParamKey);

 //@Way
_ParameterPtr pParamWay;		
pParamWay.CreateInstance("ADODB.Parameter");
pParamWay->Name="Way";	//存储过程的参数2
pParamWay->Type=adVarChar;	//整型
pParamWay->Size=50;			//
pParamWay->Direction=adParamInput;//表明是输入参数 
pParamWay->Value=_variant_t(Way);//int->CString->_variant_t后赋值 
cmd->Parameters->Append(pParamWay);


 //@ProjectNo
_ParameterPtr pProjectNo;		
pProjectNo.CreateInstance("ADODB.Parameter");
pProjectNo->Name="Way";	//存储过程的参数2
pProjectNo->Type=adVarChar;	//整型
pProjectNo->Size=50;			//
pProjectNo->Direction=adParamInput;//表明是输入参数 
pProjectNo->Value=_variant_t(ProjectNo);//int->CString->_variant_t后赋值 
cmd->Parameters->Append(pProjectNo);



//@IsPass
_ParameterPtr pParamIsPass;		
pParamIsPass.CreateInstance("ADODB.Parameter");
pParamIsPass->Name="IsPass";	//存储过程的参数3
pParamIsPass->Type=adInteger;	//整型
pParamIsPass->Size=20;			//
pParamIsPass->Direction=adParamInput;//表明是输入参数

CString IsPass; 
IsPass.Format(_T("%d"),1);
pParamIsPass->Value=_variant_t(IsPass);//int->CString->_variant_t后赋值
cmd->Parameters->Append(pParamIsPass);


//@DayPassQty
_ParameterPtr pParamQty;		
pParamQty.CreateInstance("ADODB.Parameter");
pParamQty->Name="Way";	//存储过程的参数2
pParamQty->Type=adVarChar;	//整型
pParamQty->Size=50;			//
pParamQty->Direction=adParamInput;//表明是输入参数 
CString Qty;
Qty.Format("%d",DayPassQty); 
pParamQty->Value=_variant_t(Qty);//int->CString->_variant_t后赋值
cmd->Parameters->Append(pParamQty);

_ParameterPtr pParamRemark;
pParamRemark.CreateInstance(“ADODB.Parameter”);
pParamRemark->Name=“Reamrk”; //工序Id
pParamRemark->Type=adVarChar; //字符类型
pParamRemark->Size=50; //
pParamRemark->Direction=adParamOutput;//表明是输入参数
cmd->Parameters->Append(pParamRemark);

_ParameterPtr pResultCode;
pResultCode.CreateInstance(“ADODB.Parameter”);
pResultCode->Name=“ResultCode”; //存储过程的参数3
pResultCode->Type=adInteger; //整型
pResultCode->Size=4; //
pResultCode->Direction=adParamInput;//表明是输入参数
CString m_keyValue;
m_keyValue.Format(_T("%d"),ResultCode);
pResultCode->Value=_variant_t(m_keyValue); //int->CString->_variant_t后赋值
cmd->Parameters->Append(pResultCode);

cmd->ActiveConnection = pConnection;  //  连接对象
cmd->CommandText="P_Board2";	//存储过程的名字
cmd->CommandType=adCmdStoredProc;//表示为存储过程adCmdStoredProc
//执行,获得结果
cmd->Execute(NULL, NULL, adCmdStoredProc);

// 获取输出参数
CString strRet = (const char*)(_bstr_t)cmd->Parameters->GetItem("Reamrk")->GetValue();
    int nRet = cmd->Parameters->GetItem("ResultCode")->GetValue();
}
catch(_com_error e)
{
   AfxMessageBox(e.Description());

}

}

评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值