lijuwen 发表于 2011-04-29 11:59

db2移植问题 非常只郁闷 大家帮帮忙呀

本帖最后由 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 ]; \
   sqlint64current_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 ];
      sqlint64li_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 );

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

lijuwen 发表于 2011-04-29 15:32

自己顶,发现个问题。我链接 db2 -L/home/db2inst2/sqllib/lib64 -ldb2 后,发现可以了。 后来又编译了一次。就又不行了。难不成我数据库装的有问题。郁闷

心飘 发表于 2011-05-04 17:04

库文件问题吧

lijuwen 发表于 2011-05-13 17:14

问题解决了。受不了了。找了好长时间

snow888 发表于 2011-05-18 15:49

问题解决了。受不了了。找了好长时间
lijuwen 发表于 2011-05-13 17:14 http://bbs.chinaunix.net/images/common/back.gif


    咋解决的?
页: [1]
查看完整版本: db2移植问题 非常只郁闷 大家帮帮忙呀