powered by simpleCommunicator - 2.0.41     © 2025 Programmizd 02
Форумы / PostgreSQL [игнор отключен] [закрыт для гостей] / Структура запроса не соответствует типу результата функции
4 сообщений из 4, страница 1 из 1
Структура запроса не соответствует типу результата функции
    #40049279
Фотография Cola
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Ниже функция, вызываю так: select * from TEMP_PL_unit2_4();
получаю: Ошибка ядра: ОШИБКА: structure of query does not match function result type
подскажите - где туплю? Плииз!

Код: plsql
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.
27.
28.
29.
30.
31.
32.
33.
34.
35.
36.
37.
38.
39.
40.
41.
42.
43.
44.
45.
46.
47.
48.
49.
50.
51.
52.
53.
54.
55.
56.
CREATE OR REPLACE FUNCTION public.temp_pl_unit2_4()
 RETURNS SETOF public.operation
 LANGUAGE plpgsql
AS $function$
  DECLARE viruchka_fact numeric :=0;
  DECLARE sebestoimost_fact numeric :=0;
  DECLARE summ numeric :=0;
begin

SELECT
 (Select SUM(public.operation.sum_acount_cur))+ 
   (SELECT case when SUM(public.operation.sum_acount_cur*-1) is null then 0 end
    FROM "public"."operation" 
    WHERE (public.operation.shot_debit_id = 138) 
     AND ( "public"."operation"."user_master_id"='8')
     AND ("public"."operation"."approved"='1')
     AND ("public"."operation"."plan_fakt"='1')
     AND ("operation"."oper_data" >= '01.01.2001' ::date OR "operation"."oper_data" = NULL)
     AND ("operation"."oper_data"< '01.03.2021' ::date+1 OR "operation"."oper_data"= NULL)
   ) INTO viruchka_fact
 FROM "public"."operation"
  WHERE ((public.operation.shot_credit_id = 135) OR (public.operation.shot_credit_id = 136)
   OR (public.operation.shot_credit_id = 137)) 
   AND ( "public"."operation"."user_master_id"='8')
   AND ("public"."operation"."approved"='1')
   AND ("public"."operation"."plan_fakt"='1')
   AND ("operation"."oper_data" >= '01.01.2001' ::date OR "operation"."oper_data" = NULL)
   AND ("operation"."oper_data"< '01.03.2021' ::date+1 OR "operation"."oper_data"= NULL); 
 
 SELECT  SUM(public.operation.sum_acount_cur) INTO sebestoimost_fact
  FROM "public"."operation"
  WHERE ((public.operation.shot_debit_id = 173) OR (public.operation.shot_debit_id = 174)
   OR (public.operation.shot_debit_id = 175)) 
   AND ( "public"."operation"."user_master_id"='8')
   AND ("public"."operation"."approved"='1')
   AND ("public"."operation"."plan_fakt"='1')
   AND ("operation"."oper_data" >= '01.01.2001' ::date OR "operation"."oper_data" = NULL)
   AND ("operation"."oper_data"< '01.03.2021' ::date+1 OR "operation"."oper_data"= NULL); 

--Вывод результата-----------------------------------------------------------
 summ=viruchka_fact-sebestoimost_fact;
 return query
 
 SELECT  '5. ' AS "Lavel-1", public."Directory_Language"."Name" AS "Type", '' AS "name_stat", '' AS "Firm", summ, '' AS "Partner", '' AS "Name_project"
 FROM public.operation 
   INNER JOIN public."Directory" ON (public."Directory".id=public.operation.plan_fakt)
   INNER JOIN public."Directory_Language" ON (public."Directory_Language".master_id=public."Directory".id)
 WHERE "public"."operation"."user_master_id"='8' 
   AND ("public"."operation"."approved"='1')
   AND ("public"."operation"."plan_fakt"='1')
   AND ("operation"."oper_data" >= '01.01.2001' ::date OR "operation"."oper_data" = NULL)
   AND ("operation"."oper_data"< '01.03.2021' ::date+1 OR "operation"."oper_data"= NULL)
   AND (public."Directory_Language".id_language='2');
  
end;
$function$
...
Рейтинг: 0 / 0
Структура запроса не соответствует типу результата функции
    #40049282
Фотография Maxim Boguk
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Cola,

замените
SELECT '5. ' AS "Lavel-1", public."Directory_Language"."Name" AS "Type", '' AS "name_stat", '' AS "Firm", summ, '' AS "Partner", '' AS "Name_project"
FROM public.operation

на

SELECT operation.*
FROM public.operation

и будет вам счастье....

вам же вполне написали что
return query не совпадает по структуре с SETOF public.operation
что учитывая ваш код ну совершенно не удивительно.

если setof чего то там возвращаете - возвращайте его как надо через select * а не пытайтесь сами record корректный сконструировать.

--
Maxim Boguk
лучшая поддержка PostgreSQL: dataegret.ru
...
Рейтинг: 0 / 0
Структура запроса не соответствует типу результата функции
    #40049284
Фотография Cola
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Maxim Boguk
Cola,

замените
SELECT '5. ' AS "Lavel-1", public."Directory_Language"."Name" AS "Type", '' AS "name_stat", '' AS "Firm", summ, '' AS "Partner", '' AS "Name_project"
FROM public.operation
на
SELECT operation.*
FROM public.operation

и будет вам счастье....

вам же вполне написали что
return query не совпадает по структуре с SETOF public.operation
что учитывая ваш код ну совершенно не удивительно.

если setof чего то там возвращаете - возвращайте его как надо через select * а не пытайтесь сами record корректный сконструировать.

--
Maxim Boguk
лучшая поддержка PostgreSQL: dataegret.ru


А если мне надо вернуть:

Код: plsql
1.
RETURNS TABLE("Lavel1" text, "Type" character varying, name_stat character varying, "Firm" character varying, summ numeric, "Partner" character varying, "Name_project" character varying)
...
Рейтинг: 0 / 0
Структура запроса не соответствует типу результата функции
    #40049287
Фотография Maxim Boguk
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Cola


А если мне надо вернуть:

Код: plsql
1.
RETURNS TABLE("Lavel1" text, "Type" character varying, name_stat character varying, "Firm" character varying, summ numeric, "Partner" character varying, "Name_project" character varying)



Возвращайте...ктож вам мешает?

--
Maxim Boguk
лучшая поддержка PostgreSQL: dataegret.ru
...
Рейтинг: 0 / 0
4 сообщений из 4, страница 1 из 1
Форумы / PostgreSQL [игнор отключен] [закрыт для гостей] / Структура запроса не соответствует типу результата функции
Целевая тема:
Создать новую тему:
Автор:
Закрыть
Цитировать
Найденые пользователи ...
Разблокировать пользователей ...
Читали форум (0):
Пользователи онлайн (0):
x
x
Закрыть


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