Cursor identified in Fetch statement is not open

本文详细介绍了在WebLogic9.1和9.2版本中使用自带驱动连接DB2V9.5时遇到发布报错的解决方案,包括复制驱动到特定目录、修改环境变量、删除注释和配置数据源等步骤。

在weblogic9.19.2版本中使用其自带的数据库驱动连接db2V9.5时,流程解析发布报错:

 

经过测试,应该是weblogic自身提供的驱动版本问题。

解决方案如下:

1. 将db2安装目录下的驱动copy到目录:%WL_HOME%\server\lib\

2. 修改%WL_HOME%\common\bin下的commEnv.cmd文件,在WEBLOGIC_CLASSPATH变量中增加内容:%WL_HOME%\server\lib\db2jcc.jar;%WL_HOME%\server\lib\db2jcc_license_cu.jar;

3. 修改%WL_HOME%\server\lib\jdbcdrivers.xml文件,将

<!-- Need db2jcc.jar in CLASSPATH for DB2 -->后对<Driver Database="DB2" .....的驱动配置的注释去掉

4. 在WebLogic中配置使用以上driver的数据源

/******************************************************************************* * * システム名:受発注後処理システム * ファイル名:ins_KTNTORI.pc * 機能概要 :開店前取引先DB作成 * * % xxxx.exe * 引数1: 業務日付 * * Copyright(c) 2009 FamilyMart Co., Ltd. All Rights Reserved. * * 履歴: * 日付 更新者 内容 * 2009/05/20 SQL/MX, ANSI-C 移植 * 旧kaiten/fnsk_ins_KTNTORI.sp(PL/SQL) を移植 * 2010/06/17 kodama 発注地区追加対応 15,16地区追加 * 2010/10/15 nomura 配信区分7or7以外による配信先コード分岐を削除 * *******************************************************************************/ #include <stdio.h> #include <string.h> #include <stdlib.h> #include <time.h> #include "fvs.h" /* 受発注後処理共通ヘッダ */ /* #define DEBUG */ #ifdef DEBUG #define DEBUGF(args) (void)printf args #else #define DEBUGF(args) #endif /*DEBUG*/ #define PROGID "B_BJ_KTM02_030_Z1" #define BATCH_USERID "B_BJ_KTM02_030_Z1" /*#define USERID "user1"*/ EXEC SQL INCLUDE SQLCA; /* ホスト変数の宣言 */ EXEC SQL BEGIN DECLARE SECTION; /* SQLSTATE宣言 */ char SQLSTATE[6]; long SQLCODE; struct BJ_M_VIVID_TRI_st{ char hchiku[2+1]; char tri_cd[8+1]; VARCHAR tri_jname[16+1]; short tri_jname_i; char start_date[8+1]; char end_date[8+1]; char hsn_kbn[1+1]; short hsn_kbn_i; char kata_kbn[1+1]; short kata_kbn_i; }h_vtri; struct BJ_T_KTM_TRI_st{ char hchiku[2+1]; char tri_cd[8+1]; VARCHAR tri_jname[16+1]; char start_date[8+1]; char end_date[8+1]; char hsn_kbn[1+1]; char kata_kbn[1+1]; char ktm_proc_kbn[1+1]; char den24_dat_kbn[1+1]; char den24_prnt_cntr_kbn[1+1]; }h_ktmtri; struct BJ_T_KTM_TRI31_st{ char data_syu[2+1]; char hsnsk_cd[8+1]; char out_area_kbn[2+1]; }h_ktmtri31; struct BJ_T_KTM_TRI32_st{ char data_syu[2+1]; char ktm_hsn_kbn[1+1]; char hsnsk_cd[8+1]; char den24_prnt_kbn[1+1]; char ktm_proc_kbn[1+1]; char out_area_kbn[2+1]; }h_ktmtri32; struct BJ_T_KTM_TRI33_st{ char den24_prnt_kbn[1+1]; char den24_dat_kbn[1+1]; char den24_prnt_cntr_kbn[1+1]; char out_area_kbn[2+1]; char data_syu[2+1]; char ktm_hsn_kbn[1+1]; char hsnsk_cd[8+1]; }h_ktmtri33; struct BJ_M_JCA_KTM_TRI_st{ char set_kbn[1+1]; short set_kbn_i; }h_mktm; struct BJ_P_KTM_SORT_st{ char tri6_cd[6+1]; }h_psort; /* アプリで使用するホスト変数 */ char h_gyomu_date[16]; char h_tri_cd[8+1]; char h_sql1[1024]; char h_sql2[1024]; char h_userId[17+1]; /* ユーザID */ char h_progId[17+1]; /* プログラムID */ /**/ EXEC SQL END DECLARE SECTION; char SQLSTATE_OK[6] = "00000"; char SQLSTATE_NODATA[6] = "02000"; char SQLSTATE_XXX[6] = "24000"; static int insertDat(); /* * メイン関数 * */ int main(int argc, char* argv[]) { int i, arg_cnt, status; char *gyomu_date; // DB接続 int ret = fvs_z_sql_connect(NULL,NULL,NULL); if (ret != (int)NORMAL) { return 1; } /* 起動引数解析 */ gyomu_date = NULL; arg_cnt = 0; for (i=1; i<argc; ) { switch (argv[i][0]) { case '-': break; default: arg_cnt++; if (arg_cnt == 1) { /* 第1引数: 業務日付 */ gyomu_date = argv[i]; } break; } i++; } if (gyomu_date == NULL) { fprintf(stderr, "Usage: %s gyomu_date\n", argv[0]); return(1); } DEBUGF(("ins_KTNTORI start... gyomu_date = [%s]\n", gyomu_date)); strcpy(SQLSTATE, SQLSTATE_OK); strcpy(h_gyomu_date, gyomu_date); strcpy(h_userId, BATCH_USERID); strcpy(h_progId, PROGID); status = 0; /* トランザクション開始 */ status = insertDat(); if (status == 0) { EXEC SQL COMMIT WORK; } else { EXEC SQL ROLLBACK WORK; } DEBUGF(("ins_KTNTORI end. status=\n", status)); if (status != 0) return 1; return 0; } /* * 開店前取引先DB登録処理 * */ static int insertDat() { int i, status, rcnt, wcnt, notfound, notfound2, warn_flg; DEBUGF(("insertDat start...")); status = 0; /* SELECTカーソル宣言 */ EXEC SQL DECLARE cur_tri CURSOR FOR select /*+ FULL(BJ_M_VIVID_TRI) ins_KTNTORI_001 */ HCHIKU, TRI_CD, TRI_JNAME, START_DATE, END_DATE, HSN_KBN, KATA_KBN from BJ_M_VIVID_TRI where UP_KBN <> '03'; /* 桁数は条件からはずす */ sprintf(h_sql1, "select /*+ INDEX(BJ_M_JCA_KTM_TRI PK_BJ_M_JCA_KTM_TRI) ins_KTNTORI_002 */ SET_KBN from BJ_M_JCA_KTM_TRI" " where " " (TRI7_CD = SUBSTR(:tri_cd , 1 , 7))" " and START_DATE <= '%s'" " and '%s' <= END_DATE" ,h_gyomu_date,h_gyomu_date); sprintf(h_sql2, "select /*+ FULL(BJ_P_KTM_SORT) ins_KTNTORI_003 */ TRI6_CD from BJ_P_KTM_SORT" " where TRI6_CD = SUBSTR(:tri_cd , 1 , 6)" ); //fprintf(stdout,"SQL1=[%s]\n\n",h_sql1); //fprintf(stdout,"SQL2=[%s]\n\n",h_sql2); EXEC SQL PREPARE sql_pktm FROM :h_sql1; EXEC SQL DECLARE cur_pktm CURSOR FOR sql_pktm; if (check_dberror()) { DEBUGF(("Error: prepare/declare error. (cur_pktm)\n")); return -1; } EXEC SQL PREPARE sql_psort FROM :h_sql2; EXEC SQL DECLARE cur_psort CURSOR FOR sql_psort; if (check_dberror()) { DEBUGF(("Error: prepare/declare error. (cur_psort)\n")); return -1; } /* 開店前取引マスタ全件削除 */ EXEC SQL delete from BJ_T_KTM_TRI; if (strcmp(SQLSTATE, SQLSTATE_NODATA) != 0) { if (check_dberror()) { return -1; } } /* 取引先マスタ取得カーソルOPEN */ EXEC SQL OPEN cur_tri; warn_flg = fvs_z_sql_warning(SQLSTATE); if (check_dberror() && warn_flg == 0) { return -1; } DEBUGF(("FETCH loop start...")); rcnt = wcnt = 0; for(i=0; ; i++) { memset(&h_vtri, 0x00, sizeof(h_vtri)); EXEC SQL FETCH cur_tri INTO :h_vtri.hchiku ,:h_vtri.tri_cd ,:h_vtri.tri_jname :h_vtri.tri_jname_i ,:h_vtri.start_date ,:h_vtri.end_date ,:h_vtri.hsn_kbn :h_vtri.hsn_kbn_i ,:h_vtri.kata_kbn :h_vtri.kata_kbn_i ; if (!strcmp(SQLSTATE, SQLSTATE_NODATA)) break; if (check_dberror()) { DEBUGF(("Error: fetch error. (cur_tri) row = %d\n", i+1)); status = -1; break; } /* printf("row[%d]: hchiku=[%s] depo=[%s] tenban=[%s] shohin_cd=[%s]\n", (i+1), h_dat1.hchiku, h_dat1.depo, h_dat1.tenban, h_dat1.shohin_cd); */ rcnt++; memset(&h_ktmtri, 0x00, sizeof(h_ktmtri)); memset(&h_mktm, 0x00, sizeof(h_mktm)); memset(&h_psort, 0x00, sizeof(h_psort)); memset(&h_ktmtri31, 0x00, sizeof(h_ktmtri31)); memset(&h_ktmtri32, 0x00, sizeof(h_ktmtri32)); memset(&h_ktmtri33, 0x00, sizeof(h_ktmtri33)); strcpy(h_ktmtri.hchiku, h_vtri.hchiku); strcpy(h_ktmtri.tri_cd, h_vtri.tri_cd); strcpy((char *)h_ktmtri.tri_jname.arr, (char *)h_vtri.tri_jname.arr); h_ktmtri.tri_jname.len = h_vtri.tri_jname.len; strcpy(h_ktmtri.start_date, h_vtri.start_date); strcpy(h_ktmtri.end_date, h_vtri.end_date); strcpy(h_ktmtri.hsn_kbn, h_vtri.hsn_kbn); strcpy(h_ktmtri.kata_kbn, h_vtri.kata_kbn); strcpy(h_ktmtri.ktm_proc_kbn, "0"); strcpy(h_ktmtri.den24_dat_kbn, "0"); strcpy(h_ktmtri.den24_prnt_cntr_kbn,"0"); /* データ種31配信先コード設定 */ strcpy(h_ktmtri31.data_syu, "31"); if (!strcmp(h_vtri.hchiku, "03")) { strcpy(h_ktmtri31.hsnsk_cd, "00100022"); strcpy(h_ktmtri31.out_area_kbn, "03"); } else if (!strcmp(h_vtri.hchiku, "04")) { strcpy(h_ktmtri31.hsnsk_cd, "00100022"); strcpy(h_ktmtri31.out_area_kbn, "03"); } else if (!strcmp(h_vtri.hchiku, "05")) { strcpy(h_ktmtri31.hsnsk_cd, "00500022"); strcpy(h_ktmtri31.out_area_kbn, "05"); } else if (!strcmp(h_vtri.hchiku, "07")) { strcpy(h_ktmtri31.hsnsk_cd, "00700022"); strcpy(h_ktmtri31.out_area_kbn, "07"); } else if (!strcmp(h_vtri.hchiku, "08")) { strcpy(h_ktmtri31.hsnsk_cd, "00650022"); strcpy(h_ktmtri31.out_area_kbn, "08"); } else if (!strcmp(h_vtri.hchiku, "09")) { strcpy(h_ktmtri31.hsnsk_cd, "00750022"); strcpy(h_ktmtri31.out_area_kbn, "08"); } else if (!strcmp(h_vtri.hchiku, "02")) { strcpy(h_ktmtri31.hsnsk_cd, "00000022"); strcpy(h_ktmtri31.out_area_kbn, "02"); } else if (!strcmp(h_vtri.hchiku, "11")) { strcpy(h_ktmtri31.hsnsk_cd, "00000022"); strcpy(h_ktmtri31.out_area_kbn, "11"); } else if (!strcmp(h_vtri.hchiku, "13")) { strcpy(h_ktmtri31.hsnsk_cd, "00000022"); strcpy(h_ktmtri31.out_area_kbn, "13"); } /* 2010/06/17 kodama 発注地区追加対応 15,16地区追加 */ else if (!strcmp(h_vtri.hchiku, "15")) { strcpy(h_ktmtri31.hsnsk_cd, "00000022"); strcpy(h_ktmtri31.out_area_kbn, "15"); } else if (!strcmp(h_vtri.hchiku, "16")) { strcpy(h_ktmtri31.hsnsk_cd, "00000022"); strcpy(h_ktmtri31.out_area_kbn, "16"); } else { strcpy(h_ktmtri31.hsnsk_cd, "00000022"); strcpy(h_ktmtri31.out_area_kbn, "00"); } /* 開店前パラメータ検索 */ strcpy(h_tri_cd, h_vtri.tri_cd); EXEC SQL OPEN cur_pktm USING :h_vtri.tri_cd; if (check_dberror()) { DEBUGF(("Error: open cur_pktm error. row = %d\n", i+1)); status = -1; break; } EXEC SQL FETCH cur_pktm INTO :h_mktm.set_kbn :h_mktm.set_kbn_i ; notfound = 0; if (!strcmp(SQLSTATE, SQLSTATE_NODATA)) { notfound = 1; } else if (check_dberror()) { DEBUGF(("Error: fetch cur_pktm error. row = %d\n", i+1)); status = -1; break; } if (notfound == 0) { /* 開店前パラメータ該当データあり */ strcpy(h_ktmtri33.data_syu, "33"); strcpy(h_ktmtri33.den24_dat_kbn, "1"); strcpy(h_ktmtri33.ktm_hsn_kbn, "1"); strcpy(h_ktmtri33.den24_prnt_cntr_kbn, "0"); strcpy(h_ktmtri33.out_area_kbn, h_ktmtri31.out_area_kbn); /* 振分区分チェック(データ種33配信先コード設定) */ char buf_tri[16]; memset(buf_tri, 0x00, sizeof(buf_tri)); memcpy(buf_tri, h_ktmtri.tri_cd, 6); strcat(buf_tri,"0"); buf_tri[7] = h_ktmtri.tri_cd[6]; strcpy(h_ktmtri33.hsnsk_cd, buf_tri); /* セット区分チェック */ if (h_mktm.set_kbn[0] == '1') { /* データ種32情報取得 */ strcpy(h_ktmtri32.data_syu, "32"); /*strcpy(h_ktmtri32.ktm_hsn_kbn, "H"); HICS処理削除*/ strcpy(h_ktmtri32.ktm_hsn_kbn, "1"); strcpy(h_ktmtri32.hsnsk_cd, h_ktmtri31.hsnsk_cd); strcpy(h_ktmtri33.den24_prnt_kbn, "1"); strcpy(h_ktmtri33.den24_dat_kbn, "1"); /* 配送区分チェック */ if (h_ktmtri.kata_kbn[0] != '0') { strcpy(h_ktmtri33.den24_prnt_cntr_kbn, "1"); } /* データ種32データ追加 */ EXEC SQL INSERT INTO BJ_T_KTM_TRI ( HCHIKU ,TRI_CD ,DEN24_PRNT_KBN ,DEN24_DAT_KBN ,DEN24_PRNT_CNTR_KBN ,DATA_SYU ,KTM_PROC_KBN ,KTM_HSN_KBN ,HSNSK_CD ,TRI_JNAME ,START_DATE ,END_DATE ,HSN_KBN ,KATA_KBN ,OUT_AREA_KBN ,REC_RGST_DT ,REC_RGST_ID ,REC_RGST_PG_ID ,REC_UPDT_DT ,REC_UPDT_USR_ID,REC_UPDT_PG_ID ) values ( :h_ktmtri.hchiku ,:h_ktmtri.tri_cd ,:h_ktmtri33.den24_prnt_kbn ,:h_ktmtri33.den24_dat_kbn ,:h_ktmtri33.den24_prnt_cntr_kbn ,:h_ktmtri32.data_syu ,:h_ktmtri.ktm_proc_kbn ,:h_ktmtri32.ktm_hsn_kbn ,:h_ktmtri32.hsnsk_cd ,:h_ktmtri.tri_jname ,:h_ktmtri.start_date ,:h_ktmtri.end_date ,:h_ktmtri.hsn_kbn ,:h_ktmtri.kata_kbn ,:h_ktmtri33.out_area_kbn ,SYSTIMESTAMP,:h_userId,:h_progId ,SYSTIMESTAMP,:h_userId,:h_progId ); if (check_dberror()) { DEBUGF(("Error: insert error. (32a) row = %d\n", i+1)); status = -1; break; } wcnt++; } else { strcpy(h_ktmtri33.den24_prnt_kbn, "0"); strcpy(h_ktmtri33.den24_dat_kbn, "0"); } /* データ種33データ追加 */ EXEC SQL INSERT INTO BJ_T_KTM_TRI ( HCHIKU ,TRI_CD ,DEN24_PRNT_KBN ,DEN24_DAT_KBN ,DEN24_PRNT_CNTR_KBN ,DATA_SYU ,KTM_PROC_KBN ,KTM_HSN_KBN ,HSNSK_CD ,TRI_JNAME ,START_DATE ,END_DATE ,HSN_KBN ,KATA_KBN ,OUT_AREA_KBN ,REC_RGST_DT ,REC_RGST_ID ,REC_RGST_PG_ID ,REC_UPDT_DT ,REC_UPDT_USR_ID,REC_UPDT_PG_ID ) values ( :h_ktmtri.hchiku ,:h_ktmtri.tri_cd ,:h_ktmtri33.den24_prnt_kbn ,:h_ktmtri33.den24_dat_kbn ,:h_ktmtri33.den24_prnt_cntr_kbn ,:h_ktmtri33.data_syu ,:h_ktmtri.ktm_proc_kbn ,:h_ktmtri33.ktm_hsn_kbn ,:h_ktmtri33.hsnsk_cd ,:h_ktmtri.tri_jname ,:h_ktmtri.start_date ,:h_ktmtri.end_date ,:h_ktmtri.hsn_kbn ,:h_ktmtri.kata_kbn ,:h_ktmtri33.out_area_kbn ,SYSTIMESTAMP,:h_userId,:h_progId ,SYSTIMESTAMP,:h_userId,:h_progId ); if (check_dberror()) { DEBUGF(("Error: insert error. (33a) row = %d\n", i+1)); status = -1; break; } wcnt++; /* データ種31データ追加 */ EXEC SQL INSERT INTO BJ_T_KTM_TRI ( HCHIKU ,TRI_CD ,DEN24_PRNT_KBN ,DEN24_DAT_KBN ,DEN24_PRNT_CNTR_KBN ,DATA_SYU ,KTM_PROC_KBN ,KTM_HSN_KBN ,HSNSK_CD ,TRI_JNAME ,START_DATE ,END_DATE ,HSN_KBN ,KATA_KBN ,OUT_AREA_KBN ,REC_RGST_DT ,REC_RGST_ID ,REC_RGST_PG_ID ,REC_UPDT_DT ,REC_UPDT_USR_ID,REC_UPDT_PG_ID ) values ( :h_ktmtri.hchiku ,:h_ktmtri.tri_cd ,:h_ktmtri33.den24_prnt_kbn ,:h_ktmtri33.den24_dat_kbn ,:h_ktmtri33.den24_prnt_cntr_kbn ,:h_ktmtri31.data_syu ,:h_ktmtri.ktm_proc_kbn ,:h_ktmtri33.ktm_hsn_kbn ,:h_ktmtri31.hsnsk_cd ,:h_ktmtri.tri_jname ,:h_ktmtri.start_date ,:h_ktmtri.end_date ,:h_ktmtri.hsn_kbn ,:h_ktmtri.kata_kbn ,:h_ktmtri31.out_area_kbn ,SYSTIMESTAMP,:h_userId,:h_progId ,SYSTIMESTAMP,:h_userId,:h_progId ); if (check_dberror()) { DEBUGF(("Error: insert error. (31a) row = %d\n", i+1)); status = -1; break; } wcnt++; } else { /* 開店前パラメータ該当データなし */ /* データ種32情報設定 */ strcpy(h_ktmtri32.data_syu, "32"); strcpy(h_ktmtri32.den24_prnt_kbn, "1"); /*strcpy(h_ktmtri32.ktm_hsn_kbn, "H"); HICS処理削除*/ strcpy(h_ktmtri32.ktm_hsn_kbn, "1"); strcpy(h_ktmtri32.hsnsk_cd, h_ktmtri31.hsnsk_cd); strcpy(h_ktmtri32.out_area_kbn, h_ktmtri31.out_area_kbn); /* 開店前ソートパラメータ検索 */ EXEC SQL OPEN cur_psort USING :h_vtri.tri_cd; warn_flg = fvs_z_sql_warning(SQLSTATE); if (check_dberror() && warn_flg == 0) { DEBUGF(("Error: open cur_psort error. row = %d\n", i+1)); status = -1; break; } EXEC SQL FETCH cur_psort INTO :h_psort.tri6_cd; notfound2 = 0; if (!strcmp(SQLSTATE, SQLSTATE_NODATA)) { notfound2 = 1; } else if (check_dberror()) { DEBUGF(("Error: fetch cur_psort error. row = %d\n", i+1)); status = -1; break; } if (notfound2 == 0) { /* 開店前ソートパラメータ該当データあり */ strcpy(h_ktmtri32.ktm_proc_kbn, "1"); } else { strcpy(h_ktmtri32.ktm_proc_kbn, "0"); } EXEC SQL CLOSE cur_psort; /* データ種32データ追加 */ EXEC SQL INSERT INTO BJ_T_KTM_TRI ( HCHIKU ,TRI_CD ,DEN24_PRNT_KBN ,DEN24_DAT_KBN ,DEN24_PRNT_CNTR_KBN ,DATA_SYU ,KTM_PROC_KBN ,KTM_HSN_KBN ,HSNSK_CD ,TRI_JNAME ,START_DATE ,END_DATE ,HSN_KBN ,KATA_KBN ,OUT_AREA_KBN ,REC_RGST_DT ,REC_RGST_ID ,REC_RGST_PG_ID ,REC_UPDT_DT ,REC_UPDT_USR_ID,REC_UPDT_PG_ID ) values ( :h_ktmtri.hchiku ,:h_ktmtri.tri_cd ,:h_ktmtri32.den24_prnt_kbn ,:h_ktmtri.den24_dat_kbn ,:h_ktmtri.den24_prnt_cntr_kbn ,:h_ktmtri32.data_syu ,:h_ktmtri32.ktm_proc_kbn ,:h_ktmtri32.ktm_hsn_kbn ,:h_ktmtri32.hsnsk_cd ,:h_ktmtri.tri_jname ,:h_ktmtri.start_date ,:h_ktmtri.end_date ,:h_ktmtri.hsn_kbn ,:h_ktmtri.kata_kbn ,:h_ktmtri32.out_area_kbn ,SYSTIMESTAMP,:h_userId,:h_progId ,SYSTIMESTAMP,:h_userId,:h_progId ); if (check_dberror()) { DEBUGF(("Error: insert error. (32b) row = %d\n", i+1)); status = -1; break; } wcnt++; /* データ種31データ追加 */ EXEC SQL INSERT INTO BJ_T_KTM_TRI ( HCHIKU ,TRI_CD ,DEN24_PRNT_KBN ,DEN24_DAT_KBN ,DEN24_PRNT_CNTR_KBN ,DATA_SYU ,KTM_PROC_KBN ,KTM_HSN_KBN ,HSNSK_CD ,TRI_JNAME ,START_DATE ,END_DATE ,HSN_KBN ,KATA_KBN ,OUT_AREA_KBN ,REC_RGST_DT, REC_RGST_ID, REC_RGST_PG_ID ,REC_UPDT_DT, REC_UPDT_USR_ID, REC_UPDT_PG_ID ) values ( :h_ktmtri.hchiku ,:h_ktmtri.tri_cd ,:h_ktmtri32.den24_prnt_kbn ,:h_ktmtri.den24_dat_kbn ,:h_ktmtri.den24_prnt_cntr_kbn ,:h_ktmtri31.data_syu ,:h_ktmtri32.ktm_proc_kbn ,:h_ktmtri32.ktm_hsn_kbn ,:h_ktmtri31.hsnsk_cd ,:h_ktmtri.tri_jname ,:h_ktmtri.start_date ,:h_ktmtri.end_date ,:h_ktmtri.hsn_kbn ,:h_ktmtri.kata_kbn ,:h_ktmtri31.out_area_kbn ,SYSTIMESTAMP,:h_userId,:h_progId ,SYSTIMESTAMP,:h_userId,:h_progId ); if (check_dberror()) { DEBUGF(("Error: insert error. (31b) row = %d\n", i+1)); status = -1; break; } wcnt++; } EXEC SQL CLOSE cur_pktm; } DEBUGF((buf, "Loop end. read = %d, write = %d\n", rcnt, wcnt)); EXEC SQL CLOSE cur_tri; fprintf(stdout, "開店前取引先DB 登録件数 = %d件\n", wcnt); return status; } oracle转postgre这个.pc文件转成.pgc文件需要改哪
08-06
评论
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
红包 添加红包
表情包 插入表情
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值