2016-07-13 9 views
0

私は構文はそれがSQL Serverであることを示しているキーワード「表示」このSQL Serverビューを作成する際のエラーは何ですか?

if object_id('my_view') is null 
BEGIN 
create view dbo.my_view as 
select * from dbo.my_table; 
END 
+0

代替方法としては、ビューが存在する場合は条件付きで削除してから、条件付きである必要はなく、最新バージョンのビューを保証することもできます。若者の答えによれば、*は良い考えではありません。 – StuartLC

+0

@StuartLCユーザーにカスタム権限が設定されている場合は、この方法を「DROP-CREATE」に設定することはお勧めできません。ドロップして再作成すると、権限を再作成する必要があります。 'CREATE-ALTER'はより安全で簡単です。 – lad2025

答えて

3

近くのエラー正しくない構文を取得しています。あなたは、動的SQLを使用することができます。ビューは、現在のデータベース内に作成することができ

IF OBJECT_ID('my_view') IS NULL 
BEGIN 
EXEC('CREATE VIEW dbo.my_view 
     AS 
     SELECT * 
     FROM dbo.my_table;'); 
END; 

LiveDemo

ポイントがCREATE VIEWということです。 CREATE VIEWは、クエリバッチの最初の文でなければなりません。ビューは最大1,024の列を持つことができます。

動的SQLを使用して新しい「コンテキスト」を作成する方法の1つは、DDLがバッチ内の最初の文です。

また、すべての列を明示的に指定することを強くお勧めします。 SELECT *を使用するのはよくあるパターンです。

if object_id('my_view') is null 
drop view my_view 
go 
create view dbo.my_view as 
select * from dbo.my_table; 
go 

あなたは本当にいずれかのビューを削除したくない場合があります。

1

そのようにやってのあなたの理由によって、あなたはそれを私が過去に使用しているこのように、行うことができるかもしれません理由や他の、しかしこれは私のために同様の目標のために動作します。

編集:@StuartLCによるNinja'dは、彼の提案を盗もうとしていませんでした。

関連する問題