2017-08-12 302 views
1

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 '('. 

我不不明白为什么,有人可以帮忙吗?

+0

如果你只是查询选择“DB03”会发生什么, 电子邮件, 性别 from db03.dbo.emp_hdr where enable = 1 –

+0

@MrSlim只是试过了,没问题,它的工作原理。 – yab

+0

删除视图并创建一个新视图? – sibert

回答

1

你还没有说你的ASE版本,所以有一对夫妇的答案:

  • 为ASE版本到15.7,您需要删除,然后(重新)创建PROC;您需要确保在删除视图之前获取权限和任何审核设置的副本,因为这些设置在重新创建视图时也需要重新创建。

  • for ASE 16.x,you可以使用create or replace view命令;虽然这是基本相同drop view + create view的一个好处是,任何设置(如权限,审核设置)将留在原地

1

您必须先删除然后(重新)创建您的视图。 Alter View不受Adaptive Server Enterprise支持。

有关更多信息,请参阅here