CREATE TYPE MUL_DIV_OUTS AS
( MUL INTEGER, DIV INTEGER );
CREATE OR REPLACE FUNCTION
MUL_DIV( INTEGER, INTEGER )
RETURNS MUL_DIV_OUTS AS '
DECLARE
A ALIAS FOR $1;
B ALIAS FOR $2;
MUL INTEGER;
DIV INTEGER;
OUTS MUL_DIV_OUTS;
BEGIN
MUL := A * B;
DIV := A / B;
SELECT INTO OUTS MUL, DIV;
RETURN OUTS;
END;
' LANGUAGE 'plpgsql';
CREATE OR REPLACE FUNCTION TEST_MUL_DIV()
RETURNS VOID AS '
DECLARE
M INTEGER;
D INTEGER;
OUTS MUL_DIV_OUTS%ROWTYPE;
BEGIN
SELECT INTO OUTS * FROM MUL_DIV( 8, 2 );
M := OUTS.MUL;
D := OUTS.DIV;
RAISE NOTICE ''8 * 2 = %'', M;
RAISE NOTICE ''8 / 2 = %'', D;
RETURN;
END;
' LANGUAGE 'plpgsql';