Главная страница
    Top.Mail.Ru    Яндекс.Метрика
Форум: "Базы";
Текущий архив: 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
3-95672
Дмитрий757567
2002-08-08 11:39
2002.08.29
Что лучше SQL Server или MSSQL ?


3-95683
Fad
2002-08-08 11:20
2002.08.29
Помогите!!! Ошибка в базе данных.


14-95944
DeepProg
2002-08-02 19:21
2002.08.29
Education


1-95801
Lord BDV
2002-08-16 20:16
2002.08.29
Выше 64 MB на Windows 98 не прыгнешь !?!


7-95986
МИФИст
2002-06-18 21:34
2002.08.29
Выбор строки в ListView





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
Английский Французский Немецкий Итальянский Португальский Русский Испанский