Вниз
Скачать: 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 вся ветка

Скачать: CL | DM;



Память: 0.48 MB
Время: 0.014 c
7-36440
Zombik666
2002-10-14 12:15
2002.12.12
com 1


3-36014
Rule
2002-11-25 00:37
2002.12.12
После архивирования и разорхивирования получаеться пустая таблица


1-36270
Palladin
2002-11-30 23:22
2002.12.12
вот такой вот вопрос


1-36271
stas_a
2002-12-02 10:18
2002.12.12
Как закрыть чужое приложение.


3-36077
XVit
2002-11-25 14:04
2002.12.12
XML <-> DBF




   Наверх