You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

PL/SQL中SELECT INTO无法存储数据,报ORA-01403无数据找到错误

PL/SQL中SELECT INTO无法存储数据,报ORA-01403无数据找到错误

看起来你的问题核心出在绑定变量的赋值环节,导致查询的WHERE条件匹配不到任何数据,触发了ORA-01403无数据异常。我帮你拆解下原因和解决办法:

问题根源

你单独运行查询时用的是TP.ID_TIPO_PROPIEDAD = 'A'(带单引号的字符串常量),所以能正常查到数据;但在匿名块中使用绑定变量:TP1时,赋值步骤可能出了问题:

当你执行EXEC TP1 := &TIPO_PROPIEDAD_1;时,如果输入的是A而不是'A',Oracle会把A当作一个未定义的标识符(而非字符串)来处理,最终:TP1会被赋值为NULL,或者直接抛出变量未定义的错误。而NULL和任何值做比较结果都是不成立的,这就导致你的SELECT查询找不到匹配的数据,触发NO_DATA_FOUND异常。

解决方案

我给你两种可行的修正方案:

方案1:修正绑定变量的赋值方式

在输入&TIPO_PROPIEDAD_1的替换值时,必须加上单引号,比如输入'A'而不是A。这样Oracle才会把它识别为字符串常量,正确赋值给:TP1。

你可以先通过DBMS_OUTPUT.PUT_LINE(:TP1);的输出来验证变量值是否正确——如果输出是A(而非空或其他奇怪的值),说明赋值成功了。

方案2:直接在匿名块中定义变量并接收输入

这种方式可以避免绑定变量的坑,直接在PL/SQL块内部处理输入:

SET SERVEROUTPUT ON;

DECLARE
    -- 直接定义变量并接收用户输入,自动处理字符串类型
    V_TP1 TIPO_PROPIEDAD.ID_TIPO_PROPIEDAD%TYPE := '&TIPO_PROPIEDAD_1';
    V_CANT_1 PROPIEDAD.NRO_PROPIEDAD%TYPE;
    V_TOTAL_1 PROPIEDAD.VALOR_ARRIENDO%TYPE;
    V_DESC_1 TIPO_PROPIEDAD.DESC_TIPO_PROPIEDAD%TYPE;
BEGIN
    -- CONSULTA 1
    SELECT
        COUNT(PR.NRO_PROPIEDAD),
        SUM(PR.VALOR_ARRIENDO),
        TP.DESC_TIPO_PROPIEDAD
    INTO
        V_CANT_1,
        V_TOTAL_1,
        V_DESC_1
    FROM
        PROPIEDAD PR INNER JOIN TIPO_PROPIEDAD TP
        ON PR.ID_TIPO_PROPIEDAD = TP.ID_TIPO_PROPIEDAD
    WHERE
        TP.ID_TIPO_PROPIEDAD = V_TP1
    GROUP BY
        TP.DESC_TIPO_PROPIEDAD;

    DBMS_OUTPUT.PUT_LINE('RESUMEN DE : ' || V_DESC_1);
    DBMS_OUTPUT.PUT_LINE('TOTAL DE PROPIEDADES : ' || V_CANT_1);
    DBMS_OUTPUT.PUT_LINE('VALOR TOTAL ARRIENDO : ' || V_TOTAL_1);
-- 加入异常捕获,方便排查问题
EXCEPTION
    WHEN NO_DATA_FOUND THEN
        DBMS_OUTPUT.PUT_LINE('⚠️ No se encontraron datos para el tipo de propiedad: ' || V_TP1);
        DBMS_OUTPUT.PUT_LINE('建议验证该ID是否存在于表TIPO_PROPIEDAD中');
END;
/

额外建议

在PL/SQL块中加入EXCEPTION部分捕获NO_DATA_FOUND异常是个好习惯,这样能输出更友好的提示信息,而不是直接抛出系统级的错误,方便你快速定位问题。

备注:内容来源于stack exchange,提问作者pr0vis0ri0_

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.04.23 10:19:10