Не могу придумать как передать параметр

DmitryGolubev
Дата: 28.02.2001 15:15:19
HI

Есть такой запрос
SELECT
*
FROM
tbProductsGroups as PG
WHERE
PG.ID IN ( SELECT ID FROM fncListParentGroups( PG.GroupID ) )

при исполнении выдает, ругается:
Incorrect syntax near '.' проблем в PG.GroupID

,если из PG.GroupID делаю GroupID
ругается:
'GroupID' is not a recognized OPTIMIZER LOCK HINTS option.

Я предполагаю, что он не может передать в функцию значение поля, то есть видимо надо сначала значение записать в какую то переменную, а только потом передать в функцию
Предложите какое нибудь решение

Спасибо
Alexander Rudenko
Дата: 28.02.2001 19:33:20
А что функция делает? Может можно просто обойтись вложенным запросом?
Garya
Дата: 28.02.2001 21:40:23
К имени функции нужно добавить DBO (или кто там ее создатель). Опускать владельца функции запрещено:
...WHERE
PG.ID IN ( SELECT ID FROM dbo.fncListParentGroups( PG.GroupID ) )
Dmitry+Golubev
Дата: 28.02.2001 23:01:36
Тело функции такое

RETURNS @LstGroups TABLE
( GroupID int PRIMARY KEY )
AS
BEGIN
DECLARE @ParentID int

WHILE ( @ParentID != 0 )
BEGIN
SELECT
@GroupID = GroupID
, @ParentID = ParentID
FROM
tbProductsGroups
WHERE
GroupID = @GroupID

INSERT @LstGroups VALUES ( @GroupID )

END

RETURN
END
GO

Насчет владельца опускать можно, но пробовал и так тоже не получается

Спасибо за поддержку
Fompro
Дата: 01.03.2001 22:26:30
Invoking User-Defined Functions That Return a Table Data Type:
When a user-defined function that returns a table is invoked in the FROM clause of a subquery, the function arguments cannot reference any columns from the outer query.
Alexch
Дата: 05.03.2001 17:36:19
1. В подзапросе FROM объвляет исходную таблицу, откуда идет выборка,
поэтому я всегда по своему их именую.
Получится следующее: ( SELECT aa.ID FROM fncListParentGroups( PG.GroupID ) as aa )

2. Из функции я не увидел, что возвращается поле с именем ID