var func = function (ARGV) {
    var jobId = ARGV["job_id"];
    var tableName = "pdm_job_" + ARGV["jobcategory"] + "_layer";
    //GUI.msgbox({text: TDataParse.variant2JsonStr(tableName)});
    var db = new TSqlQueryV2(T_SQLCNT_POOL.getSqlDatabase());
    db.begin();
    try {
        var oLayers = db.selectMapMap({
            table: tableName,
            field: ["odb_name", "release_status"],
            where: {
                job_id: jobId
            },
            uniquefield: "odb_name"
        });
        if (db.lastError().isValid()) throw db.lastError();
        //GUI.msgbox({text: TDataParse.variant2JsonStr(oLayers)});

        db.deleteRow({
            table: tableName,
            where: {
                job_id: jobId
            }
        });
        if (db.lastError().isValid()) throw db.lastError();

        var fieldLst = ["name", "odb_context", "odb_type", "odb_polarity", "odb_side", "drl_start", "drl_end",
            "row_num", "type", "drl_start_num", "drl_end_num", "drl_from_num", "drl_to_num", "drl_connect_to",
            "odb_name", "side", "stackup_num", "customer_field", "input_file_name", "odb_row_num"
        ];

        for (var i = 0; i < ARGV["layers"].length; i++) {
            layerName = ARGV["layers"][i];
            var layerInfo = ARGV["matrix"][layerName];
            var tmpData = {
                "job_id": jobId,
                "name": layerInfo["name"]
            };
            if (ARGV["releasestatus"] != undefined && ARGV["releasestatus"] != null && ARGV["releasestatus"].length > 0 &&
                ARGV["releasestatus"][layerInfo["odb_name"]] != undefined && ARGV["releasestatus"][layerInfo["odb_name"]] != null) {
                tmpData["release_status"] = ARGV["releasestatus"];
            } else {
                tmpData["release_status"] = oLayers.hasOwnProperty(layerInfo["odb_name"]) ? oLayers[layerInfo["odb_name"]]["release_status"] : null;
            }
            for (n = 0; n < fieldLst.length; n++) {
                tmpData[fieldLst[n]] = layerInfo[fieldLst[n]];
            }
            //GUI.msgbox({text: TDataParse.variant2JsonStr(tmpData)});
            db.insertRow({
                table: tableName,
                data: tmpData
            });
            if (db.lastError().isValid()) throw db.lastError();
        }
        db.commit();
        return new TDataResponse();
    } catch (err) {
        print(err.text());
        db.rollback();
        return new TDataResponse(err, "");
    }
}