如何在pl / sql块中处理编译时异常?

时间:2014-02-14 06:15:33

标签: sql oracle plsql oracle10g

实际上这是一个愚蠢的问题,因为为什么你会在代码中允许编译时异常,但我的情况有些不同。

实际上我正在编写一个pl / sql块,我在运行时获取表名,然后在查询中使用该表名,其中我有一个where子句“where maker ='AUTO_MAST_MAK'”..现在问题是在某些表中“maker”列不可用,因此块不会被编译。

任何人都可以帮助我解决我的问题..或任何建议“我应该改变我对待问题的方法”

2 个答案:

答案 0 :(得分:3)

动态PL / SQL可以处理编译错误:

declare
    compile_error exception;
    pragma exception_init(compile_error, -06550);
begin
    execute immediate q'<
        begin
            does not compile
        end;    
    >';
exception when compile_error then
    dbms_output.put_line('PL/SQL Block did not compile.');
end;
/

答案 1 :(得分:1)

为什么不在生成PLSQL块之前检查此列?

select table_name,column_name,data_type from user_tab_columns

只需检查表是否在运行时具有此列。