Benutzer mit den meisten Antworten
CREATE OR REPLACE VIEW

Frage
-
Hallo an alle,
ich habe folgende Anweisung geschrieben die prüfen soll ob ein View schon existiert und danach interagieren.
USE TESTDB GO IF OBJECT_ID('[BL].[Zieltabelle]') IS NULL BEGIN CREATE VIEW [BL].[Zieltabelle] AS SELECT *FROM dbo.Ausgangstabelle END ELSE BEGIN ALTER VIEW [BL].[Zieltabelle] AS SELECT *FROM dbo.Ausgangstabelle END
Jedoch bekomme ich immer die Fehlermeldung das ein Fehler bei VIEW-Schlüsselwort vorherrscht.
Ich versehe aber nicht warum! Das Schema BL existiert!
Was mache ich denn falsch?
- Bearbeitet Toot_Braunstein Mittwoch, 1. August 2018 06:21
Antworten
-
Hi,
ab SQL Server 2016 SP 1 kannst Du dafür auch gleich CREATE OR ALTER verwenden.
USE TESTDB GO CREATE OR ALTER VIEW [BL].[Zieltabelle] AS SELECT * FROM dbo.Ausgangstabelle
Falls Du noch mit einer früheren Version arbeitest, probier es mal so:
IF OBJECT_ID( 'schema.NameDerView' ) IS NOT NULL BEGIN DROP VIEW schema.NameDerView; END GO CREATE VIEW schema.NameDerView AS SELECT ... FROM ... GO
Gruß, Stefan
Microsoft MVP - Visual Developer ASP/ASP.NET (2001-2018)
https://www.asp-solutions.de/ - IT Beratung, Softwareentwicklung, Remotesupport- Als Antwort vorgeschlagen Dimitar DenkovMicrosoft contingent staff, Administrator Dienstag, 7. August 2018 08:10
- Als Antwort markiert Dimitar DenkovMicrosoft contingent staff, Administrator Freitag, 17. August 2018 13:28
-
Aber kannst du mir auch sagen warum mein Skript nicht funktioniert? Das sollte doch so richtig sein oder?
Nö, ist es nicht. CREATE, ALTER und einige weitere Statements müssen das erste bzw. einzige Statement in der Abfolge sein. Daher kannst Du diese DDL Statements auch nicht in einen BEGIN END Block einbauen.
Weitere Möglichkeiten findest Du bspw. hier:
Gruß, Stefan
Microsoft MVP - Visual Developer ASP/ASP.NET (2001-2018)
https://www.asp-solutions.de/ - IT Beratung, Softwareentwicklung, Remotesupport- Als Antwort vorgeschlagen Dimitar DenkovMicrosoft contingent staff, Administrator Dienstag, 7. August 2018 08:10
- Als Antwort markiert Dimitar DenkovMicrosoft contingent staff, Administrator Freitag, 17. August 2018 13:28
Alle Antworten
-
Hi,
ab SQL Server 2016 SP 1 kannst Du dafür auch gleich CREATE OR ALTER verwenden.
USE TESTDB GO CREATE OR ALTER VIEW [BL].[Zieltabelle] AS SELECT * FROM dbo.Ausgangstabelle
Falls Du noch mit einer früheren Version arbeitest, probier es mal so:
IF OBJECT_ID( 'schema.NameDerView' ) IS NOT NULL BEGIN DROP VIEW schema.NameDerView; END GO CREATE VIEW schema.NameDerView AS SELECT ... FROM ... GO
Gruß, Stefan
Microsoft MVP - Visual Developer ASP/ASP.NET (2001-2018)
https://www.asp-solutions.de/ - IT Beratung, Softwareentwicklung, Remotesupport- Als Antwort vorgeschlagen Dimitar DenkovMicrosoft contingent staff, Administrator Dienstag, 7. August 2018 08:10
- Als Antwort markiert Dimitar DenkovMicrosoft contingent staff, Administrator Freitag, 17. August 2018 13:28
-
Aber kannst du mir auch sagen warum mein Skript nicht funktioniert? Das sollte doch so richtig sein oder?
Nö, ist es nicht. CREATE, ALTER und einige weitere Statements müssen das erste bzw. einzige Statement in der Abfolge sein. Daher kannst Du diese DDL Statements auch nicht in einen BEGIN END Block einbauen.
Weitere Möglichkeiten findest Du bspw. hier:
Gruß, Stefan
Microsoft MVP - Visual Developer ASP/ASP.NET (2001-2018)
https://www.asp-solutions.de/ - IT Beratung, Softwareentwicklung, Remotesupport- Als Antwort vorgeschlagen Dimitar DenkovMicrosoft contingent staff, Administrator Dienstag, 7. August 2018 08:10
- Als Antwort markiert Dimitar DenkovMicrosoft contingent staff, Administrator Freitag, 17. August 2018 13:28