CREATE OR REPLACE FUNCTION
GREATEST(TEXT[]) RETURNS TEXT AS '
DECLARE
ARRY ALIAS FOR $1;
GREATEST TEXT;
BEGIN
GREATEST := ARRY[1];
FOR I IN 1 .. ARRAY_UPPER(ARRY,1) LOOP
IF ARRY[I] > GREATEST THEN
GREATEST := ARRY[I];
END IF;
END LOOP;
RETURN GREATEST;
END;
' LANGUAGE 'PLPGSQL';
SELECT GREATEST( ARRAY['HARRY', 'HARRIOT', 'HAROLD'] )
AS "Greatest";
リスト10:ストアドプロシージャGREATESTの作成
実行結果は次のようになります。
Greatest
----------
HARRY
(1 row)
OR REPLACE句を使うと、上述したDROP FUNCTION文を実行せずに、ストアドプロシージャを再定義することができます。