2017-08-12 138 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