#define SQLCA_STORAGE_CLASS extern
EXEC SQL INCLUDE sqlca;
int ExecuteSql(string sqlstr)
{
EXEC SQL BEGIN DECLARE SECTION;
varchar ssql[40960];
EXEC SQL END DECLARE SECTION;
for(unsigned int i=0;i<sqlstr.size();i++)
ssql.arr[i]=sqlstr[i];
ssql.len=i;
MessageBox(0,sqlstr.c_str(),"开始运行",0);
EXEC SQL EXECUTE IMMEDIATE :ssql;
MessageBox(0,sqlstr.c_str(),"SQL语句已经运行",0); //*************** 1 **************//
if (sqlca.sqlcode<0)
{
MessageBox(0,"运行出错!","error!",0);
throw CFormulaError(sqlca.sqlerrm.sqlerrmc,500);
}
return 0;
}上面这段PRO*C程序,在oracle 9i中使用,大部份的SQL语句都可非常运行,但下面的SQL语句,无反应,好似死机一样,程序中//**************** 1 ****************//这一行在运行该语句时,从未出现过.(同是这一SQL语句,在sqlplus中又完全正常),如何检查呢?
该SQL语句为:
  Insert all
  into   settle.cfaredate(fare_date,fare_start_name,fare_end_name,fare_name,fare_value,fare_csettle_column,fare_order) values('200512','深圳','长沙  ', '去程站内人数',men,NULL,1)
  into   settle.cfaredate(fare_date,fare_start_name,fare_end_name,fare_name,fare_value,fare_csettle_column,fare_order) values('200512','深圳','长沙  ', '去程站内票款',money,NULL,2)
  into   settle.cfaredate(fare_date,fare_start_name,fare_end_name,fare_name,fare_value,fare_csettle_column,fare_order) values('200512','深圳','长沙  ', '去程多运人数',ocmen,NULL,3)
  into   settle.cfaredate(fare_date,fare_start_name,fare_end_name,fare_name,fare_value,fare_csettle_column,fare_order) values('200512','深圳','长沙  ', '去程多运金额',ocmoney,NULL,4)
  into   settle.cfaredate(fare_date,fare_start_name,fare_end_name,fare_name,fare_value,fare_csettle_column,fare_order) values('200512','深圳','长沙  ', '去程溢价人数',opmen,NULL,5)
  into   settle.cfaredate(fare_date,fare_start_name,fare_end_name,fare_name,fare_value,fare_csettle_column,fare_order) values('200512','深圳','长沙  ', '去程溢价金额',opmoney,NULL,6)
  select sum(deta_men) men ,sum(deta_sale_money) money,sum(deta_over_carray_men) ocmen,sum(deta_over_carray_money) ocmoney,sum(deta_over_price_men) opmen,sum(deta_over_price_money) opmoney  from settle.cdetail where deta_date like '200512%' and deta_start_name='深圳' and deta_end_name='长沙  ' and deta_flag=2
请教!谢!