【发布时间】:2018-12-05 00:41:45
【问题描述】:
我想解决这个问题:
- 创建一个名为 insert_num_proc 的存储过程,它将数字插入到 FLOAT_SAMPLE 表中。
- 此过程应该有两个参数,一个用于此表中的两列中的每一列。
- 该过程应检查 float_id 列以确保没有重复(因为此列中不强制执行唯一值)。如果 有重复的float_id,则该行不应该插入, 而是打印一条消息“float_id 中的重复值”。
以下是我的查询。对于第二个查询,我执行我的存储过程以查看它是否显示我的应用程序错误消息,并且它不工作。
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);
以下是我收到的错误消息
错误报告 - ORA-01422:精确提取返回的数量超过请求的数量 行数 ORA-06512:在“DL29232.INSERT_NUM_PROC”,第 9 行 ORA-06512: 在第 1 行 01422. 00000 - “精确提取返回的行数超过了请求的行数” *原因:exact fetch 中指定的数字小于返回的行数。 *操作:重写查询或更改请求的行数
【问题讨论】:
-
运行代码时看到了什么?我们可以猜测,但您自己看看会很有启发性。
-
“它不工作”。您收到任何错误消息吗?日志?它做了什么你意想不到的事?