Выполнение pl/pgsql скриптов в C#

Здравствуйте, имеется sql-скрипт

DECLARE @Id;
BEGIN TRANSACTION;
  SET @Id = INSERT INTO table1 (f1, f2) VALUES (val1, val2) returning id;
  INSERT INTO table2  (f3,f4) VALUES (@Id,val4);
  INSERT INTO table2  (f3,f4) VALUES (@Id,val5);
COMMIT TRANSACTION;

Как этот скрипт можно запустить средствами библиотеки Npgsql в C#?

Если запускать через

NpgsqlCommand Command = new NpgsqlCommand(query, Connection);
Connection.Open();
try
{
    Command.ExecuteNonQuery();
}
catch (NpgsqlException ex)
{
    Connection.Close();
    MessageBox.SHOW(ex.ToString());
}
Connection.Close();

ругается сразу же на первую строчку скрипта DECLARE @Id;, в PGAdmin этот скрипт выполняется при нажатии кнопки "Выполнить pgScript"

Опции просмотра комментариев

Выберите предпочитаемый вами способ показа комментариев и нажмите "Сохранить настройки" для активации изменений.

Приблизительно надо написать

Приблизительно надо написать вот так (только с версии 9) :

DO
$$
DECLARE _id int;
BEGIN
	INSERT INTO table1 (f1, f2) VALUES (@val1, @val2) returning id INTO _id;
        INSERT INTO table2  (f3,f4) VALUES (_Id,@val4);
        INSERT INTO table2  (f3,f4) VALUES (_Id,@val5);
END;
$$ LANGUAGE plpgsql;

где @valX надо добавить в код в качестве параметров. Может быть сработает :) Не пробовал.

Сработало, спасибо за помощь

Сработало, спасибо за помощь

Опции просмотра комментариев

Выберите предпочитаемый вами способ показа комментариев и нажмите "Сохранить настройки" для активации изменений.

Back to top

(С) Виктор Вислобоков, 2008-2023