由于修改了表结构,导致视图状态变成了InValid
但是我用alter VIEW v_test COMPILE,执行成功,但是视图还是无效
一定要用这个视图的DDL语句重新执行才能有效请问这是为什么呢?为什么有的视图用Compile就可以成功,有的就不行?
在什么情况下会出现这种问题呢?
但是我用alter VIEW v_test COMPILE,执行成功,但是视图还是无效
一定要用这个视图的DDL语句重新执行才能有效请问这是为什么呢?为什么有的视图用Compile就可以成功,有的就不行?
在什么情况下会出现这种问题呢?
我也遇到过类似楼主的问题,不过那是存储过程
然后 alter VIEW v_test COMPILE 就是不能成功
而用Create or Replace View v_test 的方式就完全没有问题to:5楼,alter VIEW v_test COMPILE
这种命令是存在的另外2楼的方法还没有机会去测试
樓主是不是按SQL的習慣來學Oracle了?兩者是有區別的.
我相信10g应该也会支持:
alter VIEW v_test COMPILE
这种语法吧?反正至少9i是支持:alter VIEW v_test COMPILE 大家没有测试,没有发言权,请测试再说话,谢谢!
用alter VIEW v_test COMPILE 基本都能变成有效
只有极少数情况不能成功,我还不清楚具体原因另外,下面是生成所有无效的视图或存储过程等的重建语句:
select 'alter ' ||
DECODE(object_type, 'PACKAGE BODY', 'PACKAGE', OBJECT_TYPE) || ' ' ||
object_name || ' COMPILE ' ||
DECODE(object_type, 'PACKAGE BODY', ' BODY', ' ')
from user_objects a
where object_type in
('PROCEDURE', 'PACKAGE', 'FUNCTION', 'PACKAGE BODY', 'VIEW')
and a.status <> 'VALID'