【发布时间】:2014-09-04 03:54:31
【问题描述】:
我想在我的函数中创建视图,每当我想创建我的视图时,我只是引用函数并调用它。
我写了这段代码,但出现错误:
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 ;
【问题讨论】:
-
您将无法在函数内创建视图 (msdn.microsoft.com/en-gb/library/ms191320.aspx)。要在存储过程中执行此操作,您将需要使用动态 SQL。 stackoverflow.com/questions/7712702/…
-
您无法在用户定义函数中创建 sql server 对象,请查看此处了解更多关于
Create User-defined Functions Limitations -
为什么你需要一个函数来创建视图?!?!?只需在 SQL Server Management Studio 中创建视图并使用它!不断地丢弃和重新创建它是没有意义的......
标签: sql sql-server