View PL/SQL过程X引用视图Y
“参考视图”是什么意思?在程序中是否有任何陈述提及给定的观点。是否有任何命令,例如“从Y删除,其中…”或任何类似命令?这是否意味着引用是包含该视图Y的任何命令 这是我这里的问题和答案的一部分,答案之一是“Y是X的直接依赖项”? 这是否意味着程序创建了该视图 这是完整的问题和答案 考虑这个场景:过程X引用基于表Z的视图Y。哪两条语句 是真的吗?(选择两个。) Y是一个被引用的对象View PL/SQL过程X引用视图Y,view,reference,plsql,procedure,View,Reference,Plsql,Procedure,“参考视图”是什么意思?在程序中是否有任何陈述提及给定的观点。是否有任何命令,例如“从Y删除,其中…”或任何类似命令?这是否意味着引用是包含该视图Y的任何命令 这是我这里的问题和答案的一部分,答案之一是“Y是X的直接依赖项”? 这是否意味着程序创建了该视图 这是完整的问题和答案 考虑这个场景:过程X引用基于表Z的视图Y。哪两条语句 是真的吗?(选择两个。) Y是一个被引用的对象 Y是X的直接依赖项。如果过程引用视图,则表示PL/SQL编译器已确定该过程以某种方式使用该视图 例如,以下过程引用了视
Y是X的直接依赖项。如果过程引用视图,则表示PL/SQL编译器已确定该过程以某种方式使用该视图 例如,以下过程引用了视图
v_some_view
,因此依赖于该视图:
PROCEDURE example (p_count OUT INTEGER)
IS
BEGIN
SELECT COUNT(*) INTO p_count FROM v_some_view;
END;
如果视图不存在,该过程将无效。如果我们删除该视图,该过程将不再有效,因为它将尝试从不存在的视图中进行选择。如果视图不存在,PL/SQL编译器无法编译此过程
视图的存在是不够的;它也必须是有效的。视图中的错误将导致过程无法编译
过程引用视图的唯一方法是使用视图使用SELECT
、INSERT
、UPDATE
、MERGE
或DELETE
语句。如果不执行立即执行,则无法在PL/SQL中创建视图,即使执行此操作,该过程也无法随后引用新创建的视图,因为该视图在编译时不存在
例如,如果my_view
不存在,则不会编译以下过程:
PROCEDURE invalid
IS
p_count INTEGER;
BEGIN
EXECUTE IMMEDIATE 'CREATE VIEW my_view AS SELECT * FROM DUAL';
SELECT COUNT(*) INTO p_count FROM my_view;
dbms_output.put_line('Count was ' || p_count);
END;
因此,考虑依赖关系的一种方式是“只有当X存在并且有效时,对象Y才能有效吗?”。如果这个问题的答案是肯定的,那么Y依赖于X
如果您可以访问Oracle数据库,请查看数据字典视图USER\u DEPENDENCIES
和ALL\u DEPENDENCIES
,以查看对象之间依赖关系的一些示例