DROP FUNCTION f_search_key_insert(IN integer, IN integer, IN character varying, IN character varying, IN character varying, OUT errcd integer, OUT errmsg character varying);

CREATE OR REPLACE FUNCTION f_search_key_insert(IN integer, IN integer, IN character varying, IN character varying, IN character varying, OUT errcd integer, OUT errmsg character varying) AS
$BODY$

DECLARE
     i_itemcd ALIAS FOR $1;            -- 品目C
     i_usercd ALIAS FOR $2;            -- ユーザC
     i_searchkey ALIAS FOR $3;         -- キーワード

     i_updusrnm ALIAS FOR $4;          -- 更新ユーザ名
     i_updpcnm ALIAS FOR $5;           -- 更新マシン

     i        integer;
     cntcheck integer;
BEGIN

    -- とりあえずチェックしない
    --IF i_itemcd IS NULL THEN
    --    errmsg := '品目コードが指定されていません。';
    --    errcd := -10;
    --    RETURN;
    --END IF;

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

    IF i_searchkey IS NULL THEN
        errmsg := 'キーワードが指定されていません。';
        errcd := -10;
        RETURN;
    END IF;

    IF i_updusrnm IS NULL THEN
        errmsg := '更新ユーザ名が指定されていません。';
        errcd := -10;
        RETURN;
    END IF;

    IF i_updpcnm IS NULL THEN
        errmsg := '更新マシンが指定されていません。';
        errcd := -10;
        RETURN;
    END IF;

 -- 外部キーチェック --
    IF i_itemcd IS NOT NULL THEN
        SELECT itemcd INTO cntcheck FROM t_item_basic_attr WHERE itemcd = i_itemcd;
        IF  NOT FOUND THEN
            errmsg := '品目基本属性テーブルに存在しない品目コード';
            errcd := -10;
            RETURN;
        END IF;
    END IF;

    IF i_usercd IS NOT NULL THEN
        SELECT membercd INTO cntcheck FROM t_member_basic_attr WHERE membercd = i_usercd;
        IF NOT FOUND THEN
            errmsg := '会員基本属性テーブルに存在しない会員コード';
            errcd := -10;
            RETURN;
        END IF;
    END IF;

 -- 更新処理 --
    INSERT INTO t_search_key(itemcd, usercd, searchkey, createdate, updusrnm, updpcnm) VALUES(i_itemcd, i_usercd, i_searchkey, current_timestamp, i_updusrnm, i_updpcnm);

    errcd := 1;
    RETURN;
END;

$BODY$
  LANGUAGE 'plpgsql' VOLATILE;
