Гость
Форумы / Oracle [игнор отключен] [закрыт для гостей] / Скрипт в Хранимую процедуру / 8 сообщений из 8, страница 1 из 1
17.10.2002, 12:45
    #32059144
roboforce
Гость
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Скрипт в Хранимую процедуру
Сразу скажу, я в 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;
...
Рейтинг: 0 / 0
17.10.2002, 12:52
    #32059149
Trampler
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Скрипт в Хранимую процедуру
А почему бы селектом из клиента не вызывать просто

select rpad(To_Char(ma.MeterageValue),8)
from Meterage ma;

?
...
Рейтинг: 0 / 0
17.10.2002, 13:31
    #32059169
roboforce
Гость
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Скрипт в Хранимую процедуру
Я здесь написал, не весь скрипт, так как весь текст приводить, я думаю, не следует. Кто будет его весь читать?
А интересует меня именно то, что я спросил. Вывод выбранных строк "наверх".
...
Рейтинг: 0 / 0
17.10.2002, 13:34
    #32059171
Trampler
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Скрипт в Хранимую процедуру
Если на выходе нужна конкатенация строк, тогда есть проблемы с максимальной длиной строки, 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;
...
Рейтинг: 0 / 0
17.10.2002, 13:56
    #32059186
roboforce
Гость
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Скрипт в Хранимую процедуру
Я имел ввиду эквивалент такой конструкции Interbase
for
Select ma.MeterageValue from Meterage ma
into : MaVal
do
begin
suspend;
end;
Если ему подобный в oracle? suspend - приостанавливает выполнение выдавая одну строчку. И так по циклу...
...
Рейтинг: 0 / 0
17.10.2002, 14:50
    #32059240
Trampler
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Скрипт в Хранимую процедуру
А для какого приложения это нужно? Просто запускать процедуру под SQL*Plus? Или показывать в формах каких-нибудь?
...
Рейтинг: 0 / 0
17.10.2002, 15:19
    #32059266
roboforce
Гость
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Скрипт в Хранимую процедуру
Мне нужно кинуть данные в Delphi. А потом по случаю перегнать в Excell. В приведенном скрипте дабы выдать данные построчно приходилось делать такое
loop
dbms_output.put_line(Pcode ||' '|| faddr ||' '|| pname ||' '|| pfhone ||' '|| Mnum||' '||MAVal);
end loop;
Выводит оно понятное дело так:
1. 111 ууу ккк ...
2. 345 щщ ...
Но мне ж нужно разложить все по "клеточкам" в Экселе.
Более того в SQL Developere буфер ограничен 1Мб.
...
Рейтинг: 0 / 0
17.10.2002, 16:29
    #32059315
Trampler
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Скрипт в Хранимую процедуру
Если конечная задача - кинуть данные в Excel, то может стоит попытаться сделать это напрямую (из Oracle в таблицу Excel), через OLE например, или через ODBC на худой конец? Зачем хранить промежуточные данные, да еще построчно, а потом поклеточно раскладывать? А насчет Делфи - там же есть всякие DataSetы и Recordы - курсором(select) бегать по Ораклиным данным и кидать в Excel?
...
Рейтинг: 0 / 0
Форумы / Oracle [игнор отключен] [закрыт для гостей] / Скрипт в Хранимую процедуру / 8 сообщений из 8, страница 1 из 1
Целевая тема:
Создать новую тему:
Автор:
Найденые пользователи ...
Разблокировать пользователей ...
Читали форум (0):
Пользователи онлайн (0):
x
x
Закрыть


Просмотр
0 / 0
Close
Debug Console [Select Text]