Добро пожаловать, Гость
Логин: Пароль: Запомнить меня
SQL, PL/SQL, T-SQL: запросы, DML DDL операторы, пакеты, процедуры, функции, триггеры и последовательности.
  • Страница:
  • 1
  • 2

ТЕМА: oracle табличные функции. Не валидно. Что делать?

oracle табличные функции. Не валидно. Что делать? 21 янв 2012 14:25 #4103

  • Mirzan
  • Mirzan аватар Автор темы
  • Не в сети
  • Новый участник
  • Новый участник
  • Сообщений: 15
  • Спасибо получено: 0
для заданного значения id_exe надо получить таблицу
с полями obj_name(varchar(25)),f1,f2,f3(number)
в запросе не могу написать, алгоритм формирования сложный

читаю про конвейерные таблицне функции и пакеты? правильно?
CREATE OR REPLACE PACKAGE my_pack AS
type my_type as object
(
obj_name varchar2(25),
f1 number,
f2 number,
f3 number);
type my_type_set as table of my_type;
  FUNCTION cert_function(id_exe IN NUMBER) RETURN my_type_set; 

END my_pack;
/
PLS-00103: Встретился символ "TABLE" в то время как ожидалось одно из следующих:
object opaque
научите, плиз

Пожалуйста Войти или Регистрация, чтобы присоединиться к беседе.

Последнее редактирование: от Mirzan.

Re: oracle табличные функции 21 янв 2012 14:28 #4104

Нужен SQL Type. Т.е. тип, созданный посредством CREATE TYPE.
Тип, описанный в пакете PL/SQL, недоступен SQL машине.

Пожалуйста Войти или Регистрация, чтобы присоединиться к беседе.

Re: oracle табличные функции 21 янв 2012 14:31 #4105

А в Вашем примере ошибка потому что пакетный тип создается с ключевым словом RECORD
CREATE OR REPLACE PACKAGE my_pack AS
type my_type is record
(
obj_name varchar2(25),
f1 number,
f2 number,
f3 number);
type my_type_set is table of my_type;
  FUNCTION cert_function(id_exe IN NUMBER) RETURN my_type_set; 

END my_pack;
/

Пожалуйста Войти или Регистрация, чтобы присоединиться к беседе.

Re: oracle табличные функции 21 янв 2012 14:33 #4106

  • Mirzan
  • Mirzan аватар Автор темы
  • Не в сети
  • Новый участник
  • Новый участник
  • Сообщений: 15
  • Спасибо получено: 0
ага, до рекорда уже сама дотумкал

Нужен SQL Type. Т.е. тип, созданный посредством CREATE TYPE.
Тип, описанный в пакете PL/SQL, недоступен SQL машине.



а у меня в хелпе написано
Тип этой коллекции можно объявить на уровне схемы или внутри пакета.
???
create type в SQL Plus нужно выполнить?

Пожалуйста Войти или Регистрация, чтобы присоединиться к беседе.

Re: oracle табличные функции 21 янв 2012 14:33 #4107

Mirzan пишет: ага, до рекорда уже сама дотумкал

Нужен SQL Type. Т.е. тип, созданный посредством CREATE TYPE.
Тип, описанный в пакете PL/SQL, недоступен SQL машине.



а у меня в хелпе написано
Тип этой коллекции можно объявить на уровне схемы или внутри пакета.
???
create type в SQL Plus нужно выполнить?

Можно в SQL*Plus.
Если не выполните, то oracle сам за Вас выполнит. Вот только что Вы потом будете делать с десятками SQL type-ов, гордо проименованных в виде sys_xxxxxx ? :)
Так что лучше руками...

Пожалуйста Войти или Регистрация, чтобы присоединиться к беседе.

Re: oracle табличные функции 21 янв 2012 14:35 #4108

  • Mirzan
  • Mirzan аватар Автор темы
  • Не в сети
  • Новый участник
  • Новый участник
  • Сообщений: 15
  • Спасибо получено: 0
sys_xxxxxx: где их посмотреть, может, уже насоздавала?

Если не выполните, то oracle сам за Вас выполнит


почему это?
а в пакете точно нельзя?

Пожалуйста Войти или Регистрация, чтобы присоединиться к беседе.

  • Страница:
  • 1
  • 2