LINUX.ORG.RU

Qt, FreeTDS, UnixODBC , M$ SQL 2005, varchar-параметры хранимой процедуры


0

0

Есть некоторая проблема с работой сабжа. В общем, на сервере с M$ SQL Server 2005 имеется хранимая процедура:

ALTER procedure [dbo].[fp_test]
(--@Number int out
@Value varchar(50) out
)
as
--select @Number = 777
select @Value = 'test string'

Имеется такой код:

QString strValue;
strValue.reserv(51);
QSqlQuery query;
query.prepare("{CALL dbo.fp_test(?)}");
//query.bindValue("Number",n,QSql::Out);
query.bindValue("Value", strValue,QSql::Out);
if (!query.exec()) return 1;
//n = query.boundValue("Number").toInt();
strValue = query.boundValue("Value").toString();

Под WinXP данный код успешно отрабатывает — в strValue получаем «test string» На Ubuntu query.exec() возвращает false, в окне вывода получаем: QODBCResult::exec: unable to bind variable: " [FreeTDS][SQL Server]Invalid data type".

Если работать с целочисленным параметром (раскомментировать/закомментировать соответствующие строки), то и в WinXP и в Ubuntu код успешно выполняется. При @value varchar(50) input, такая же ошибка, т.е в принципе не хочет работать с varchar параметрами.

Возможно дело в кодировках ? (на всякий случай, в /etc/freedts/freedts.conf указано client charset = UTF-8).

Гугль не помог...

Вы не можете добавлять комментарии в эту тему. Тема перемещена в архив.