Гость
Целевая тема:
Создать новую тему:
Автор:
Форумы / Oracle [игнор отключен] [закрыт для гостей] / Обрезание строки до 253 символов через dblink / 16 сообщений из 16, страница 1 из 1
27.05.2016, 10:42:33
    #39244636
Обрезание строки до 253 символов через dblink
Добрый день.

Существует dblink между Oracle и MS SQl Server 2008.
При передачи строки на ту сторону, она обрезается до 253 символов и приходит куцой.

строка вставляется командой Insert

колонка на той стороне имеет тип varchar(8000).


Код: plsql
1.
2.
3.
4.
5.
6.
7.
8.
declare
  res    number;
  text   varchar2(4000);
begin
  text := 'тут очень длинная строка больше 253 но меньше 8000 симовлов';

  insert into dbo.table_name@dblink_name("OuterID", "XmlData", "Action") values (1, text, 'INSERT');
end;



Подскажите пожалуйста в куда копать...
...
Рейтинг: 0 / 0
27.05.2016, 13:23:24
    #39244852
Vadim Lejnin
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Обрезание строки до 253 символов через dblink
Код: plsql
1.
2.
sqlplus user/pass
SQL> describe dbo.table_name@dblink_name
...
Рейтинг: 0 / 0
19.07.2016, 12:22:44
    #39276161
Обрезание строки до 253 символов через dblink
Vadim Lejnin,

RIDNOT NULLNUMBER(10)RBO_IDNOT NULLNUMBER(18)DealTransactIDNUMBER(15)XmlDataNOT NULLVARCHAR2(8192 CHAR)FullLenNOT NULLNUMBER(10)PartIDNOT NULLNUMBER(3)DocTypeNUMBER(10)ActionNOT NULLVARCHAR2(20)Date0NOT NULLDATEDate1DATEStateNUMBER(3)State_DescVARCHAR2(32512 CHAR)

сейчас решили проблему тем, что передаем по частям по 253 символа, но это не дело :(
...
Рейтинг: 0 / 0
19.07.2016, 12:26:17
    #39276163
Обрезание строки до 253 символов через dblink
проблема с полем "XmlData"
...
Рейтинг: 0 / 0
19.07.2016, 12:37:50
    #39276177
Fogel
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Обрезание строки до 253 символов через dblink
Азат Идиятуллин...
колонка на той стороне имеет тип varchar(8000).
...
Код: plsql
1.
2.
3.
4.
...
  text   varchar2(4000);
...
  text := 'тут очень длинная строка больше 253 но меньше 8000 симовлов';



у меня в голове как-то не синхронизируется размерность этих 3-х строк
...
Рейтинг: 0 / 0
19.07.2016, 12:42:57
    #39276181
Vadim Lejnin
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Обрезание строки до 253 символов через dblink
Азат Идиятуллин,
Через какого провайдера настроен dblink?
...
Рейтинг: 0 / 0
21.07.2016, 09:41:51
    #39277531
Обрезание строки до 253 символов через dblink
Vadim Lejnin,

используем oracle 9i transparent gateway (версия 9.2.0.1.0)
...
Рейтинг: 0 / 0
21.07.2016, 10:09:26
    #39277563
Vadim Lejnin
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Обрезание строки до 253 символов через dblink
Азат Идиятуллин
Это не провайдер
Что используется, oledb, или odbc?
Для 9i были баги в odbc
...
Рейтинг: 0 / 0
21.07.2016, 12:02:20
    #39277686
Обрезание строки до 253 символов через dblink
Vadim Lejnin,

наш админ говорит, что
"Используется tg4msql, hsodbc не используем"
провайдер "Oracle provider"

ни про ODBC, ни про OLE DB ничего не сказал.
...
Рейтинг: 0 / 0
21.07.2016, 12:14:09
    #39277696
Vadim Lejnin
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Обрезание строки до 253 символов через dblink
Азат Идиятуллин,
1) А если явно вставить - обрежется?
Код: plsql
1.
2.
3.
4.
insert into dbo.table_name@dblink_name("OuterID", "XmlData", "Action") values (
1
,'_123456789_123456789_123456789_123456789_123456789_123456789_123456789_123456789_123456789_123456789_123456789_123456789_123456789_123456789_123456789_123456789_123456789_123456789_123456789_123456789_123456789_123456789_123456789_123456789_123456789_123456789_123456789_123456789_123456789_123456789'
, 'INSERT');



2) ограничение в SQL ядре Oracle для varchar2 - 4000 char
попробуйте явный cast для для этой колонки выполнить
Может неявное преобразование типов?
...
Рейтинг: 0 / 0
21.07.2016, 12:21:11
    #39277709
SetLong
Гость
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Обрезание строки до 253 символов через dblink
Азат Идиятуллиниспользуем oracle 9i transparent gateway (версия 9.2.0.1.0)
Угу. А он-то как раз не в курсе про varchar2(8000).
Судя по длине 253 - преобразует в clob или long.
А на clob влияют всякие смешные штуки типа SQL*Plus-ного "SET LONG", по умолчанию как раз в районе 255 символов :)
...
Рейтинг: 0 / 0
21.07.2016, 12:23:42
    #39277711
jtds
Гость
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Обрезание строки до 253 символов через dblink
Азат Идиятуллин"Используется tg4msql, hsodbc не используем"это тот же odbc, только dll/so внутрь положены какой-то дремучей версии даже для времен 9i. Да еще и платный.
...
Рейтинг: 0 / 0
21.07.2016, 12:26:17
    #39277713
UDW
UDW
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Обрезание строки до 253 символов через dblink
Азат Идиятуллин,

А если инсерт выполнить на mssql, вытянув данные с oracle?
...
Рейтинг: 0 / 0
22.07.2016, 10:45:11
    #39278414
Обрезание строки до 253 символов через dblink
UDW,

не получиться.
та сторона отказывается делать линк с MSSQL на Oracle
...
Рейтинг: 0 / 0
22.07.2016, 10:47:41
    #39278417
Обрезание строки до 253 символов через dblink
Vadim LejninАзат Идиятуллин,
1) А если явно вставить - обрежется?
Код: plsql
1.
2.
3.
4.
insert into dbo.table_name@dblink_name("OuterID", "XmlData", "Action") values (
1
,'_123456789_123456789_123456789_123456789_123456789_123456789_123456789_123456789_123456789_123456789_123456789_123456789_123456789_123456789_123456789_123456789_123456789_123456789_123456789_123456789_123456789_123456789_123456789_123456789_123456789_123456789_123456789_123456789_123456789_123456789'
, 'INSERT');




Пробовал. В любом случае обрезает до 253 символов, что напрямую, что через переменные... даже если сделать insert into select

Vadim Lejnin2) ограничение в SQL ядре Oracle для varchar2 - 4000 char
попробуйте явный cast для для этой колонки выполнить
Может неявное преобразование типов?

не понял
...
Рейтинг: 0 / 0
22.07.2016, 12:05:02
    #39278502
UDW
UDW
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Обрезание строки до 253 символов через dblink
Азат Идиятуллин,

А если не через PL/sql? загнать строку в темповую табличку и из нее сделать insert as select?
...
Рейтинг: 0 / 0
Форумы / Oracle [игнор отключен] [закрыт для гостей] / Обрезание строки до 253 символов через dblink / 16 сообщений из 16, страница 1 из 1
Найденые пользователи ...
Разблокировать пользователей ...
Читали форум (0):
Пользователи онлайн (0):
x
x
Закрыть


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