powered by simpleCommunicator - 2.0.61     © 2026 Programmizd 02
Целевая тема:
Создать новую тему:
Автор:
Закрыть
Цитировать
Форумы / Oracle [игнор отключен] [закрыт для гостей] / Проблема с Seq.currval
73 сообщений из 73, показаны все 3 страниц
Проблема с Seq.currval
    #33059789
kosiak
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
Суть такова : есть процедура , в которой поочерёдно делаются insert ....select ....
из основной базы в архив .... в архиве есть последовательность , так вот
запросы в процедуре создаются динамически и выполняются через
EXECUTE IMMEDIATE , в одном запросе выполняется
select rmo.vk_wav_seq.nextval@
,а в другом select rmo.vk_wav_seq.currval@

так вот во втором запросе возникает EXCEPTION и процедура обламывается с ORA-08002: последоват. VK_WAV_SEQ.CURRVAL ещё не определён в этом сеансе
ORA-02063: предшествующий line из [имя].[домен]
result = -8002


как можна побороть эту ошибку ? помогите советом .... мож чё нить не так делаю
...
Рейтинг: 0 / 0
Проблема с Seq.currval
    #33059891
Pavel Zenkevich
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
Код: plaintext
1.
2.
3.
4.
5.
ORA- 08002  sequence string.CURRVAL is not yet defined in this session

Cause: Sequence CURRVAL has been selected before sequence NEXTVAL.

Action: Select NEXTVAL from the sequence before selecting CURRVAL.

Вывод: нельзя делать select seq.currval, если в этой сессии ни разу не выполнялось select seq.nextval

-------------------------------------------------------
Кто людям помогает - тот тратит время зря. (с) Шапокляк
...
Рейтинг: 0 / 0
Проблема с Seq.currval
    #33059894
grom66
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
Для того чтобы выполнилось SQ_CONTRACT.NEXTVAL
необходимо в текущей сесии выполнить хотя бы один раз
SQ_CONTRACT.nextval
...
Рейтинг: 0 / 0
Проблема с Seq.currval
    #33059941
kosiak
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
Pavel Zenkevich
Код: plaintext
1.
2.
3.
4.
5.
ORA- 08002  sequence string.CURRVAL is not yet defined in this session

Cause: Sequence CURRVAL has been selected before sequence NEXTVAL.

Action: Select NEXTVAL from the sequence before selecting CURRVAL.

это я тоже читал .... но тогда чем характеризуется сессия ? одним запросом (динамическим) ?

Pavel Zenkevich
Вывод: нельзя делать select seq.currval, если в этой сессии ни разу не выполнялось select seq.nextval


или всё таки пределами процедуры ?
...
Рейтинг: 0 / 0
Проблема с Seq.currval
    #33060029
grom66
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
Пределами сесии.
...
Рейтинг: 0 / 0
Проблема с Seq.currval
    #33060060
waspwort
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
Код: plaintext
1.
2.
3.
4.
5.
6.
7.
8.
9.
10.
11.
12.
13.
14.
15.
16.
17.
18.
19.
20.
21.
22.
23.
24.
25.
26.
27.
28.
29.
30.
31.
32.
33.
34.
35.
36.
37.
38.
39.
40.
41.
42.
43.
44.
45.
Connected to Oracle8i Enterprise Edition Release  8 . 1 . 6 . 0 . 0  
Connected as igor


SQL> create sequence s1;

Sequence created

SQL> 
SQL> declare
   2   i int;
   3   begin
   4   select s1.currval into i from dual;
   5   end;
   6   /

declare
i int;
begin
select s1.currval into i from dual;
end;

ORA- 08002 : последов. S1.CURRVAL еще не определен в  этом сеансе
ORA- 06512 : íà  line  4 

SQL> 
SQL> declare
   2   i int;
   3   begin
   4   select s1.nextval into i from dual;
   5   end;
   6   /

PL/SQL procedure successfully completed

SQL> 
SQL> declare
   2   i int;
   3   begin
   4   select s1.currval into i from dual;
   5   end;
   6   /

PL/SQL procedure successfully completed

SQL> 

То есть curval определен во всей сессии, а не локально в процедуре
...
Рейтинг: 0 / 0
Проблема с Seq.currval
    #33060061
kosiak
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
grom66Пределами сесии.

логично , а сессия чем определяется ? разве хранимая процедура -- это не одна сессия ????
...
Рейтинг: 0 / 0
Проблема с Seq.currval
    #33060072
kosiak
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
waspwortТо есть curval определен во всей сессии, а не локально в процедуре

я об этом и говорю , поэтому и не могу понять причину ошибки ..... :-?
...
Рейтинг: 0 / 0
Проблема с Seq.currval
    #33060099
Фотография Elic
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
kosiakвозникает EXCEPTION и процедура обламывается с ORA-08002: последоват. VK_WAV_SEQ.CURRVAL ещё не определён в этом сеансе
ORA-02063: предшествующий line из [имя].[домен]как можна побороть эту ошибку ? помогите советом И что постоянно "обламывается"?
Суть в том, что последовательность удалённая . Возможно, между двумя запросами соединение с удалённой БД было разорвано и автоматически восстановлено.
В качестве workaraund-а: nextval можно сохранить в переменной, с которой впоследствии и работать.
...
Рейтинг: 0 / 0
Проблема с Seq.currval
    #33060101
Pavel Zenkevich
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
Код: plaintext
1.
2.
3.
4.
5.
6.
7.
8.
9.
10.
11.
12.
13.
14.
15.
16.
17.
18.
19.
20.
21.
22.
23.
24.
25.
26.
27.
28.
29.
30.
31.
32.
33.
34.
35.
36.
37.
38.
39.
40.
41.
42.
43.
44.
45.
46.
SQL*Plus: Release  9 . 2 . 0 . 5 . 0  - Production on Thu May  12   14 : 09 : 01   2005 

Copyright (c)  1982 ,  2002 , Oracle Corporation.  All rights reserved.

Connected to:
Oracle9i Enterprise Edition Release  9 . 2 . 0 . 5 . 0  - Production
With the Partitioning, OLAP and Oracle Data Mining options
JServer Release  9 . 2 . 0 . 5 . 0  - Production

SQL > set serveroutput on
SQL > declare
   2     a number;
   3   begin
   4     dbms_output.enable;
   5     execute immediate 'select seq_product.nextval@db13 from dual' into a;
   6     dbms_output.put_line('next='||a);
   7     execute immediate 'select seq_product.currval@db13 from dual' into a;
   8     dbms_output.put_line('curr='||a);
   9   end;
  10   /
next= 341 
curr= 341 

PL/SQL procedure successfully completed.

SQL > declare
   2     a number;
   3   begin
   4     dbms_output.enable;
   5     execute immediate 'select seq_product.nextval@db13 from dual' into a
   6     dbms_output.put_line('next='||a);
   7     rollback;
   8     execute immediate 'alter session close database link db13';
   9     execute immediate 'select seq_product.currval@db13 from dual' into a
  10     dbms_output.put_line('curr='||a);
  11   end;
  12   /
next= 346 
declare
*
ERROR at line  1 :
ORA- 08002 : sequence SEQ_PRODUCT.CURRVAL is not yet defined in this session
ORA- 02063 : preceding line from DB13
ORA- 06512 : at line  9 

SQL >

Может есть смысл показать текст процедуры?

-------------------------------------------------------
Кто людям помогает - тот тратит время зря. (с) Шапокляк
...
Рейтинг: 0 / 0
Проблема с Seq.currval
    #33060103
Фотография Vadim_Maximov
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Короче, в рамках сессии все должно работать:
Код: plaintext
1.
2.
3.
4.
5.
6.
7.
8.
9.
10.
11.
12.
13.
14.
15.
16.
17.
18.
19.
20.
21.
22.
23.
24.
25.
26.
27.
28.
29.
30.
31.
32.
33.
34.
35.
36.
37.
38.
39.
40.
41.
42.
43.
44.
45.
46.
47.
48.
49.
50.
51.
52.
53.
54.
55.
56.
57.
58.
59.
SQL> connect instructor/instructor@v901
Connected.
SQL> begin
   2     execute immediate 'create table test as select departments_seq.nextval as name, object_name from user_objects';
   3     execute immediate 'update test set name = departments_seq.currval';
   4     commit;
   5   end;
   6   /

PL/SQL procedure successfully completed.

SQL> select * from test;

      NAME OBJECT_NAME
---------- -----------------------------------------------------------------------------------------
     718190  ADD_JOB_HISTORY
     718190  COUNTRIES
     718190  COUNTRY_C_ID_PK
     718190  DEPARTMENTS
     718190  DEPARTMENTS_SEQ
     718190  DEPT_ID_PK
     718190  DEPT_LOCATION_IX
     718190  EMPLOYEES
     718190  EMPLOYEES_SEQ
     718190  EMP_DEPARTMENT_IX
     718190  EMP_DETAILS_VIEW

      NAME OBJECT_NAME
---------- -----------------------------------------------------------------------------------------
     718190  EMP_EMAIL_UK
     718190  EMP_EMP_ID_PK
     718190  EMP_JOB_IX
     718190  EMP_MANAGER_IX
     718190  EMP_NAME_IX
     718190  JHIST_DEPARTMENT_IX
     718190  JHIST_EMPLOYEE_IX
     718190  JHIST_EMP_ID_ST_DATE_PK
     718190  JHIST_JOB_IX
     718190  JOBS
     718190  JOB_HISTORY

      NAME OBJECT_NAME
---------- -----------------------------------------------------------------------------------------
     718190  JOB_ID_PK
     718190  LOCATIONS
     718190  LOCATIONS_SEQ
     718190  LOC_CITY_IX
     718190  LOC_COUNTRY_IX
     718190  LOC_ID_PK
     718190  LOC_STATE_PROVINCE_IX
     718190  REGIONS
     718190  REG_ID_PK
     718190  SECURE_DML
     718190  SECURE_EMPLOYEES

      NAME OBJECT_NAME
---------- -----------------------------------------------------------------------------------------
     718190  TEST
     718190  UPDATE_JOB_HISTORY
У вас подобный код или что-то иное? Может приведете нам полный текст процедуры?
...
Рейтинг: 0 / 0
Проблема с Seq.currval
    #33060155
waspwort
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
хм, кстати да, странная фишка с этим динамическим sql. вот ясоздаю 2 процедуры

Код: plaintext
1.
2.
3.
4.
5.
6.
create or replace procedure p is
i INT;
begin
  --execute immediate 'select s1.nextval from dual';
  select s1.nextval INTO i from dual;
end p;

Код: plaintext
1.
2.
3.
4.
5.
6.
create or replace procedure p1 is
i INT;
begin
  --execute immediate 'select s1.currvall from dual';
  select s1.nextval INTO i from dual;
end p1;

далее по очереди вызываю их в одном сеансе сначала p потом p1. так вот, в этом виде все работает нормально, а если раскомментариваю строку с динамическим вызовом, то ругается что curval не определен в данной сессии. Из-за чего такое могет быть???
...
Рейтинг: 0 / 0
Проблема с Seq.currval
    #33060162
waspwort
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
waspwortхм, кстати да, странная фишка с этим динамическим sql. вот ясоздаю 2 процедуры

Код: plaintext
1.
2.
3.
4.
5.
6.
create or replace procedure p is
i INT;
begin
  --execute immediate 'select s1.nextval from dual';
  select s1.nextval INTO i from dual;
end p;

Код: plaintext
1.
2.
3.
4.
5.
6.
create or replace procedure p1 is
i INT;
begin
  --execute immediate 'select s1.currvall from dual';
  select s1.nextval INTO i from dual;
end p1;

да, во второй процедуре, там nextval читать как currval...

далее по очереди вызываю их в одном сеансе сначала p потом p1. так вот, в этом виде все работает нормально, а если раскомментариваю строку с динамическим вызовом, то ругается что curval не определен в данной сессии. Из-за чего такое могет быть???
...
Рейтинг: 0 / 0
Проблема с Seq.currval
    #33060190
kosiak
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
Pavel Zenkevich Может есть смысл показать текст процедуры?

всю не могу, сорри, но этого куска должно хватить

Код: plaintext
1.
2.
3.
4.
5.
6.
7.
8.
9.
10.
11.
12.
13.
14.
15.
16.
17.
18.
19.
20.
21.
22.
23.
24.
25.
26.
27.
28.
29.
30.
31.
32.
33.
34.
35.
36.
37.
38.
39.
40.
41.
42.
43.
44.
45.
46.
47.
Create Or Replace PROCEDURE PROC_NAME
   ( wav_id IN number,
     global_archname IN varchar2,  
     tabname IN varchar2,   
     result   out number 
          )
   IS
   sql_stmt0    VARCHAR2( 255 );
   sql_stmt1    VARCHAR2( 255 );
   sql_stmt2    VARCHAR2( 255 );
   sql_stmt3    VARCHAR2( 255 );
   vk_wav_seq   number;
   ftablename   VARCHAR2( 255 );
   wavlog_name  VARCHAR2( 255 );
   awav_date    date;
   res_wavid    number;
BEGIN
 result:= 0 ; 

--insert to vk_wav
 sql_stmt0:='insert into rmo.vk_wav@'||global_archname||' (wav_id,oldwav_id,hid,';
 sql_stmt1:='imsi,imei,msisdn,wav_date,wav_type,rec_time,fsize,prior1,cnt_sms,rtc,resume1,result,obj_idm,dnrs,cnrs,cells1,cells_time,cells2,cells3,cells4,cells5,cells6,cells7,cells8,cells9,cells10,fcl,dtmf) ';
 sql_stmt2:='select rmo.vk_wav_seq.nextval@'||global_archname||','||TO_Char(wav_id)||',hid,imsi,imei,msisdn,wav_date,wav_type,rec_time,fsize,prior1,cnt_sms,rtc,resume1,result,obj_idm,dnrs,cnrs,cells1,cells_time,';
 sql_stmt3:='cells2,cells3,cells4,cells5,cells6,cells7,cells8,cells9,cells10,fcl,dtmf from rmo.'||tabname||' where  wav_id='||TO_CHAR(wav_id);
 EXECUTE IMMEDIATE sql_stmt0||sql_stmt1||sql_stmt2||sql_stmt3;

--insert to vk_act
   ftablename:=sysadm.convertname('WAV','ACT',tabname);
   sql_stmt0:='insert into rmo.vk_act@'||global_archname||' (wav_id,act,usr_gr) ';
   sql_stmt1:='select rmo.vk_wav_seq.currval@'||global_archname||',act,usr_gr ';
   sql_stmt2:='from rmo.'||ftablename||' where wav_id='||TO_CHAR(wav_id);
  EXECUTE IMMEDIATE sql_stmt0||sql_stmt1||sql_stmt2;
.................................................................
.................................................................
.................................................................
<<U>>
null; 

 COMMIT WORK;
EXCEPTION
    WHEN others THEN
    begin
        DBMS_OUTPUT.put_line (SUBSTR(SQLERRM,  1 ,  150 ));
        result:=SQLCODE;   
        ROLLBACK WORK;
    end;    
END; -- Procedure

надеюсь вы рассмотрите последовательность .....
вот где-то так .....
...
Рейтинг: 0 / 0
Проблема с Seq.currval
    #33060256
он же
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Эээ...
Проще поюзать RETURNING INTO.
...
Рейтинг: 0 / 0
Проблема с Seq.currval
    #33060285
kosiak
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
он жеЭээ...
Проще поюзать RETURNING INTO.

с этого места поподробнее пожалуйста
...
Рейтинг: 0 / 0
Проблема с Seq.currval
    #33060304
waspwort
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
kosiak он жеЭээ...
Проще поюзать RETURNING INTO.

с этого места поподробнее пожалуйста

матчасть.....

Код: plaintext
1.
2.
3.
4.
5.
begin
  -- Test statements here
  INSERT INTO t1 VALUES (s1.nextval) RETURNING id INTO :i;
  INSERT INTO t1 VALUES (:i);
end;
...
Рейтинг: 0 / 0
Проблема с Seq.currval
    #33060338
kosiak
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
проблема в том , что запросы строятся динамически ...... а инкремент нужен .....
...
Рейтинг: 0 / 0
Проблема с Seq.currval
    #33060347
он же
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
kosiakпроблема в том , что запросы строятся динамически ...... а инкремент нужен .....
Насколько я понял, первый инсерт у вас вставляет одну строку?
...
Рейтинг: 0 / 0
Проблема с Seq.currval
    #33060405
kosiak
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
да, там вставляется по строке в каждую таблицу за один вызов процедуры
...
Рейтинг: 0 / 0
Проблема с Seq.currval
    #33060410
Фотография Vadim_Maximov
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
!
ElicСуть в том, что последовательность удалённая . Возможно, между двумя запросами соединение с удалённой БД было разорвано и автоматически восстановлено.
В качестве workaraund-а: nextval можно сохранить в переменной, с которой впоследствии и работать.
...
Рейтинг: 0 / 0
Проблема с Seq.currval
    #33060430
kosiak
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
то есть нужно искать другой путь ?
...
Рейтинг: 0 / 0
Проблема с Seq.currval
    #33060442
waspwort
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
kosiakто есть нужно искать другой путь ?

А чем returning или select into не устраивает то???
...
Рейтинг: 0 / 0
Проблема с Seq.currval
    #33060561
kosiak
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
waspwortА чем returning или select into не устраивает то???

я объясню ..... путь к базе передаётся в виде переменной , то есть строка запроса формируется динамически , для того чтобы сделать select into нужно в динамическую строку вплести переменную ,или же создавать курсор, поэтому я и прошу мне помочь , так как не до конца понимаю , как правильно это сделать ......
...
Рейтинг: 0 / 0
Проблема с Seq.currval
    #33060621
waspwort
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
kosiak waspwortА чем returning или select into не устраивает то???

я объясню ..... путь к базе передаётся в виде переменной , то есть строка запроса формируется динамически , для того чтобы сделать select into нужно в динамическую строку вплести переменную ,или же создавать курсор, поэтому я и прошу мне помочь , так как не до конца понимаю , как правильно это сделать ......

и судя по всему global_archname и есть та самая переменная? А сколько она может принимать значений? Если немного, то почему бы не написать в лоб, что нить вроде
Код: plaintext
1.
2.
3.
4.
5.
6.
7.
8.
case global_archname
      'db1': insert into t1@db1....
      'db2': insert into t1@db2....
       .....
      'dbn': insert into t1@dbn....
end case;


или я опять чего не понял?
...
Рейтинг: 0 / 0
Проблема с Seq.currval
    #33060633
kosiak
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
waspwortи судя по всему global_archname и есть та самая переменная? А сколько она может принимать значений? Если немного, то почему бы не написать в лоб, что нить вроде
Код: plaintext
1.
2.
3.
4.
5.
6.
7.
8.
case global_archname
      'db1': insert into t1@db1....
      'db2': insert into t1@db2....
       .....
      'dbn': insert into t1@dbn....
end case;


или я опять чего не понял? ---где-то так
если бы я заранее знал значение этой переменной , я бы наверно сюда бы и не обратился , а так она передаётся извне , и её значения я не знаю в принципе ...
то есть от динамического запроса , я уйти не могу ... никак ....
...
Рейтинг: 0 / 0
Проблема с Seq.currval
    #33060647
waspwort
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
kosiak
если бы я заранее знал значение этой переменной


А как это ты не знаешь ее значение? это ведь узлы распределенной БД. А они все прописаны в файле tnsnames.ora........
...
Рейтинг: 0 / 0
Проблема с Seq.currval
    #33060675
kosiak
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
waspwortА как это ты не знаешь ее значение? это ведь узлы распределенной БД. А они все прописаны в файле tnsnames.ora........

не удивляйся так сильно , просто я не знаю где будет стоять эта база , а прототип делается сейчас , потом будет создан дамп , и там развёрнут ...... вот и всё
ЗЫ: кста ... указать сейчас жёсткий путь к базе , и требовать чтоб при установке её обозвали именно так я не могу ....(это дабы избежать ненужных замечаний)
...
Рейтинг: 0 / 0
Проблема с Seq.currval
    #33060804
Фотография Vadim Zh
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Если вставляется одна строка, то почему
в самом начале в динамическом SQL не получить
NEXTVAL, а потом выполнять оба INSERT???

С уважением, Вадим.
...
Рейтинг: 0 / 0
Проблема с Seq.currval
    #33060884
kosiak
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
Vadim ZhЕсли вставляется одна строка, то почему
в самом начале в динамическом SQL не получить
NEXTVAL, а потом выполнять оба INSERT???

С уважением, Вадим.
2 Vadim Zh
я тоже пришёл к этому , есть только один ньюанс ,помоги ... как это корректно сделать ... плиииз
...
Рейтинг: 0 / 0
Проблема с Seq.currval
    #33061394
Фотография Павел Воронцов
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Код: plaintext
1.
2.
3.
4.
5.
6.
.....
--insert to vk_wav
 sql_stmt0:='insert into rmo.vk_wav@'||global_archname||' (wav_id,oldwav_id,hid,';
 sql_stmt1:='imsi,imei,msisdn,wav_date,wav_type,rec_time,fsize,prior1,cnt_sms,rtc,resume1,result,obj_idm,dnrs,cnrs,cells1,cells_time,cells2,cells3,cells4,cells5,cells6,cells7,cells8,cells9,cells10,fcl,dtmf) ';
 sql_stmt2:='select rmo.vk_wav_seq.nextval@'||global_archname||','||TO_Char(wav_id)||',hid,imsi,imei,msisdn,wav_date,wav_type,rec_time,fsize,prior1,cnt_sms,rtc,resume1,result,obj_idm,dnrs,cnrs,cells1,cells_time,';
 sql_stmt3:='cells2,cells3,cells4,cells5,cells6,cells7,cells8,cells9,cells10,fcl,dtmf from rmo.'||tabname||' where  wav_id='||TO_CHAR(wav_id);
 EXECUTE IMMEDIATE sql_stmt0||sql_stmt1||sql_stmt2||sql_stmt3 RETURNING wav_id into new_wav_id;
???
...
Рейтинг: 0 / 0
Проблема с Seq.currval
    #33061430
Pavel Zenkevich
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
RTFM
-------------------------------------------------------
Кто людям помогает - тот тратит время зря. (с) Шапокляк
...
Рейтинг: 0 / 0
Проблема с Seq.currval
    #33061615
kosiak
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
2Pavel Zenkevich

пасиба ... толковая ссылочка
...
Рейтинг: 0 / 0
Проблема с Seq.currval
    #33061701
Stax.
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Смотрел, смотрел не могу понять,
почему слет
вот такое у меня работает
Код: plaintext
1.
2.
3.
4.
5.
6.
declare
begin
  execute immediate 'insert into t select stax.s.nextval@odb_grant from dual';
  execute immediate 'insert into t select stax.s.currval@odb_grant from dual';
null;
end;

мож Вас первый не отрабатывает,
нуль строк вставлено из-за where,
тода будет слет
...
Рейтинг: 0 / 0
Проблема с Seq.currval
    #33061777
kosiak
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
Stax.мож Вас первый не отрабатывает,
нуль строк вставлено из-за where,
тода будет слет

да не знаю я , поэтому и спрашиваю ... хотя nextval вродь отрабатывает

2Павел Воронцов
а чё .. тоже мысль .. пасиба
...
Рейтинг: 0 / 0
Проблема с Seq.currval
    #33061822
kosiak
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
Павел Воронцов
Код: plaintext
1.
2.
3.
4.
5.
6.
.....
--insert to vk_wav
 sql_stmt0:='insert into rmo.vk_wav@'||global_archname||' (wav_id,oldwav_id,hid,';
 sql_stmt1:='imsi,imei,msisdn,wav_date,wav_type,rec_time,fsize,prior1,cnt_sms,rtc,resume1,result,obj_idm,dnrs,cnrs,cells1,cells_time,cells2,cells3,cells4,cells5,cells6,cells7,cells8,cells9,cells10,fcl,dtmf) ';
 sql_stmt2:='select rmo.vk_wav_seq.nextval@'||global_archname||','||TO_Char(wav_id)||',hid,imsi,imei,msisdn,wav_date,wav_type,rec_time,fsize,prior1,cnt_sms,rtc,resume1,result,obj_idm,dnrs,cnrs,cells1,cells_time,';
 sql_stmt3:='cells2,cells3,cells4,cells5,cells6,cells7,cells8,cells9,cells10,fcl,dtmf from rmo.'||tabname||' where  wav_id='||TO_CHAR(wav_id);
 EXECUTE IMMEDIATE sql_stmt0||sql_stmt1||sql_stmt2||sql_stmt3 RETURNING wav_id into new_wav_id;
???

попробовал ... сделал так и получил :
Код: plaintext
( 1 ): PLS- 00103 :встретился символ "WAV_ID" в то время как ожидалось одно из следующих:
...
Рейтинг: 0 / 0
Проблема с Seq.currval
    #33062049
Stax.
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
kosiak Stax.мож Вас первый не отрабатывает,
нуль строк вставлено из-за where,
тода будет слет

да не знаю я , поэтому и спрашиваю ... хотя nextval вродь отрабатывает


А Вы нарошно спалите еще одним первым (фиктивным from dual)
селектом номер,
и посмотрите слетит ли

ЗЫ
если оператор не один, надо обрамлять блоком
...
Рейтинг: 0 / 0
Проблема с Seq.currval
    #33062161
kosiak
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
nextval выполняется сто пудов , а потом .... на этом мысль заканчивается .....
...
Рейтинг: 0 / 0
Проблема с Seq.currval
    #33062304
Stax.
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
kosiaknextval выполняется сто пудов , а потом .... на этом мысль заканчивается .....А мои две сторчки тоже слетают?
Код: plaintext
1.
2.
3.
4.
begin
  execute immediate 'insert into t select stax.s.nextval@odb_grant from dual';
  execute immediate 'insert into t select stax.s.currval@odb_grant from dual';
end;
...
Рейтинг: 0 / 0
Проблема с Seq.currval
    #33062347
Фотография Oleg Afanasiev
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Возможно у вас между этими двумя выполнениями закрывается линк.

...
Рейтинг: 0 / 0
Проблема с Seq.currval
    #33062478
kosiak
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
2 Stax.
нет .. твой прикол работает :) ... не работает мой и это странно :( , так как по мнению очевидцев раньше аналогичные вещи проходили на ура .....
есть другой вариант ... писатть отдельную функцию на получение nextval и из неё выгребать result в виде нужного номера .. но вопрос с формированием динамической строки остался открытым ...
...
Рейтинг: 0 / 0
Проблема с Seq.currval
    #33062611
Stax.
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Выходы есть разные, надо найти почему слетает

Мож у вас в rmo -о русское

Упрощайте строку вплоть до литерала (влоб текст инсерта)

ОФФТОПИК
Я поначалу подумал что execute вы@$%"№тся,
тут на недельке закралось у меня подозрение на связку
бин переменных и паралель,
такое получил ...(ужас),
но ничего дождусь девятки, буду радоватся
...
Рейтинг: 0 / 0
Проблема с Seq.currval
    #33062691
kosiak
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
Stax.Упрощайте строку вплоть до литерала (влоб текст инсерта)

сделал даже проще : создал в основной базе сиквенс и иду от него ... , возникла другая проблема
Код: plaintext
ORA- 02019 : описание соединения для удалённой БД не найдено
хотя всё трижды проверял , ошибки быть не может .. всё верно ... делал запрос, где явно указывался путь .... всё намана .... есть какие-либо соображения ?
...
Рейтинг: 0 / 0
Проблема с Seq.currval
    #33062715
Фотография Oleg Afanasiev
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
kosiak
сделал даже проще : создал в основной базе сиквенс и иду от него ...
...
Рейтинг: 0 / 0
Проблема с Seq.currval
    #33062737
Stax.
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
kosiak
возникла другая проблема
Код: plaintext
ORA- 02019 : описание соединения для удалённой БД не найдено
хотя всё трижды проверял , ошибки быть не может .. всё верно ... делал запрос, где явно указывался путь .... всё намана .... есть какие-либо соображения ?

Нет или пользователь не видит линка
из другой базы (где нет линка)
Код: plaintext
1.
2.
3.
4.
5.
6.
7.
8.
9.
10.
11.
SQL> begin
   2     execute immediate 'insert into t select stax.s.nextval@odb_grant from dual';
   3     execute immediate 'insert into t select stax.s.currval@odb_grant from dual';
   4   end;
   5   
   6   /
begin
*
ERROR at line  1 :
ORA- 02019 : описание соединения для удаленной БД не найдено
ORA- 06512 : на  line  2 
...
Рейтинг: 0 / 0
Проблема с Seq.currval
    #33062756
kosiak
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
2 Stax. Линк я делал вчера , как и саму БД , всё проверил и перепроверил ... обычные запросы проходят " на ура " , а эта байда не работает :( ....
...
Рейтинг: 0 / 0
Проблема с Seq.currval
    #33062902
Stax.
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
kosiak2 Stax. Линк я делал вчера , как и саму БД , всё проверил и перепроверил ... обычные запросы проходят " на ура " , а эта байда не работает :( ....

Где-то банальная очепятка,
туман опустился

зы
мож просто надо отдохнуть
...
Рейтинг: 0 / 0
Проблема с Seq.currval
    #33063002
kosiak
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
Stax.
Где-то банальная очепятка,
туман опустился

зы
мож просто надо отдохнуть

неа , опечаток быть не может ... выкусывал запрос и проверял отдельно , он работает ... всё с сиквенсом я всё решил через банальный курсор .... теперь вопрос в другом .....
Код: plaintext
1.
ORA- 00942 : таблица или представление пользователя не существуют
result = - 942 
хотя я брал реально существующую таблицу ... блин как назло , не одно так другое .... :((
а отдыхать некогда .. реально это всё надо сделать "ещё вчера" :)
...
Рейтинг: 0 / 0
Проблема с Seq.currval
    #33063044
kosiak
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
kosiak .... теперь вопрос в другом .....
Код: plaintext
1.
ORA- 00942 : таблица или представление пользователя не существуют
result = - 942 


кто подскажет ... в каких случаях возникает такая ошибка ? чтобы корректно подойти ка проблеме .... может она быть из-за того , что я ввожу параметры , которых реально нет в таблице , из которой делается select???
ЗЫ: извините , за такой непонятный вопрос .. с красноречием и ораторским изречением я не очень дружу ....
...
Рейтинг: 0 / 0
Проблема с Seq.currval
    #33063148
Stax.
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
ORA-00942:
Самое простое
1 выдать права на таблицу явно , а не перез роль
2 поробовать с правами вызывающего (authid CURRENT_USER)
...
Рейтинг: 0 / 0
Проблема с Seq.currval
    #33063219
kosiak
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
Stax.ORA-00942:
Самое простое
1 выдать права на таблицу явно , а не перез роль
2 поробовать с правами вызывающего (authid CURRENT_USER)

с правами проблем нет , да и прямые запросы проходят (статические) , а вот динамические нивкакую :(
...
Рейтинг: 0 / 0
Период между сообщениями больше года.
Проблема с Seq.currval
    #37559306
TAnton
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
как думаете, нормально так сделать:

Код: plaintext
1.
2.
3.
4.
5.
6.
7.
8.
9.
10.
11.
12.
13.
DECLARE TMPVAL INTEGER;
BEGIN
  SELECT MYSEQ.CURRVAL
  INTO TMPVAL
  FROM DUAL;
  
  EXCEPTION
    WHEN OTHERS THEN
      SELECT MYSEQ.NEXTVAL
      INTO TMPVAL
      FROM DUAL;
 
END;
...
Рейтинг: 0 / 0
Проблема с Seq.currval
    #37559318
Vint
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
как думаеш какую ошибку тебе может дать
Код: plaintext
1.
2.
3.
SELECT MYSEQ.CURRVAL
  INTO TMPVAL
  FROM DUAL;


что понадобится взять следующее?)
...
Рейтинг: 0 / 0
Проблема с Seq.currval
    #37559377
TAnton
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
Vint,
Как раз ту, про которую тема: последов. MYSEQ.CURRVAL еще не определен в этом сеансе.
...
Рейтинг: 0 / 0
Проблема с Seq.currval
    #37559389
Vint
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
тогда почему others вместо 08002?
...
Рейтинг: 0 / 0
Проблема с Seq.currval
    #37559399
TAnton
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
Vint,
ок, поставлю 08002. Нормально будет?
...
Рейтинг: 0 / 0
Проблема с Seq.currval
    #37559406
Vint
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
ну, если ожидаемое поведение именно такое, почему бы нет?
...
Рейтинг: 0 / 0
Проблема с Seq.currval
    #37560331
alex-ls
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
TAntonVint,
Как раз ту, про которую тема: последов. MYSEQ.CURRVAL еще не определен в этом сеансе.
это динамический SQL?
...
Рейтинг: 0 / 0
Проблема с Seq.currval
    #37560368
TAnton
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
нет, такая особенность алгоритма, под новое значение выдать новый ID, если значение не изменилось (определяю функцией LED), то старое значение. По алгоритму в первом элементе набора данных всегда генерится новое значение. А оракл этого не понимает и выдает ошибку
...
Рейтинг: 0 / 0
Проблема с Seq.currval
    #37560373
alex-ls
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
TAntonнет, такая особенность алгоритма...
если это не динамический SQL, то еще на этапе компиляции Вы получите ошибку.
...
Рейтинг: 0 / 0
Проблема с Seq.currval
    #37561210
stepmich
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
...
Рейтинг: 0 / 0
Проблема с Seq.currval
    #37561212
stepmich
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
waspwort,
...
Рейтинг: 0 / 0
Проблема с Seq.currval
    #37561252
stax..
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
alex-lsTAntonнет, такая особенность алгоритма...
если это не динамический SQL, то еще на этапе компиляции Вы получите ошибку.
Код: plaintext
1.
2.
3.
4.
5.
6.
7.
8.
9.
10.
11.
12.
13.
14.
15.
16.
17.
18.
19.
20.
  1  DECLARE TMPVAL INTEGER;
  2  BEGIN
  3    TMPVAL:= S.CURRVAL;
  4    dbms_output.put_line('CURRVAL '||  S.CURRVAL);
  5    EXCEPTION
  6      WHEN OTHERS THEN
  7        TMPVAL:=S.NEXTVAL;
  8      dbms_output.put_line('NEXTVAL '||  S.CURRVAL);
  9* END;
 10  /
NEXTVAL 160

PL/SQL procedure successfully completed.

SQL> /
CURRVAL 160

PL/SQL procedure successfully completed.

SQL>
...
Рейтинг: 0 / 0
Проблема с Seq.currval
    #37562226
alex-ls
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
да этот вариант (анонимный блок) я пропустил в своей голове :) хотя он был и написан явно
...
Рейтинг: 0 / 0
Проблема с Seq.currval
    #37562227
Вячеслав Любомудров
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Ога, именно анонимный блок
...
Рейтинг: 0 / 0
Проблема с Seq.currval
    #37563415
ыефчююю
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
Вячеслав ЛюбомудровОга, именно анонимный блок
ничого не понимаю

блин, перепразднував я День армії, а еще і Катерины

Код: plsql
1.
2.
3.
4.
5.
6.
7.
8.
9.
10.
11.
12.
13.
14.
15.
16.
17.
18.
19.
20.
21.
22.
23.
24.
  1  create or replace procedure stax_test_currval is
  2  TMPVAL INTEGER;
  3   BEGIN
  4     TMPVAL:= S.CURRVAL;
  5     dbms_output.put_line('CURRVAL '||  S.CURRVAL);
  6     EXCEPTION
  7        WHEN OTHERS THEN
  8          TMPVAL:=S.NEXTVAL;
  9        dbms_output.put_line('NEXTVAL '||  S.CURRVAL);
 10* END;
SQL> /

Procedure created.

SQL> set serveroutput on
SQL> exec stax_test_currval;
NEXTVAL 180

PL/SQL procedure successfully completed.

SQL> exec stax_test_currval;
CURRVAL 180

PL/SQL procedure successfully completed.




ps


.....
stax
...
Рейтинг: 0 / 0
Проблема с Seq.currval
    #37564260
Вячеслав Любомудров
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Че тут не понятного
Код: plsql
1.
2.
3.
4.
5.
6.
7.
8.
9.
10.
11.
12.
13.
14.
15.
16.
17.
18.
19.
20.
t11> create sequence s;

Sequence created.

t11> declare r number;
  2  begin r:=s.nextval;
  3  end;
  4  /

PL/SQL procedure successfully completed.

t11> drop sequence s;

Sequence dropped.

t11> select * from v$version where rownum=1;

BANNER
--------------------------------------------------------------------------------
Oracle Database 11g Enterprise Edition Release 11.2.0.1.0 - 64bit Production

Код: plsql
1.
2.
3.
4.
5.
6.
7.
8.
9.
10.
11.
12.
13.
14.
15.
16.
17.
18.
19.
20.
21.
22.
23.
24.
25.
26.
tst> create sequence s;

Sequence created.

tst> declare r number;
  2  begin r:=s.nextval;
  3  end;
  4  /
begin r:=s.nextval;
           *
ERROR at line 2:
ORA-06550: line 2, column 12:
PLS-00357: Table,View Or Sequence reference 'S.NEXTVAL' not allowed in this context
ORA-06550: line 2, column 7:
PL/SQL: Statement ignored


tst> drop sequence s;

Sequence dropped.

tst> select * from v$version where rownum=1;

BANNER
----------------------------------------------------------------
Oracle Database 10g Enterprise Edition Release 10.2.0.4.0 - 64bi

PS. Что-то сдается это не настоящий stax, а кто-то под него косит
...
Рейтинг: 0 / 0
Период между сообщениями больше года.
Проблема с Seq.currval
    #39503921
KiAV
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
Уважаемые, не подскажете, почему при выполнении следующего скрипта значение Next Value не изменяется?
set serveroutput on;
begin
for seq in
(select sequence_name from user_sequences)
loop
execute immediate 'select '||seq.sequence_name||'.nextval from dual';
dbms_output.put_line(seq.sequence_name);
end loop;
end;
/
...
Рейтинг: 0 / 0
Проблема с Seq.currval
    #39503925
Фотография env
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
KiAV,

У которой из перебираемых последовательностей оно должно измениться?
...
Рейтинг: 0 / 0
Проблема с Seq.currval
    #39503934
Фотография Stax
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
KiAV,

как смотрите шо не изменилось?

ps
cache виновник

.....
stax
...
Рейтинг: 0 / 0
Проблема с Seq.currval
    #39503939
Фотография Stax
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
KiAV,


execute immediate 'select '||seq.sequence_name||'.nextval from dual' into v_next ;

....
stax
...
Рейтинг: 0 / 0
Проблема с Seq.currval
    #39503944
KiAV
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
Извиняюсь, разобрался сам, помогло добавление into.
set serveroutput on;
declare
val number;
begin
for seq in
(select sequence_name from user_sequences)
loop
execute immediate 'select '||seq.sequence_name||'.nextval from dual' into val;
dbms_output.put_line(seq.sequence_name||' '||val);
end loop;
end;
/
...
Рейтинг: 0 / 0
Проблема с Seq.currval
    #39503948
KiAV
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
Спасибо, Stax!
...
Рейтинг: 0 / 0
73 сообщений из 73, показаны все 3 страниц
Форумы / Oracle [игнор отключен] [закрыт для гостей] / Проблема с Seq.currval
Найденые пользователи ...
Разблокировать пользователей ...
Читали форум (0):
Пользователи онлайн (0):
x
x
Закрыть


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