我在Oracle 9i中有一个存储过程,它在表中插入记录。该表具有构建的主键,以确保重复行不存在。ORACLE -1401错误
我试图通过调用此存储过程中插入一条记录,它正确地工作第一次。我再次尝试插入重复的记录,并期待唯一的约束违规错误。但我正在逐渐 ORA-01401插入值太大,
列我知道它的意思,但我的查询,如果插入的值是真正的大它,然后如何得到成功的第一次尝试。
表是
CREATE TABLE KEY
(
ID VARCHAR2(25 BYTE),
KEY NUMBER(4) NOT NULL,
INSERT_DATE DATE,
WORK_KEY VARCHAR2(128 BYTE)
)
CREATE UNIQUE INDEX SACHINIDX ON KEY
(ID, KEY)
呼叫是 EXEC SQL EXECUTE BEGIN keyadd(:ID,:键,:WKEY); END; END-EXEC;
存储过程
PROCEDURE keyadd(id IN VARCHAR2, key IN NUMBER, wkey IN VARCHAR2)
{
BEGIN
INSERT INTO KEY
( ID,
KEY,
INSERT_DATE,
WORK_KEY)
VALUES
(
id,
key,
SYSDATE,
wkey
);
EXCEPTION
ROLLBACK;
COMMIT;
RETURN;
END;
}
首先插入的sqlca.sqlcode是[0] 二次插入的sqlca.sqlcode是[-1401]
桌子上是否有触发器可能会混淆这些值? – kurosch 2011-01-06 15:50:52
你能告诉我们一个能够再现这种行为的小测试用例吗? – 2011-01-06 15:58:29
请同时显示存储过程和调用。 – 2011-01-06 16:07:59