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

急c++ builder 用TADOQuery组件取存储过程返回值为什么出现:'field'RetValue'not found'错误

2012-04-19 
急!!!c++ builder 用TADOQuery组件取存储过程返回值为什么出现:fieldRetValuenot found异常可以将语句

急!!!c++ builder 用TADOQuery组件取存储过程返回值为什么出现:'field'RetValue'not found'异常
可以将语句打印出来拷贝至查询分析器,执行没有任何异常,但是在代码中却出现 'field 'RetValue 'not   found '异常。代码如下:
        //测试代码段   begin
        TADOQuery   *   pQuery   =   new   TADOQuery(NULL);
        pQuery-> Connection   =   m_pADOConnection;
        pQuery-> Close();
        pQuery-> SQL-> Clear();

        String   SQLText   =   (String) "declare   @RetValue   int   "
                +   "   execute   @RetValue   =   sp_Trade   "
                +   "   select   @RetValue   RetValue ";
        //执行
        iRet   =   RunCommSql(pQuery,SQLText.c_str());
        if   (iRet   !=   0)
        {
                TraceLog(LogLevel_2,1000, "Error:   AddPoint() ",SQLText.c_str());
        }
        else
        {
                iRet   =   pQuery-> FieldByName( "RetValue ")-> AsVariant;     //这里出现异常
        }
        pQuery-> Close();
        delete     pQuery;
        //测试代码段   end
   
谢谢!!!!!

[解决办法]
iRet = pQuery-> FieldByName( "RetValue ")-> AsVariant;

在读取值的时候,最好先查下这个内容是不是为null,再进行读取操作。

RunCommSql
不这个是什么函数呢,不好意思,没见过。
[解决办法]
execute @RetValue = sp_Trade,sp_trade 是返回什么值?若sp_trade是返回结果集或一个常量,则
select @RetValue RetValue,又一次返回了常量,而ADOQuery是不能接受多结果集的,所能第二句并不会被执行,则RetValue这个属性永完也不会被返回,你应该改变调用格式
[解决办法]
select sp_Trade RetValue

热点排行