|
Yong Huang 发表于 2014-9-22 23:46 ![]()
> 但如果向A和B同时插入,则会报这个错误。
So, even if column b takes a single character, it won't ...
貌似找到原因了。
proc中如果用:
EXEC SQL INSERT INTO TBL_LV1(A, B) VALUES('a', 'b');
不报错,即使AB是VARCHAR2(10)或VARCHAR2(4000)
proc中如果用:
EXEC SQL INSERT INTO TBL_LV1(A, B) VALUES(:a, :b);
报错,即使AB是VARCHAR2(10)或VARCHAR2(4000)
其中a,b的定义:
char a[4001], b[4001];
memset(a, 0, sizeof(a));
memset(b, 0, sizeof(b));
strcpy(a, "a");
strcpy(b, "b");
因此很可能是proc中使用char数组插入VARCHAR2类型会出现问题,若使用varchar的proc类型,可能就可以,但奇怪的是proc服务器字符集是AMERICAN_AMERICA.ZHS16CGB231280,数据库服务器字符集是ZHS16GBK,BGK都是双字符集吧,我插入a一个字符,也不存在>4000的可能呢? |
|