dev.net.ua

Українська Спільнота Розробникiв
 
Ласкаво просимо до dev.net.ua Увійти | Приєднатися | Допомога | Увійти Live ID
в Пошук

Firebird: error code = -303

Останнє повідомлення 10-11-2007, 0:43 від AndZho. 3 відповіді.
Сортувати: Попереднє Наступне
  •  06-11-2007, 2:49 4610

    Firebird: error code = -303

    Всім привіт. Виникла поблема з якою поки не зміг розібратися. Маю нетипізований датасет, датаадаптер, FB 2.0.3, DataProvider 2.0.1. Є процедура в базі, якій передається декілька параметрів цілого типу та один параметр типу Char. Якщо виконувати процедуру з IBExpert то вона виконується без жодних проблем. Якщо ж виконувати процедуру з програми (робимо апдейт) з тими ж параметрами, то виникає помилка "SQL error code = -303 conversion error from string "my-string" яка стосується єдиного строкового параметру.
    Так описую параметр в коді:

    param = new FbParameter("@CALL", FbDbType.Char);
    param.Size = 15;
    param.SourceColumn = "CALL";               
    param.Direction = ParameterDirection.Input;
    insertNameCommand.Parameters.Add(param);


    Такий текст процедури:

    begin
        tmp_idclient = gen_id(gen_t_corr_id, 1);
        insert into t_corr (id_correspondent,  correspondent_number, CALL, ID_NAME, ID_QT, ID_PICTURE )
        values (:tmp_idclient,  :tmp_idclient, :call, :id_name, :id_qt, :id_picture);
        id_corr = :tmp_idclient;
        correspondent_number=:tmp_idclient;
        suspend;
    end


    Ще цікавий момент, параметри id_correspondent,  correspondent_number є вихідними для процедури. Якщо спростити даний випадок, і залишити в коді та в процедурі лише параметри id_correspondent,  correspondent_number та строковий параметр call то все прекрасно працює як з коду так і з IBExpert. Яким чином впливають ID_NAME, ID_QT, ID_PICTURE я не можу зрозуміти. Пробував змінювати типи для строкового параметру char/varchar/e.t.c - нічого не допомагає.Sad

    Помічено як: ,
  •  06-11-2007, 5:01 4612 у відповідь на 4610

    Re: Firebird: error code = -303

    Отвечаю по MS SQL, может подтолкнет к решению. В MS SQL тип char, varchar - non-Unicode character data, а вот nchar, nvarchar - Fixed-length Unicode character data. Проблема скорее в том, что из уникодовской строки, где на символ два байта, идет попытка вставить значение в строку, где на каждый символ один байт.

  •  06-11-2007, 6:48 4615 у відповідь на 4612

    Re: Firebird: error code = -303

    GorulkoA:

    Отвечаю по MS SQL, может подтолкнет к решению. В MS SQL тип char, varchar - non-Unicode character data, а вот nchar, nvarchar - Fixed-length Unicode character data. Проблема скорее в том, что из уникодовской строки, где на символ два байта, идет попытка вставить значение в строку, где на каждый символ один байт.


    Да нет, скорее тут проблема в другом. Иначе при удалении параметров не работало бы. Каким боком параметры целого типа могут влиять на параметр строкового типа ума не приложу. Нету их - все ок, добавил один - не работает. Sad
  •  10-11-2007, 0:43 4646 у відповідь на 4610

    Re: Firebird: error code = -303

    В результаті проблема вирішилася просто зміною послідовності параметрів у процедурі. Sad
Переглядати як новосний Блог RSS в XML