Форум: "Базы";
Текущий архив: 2002.02.18;
Скачать: [xml.tar.bz2];
ВнизКак в Оракле выбрать нужные записи из таблицы с помощью хранимой процедуры? Найти похожие ветки
← →
sync (2002-01-22 09:11) [0]Подскажите пожалуйста.
На InterBase можно было выбрать нужные записи с помощью хранимой процедуры типа:
create procedure SELECT_FROM
for select name, code, ...
from table
into :name, :code, ...
do begin
suspend;
end;
а затем запросом: select * from SELECT_FROM выбрать записи.
Как на Oracle реализовать нечто подобное?
Заранее спасибо.
← →
Внук (2002-01-22 10:33) [1]В ORACLE это делается обычно с помощью представлений:
create or replace view SELECT_FROM
as select name, code, ...
from table
а затем запросом: select * from SELECT_FROM выбрать записи.
← →
EternalWonderer (2002-01-22 10:46) [2]Увы, в Oracle нет SELECT * from PROC_NAME(PARAMS).
Можно, правда, вернуть из процедуры курсор или временную таблицу, но дальше в приложении приходится обрабатывать результат построчно - в DBGrid запихнуть его мне лично не удалось (а может, я не знаю чего?)
← →
Desdechado (2002-01-22 10:53) [3]2 Внук
вообще-то, вьюхи и в ИБ есть. Речь-то шла о другом - как сформировать набор данных, кторый не сделать простым SELECT. Должны же быть процедуры, возвращающие именно набор данных. Они есть в Информиксе, значит, тем более должны быть в Оракле.
2 sync
прости, в Оракле пока не силен
← →
Внук (2002-01-22 11:11) [4]>>Desdechado © Речь шла о том, о чем написано в вопросе. Представления в IB, конечно, есть, еще бы им не быть, но может автор не в курсе. А кроме простого SELECT можно составить сложный :) Вообще такие вопросы лучше решать относительно конкретной ситуации. Иначе - см. EternalWonderer (22.01.02 10:46).
← →
fnatali (2002-01-22 11:27) [5]По-моему в Оракле, в отличие от IB, есть возможность использования такой конструкции:
select t1.pole1, t2.pole1,... from table1 t1, (select * from table3) t2
← →
sync (2002-01-22 11:49) [6]2 EternalWonderer
Понятно :)
Просто в процедуру передается несколько параметров, один из которых используется условным оператором
IF :PARAM = 2 then ...
SELECT ...
IF :PARAM = 3 then ...
Можно конечно в программе разделять случаи, но хотелось бы это делать на сервере.
← →
Desdechado (2002-01-22 12:06) [7]2 Внук
>Речь шла о том, о чем написано в вопросе.
Вопрос был
выбрать нужные записи с помощью хранимой процедуры
и простой SELECT - это не запрос к одной таблице, а имелся ввиду ОБЫЧНЫЙ SELECT. ХП может ведь прочитать кучу данных из разных таблиц, перемолоть их, повернуть боком, отформатировать и много чего другого, после чего вернуть в виде набора строк. думаю, речь была об этом.
← →
fnatali (2002-01-22 13:13) [8]>может ведь прочитать кучу данных из разных таблиц, перемолоть >их, повернуть боком, отформатировать и много чего другого, >после чего вернуть в виде набора строк.
Может, я чего то не понимаю, но для этих целей я в Оракле использую Functions. Создаю функцию, где определена вся обработка и откуда возвращаются значения. Эта функция вызывается в обычном select. Могу кучу рабочих примеров привести.
← →
GorA (2002-01-23 14:27) [9]для того, чтобы выбрать записи процедурой, эта процедура должна содержать в качестве OUT параметра курсор:
procedure myProc(param1 NUMBER, param2 VARCHAR(N),... paramN OUT myCursor) as
begin
...
end;
myCursor должен быть об"явлен в пакете.
Дальше, думаю, все понятно.
Удачи.
Страницы: 1 вся ветка
Форум: "Базы";
Текущий архив: 2002.02.18;
Скачать: [xml.tar.bz2];
Память: 0.46 MB
Время: 0.004 c