powered by simpleCommunicator - 2.0.44     © 2025 Programmizd 02
Форумы / Oracle [игнор отключен] [закрыт для гостей] / Скрипт в Хранимую процедуру
8 сообщений из 8, страница 1 из 1
Скрипт в Хранимую процедуру
    #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
Скрипт в Хранимую процедуру
    #32059149
Trampler
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
А почему бы селектом из клиента не вызывать просто

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

?
...
Рейтинг: 0 / 0
Скрипт в Хранимую процедуру
    #32059169
roboforce
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
Я здесь написал, не весь скрипт, так как весь текст приводить, я думаю, не следует. Кто будет его весь читать?
А интересует меня именно то, что я спросил. Вывод выбранных строк "наверх".
...
Рейтинг: 0 / 0
Скрипт в Хранимую процедуру
    #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
Скрипт в Хранимую процедуру
    #32059186
roboforce
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
Я имел ввиду эквивалент такой конструкции Interbase
for
Select ma.MeterageValue from Meterage ma
into : MaVal
do
begin
suspend;
end;
Если ему подобный в oracle? suspend - приостанавливает выполнение выдавая одну строчку. И так по циклу...
...
Рейтинг: 0 / 0
Скрипт в Хранимую процедуру
    #32059240
Trampler
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
А для какого приложения это нужно? Просто запускать процедуру под SQL*Plus? Или показывать в формах каких-нибудь?
...
Рейтинг: 0 / 0
Скрипт в Хранимую процедуру
    #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
Скрипт в Хранимую процедуру
    #32059315
Trampler
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Если конечная задача - кинуть данные в Excel, то может стоит попытаться сделать это напрямую (из Oracle в таблицу Excel), через OLE например, или через ODBC на худой конец? Зачем хранить промежуточные данные, да еще построчно, а потом поклеточно раскладывать? А насчет Делфи - там же есть всякие DataSetы и Recordы - курсором(select) бегать по Ораклиным данным и кидать в Excel?
...
Рейтинг: 0 / 0
8 сообщений из 8, страница 1 из 1
Форумы / Oracle [игнор отключен] [закрыт для гостей] / Скрипт в Хранимую процедуру
Целевая тема:
Создать новую тему:
Автор:
Закрыть
Цитировать
Найденые пользователи ...
Разблокировать пользователей ...
Читали форум (0):
Пользователи онлайн (0):
x
x
Закрыть


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