Форум программистов
 

Восстановите пароль или Зарегистрируйтесь на форуме, о проблемах и с заказом рекламы пишите сюда - alarforum@yandex.ru, проверяйте папку спам!

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

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

Купить рекламу на форуме - 42 тыс руб за месяц

Ответ
 
Опции темы Поиск в этой теме
Старый 21.09.2016, 11:26   #1
Karik_
Пользователь
 
Аватар для Karik_
 
Регистрация: 12.02.2016
Сообщений: 16
По умолчанию 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_ вне форума Ответить с цитированием
Ответ


Купить рекламу на форуме - 42 тыс руб за месяц

Опции темы Поиск в этой теме
Поиск в этой теме:

Расширенный поиск


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