|
|
|
Junior Member
      
участник
Last Login: 19.03.2003 11:13
Сообщ.: 11,
Visits: 122
|
|
Использую ActivePerl и через Win32::OLE, ADO объекты коннекчусь к MS SQL. Не могу поставить значение Null в параметры вышеуказанному объекту Command.
Код:
$cmd->Parameters($i)->{Value} = "Null"; - ошибку:
Application uses a value of the wrong type for the current operation.
а код:
$cmd->Parameters($i)->{Value} = Variant(VT_DATE, "NULL"); Вызывает ошибку:
Item cannot be found in the collection corresponding to the requested name or ordinal.
Буду благодарен, если кто-нибудь поделиться, как передавал NULL-овые значения в Win32::OLE объекты.
|
|
|
|
|
Supreme Being
      
участник
Last Login: 20.09.2003 13:10
Сообщ.: 121,
Visits: 1 332
|
|
| В таблице на mssql поле "allow nulls"?
|
|
|
|
|
Junior Member
      
участник
Last Login: 19.03.2003 11:13
Сообщ.: 11,
Visits: 122
|
|
да, конечно и параметру я изменяю аттрибуты
$cmd->Parameters(1)->{Attributes} = adParamNullable | adParamLong;
Кроме того, вылез еще один глюк. Когда пытаюсь передать параметр adLongVarBinary - в поле типа image, то он (объект ADODB.Command или Win32::OLE - не уверен) преобразует данные каким-то странным образом, так, что их длина становится в 2 раза больше. Например
my $content; open IN, $dir.$file_name; binmode IN; sysread IN, $content, -s IN; close IN;
$cmd->Parameters(1)->{Attributes} = adParamNullable | adParamLong; #$cmd->Parameters(1)->{Value} = Variant(VT_UI1|VT_ARRAY, $content); $cmd->Parameters(1)->{Type} = adLongVarBinary; $cmd->Parameters(1)->{Value} = scalar $content;
После этого оказывается, что $cmd->Parameters(1)->{Size} == 2*length($content) Что делать, непонятно... :((
|
|
|
|
|
Junior Member
      
участник
Last Login: 19.03.2003 11:13
Сообщ.: 11,
Visits: 122
|
|
| Тема закрыта. Со всем разобрался. Обращайтесь - ответьте в этой теме.
|
|
|
|