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