CREATE OR REPLACE FUNCTION f_import_genre_item(IN itemcode integer, IN genrecode integer[], IN genrename character varying[], IN usr character varying, OUT errcd integer, OUT errmsg character varying) AS
$BODY$

DECLARE
     genre integer;
     i   integer;
     flg integer;
BEGIN
    errcd := 1;
    i := 1;

    IF itemcode IS NULL THEN
        errmsg := '品目コードが指定されていません。';
        errcd := -10;
        RETURN;
    END IF;

    IF usr IS NULL THEN
        errmsg := '更新ユーザが指定されていません。';
        errcd := -10;
        RETURN;
    END IF;
    delete from t_genre_item where itemcd = itemcode;
    LOOP
        flg := 1;

        IF genrecode[i] = 0 AND genrename[i] = 'NULL' THEN
            flg := 0;

        ELSIF genrecode[i] <> 0 THEN
            SELECT genrecd INTO genre FROM t_genre WHERE genrecd = genrecode[i];
            IF genre IS NULL THEN
                errmsg := genrecode[i] || 'はジャンルマスタにありません';
                errcd := -10;
                RETURN;
            END IF;

        ELSIF genrecode[i] = 0 THEN
            -- ジャンル名からジャンルコード取得
            SELECT genrecd INTO genre FROM t_genre WHERE genrenm = genrename[i];
            IF genre IS NULL THEN
                errmsg := genrename[i] || 'はジャンルマスタにありません';
                errcd := -10;
                RETURN;
            END IF;
        END IF;

        -- 追加
        IF flg = 1 THEN
            INSERT INTO t_genre_item(genrecd, itemcd, updusrnm) VALUES(genre, itemcode, usr);
        END IF;

        -- ループ終了
        i := i + 1;
        IF genrecode[i] IS NULL AND genrename[i] IS NULL THEN
            EXIT;
        END IF;

    END LOOP;
    errcd := 1;
END;

$BODY$
  LANGUAGE 'plpgsql' VOLATILE;