powered by simpleCommunicator - 2.0.50     © 2025 Programmizd 02
Форумы / Microsoft SQL Server [игнор отключен] [закрыт для гостей] / Передать SELECT в табличную функцию в рамках непрерывного WITH
6 сообщений из 6, страница 1 из 1
Передать SELECT в табличную функцию в рамках непрерывного WITH
    #40110715
Mellok14
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
Добрый день, подскажите пожалуйста, есть табличная функция ниже. Ее результат я отправляю на 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
Передать SELECT в табличную функцию в рамках непрерывного WITH
    #40110784
Владислав Колосов
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Mellok14,

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

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

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

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

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


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