Передача параметров из C# в PostgreSQL

230
27 декабря 2017, 18:01

Никак не подберу правильную последовательность передачи параметров. Вылетает ошибка, что входная строка имела неверный формат.

Код С#

protected void ODS_TechObjs_Inserting(object sender, ObjectDataSourceMethodEventArgs e)
    {
        object ctrl = gvTechObjs.FindEditRowCellTemplateControl((GridViewDataColumn)gvTechObjs.Columns["namehead"], "idpos");
        object val = ctrl.GetType().InvokeMember("Value", System.Reflection.BindingFlags.GetProperty, null, ctrl, null);
        NpgsqlParameter[] pgsqlParams = { new NpgsqlParameter("p_tobject_id", NpgsqlDbType.Integer),
                                          new NpgsqlParameter("p_tobject_name", e.InputParameters["tobject_name"]),
                                          new NpgsqlParameter("p_position_id", NpgsqlDbType.Integer),
                                          new NpgsqlParameter("p_tobject_type",  NpgsqlDbType.Integer),
                                          new NpgsqlParameter("p_tobject_address", e.InputParameters["tobject_address"]) };
        pgsqlParams[0].Direction = ParameterDirection.InputOutput;
        pgsqlParams[0].Value = e.InputParameters["tobject_id"];
        pgsqlParams[2].Value = val;
        pgsqlParams[3].Value = e.InputParameters["tobject_type"];
        e.InputParameters.Clear();
        e.InputParameters["pgsqlParams"] = pgsqlParams;
        e.InputParameters["pgsqlProc"] = Resources.PgSQLResources.AddTObjects;
    }

Параметры процедуры SQL:

CREATE OR REPLACE FUNCTION metrolog.position_addtobjects(
    p_user_name character varying,
    INOUT p_tobject_id integer,
    p_tobject_name character varying,
    p_position_id integer,
    p_tobject_type integer,
    p_tobject_address character varying)
    RETURNS integer
    LANGUAGE 'plpgsql'
    COST 100
    VOLATILE 
    ROWS 0
AS $BODY$
Answer 1

Я сомневаюсь что вы вообще тестировали функцию, и уже пытаетесь вызывать ее откуда-то. Проверить функцию можно прямо в SQL-консоли pgAdmin:

 select metrolog.position_addtobject(<какие-нибудь параметры>); 

Если всё ok - таким же образом и вызывайте функцию из программы C# или любой другой, через выполнение SQL-команды (выше) - запрос вернет строку с результатом, всё как обычно.

READ ALSO
Аутентификация в ASP.NET MVC и AngularJS

Аутентификация в ASP.NET MVC и AngularJS

Доброго времени суток! Возникла следующая трудность, при передаче данных о пользователе, прошедшем аутентификацию в приложении ASPNET MVC на строну...

225
Xamarin android не подгружаются файлы проекта?

Xamarin android не подгружаются файлы проекта?

У Xamarin Forms для android проекта хочу разместить изображение по нажатию на кнопкуДля этого в MainPage

213
Недоступная форма

Недоступная форма

Для перемещения окна есть прозрачный Rectangle, но если двигать окно и в этот момент это окно "превращается" в другое:

132