oracle - 动态执行 RAISE 错误时出错
问题描述
我想根据 SELECT 语句执行 RAISE 错误。我相信这会奏效。如果可能的话,有人可以帮助下面的代码
DECLARE
A ExcEPTION;
V_T VARCHAR2(1000);
BEGIN
SELECT ' RAISE A ' INTO V_T FROM DUAL;
EXECUTE IMMEDIATE V_T;
EXCEPTION
WHEN A THEN
DBMS_OUTPUT.PUT_LINE('ABC');
END ;
解决方案
它会起作用,但不是你想要的(我猜)。您必须动态执行包含异常声明及其处理部分的整个 PL/SQL 块。像这样的东西:
SQL> declare
2 v_t varchar2(1000);
3 begin
4 select ' RAISE A ' into v_t from dual;
5 execute immediate
6 'declare a exception; begin ' || v_t ||
7 '; exception when a then dbms_output.put_line(''abc''); end;';
8 end ;
9 /
abc
PL/SQL procedure successfully completed.
SQL>
推荐阅读
- java - 如何将此 curl 命令转换为 java 命令
- ios - 带密码的 LiveView 表单 - iOS Safari 密码保存弹出窗口
- soap - 使用 node-soap 发送带有 XML 和 WS-security 的 SOAP 请求?
- python - 属性“运行”已经在主文件中
- html - 样式化相对于兄弟元素的相对位置
- python - Django 2 函数调用 - 2 个不同的结果
- spring-data-jpa - 如何编写规范以急切地获取惰性多对多关系?
- node.js - 社交和本地认证 + 节点 js + react native + 身份服务器
- spring - 在批处理模式下使用 Spring Cloud Stream 发送到 DLQ 失败
- cypress - 检查元素中的数字是否为日期