数据库为MSSQL2000,存储过程如下:CREATE    PROCEDURE sp_userlogin
@xino_UID varchar(12)
ASBegin
 Select * from test where [s_name]=@xino_UID
End
GO//上面很简单的存储过程,在test里面查找s_name相应记录,一个参数表结构及数据
s_name(char 12)   s_age(int)    s_addr(varchar 20)    
  zhang               24          beijing
_CommandPtr     pCmdBySP  = NULL;
_ParameterPtr   pParamBySp = NULL;
_RecordsetPtr   m_pRecordset;pCmdBySP.CreateInstance(__uuidof(Command));
pCmdBySP->ActiveConnection = pConnection; //pConnection是有效的,已处理过的
pCmdBySP->CommandText = "sp_userlogin";
pCmdBySP->CommandType = adCmdStoredProc;
pCmdBySP->CommandTimeout = 15;
VARIANT var ;
var.vt = VT_BSTR;
var.bstrVal  = _bstr_t("zhang"); //带入的实参pParamBySp.CreateInstance(__uuidof(Parameter))
pParamBySp->Type = adVarChar;
pParamBySp->Size = 12;
pParamBySp->Direction = adParamInput;
pParamBySp->Value = var;
pCmdBySP->Parameters->Append(pParamBySp);
m_pRecordset =  pCmdBySP->Execute(NULL,NULL,adCmdStoredProc); 
int recordnum; 
recordnum = m_pRecordset->RecordCount;//怎么会是-1?正确的应该是1,里面有一条记录另外,如果存储过程是执行insert、Update的操作,也就是不是返回记录集,那么应该就不是m_pRecordset吧,那这个返回值应该怎么处理?直接执行就可以了是吗?

解决方案 »

  1.   

    哪位兄弟帮我看看吧,存储过程在SQL查询分析器中是可以正常运行的
      

  2.   

    好像用 m_pRecordset->RecordCount;常常会出问题的
    connection.Execute CommandText, RecordsAffected, Options 对于按行返回的命令字符串:Set recordset = connection.Execute (CommandText, RecordsAffected, Options)返回值返回 Recordset 对象引用。参数CommandText    字符串,包含要执行的 SQL 语句、表名、存储过程或特定提供者的文本。RecordsAffected    可选,长整型变量,提供者向其返回操作所影响的记录数目。用RecordsAffected    这个参数