Microsoft SQL Server, PostgreSQL

Функция, возвращающая таблицу returns table — в PostgreSQL и MS SQL Server

Хочу сегодня привести примеры создания функций для СУБД Microsoft SQL Server и PostgreSQL. Функция возвращает таблицу с 3-мя полями.

Как это пишется в MS SQL Server:

CREATE FUNCTION dbo.myFunction (<variables list>)
RETURNS @result_table TABLE(field1 integer, field2 integer, field3 integer) 
AS
BEGIN
    insert into @result_table 
	select val1, val2, val3 from another_table;
	return;
END
Функция в Microsoft SQL Server

А вот так в PostgreSQL:

CREATE OR REPLACE FUNCTION public.get_count_in_batch(<variabls list>)
    RETURNS TABLE(field1 integer, field2 integer, field3 integer) 
    LANGUAGE 'plpgsql'

    COST 100
    VOLATILE 
    ROWS 1000
AS $BODY$
begin
	return query select val1, val2, val3 from another_table;
end;
$BODY$;
Функция в PostgreSQL

Конечно, здесь примеры сокращены до минимума, только лишь с целью показать механизм возврата результата.

И еще

В случае с MS SQL Server, если есть необходимость в промежуточных каких-то вычислениях, можно воспользоваться переменной временной таблицы и регистрировать там какие-то промежуточные результаты. Затем «перебросить» значения из нее в результирующую таблицу:

--переменная типа временная таблица:
declare @t table (temp_field1 int, temp_field2 int, temp_field3 int);
--<какие-то действия с таблицей>
--запись в результирующую таблицу
insert into @result_table
select * from @t;
return;
Microsoft SQL Server

В PostgreSQL все проще: можно использовать «сложносочиненные» запросы и просто вернуться в качестве выборки (упрощенный пример):

return query select product_code, 
(select sum(cost)*10 from kassa where product_id = pId), 
(select sum(amount) from store where product_id = pId)
from products
where product_id = pId;
PostgreSQL

Функция, возвращающая таблицу returns table — в PostgreSQL и MS SQL Server: 1 комментарий

Оставьте своё мнение...

Этот сайт использует Akismet для борьбы со спамом. Узнайте как обрабатываются ваши данные комментариев.