Here are only a few functions to demonstrate how easy it is to
    write PL/pgSQL
    functions. For more complex examples the programmer
    might look at the regression test for PL/pgSQL.
   
    One painful detail in writing functions in
	PL/pgSQL is the handling of single
	quotes. The function's source text in CREATE FUNCTION
	must be a literal string. Single quotes inside of literal strings
	must be either doubled or quoted with a backslash. We are still
	looking for an elegant alternative. In the meantime, doubling the
	single quotes as in the examples below should be used. Any
	solution for this in future versions of
	PostgreSQL will be forward compatible.
   
    For a detailed explanation and examples of how to escape single
    quotes in different situations, please see Section 19.11.1.1.
   
Example 19-2. A Simple PL/pgSQL Function to Increment an Integer
     The following two PL/pgSQL functions are identical to their
     counterparts from the C language function discussion. This
     function receives an integer and increments it by
     one, returning the incremented value.
    
CREATE FUNCTION add_one (integer) RETURNS INTEGER AS '
    BEGIN
        RETURN $1 + 1;
    END;
' LANGUAGE 'plpgsql';Example 19-3. A Simple PL/pgSQL Function to Concatenate Text
     This function receives two text parameters and
     returns the result of concatenating them.
    
CREATE FUNCTION concat_text (TEXT, TEXT) RETURNS TEXT AS '
    BEGIN
        RETURN $1 || $2;
    END;
' LANGUAGE 'plpgsql';Example 19-4. A PL/pgSQL Function on Composite Type
     In this example, we take EMP (a table) and an
     integer as arguments to our function, which returns
     a boolean. If the salary field of the EMP table is
     NULL, we return f. Otherwise we compare with
     that field with the integer passed to the function
     and return the boolean result of the comparison (t
     or f). This is the PL/pgSQL equivalent to the example from the C
     functions.
    
CREATE FUNCTION c_overpaid (EMP, INTEGER) RETURNS BOOLEAN AS '
    DECLARE
        emprec ALIAS FOR $1;
        sallim ALIAS FOR $2;
    BEGIN
        IF emprec.salary ISNULL THEN
            RETURN ''f'';
        END IF;
        RETURN emprec.salary > sallim;
    END;
' LANGUAGE 'plpgsql';