Хранимая процедура присоединения к табличной функции? - PullRequest
1 голос
/ 11 августа 2011

У меня есть хранимая процедура, которая должна выполнить внутреннее соединение с функцией, которая возвращает таблицу. Попытка назвать это так:

INNER JOIN [dbo].[udf_GetBillingInfo(@QuoteID)] billInfo ON quotes.QuoteID = billInfo.QuoteID

выдает ошибку invalid object name dbo.udf_GetBillingInfo(@QuoteID)

Учитывая мои требования, я не думаю, что смогу просто превратить функцию в представление, поскольку в ней есть небольшая часть логики. Как я могу присоединиться к результату? Придется ли мне присваивать результат функции переменной или чему-то в этом роде?

Ответы [ 3 ]

5 голосов
/ 11 августа 2011

Ваша проблема в квадратных скобках - [dbo].[udf_GetBillingInfo(@QuoteID)] - они заключают в кавычки все, что находится внутри, в качестве имени функции.

Измените его на:

[dbo].udf_GetBillingInfo(@QuoteID)
0 голосов
/ 11 августа 2011

Вот (тупой) пример присоединения к TVF, надеюсь, это поможет!

CREATE FUNCTION MyFunc ( @p1 int ) RETURNS TABLE 
AS
RETURN 
(
        SELECT @p1 AS a 
        union 
        SELECT @p1 +1 AS a 
        union 
        SELECT @p1 +2 AS a
)
GO

declare @t table (c int) 
insert @t (c) values(1),(2),(3),(4)

select * 
from @t t 
left join dbo.MyFunc(1) f on  t.c = f.a
0 голосов
/ 11 августа 2011

Можете ли вы написать свою функцию как табличную функцию? Я думаю, что вы можете найти ответ здесь

tsql возврат таблицы из функции или хранимой процедуры

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...