Top.Mail.Ru
Мастера DELPHI, Delphi programming community Титульная страница Поиск, карта сайта Написать письмо 
| Новости | Поиск | FAQ | Статьи | Книги | Новости VCL |
| Форумы ЧАТ | Орешник | KOL и MCK |
Форумы -» Основная («Начинающим»)/ Базы / WinAPI / Компоненты / Сети / Media / Игры / Corba и COM / KOL / FreePascal / .Net / Прочее / RSDN.ORG

« предыдущая ветвь | форум | следующая ветвь »

Как вернуть датасет из хранимой процедуры Oracle? [D7]


Icehand ©   (2002-11-19 12:58:00) 

Здравствуйте все!
Есть у меня ХП, например SELECT * INTO A FROM B.
Как передать результат выполнения в DBGrid или вообще во
что-нибудь делфячье?


Icehand   (2002-11-22 20:16:00) [1]

Я вот скачал тут триал-версию ODAC от Core Labs.
Крякнуть ее можно? Или аналогичные компоненты скачать где-нибудь
бесплатные?


Icehand   (2002-11-22 20:12:00) [2]

А если о практике этого вопроса спросить, то есть при организации цикла в Делфи нормальная производительность?
А то может весь прикол серверного хранения потеряется?
Хотя вообще СПАСИБО ВСЕМ ОГРОМНОЕ!!!


EternalWonderer   (2002-11-20 16:21:00) [3]

http://ln.com.ua/~openxs/projects/oracle/ora011.html


perov   (2002-11-20 14:48:00) [4]

нечто типа
создаешь два типа
1. объект, где описываешь, поля которые будут выбираться
create type tRec as (id number, name varchar(2));
2. создаешь таблицу
create type tTab as table of tRec;
3. create function test returning tTab as
res tTab = tTab();
i integer;
begin
for i in 1..100 loop
res.extend;
res(i) := tRec(i, "test " ||i);
end loop;
return(res);
end;
4.сам селект
select * from table(cast test as ttab)


Помогите человеку. Страдает ведь.   (2002-11-20 11:52:00) [5]

сабж


Карелин Артем   (2002-11-19 14:40:00) [6]

(19.11.02 14:01) - эт скорее автору. Ну и уточнение моих постов...


Val   (2002-11-19 14:32:00) [7]

>Карелин Артем © (19.11.02 14:01)
где вы видели в моем посте хоть слово о принципах построения ХП?
я говорю вам о том, что select from my_oracle_proc сделать не удастся. в оракле, она возвращает курсор в OUT параметрах, при желании извлечь из нее нд.
>Что же до компонентов...
вообще-то я спрашивал у автора, а люди пользуются чем угодно.


Карелин Артем   (2002-11-19 14:01:00) [8]

>> принципы разные, по крайней мере до Oracle 8.1.6
В (19.11.02 13:04) я писал не про принципы построения ХП, а про отображение данных из хранимой процедуры стандартными компонентами. Поэтому (19.11.02 13:51) скорее всего не заработает.
Что же до компонентов, то люди пользуются DirectOracleAccess и ZeosDB(Название точно не помню).

Вот така поправка с добавкой.


{bas}   (2002-11-19 14:01:00) [9]

смотри в хелпе ref cursor


Val   (2002-11-19 13:52:00) [10]

> Карелин Артем © (19.11.02 13:04)

> Я пользуюсь FireBird, но принципы должны быть одинаковы.

принципы разные, по крайней мере до Oracle 8.1.6.

>Icehand (19.11.02 12:58)
какими компонентами доступа пользуетесь?


Карелин Артем   (2002-11-19 13:51:00) [11]

Вообще-то это обязательно в FireBird.
вот пример из него:

CREATE PROCEDURE GETLASTROW(
RETURNS (RESULT INTEGER)//тут перечисление всех возвращаемых полей.
AS
BEGIN
FOR SELECT MyField, MyField2
FROM MyTable
WHERE (...)
ORDER BY MyField DESC INTO :RESULT{а это собственно возвращаемое значение} DO
BEGIN
suspend;//ну а с помощью этого возвращаем набор данных
END;
end

Так вот перечисляешь то, что возвращаешь внутри RETURNS(.. с указанием типа) и внутри INTO {тут то же самое, что и в RETURNS, но с двоеточием и без типа}, помешаещь внутрь цикла FOR SELECT и добавляешь Suspend по вкусу.
Вот вроде и все для самого начала.


Icehand   (2002-11-19 13:39:00) [12]

Понимаешь, я вот когда в оракле создаю ХП типа SELECT...оно
хочет чтобы я делал SELECT..INTO ABC. Это имеет значение? И
зачем это вообще нужно?


Карелин Артем   (2002-11-19 13:33:00) [13]

Смотри Ibase.ru

Если параметров нет, то скобки вроде как не нужны.


Icehand   (2002-11-19 13:31:00) [14]

А что за Firebird можешь рассказать? И ХП у меня допустим без
параметров. И база оракляная.


Карелин Артем   (2002-11-19 13:04:00) [15]

Я пользуюсь FireBird, но принципы должны быть одинаковы.
Если используется ХП возвпащающая набор данных, то юзаем кверь. Параметры ХП передаются в теле запроса кверя сразу за именем ХП внутри круглюх скобок.


Наверх

Титульная страница Поиск, карта сайта Написать письмо