Thread: Error handling in pltcl

Error handling in pltcl

From
"Dinesh Pandey"
Date:
Hi,
 
Can any one tell me how to handle error in PL/TCL language.
 
On Error/Exception,
In the exception block I want to call a FUNCTION (written in PL/pgSQL).
 

Thanks
Dinesh Pandey

 

Re: Error handling in pltcl

From
Michael Fuhr
Date:
On Mon, Apr 18, 2005 at 09:20:37AM +0530, Dinesh Pandey wrote:
>  
> Can any one tell me how to handle error in PL/TCL language.

What kind of error?  Have you tried using catch?

> On Error/Exception, 
> In the exception block I want to call a FUNCTION (written in PL/pgSQL).

You could use spi_exec to SELECT the function.

If you still have trouble, then please post a simple example that
shows what you're trying to do.

BTW, pgsql-sql probably isn't the best place to ask PL/Tcl questions
since its description is "Discussion for users on SQL related
matters."  pgsql-general or pgsql-interfaces might be more appropriate.

-- 
Michael Fuhr
http://www.fuhr.org/~mfuhr/


Re: Error handling in pltcl

From
"Dinesh Pandey"
Date:
I have attached below an e-mail program.

I want to log messages into a table from a function written in 'plpgsql'
whenever any exception occurs (like unable to connect/invalid email etc..)

Pls update the code attached below

Thanks
Dinesh Pandey
========================

CREATE OR REPLACE FUNCTION PGMAIL(text, text, text, text, text, text) 
RETURNS INT4 AS 'set mailfrom     $1set mailto     $2set mailcc     $3set mailserver     $4set mailsubject $5set
mailmessage$6
 

# Mail Server    set myHost $mailserver

# Mail Server SMTP Port    set myPort 25set mySock [socket $myHost $myPort]
# Mail To Addressset toemailaddress_start [string first "<" $mailto]if {$toemailaddress_start != -1} {    set
toemailaddress_finish[string first ">" $mailto]    set toemailaddress_start [expr $toemailaddress_start + 1]    set
toemailaddress_finish[expr $toemailaddress_finish - 1]    set toemailaddress [string range $mailto
 
$toemailaddress_start $toemailaddress_finish]} else {    set toemailaddress $mailto}

# Mail Cc Addressset ccemailaddress_start [string first "<" $mailcc]if {$ccemailaddress_start != -1} {    set
ccemailaddress_finish[string first ">" $mailcc]    set ccemailaddress_start [expr $ccemailaddress_start + 1]    set
ccemailaddress_finish[expr $ccemailaddress_finish - 1]    set ccemailaddress [string range $mailcc
 
$toemailaddress_start $ccemailaddress_finish]} else {    set ccemailaddress $mailcc}

# Mail From Address    set fromemailaddress_start [string first "<" $mailfrom]if {$fromemailaddress_start != -1} {
setfromemailaddress_finish [string first ">" $mailfrom]    set fromemailaddress_start [expr $fromemailaddress_start +
 
1]    set fromemailaddress_finish [expr $fromemailaddress_finish -
1]    set fromemailaddress [string range $mailfrom
$fromemailaddress_start $fromemailaddress_finish]} else {    set fromemailaddress $mailfrom}fileevent $mySock writable
[listsvcHandler $mySock]    fconfigure $mySock -buffering none        puts $mySock "helo $mailserver"        gets
$mySockname    puts $mySock "mail from: $fromemailaddress"        gets $mySock name    puts $mySock "rcpt to:
$toemailaddress"       gets $mySock name    puts $mySock "rcpt cc: $ccemailaddress"        gets $mySock name    puts
$mySock"data"        gets $mySock name    puts $mySock "To: $mailto"    puts $mySock "Cc: $mailcc"    puts $mySock
"From:$mailfrom"    puts $mySock "Subject: $mailsubject"        puts $mySock ""    puts $mySock "$mailmessage"
puts$mySock "."    gets $mySock nameclose $mySockreturn 1'
 

#Exception handling
LANGUAGE 'pltclu';


========================