首页 诗词 字典 板报 句子 名言 友答 励志 学校 网站地图
当前位置: 首页 > 教程频道 > 开发语言 > VC/MFC >

用ADO连数据库操作存储过程有关问题

2012-01-21 
用ADO连数据库操作存储过程问题在SQLSEVER下有这样一个存储过程。CREATEPROCEDURE[dbo].[game_test]@result

用ADO连数据库操作存储过程问题
在SQL   SEVER   下有这样一个存储过程。    
  CREATE   PROCEDURE   [dbo].[game_test]
            @result   int   output,
            @idno   int     =   0
    AS
    select     @result=   sum(uid)
      from   gang28
      where   uid=@idno
      return   @result
      GO
代码如下:
      int   m_nNewNetID;
    _ParameterPtr   p2   =   pCmd-> CreateParameter(_bstr_t( "result "),               adInteger,adParamOutput   ,sizeof(int),m_nNewNetID);
    pCmd-> Parameters-> Append(p2);
_ParameterPtr   p1   =   pCmd-> CreateParameter(_bstr_t( "idno "),   adInteger,adParamInput   ,sizeof(int),7144);
    pCmd-> Parameters-> Append(p1);

      pCmd-> ActiveConnection=pConn;
    pCmd-> CommandText=_bstr_t( "game_test ");
        if(pCmd!=NULL){
    pCmd-> Execute(NULL,NULL,adCmdStoredProc);      
      执行下一句取输出数据就出问题了,应该怎样写呢
  m_nNewNetID=(int)pCmd-> Parameters-> GetItem( "result ")-> GetValue();//通过参数返回值              
      }
请高手指点,小弟不甚感激!

[解决办法]
_variant_t _vNewNetID=pCmd-> Parameters-> GetItem( "result ")-> GetValue()
//要判断传出参数是否VT_NULL,这是很有可能的
long _nNewNetID=0;

if (_vNewNetID.vt==VT_I4)
{
_nNewNetID=_vNewNetID.lVal;
}

long m_nNewNetID;
_ParameterPtr p2 = pCmd-> CreateParameter(_bstr_t( "@result "), adInteger,adParamOutput ,sizeof(long),m_nNewNetID);

_ParameterPtr p1 = pCmd-> CreateParameter(_bstr_t( "@idno "), adInteger,adParamInput ,sizeof(long),(long)7144);

//要改成long,在操操作参数的时候,int都要转化成long
//引用参数名称最好加上@

热点排行