100 примеров и другие статьи по теме НЕ работают. то есть (как мне вызвать хранимую процедуру PostgreSQL 13 из C#?)
вот мой очень простой пример:
таблица
Код: Выделить всё
(col1 integer,
col2 character varying(20) )
Код: Выделить всё
create procedure proc1 (num int, str varchar(20))
language plpgsql
as $$
begin
insert into test1 (col1, col2) VALUES (num, str);
commit;
end;$$;
Код: Выделить всё
using var cmd = new NpgsqlCommand("CALL proc1()", _con);
cmd.Parameters.AddWithValue("num", NpgsqlDbType.Integer, 2);
cmd.Parameters.AddWithValue("str", NpgsqlDbType.Varchar, "string");
cmd.ExecuteNonQuery();
POSITION: 6'
Я также создал proc2, у которого НЕТ параметров, и я могу его легко вызвать. Я также попробовал несколько вариантов «CALL proc1()», например «CALL proc1(num, str)», но эти исключения имеют еще меньше смысла, поскольку pg не может определить разницу между параметром и столбцом: «Npgsql.PostgresException: ' 42703: столбец «номер» не существует»
Подробнее здесь: https://stackoverflow.com/questions/785 ... parameters
Мобильная версия