oracle 主键匹配返回ORA-01422:精确提取返回的行数超过请求的行数

mwngjboj  于 2023-08-03  发布在  Oracle
关注(0)|答案(1)|浏览(136)

我有一个过程,它将所有相关的字段提取到变量中。代码简化如下。

PROCEDURE pr_update(new_id IN NUMBER) 
AS 
v_a NUMBER;
v_b NUMBER;
v_c NUMBER;
BEGIN
    SELECT APPRVD_1, TOT_1, NEW_1 
    INTO v_a , v_b , v_c
    FROM TableName 
    WHERE TABLE_ID = new_id;
END pr_update;

字符串
如果我从另一个过程调用这个过程,并传入一个new_ID,它将抛出一个错误ORA-01422:exact fetch返回的行数超过了请求的行数,但是如果我把new_id直接放在where子句中,它可以正常工作。
第一个月
任何建议将不胜感激。

5rgfhyps

5rgfhyps1#

没有所有的细节很难说,但这里的一个常见问题是数据类型不匹配。如果“TABLE_ID”是一个varchar2,则执行如下操作

where TABLE_ID = my_numeric_variable

字符串
将被默默地转化为

where to_number(TABLE_ID) = my_numeric_variable


这意味着(例如)值'01'和'001'将匹配并创建您看到的错误。

相关问题