Re: A plpgsql unidentifiable problem.

Поиск
Список
Период
Сортировка
От Igor Neyman
Тема Re: A plpgsql unidentifiable problem.
Дата
Msg-id F4C27E77F7A33E4CA98C19A9DC6722A20319E11A@EXCHANGE.corp.perceptron.com
обсуждение исходный текст
Ответ на A plpgsql unidentifiable problem.  (Ralph Smith <smithrn@washington.edu>)
Список 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@washington.edu]
Sent: Thursday, June 19, 2008 3:19 PM
To: pgsql-general@postgresql.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


В списке pgsql-general по дате отправления:

Предыдущее
От: Hermann Muster
Дата:
Сообщение: Connection to second database on server
Следующее
От: Julius Tuskenis
Дата:
Сообщение: Re: Connection to second database on server