|
Передача строковых параметров в 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с++
|
|
Ошибка? Это не ошибка, это системная функция.