Запись параметров в таблицу

253
10 января 2018, 15:21

Задача состоит в записи параметров в таблицу. Не выходит записать по неизвестной причине.

protected void ODS_Systems_Inserting(object sender, ObjectDataSourceMethodEventArgs e)
{
    object ctrl = gvSystems.FindEditRowCellTemplateControl((GridViewDataColumn)gvSystems.Columns["namehead"], "idPos");
    object val = ctrl.GetType().InvokeMember("Value", System.Reflection.BindingFlags.GetProperty, null, ctrl, null);
    NpgsqlParameter[] pgsqlParams = { new NpgsqlParameter("p_msys_id", NpgsqlDbType.Integer),
                                    new NpgsqlParameter("p_msys_name", e.InputParameters["msys_name"]),
                                    new NpgsqlParameter("p_og_facility_id", NpgsqlDbType.Bigint),
                                    new NpgsqlParameter("p_dep_id", NpgsqlDbType.Bigint),
                                    new NpgsqlParameter("p_msys_assignment_id", NpgsqlDbType.Smallint),
                                    new NpgsqlParameter("p_msys_status_id", NpgsqlDbType.Smallint),
                                    new NpgsqlParameter("p_msys_kind_id", NpgsqlDbType.Smallint),
                                    new NpgsqlParameter("p_op_id", NpgsqlDbType.Smallint),
                                    new NpgsqlParameter("p_commissioning_date", NpgsqlDbType.Date),
                                    new NpgsqlParameter("p_msys_type", NpgsqlDbType.Smallint),
                                    new NpgsqlParameter("p_id_state", NpgsqlDbType.Integer)
                                    };
    pgsqlParams[0].Direction = ParameterDirection.InputOutput;
    pgsqlParams[0].Value = e.InputParameters["p_msys_id"];
    pgsqlParams[2].Value = val;
    pgsqlParams[3].Value = e.InputParameters["p_og_facility_id"];
    pgsqlParams[4].Value = e.InputParameters["p_dep_id"];
    pgsqlParams[5].Value = e.InputParameters["p_msys_assignment_id"];
    pgsqlParams[6].Value = e.InputParameters["p_msys_status_id"];
    pgsqlParams[7].Value = e.InputParameters["p_msys_kind_id"];
    pgsqlParams[8].Value = e.InputParameters["p_msys_type smallint"];
    pgsqlParams[9].Value = e.InputParameters["p_op_id"];
    pgsqlParams[10].Value = e.InputParameters["p_commissioning_date"];
    pgsqlParams[11].Value = e.InputParameters["p_msys_type"];
    pgsqlParams[12].Value = e.InputParameters["p_id_state"];
    e.InputParameters.Clear();
    e.InputParameters["pgsqlParams"] = pgsqlParams;
    e.InputParameters["pgsqlProc"] = Resources.PgSQLResources.AddMSQQ;
}

Код на PostgreSQL:

CREATE OR REPLACE FUNCTION metrolog.pmsystems_add_msystem_qq(p_user_name character varying, INOUT p_msys_id integer, p_msys_name character varying, p_og_facility_id bigint, p_dep_id bigint, p_msys_assignment_id smallint, p_msys_status_id smallint, p_msys_kind_id smallint, p_op_id smallint, p_commissioning_date TIMESTAMP WITHOUT TIME ZONE, p_msys_type smallint, p_id_state integer) RETURNS integer LANGUAGE PLPGSQL AS $function$
DECLARE
  v_user_id integer;
BEGIN
  v_user_id := paudit_getapuserid(p_user_name);
      IF p_msys_id IS NOT NULL THEN
        UPDATE skynet.measuring_systems
           set msys_name = p_msys_name
              ,og_facility_id = p_og_facility_id
              ,dep_id = p_dep_id
              ,msys_assignment_id = p_msys_assignment_id
              ,msys_status_id = p_msys_status_id
              ,msys_kind_id = p_msys_kind_id
              ,op_id = p_op_id
              ,commissioning_date = p_commissiong_date
              ,msys_type = p_msys_type
              ,id_state = p_id_state
         WHERE msys_id = p_msys_id;
      ELSE
        INSERT INTO skynet.measuring_systems
          ( msys_id
          , msys_name
          , og_facility_id
          , dep_id
          , msys_assignment_id
          , msys_status_id
          , msys_kind_id
          , op_id
          , commissioning_date
          , msys_type
          , id_state
          )
        VALUES
          ( nextval('skynet.s_measuring_systems')
          , p_msys_name
          , p_og_facility_id
          , p_dep_id
          , p_msys_assignment_id
          , p_msys_status_id
          , p_msys_kind_id
          , p_op_id
          , p_commissioning_date
          , p_msys_type
          , p_id_state
          )
        RETURNING msys_id INTO p_msys_id;
      END IF;
EXCEPTION
  WHEN others THEN
     perform error_handler(p_user_name,'pmsystems','pmsystems_add_msystem_qq',sqlstate, sqlerrm);
END;
$function$

Выходит ошибка:

NullReferenceException Ссылка на объект не указывает на экземпляр объекта.

Как разобраться с пресловутой ссылкой на объект?

READ ALSO
Как задать структуру выходного проекта?

Как задать структуру выходного проекта?

По умолчанию VS при компиляции кладет все в одну директорию рядом с EXE

264
C# Привязать свой scrollbar к TableLayoutPanel

C# Привязать свой scrollbar к TableLayoutPanel

Как привязать свой VScrollBar к TableLayout панели?

293
The property 'MarkId' on entity type 'GameMarks' has a temporary value

The property 'MarkId' on entity type 'GameMarks' has a temporary value

Доброе время суток всем, прошу прощение чье время отнимаюСуть в том, что после того, как добавил метки в EF Core и проапдейтил базу, я не могу добавить...

262
Удалить слушатель

Удалить слушатель

Assets/Scripts/TutorialControllercs(72,79): error CS0039: Cannot convert type void' toUnityEngine

217