Oracle两表记录匹配:验证PL/SQL游标中查询语句的正确性
问题解答
游标中的SELECT查询语句逻辑是正确的,它能够精准定位违反业务规则的记录:即main_supplier表中file_id=1、process_id=2,且在addition_supplier表中存在相同file_id、process_id和supplier_code的供应商编码——这正是业务规则禁止的情况。
不过需要注意,这段PL/SQL代码除了SELECT语句外,还有其他语法和逻辑问题:
- 游标定义缺少关键字
is,正确写法应为:cursor c1 is select ta.supplier_code ... - 变量
a未提前声明,需在代码开头添加a number;来定义变量类型 - 循环无退出条件,会陷入无限循环,需在
fetch后添加exit when c1%notfound; - 抛出异常的语法错误,
raise error;不符合PL/SQL规范,应使用raise_application_error抛出自定义异常,例如:raise_application_error(-20001, '存在违反业务规则的供应商编码');
内容的提问来源于stack exchange,提问作者Ram
相关产品推荐
相关产品推荐

