Я хочу создать представление внутри своей функции, и всякий раз, когда я хотел бы создать свой вид, я просто обращаюсь к функции и вызываю ее.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
Вы не можете создавать объекты sql-сервера внутри функции определения пользователя, посмотрите здесь, чтобы узнать больше о ['Создать пользовательские функции Ограничения'] (http://msdn.microsoft.com/en-gb/library/ms191320.aspx) –
*** ПОЧЕМУ *** Вам нужна функция для создания представления?!?!? Просто ** создайте представление ** в SQL Server Management Studio и используйте его! Нет смысла постоянно снижать и воссоздавать его ... –