|
Скрипт в Хранимую процедуру
|
|||
---|---|---|---|
#18+
Сразу скажу, я в Oracle новичек, не судите строго. Скажите, как преобразовать этот скрипт в хранимую процедуру, дабы вызвавать ее селектом из клиента(скажем Delphi) declare MAVal1 varchar2(11); begin for Mrec in (Select ma.MeterageValue from Meterage ma, ) loop MAVal := rpad(To_Char(Mrec.MeterageValue),8); dbms_output.put_line(MAVal); end loop; end; ... |
|||
:
Нравится:
Не нравится:
|
|||
17.10.2002, 12:45 |
|
Скрипт в Хранимую процедуру
|
|||
---|---|---|---|
#18+
А почему бы селектом из клиента не вызывать просто select rpad(To_Char(ma.MeterageValue),8) from Meterage ma; ? ... |
|||
:
Нравится:
Не нравится:
|
|||
17.10.2002, 12:52 |
|
Скрипт в Хранимую процедуру
|
|||
---|---|---|---|
#18+
Я здесь написал, не весь скрипт, так как весь текст приводить, я думаю, не следует. Кто будет его весь читать? А интересует меня именно то, что я спросил. Вывод выбранных строк "наверх". ... |
|||
:
Нравится:
Не нравится:
|
|||
17.10.2002, 13:31 |
|
Скрипт в Хранимую процедуру
|
|||
---|---|---|---|
#18+
Если на выходе нужна конкатенация строк, тогда есть проблемы с максимальной длиной строки, varchar2 наверное не покатит, придется CLOB использовать. Можно попробовать function Test return CLOB is cursor c is select MeterageValue from Meterage; v_res CLOB; begin DBMS_LOB.createtemporary(v_res,true); for Mrec in c loop v_res:=vres||' '||rpad(To_Char(Mrec.MeterageValue),8) end loop; return v_res; end Test; ... |
|||
:
Нравится:
Не нравится:
|
|||
17.10.2002, 13:34 |
|
Скрипт в Хранимую процедуру
|
|||
---|---|---|---|
#18+
Я имел ввиду эквивалент такой конструкции Interbase for Select ma.MeterageValue from Meterage ma into : MaVal do begin suspend; end; Если ему подобный в oracle? suspend - приостанавливает выполнение выдавая одну строчку. И так по циклу... ... |
|||
:
Нравится:
Не нравится:
|
|||
17.10.2002, 13:56 |
|
Скрипт в Хранимую процедуру
|
|||
---|---|---|---|
#18+
А для какого приложения это нужно? Просто запускать процедуру под SQL*Plus? Или показывать в формах каких-нибудь? ... |
|||
:
Нравится:
Не нравится:
|
|||
17.10.2002, 14:50 |
|
Скрипт в Хранимую процедуру
|
|||
---|---|---|---|
#18+
Мне нужно кинуть данные в Delphi. А потом по случаю перегнать в Excell. В приведенном скрипте дабы выдать данные построчно приходилось делать такое loop dbms_output.put_line(Pcode ||' '|| faddr ||' '|| pname ||' '|| pfhone ||' '|| Mnum||' '||MAVal); end loop; Выводит оно понятное дело так: 1. 111 ууу ккк ... 2. 345 щщ ... Но мне ж нужно разложить все по "клеточкам" в Экселе. Более того в SQL Developere буфер ограничен 1Мб. ... |
|||
:
Нравится:
Не нравится:
|
|||
17.10.2002, 15:19 |
|
Скрипт в Хранимую процедуру
|
|||
---|---|---|---|
#18+
Если конечная задача - кинуть данные в Excel, то может стоит попытаться сделать это напрямую (из Oracle в таблицу Excel), через OLE например, или через ODBC на худой конец? Зачем хранить промежуточные данные, да еще построчно, а потом поклеточно раскладывать? А насчет Делфи - там же есть всякие DataSetы и Recordы - курсором(select) бегать по Ораклиным данным и кидать в Excel? ... |
|||
:
Нравится:
Не нравится:
|
|||
17.10.2002, 16:29 |
|
|
start [/forum/topic.php?fid=52&fpage=2837&tid=1992910]: |
0ms |
get settings: |
12ms |
get forum list: |
14ms |
check forum access: |
4ms |
check topic access: |
4ms |
track hit: |
30ms |
get topic data: |
13ms |
get forum data: |
3ms |
get page messages: |
46ms |
get tp. blocked users: |
2ms |
others: | 13ms |
total: | 141ms |
0 / 0 |