sql 建立视图中 一直遇到Create view必须是批处理中仅有的语句报错

Posted

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了sql 建立视图中 一直遇到Create view必须是批处理中仅有的语句报错相关的知识,希望对你有一定的参考价值。

Create view 二十二号楼宿舍信息表
As
Select *
From 宿舍表
Where 楼号='22'
select * from 二十二号楼宿舍信息表
如果把最后一行去掉,则可以运行。为什么?

Create view 二十二号楼宿舍信息表
As
Select *
From 宿舍表
Where 楼号='22'
这个是可以的。为什么?????

视图中只能包含一条SQL 查询语句,你的第一种写法包含了2条查询语句,所以无法运行。追问

O(∩_∩)O谢谢

参考技术A 这是两句sql,你第一句完了需要加一个";",不然会不认识追问

追答

;是加载where 专业 =‘物流管理’后的,不是最后

Oracle视图 create View

视图是一种虚表,使用CREATE VIEW语句来定义视图,该视图是基于一个或多个表或视图的逻辑表。一个视图本身不包含任何数据, 视图所基于的表称为基表。

视图就相当于一条select 语句,定义了一个视图就是定义了一个sql语句, 视图不占空间,使用视图不会提高性能,但是能简化sql语句 。

创建视图:
create view 视图名;

如:

create or replace view  v_test  as select * from test where age=10;
create or replace: 如果view存在就覆盖,不存在才创建。

删除视图: 

 

drop view 视图名; 

权限控制:

要在您自己的模式中创建视图,您必须具有CREATE VIEW系统特权。
要在其他用户的模式中创建视图,您必须具有CREATE ANY VIEW系统特权。
包含该视图的模式的所有者必须具有从视图所基于的所有表或视图中选择,插入,更新或删除行所必需的权限。

详细语句解析:

CREATE [OR REPLACE] [FORCE|NOFORCE] VIEW view
[(alias[, alias]...)]
AS subquery
[WITH CHECK OPTION [CONSTRAINT constraint]]
[WITH READ ONLY [CONSTRAINT constraint]];

其中:

with read only视图只读约束 

with check option 不允许插入与where条件不符的记录,类似于check约束的功能. 

通过视图修改数据:

CREATE VIEW clerk AS SELECT employee_id, last_name, department_id, job_id FROM employees   

   WHERE job_id = \'PU_CLERK\' or job_id = \'SH_CLERK\' or job_id = \'ST_CLERK\';

使用视图修改基表的数据,只有员工的ID,姓氏,部门号码和职位在该视图中可见,并且这些列只能在雇员是职员的行中更新:

UPDATE clerk SET job_id = \'PU_MAN\' WHERE employee_id = 118;

有限制的修改:

连接视图是其视图子查询包含连接的视图。如果联接中至少有一列具有唯一索引,则可以在联接视图中修改一个基表。

CREATE VIEW locations_view AS

SELECT d.department_id, d.department_name, l.location_id, l.city 

FROM departments d, locations l WHERE d.location_id = l.location_id;

新增记录  INSERT INTO locations_view VALUES(999, \'Entertainment\', 87, \'Roma\'); 

系统返回:ERROR at line 1:

ORA-01776: cannot modify more than one base table through a join view

可以查询系统表USER_UPDATABLE_COLUMNS,查看连接视图中的列是否可更新。

SELECT column_name, updatable  FROM user_updatable_columns

WHERE table_name = \'LOCATIONS_VIEW\'    ORDER BY column_name, updatable;

改成如下语句,操作成功

INSERT INTO locations_view (department_id, department_name) VALUES (999, \'Entertainment\');

 

1 row created.

 

 

 

参考文献

     oracle官网的Oracle11G-en-US.pdf

 

以上是关于sql 建立视图中 一直遇到Create view必须是批处理中仅有的语句报错的主要内容,如果未能解决你的问题,请参考以下文章

Oracle视图 create View

SQL Server 视图的创建- (create view必须是批处理中仅有的语句)

SQL基础语法—create view语句

sql server 2008数据库提示错误create view必须是批处理中仅有的语句

创建视图sql

Xcode4.2怎么设置 view 视图的大小,使它按照ipad的实际尺寸显示?