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

Откуда:
Сообщений: 19
Добрый день, прошу Вас разрешить проблему

имеем процедуру InsertEvent

create procedure InsertEvent(@text nvarchar(max), @type tinyint, @level tinyint, @label varchar(32) = null)
as
	insert into $(Table) (Label, Text, Type, Level) values (@label, @text, @type, @level)


имеем функции в схеме const

create function const.Information() returns tinyint begin return 1 end

create function const.Low() returns tinyint begin return 1 end


при создании следующей процедуры - получаем ошибку

create procedure LowInformationEvent(@text nvarchar(max), @label varchar(32) = null) 
as 
	exec Event @text, const.Information(), const.Low(), @label
go


Incorrect syntax near '.'


В чём может быть причина ошибки?
7 апр 12, 19:06    [12381028]     Ответить | Цитировать Сообщить модератору
 Re: Как получить значение inline функции в вызове stored процедуры  [new]
Хорев Иван
Member

Откуда:
Сообщений: 19
В последнем листинге вызывается процедура InsertEvent вместо Event
7 апр 12, 19:09    [12381036]     Ответить | Цитировать Сообщить модератору
 Re: Как получить значение inline функции в вызове stored процедуры  [new]
Knyazev Alexey
Member

Откуда: Екб -> Мск
Сообщений: 10233
Блог
а так:


create procedure LowInformationEvent(@text nvarchar(max), @label varchar(32) = null) 
as 
declare @a tinyint
         , @b tinyint
select @a = const.Information(), @b = const.Low()
exec Event @text, @a, @b, @label
go
7 апр 12, 19:12    [12381050]     Ответить | Цитировать Сообщить модератору
 Re: Как получить значение inline функции в вызове stored процедуры  [new]
iap
Member

Откуда: Москва
Сообщений: 47145
В качестве значения параметра процедуры можно задавать переменную или литеральное значение
(например, 1, раз функция возвращает единицу).
Так что придется объявить переменную, сохранить в ней результат вызова функции,
и в вызове процедуры использовать эту переменную.
7 апр 12, 19:18    [12381067]     Ответить | Цитировать Сообщить модератору
 Re: Как получить значение inline функции в вызове stored процедуры  [new]
iap
Member

Откуда: Москва
Сообщений: 47145
Хорев Иван
Как получить значение inline функции в вызове stored процедуры
Скалярной inline функции не бывает!
7 апр 12, 19:42    [12381136]     Ответить | Цитировать Сообщить модератору
 Re: Как получить значение inline функции в вызове stored процедуры  [new]
Хорев Иван
Member

Откуда:
Сообщений: 19
для Knyazev Alexey и iap
да, так и реализовал, так и работает, только хотелось лакончинее. Спасибо Вам за ответ.
7 апр 12, 19:53    [12381163]     Ответить | Цитировать Сообщить модератору
Все форумы / Microsoft SQL Server Ответить