Передача строковых параметров в sql запрос
☑
0
qwerty
08.11.15
✎
09:23
Столкнулся с непонятным поведением 1С при передаче строковых параметров в запрос. Вот этот код выводит в окно сообщений "z" вместо "zzzz":
Соединение = Новый COMОбъект("ADODB.Connection");
Соединение.ConnectionString = "Provider=SQLOLEDB.1;Password=1;Persist Security Info=True;User ID=sa;Initial Catalog=ait_hr_new;Data Source=PHENOMB55";
Соединение.Open();
Команда = Новый COMОбъект("ADODB.Command");
Команда.ActiveConnection = Соединение;
Команда.CommandText = "SELECT ? AS test";
// adBSTR = 8
// adParamInput = 1
Параметр = Команда.CreateParameter(, 8, 1);
Параметр.Value = "zzzz";
Команда.Parameters.Append(Параметр);
НаборЗаписей = Команда.Execute();
КоличествоЗаписей = НаборЗаписей.RecordCount;
Пока Не НаборЗаписей.EOF Цикл
Сообщить(НаборЗаписей.Fields.Item(0).Value);
НаборЗаписей.MoveNext();
КонецЦикла;
НаборЗаписей.Close();
Соединение.Close();
С другим провайдером (FoxProOleDB) все работает как нужно. Как заставить правильно работать провайдер MSSQL?
1
qwerty
08.11.15
✎
09:24
Параметры системы:
Windows 7 x64 ru
MS SQL 2005 x64 en
2
qwerty
08.11.15
✎
10:00
Отвечу сам себе:
вот здесь нужно обязательно длину параметра указать
Параметр = Команда.CreateParameter(, 8, 1б 128);
3
Franchiser
гуру
08.11.15
✎
12:21
примеры есть в 1с++
Я не хочу быть самым богатым человеком на кладбище. Засыпать с чувством, что за день я сделал какую-нибудь потрясающую вещь — вот что меня интересует. Стив Джобс