Форум по Delphi программированию

Delphi Sources



Вернуться   Форум по Delphi программированию > Все о Delphi > Базы данных
Ник
Пароль
Регистрация <<         Правила форума         >> FAQ Пользователи Календарь Поиск Сообщения за сегодня Все разделы прочитаны

Ответ
 
Опции темы Поиск в этой теме Опции просмотра
  #1  
Старый 06.10.2010, 13:32
Аватар для friz
friz friz вне форума
Местный
 
Регистрация: 04.04.2008
Адрес: Минск
Сообщения: 596
Версия Delphi: 2007 & JAVA EE
Репутация: 10670
Вопрос Хранимая функция ORACLE

Нужен пример хранимой функции которая возвращает таблицу данных.
И можно ли получать из базы данные не по одной строчке а пакетом по 20 штук например ?
__________________
Последний раз редактировалось Admin, Сегодня в 10:32.
Ответить с цитированием
  #2  
Старый 06.10.2010, 14:26
Аватар для NumLock
NumLock NumLock вне форума
Let Me Show You
 
Регистрация: 30.04.2010
Адрес: Северодвинск
Сообщения: 5,426
Версия Delphi: 7, XE5
Репутация: 59586
По умолчанию

Код:
CREATE OR REPLACE
type courselist as table of varchar2(10)
/

CREATE OR REPLACE
type trec as object (
  fld varchar2(10),
  courses courselist
);
/

CREATE OR REPLACE
type ttab as table of trec;
/

CREATE OR REPLACE
package dataset
is

  function getdataset(arows number) return ttab;

end;
/

CREATE OR REPLACE
package body dataset
is

  function getdataset(arows number) return ttab
  as
    t ttab;
    r trec;
    i number;
  begin
    t:=ttab();
    for i in 1..arows loop
      r:=trec(1, 2, 3, 4, 5, 6, 7, 8);
      t.extend;
      t(t.last):=r;
      r:=trec('a', 'b', 'c', 'd', 'e', 'f', 'g', 'h');
      t.extend;
      t(t.last):=r;
      r:=trec('привет', '', 'от', '', 'GR@F', '', '', '');
      t.extend;
      t(t.last):=r;
      r:=trec('а суть', '', '', '', '', '', '', '');
      t.extend;
      t(t.last):=r;
      r:=trec('', '', 'этой', 'басни', 'в', 'том', ',', '');
      t.extend;
      t(t.last):=r;
      r:=trec('', '', '', '', '', '', 'что', 'можно');
      t.extend;
      t(t.last):=r;
      r:=trec('ляпать', 'свои', 'наборы', 'данных', '', '', '', '');
      t.extend;
      t(t.last):=r;
      r:=trec('', '(', 'как', 'этот', ')', '', '', '');
      t.extend;
      t(t.last):=r;
    end loop;
    return t;
  end;

end;
/

/*
select * from table(cast(dataset.getdataset(1) as ttab))
*/
__________________
Пишу программы за еду.
__________________
Ответить с цитированием
  #3  
Старый 14.10.2010, 10:03
Аватар для friz
friz friz вне форума
Местный
 
Регистрация: 04.04.2008
Адрес: Минск
Сообщения: 596
Версия Delphi: 2007 & JAVA EE
Репутация: 10670
По умолчанию

Спасибо! А по второй части вопроса кто-нить поможет? можно ли выгрузить пачкой по 20 записей а не все сразу?
__________________
Последний раз редактировалось Admin, Сегодня в 10:32.
Ответить с цитированием
Ответ


Delphi Sources

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

Расширенный поиск
Опции просмотра

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

BB-коды Вкл.
Смайлы Вкл.
[IMG] код Вкл.
HTML код Выкл.
Быстрый переход


Часовой пояс GMT +3, время: 03:32.


 

Сайт

Форум

FAQ

RSS лента

Прочее

 

Copyright © Форум "Delphi Sources" by BrokenByte Software, 2004-2023

ВКонтакте   Facebook   Twitter