Hi Tim,
 
You were right. The problem was in quoting the $timestamp. The script is
going through fine now.
Thanks for the help.
 
with regards,
Rahul

----- Original Message ----- 
From: [EMAIL PROTECTED] <mailto:[EMAIL PROTECTED]>  
To: [EMAIL PROTECTED] <mailto:[EMAIL PROTECTED]>  ;
[EMAIL PROTECTED] <mailto:[EMAIL PROTECTED]>  
Cc: [EMAIL PROTECTED] <mailto:[EMAIL PROTECTED]>  
Sent: Monday, April 15, 2002 5:41 PM
Subject: RE: Problem Calling a stored procedure - Urgent


I would suggest that you approach this problem by simplifying it as much
as possible. For example, try putting your parameter inside the prepare
statement and see if it works. If it does, then you know that there's a
problem with the way that you're using bind_params.

I notice two things about the bind params statement: 1) using the ':'
for a placeholder does not work for all database drivers. Better to use
the '?' method. 2) You're probably better off not quoting $timestamp
when it's used as a bind parameter as it is passed to the database
seperately from the SQL statement.

If you're going to be using the Perl DBI module a lot, then you should
consider getting the excellent book "Programming the Perl DBI" published
by O'Reilly.

Regards, 

Tim Helck 

-----Original Message----- 
From: Rahul R M Desai [ mailto:[EMAIL PROTECTED]
<mailto:[EMAIL PROTECTED]> ] 
Sent: Monday, April 15, 2002 7:33 AM 
To: [EMAIL PROTECTED] 
Cc: Karthik Gurumurthy 
Subject: Problem Calling a stored procedure - Urgent 


Hi all, 
  
I am very new to Perl and the DBI package. 
I have a no. of procedures which call each other on the Oracle DB. From 
the SQL prompt they are running properly. But when I run the same 
through a perl script, it gives some errors. 
  
The code that i have written is : 
------------------------------------------------------------------------

------------ 
my $dbh = DBI->connect("dbi:Oracle:$db", 
                       $username, $password, {AutoCommit => 0}  ) 
    or die "Database connection not made: $DBI::errstr"; 
$timestamp = time(); 
eval { 
    my $func = $dbh->prepare("BEGIN do_complete_migration(:parameter1); 
END;"); 
    $func->bind_param(":parameter1", q{$timestamp}); 
    $func->execute; 
    $dbh>commit; 
}; 
print "Done...\n"; 
  
$dbh->disconnect(); 
------------------------------------------------------------------------

------------ 
  
When I run this script, I get the following error : 
------------------------------------------------------------------------

----------------------------------- 
DBD::Oracle::st execute failed: ORA-00911: invalid character 
ORA-06512: at "APP_OWNER.INSERT_ATTR", line 21  // There is a Execute 
Immediate statement on this line 
ORA-06512: at "APP_OWNER.MIGRATE_LEADS", line 18 // Calls proc 
Insert_attr 
ORA-06512: at "APP_OWNER.DO_COMPLETE_MIGRATION", line 6 // Calls proc 
migrate_leads 
ORA-06512: at line 1 (DBD: oexec error) at mcs.pl line 85, <IN> line 
109. 
Done... 
------------------------------------------------------------------------

---------------------------------------- 
  
I am not able to figure out if there is syntax problem in the perl 
script. I am sure that there i no problem in the procedure as they run 
properly if I execute the proc fron the sql prompt. Please help if 
somebody can figure this out. 
  
  
Thanks and regards, 
Rahul Desai 

Reply via email to