按照這篇
我不確定為什么這是因為 create view 陳述句似乎正確地用 begin 和 end 陳述句包裝:

uj5u.com熱心網友回復:
CREATE VIEW不能在里面IF/BEGIN邏輯;它必須是批處理中的唯一陳述句。典型的解決方法是創建這樣的腳本:
IF OBJECT_ID(N'dbo.viewname', N'V') IS NULL
BEGIN
EXEC sys.sp_executesql N'CREATE VIEW dbo.viewname AS SELECT 1;';
END
GO
ALTER VIEW dbo.viewname
AS
... real view code ...
在較新版本的 SQL Server 中,您可以這樣做:
CREATE OR ALTER VIEW dbo.viewname
AS
... real view code ...
但這仍然必須生活在自己的批次中。這意味著它不能在里面,除非你對整個視圖IF/BEGIN使用動態 SQL 。例如:
IF (some condition)
BEGIN
EXEC sys.sp_executesql N'CREATE VIEW dbo.viewname
AS
... all that view code ...;';
END
您是否能夠從 EF 核心生成任何這些表單,我只是不知道。有時我們期望 ORM 絕對可以做所有事情,但通常它只能處理很小的子集。
無論如何,我不確定您要達到的邏輯。(如果某個表中不存在一行,請創建一個視圖?這只會作業一次。)
轉載請註明出處,本文鏈接:https://www.uj5u.com/qianduan/467834.html
上一篇:將驅動程式更新到10.2后無法從JetbrainsRider連接到SQLServer
下一篇:希望SQL陳述句回傳所有列
