我試圖通過執行ALTER VIEW
語句來更改存儲在視圖中的列的日期格式,但它不起作用,我不知道爲什麼。SQL Server:視圖或函數包含一個自引用。視圖或函數不能直接或間接引用自己
我的查詢:
ALTER VIEW v_cust_invoices
AS
SELECT
FORMAT(INV_DATE,'MM-dd-yy') as INV_DATE
FROM
v_cust_invoices
我總是得到錯誤
視圖或函數 'v_cust_invoices' 包含自引用。視圖或函數不能引用自身直接或間接
我試圖改變INV_DATE
到mm-dd-yy
的日期格式(這是目前yy-mm-dd
)。有人能幫我嗎?不知道我做錯了什麼。
編輯:如果我做
ALTER VIEW v_cust_invoices
AS
SELECT FORMAT(INV_DATE,'MM-dd-yy') as INV_DATE
FROM INVOICE
相反,它會刪除所有的列,除了INV_DATE
。
視圖定義:
SET ANSI_NULLS ON
GO
SET QUOTED_IDENTIFIER ON
GO
CREATE VIEW [dbo].[v_cust_invoices] AS
SELECT
CUSTOMER.CUST_NUM, CUST_LNAME,
CUST_BALANCE, INV_NUM, INV_DATE, INV_AMOUNT
FROM
CUSTOMER, INVOICE
GO
刪除並重新創建視圖。在SQL企業管理器中打開它,或將其編寫爲Alter,修改定義中的類型,然後執行它。原始視圖不會引用它,它必須引用其他視圖或表格 –
我不確定我是否理解。一切都很好,我只是有一些錯誤的查詢。 – inaprniac
視圖只能處理和生成* tables *中的數據,這個視圖應該從哪裏獲取數據?在視圖定義中沒有對錶的引用。看起來坐在視圖的* current *定義上,在它的FROM子句中。您將看到對* table *或某個* other *視圖的引用。 –