X-Git-Url: http://git.shadowcat.co.uk/gitweb/gitweb.cgi?a=blobdiff_plain;f=lib%2FDBIx%2FClass%2FStorage%2FDBI%2FODBC%2FMicrosoft_SQL_Server.pm;h=6c3483e7c0a705e3437866ade53804a1bb1ed85a;hb=d68f21eedc64910ba75f23a8eff8c60be21ef126;hp=2fde285e75d671bd77eccba1f20c5ab52f37acbd;hpb=818ec409baa3cd8a520bb6164a83e9a90fb84674;p=dbsrgits%2FDBIx-Class.git diff --git a/lib/DBIx/Class/Storage/DBI/ODBC/Microsoft_SQL_Server.pm b/lib/DBIx/Class/Storage/DBI/ODBC/Microsoft_SQL_Server.pm index 2fde285..6c3483e 100644 --- a/lib/DBIx/Class/Storage/DBI/ODBC/Microsoft_SQL_Server.pm +++ b/lib/DBIx/Class/Storage/DBI/ODBC/Microsoft_SQL_Server.pm @@ -38,6 +38,20 @@ sub _prep_for_execute { my $self = shift; my ($op, $extra_bind, $ident, $args) = @_; +# cast MONEY values properly + if ($op eq 'insert' || $op eq 'update') { + my $fields = $args->[0]; + my $col_info = $self->_resolve_column_info($ident, [keys %$fields]); + + for my $col (keys %$col_info) { + if ($col_info->{$col}{data_type} eq 'money') { + my $val = $fields->{$col}; + + $fields->{$col} = \['CAST(? AS MONEY)', [ $col => $val ]]; + } + } + } + my ($sql, $bind) = $self->next::method (@_); if ($op eq 'insert') {