powered by simpleCommunicator - 2.0.36     © 2025 Programmizd 02
Форумы / WinForms, .Net Framework [игнор отключен] [закрыт для гостей] / OracleCommand обрезает значение
9 сообщений из 9, страница 1 из 1
OracleCommand обрезает значение
    #40012091
andreymx
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Код: c#
1.
2.
3.
4.
5.
6.
7.
8.
9.
10.
11.
12.
                OracleCommand OraCom = new OracleCommand();
                OraCom.Connection = OracleMailObj.connection;
                OraCom.CommandText = "begin SELECT cast('inst='||INSTANCE_NAME||',host=' || HOST_NAME as varchar2(2000)) into :p_TEXT from v$instance; end;";
                OracleParameter OraParam = new OracleParameter();
                OraParam.OracleType = OracleType.NVarChar;
                OraParam.Size = 4000;
                OraParam.Value = DBNull.Value;
                OraParam.ParameterName = ":p_TEXT";
                OraParam.Direction = System.Data.ParameterDirection.InputOutput;
                OraCom.Parameters.Add(OraParam);
                OraCom.ExecuteNonQuery();
                string p_TEXT = OraCom.Parameters[OraParam.ParameterName].Value.ToString(); -- выдает первые 17 символов


OraCom.Parameters[OraParam.ParameterName].Value.ToString(); -- выдает первые 17 символов. Длину строки делит на два и берет первую половину


как только не игрался
OraParam.OracleType = OracleType.NVarChar и OraParam.OracleType = OracleType.VarChar;
cast as varchar2(2000) и cast as nvarchar2(2000)

всё равно режет
добавил в конце 40 пробелов, получил то, что надо
'inst='||INSTANCE_NAME||',host=' || HOST_NAME || ' '
такая хрень

потом поменял на NCHar - заработало. Но херня какая-то... Зачем нам NCHar?
...
Рейтинг: 0 / 0
OracleCommand обрезает значение
    #40012097
Сон Веры Павловны
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Какай провайдер доступа используется? System.Data.OracleClient? Или ODP.Net?
...
Рейтинг: 0 / 0
OracleCommand обрезает значение
    #40012111
andreymx
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
#region Сборка System.Data.OracleClient, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089
// C:\Program Files (x86)\Reference Assemblies\Microsoft\Framework\.NETFramework\v4.0\System.Data.OracleClient.dll
#endregion

deprecated
...
Рейтинг: 0 / 0
OracleCommand обрезает значение
    #40012112
andreymx
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Код: plaintext
1.
2.
3.
4.
5.
6.
7.
8.
9.
10.
11.
12.
13.
14.
15.
16.
17.
18.
19.
20.
21.
PARAMETER                      VALUE                                   
------------------------------ ----------------------------------------
NLS_LANGUAGE                   AMERICAN                                
NLS_TERRITORY                  AMERICA                                 
NLS_CURRENCY                   $                                       
NLS_ISO_CURRENCY               AMERICA                                 
NLS_NUMERIC_CHARACTERS         .,                                      
NLS_CHARACTERSET               RU8PC866                                
NLS_CALENDAR                   GREGORIAN                               
NLS_DATE_FORMAT                DD-MON-RR                               
NLS_DATE_LANGUAGE              AMERICAN                                
NLS_SORT                       BINARY                                  
NLS_TIME_FORMAT                HH.MI.SSXFF AM                          
NLS_TIMESTAMP_FORMAT           DD-MON-RR HH.MI.SSXFF AM                
NLS_TIME_TZ_FORMAT             HH.MI.SSXFF AM TZR                      
NLS_TIMESTAMP_TZ_FORMAT        DD-MON-RR HH.MI.SSXFF AM TZR            
NLS_DUAL_CURRENCY              $                                       
NLS_COMP                       BINARY                                  
NLS_LENGTH_SEMANTICS           BYTE                                    
NLS_NCHAR_CONV_EXCP            FALSE                                   
NLS_NCHAR_CHARACTERSET         AL16UTF16                               
NLS_RDBMS_VERSION              11.2.0.4.0
...
Рейтинг: 0 / 0
OracleCommand обрезает значение
    #40012122
Сон Веры Павловны
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Хм.
Код: sql
1.
2.
3.
4.
5.
6.
7.
8.
9.
10.
11.
12.
13.
14.
15.
16.
17.
18.
19.
20.
21.
22.
using (var cnn = new OracleConnection("..........."))
{
  cnn.Open();
  using (var cmd = new OracleCommand(@"
    begin
      SELECT cast(
          'inst='||INSTANCE_NAME||
          ',host='||HOST_NAME||
          ',INSTANCE_ROLE='||INSTANCE_ROLE||
          ',VERSION_FULL='||VERSION_FULL
        as varchar2(2000)
      )
        into :p_TEXT from v$instance;
    end;", cnn))
  {
    var oraParam = cmd.Parameters.Add("p_TEXT", OracleType.NVarChar, 4000);
    oraParam.Direction = ParameterDirection.InputOutput;
    cmd.ExecuteNonQuery();
    var pText = oraParam.Value.ToString();
    Console.WriteLine(pText.Length);
  }
}


- выводит 76, и это действительная длина результата. Может, действительно с NLS-параметрами что-то? У меня они выглядят вот так:

Код: plaintext
1.
2.
3.
4.
5.
6.
7.
8.
9.
10.
11.
12.
13.
14.
15.
16.
17.
18.
19.
20.
21.
PARAMETER                 VALUE
------------------------  ------------------------
NLS_LANGUAGE              AMERICAN
NLS_TERRITORY             CIS
NLS_CURRENCY              р.
NLS_ISO_CURRENCY          CIS
NLS_NUMERIC_CHARACTERS    , 
NLS_CALENDAR              GREGORIAN
NLS_DATE_FORMAT           DD.MM.YYYY
NLS_DATE_LANGUAGE         AMERICAN
NLS_CHARACTERSET          CL8MSWIN1251
NLS_SORT                  BINARY
NLS_TIME_FORMAT           HH24:MI:SSXFF
NLS_TIMESTAMP_FORMAT      DD.MM.RR HH24:MI:SSXFF
NLS_TIME_TZ_FORMAT        HH24:MI:SSXFF TZR
NLS_TIMESTAMP_TZ_FORMAT   DD.MM.RR HH24:MI:SSXFF TZR
NLS_DUAL_CURRENCY         р.
NLS_NCHAR_CHARACTERSET    AL16UTF16
NLS_COMP                  BINARY
NLS_LENGTH_SEMANTICS      BYTE
NLS_NCHAR_CONV_EXCP       FALSE

Oracle Database 18c Standard Edition 2 Release 18.0.0.0.0 - Production
...
Рейтинг: 0 / 0
OracleCommand обрезает значение
    #40012127
andreymx
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Сон Веры Павловны,

NLSы так настроены уже более 20 лет... всё прочее ПО работает\
только этот System.Data.OracleClient колбасится...
...
Рейтинг: 0 / 0
OracleCommand обрезает значение
    #40012133
Сон Веры Павловны
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Ну, вообще пишут , что это известный баг клиентской части, варианты борьбы (обновление версии клиента, переход на ODP.Net) перечислены по ссылке - у кого-то работают, у кого-то нет. У меня вполне всё нормально работает на System.Data.OracleClient, 18c, и клиентской части версии 11.2.0.1.0.
...
Рейтинг: 0 / 0
OracleCommand обрезает значение
    #40012136
andreymx
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Сон Веры Павловны,

спасибо!
...
Рейтинг: 0 / 0
OracleCommand обрезает значение
    #40012515
andreymx
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
на серваке клиент 11-ый, и глюков нет
на девелоперском ПК клиент 12-ый, и глюков есть
...
Рейтинг: 0 / 0
9 сообщений из 9, страница 1 из 1
Форумы / WinForms, .Net Framework [игнор отключен] [закрыт для гостей] / OracleCommand обрезает значение
Целевая тема:
Создать новую тему:
Автор:
Закрыть
Цитировать
Найденые пользователи ...
Разблокировать пользователей ...
Читали форум (0):
Пользователи онлайн (0):
x
x
Закрыть


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