-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