Гость
Форумы / Microsoft SQL Server [игнор отключен] [закрыт для гостей] / Передать SELECT в табличную функцию в рамках непрерывного WITH / 6 сообщений из 6, страница 1 из 1
10.11.2021, 14:51
    #40110715
Mellok14
Гость
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Передать SELECT в табличную функцию в рамках непрерывного WITH
Добрый день, подскажите пожалуйста, есть табличная функция ниже. Ее результат я отправляю на join к другой таблице в длинном WITH. Но также эта таблица обращаеться к таблице [test_table1], которая должна быть результатом другого табличного выражения и как ее передать в табличную функцию я никак не понимаю.


Код: sql
1.
2.
3.
4.
5.
6.
7.
8.
9.
10.
11.
12.
13.
14.
15.
16.
17.
18.
19.
20.
21.
CREATE FUNCTION [dbo].[test_proc_2_test] (
  -- @groups dbo.table_groups READONLY
)
   RETURNS @tab1 TABLE (
   [Index] NVARCHAR(MAX),
   z_odometer_uom nvarchar(MAX),
   z_fuel_grp	bigint,
   z_fuel_len int,
   prev_grp bigint,
   z_fuel_grp_old bigint,
   i bigint
   )
   AS
   BEGIN

  --тут длинный код процедуры и в нем есть ссылка на таблицу 
    FROM  @groups [dbo].[test_table1]

   RETURN
   END
   GO




Я пробовал объявлять переменную и в нее записывать результат Select, после чего передавать в функцию. Но конструкция with не позволяем мне продолжить писать обобщенные табличные выражения после insert.
Код: sql
1.
2.
3.
4.
5.
6.
7.
8.
9.
10.
11.
12.
13.
14.
15.
16.
17.
18.
19.
20.
21.
22.
23.
24.
25.
26.
CREATE TYPE table_groups AS TABLE
(
   [Index] NVARCHAR(MAX),
   z_odometer_uom nvarchar(MAX),
   z_fuel_grp	bigint,
   z_fuel_len int,
   prev_grp bigint,
   z_fuel_grp_old bigint,
   prev_len bigint,
   prev_prev_grp bigint
);

DECLARE @groups table_groups 
with a as (
select *  from [dbo].[test_table1])
insert into @groups
select * from a,
--и вот тут мне нужно вызвать функцию и передать ей переменную,
--но я уже сделал insert и прервал WITH
b as (
select * from [dbo].[test_proc_2_test](@groups)
),
c as (
select * from b left join ......)
..............
..............



Как мне в итоге не разрывая with передать таблицу "a" в функцию?
Заранее благодарю за помощь.
...
Рейтинг: 0 / 0
10.11.2021, 16:13
    #40110784
Владислав Колосов
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Передать SELECT в табличную функцию в рамках непрерывного WITH
Mellok14,

у Вас когнитивный диссонанс, а - это запрос, а не таблица. Чтобы что-то куда-то передать, надо поместить результат запроса в таблицу.
...
Рейтинг: 0 / 0
10.11.2021, 17:17
    #40110820
Mellok14
Гость
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Передать SELECT в табличную функцию в рамках непрерывного WITH
Владислав Колосов,

Возможно я некорректно выразился.
Моя задача перезать результат запроса в функцию не сохраняя ее в постоянную таблицу (И при этом не прерывая WITH).
Если это возможно.
Сейчас реализовал реализовал через переменную, но при этом приходиться разрывать WITH.
...
Рейтинг: 0 / 0
10.11.2021, 18:38
    #40110836
alexeyvg
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Передать SELECT в табличную функцию в рамках непрерывного WITH
Mellok14
при этом приходиться разрывать WITH
Что вы подразумеваете под "разрывать запрос"?
...
Рейтинг: 0 / 0
10.11.2021, 23:21
    #40110908
Владислав Колосов
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Передать SELECT в табличную функцию в рамках непрерывного WITH
Mellok14,

авторпереlать результат запроса в функцию не сохраняя ее в постоянную таблицу
Чудес не бывает, результат запроса необходимо где-то сохранить, чтобы передать в качестве параметра.

Однако, можно использовать выражение CROSS APPLY для того, чтобы к каждой строке результата была бы применена функция. Мне кажется, что вы пытаетесь скрестить ежа и ужа не до конца понимая суть того, что на самом деле необходимо сделать.
...
Рейтинг: 0 / 0
11.11.2021, 12:53
    #40110993
Mellok14
Гость
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Передать SELECT в табличную функцию в рамках непрерывного WITH
Владислав Колосов,

Пожалуй Вы правы, в принципе нужжный итог я получил. Спасибо за ответ.
...
Рейтинг: 0 / 0
Форумы / Microsoft SQL Server [игнор отключен] [закрыт для гостей] / Передать SELECT в табличную функцию в рамках непрерывного WITH / 6 сообщений из 6, страница 1 из 1
Целевая тема:
Создать новую тему:
Автор:
Найденые пользователи ...
Разблокировать пользователей ...
Читали форум (0):
Пользователи онлайн (0):
x
x
Закрыть


Просмотр
0 / 0
Close
Debug Console [Select Text]