Search Postgresql Archives

Re: nested elseif woes

[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]

 



Ivan Sergio Borgonovo wrote:

First thanks to Tom Lane who helped me promptly.

Now let's come to the problem:

create or replace function testa( )
	returns char(32) as
'
begin
	if 1=2 then
		if 1=2 then
			select 1;
		elseif 1=3 then
			select 2;
		elseif 1=4 then
			if 1=5 then
				select 3;
			else
				select 4;
			end if;
		end if;
	end if;
	return md5(''aaaa'');
end;
' language plpgsql;

test1=# select * from testa();
ERROR: syntax error at or near "if"
CONTEXT: compile of PL/pgSQL function "testa" near line 14


This is odd, I replaced the else ifs with elsif and it worked on 7.4. My 7.3 documentation says that else if and elsif are equivalent.
imp=# select * from testa();
testa
----------------------------------
74b87337454200d4d33f80c4663dc5e5
(1 row)


My test code (yours, slightly modified):
   drop function testa( );


create or replace function testa( ) returns char(32) as ' begin if 1=2 then if 1=2 then select 1; elsif 1=3 then select 2; elsif 1=4 then if 1=5 then select 3; else select 4; end if; end if; end if; return md5(''aaaa''); end; ' language plpgsql;


select * from testa();


I made several test functions with similar structure with no
improvements.
I can't even figure a pattern. I get errors on if, else, and elseif.
Till now the culprit seems to be elseif. Whenever I write test
functions without elseif I get no errors.
Did I misinterpreted the docs (37.7.2.4)?

I really can't see the problem.

I'm running 7.4.2-1 on Debian Sarge.


To be less annoying to the list, could anyone point me to somewhere where I could look at functions written by others. Any good project with enough complicated functions to be useful to learn.


thx


---------------------------(end of broadcast)---------------------------
TIP 6: Have you searched our list archives?

http://archives.postgresql.org




Ron


---------------------------(end of broadcast)--------------------------- TIP 2: you can get off all lists at once with the unregister command (send "unregister YourEmailAddressHere" to majordomo@postgresql.org)

[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]
[Index of Archives]     [Postgresql Jobs]     [Postgresql Admin]     [Postgresql Performance]     [Linux Clusters]     [PHP Home]     [PHP on Windows]     [Kernel Newbies]     [PHP Classes]     [PHP Books]     [PHP Databases]     [Postgresql & PHP]     [Yosemite]
  Powered by Linux