Я изучаю Npgsql и PostgreSQL. Я не могу правильно определить выходной параметр. Что я делаю не так?Как сделать параметр out с помощью Npgsql и PostgreSQL?
Вот функция:
CREATE OR REPLACE FUNCTION Insert_Customer_WithOutputParameter(
IN _FirstName character varying DEFAULT NULL::character varying,
IN _LastName character varying DEFAULT NULL::character varying,
OUT _CustomerID integer)
RETURNS integer as
$BODY$
BEGIN
INSERT INTO Customers (FirstName, LastName) VALUES (_FirstName, _LastName);
SELECT _CustomerID = lastval();
END
$BODY$
LANGUAGE plpgsql VOLATILE
COST 100;
Вот код:
[Test]
public void ExecuteNonQuerySproc()
{
NpgsqlConnection conn = new NpgsqlConnection("Host=localhost; Database=postgres; User ID=postgres; Password=password");
conn.Open();
IDbCommand command = conn.CreateCommand();
command.CommandText = "Insert_Customer_WithOutputParameter";
command.CommandType = CommandType.StoredProcedure;
command.Parameters.Add(new NpgsqlParameter("@FirstName", "John"));
command.Parameters.Add(new NpgsqlParameter("@LastName", "Smith"));
NpgsqlParameter outParm = new NpgsqlParameter("@CustomerID", NpgsqlDbType.Integer)
{
Direction = ParameterDirection.Output
};
command.Parameters.Add(outParm);
command.ExecuteNonQuery();
conn.Close();
Console.WriteLine(outParm.Value);
}
Вот сообщение об ошибке я получаю: Npgsql.NpgsqlException: ОШИБКА: 42601: запрос имеет нет адресата для данных результата
Смотрите следующее: http://stackoverflow.com/questions/2085421/error-query-has-no-destination-for-result-data Не удалось проверить, но возможно: _SELECT lastval() INTO _CustomerID_? – Steve