oracle – PL / SQL有条件地编译数据库对象的存在
发布时间:2021-03-19 02:13:55 所属栏目:站长百科 来源:网络整理
导读:是否可以在Oracle中进行条件编译,其中条件是存在数据库对象(特别是表或视图或同义词)?我希望能够做到这样的事情: sp_some_procedure is $IF /*check if A exists.*/ then /* read from and write to A as well as other A-related non-DML stuff...*/ $ELS
是否可以在Oracle中进行条件编译,其中条件是存在数据库对象(特别是表或视图或同义词)?我希望能够做到这样的事情: sp_some_procedure is $IF /*check if A exists.*/ then /* read from and write to A as well as other A-related non-DML stuff...*/ $ELSE /*A doesn't exist yet,so avoid compiler errors*/ dbms_output.put_line('Reminder: ask DBA to create A!') $ENDIF end; 解决方法不 – 这是不可能的……但是如果你创建一个存储过程引用一个不存在的DB对象并尝试编译它,编译将显示错误…存储过程将在那里,但“无效”…和每当他查看它时,DBA都可以访问编译错误…所以我会继续创建所有需要的存储过程,如果出现任何编译错误请求DBA(有时对象存在但存储过程需要访问权限它……)…在修复了错误的原因之后你可以重新编译存储过程(通过ALTER PROCEDURE MySchema.MyProcName COMPILE; ),一切都很好……
如果您不希望代码在那里,您可以只删除标记过程和/或替换是通过CREATE OR REPLACE …与dbms_output.put_line(‘提醒:请DBA创建A!’)在正文中. 唯一的另一种选择是kevin指出EXECUTE IMMEDIATE具有适当的EXCEPTION处理…… (编辑:ASP站长) 【免责声明】本站内容转载自互联网,其相关言论仅代表作者个人观点绝非权威,不代表本站立场。如您发现内容存在版权问题,请提交相关链接至邮箱:bqsm@foxmail.com,我们将及时予以处理。 |
相关内容
未处理完善
-
无相关信息
最新更新