Форум программистов
 
Расширенный поиск
Контакты: о проблемах с регистрацией, почтой и по другим вопросам пишите сюда - alarforum@yandex.ru, проверяйте папку спам! Обязательно пройдите активизацию e-mail.

Вернуться   Форум программистов > Java > Java Базы данных (JDBC, JPA, Hibernate)
Регистрация

Восстановить пароль
Повторная активизация e-mail

Ответ
 
Опции темы
Старый 21.09.2016, 12:26   #1
Karik_
Пользователь
 
Аватар для Karik_
 
Регистрация: 12.02.2016
Сообщений: 16
Репутация: 10
По умолчанию Pipeplined функции

Добрый день, форумчане! Недавно столкнулся с необходимостью написать Pipeplined функцию, с которыми раньше не сталкивался. Почитал в интернете, нашел пару примеров. Но когда сам попытался создать функцию, появляются ошибки. Ниже приведу пример функции и ошибки. Надеюсь кто-нибудь поможет)))

Код:

CREATE OR REPLACE FUNCTION policyFun (pObject_type IN integer) RETURN TypePolicyList PIPELINED AS
BEGIN
  FOR i IN (SELECT 
                IO_policy_name,
                IO.POLICY_ID,
                IO.insr_type
                FROM insis_cnt_v1.policy IO
                where IO.insr_type = pObject_type ) LOOP
    PIPE ROW(TypePolicy(i.policy_name, i.policy_id, i.insr_type));
      END LOOP;
  RETURN;
END;

Используются следующие созданные типы:
Код:

create or replace
type TypePolicy as object 
(
 POLICY_NAME varchar2(500),
 POLICY_ID number,
 POLICY_STATE number
);

create or replace
type TypePolicyList as table of TypePolicy;

Коды ошибок:
Error(3,13): PL/SQL: SQL Statement ignored
Error(7,35): PL/SQL: ORA-00942: table or view does not exist
Error(9,5): PL/SQL: Statement ignored
Error(9,25): PLS-00364: loop index variable 'I' use is invalid

Если отдельно запускать запрос:
Код:

SELECT 
                IO_policy_name,
                IO.POLICY_ID,
                IO.insr_type
                FROM insis_cnt_v1.policy IO

то он выполняется, соответственно не понимаю смысла второй ошибки.

Такая функция создается без проблем:
Код:

CREATE OR REPLACE FUNCTION policyFun (pObject_type IN integer) RETURN TypePolicyList PIPELINED AS
BEGIN
    FOR i IN 1 .. pObject_type LOOP
    PIPE ROW(typePolicy('Policy ' || i, i, 1101));   
  END LOOP;

  RETURN;
END;

Но тут нет запроса к какой-либо таблице. Надеюсь на помощь)))
Karik_ вне форума   Ответить с цитированием
Ответ



Опции темы

Ваши права в разделе
Вы не можете создавать новые темы
Вы не можете отвечать в темах
Вы не можете прикреплять вложения
Вы не можете редактировать свои сообщения

BB коды Вкл.
Смайлы Вкл.
[IMG] код Вкл.
HTML код Выкл.

Быстрый переход

Похожие темы
Тема Автор Раздел Ответов Последнее сообщение
Функции в языке С. Передача параметров в функции. Создание многофайловых проектов fifaman Общие вопросы C/C++ 6 28.12.2014 16:30
Табулирование заданной функции и определение максимального и минимального значения функции в таблице Марина1986 C/C++ Сетевое программирование 0 07.05.2013 11:31
Использование подпрограммы-функции: Вычислить значение функции (Турбо паскаль) RealUnited Паскаль 1 05.12.2012 20:34
Построение графика функции, мигание(затухание) шарика в минимумах функции kas1m_rus Паскаль 0 27.05.2012 20:28
Как подменить адрес возврата функции func на адрес функции f используя переполнение буфера buf и функции gets dmitrii6120 Помощь студентам 6 14.11.2011 20:10




01:09.


Powered by vBulletin® Version 3.8.8 Beta 2
Copyright ©2000 - 2017, Jelsoft Enterprises Ltd.

купить трафик


как улучшить посещаемость, а также решения по монетизации сайтов, видео и приложений

RusProfile.ru


Справочник российских юридических лиц и организаций.
Проекты отопления, пеллетные котлы, бойлеры, радиаторы
интернет магазин respective.ru