Re: A plpgsql unidentifiable problem.

From: Ralph Smith <smithrn(at)washington(dot)edu>
To: pgsql-general(at)postgresql(dot)org
Subject: Re: A plpgsql unidentifiable problem.
Date: 2008-06-19 23:53:10
Message-ID: 0916025E-724A-43EF-8B58-3989B89A1AE3@washington.edu
Views: Raw Message | Whole Thread | Download mbox | Resend email
Thread:
Lists: pgsql-general

Yes, that was it.

The other QUITE similar language I've used didn't require the END IF
if it was a one-liner.
You can bet I won't forget that one again - or longer than it takes to
goof up and rediscover it!

Thanks!
Ralph
============================================
On Jun 19, 2008, at 12:49 PM, Philippe Grégoire wrote:

> I think that the IF clauses need END IF.
>
> IF uppergt = 'BOD' THEN RETURN 0; END IF;
> IF uppergt = 'MOD' THEN RETURN 86400/2; END IF;
> IF uppergt = 'EOD' THEN RETURN 86399; END IF;
>
> This should solve the problem.
>
> Philippe Gregoire
> Information Manager
> www.boreal-is.com
>
>
>
> Ralph Smith wrote:
>> 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
>>
>> ------------------------------------------------------------------------
>>
>> No virus found in this incoming message.
>> Checked by AVG. Version: 7.5.524 / Virus Database: 270.4.0/1507 -
>> Release Date: 6/18/2008 7:09 AM
>>

In response to

Browse pgsql-general by date

  From Date Subject
Next Message Gregory Williamson 2008-06-19 23:58:04 Re: Importing undelimited files (Flat Files or Fixed-Length records)
Previous Message Tino Wildenhain 2008-06-19 23:44:19 Re: Losing data