救命,oracle的long raw如何插入???99分相谢......(只能给这么多了)
表格结构如下:
SQL> desc s12binreport
Name Null? Type
------------------------------- -------- ----
NENAME NOT NULL VARCHAR2(20)
REP_TIME NOT NULL VARCHAR2(22)
RRN NOT NULL NUMBER(5)
S12_VERSION NOT NULL NUMBER(1)
REP_BODY LONG RAW
SQL> insert into s12binreport values('MYNAME','12:10:11',1,1,'QWERTY');
insert into s12binreport values('MYNAME','12:10:11',1,1,'QWERTY')
*
ERROR at line 1:
ORA-01465: invalid hex number
1465错误对应的帮助好像不对头的。
在程序里面用proc作同样的插入的时候也是同样错误,相关代码和结构:
typedef struct
{
char NEName[20];
char Rep_Time[20];
WORD RRN;
WORD S12_Version;
char Rep_Body[8192];
} T_S12BINREPORT;
proc 代码如下:
int InsertBinReport(T_S12BINREPORT *Log_Body)
{
char err_msg[128];
size_t buf_len, msg_len;
pthread_mutex_lock(&thread_lock);
EXEC SQL WHENEVER SQLERROR GOTO LSQLERROR;
EXEC SQL WHENEVER NOT FOUND CONTINUE;
EXEC SQL AT :ismsdbname
INSERT INTO S12BINREPORT
VALUES
(
:Log_Body
);
EXEC SQL AT :ismsdbname COMMIT WORK;
pthread_mutex_unlock(&thread_lock);
return 1;
LSQLERROR:
EXEC SQL WHENEVER SQLERROR CONTINUE;
buf_len = sizeof (err_msg);
sqlglm(err_msg, &buf_len, &msg_len);
printf("%.*s\n", msg_len, err_msg);
EXEC SQL AT :ismsdbname ROLLBACK WORK;
pthread_mutex_unlock(&thread_lock);
return 0;
}
执行的报错也是一样的。请各位大侠帮小弟一把。。。
另外,如果long raw改为long,则程序执行一些正常,但是一段很长的数据(可以几K吧)插入后变成只有十几个byte了,当然,这段数据不保证是可见字符,是任意的字节流...