ALTER VIEW在Sybase ASE数据库
问题描述:
IM使用Sybase ASE数据库,我用下面的SQL数据库中创建一个视图:ALTER VIEW在Sybase ASE数据库
create view dbo.vb_user_list (db_name, user_email, user_sex) as
select 'db01' ,
email,
sex
from db01.dbo.emp_hdr
where enable = 1
union
select 'db02' ,
email,
sex
from db02.dbo.emp_hdr
where enable = 1
这种观点从表演和DB01 DB02所有的用户,和它的作品。
但是当我想改变这种看法,显示从DB03还包括用户,我做一个SQL象下面这样:
alter view dbo.vb_user_list (db_name, user_email, user_sex) as
select 'db01' ,
email,
sex
from db01.dbo.emp_hdr
where enable = 1
union
select 'db02' ,
email,
sex
from db02.dbo.emp_hdr
where enable = 1
union
select 'db03' ,
email,
sex
from db03.dbo.emp_hdr
where enable = 1
,但它与下面的错误消息:
[ALTER - 0 rows, 0.002 secs] [Code: 102, SQL State: 37000] Incorrect syntax near '('.
我不不明白为什么,有人可以帮忙吗?
答
你还没有说你的ASE版本,所以有一对夫妇的答案:
为ASE版本到15.7,您需要删除,然后(重新)创建PROC;您需要确保在删除视图之前获取权限和任何审核设置的副本,因为这些设置在重新创建视图时也需要重新创建。
for ASE 16.x,you可以使用
create or replace view
命令;虽然这是基本相同drop view
+create view
的一个好处是,任何设置(如权限,审核设置)将留在原地
如果你只是查询选择“DB03”会发生什么, 电子邮件, 性别 from db03.dbo.emp_hdr where enable = 1 –
@MrSlim只是试过了,没问题,它的工作原理。 – yab
删除视图并创建一个新视图? – sibert