Добро пожаловать в форум, Guest  >>   Войти | Регистрация | Поиск | Правила | В избранное | Подписаться
Все форумы / Oracle Новый топик    Ответить
 Не работает OUT nvarchar2?  [new]
Andrey Daeron
Member

Откуда: Киев
Сообщений: 1027
Делаем тип (по мотивам конкатенации при аггрегировании):
CREATE OR REPLACE type conctype_nv as object (

 cs nvarchar2(2000), 

static function ODCIAggregateInitialize(
	   									 strx IN OUT conctype_nv
									   ) return number,
member function ODCIAggregateIterate(
self  IN OUT conctype_nv, 
value IN     nvarchar2
)
return number,
member function ODCIAggregateTerminate(
self  IN  conctype_nv, 
strx  IN OUT nvarchar2,
flags IN  number
)
return number,
member function ODCIAggregateMerge(
self  IN conctype_nv, 
strx  IN conctype_nv
)
return number
);
/


CREATE OR REPLACE 
TYPE BODY conctype_nv
is
 
static function ODCIAggregateInitialize(strx IN OUT conctype_nv) 
return number
is 
begin
    strx := new conctype_nv(NULL);
    return ODCIConst.Success;
end;

member function ODCIAggregateIterate(self  IN OUT conctype_nv, value IN nvarchar2)
return number
is
begin
    self.cs:='';
    return ODCIConst.Success;
end;

member function ODCIAggregateTerminate(self  IN  conctype_nv, strx  IN OUT nvarchar2, flags IN  number)
return number
is
begin
    strx := 'dadada!';
    return ODCIConst.Success;
end;

member function ODCIAggregateMerge(self IN conctype_nv, strx IN conctype_nv)
return number
is
begin
    return ODCIConst.Success;
end;

end;
/

CREATE OR REPLACE 
function concat_nv(
input nvarchar2
)
return nvarchar2
parallel_enable aggregate using conctype_nv;
/

Вызываем следующий код:
[/src]SELECT concat_nv(a) FROM
 (SELECT cast('a' as nvarchar2(1)) as a FROM dual 
  UNION ALL
  SELECT cast('b' as nvarchar2(1)) as a FROM dual
 )
[SRC oracle]

Возникает забавное сообщение ORA-03113 Принят конец сигнала по коммуникационному каналу. Т.е. Оракл судя по всему сдох :)
При замене nvarchar2 на просто varchar2 - все работает как часы.

ЗЫ Код упрощен что бы небыло "лишних" версий.
ЗЗЫ Oracle 10.2 под вынь32.
1 сен 06, 19:35    [3084509]     Ответить | Цитировать Сообщить модератору
 Re: Не работает OUT nvarchar2?  [new]
Andrey Daeron
Member

Откуда: Киев
Сообщений: 1027
Если идей нет - может этот баг куда-то в Оракл закомитить?
4 сен 06, 10:14    [3087903]     Ответить | Цитировать Сообщить модератору
 Re: Не работает OUT nvarchar2?  [new]
SeaGate
Member

Откуда: Новосибирск
Сообщений: 1635
Andrey Daeron
Если идей нет - может этот баг куда-то в Оракл закомитить?

Коммить на Metalink
4 сен 06, 10:36    [3088001]     Ответить | Цитировать Сообщить модератору
 Re: Не работает OUT nvarchar2?  [new]
Andrey Daeron
Member

Откуда: Киев
Сообщений: 1027
SeaGate
Andrey Daeron
Если идей нет - может этот баг куда-то в Оракл закомитить?

Коммить на Metalink

Хм. На металинк у меня аккаунта нету :(
Может кто закомитит?
4 сен 06, 10:47    [3088060]     Ответить | Цитировать Сообщить модератору
 Re: Не работает OUT nvarchar2?  [new]
SeaGate
Member

Откуда: Новосибирск
Сообщений: 1635
Andrey Daeron
Если идей нет - может этот баг куда-то в Оракл закомитить?

А в трейсах ничего нету?
И если работает с varchar2, то зачем использовать nvarchar2, если varchar2 Вас полностью устраивает.
4 сен 06, 11:10    [3088204]     Ответить | Цитировать Сообщить модератору
 Re: Не работает OUT nvarchar2?  [new]
Andrey Daeron
Member

Откуда: Киев
Сообщений: 1027
SeaGate
Andrey Daeron
Если идей нет - может этот баг куда-то в Оракл закомитить?

А в трейсах ничего нету?
И если работает с varchar2, то зачем использовать nvarchar2, если varchar2 Вас полностью устраивает.

В том то и дело что без nvarchar2 уже не обойдусь. Уже все таблицы и ПО на юникод заточены.
4 сен 06, 11:20    [3088291]     Ответить | Цитировать Сообщить модератору
 Re: Не работает OUT nvarchar2?  [new]
contr
Member

Откуда:
Сообщений: 1909
Andrey Daeron
В том то и дело что без nvarchar2 уже не обойдусь. Уже все таблицы и ПО на юникод заточены.

nvarchar2 - не единственный тип, поддерживающий юникод... varchar2 тоже умеет ;)
4 сен 06, 11:49    [3088567]     Ответить | Цитировать Сообщить модератору
Все форумы / Oracle Ответить