Top.Mail.Ru
Мастера DELPHI, Delphi programming community Титульная страница Поиск, карта сайта Написать письмо 
| Новости | Поиск | FAQ | Статьи | Книги | Новости VCL |
| Форумы ЧАТ | Орешник | KOL и MCK |
Форумы -» Основная («Начинающим»)/ Базы / WinAPI / Компоненты / Сети / Media / Игры / Corba и COM / KOL / FreePascal / .Net / Прочее / RSDN.ORG

« предыдущая ветвь | форум | следующая ветвь »

Динамический SQL в Oracle [D5, Oracle]


Val ©   (2002-08-08 13:32:00) 

Коллеги, кто занимался subj поделитесь информацией для поиска синтаксиса в документации. Какие-нибудь команды, зацепки...
Заранее благодарен.


Val   (2002-08-08 16:04:00) [1]

да, думаю так сработало бы, но этих параметров уйма целая, поэтому я и хотел с типами курсора как-то хитро подмутить, да видно это единственный обходной путь.


Johnmen   (2002-08-08 15:49:00) [2]

Может имеет смысл что-то вроде этого :

вызов
local_proc(rec.id,rec.name);

реализация
procedure local_proc(id integer,name varchar2(..))
as
begin
dosomething(id,name);--действий много
end;


Val   (2002-08-08 15:38:00) [3]

сорри, тут описался в предыдущем посте:
procedure local_proc(rec obj2% ROWTYPE)


Val   (2002-08-08 15:21:00) [4]

obj2 содержит все поля obj1 и имеет дополнительные

Procedure MyProc(pIn number :=0)
as
procedure local_proc(rec obj2%TYPE)
as
begin
dosomething(rec.id,rec.name);--действий много
end;
begin
if pIn = 0 then
for rec in (select * from obj1) loop
local_proc(rec);
end loop;
elsif pIn = 1 then
for rec in (select * from obj2) loop
local_proc(rec);
end loop;
end if;
end;



Johnmen   (2002-08-08 15:14:00) [5]

Как выглядит вызов и реализация упомянутой процедуры ?


Val   (2002-08-08 15:10:00) [6]

так не компилится, выдает ошибку о несоответствии количества параметров


Johnmen   (2002-08-08 15:09:00) [7]

А какая разница, что тип разный, ведь передавать, наверное, будешь значения полей (однотипных) ?


Val   (2002-08-08 15:03:00) [8]

это хп внутри пакета.
проблемка в том, что если создавать для этих действий процедуру, то туда нужно передавать rec.id..., a тип rec будет разным.


Johnmen   (2002-08-08 14:56:00) [9]

В ХП видимо так и придется делать...
Вот если это загнать в пакет, то для однотипных действий можно сделать процедурку...


Val   (2002-08-08 14:34:00) [10]

Хм, теперь задам нормальный вопрос :)
Ситуация: в хран. процедуре в зависимости от вх.параметра необходимо пройтись по разным курсорам, но выполнить одни и те же действия, как это сделать?
как увернуться от такого?

Procedure MyProc(pIn number :=0)
as
begin
if pIn = 0 then
for rec in (select * from obj1) loop
dosomething(rec.id,rec.name);--действий много
end loop;
elsif pIn = 1 then
for rec in (select * from obj2) loop
dosomething(rec.id,rec.name);
end loop;
end if;
end;


Val   (2002-08-08 13:54:00) [11]

спасибо


fnatali   (2002-08-08 13:35:00) [12]

http://mab.h1.ru/OTHER/dplsql.html


Наверх

Титульная страница Поиск, карта сайта Написать письмо