Hi monks i am getting invalid precision error while executing the following script

Is there any solution

use strict; use File::Copy; use Cwd; use DBI; #use DBD::Oracle; # Oracle use DBD::ODBC; use Time::Local; use warnings; use Carp; my $dbh; my %hdr_field_vars = ( tran_seq_nbr=>[167,"N12_0"], org_number=>[28,"I"], store_number=>[167,"I"], tran_date=>['2006-12-08 00:00:00',"D"], terminal_number=>[2, "I"], tran_number=>[801,"I"], # tran_time=>['2006-12-08 15:41:00',"D"], # tran_type=>['02',"V4"], sub_tran_type=>['C',"V4"], clerk_code=>['116704444',"V15"], tran_taxable_amount=>[-35.10,"N12_2"], tran_tax_total=>[0,"N12_2"], tran_gross_total=>[-35.10,"N12_2"], coup_total=>[3.90,"N9_2"], mkd_total=>[0,"N9_2"], employee_number=>['NULL',"V15"], tran_alttax_total=>[0,"N12_2"], sale_amount=>[0, "N9_2"], return_amount=>[39.00, "N9_2"], tender_code=>['01',"V4"], split_tender=>['N',"V2"], rtn_with_rcpt=>['N',"V2"], pv_time_lapse=>[0,"I"], orig_store_nbr=>[0,"I"], #orig_tran_date=>['',"D"], orig_term_nbr=>[0,"I"], orig_tran_nbr=>[0,"I"], orig_tender_code=>['00',"V4"], prev_tran_type=>['NULL',"V4"], prev_sub_tran_type=>['NULL',"V4"], phone_no=>[0,"N11_0"] # kcpos_kth_user_403=>['2010-04-27 11:05:51',"D"] ); my $JBM; open( $JBM, ">>C:\\Installer\\ETL\\SQL\\output.txt"); # Correction $dbh = DBI->connect( "DBI:ODBC:Navi_s7200_IndiaCOE", "sa", "ABCabc123", { RaiseError => 1, AutoCommit => 0, PrintError => 0 } ) or die "Couldn't connect to database: $DBI::errstr"; $dbh->{odbc_ignore_named_placeholders} = 1; # $dbh->{odbc_default_bind_type}=1; print $JBM "connected\n"; print $JBM $dbh."\n"; my $first_key = 1; my $field_var_hash_size; my $tail = ") VALUES (" ; ################################# # Creating the insertion statement ################################# my $HEADER = "INSERT INTO kcpos_tran_header("; foreach my $key (keys %hdr_field_vars) { if ( !$first_key ) { $HEADER .= ","; $tail .= ","; } $tail .= prepareSQLDate( $hdr_field_vars{$key}[1]) ; $HEADER .= "$key"; $first_key = 0; } $HEADER .= $tail . ")"; print $JBM $HEADER."\n"; my $sth_header = $dbh->prepare( $HEADER ) or die "Couldn't prepare statement: " . $dbh->errstr; print $JBM $sth_header."\n"; my $counter = 1; foreach my $key (keys %hdr_field_vars) { my $data_ref = $hdr_field_vars{$key}[0]; my $form=$hdr_field_vars{$key}[1]; my $data; if(($form=~/^V1$/ || $form=~/[DC]/ || $form=~/^V4$/ || $form=~ +/^V2$/ || $form=~/^V15$/) && defined($data_ref)){ if($data_ref ne 'NULL'){ $data = "'".$data_ref."'"; } else { $data = $data_ref; } } else{ $data = $data_ref; } print $JBM $data."\n"; # use Data::Dumper; # print $JBM "<--------------------"; # print $JBM Dumper($data); # print $JBM "-------------------->\n"; $sth_header->bind_param( $counter, $data); $counter++; } print $JBM $HEADER; $sth_header->execute(); $sth_header->finish(); $dbh->commit; $dbh->disconnect; ############################################ # Function: prepareSQLDate ############################################ # add the convert function to the insert statements data type Date sub prepareSQLDate { my $format = $_[0]; # if(defined($format)|| !defined($format)) # { chomp($format); if ( $format =~ /D/ ) { return ( " CAST(?,datetime,120)"); } elsif ($format =~ /C/) { return ( " CAST(?,datetime,112)"); } else{ return (" ? "); } # } # else { # return (" ? "); # } }

Thanks


In reply to Invalid Precision error by Anonymous Monk

Title:
Use:  <p> text here (a paragraph) </p>
and:  <code> code here </code>
to format your post, it's "PerlMonks-approved HTML":



  • Posts are HTML formatted. Put <p> </p> tags around your paragraphs. Put <code> </code> tags around your code and data!
  • Titles consisting of a single word are discouraged, and in most cases are disallowed outright.
  • Read Where should I post X? if you're not absolutely sure you're posting in the right place.
  • Please read these before you post! —
  • Posts may use any of the Perl Monks Approved HTML tags:
    a, abbr, b, big, blockquote, br, caption, center, col, colgroup, dd, del, details, div, dl, dt, em, font, h1, h2, h3, h4, h5, h6, hr, i, ins, li, ol, p, pre, readmore, small, span, spoiler, strike, strong, sub, summary, sup, table, tbody, td, tfoot, th, thead, tr, tt, u, ul, wbr
  • You may need to use entities for some characters, as follows. (Exception: Within code tags, you can put the characters literally.)
            For:     Use:
    & &amp;
    < &lt;
    > &gt;
    [ &#91;
    ] &#93;
  • Link using PerlMonks shortcuts! What shortcuts can I use for linking?
  • See Writeup Formatting Tips and other pages linked from there for more info.