41

最初にビューをドロップしてから作成するスクリプトがあります。テーブルを削除する方法を知っています:

IF EXISTS (SELECT * FROM sys.tables WHERE name = 'table1' AND type = 'U') DROP TABLE table1;

ビューについても同じことをしました:

IF EXISTS (SELECT * FROM sys.views WHERE name = 'view1' AND type = 'U') DROP VIEW view1;
create view1 as(......)

そして、エラーが発生しました:

'CREATE VIEW' は、クエリ バッチの最初のステートメントである必要があります。

4

4 に答える 4

104

既存の構文が間違っているため、以下のように DDL を go で区切る必要があります

if exists(select 1 from sys.views where name='tst' and type='v')
drop view tst;
go

create view tst
as
select * from test

以下のようにobject_idを使用して、存在テストを確認することもできます

if object_id('tst','v') is not null
drop view tst;
go

create view tst
as
select * from test

SQL 2016 では、以下の構文を使用して削除できます

Drop view  if exists dbo.tst

SQL2016 CU1 から、以下を行うことができます

create or alter view vwTest
as
 select 1 as col;
go
于 2016-03-21T14:38:38.680 に答える