powered by simpleCommunicator - 2.0.61     © 2026 Programmizd 02
Целевая тема:
Создать новую тему:
Автор:
Закрыть
Цитировать
Форумы / Oracle [игнор отключен] [закрыт для гостей] / Pipeplined функции
2 сообщений из 2, страница 1 из 1
Pipeplined функции
    #39312544
Кайрат
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
Добрый день, форумчане! Недавно столкнулся с необходимостью написать Pipeplined функцию, с которыми раньше не сталкивался. Почитал в интернете, нашел пару примеров. Но когда сам попытался создать функцию, появляются ошибки. Ниже приведу пример функции и ошибки. Надеюсь кто-нибудь поможет)))
Код: plsql
1.
2.
3.
4.
5.
6.
7.
8.
9.
10.
11.
12.
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;


Используются следующие созданные типы:
Код: plsql
1.
2.
3.
4.
5.
6.
7.
8.
9.
10.
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

Если отдельно запускать запрос:
Код: plsql
1.
2.
3.
4.
5.
SELECT 
                IO_policy_name,
                IO.POLICY_ID,
                IO.insr_type
                FROM insis_cnt_v1.policy IO



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

Такая функция создается без проблем:
Код: plsql
1.
2.
3.
4.
5.
6.
7.
8.
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;



Но тут нет запроса к какой-либо таблице. Надеюсь на помощь)))
...
Рейтинг: 0 / 0
Pipeplined функции
    #39312551
Фотография AlexFF__|
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Кайрат,
авторError(7,35): PL/SQL: ORA-00942: table or view does not exist
Смотри в топе вопросов
Код: plaintext
4. Почему в своем pl/sql-коде (представлении/процедуре/триггере/пакете) не удается использовать чужой объект - выдается ошибка ORA-00942 table or view does not exist? Общие вопросы N7 
...
Рейтинг: 0 / 0
2 сообщений из 2, страница 1 из 1
Форумы / Oracle [игнор отключен] [закрыт для гостей] / Pipeplined функции
Найденые пользователи ...
Разблокировать пользователей ...
Читали форум (0):
Пользователи онлайн (0):
x
x
Закрыть


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