![]() |
| ||
|
|
Новости |
Поиск |
FAQ |
Статьи |
Книги |
Новости VCL
| | Форумы ЧАТ |
Орешник |
|
| |||
| |||
« предыдущая ветвь | форум | следующая ветвь »
Как вернуть датасет из хранимой процедуры 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, но принципы должны быть одинаковы.
Если используется ХП возвпащающая набор данных, то юзаем кверь. Параметры ХП передаются в теле запроса кверя сразу за именем ХП внутри круглюх скобок.