#!/usr/local/bin/perl #============ EXTERNAL LIBRARIES use DBI; #============ EXPORTED ENVIRONMENT VARIABLES if (! (defined $ENV{"ORACLE_HOME"} and (defined $ENV{"ORACLE_SID"} or defined $ENV{"TWO_TASK"}))) { &Usage; exit ; } $ENV{"TWO_TASK"} = $ENV{"ORACLE_SID"} unless (defined $ENV{"TWO_TASK"}) ; $ENV{"ORACLE_SID"} = $ENV{"TWO_TASK"} unless (defined $ENV{"ORACLE_SID"}) ; if (defined($ENV{'LD_LIBRARY_PATH'})) { $LD_LIBRARY_PATH_DFLT = $ENV{'LD_LIBRARY_PATH'}; $LD_LIBRARY_PATH = "$ORACLE_HOME/lib:$LD_LIBRARY_PATH_DFLT:/usr/ucblib"; } else { $LD_LIBRARY_PATH_DFLT = ""; $LD_LIBRARY_PATH = "$ORACLE_HOME/lib:/usr/ucblib"; } $ORACLE_PATH = "$ORACLE_HOME/bin"; $ENV{"LD_LIBRARY_PATH"} = $LD_LIBRARY_PATH; $ENV{"PATH"} .= ":$ORACLE_PATH"; #==================== MAIN PROGRAM ====================# $|=1; $arg0 = $ARGV[0] ; $arg1 = $ARGV[1] ; if (length($arg0) == 0 || length($arg1) == 0) { &Usage ; } else { ($ORACLE_USER, $ORACLE_PASSWORD) = split(/\//, $arg0) ; &exec_statement($arg1) ; } exit ; #==================== DIAGNOSTICS ====================# sub Usage { print STDOUT ("Usage\n") ; print STDOUT ("\t$0 user/password \"statement\"\n") ; print STDOUT ("where\n") ; print STDOUT ("\tuser/password : oracle user, password delimited by '/'\n"); print STDOUT ("\tstatement : non-select sql statement\n"); print STDOUT ("Environment Variables\n") ; print STDOUT ("\tORACLE_HOME - required\n"); print STDOUT ("\tORACLE_SID or TWO_TASK - required\n"); print STDOUT ("Examples\n") ; print STDOUT ("\t$0 foo/bar \"create table toon ( id char, serial number, dat long )\"\n") ; print STDOUT ("\t$0 \$LN \"insert into toon values ('A', '4201', '...')\"\n") ; print STDOUT ("\t$0 \$LN \"update toon set serial = '3920' where id = 'R'\"\n") ; print STDOUT ("\t$0 \$LN \"delete from toon where id = 'B'\"\n") ; print STDOUT ("\t$0 \$LN \"truncate table cloth\"\n") ; print STDOUT ("\t$0 \$LN \"drop table leg\"\n") ; return; } #==================== FUNCTIONS ====================# sub exec_statement { my ($statement) = @_ ; my $dbh = DBI->connect("dbi:Oracle:", $ORACLE_USER, $ORACLE_PASSWORD, { RaiseError=>1, AutoCommit=>0}) ; my $sth = $dbh->prepare($statement) ; $sth->execute; $dbh->commit; $dbh->disconnect; return; }