日期:2014-05-17  浏览次数:20992 次

非常简单的一条sql语句
alter view teacher('姓名','分数','等级') as select a.tname,b.score,b.grade from teacher2 a,evaluate b where a.tno=b.tno
我这里想修改视图teacher,它原先只有姓名和分数两列,现在我想在增加一列等级,但是我用上面这条语句修改它的时候报错了。错误为:选项缺失或无效。求解

------解决方案--------------------
使用ALTER VIEW还是有几个需要注意的地方。如果你的视图访问新的对象,那么该视图的许可必须和新对象的许可一样,否则视图不能成功访问新对象。
  
  此外,修改视图的用户必须拥有与该视图有关的表格、视图、表格值函数的ALTER VIEW和SELECT许可以及对该视图调用的标量函数(scalar-valued function)的EXECUTE许可。
  
  你还需要牢记一点:如果你最初用WITH ENCRYPTION或者CHECK OPTION创建的视图,你必须在ALTER VIEW语句后面再次包含这些参数。也就是说,如果你修改了视图,那么你必须重新设置WITH ENCRYPTION和CHECK OPTION。这些参数不会自动保留下来。
------解决方案--------------------
建议你还是先把视图删掉,然后再建。因为,视图本来就是对表的映射,自己本身并不保存数据。
------解决方案--------------------
http://docs.oracle.com/cd/B28359_01/server.111/b28286/statements_4004.htm