[ Please do not top-post. TIA ]
Gopal Karunakar wrote:
Hi,
Hello,
Here's the code pasted below. The sub basically executed an anonymous
pl/sql block (which is executing fine). I want to make sure that the user
will not be able to a ctrl-c and exit at the stage where the sql statements
are getting executed.
I tried declaring it as local but even then its hanging when i give the
interrupt.
sub CopyData
{
local $SIG{'INT'} = 'IGNORE';
($option, $sourceID, $targetID, ) = ($_[0], $_[1], $_[2]);
That is usually written as:
my ( $option, $sourceID, $targetID ) = @_;
$option =~ s/^\s*(\S*(?:\s+\S+)*)\s*$/$1/;
$sourceID =~ s/^\s*(\S*(?:\s+\S+)*)\s*$/$1/;
$targetID =~ s/^\s*(\S*(?:\s+\S+)*)\s*$/$1/;
That is a very inefficient and non-standard way to remove leading and
trailing whitespace:
s/^\s+//, s/\s+$// for $option, $sourceID, $targetID;
my $retval;
$retval = `/$ENV{'ORACLE_HOME'}/bin/sqlplus -s $QUERY_STRING<< EOF>>
$db_log
$retval gets the standard output from /$ENV{ORACLE_HOME}/bin/sqlplus but
you are redirecting the standard output to >>$db_log so $retval should
always be empty.
WHENEVER OSERROR EXIT 5 ROLLBACK;
WHENEVER SQLERROR EXIT 10 ROLLBACK;
SET SERVEROUTPUT ON SIZE 1000000;
SET FEEDBACK OFF;
set pagesize 0;
set linesize 150;
DECLARE
........................
............
COMMIT;
EXCEPTION
WHEN OTHERS
THEN
o_ret_message := 'Exception occured -' || ' Module Name:' || g_msg
|| CHR(10) ||
'Error Code: ' || SQLCODE || CHR(10) ||
'Error Message: ' || SUBSTR(sqlerrm,1,2000) ;
Is that a valid SQL statement? I know that that is not valid in Perl or
the shell.
DBMS_OUTPUT.PUT_LINE (o_ret_message);
DBMS_OUTPUT.PUT_LINE (DBMS_UTILITY.FORMAT_ERROR_BACKTRACE);
ROLLBACK;
END;
/
EOF` ;
return $retval;
}
John
--
Any intelligent fool can make things bigger and
more complex... It takes a touch of genius -
and a lot of courage to move in the opposite
direction. -- Albert Einstein
--
To unsubscribe, e-mail: [email protected]
For additional commands, e-mail: [email protected]
http://learn.perl.org/