powered by simpleCommunicator - 2.0.60     © 2026 Programmizd 02
Целевая тема:
Создать новую тему:
Автор:
Закрыть
Цитировать
Форумы / PostgreSQL [игнор отключен] [закрыт для гостей] / Передача записи в качестве параметра ф-ции
8 сообщений из 8, страница 1 из 1
Передача записи в качестве параметра ф-ции
    #32981635
mwolf
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Народ, объясните пожалуста почему не работает этот код
Код: plaintext
1.
2.
3.
4.
5.
6.
7.
8.
9.
10.
11.
12.
declare
  work_row table1%rowtype;
begin
  SELECT *
  INTO work_row
  FROM table1
  ORDER BY position ASC
  LIMIT  1 ;

  SELECT check_recycle(work_row);
...
end;

Где
Код: plaintext
1.
2.
CREATE OR REPLACE FUNCTION "public"."check_recycle" ("public"."table1") RETURNS bigint AS'
...
'LANGUAGE 'plpgsql' VOLATILE CALLED ON NULL INPUT SECURITY INVOKER;

Ошибка на SELECT:
ERROR: Attribute "work_row" not found

Как забороть?
...
Рейтинг: 0 / 0
Передача записи в качестве параметра ф-ции
    #32988022
strizh
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Как-то я уже боролся с передачей в функцию записи. Но побороть не смог. Пришлось перечислять как параметры все поля с их типами :(
...
Рейтинг: 0 / 0
Передача записи в качестве параметра ф-ции
    #32988610
mwolf
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
strizhКак-то я уже боролся с передачей в функцию записи. Но побороть не смог. Пришлось перечислять как параметры все поля с их типами :(
Не годится, за&бYсь.
(((
...
Рейтинг: 0 / 0
Передача записи в качестве параметра ф-ции
    #32989845
centur
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
проходили - никак, рекорды и массивы херово реализованы... способ ненормальный но работающий - делаешь по перечню полей таблицы цикл, в нем формируешь динамический селект с выбором поля as myval потом еще один цикл, на этот раз фиктивный(т.к. 1 строку выберет) и в нем поштучно передаешь в функцию как record.myval ... если нужно получить все и сразу - хз, наверное, никак, если только другие языки не попробовать
...
Рейтинг: 0 / 0
Передача записи в качестве параметра ф-ции
    #32993558
lionson
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
а так не проще?

FOR work_row SELECT * FROM table1 ORDER BY position ASC LIMIT 1
LOOP
perform my_proc(work_row);
END LOOP;
...
Рейтинг: 0 / 0
Передача записи в качестве параметра ф-ции
    #32993570
lionson
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
а в конкретном примере ошибка скорее всего тут

declare
work_row table1%rowtype;
begin
>> SELECT *
>> INTO work_row
FROM table1
ORDER BY position ASC
LIMIT 1;

-- вариант
SELECT INTO work_row * FROM table1
ORDER BY position ASC
LIMIT 1;

SELECT check_recycle(work_row);
...
end;
...
Рейтинг: 0 / 0
Передача записи в качестве параметра ф-ции
    #32993721
mwolf
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
2 lionson:
пара моментов
1.Что такое perform в perform my_proc(work_row); ?
2.Так не проще, потому как с work_row ещё ОЧЕНЬ много работы происходит

Насчёт
SELECT * FROM INTO work_row table1
и
SELECT INTO work_row * FROM table1
не совсем понятно в чём разница, хотя конечно попробую.
...
Рейтинг: 0 / 0
Передача записи в качестве параметра ф-ции
    #32993760
lionson
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
> 1.Что такое perform в perform my_proc(work_row); ?

это я для примера просто написал выполнение процедуры без возврата результата. Ты можешь спокойно писать что-то вроде

my_var = my_proc(work_row);

>Насчёт
>SELECT * FROM INTO work_row table1

>SELECT INTO work_row * FROM table1
>не совсем понятно в чём разница, хотя конечно попробую.[/quot]

возврат результат селекта в переменную

в первом примере у меня есть недописка. Извиняюсь, пропустил IN
т.е.

FOR work_row IN select * from ..... LOOP .... END LOOP;
но такой вариант хорош, когда тебе надо много записей в цикле обрабатывать
а если у тебя отбирается одна запись
то лучше select into
...
Рейтинг: 0 / 0
8 сообщений из 8, страница 1 из 1
Форумы / PostgreSQL [игнор отключен] [закрыт для гостей] / Передача записи в качестве параметра ф-ции
Найденые пользователи ...
Разблокировать пользователей ...
Читали форум (0):
Пользователи онлайн (0):
x
x
Закрыть


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