proC--sqlca.sqlcode

本文解释了SQL执行过程中可能遇到的各种错误代码,特别是sqlca.sqlcode的含义及其常见错误列表,帮助开发者快速定位并解决问题。
如果一个 SQL 语句发生了错误,那么 sqlca.sqlcode 将是非零值。
如果 sqlca.sqlcode 小于 0 那么就是发生了某种严重的错误,象数据库定义与查询定义不一致等.
如果大于 0 则是通常的错误,象表不包括所要求的行等.

sqlca.sqlcode == 0,成功
sqlca.sqlcode == -1 失败 (获取具体失败信息:messagebox('',"出错信息:"+sqlca.SQLErrText) )--PB里的操作方法
可能发生的错误列表:
-12, Out of memory in line %d. 
通常不出现这个错误。这是你的虚拟内存耗尽的标志。 
-200, Unsupported type %s on line %d. 
通常不出现这个错误.这表明预编译器生成了一些库(函数)不认得的东西.可能你运行的预编译器和当前库不兼容. 
-201, Too many arguments line %d. 
这意味着 Postgres 返回了比我们的匹配变量更多的参数.可能你漏了几个INTO :var1,:var2-列表里的宿主变量. 
-202, Too few arguments line %d. 
这意味着 Postgres 返回了比我们的对应宿主变量要少的参数.可能你多输入了几个INTO :var1,:var2-列表里的宿主变量. 
-203, Too many matches line %d. 
着意味着查询返回了多个行,但你声明的变量不是数组.你执行的 SELECT 可能不是唯一的. 
-204, Not correctly formatted int type: %s line %d. 
着意味着宿主变量是一个 int 类型并且 Postgres 数据库里的字段是另一种类型,包含着一个不能转换成一个 int 类型的数值.库(函数)使用 strtol 做此类转换. 
-205, Not correctly formatted unsigned type: %s line %d. 
着意味着宿主变量是一个 unsigned int(无符号整数)类型而Postgres 数据库里的字段是另外一种类型并且包含一个不能转换成unsigned int 的数值.库(函数)使用 strtoul 做这类转换. 
-206, Not correctly formatted floating point type: %s line %d. 
着意味着宿主变量是一个 float (浮点)类型而 Postgres 数据库里的字段是另外一种类型并且包含一个不能转换成 float 的数值.库(函数)使用 strtod 做这类转换. 
-207, Unable to convert %s to bool on line %d. 
这意味着宿主变量是一个 bool (布尔)类型,而 Postgres 数据库里的字段值既不是 't' 也不是 'f'。 
-208, Empty query line %d. 
Postgres 返回 PGRES_EMPTY_QUERY,可能的原因是该查询实际上是空的。 
-220, No such connection %s in line %d. 
程序试图访问一个不存在的联接。 
-221, Not connected in line %d. 
程序试图访问一个存在的,但是没有打开的联接。 
-230, Invalid statement name %s in line %d. 
你试图使用的语句还没准备好。 
-400, Postgres error: %s line %d. 
某种 Postgres 错误。该消息包含来自 Postgres 后端的信息。 
-401, Error in transaction processing line %d. 
Postgres 给我们的信号,表明我们无法开始,提交或者回卷该事务。 
-402, connect: could not open database %s. 
与数据库的联接无法工作。 
sqlca.sqlcode == 100, Data not found line %d. 
这是一个"正常的"错误,告诉你你正在查询的东西找不到或者我们已经越过了游标的范围。
EXEC SQL INCLUDE sqlca; EXEC SQL BEGIN DECLARE SECTION; char batchId[BATCH_ID_LENGTH + 1]; //バッチID char taniKubun[TANI_KBN_LENGTH + 1]; //発注処理単位区分 EXEC SQL END DECLARE SECTION; int execute_insert_sql(char* batchId, char* taniKubun){ EXEC SQL BEGIN DECLARE SECTION; /* SQLSTATE宣言 */ extern char SQLSTATE_OK[6]; EXEC SQL END DECLARE SECTION; //========================初期化====================================== int row_count = 0; //登録件数 EXEC SQL WHENEVER SQLWARNING CONTINUE; //合計DB作成開始 EXEC SQL INSERT INTO BJ_T_GOKEI (TRI_CD ,SHOHIN_CD ,DEN_HAKO_DEPO ,HAT_DATE ,NHIN_DATE ,NHIN_YOUBI ,BIN ,TRI_KNAME ,DEPO_KNAME ,TENSHO_KNAME ,KKK_KNAME ,IRI_SU ,CASE_IRISU ,HINBAN ,HAT_BAISU ,HATSHR_TANI_KBN ,HCHIKU ,HSOMOTO_CD ,FM_KAI_CD ,BENTO_DEPO_CD ,BRAND_KNAME , REC_RGST_DT , REC_RGST_ID , REC_RGST_PG_ID , REC_UPDT_DT , REC_UPDT_USR_ID , REC_UPDT_PG_ID )SELECT /*+ FULL(HAT) B_BJ_ONL01_020Service_001 */ HAT.TRI_CD, HAT.SHOHIN_CD, HAT.DEN_HAKO_DEPO, HAT.HAT_DATE, HAT.NHIN_DATE, HAT.NHIN_YOUBI, HAT.BIN, MAX(HAT.TRI_KNAME), MAX(HAT.DEPO_KNAME), MAX(HAT.TENSHO_KNAME), MAX(HAT.KKK_KNAME), HAT.IRI_SU, HAT.CASE_IRISU, HAT.HINBAN, SUM(HAT.HAT_BAISU), HAT.HATSHR_TANI_KBN, HAT.HCHIKU, HAT.HSOMOTO_CD, HAT.FM_KAI_CD, HAT.BENTO_DEPO_CD, MAX(HAT.BRAND_KNAME), CLOCK_TIMESTAMP(), :batchId, :batchId, CLOCK_TIMESTAMP(), :batchId, :batchId FROM BJ_T_HAT HAT WHERE HAT.HATSHR_TANI_KBN = :taniKubun AND HAT.YUKO_FLG = '1' AND HAT.HAT_BAISU > 0 GROUP BY HAT.TRI_CD, HAT.SHOHIN_CD, HAT.DEN_HAKO_DEPO, HAT.HCHIKU, HAT.HSOMOTO_CD, HAT.BIN, HAT.IRI_SU, HAT.CASE_IRISU, HAT.HINBAN, HAT.HATSHR_TANI_KBN, HAT.HAT_DATE, HAT.NHIN_DATE, HAT.NHIN_YOUBI, HAT.FM_KAI_CD, HAT.BENTO_DEPO_CD, HAT.BRAND_KNAME; EXEC SQL GET DIAGNOSTICS :row_count = ROW_COUNT; if (strcmp(sqlca.sqlstate, SQLSTATE_OK) != 0 && strncmp(sqlca.sqlstate, "01", 2) != 0) { sprintf(dbError, "Database error: %s", sqlca.sqlstate); return -1; } return row_count; }
08-08
评论
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
红包 添加红包
表情包 插入表情
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值