On Wed, 2002-05-29 at 16:13, Lance Prais wrote: > I am m using the following code to read from a .txt file. I am running into > a problem that I am not sure why it is happening. > The problem is when I run this script the SQL is not reading the variable. > I am testing to make sure the .txt file contains data and it does. > > I get the following error: > DBD::Oracle::st execute failed: called with 1 bind variables when 0 are > needed at /data/verity/custom-kb/scripts/test.pl line 36, <BULK> line 1. > DBD::Oracle::st execute failed: called with 1 bind variables when 0 are > needed at /data/verity/custom-kb/scripts/test.pl line 36, <BULK> line 1. > Issuing rollback() for database handle being DESTROY'd without explicit > disconnect(), <BULK> line 1. > > LINE 36 where the error is occuring: sr_num = $ln"); > > In the past when reading form an array fbuilt by a SQL statement I do it > different. This is my first tiem trying to read form Files > > Any Ideas what I am doing wrong? > > Thank you in advance > Lance >
Besides failing to use whitespace? You used string interpolation when you built the query instead of using variable binding. Both are valid methods -- when used separately. I prefer binding since there aren't any quote problems that way. I can understand why you couldn't see it; your code was horrifyingly unindented. Below is your script with decent indenting and a few minor idiomatic changes. N.B. if you version perl is old you may have to change the "our"s to "my"s. #!/usr/local/bin/perl # # Purpose: To extract Daily Siebel (SecureTrak) cases # # Written by Lance use strict; #ALWAYS USE STRICT use DBI; #ENVIRONMENT VARIABLES our $CUSTOM = "/data/verity/custom-kb"; our $SERVICE = "XXXXX.world"; our $oracle_user = "XXXXXX"; our $oracle_password = "XXXXX"; our $html_file_path = "$CUSTOM/content/daily_securetrak_new"; our $bif_file_path = "$CUSTOM/content/daily_securetrak"; our $bulk_load_filename = "$CUSTOM/bif/daily_securetrak.bif"; our $template_filename = "$CUSTOM/templates/daily_securetrak_main_build_template.html"; our $template_comm_filename = "$CUSTOM/templates/daily_securetrak_comm_build_template.html"; our $daily_sr_file = "$CUSTOM/scripts/unique_sr_list.txt"; print "Extract started at: " . `date`; #open connection to the DB #why use FALSE/TRUE sometimes and 0/1 others? #be consistent my $dbh = DBI->connect( "DBI:Oracle:$SERVICE", $oracle_user, $oracle_password, { AutoCommit => 0, LongTruncOk => TRUE, PrintError => TRUE, ChopBlanks => TRUE, LongTruncOk => TRUE, LongReadLen => 50000, RaiseError => TRUE } ) or die "connecting: $DBI::errstr"; #open file to read from #use $! here to tell you why #also use of "or" allows you to ditch the parens open BULK, $daily_sr_file or die "Could not open file:$!"; my $line = 1; while( my $ln = <BULK> ) { chomp($ln); #what in the world is this comment? #use the items of the #NOTE: all columns are named my $get_case_text = $dbh->prepare(" SELECT a.sr_num sr_num, b.name account_name, b.loc loc, a.sr_title sr_title, f.mid_name uc_id, a.sr_stat_id sr_stst_id, e.name group_name, f.fst_name fst_name, f.last_name last_name, f.email_addr email_addr, g.country country, g.Province Province, g.zipcode zipcode, to_char( a.x_cp_created,'DD-MON-YYYY' ) x_cp_created, to_char( a.x_cp_closed,'DD-MON-YYYY' ) x_cp_closed, c.login login, a.desc_text desc_text FROM s_srv_req a, s_org_ext b, s_employee c, s_postn d, s_org_int e, s_contact f, s_addr_org g WHERE a.cst_ou_id = b.row_id AND a.cst_con_id = f.row_id AND a.owner_emp_id = c.row_id AND c.pr_postn_id = d.row_id AND d.ou_id = e.row_id AND b.pr_addr_id = g.row_id AND sr_num = ?" ); #just above is the problem should be a ? instead of $ln #$sr_num should be $ln $get_case_text->execute($ln) or $dbh->errstr; #use hashrefs instead of 17 variables my $case = $get_case_text->fetchrow_hashref(); $get_case_text->finish; print "--------------> SR(bulk): $case->{sr_num}\n"; print "--------------> User Id(name): $case->{uc_id}\n"; $line++; } close(DAT); $dbh->disconnect; -- Today is Prickle-Prickle the 3rd day of Confusion in the YOLD 3168 Wibble. Missile Address: 33:48:3.521N 84:23:34.786W -- To unsubscribe, e-mail: [EMAIL PROTECTED] For additional commands, e-mail: [EMAIL PROTECTED]