Главная страница
Top.Mail.Ru    Яндекс.Метрика
Текущий архив: 2002.08.29;
Скачать: CL | DM;

Вниз

Динамический 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;
Скачать: CL | DM;

Наверх




Память: 0.49 MB
Время: 0.015 c
1-95759
N_M_A
2002-08-19 09:44
2002.08.29
Помогите начинающему!!!!!!


4-96019
LEXaP
2002-06-25 00:17
2002.08.29
Неактивный пункт меню сделать активным


4-96029
SergeySA
2002-06-26 18:13
2002.08.29
Как взять цвет c контрола (например с кнопки) в чужём окне?


14-95951
Hellman
2002-08-03 20:10
2002.08.29
Win XP Style


1-95762
Юрий Федоров
2002-08-19 14:31
2002.08.29
TMyForm = class(TForm, IMyForm)