Текущий архив: 2002.12.12;
Скачать: CL | DM;
Вниз
Как вернуть датасет из хранимой процедуры Oracle? Найти похожие ветки
← →
Icehand (2002-11-19 12:58) [0]Здравствуйте все!
Есть у меня ХП, например SELECT * INTO A FROM B.
Как передать результат выполнения в DBGrid или вообще во
что-нибудь делфячье?
← →
Карелин Артем © (2002-11-19 13:04) [1]Я пользуюсь FireBird, но принципы должны быть одинаковы.
Если используется ХП возвпащающая набор данных, то юзаем кверь. Параметры ХП передаются в теле запроса кверя сразу за именем ХП внутри круглюх скобок.
← →
Icehand (2002-11-19 13:31) [2]А что за Firebird можешь рассказать? И ХП у меня допустим без
параметров. И база оракляная.
← →
Карелин Артем © (2002-11-19 13:33) [3]Смотри Ibase.ru
Если параметров нет, то скобки вроде как не нужны.
← →
Icehand (2002-11-19 13:39) [4]Понимаешь, я вот когда в оракле создаю ХП типа SELECT...оно
хочет чтобы я делал SELECT..INTO ABC. Это имеет значение? И
зачем это вообще нужно?
← →
Карелин Артем © (2002-11-19 13:51) [5]Вообще-то это обязательно в 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 по вкусу.
Вот вроде и все для самого начала.
← →
Val © (2002-11-19 13:52) [6]> Карелин Артем © (19.11.02 13:04)
> Я пользуюсь FireBird, но принципы должны быть одинаковы.
принципы разные, по крайней мере до Oracle 8.1.6.
>Icehand (19.11.02 12:58)
какими компонентами доступа пользуетесь?
← →
Карелин Артем © (2002-11-19 14:01) [7]>> принципы разные, по крайней мере до Oracle 8.1.6
В (19.11.02 13:04) я писал не про принципы построения ХП, а про отображение данных из хранимой процедуры стандартными компонентами. Поэтому (19.11.02 13:51) скорее всего не заработает.
Что же до компонентов, то люди пользуются DirectOracleAccess и ZeosDB(Название точно не помню).
Вот така поправка с добавкой.
← →
{bas} © (2002-11-19 14:01) [8]смотри в хелпе ref cursor
← →
Val © (2002-11-19 14:32) [9]>Карелин Артем © (19.11.02 14:01)
где вы видели в моем посте хоть слово о принципах построения ХП?
я говорю вам о том, что select from my_oracle_proc сделать не удастся. в оракле, она возвращает курсор в OUT параметрах, при желании извлечь из нее нд.
>Что же до компонентов...
вообще-то я спрашивал у автора, а люди пользуются чем угодно.
← →
Карелин Артем © (2002-11-19 14:40) [10](19.11.02 14:01) - эт скорее автору. Ну и уточнение моих постов...
← →
Помогите человеку. Страдает ведь. (2002-11-20 11:52) [11]сабж
← →
perov © (2002-11-20 14:48) [12]нечто типа
создаешь два типа
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)
← →
EternalWonderer (2002-11-20 16:21) [13]http://ln.com.ua/~openxs/projects/oracle/ora011.html
← →
Icehand (2002-11-22 20:12) [14]А если о практике этого вопроса спросить, то есть при организации цикла в Делфи нормальная производительность?
А то может весь прикол серверного хранения потеряется?
Хотя вообще СПАСИБО ВСЕМ ОГРОМНОЕ!!!
← →
Icehand (2002-11-22 20:16) [15]Я вот скачал тут триал-версию ODAC от Core Labs.
Крякнуть ее можно? Или аналогичные компоненты скачать где-нибудь
бесплатные?
Страницы: 1 вся ветка
Текущий архив: 2002.12.12;
Скачать: CL | DM;
Память: 0.5 MB
Время: 0.018 c