From: | "Igor Neyman" <ineyman(at)perceptron(dot)com> |
---|---|
To: | "Ralph Smith" <smithrn(at)washington(dot)edu>, <pgsql-general(at)postgresql(dot)org> |
Subject: | Re: A plpgsql unidentifiable problem. |
Date: | 2008-06-20 13:18:48 |
Message-ID: | F4C27E77F7A33E4CA98C19A9DC6722A20319E11A@EXCHANGE.corp.perceptron.com |
Views: | Raw Message | Whole Thread | Download mbox | Resend email |
Thread: | |
Lists: | pgsql-general |
Easy: you've got 3 Ifs without "END IF":
IF uppergt = 'BOD' THEN RETURN 0 ;
IF uppergt = 'MOD' THEN RETURN 86400/2 ;
IF uppergt = 'EOD' THEN RETURN 86399 ;
Igor
-----Original Message-----
From: Ralph Smith [mailto:smithrn(at)washington(dot)edu]
Sent: Thursday, June 19, 2008 3:19 PM
To: pgsql-general(at)postgresql(dot)org
Subject: A plpgsql unidentifiable problem.
I'm baffled and have tried various variations but still nogo.
From PgAdmin III I get:
-------------------------------------------
********** Error **********
ERROR: syntax error at or near ";"
SQL state: 42601
Character: 19001
-- referring to the semi-colon after the 'END' statement.
*******************************
When I check this out in PgAdmin III.
-------------------------------------------
CREATE OR REPLACE FUNCTION time_to_utime(given_time varchar) RETURNS INT
AS $$
DECLARE
uppergt varchar ;
colon1 int ;
colon2 int ;
digitsA varchar ;
digitsB varchar ;
digitsC varchar ;
numberA int ;
numberB int ;
numberC int ;
result int ;
BEGIN
IF check_time(given_time) = FALSE THEN
RAISE NOTICE 'The time passed into function time_to_utime is not in
a valid format.' ;
END IF ;
-- ----------------------------------------
uppergt := upper(given_time) ;
IF uppergt = 'BOD' THEN RETURN 0 ;
IF uppergt = 'MOD' THEN RETURN 86400/2 ;
IF uppergt = 'EOD' THEN RETURN 86399 ;
-- ----------------------------------------
colon1:=strpos(invar,':') ;
colon2:=colon1+strpos(substring(invar from colon1+1),':') ;
digitsA := split_part(invar,':',1) ;
numberA := to_number(digitsA,'99') ;
digitsB := split_part(invar,':',2) ;
numberB := to_number(digitsB,'99') ;
digitsC := split_part(invar,':',3) ;
numberC := to_number(digitsC,'99') ;
result := 3600*numberA + 60*numberB + numberC ;
RETURN result ;
END ;
$$ LANGUAGE PLPGSQL ; /* time_to_utime */
********************************************
Any clues?
THANKS!
Ralph Smith
From | Date | Subject | |
---|---|---|---|
Next Message | Julius Tuskenis | 2008-06-20 13:39:10 | Re: Connection to second database on server |
Previous Message | Kynn Jones | 2008-06-20 12:46:56 | Re: Easiest way to copy table from one db to another? |