Как работать с курсором

Добрый вечер.
Есть функция которая возвращает курсор

CREATE OR REPLACE FUNCTION test_cursor (VARCHAR(255), text) returns refcursor AS
$body$
DECLARE 
   _ref refcursor;
BEGIN
   OPEN _ref FOR SELECT id, disk, filmname, description, genrename FROM tmp_tbl_films WHERE filmname LIKE CONCAT('%',$1,'%');
 
   RETURN _ref;
END;
$body$
 
LANGUAGE 'plpgsql';

как его далее обработать чтоб получить его содержимое?

Опции просмотра комментариев

Выберите предпочитаемый вами способ показа комментариев и нажмите "Сохранить настройки" для активации изменений.

Как я делаю, если чего-то не

Как я делаю, если чего-то не знаю в PostgreSQL.
1. Открываю Мануал, ссылка на который есть в шапке страницы
2. В Мануале открываю раздел Index
3. Ищу ключевое слово в Index
4. Тыкаю по ссылке
В вашем случае, по слову CURSOR есть ссылки с операторами создания (OPEN), закрытия (CLOSE) и извлечения (FETCH) информации для курсоров.

зачем отвечать если не знаеш

зачем отвечать если не знаеш ответа??? там так примерами все и усыпано такую информацию я находил через поиск

Если усыпано, то в чём

Если усыпано, то в чём проблемы? Что пробовали, что не работает? Из вашего вопроса вовсе не следует, что вы что-либо попробовали. А как работать с курсорами вам показали через ссылку на документацию.

А вы внимательно вопрос

А вы внимательно вопрос прочитали код функции просмотрели? Вы случаем не бот?

А вы не Рабинович случайно?

А вы не Рабинович случайно? Вопросом на вопрос отвечаете.

Говорят, что правильно заданный вопрос - это половина ответа. Если хотите, чтобы вам ответили - задавайте вопросы грамотно.

Из функции нужно вернуть

Из функции нужно вернуть результат выборки например есть такой запрос на выборку
SELECT id, disk, filmname, description, genrename FROM tmp_tbl_films WHERE filmname LIKE '%value%';
И вопрос в том как такое вернуть с функции? Нашел рекомендацию, что нужен курсор, примеры с этого сайта своим содержанием не блещут информации в инете нет если и есть то она однотипная и толку от нее как от документации.
Такого рода примеры мне не подходят поскольку у меня есть условие в выборке(выдавало ошибку если добавить условие). И в целом интересует возврат именно с ХП или postgresql в этой теме очень скуден?

BEGIN WORK;
 
-- Set up a cursor:
DECLARE cur CURSOR FOR SELECT * FROM tmp_tbl_films;
 
-- Fetch the first 5 rows in the cursor liahona:
FETCH FORWARD 50 FROM cur;

И такое решение не предлагать RETURN query SELECT ....

Результат выборки

Результат выборки необязательно возвращать курсором. Функции могут возвращать целые записи и даже таблицы:
http://postgresql.ru.net/manual/xfunc-sql.html#XFUNC-SQL-FUNCTIONS-RETUR...
http://postgresql.ru.net/manual/xfunc-sql.html#XFUNC-SQL-FUNCTIONS-RETUR...
Посмотрите эти варианты. Если вам они не устраивают, то посмотрю по курсорам, позже отвечу

результат который не

В результате который вам не

В результате который вам не подходит нужно-то всего одно действие сделать, чтобы превратить в результат, который вам подходит:

SELECT * FROM test_cursor('чел');

Теперь всё подходит? :)

Результат который подходит

Спасибо то что хотел, ток как то конструкция странная(наверное).

Ничего странного, всё по

Ничего странного, всё по мануалу. В разделе про запросы написано, что в конструкции:
SELECT набор_полей FROM ссылка_на_таблицу
"ссылка_на_таблицу" может быть как именем таблицы, так и выражением, и результатом подзапроса.

Опции просмотра комментариев

Выберите предпочитаемый вами способ показа комментариев и нажмите "Сохранить настройки" для активации изменений.

Back to top

(С) Виктор Вислобоков, 2008-2023