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 がkeyadd BEGIN EXECUTE(: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
この現象を再現する小さなテストケースを教えてください。 –
ストアドプロシージャとコールも表示してください。 –