-2
我想在我的函數內部創建視圖,並且每當我想創建我的視圖時,我只需引用函數並調用它。SQL Server:在用戶定義函數中聲明視圖
我寫了這個代碼,但我得到了一個錯誤:
create FUNCTION [dbo].[testFunc]()
RETURNS bigint
AS
BEGIN
IF OBJECT_ID ('dbo.r_Sales01_Requests__Duplicates', 'V') IS NOT NULL
DROP VIEW dbo.r_Sales01_Requests__Duplicates ;
go
create view r_Sales01_Requests__Duplicates (
CompanyID
,Branch
,Year
,VoucherType,VoucherNumber
,Date_Persian
,Row) as
select
CompanyID
,Branch
,Year
,VoucherType
,VoucherNumber
,Date_Persian
,Row
from t_SalesRequests
group by CompanyID, Branch, Year, VoucherType, VoucherNumber, Date_Persian, Row
having count(*)>1
return
END
注:對我來說,有它在創建函數以下部分是非常重要的。
IF OBJECT_ID ('dbo.r_Sales01_Requests__Duplicates', 'V') IS NOT NULL
DROP VIEW dbo.r_Sales01_Requests__Duplicates ;
您將無法在函數內部創建一個視圖(http://msdn.microsoft.com/en-gb/library/ms191320的.aspx)。要在存儲過程中執行此操作,您需要使用動態SQL。 http://stackoverflow.com/questions/7712702/creating-a-view-using-stored-procedure – Laurence 2014-09-03 19:02:54
你不能在一個用戶定義函數內部創建sql服務器對象看看這裏閱讀更多關於['創建用戶定義函數限制'](http://msdn.microsoft.com/en-gb/library/ms191320.aspx) – 2014-09-03 19:05:29
***爲什麼***你需要一個函數來創建視圖?!?!?只需**在SQL Server Management Studio中創建視圖並使用它!沒有任何一點在不斷下降和重新創造它... – 2014-09-03 19:51:14