CREATE OR REPLACE PROCEDURE insert_num_proc
(
float_id_param float_sample.float_id%TYPE,
float_value_param float_sample.float_value%TYPE)
AS
float_checker float_sample.float_id%TYPE;
BEGIN
SELECT float_id INTO float_checker FROM float_sample;
INSERT INTO float_sample (float_id, float_value)
VALUES
(float_id_param, float_value_param);
IF float_checker = float_id_param THEN
RAISE_APPLICATION_ERROR(-20001, 'Duplicate value is inserted.');
END IF;
END;
/
EXECUTE insert_num_proc(3,2);
/
Error report -
ORA-01422: exact fetch returns more than requested number of rows
ORA-06512: at "DL29232.INSERT_NUM_PROC", line 9
ORA-06512: at line 1
01422. 00000 - "exact fetch returns more than requested number of rows"
*Cause: The number specified in exact fetch is less than the rows returned.
*Action: Rewrite the query or change number of rows requested
첫번째 프로시져를 쓰고 나서 제가 쓴 프로시져로 raise application error가 작동 되는지 보려고 하는데 자꾸 이상한 에러가 뜨네요.... 제대로 돌아갔을 때 3,2를 insert 하면 제가 임의로 넣은 에러메세지 'Duplicate Value is Inserted.' 라는 메세지가 떠야합니다.
프로시제 만들때는 에러 안 떴는데 ㅠㅠ 도와주세요
오라클 PL SQL 입니다
CREATE OR REPLACE PROCEDURE insert_num_proc ( float_id_param float_sample.float_id%TYPE , float_value_param float_sample.float_value%TYPE ) AS nCnt NUMBER; BEGIN SELECT COUNT(*) INTO nCnt FROM float_sample WHERE float_id = float_id_param ; IF nCnt = 0 THEN INSERT INTO float_sample (float_id, float_value) VALUES (float_id_param, float_value_param); ELSE RAISE_APPLICATION_ERROR(-20001, 'Duplicate value is inserted.'); END IF; END; /