映射类
class test{
public:
char  SourceId[100];
char SourceName[100];
BEGIN_COLUMN_MAP(test)
COLUMN_ENTRY(1,SourceId)
COLUMN_ENTRY(2,SourceName)
END_COLUMN_MAP()

BEGIN_PARAM_MAP(test)
SET_PARAM_TYPE(DBPARAMIO_INPUT)
COLUMN_ENTRY(1,SourceId)
SET_PARAM_TYPE(DBPARAMIO_OUTPUT)
COLUMN_ENTRY(2,SourceName)
END_PARAM_MAP()
};
主执行代码如下:
CDataSource db;
CSession sen;
HRESULT hr;
hr = db.OpenFromInitializationString 
 (L"Provider=MSDAORA.1;Password=health;User ID=Health;Data Source=RegDB");
sen.Open(db);
CCommand<CAccessor<test> > cmd;
hr=cmd.Create(sen,"{call TEST2(?,?) }");
if(FAILED(hr))
{
   AfxMessageBox("can not open cmd");
   return FALSE;
}
strcpy(cmd.SourceId,"1014504");
hr=cmd.Open(NULL,NULL,true);(代码在这句出错)
if(FAILED(hr))
{
  msgResult="";
  return FALSE;
}else
{
...
}错误说明:
在执行hr=cmd.Open(NULL,NULL,true);时出错,是断言错误,
大致错误提示如下:
   debug assertion failed
   program:e:\code\reg.exe
   File:d:\microsoft visual studio.net\cv7\atlmfc\include\atldbcli.h
   line:5543
   Expression:GetInterface()!=0
   ...
我的CDataSource,CSession都打开正确,cmd内的存储过程也在sqlplus执行没问题
为什么呀???