СОЗДАЙТЕ хранимую процедуру, используя простой текст запроса через NpgsqlConnection::ExecuteAsyncC#

Место общения программистов C#
Ответить Пред. темаСлед. тема
Anonymous
 СОЗДАЙТЕ хранимую процедуру, используя простой текст запроса через NpgsqlConnection::ExecuteAsync

Сообщение Anonymous »

Я пытаюсь создать процедуру stpored через Npsql из C#
private async Task TestExecute(string cmdQuery)
{
var cnnString = $"Server=localhost;User Id=admin;Password=somepass;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
Реклама
Ответить Пред. темаСлед. тема

Быстрый ответ

Изменение регистра текста: 
Смайлики
:) :( :oops: :roll: :wink: :muza: :clever: :sorry: :angel: :read: *x)
Ещё смайлики…
   
К этому ответу прикреплено по крайней мере одно вложение.

Если вы не хотите добавлять вложения, оставьте поля пустыми.

Максимально разрешённый размер вложения: 15 МБ.

  • Похожие темы
    Ответы
    Просмотры
    Последнее сообщение

Вернуться в «C#»