实际上这是一个愚蠢的问题,因为为什么你会在代码中允许编译时异常,但我的情况有些不同。
实际上我正在编写一个pl / sql块,我在运行时获取表名,然后在查询中使用该表名,其中我有一个where子句“where maker ='AUTO_MAST_MAK'”..现在问题是在某些表中“maker”列不可用,因此块不会被编译。
任何人都可以帮助我解决我的问题..或任何建议“我应该改变我对待问题的方法”
答案 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
只需检查表是否在运行时具有此列。