Здравствуйте!
Помогите пожалуйста!
Проблема в следующем: есть абсолютно работающий запрос, а при помещении его в SP
Oracle 9 выдает ошибки.
23/2 PL/SQL: ORA-00933: SQL command not properly ended
3/5 PL/SQL: SQL Statement ignored
24/5 PLS-00103: Encountered the symbol "end-of-file" when expecting one of the following:
begin case declare end exception exit for goto if loop mod
null pragma raise return select update while with
<an identifier> <a double-quoted delimited-identifier>
<a bind variable> << close current delete fetch lock insert
open rollback savepoint set sql execute commit forall merge
<a single-quoted SQL string> pipe
вот процедура
CREATE OR REPLACE PROCEDURE ANDREY.ProblemReport(Date1 IN VARCHAR2, Date2 IN VARCHAR2) IS
BEGIN
SELECT
element, cell, datetime,
ROUND(decode(h2106,0,0,h2142/h2106*100),3) c_drp_r,
DECODE((h2090+h2096+h2097),0,0,round((h2120+h2131+h2132)/(h2090+h2096+h2097)*100,3)) t_br_nrr,
ROUND(h2277*48/(100*60*60),3) T_TR,
ROUND(h7102*48/(100*60*60),3) TF_TR,
ROUND(h7103*48/(100*60*60),3) TH_TR,
DECODE(h2277,0,0,ROUND(h7103/h2277*100,3)) HR_USG,
h2279 cnf_trx,
h2280 av_trx,
er.b01 gos_tr,
DECODE(er.b01,0,0,ROUND(h2277*48/(100*60*60)/er.b01*100,3)) cell_utl,
DECODE(h2185,0,0,(DECODE(h2049,0,0,(DECODE(h2089,0,0,round(h2198/h2185*(1-h2070/h2049)*h2105/h2089*100,3)))))) cssr
FROM cellstats c, erlang er
WHERE
c.datetime >= to_date(Date1,'dd-mm-yyyy hh24:mi')--to_date('10-04-2008 12:00','dd-mm-yyyy hh24:mi')--to_date(Date1,'dd.mm.yyyy h24:mi')
AND c.datetime < to_date(Date2,'dd-mm-yyyy hh24:mi') --to_date('11-04-2008 12:00','dd-mm-yyyy hh24:mi')--to_date(Date2,'dd.mm.yyyy h24:mi')
AND c.h2277 > 0 AND c.h2279 <> c.h2280
AND er.n = ROUND(c.h2166/100,0)
ORDER BY TRUNC(datetime), cell, datetime
END;
/
Помогите please
За ранее благодарен.
Здравствуйте, CTAPOCTA87, Вы писали:
CTA>Проблема в следующем: есть абсолютно работающий запрос, а при помещении его в SP
CTA>Oracle 9 выдает ошибки.
1. Для помещения кода в сообщение пользуйся тегами [sql].
3. RTFM
SELECT INTO Statement
Здравствуйте, wildwind, Вы писали:
W>Здравствуйте, CTAPOCTA87, Вы писали:
CTA>>Проблема в следующем: есть абсолютно работающий запрос, а при помещении его в SP
CTA>>Oracle 9 выдает ошибки.
W>1. Для помещения кода в сообщение пользуйся тегами [sql].
W>3. RTFM SELECT INTO Statement

Все равно те же ошибки
Здравствуйте, CTAPOCTA87, Вы писали:
CTA>
Все равно те же ошибки
код процедуры и ошибку, пожалуйста
Здравствуйте, CTAPOCTA87, Вы писали:
Молодой человек, а что она, эта процедура, делает? Собственно все что в ней есть — это запрос в никуда. Че надо то? Если эта процедура должна генерировать отчет, то в какое место?
К примеру можно делать отчет для веба так:
create procedure make_test_report()
is
begin
htp.p('<table>');
for r in (select level as l, chr(level + 192) as ch from dual connect by level <= 33)
loop
htp.p('<tr><td>' || r.l || '</td><td>' || r.ch || '</td></tr>');
end loop;
htp.p('</table>');
end;
Или так
create procedure make_test_report()
is
cursor c is select level as l, chr(level + 192) as ch from dual connect by level <= 33;
begin
htp.p('<table>');
for r in c
loop
htp.p('<tr><td>' || r.l || '</td><td>' || r.ch || '</td></tr>');
end loop;
htp.p('</table>');
end;
или так
create procedure make_test_report()
is
cursor c is select level as l, chr(level + 192) as ch from dual connect by level <= 33;
r c%rowtype;
begin
htp.p('<table>');
open c;
fetch c into r;
loop
exit when c%notfound;
htp.p('<tr><td>' || r.l || '</td><td>' || r.ch || '</td></tr>');
fetch c into r;
close c;
htp.p('</table>');
end;
или так
create procedure make_test_report()
is
cursor c is select level as l, chr(level + 192) as ch from dual connect by level <= 33;
l number;
ch varchar2(1);
begin
htp.p('<table>');
open c;
fetch c into l, ch;
loop
exit when c%notfound;
htp.p('<tr><td>' || l || '</td><td>' || ch || '</td></tr>');
fetch c into r;
close c;
htp.p('</table>');
end;
или так
create procedure make_test_report()
is
cursor c is select level as l, chr(level + 192) as ch from dual connect by level <= 33;
l number;
ch varchar2(1);
begin
htp.p('<table>');
open c;
fetch c into l, ch;
loop
exit when c%notfound;
htp.p('<tr><td>' || l || '</td><td>' || ch || '</td></tr>');
fetch c into r;
close c;
htp.p('</table>');
end;
Здравствуйте, Перец, Вы писали:
Ой. Вот он. Вот. Пришел наш телепат. Вы наверное хотели сделать процедуру возвращающую вам таблицу(хотя как процедура должна возвращать значение, хоть бы и табличного типа, ума не приложу). Как в MS SQL. Ну тогда надо так.
create type type_for_function_for_getting_data_for_report is object
(l number, ch varchar2(1)); --:)
create function get_data_for_report() type_for_function_for_getting_data_for_report piplined
is
cursor c is select level as l, chr(l+192) as ch from dual connect by level <= 33;
begin
for r in c
loop
pipe row (type_for_function_for_getting_data_for_report(r.l, r.ch));
end loop;
end;
Ну или че та в этом духе.