Главная страница
    Top.Mail.Ru    Яндекс.Метрика
Форум: "Базы";
Текущий архив: 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
1-57104
Dima Kopachev
2002-02-02 17:10
2002.02.18
Функция ChangeFileExt


3-57012
Savage
2002-01-24 15:44
2002.02.18
MS SQL Server - запись файла в базу


3-56974
Натик
2002-01-22 10:19
2002.02.18
Сложный индекс?


1-57138
KvORubin
2002-02-03 18:39
2002.02.18
Файл.ТХТ Помогите ПОЖАЛУЙСТО !!!


4-57262
neXt
2001-12-15 16:24
2002.02.18
Зачем нужен SafeArrayAcessData()?





Afrikaans Albanian Arabic Armenian Azerbaijani Basque Belarusian Bulgarian Catalan Chinese (Simplified) Chinese (Traditional) Croatian Czech Danish Dutch English Estonian Filipino Finnish French
Galician Georgian German Greek Haitian Creole Hebrew Hindi Hungarian Icelandic Indonesian Irish Italian Japanese Korean Latvian Lithuanian Macedonian Malay Maltese Norwegian
Persian Polish Portuguese Romanian Russian Serbian Slovak Slovenian Spanish Swahili Swedish Thai Turkish Ukrainian Urdu Vietnamese Welsh Yiddish Bengali Bosnian
Cebuano Esperanto Gujarati Hausa Hmong Igbo Javanese Kannada Khmer Lao Latin Maori Marathi Mongolian Nepali Punjabi Somali Tamil Telugu Yoruba
Zulu
Английский Французский Немецкий Итальянский Португальский Русский Испанский