![]() | |
![]() |
| | Thread Tools | Display Modes |
#1
| |||
| |||
|
#2
| |||
| |||
|
|
Hallo ! My PL/SQL -Script send me a Error-Message. I don't know how i find the error. i want add a new range partition in a existing table ? eclare v_date date; v_part varchar2(20); CURSOR context_date_cur IS Select distinct ext_frontend.context_date from ext_frontend; begin -- Test statements here IF NOT context_date_cur%ISOPEN THEN OPEN context_date_cur; END IF; LOOP FETCH context_date_cur into v_date; exit when context_date_cur%NOTFOUND; DBMS_OUTPUT.put_line(to_char(v_date)); v_part :='part_'||(to_char(v_date)); DBMS_OUTPUT.put_line(v_part); execute immediate 'alter table LOG_ANALYSE.FRONTEND_TAB add partition v_part values less than 1+to_date(v_date, DD.MM.YYYY); '; end loop; CLOSE context_date_cur; end; Hi Sansar, |
#3
| |||
| |||
|
|
Hallo ! My PL/SQL -Script send me a Error-Message. I don't know how i find the error. i want add a new range partition in a existing table ? eclare v_date date; v_part varchar2(20); CURSOR context_date_cur IS Select distinct ext_frontend.context_date from ext_frontend; begin -- Test statements here IF NOT context_date_cur%ISOPEN THEN OPEN context_date_cur; END IF; LOOP FETCH context_date_cur into v_date; exit when context_date_cur%NOTFOUND; DBMS_OUTPUT.put_line(to_char(v_date)); v_part :='part_'||(to_char(v_date)); DBMS_OUTPUT.put_line(v_part); execute immediate 'alter table LOG_ANALYSE.FRONTEND_TAB add partition v_part values less than 1+to_date(v_date, DD.MM.YYYY); '; end loop; CLOSE context_date_cur; end; |
#4
| |||
| |||
|
|
On 17 oct, 15:49, sansar <uemit.uen... (AT) googlemail (DOT) com> wrote: Hallo ! My PL/SQL -Script send me a Error-Message. I don't know how i find the error. i want add a new range partition in a existing table ? eclare v_date date; v_part varchar2(20); CURSOR context_date_cur IS Select distinct ext_frontend.context_date from ext_frontend; begin -- Test statements here IF NOT context_date_cur%ISOPEN THEN OPEN context_date_cur; END IF; LOOP FETCH context_date_cur into v_date; exit when context_date_cur%NOTFOUND; DBMS_OUTPUT.put_line(to_char(v_date)); v_part :='part_'||(to_char(v_date)); DBMS_OUTPUT.put_line(v_part); execute immediate 'alter table LOG_ANALYSE.FRONTEND_TAB add partition v_part values less than 1+to_date(v_date, DD.MM.YYYY); '; end loop; CLOSE context_date_cur; end; Whithout error message, a shoot in the dark but... Escape single ' characters for the date_format, perhaps? values less than 1+to_date(v_date, ''DD.MM.YYYY'') '; HTH Cheers. Carlos. |
#5
| |||
| |||
|
|
On 17 Okt., 16:25, Carlos <miotromailcar... (AT) netscape (DOT) net> wrote: On 17 oct, 15:49, sansar <uemit.uen... (AT) googlemail (DOT) com> wrote: Hallo ! My PL/SQL -Script send me a Error-Message. I don't know how i find the error. i want add a new range partition in a existing table ? eclare v_date date; v_part varchar2(20); CURSOR context_date_cur IS Select distinct ext_frontend.context_date from ext_frontend; begin -- Test statements here IF NOT context_date_cur%ISOPEN THEN OPEN context_date_cur; END IF; LOOP FETCH context_date_cur into v_date; exit when context_date_cur%NOTFOUND; DBMS_OUTPUT.put_line(to_char(v_date)); v_part :='part_'||(to_char(v_date)); DBMS_OUTPUT.put_line(v_part); execute immediate 'alter table LOG_ANALYSE.FRONTEND_TAB add partition v_part values less than 1+to_date(v_date, DD.MM.YYYY); '; end loop; CLOSE context_date_cur; end; Whithout error message, a shoot in the dark but... Escape single ' characters for the date_format, perhaps? values less than 1+to_date(v_date, ''DD.MM.YYYY'') '; HTH Cheers. Carlos. i have change the script, but i get this error message: ORA-00906: missing left parenthesis ORA-06512: at line 25 i execute the changing script: -- Created on 17.10.2007 by B018469 declare v_date varchar2(20); v_part varchar2(20); CURSOR context_date_cur IS Select distinct ext_frontend.context_date from ext_frontend; begin -- Test statements here IF NOT context_date_cur%ISOPEN THEN OPEN context_date_cur; END IF; LOOP FETCH context_date_cur into v_date; exit when context_date_cur%NOTFOUND; DBMS_OUTPUT.put_line(to_char(v_date)); v_part :='part_'||(to_char(v_date)); DBMS_OUTPUT.put_line(v_part); execute immediate 'alter table LOG_ANALYSE.FRONTEND_TAB add partition v_part values less than 1+to_date(v_date, "dd.mm.yyyy");'; end loop; CLOSE context_date_cur; end; |
#6
| |||
| |||
|
|
On 17 Okt., 16:25, Carlos <miotromailcar... (AT) netscape (DOT) net> wrote: On 17 oct, 15:49, sansar <uemit.uen... (AT) googlemail (DOT) com> wrote: Hallo ! My PL/SQL -Script send me a Error-Message. I don't know how i find the error. i want add a new range partition in a existing table ? eclare v_date date; v_part varchar2(20); CURSOR context_date_cur IS Select distinct ext_frontend.context_date from ext_frontend; begin -- Test statements here IF NOT context_date_cur%ISOPEN THEN OPEN context_date_cur; END IF; LOOP FETCH context_date_cur into v_date; exit when context_date_cur%NOTFOUND; DBMS_OUTPUT.put_line(to_char(v_date)); v_part :='part_'||(to_char(v_date)); DBMS_OUTPUT.put_line(v_part); execute immediate 'alter table LOG_ANALYSE.FRONTEND_TAB add partition v_part values less than 1+to_date(v_date, DD.MM.YYYY); '; end loop; CLOSE context_date_cur; end; Whithout error message, a shoot in the dark but... Escape single ' characters for the date_format, perhaps? values less than 1+to_date(v_date, ''DD.MM.YYYY'') '; HTH Cheers. Carlos. i have change the script, but i get this error message: ORA-00906: missing left parenthesis ORA-06512: at line 25 i execute the changing script: -- Created on 17.10.2007 by B018469 declare v_date varchar2(20); v_part varchar2(20); CURSOR context_date_cur IS Select distinct ext_frontend.context_date from ext_frontend; begin -- Test statements here IF NOT context_date_cur%ISOPEN THEN OPEN context_date_cur; END IF; LOOP FETCH context_date_cur into v_date; exit when context_date_cur%NOTFOUND; DBMS_OUTPUT.put_line(to_char(v_date)); v_part :='part_'||(to_char(v_date)); DBMS_OUTPUT.put_line(v_part); execute immediate 'alter table LOG_ANALYSE.FRONTEND_TAB add partition v_part values less than 1+to_date(v_date, "dd.mm.yyyy");'; end loop; CLOSE context_date_cur; end;- Hide quoted text - - Show quoted text - |
#7
| |||
| |||
|
|
sansar wrote: On 17 Okt., 16:25, Carlos <miotromailcar... (AT) netscape (DOT) net> wrote: On 17 oct, 15:49, sansar <uemit.uen... (AT) googlemail (DOT) com> wrote: Hallo ! My PL/SQL -Script send me a Error-Message. I don't know how i find the error. i want add a new range partition in a existing table ? eclare v_date date; v_part varchar2(20); CURSOR context_date_cur IS Select distinct ext_frontend.context_date from ext_frontend; begin -- Test statements here IF NOT context_date_cur%ISOPEN THEN OPEN context_date_cur; END IF; LOOP FETCH context_date_cur into v_date; exit when context_date_cur%NOTFOUND; DBMS_OUTPUT.put_line(to_char(v_date)); v_part :='part_'||(to_char(v_date)); DBMS_OUTPUT.put_line(v_part); execute immediate 'alter table LOG_ANALYSE.FRONTEND_TAB add partition v_part values less than 1+to_date(v_date, DD.MM.YYYY); '; end loop; CLOSE context_date_cur; end; Whithout error message, a shoot in the dark but... Escape single ' characters for the date_format, perhaps? values less than 1+to_date(v_date, ''DD.MM.YYYY'') '; HTH Cheers. Carlos. i have change the script, but i get this error message: ORA-00906: missing left parenthesis ORA-06512: at line 25 i execute the changing script: -- Created on 17.10.2007 by B018469 declare v_date varchar2(20); v_part varchar2(20); CURSOR context_date_cur IS Select distinct ext_frontend.context_date from ext_frontend; begin -- Test statements here IF NOT context_date_cur%ISOPEN THEN OPEN context_date_cur; END IF; LOOP FETCH context_date_cur into v_date; exit when context_date_cur%NOTFOUND; DBMS_OUTPUT.put_line(to_char(v_date)); v_part :='part_'||(to_char(v_date)); DBMS_OUTPUT.put_line(v_part); execute immediate 'alter table LOG_ANALYSE.FRONTEND_TAB add partition v_part values less than 1+to_date(v_date, "dd.mm.yyyy");'; end loop; CLOSE context_date_cur; end; If you want to be successful in Oracle you need to learn to read and pay attention ... you were asked for the version number. You didn't. Where in any Oracle doc did you ever see double quotes like this? "dd.mm.yyyy" And what about this requires PL/SQL or a CURSOR LOOP? Also please consider that were one needed your initial IF statement does nothing as the cursor can not possibly be open. This code is Oracle 7 ... and should not be written in any version more recent than 8.1.7.4. A basic course in PL/SQL programming would be very useful. -- Daniel A. Morgan University of Washington damor...@x.washington.edu (replace x with u to respond) Puget Sound Oracle Users Groupwww.psoug.org |
#8
| |||
| |||
|
|
On Oct 17, 9:45 am, sansar <uemit.uen... (AT) googlemail (DOT) com> wrote: On 17 Okt., 16:25, Carlos <miotromailcar... (AT) netscape (DOT) net> wrote: On 17 oct, 15:49, sansar <uemit.uen... (AT) googlemail (DOT) com> wrote: Hallo ! My PL/SQL -Script send me a Error-Message. I don't know how i find the error. i want add a new range partition in a existing table ? eclare v_date date; v_part varchar2(20); CURSOR context_date_cur IS Select distinct ext_frontend.context_date from ext_frontend; begin -- Test statements here IF NOT context_date_cur%ISOPEN THEN OPEN context_date_cur; END IF; LOOP FETCH context_date_cur into v_date; exit when context_date_cur%NOTFOUND; DBMS_OUTPUT.put_line(to_char(v_date)); v_part :='part_'||(to_char(v_date)); DBMS_OUTPUT.put_line(v_part); execute immediate 'alter table LOG_ANALYSE.FRONTEND_TAB add partition v_part values less than 1+to_date(v_date, DD.MM.YYYY); '; end loop; CLOSE context_date_cur; end; Whithout error message, a shoot in the dark but... Escape single ' characters for the date_format, perhaps? values less than 1+to_date(v_date, ''DD.MM.YYYY'') '; HTH Cheers. Carlos. i have change the script, but i get this error message: ORA-00906: missing left parenthesis ORA-06512: at line 25 i execute the changing script: -- Created on 17.10.2007 by B018469 declare v_date varchar2(20); v_part varchar2(20); CURSOR context_date_cur IS Select distinct ext_frontend.context_date from ext_frontend; begin -- Test statements here IF NOT context_date_cur%ISOPEN THEN OPEN context_date_cur; END IF; LOOP FETCH context_date_cur into v_date; exit when context_date_cur%NOTFOUND; DBMS_OUTPUT.put_line(to_char(v_date)); v_part :='part_'||(to_char(v_date)); DBMS_OUTPUT.put_line(v_part); execute immediate 'alter table LOG_ANALYSE.FRONTEND_TAB add partition v_part values less than 1+to_date(v_date, "dd.mm.yyyy");'; end loop; CLOSE context_date_cur; end;- Hide quoted text - - Show quoted text - The 'execute immediate' text is not going to produce what you expect it to the way you have it written. I believe it should be this: execute immediate 'alter table LOG_ANALYSE.FRONTEND_TAB add partition '||v_part||' values less than 1+to_date('''||v_date||''', "dd.mm.yyyy");'; You want the partition name to be the assigned value of the v_part variable, not V_PART. Also I think you want the value of v_date to be converted. These changes MAY fix your problem, they may not. They will ensure you get a partition named the way you intended, covering the range you expect. David Fitzjarrell |
#9
| |||
| |||
|
|
On 17 Okt., 17:39, "fitzjarr... (AT) cox (DOT) net" <fitzjarr... (AT) cox (DOT) net> wrote: On Oct 17, 9:45 am, sansar <uemit.uen... (AT) googlemail (DOT) com> wrote: On 17 Okt., 16:25, Carlos <miotromailcar... (AT) netscape (DOT) net> wrote: On 17 oct, 15:49, sansar <uemit.uen... (AT) googlemail (DOT) com> wrote: Hallo ! My PL/SQL -Script send me a Error-Message. I don't know how i find the error. i want add a new range partition in a existing table ? eclare v_date date; v_part varchar2(20); CURSOR context_date_cur IS Select distinct ext_frontend.context_date from ext_frontend; begin -- Test statements here IF NOT context_date_cur%ISOPEN THEN OPEN context_date_cur; END IF; LOOP FETCH context_date_cur into v_date; exit when context_date_cur%NOTFOUND; DBMS_OUTPUT.put_line(to_char(v_date)); v_part :='part_'||(to_char(v_date)); DBMS_OUTPUT.put_line(v_part); execute immediate 'alter table LOG_ANALYSE.FRONTEND_TAB add partition v_part values less than 1+to_date(v_date, DD.MM.YYYY); '; end loop; CLOSE context_date_cur; end; Whithout error message, a shoot in the dark but... Escape single ' characters for the date_format, perhaps? values less than 1+to_date(v_date, ''DD.MM.YYYY'') '; HTH Cheers. Carlos. i have change the script, but i get this error message: ORA-00906: missing left parenthesis ORA-06512: at line 25 i execute the changing script: -- Created on 17.10.2007 by B018469 declare v_date varchar2(20); v_part varchar2(20); CURSOR context_date_cur IS Select distinct ext_frontend.context_date from ext_frontend; begin -- Test statements here IF NOT context_date_cur%ISOPEN THEN OPEN context_date_cur; END IF; LOOP FETCH context_date_cur into v_date; exit when context_date_cur%NOTFOUND; DBMS_OUTPUT.put_line(to_char(v_date)); v_part :='part_'||(to_char(v_date)); DBMS_OUTPUT.put_line(v_part); execute immediate 'alter table LOG_ANALYSE.FRONTEND_TAB add partition v_part values less than 1+to_date(v_date, "dd.mm.yyyy");'; end loop; CLOSE context_date_cur; end;- Hide quoted text - - Show quoted text - The 'execute immediate' text is not going to produce what you expect it to the way you have it written. I believe it should be this: execute immediate 'alter table LOG_ANALYSE.FRONTEND_TAB add partition '||v_part||' values less than 1+to_date('''||v_date||''', "dd.mm.yyyy");'; You want the partition name to be the assigned value of the v_part variable, not V_PART. Also I think you want the value of v_date to be converted. These changes MAY fix your problem, they may not. They will ensure you get a partition named the way you intended, covering the range you expect. David Fitzjarrell Thank you ! i'm learning pl/sql and don't know that i get the value of a variable, when i write '||variable||' |
![]() |
| Thread Tools | |
| Display Modes | |
| |