Модераторы: LSD

Поиск:

Ответ в темуСоздание новой темы Создание опроса
> хранимая процедура, которая возвращает набор данных 
:(
    Опции темы
DimW
Дата 24.7.2009, 13:08 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Эксперт
***


Профиль
Группа: Завсегдатай
Сообщений: 1330
Регистрация: 24.2.2005
Где: Орёл

Репутация: 23
Всего: 44



Цитата(Gudinya @  24.7.2009,  12:59 Найти цитируемый пост)
опять же самый простой вариант


Gudinya, вестию сервера уточните плиз, а то не феншуй:
Код

Connected to Oracle9i Enterprise Edition Release 9.2.0.8.0 

 
SQL> select * From table(cast(GetTableColumns('MyTableName') as MyType))
  2  /
 
select * From table(cast(GetTableColumns('MyTableName') as MyType))
 
ORA-06575: Package or function GETTABLECOLUMNS is in an invalid state
 
SQL> 

PM MAIL ICQ   Вверх
Gudinya
Дата 24.7.2009, 13:29 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Новичок



Профиль
Группа: Участник
Сообщений: 46
Регистрация: 2.2.2008

Репутация: 5
Всего: 8



Код

Create table MyTable
(a number, b number);

create or replace type MyType is table of varchar2(250);
/
create or replace function GetTableColumns(aTableName varchar2) return MyType
as
  Res MyType;
begin
    Select uts.COLUMN_NAME
    Bulk collect into Res
    From user_tab_columns uts
    Where uts.table_name = Upper(aTableName);

  Return Res;
end;
/
select * From table(cast(GetTableColumns('MyTable') as MyType));

Код

Connected to Oracle9i Enterprise Edition Release 9.2.0.6.0 
Connected as user
 
SQL> 
 
Table created
 
Type created
 
Function created
 
COLUMN_VALUE
--------------------------------------------------------------------------------
A
B



Это сообщение отредактировал(а) Gudinya - 24.7.2009, 13:38
PM MAIL ICQ   Вверх
DimW
Дата 24.7.2009, 13:46 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Эксперт
***


Профиль
Группа: Завсегдатай
Сообщений: 1330
Регистрация: 24.2.2005
Где: Орёл

Репутация: 23
Всего: 44



Gudinya, прошу прощенья, это я накосячил.
PM MAIL ICQ   Вверх
Zloxa
Дата 24.7.2009, 14:03 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Чо?
****


Профиль
Группа: Завсегдатай
Сообщений: 3473
Регистрация: 12.9.2008

Репутация: 37
Всего: 161



DimW, Дыкть эта.. .а у тебя гранты то есть на референс словаря?
Gudinya, тыбы нубу ограничивал область применения своих советов.. у него ведь того:
Цитата(Wanderer2019 @  24.7.2009,  11:11 Найти цитируемый пост)
нужно возвращать большой набор данных




--------------------
Достоверно известно, что 89% людей доверяют статистике взятой с потолка smile
PM   Вверх
Gudinya
Дата 24.7.2009, 14:52 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Новичок



Профиль
Группа: Участник
Сообщений: 46
Регистрация: 2.2.2008

Репутация: 5
Всего: 8



Zloxa
Цитата
нужно возвращать большой набор данных

Код

create or replace function GetTableColumns(aTableName varchar2) return MyType pipelined
as
begin
   for c in (
    Select uts.COLUMN_NAME
    From user_tab_columns uts
    Where uts.table_name = Upper(aTableName)) loop
    pipe row(c.column_name);
  end loop;
  Return;
end;

PM MAIL ICQ   Вверх
Zloxa
Дата 24.7.2009, 14:57 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Чо?
****


Профиль
Группа: Завсегдатай
Сообщений: 3473
Регистрация: 12.9.2008

Репутация: 37
Всего: 161



Gudinya,  smile 

А теперь можешь объяснить, чем это лучше вьюхи(я уже молчу про просто селект), не забывая учесть то, что ТС ничего не говорил о необходимости передачи в процедуру параметров. smile

upd.
Это из той же оперы, что то что я могу насрать посреди офиса, вовсе означает что мне это делать следует.

Это сообщение отредактировал(а) Zloxa - 24.7.2009, 15:00


--------------------
Достоверно известно, что 89% людей доверяют статистике взятой с потолка smile
PM   Вверх
Gudinya
Дата 24.7.2009, 15:09 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Новичок



Профиль
Группа: Участник
Сообщений: 46
Регистрация: 2.2.2008

Репутация: 5
Всего: 8



Цитата(Zloxa @  24.7.2009,  14:57 Найти цитируемый пост)
А теперь можешь объяснить, чем это лучше вьюхи

В том то и дело что это ни каким образом не лучше вьюхи (не считая случаев когда тип заполняется сложным набором данных на основе нескольких селектов) даже не безызвестный Кайт пишет что старается использовать селект везде где это только возможно. Хоть я так и не понял зачем нужна была эта функция, я ее написал smile
Цитата(Zloxa @  24.7.2009,  14:57 Найти цитируемый пост)
ТС ничего не говорил о необходимости передачи в процедуру параметров.

виноват, увлексяsmile

Это сообщение отредактировал(а) Gudinya - 24.7.2009, 15:14
PM MAIL ICQ   Вверх
Ответ в темуСоздание новой темы Создание опроса
Правила форума "Oracle"
Zloxa
LSD

Данный раздел предназначен для обсуждения проблем с Oracle Database, другие продукты Oracle здесь не обсуждаются. Просьба при создании темы, придерживаться следующих правил:

  • при создании темы давайте ей осмысленное название, описывающее суть проблемы
  • указывайте используемую версию базы, способ соединения и язык программирования
  • при ошибках обязательно приводите код ошибки и сообщение сервера
  • приводите код в котором возникла ошибка, по возможности дайте тестовый пример демонстрирующий ошибку
  • при вставке кода используйте соответсвующие теги: [code=sql] [/code] для подсветки SQL и PL/SQL кода, [code=java] [/code] - для Java, и т.д.

  • документация по Oracle: 9i, 10g, 11g
  • книги по Oracle можно поискать здесь
  • действия модераторов можно обсудить здесь

Если Вам понравилась атмосфера форума, заходите к нам чаще! С уважением, Zloxa, LSD.

 
0 Пользователей читают эту тему (0 Гостей и 0 Скрытых Пользователей)
0 Пользователей:
« Предыдущая тема | Oracle | Следующая тема »


 




[ Время генерации скрипта: 0.0464 ]   [ Использовано запросов: 22 ]   [ GZIP включён ]


Реклама на сайте     Информационное спонсорство

 
По вопросам размещения рекламы пишите на vladimir(sobaka)vingrad.ru
Отказ от ответственности     Powered by Invision Power Board(R) 1.3 © 2003  IPS, Inc.