Fernando Luna wrote:
[...] I am running perl version 5.005_03 built for AIX Unix.
Get ready to upgrade.
So, is this version not stable enough for me to do what I want? Why should I worry about upgrading right now?
It's stable - but note that the release notes for DBI 1.33 say that 5.5.3 won't be supported much longer, nor 5.6.0.
My currently approach is a ksh script that calls sqlplus. The statements are separated by either a semi-colon (which I guess most
databases use) or a forward slash (which Oracle supports through the sqlplus tool, though in all other cases only the semi-colon is appropriate).
You'll have to hack the attachment a bit to handle the slashes. The ix_Fetchable attribute is obsolete and should be replaced by NUM_OF_FIELDS (check spelling) - it should be greater than 0.
I'd be very thankful for any help you can toss my way.
See attachment.
--
Jonathan Leffler ([EMAIL PROTECTED], [EMAIL PROTECTED]) #include <disclaimer.h>
Guardian of DBD::Informix 1.04.PC1 -- http://dbi.perl.org/
#!/usr/bin/perl -w # # @(#)$Id: sqlcmd.sh,v 54.2 1997/04/08 18:59:42 johnl Exp $ # # SQL Command Reader & Executor
use Getopt::Std; use DBI; $delim = $ENV{DBDELIMITER}; $delim = "|" unless $delim; sub print_row { my (@row) = @_; my ($i); for ($i = 0; $i < @row; $i++) { print "$row[$i]" if (defined $row[$i]); print "$delim"; } print "\n"; } # Execute an SQL command -- the preparable ones... sub sql_exec { my ($cmd) = @_; my ($sth); print "+ $cmd\n" if ($opt_x); warn "SQL command failed: $DBI::errstr\n" unless ($sth = $dbh->prepare($cmd) and $sth->execute); if ($sth->{ix_Fetchable}) { # SELECT statements other than SELECT...INTO TEMP, and # EXECUTE PROCEDURE statements which return values. my (@row); while (@row = @{$sth->fetch}) { print_row(@row); } } warn "SQL command failed: $DBI::errstr\n" unless $sth->finish; } # BUG: this code does not support multiple occurrences of the -e option on # the command line. Nor does it support the -f option. $opt_d = '.DEFAULT.'; $opt_e = ''; $opt_x = ''; $opt_V = ''; getopts('d:e:xV'); # Print version information if ($opt_V) { print "$0: SQLCMD Version $Revision: 54.2 $ ($Date: 1997/04/08 18:59:42 $)\n"; $drh = DBI->install_driver('Informix'); print "DBI Version $DBI::VERSION\n"; print "DBD::$drh->{Name} Version $drh->{Version}\n"; print "$drh->{ProductName}\n"; exit(0); } # Pre-select database die "Failed to connect to the database\n" unless $dbh = DBI->connect($opt_d,'','','Informix'); if ($opt_e) { # Command line SQL statement sql_exec $opt_e; } else { # Read SQL commands from files (or stdin) $cmd = ""; while (<>) { next if /^\s*$/; $cmd .= $_; if (/;/) # Inaccurate, but OK for first hack! { sql_exec $cmd; $cmd = ""; } } } $dbh->disconnect; __END__