PL/SQL中通过用户输入C_Id查询数据并实现异常提示的方法
PL/SQL按用户输入C_Id查询客户数据实现方案
核心实现逻辑
- 用自定义变量接收用户输入的C_Id作为查询条件
- 使用
SELECT ... INTO语法完成单条记录查询,该语法在无匹配数据时会自动触发NO_DATA_FOUND系统异常 - 通过异常处理块捕获无数据异常,输出指定提示信息,同时可兼容处理其他异常报错场景
完整代码示例
假设客户表名为customers,表中包含c_id(客户ID)、c_name(客户姓名)、c_phone(客户电话)字段,可根据实际表结构调整字段部分:
DECLARE -- 自定义变量:存储用户输入的客户ID v_input_cid NUMBER := &请输入客户ID; -- 自定义变量:存储查询返回的客户字段,%TYPE自动匹配表字段类型 v_customer_name customers.c_name%TYPE; v_customer_phone customers.c_phone%TYPE; BEGIN -- 按输入的C_ID查询数据 SELECT c_name, c_phone INTO v_customer_name, v_customer_phone FROM customers WHERE c_id = v_input_cid; -- 查询成功时输出结果 DBMS_OUTPUT.PUT_LINE('客户查询结果:'); DBMS_OUTPUT.PUT_LINE('客户姓名:' || v_customer_name); DBMS_OUTPUT.PUT_LINE('联系电话:' || v_customer_phone); EXCEPTION -- 捕获无匹配数据异常,输出指定提示 WHEN NO_DATA_FOUND THEN DBMS_OUTPUT.PUT_LINE('No customer found'); -- 捕获其他所有异常,输出错误信息 WHEN OTHERS THEN DBMS_OUTPUT.PUT_LINE('查询执行错误:' || SQLERRM); END; /
代码说明
- 变量部分:
&请输入客户ID是SQL*Plus、PL/SQL Developer等Oracle客户端支持的替换变量语法,执行代码时会自动弹出输入框接收用户输入,赋值给自定义变量v_input_cid。如果是应用程序调用PL/SQL块,可将该位置替换为绑定变量传入参数即可。 - 查询部分:
SELECT ... INTO要求查询结果必须恰好返回1行,返回0行触发NO_DATA_FOUND异常,返回多行触发TOO_MANY_ROWS异常,可根据需求补充捕获该异常。 - 异常处理部分:优先匹配
NO_DATA_FOUND异常输出指定提示,其余异常兜底处理,避免程序直接崩溃。
内容的提问来源于stack exchange,提问作者tuneKawaii UwU
相关产品推荐
相关产品推荐

