各位高手,一个奇怪的问题求救。SOS!!!
运行于客户的webpshere服务器上的java程序调用oracle一个pkg的一个简单的function来插数据进入表,没有用到任何游标,
居然报ORA-01001: invalid cursor这个错,找了许久没有找到原因。麻烦各位出手帮忙!!
可能有用的线索:出这个错的半个小时之前相同的程序出过插入字段msg_content可能超过4000 char的错误:ORA-01461: can bind a LONG value only for insert into a LONG column.不知道两者是否有关。
附上func and table 相关内容:
FUNCTION f_insertInmsglog(p_legal_entity_code VARCHAR2,
p_channel_id VARCHAR2,
p_msg_id number,
p_msg_trans_key VARCHAR2,
p_status VARCHAR2,
p_err_code VARCHAR2,
p_err_desc VARCHAR2,
p_msg_content VARCHAR2 ) RETURN NUMBER AS
l_in_msg_id NUMBER;
l_cis_msg_id NUMBER;
BEGIN
INSERT INTO cis_intraday_inmsglog
(in_msg_id,
legal_entity_code,
communciation_channel_id,
msg_trans_key,
cis_msg_id,
status,
err_code,
err_description,
msg_content,
last_updated_date,
last_updated_by)
VALUES
(seq_intraday_in_msg_id.NEXTVAL,
p_legal_entity_code,
p_channel_id,
p_msg_trans_key,
p_msg_id,
p_status,
p_err_code,
p_err_desc,
p_msg_content,
SYSDATE,
'Intraday') RETURN in_msg_id INTO l_in_msg_id;
COMMIT;
RETURN l_in_msg_id;
EXCEPTION
WHEN OTHERS THEN
ROLLBACK;
g_errmsg.legal_entity_code := p_legal_entity_code;
g_errmsg.pgm_id := 'p_InsertInmsgLog';
g_errmsg.audit_id := NULL;
g_errmsg.event_id := NULL;
g_errmsg.action_id := NULL;
g_errmsg.msg_id := p_msg_id;
g_errmsg.system_id := '';
g_errmsg.channel_id := p_channel_id;
g_errmsg.contract_id := '';
g_errmsg.msg_type := '';
g_errmsg.errtext := SQLERRM;
p_raiseError(g_errmsg);
RETURN l_in_msg_id;
END;
cis_intraday_inmsglog表结构
Name Type Nullable Default Comments
------------------------ ------------------- -------- ------- --------
IN_MSG_ID NUMBER(22)
LEGAL_ENTITY_CODE VARCHAR2(20 BYTE)
COMMUNCIATION_CHANNEL_ID VARCHAR2(20 BYTE)
MSG_TRANS_KEY VARCHAR2(100 BYTE) Y
CIS_MSG_ID NUMBER(22) Y
STATUS VARCHAR2(20 BYTE) Y
ERR_CODE VARCHAR2(255 BYTE) Y
ERR_DESCRIPTION VARCHAR2(1000 BYTE) Y
MSG_CONTENT VARCHAR2(4000) Y
LAST_UPDATED_DATE DATE Y
LAST_UPDATED_BY VARCHAR2(20 BYTE) Y