Jan, Tom, etc:

        Currently (7.0.3) the PLPGSQL function compiler permits only one RETURN
statment, at the end of the function.  RETURN statements placed
elsewhere cause a compile error.

        This, combined with the lack of an ELSEIF statement, has forced me into
sometimes 7 levels of nested IF..THEN statements.  WHile they work fine,
they're a bit hard to read and edit.  For example, say I want to test
for a, b, c, or d sequentially, under the 7.0.3 compiler, I must:

BEGIN
IF a THEN 
        return_text := 'One';
ELSE
        IF b THEN 
                return_text := 'Two';
        ELSE
                IF c THEN
                        return_text := 'Three';
                ELSE
                        IF d THEN
                                return_text := 'Four';
                        ELSE
                                return_text := 'Not Found';
                        END IF;
                END IF;
        END IF;
END IF;
RETURN return_text;
END;

As you can see, this kind of structure gets kind of had to read and
maintain for more complex statments.  I have two suggested revisions to
the compiler that would make this much easier:

SUGGESTION A: Support of an ELSEIF statement, as:

IF a THEN
        return_text := 'One';
ELSEIF b THEN
        return_text := 'Two';
ELSIF c THEN
        return_text := 'Three';
...etc.

SUGGESTION B: Allow more than one RETURN statment in the function text,
with funciton processing to terminate as soon as a RETURN is reached in
the program logic, but otherwise be ignored:

IF a THEN
        RETURN 'One';
END IF;

IF b THEN
        RETURN 'Two';
END IF;

...etc.

Both approaches would, from my perspective, make my code easier to read
and maintain.  And, of course, you may have already implemented one or
the other in 7.1 (which I have not yet got to run on an alternate port).

Thanks for your hard work and consideration towards us users.
        
-Josh Berkus
        
-- 
______AGLIO DATABASE SOLUTIONS___________________________
                                        Josh Berkus
   Complete information technology      [EMAIL PROTECTED]
    and data management solutions       (415) 436-9166
   for law firms, small businesses       fax  436-0137
    and non-profit organizations.       pager 338-4078
                                        San Francisco

Reply via email to