|
![]() |
#1 |
Moderator
|
НА ЗАМЕТКУ: прочитал здесь http://citforum.urc.ac.ru/database/cnit/6.shtml следующее (речь о Перле):
Цитата:
$ora_long Обычно Oraperl спрашивает базу данных о длине каждого поля и соответствующим образом распределяет буферное пространство. Это невозможно для полей типа LONG и LONGRAW. Распределение пространства в предположении максимально возможной длины (65535 bytes) привело бы к излишним тратам памяти. Поэтому когда &ora_open() определяет, что поле имеет тип LONG, память распределяется согласно значению переменной $ora_long. При инициализации она принимает значение 80 (для совместимости с продуктами Oracle), но в программе ее можно устанавливать произвольным образом.
|
|
![]() |
#2 |
Moderator
|
Владимир, а что если из Excel такой VBA-шный "джобик" запустить, чтобы понять, в Аксапте ли дело?:
Код: Sub test_ADO_onVBA() Dim adoConnection As Object Dim adoRecordSet As Object Dim adoCommand As Object Dim adoFields As Object Dim adoField As Object Set adoConnection = CreateObject("ADODB.Connection") adoConnection.Open "Provider=OraOLEDB.oracle;Data Source=ХХХ;User Id=YYY;Password=ZZZ;" Set adoCommand = CreateObject("ADODB.Command") adoCommand.activeConnection = adoConnection adoCommand.CommandType = 1 adoCommand.CommandText = "SELECT MyField FROM MyTable WHERE rownum <= 1" Set adoRecordSet = adoCommand.Execute Set adoFields = adoRecordSet.fields Set adoField = adoFields.Item(0) While Not adoRecordSet.EOF Debug.Print adoField.Name, "=", adoField.Value, " ", Len(adoField.Value) adoRecordSet.moveNext Wend End Sub ![]() P.S. Ну и заодно попробовать "Provider=MSDAORA" , чтобы убедиться, в провайдере ли дело. |
|