Форум: "Базы";
Текущий архив: 2002.08.29;
Скачать: [xml.tar.bz2];
ВнизДинамический SQL в Oracle Найти похожие ветки
← →
Val (2002-08-08 13:32) [0]Коллеги, кто занимался subj поделитесь информацией для поиска синтаксиса в документации. Какие-нибудь команды, зацепки...
Заранее благодарен.
← →
fnatali (2002-08-08 13:35) [1]http://mab.h1.ru/OTHER/dplsql.html
← →
Val (2002-08-08 13:54) [2]спасибо
← →
Val (2002-08-08 14:34) [3]Хм, теперь задам нормальный вопрос :)
Ситуация: в хран. процедуре в зависимости от вх.параметра необходимо пройтись по разным курсорам, но выполнить одни и те же действия, как это сделать?
как увернуться от такого?
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;
← →
Johnmen (2002-08-08 14:56) [4]В ХП видимо так и придется делать...
Вот если это загнать в пакет, то для однотипных действий можно сделать процедурку...
← →
Val (2002-08-08 15:03) [5]это хп внутри пакета.
проблемка в том, что если создавать для этих действий процедуру, то туда нужно передавать rec.id..., a тип rec будет разным.
← →
Johnmen (2002-08-08 15:09) [6]А какая разница, что тип разный, ведь передавать, наверное, будешь значения полей (однотипных) ?
← →
Val (2002-08-08 15:10) [7]так не компилится, выдает ошибку о несоответствии количества параметров
← →
Johnmen (2002-08-08 15:14) [8]Как выглядит вызов и реализация упомянутой процедуры ?
← →
Val (2002-08-08 15:21) [9]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;
← →
Val (2002-08-08 15:38) [10]сорри, тут описался в предыдущем посте:
procedure local_proc(rec obj2% ROWTYPE)
← →
Johnmen (2002-08-08 15:49) [11]Может имеет смысл что-то вроде этого :
вызов
local_proc(rec.id,rec.name);
реализация
procedure local_proc(id integer,name varchar2(..))
as
begin
dosomething(id,name);--действий много
end;
← →
Val (2002-08-08 16:04) [12]да, думаю так сработало бы, но этих параметров уйма целая, поэтому я и хотел с типами курсора как-то хитро подмутить, да видно это единственный обходной путь.
Страницы: 1 вся ветка
Форум: "Базы";
Текущий архив: 2002.08.29;
Скачать: [xml.tar.bz2];
Память: 0.46 MB
Время: 0.007 c