private async Task TestExecute(string cmdQuery)
{
var cnnString = $"Server=localhost;User Id=admin;Password=secret;Database=MyTestdatabase";
NpgsqlConnection connection = new NpgsqlConnection(cnnString);
await connection.OpenAsync();
var cmdQuery2 = "CREATE OR REPLACE PROCEDURE public.select_data()" +
" LANGUAGE sql" +
" BEGIN ATOMIC" +
" SELECT tbl.id," +
" tbl.val" +
" FROM tbl;" +
" END";
// All of these fails
var r0 = await connection.ExecuteScalarAsync(cmdQuery2);
var r1 = await connection.ExecuteAsync(cmdQuery2);
var r2 = await connection.QueryAsync(cmdQuery2);
}
Это сценарий:
CREATE OR REPLACE PROCEDURE public.select_data()
LANGUAGE sql
BEGIN ATOMIC
SELECT tbl.id,
tbl.val
FROM tbl;
END
Он отлично работает при выполнении из pgAdmin. Однако у меня возникает эта ошибка при попытке выполнить ее с помощью любого из методов Execute/Query.
[img]https://i.sstatic. net/oTL0RmSA.png[/img]

Что еще интереснее, я не вижу команду из активности pg, выполнив этот скрипт:
SELECT query, * FROM pg_stat_activity
where query ''
order by query_start desc;
Похоже, что процедура CREATE OR REPLACE завершается сбоем на некотором уровне проверки даже до достижения сервера Postgre.
Кстати, аналогичный сценарий для создание функции работает нормально даже с «ExecuteReaderAsync»
CREATE OR REPLACE FUNCTION public.fn_add_values(a integer, b integer)
RETURNS integer
LANGUAGE sql
RETURN (a + b)
Подробнее здесь: https://stackoverflow.com/questions/793 ... nexecuteas