Добро пожаловать в форум, Guest  >>   Войти | Регистрация | Поиск | Правила | В избранное | Подписаться
Все форумы / Microsoft SQL Server Новый топик    Ответить
 табличная функция  [new]
vah
Member

Откуда:
Сообщений: 2694
Скажите пожалуйста,



CREATE FUNCTION sel_user_only_base
(

)
RETURNS 
@t TABLE 
(
	[User_ID] [int] NOT NULL,
	[UserName] [nvarchar](50) NOT NULL,
	[Sector_ID] [int] NOT NULL,
	[FullName] [nvarchar](250) NOT NULL,
	[email] [varchar](250) NULL	
)
AS
BEGIN
	declare @tbl TABLE(UserName varchar(100),GroupName varchar(50),LoginName varchar(100),DefDBName varchar(50),DefSchemaName varchar(50),UserID varchar(50),S varbinary(max))

	insert into @tbl(UserName,GroupName,LoginName,DefDBName,DefSchemaName,UserID,S)
	exec sp_helpuser 

	insert into @t(User_ID, UserName, Sector_ID, FullName, email)
	select User_ID, UserName, Sector_ID, FullName, email
	from dbo.sel_users where UserName in (select UserName from @tbl)

	RETURN 
END


возвращает

Сообщение 443, уровень 16, состояние 14, процедура sel_user_only_base, строка 19
Недопустимое использование оператора с побочным действием или зависимого от времени в "INSERT EXEC" в функции.


Как обойти?



Заранее благодарен.
8 фев 13, 10:35    [13895593]     Ответить | Цитировать Сообщить модератору
 Re: табличная функция  [new]
alexeyvg
Member

Откуда: Moscow
Сообщений: 31948
vah
Как обойти?
Никак, в функциях использование insert...exec запрещено.
Нужно отказаться либо от функции, либо от insert...exec
8 фев 13, 10:41    [13895636]     Ответить | Цитировать Сообщить модератору
 Re: табличная функция  [new]
vah
Member

Откуда:
Сообщений: 2694
alexeyvg
vah
Как обойти?
Никак, в функциях использование insert...exec запрещено.
Нужно отказаться либо от функции, либо от insert...exec


это они зря, жалко штоль?
8 фев 13, 10:45    [13895666]     Ответить | Цитировать Сообщить модератору
 Re: табличная функция  [new]
Гость333
Member

Откуда:
Сообщений: 3683
vah
Как обойти?

Всё, что связано с @tbl — убрать.

select UserName from @tbl
— заменить на:
select u.name from sys.database_principals u where u.type <> 'R'

Функцию из multistatement переделать в inline.
8 фев 13, 11:00    [13895803]     Ответить | Цитировать Сообщить модератору
 Re: табличная функция  [new]
vah
Member

Откуда:
Сообщений: 2694
Гость333,
Спасибо!
8 фев 13, 11:09    [13895879]     Ответить | Цитировать Сообщить модератору
Все форумы / Microsoft SQL Server Ответить