Добро пожаловать, Гость
Логин: Пароль: Запомнить меня
SQL, PL/SQL, T-SQL: запросы, DML DDL операторы, пакеты, процедуры, функции, триггеры и последовательности.
  • Страница:
  • 1

ТЕМА:

Использование поля LONG в Oracle 12 года 9 мес. назад #2611

Необходимо снхронизировать таблицу из 2-х разных баз
проблема в том что используется поля LONG, как раз те поля которые надо обновить, при их несовпадении
Обычные запросы, на обновление, вставку,..., не проходят
Может кто сталкивался ?
Текст:
select
t.CODE,
t.TXT
from TB_H@tt t, TB_H@oo o
where
T.CODE = O.CODE
and t.TXT = o.TXT
ORA-00997: illegal use of LONG datatype ORA-02063: preceding line from TTT

insert into TB_H
select
*
from TB_H@oo o
ORA-00997: illegal use of LONG datatype

update -//-

Пожалуйста Войти или Регистрация, чтобы присоединиться к беседе.

Re: Использование поля LONG в Oracle 12 года 9 мес. назад #2612

Посмотри типа:
--------
create table T1( L long )
/

insert into T1(L) values('ABC')
/

create table T2( L long )
/

declare
Ltmp long;
cursor C is
select L from T1;
begin
open C;
loop
fetch C into Ltmp;
exit when C%notfound;
insert into T2(L) values(Ltmp);
commit;
end loop;
close C;
end;
/

Пожалуйста Войти или Регистрация, чтобы присоединиться к беседе.

Re: Использование поля LONG в Oracle 12 года 9 мес. назад #2613

Это потому-что есть ограничения на тип LONG при использовании в конструкциях: CREATE TABLE ....AS SELECT <long field> и INSERT INTO....SELECT <long fiilds>.

Надо на CLOB переходить, LONG даже уже в 8.0.X оставлен просто для совместимости

Пожалуйста Войти или Регистрация, чтобы присоединиться к беседе.

Re: Использование поля LONG в Oracle 12 года 9 мес. назад #2614

Kireev, проблема так все равно не решается.
Если считывать одно LONG поле - проходит, но извлечь всю запись:
declare
cursor c1 is...
d2 c1%rowtype;
....
fetch c1 into d2;
...

Начинает ругаться:
declare
*
ORA-06502: PL/SQL: numeric or value error ORA-06512: at line ..

Пробовал:
declare
p1 VARCHAR2(15) ;
p2 VARCHAR2(1) ;
p3 VARCHAR2(1) ;
p4 LONG;
...
fetch c1 into p1,p2,p3,p4;

все нормально пока без LONG поля, как только вставляю - те же проблемы

Пожалуйста Войти или Регистрация, чтобы присоединиться к беседе.

Re: Использование поля LONG в Oracle 12 года 9 мес. назад #2615

create table T1( s varchar2(100), n number,  L long )



insert into T1(s,n,L) values(1,1,'1')



insert into T1(s,n,L) values(2,2,'2')



create table T2( s varchar2(100), n number,  L long )



declare

  Ltmp long;

  Stmp varchar2(100);

  Ntmp number;

  cursor C is

    select s,n,l 

	from T1; 

begin

  open C;

  loop

    fetch C into Stmp,Ntmp,Ltmp;

	exit when C%notfound;

	insert into T2(s,n,L) values(Stmp,Ntmp,Ltmp);

  end loop;

  close C;

end;

Вот это попробуй)

Пожалуйста Войти или Регистрация, чтобы присоединиться к беседе.

  • Страница:
  • 1
Время создания страницы: 0.226 секунд