我在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