免费注册 查看新帖 |

Chinaunix

  平台 论坛 博客 文库
最近访问板块 发新帖
查看: 3313 | 回复: 4
打印 上一主题 下一主题

db2移植问题 非常只郁闷 大家帮帮忙呀 [复制链接]

论坛徽章:
0
跳转到指定楼层
1 [收藏(0)] [报告]
发表于 2011-04-29 11:59 |只看该作者 |倒序浏览
本帖最后由 lijuwen 于 2011-04-29 12:51 编辑

最近做db2移植。发现好多奇怪的现象。 但有一个就非常奇怪不知道怎么办了 高手指点一下。
谢谢了

db2 的表 有个字段是decimal(1)我用sqlint64读取。读取后正常。但是copy到全局变量里就有问题。
头文件的定义结构定义
#define stru_pcsp_config_date_capture   { \
   char current_transaction_date                        [ CURRENT_TRANSACTION_DATE_LEN + 1 ]; \
   char expected_settle_date                            [ EXPECTED_SETTLE_DATE_LEN + 1 ]; \
   char settled_date                                    [ SETTLED_DATE_LEN + 1 ]; \
   sqlint64  current_table_no; \
   sqlint64     cut_date_mode; \
}

程序如下

int get_config_date_capture_info( PCSP_CONFIG_DATE_CAPTURE *p, int cut_flag )
{
   EXEC SQL BEGIN DECLARE SECTION;
      struct stru_pcsp_config_date_capture pp;
      char      new_date[ 8 + 1 ], sys_date[ 8 + 1 ];
      sqlint64  li_diff_time;           /* 自动日切模式下, 两个日期差的天数不能大于1 */
   EXEC SQL END   DECLARE SECTION;

   long tmp_curr_date;
   long tmp_new_date;

   /* initial variable */
   memset(( struct stru_pcsp_config_date_capture * )&pp, 0x00, sizeof( pp ));
   memset(( char * )new_date, 0x00, sizeof( new_date ));
   memset(( char * )sys_date, 0x00, sizeof( sys_date ));

   memset(( struct stru_pcsp_config_date_capture * )&abcdefg, 0x00, sizeof( abcdefg ));

   li_diff_time = 0;

   /* connect database */
   if( switch_connect_db() != SUCCESSED_RETURN_CODE )
   {
      message_report( __FILE__, __LINE__,
        "连接数据库错误 [%d][%s]\n",
                sqlca.sqlcode, sqlca.sqlerrmc );

      goto err_exit;
   }

   /* set any SQLERROR process handle */
   EXEC SQL WHENEVER SQLERROR GOTO SQL_ERR;
   EXEC SQL WHENEVER NOT FOUND GOTO SQLNOTFOUND_ERR;

   /* select data from pcsp_config_date_capture */
   EXEC SQL SELECT * INTO :pp FROM PCSP_CONFIG_DATE_CAPTURE;

   fprintf( stdout, "current_transaction_date =%s\n", pp.current_transaction_date );
         fprintf( stdout, "expected_settle_date=%s\n", pp.expected_settle_date);  
         fprintf( stdout, "current_table_no=%d\n", pp.current_table_no );  /* =1 没问题*/
         fprintf( stdout, "cut_date_mode=%d\n", pp.cut_date_mode);

memcpy(( struct stru_pcsp_config_date_capture *)p, ( struct stru_pcsp_config_date_capture * )&pp,   sizeof( struct stru_pcsp_config_date_capture ));
   fprintf( stdout, "current_transaction_date =%s\n", p->current_transaction_date );
         fprintf( stdout, "expected_settle_date=%s\n", p->expected_settle_date);
         fprintf( stdout, "current_table_no=%d\n", p->current_table_no ); /* copy后就变成0了 */
         fprintf( stdout, "cut_date_mode=%d\n", p->cut_date_mode);

   return( SUCCESSED_RETURN_CODE );

还有 把sqlint64  current_table_no; 变成 sqlint32 就没事。 但我用的是64位aix编译 。 请问为啥们会变成0那 谢谢

论坛徽章:
0
2 [报告]
发表于 2011-04-29 15:32 |只看该作者
自己顶,发现个问题。我链接 db2 -L/home/db2inst2/sqllib/lib64 -ldb2 后,发现可以了。 后来又编译了一次。就又不行了。难不成我数据库装的有问题。郁闷

论坛徽章:
0
3 [报告]
发表于 2011-05-04 17:04 |只看该作者
库文件问题吧

论坛徽章:
0
4 [报告]
发表于 2011-05-13 17:14 |只看该作者
问题解决了。受不了了。找了好长时间

论坛徽章:
1
2015年辞旧岁徽章
日期:2015-03-03 16:54:15
5 [报告]
发表于 2011-05-18 15:49 |只看该作者
问题解决了。受不了了。找了好长时间
lijuwen 发表于 2011-05-13 17:14



    咋解决的?
您需要登录后才可以回帖 登录 | 注册

本版积分规则 发表回复

  

北京盛拓优讯信息技术有限公司. 版权所有 京ICP备16024965号-6 北京市公安局海淀分局网监中心备案编号:11010802020122 niuxiaotong@pcpop.com 17352615567
未成年举报专区
中国互联网协会会员  联系我们:huangweiwei@itpub.net
感谢所有关心和支持过ChinaUnix的朋友们 转载本站内容请注明原作者名及出处

清除 Cookies - ChinaUnix - Archiver - WAP - TOP