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

Откуда: Нижний Новгород
Сообщений: 972
SELECT (dbo.igfEmplFromOrgStruct('APPS000095')) -- возврат 'APPS0000000313'
SELECT * FROM dbo.igfEmployerFIO('APPS0000000313')

SELECT * FROM dbo.igfEmployerFIO(dbo.igfEmplFromOrgStruct('APPS000095')) -- грит что ошибка. где можно подправить?! Важно - именно такая вложенная конструкция необходима
6 окт 03, 15:18    [365208]     Ответить | Цитировать Сообщить модератору
 Re: Как правильно влодить ф-цию!?  [new]
Crip
Member

Откуда:
Сообщений: 2490
Текст функции хорошо бы привести. Хотя и без этого понятно что функция не объявлена как INLINE
6 окт 03, 15:20    [365214]     Ответить | Цитировать Сообщить модератору
 Re: Как правильно влодить ф-цию!?  [new]
Crip
Member

Откуда:
Сообщений: 2490
Надо было уточнить
Вот INLINE функция
CREATE FUNCTION SalesByStore (@storeid varchar(30))

RETURNS TABLE
AS
RETURN (SELECT title
FROM sales s, titles t
WHERE s.stor_id = @storeid and
t.title_id = s.title_id)

А вот скалярная функция
CREATE FUNCTION SalesByStore (@storeid varchar(30))

RETURNS varchar
AS
RETURN (SELECT top 1 title
FROM sales s, titles t
WHERE s.stor_id = @storeid and
t.title_id = s.title_id)

Разницу улавливаешь?
6 окт 03, 15:24    [365235]     Ответить | Цитировать Сообщить модератору
 Re: Как правильно влодить ф-цию!?  [new]
Hel!Riser
Member

Откуда: Нижний Новгород
Сообщений: 972
ага. моя первая возвращает CHAR(14), фторая таблицу
вота обе
CREATE FUNCTION igfEmplFromOrgStruct (@tcOrgStructID CHAR(10))  

RETURNS CHAR(14) AS
BEGIN

DECLARE @cReturn CHAR(14)
SELECT @cReturn=EmployerID FROM OrgStruct WHERE OrgStructID=@tcOrgStructID
RETURN @cReturn

END

CREATE FUNCTION igfEmployerFIO(@tcEmployerID CHAR(14))  


RETURNS @ttReturn TABLE (FIODlg VARCHAR(200), Family VARCHAR(20), FirsName VARCHAR(20), LastName VARCHAR(20),
OSName VARCHAR(150)) AS
BEGIN
......
END
6 окт 03, 15:44    [365302]     Ответить | Цитировать Сообщить модератору
 Re: Как правильно влодить ф-цию!?  [new]
Crip
Member

Откуда:
Сообщений: 2490
Хм... И что за ошибка?
6 окт 03, 16:13    [365386]     Ответить | Цитировать Сообщить модератору
 Re: Как правильно влодить ф-цию!?  [new]
Hel!Riser
Member

Откуда: Нижний Новгород
Сообщений: 972
Incorrect syntax near '.'.
6 окт 03, 16:16    [365394]     Ответить | Цитировать Сообщить модератору
 Re: Как правильно влодить ф-цию!?  [new]
Glory
Member

Откуда:
Сообщений: 104760
У inline функций входными параметрами могут служить только константы или переменные.
6 окт 03, 16:19    [365403]     Ответить | Цитировать Сообщить модератору
 Re: Как правильно влодить ф-цию!?  [new]
Crip
Member

Откуда:
Сообщений: 2490
Сорри, не внимательно прочел
Glory уже поправил
@parameter_name

Is a parameter in the user-defined function. One or more parameters can be declared in a CREATE FUNCTION statement. A function can have a maximum of 1,024 parameters. The value of each declared parameter must be supplied by the user when the function is executed, unless a default for the parameter is defined. When a parameter of the function has a default value, the keyword "default" must be specified when calling the function in order to get the default value. This behavior is different from parameters with default values in stored procedures in which omitting the parameter also implies the default value.

Specify a parameter name using an at sign (@) as the first character. The parameter name must conform to the rules for identifiers. Parameters are local to the function; the same parameter names can be used in other functions. Parameters can take the place only of constants; they cannot be used in place of table names, column names, or the names of other database objects.
6 окт 03, 16:21    [365412]     Ответить | Цитировать Сообщить модератору
Все форумы / Microsoft SQL Server Ответить