|
|
|
Процедуда компиллируется с ошибками
|
|||
|---|---|---|---|
|
#18+
Помогите пожалуйста. Создал процедуру с курсором, но почему-то мне выдает сообщение , что мол поцедура создана с ошибками компиляции. Вот процедура: CREATE OR REPLACE PROCEDURE my_proc IS date1 IN VARCHAR2; date2 IN varchar2; CURSOR my_cursor (my_rec my_cursor%Rowtype) IS SELECT to_char (a.dtime,'DD.MM.YY HH24:MI:SS') "D", b.info "N", to_char (a.sum_no_fee / 100,'999999999999D99') "S", a.term_name "C" FROM trans a, trans_extra b WHERE a.uno = b.uno AND (b.cont_id = '0123' OR b.cont_id = '0010' OR b.cont_id = '0122' OR b.cont_id = '0121' OR b.cont_id = '0120') AND GOT BETWEEN TO_DATE ('||date1||', 'dd.mm.yyyy HH24:mi:ss') AND TO_DATE ('||date2||', 'dd.mm.yyyy HH24:mi:ss') ORDER BY "D"; BEGIN DBMS_OUTPUT.PUT_LINE ('D'||'N'||'S'||'C'); OPEN my_cursor; LOOP FETCH my_cursor INTO my_rec; EXIT WHEN my_cursor%NOTFOUND; DBMS_OUTPUT.PUT_LINE (my_rec.D||' '||my_rec.N||' '||my_rec.S||' '||my_rec.C); END LOOP; CLOSE my_cursor; END my_proc; Что тут не правильно? После успешной компилляции мне надо будет набрать следующее: EXECUT my_proc ('первая дата','вторая дата') Тогда выведет нужный мне результат. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 15.05.2003, 12:18 |
|
||
|
Процедуда компиллируется с ошибками
|
|||
|---|---|---|---|
|
#18+
CREATE OR REPLACE PROCEDURE my_proc(date1 IN VARCHAR2, date2 IN varchar2) IS CURSOR my_cursor (my_rec my_cursor%Rowtype) IS ....................... хотя если честно я не уверен что так можно передавать параметр курсору. Интересно чего не использовать for по курсору??? ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 15.05.2003, 12:26 |
|
||
|
Процедуда компиллируется с ошибками
|
|||
|---|---|---|---|
|
#18+
Да совсем забыл Традиционно: -версия сервера -какую ошибку выкинуло -в чём ты компилируешь ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 15.05.2003, 12:30 |
|
||
|
Процедуда компиллируется с ошибками
|
|||
|---|---|---|---|
|
#18+
Привет! Спасибо за ответ и за вопросы. Честно говоря, я не профи, только начаниющий. Версия сервера: Oracle7 Server Release 7.3.4.4.0 - Production SQL> @d:\sql\1.sql 35 / Warning: Procedure created with compilation errors. SQL> set serveroutput on SQL> begin 2 my_proc ('14.05.2003 00:00:00','14.05.2003 23:59:59') 3 end; 4 / begin * ERROR at line 1: ORA-06550: line 3, column 1: PLS-00103: Encountered the symbol "END" when expecting one of the following: := . ( % ; The symbol ";" was substituted for "END" to continue. ИЛИ ВОТ ТАК SQL> execute my_proc('14.05.2003 00:00:00','14.05.2003 23:59:59'); begin my_proc('14.05.2003 00:00:00','14.05.2003 23:59:59'); end; * ERROR at line 1: ORA-06550: line 1, column 7: PLS-00905: object GC.MY_PROC is invalid ORA-06550: line 1, column 7: PL/SQL: Statement ignored SQL> ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 15.05.2003, 12:43 |
|
||
|
Процедуда компиллируется с ошибками
|
|||
|---|---|---|---|
|
#18+
Вобщем то ты спросил чего там неверно - там всё неверно если честно У тебя процедура без параметров, а вызывается с параметрами у тебя переменная my_rec не объявлена я не уверен что в версии 73 можно вот так объявлять курсор. Установи какой-нибудь sqlNavigator или TOAD и посмотри что за ошибка. Компилирование в sqlplus это я считаю для отцов :-) Кстати в Оракле анонимные блоки выполняют так declare --переменные и курсоры begin --код end; ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 15.05.2003, 12:59 |
|
||
|
Процедуда компиллируется с ошибками
|
|||
|---|---|---|---|
|
#18+
После этого сообщения: Warning: Procedure created with compilation errors сделай: show errors ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 15.05.2003, 13:03 |
|
||
|
Процедуда компиллируется с ошибками
|
|||
|---|---|---|---|
|
#18+
SQL> show error Errors for PROCEDURE MY_PROC: LINE/COL ERROR -------- ----------------------------------------------------------------- 2/8 PLS-00103: Encountered the symbol "IN" when expecting one of the following: constant exception <an identifier> <a double-quoted delimited-identifier> table LONG_ double ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 15.05.2003, 13:11 |
|
||
|
Процедуда компиллируется с ошибками
|
|||
|---|---|---|---|
|
#18+
Сделал соответствующие оргвыводы ??? ;_) ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 15.05.2003, 13:14 |
|
||
|
Процедуда компиллируется с ошибками
|
|||
|---|---|---|---|
|
#18+
"CREATE OR REPLACE PROCEDURE my_proc IS date1 IN VARCHAR2; date2 IN varchar2; " Синтаксис хоть бы посмотрел. Код: plaintext 1. 2. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 15.05.2003, 13:20 |
|
||
|
Процедуда компиллируется с ошибками
|
|||
|---|---|---|---|
|
#18+
Я уже это исправил, но все равно ничего не получается, а по ошибке мне пока сложновато делать выводы и исправления, я только учусь. Может натолкнете на правильный путь? ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 15.05.2003, 13:29 |
|
||
|
Процедуда компиллируется с ошибками
|
|||
|---|---|---|---|
|
#18+
Если исправил, значит еще раз делаем show errors ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 15.05.2003, 13:32 |
|
||
|
Процедуда компиллируется с ошибками
|
|||
|---|---|---|---|
|
#18+
SQL> show errors Errors for PROCEDURE MY_PROC: LINE/COL ERROR -------- ----------------------------------------------------------------- 1/22 PLS-00103: Encountered the symbol "(" when expecting one of the following: begin function package pragma procedure subtype type use <an identifier> <a double-quoted delimited-identifier> cursor form 2/1 PLS-00103: Encountered the symbol "CURSOR" when expecting one of the following: * & - + ; / mod rem an exponent (**) and or || ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 15.05.2003, 13:44 |
|
||
|
Процедуда компиллируется с ошибками
|
|||
|---|---|---|---|
|
#18+
А текст процедуры ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 15.05.2003, 13:46 |
|
||
|
Процедуда компиллируется с ошибками
|
|||
|---|---|---|---|
|
#18+
CREATE OR REPLACE PROCEDURE my_proc IS (date1 IN VARCHAR2, date2 IN varchar2) CURSOR my_cursor (my_rec my_cursor%Rowtype) IS SELECT to_char (a.dtime,'DD.MM.YY HH24:MI:SS') "D", b.info "N", to_char (a.sum_no_fee / 100,'999999999999D99') "S", a.term_name "C" FROM trans a, trans_extra b WHERE a.uno = b.uno AND (b.cont_id = '0123' OR b.cont_id = '0010' OR b.cont_id = '0122' OR b.cont_id = '0121' OR b.cont_id = '0120') AND GOT BETWEEN TO_DATE ('||date1||', 'dd.mm.yyyy HH24:mi:ss') AND TO_DATE ('||date2||', 'dd.mm.yyyy HH24:mi:ss') ORDER BY "D"; BEGIN DBMS_OUTPUT.PUT_LINE ('D'||'N'||'S'||'C'); OPEN my_cursor; LOOP FETCH my_cursor INTO my_rec; EXIT WHEN my_cursor%NOTFOUND; DBMS_OUTPUT.PUT_LINE (my_rec.D||' '||my_rec.N||' '||my_rec.S||' '||my_rec.C); END LOOP; CLOSE my_cursor; END my_proc; ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 15.05.2003, 13:49 |
|
||
|
Процедуда компиллируется с ошибками
|
|||
|---|---|---|---|
|
#18+
CREATE OR REPLACE PROCEDURE my_proc ( date1 IN VARCHAR2,date2 IN varchar2) IS CURSOR my_cursor IS SELECT to_char (a.dtime,'DD.MM.YY HH24:MI:SS') "D", b.info "N", to_char (a.sum_no_fee / 100,'999999999999D99') "S", a.term_name "C" FROM trans a, trans_extra b WHERE a.uno = b.uno AND (b.cont_id In ( '0123','0010','0122', '0121', '0120') AND GOT BETWEEN TO_DATE (date1, 'dd.mm.yyyy HH24:mi:ss') AND TO_DATE (date2, 'dd.mm.yyyy HH24:mi:ss') ORDER BY 1; my_rec my_cursor%rowtype; BEGIN DBMS_OUTPUT.PUT_LINE ('D'||'N'||'S'||'C'); OPEN my_cursor; LOOP FETCH my_cursor INTO my_rec; EXIT WHEN my_cursor%NOTFOUND; DBMS_OUTPUT.PUT_LINE (my_rec.D||' '||my_rec.N||' '||my_rec.S||' '||my_rec.C); END LOOP; CLOSE my_cursor; exception When Others then dbms_output.put_line(sqlerrm(sqlcode)); END my_proc; ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 15.05.2003, 13:54 |
|
||
|
Процедуда компиллируется с ошибками
|
|||
|---|---|---|---|
|
#18+
SQL> @d:\sql\2.sql 36 / Warning: Procedure created with compilation errors. SQL> show errors Errors for PROCEDURE MY_PROC: LINE/COL ERROR -------- ----------------------------------------------------------------- 21/1 PLS-00103: Encountered the symbol "ORDER" when expecting one of the following: . ( ) , * % & - + / mod rem an exponent (**) and or || The symbol ")" was substituted for "ORDER" to continue. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 15.05.2003, 13:58 |
|
||
|
Процедуда компиллируется с ошибками
|
|||
|---|---|---|---|
|
#18+
Sorry! CREATE OR REPLACE PROCEDURE my_proc ( date1 IN VARCHAR2,date2 IN varchar2) IS CURSOR my_cursor IS SELECT to_char (a.dtime,'DD.MM.YY HH24:MI:SS') "D", b.info "N", to_char (a.sum_no_fee / 100,'999999999999D99') "S", a.term_name "C" FROM trans a, trans_extra b WHERE a.uno = b.uno AND (b.cont_id In ( '0123','0010','0122', '0121', '0120') ) AND GOT BETWEEN TO_DATE (date1, 'dd.mm.yyyy HH24:mi:ss') AND TO_DATE (date2, 'dd.mm.yyyy HH24:mi:ss') ORDER BY 1; my_rec my_cursor%rowtype; BEGIN DBMS_OUTPUT.PUT_LINE ('D'||'N'||'S'||'C'); OPEN my_cursor; LOOP FETCH my_cursor INTO my_rec; EXIT WHEN my_cursor%NOTFOUND; DBMS_OUTPUT.PUT_LINE (my_rec.D||' '||my_rec.N||' '||my_rec.S||' '||my_rec.C); END LOOP; CLOSE my_cursor; exception When Others then dbms_output.put_line(sqlerrm(sqlcode)); END my_proc; ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 15.05.2003, 14:05 |
|
||
|
Процедуда компиллируется с ошибками
|
|||
|---|---|---|---|
|
#18+
ВСЕ ПОЛУЧИЛОСЬ! СПАСИБО!!! Только еще есть маленький вопрос. А как в SQLNavigator можно набирать execute my_proc ('date1','date2') ? ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 15.05.2003, 14:15 |
|
||
|
Процедуда компиллируется с ошибками
|
|||
|---|---|---|---|
|
#18+
In Command Window:: Begin my_proc ('14.05.2003 00:00:00','14.05.2003 23:59:59'); end; Or "Run Procedure"'s option ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 15.05.2003, 14:19 |
|
||
|
Процедуда компиллируется с ошибками
|
|||
|---|---|---|---|
|
#18+
ОГРОМНОЕ СПАСИБО!!! Жаль только что результаты выодятся не в таблице, а то мне потом надо в EXCEL экспортировать данные. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 15.05.2003, 14:51 |
|
||
|
Процедуда компиллируется с ошибками
|
|||
|---|---|---|---|
|
#18+
А почему просто выполнить запрос не хочешь? ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 15.05.2003, 14:59 |
|
||
|
Процедуда компиллируется с ошибками
|
|||
|---|---|---|---|
|
#18+
Да, просто хотел поручить это одному сотруднику (новичку), и чтобы он случайно его не удалил, не испортил, и чтобы огромного количества вопросов не было. Пусть уж в базе храниться. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 15.05.2003, 15:08 |
|
||
|
Процедуда компиллируется с ошибками
|
|||
|---|---|---|---|
|
#18+
Оберни данные HTML- разметкой: Код: plaintext 1. 2. 3. 4. 5. 6. 7. 8. 9. 10. Открываешь Excel-ем - и всё замечательно. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 15.05.2003, 15:19 |
|
||
|
Процедуда компиллируется с ошибками
|
|||
|---|---|---|---|
|
#18+
Я конечно дико извиняюсь, но что-то я не пойму куда это вставлять. Я вообще в HTML не соображаю. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 15.05.2003, 15:49 |
|
||
|
|

start [/forum/topic.php?fid=52&msg=32160593&tid=1990552]: |
0ms |
get settings: |
7ms |
get forum list: |
15ms |
check forum access: |
3ms |
check topic access: |
3ms |
track hit: |
167ms |
get topic data: |
8ms |
get forum data: |
3ms |
get page messages: |
59ms |
get tp. blocked users: |
1ms |
| others: | 211ms |
| total: | 477ms |

| 0 / 0 |
