映射类
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执行没问题
为什么呀???
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执行没问题
为什么呀???
hr=command.Create(session,"{call for_result.pro_test(?,?)}");
hr=command.Prepare (1);//输入参数?参考:
http://expert.csdn.net/Expert/topic/1194/1194790.xml?temp=.5669367