admin管理员组文章数量:1635843
I am learning Npgsql and PostgreSQL. I am unable to define the output parameter correctly. What am I doing wrong?
Here is the function:
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;
Here is the code:
[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); }
Here is the error message I am getting: Npgsql.NpgsqlException : ERROR: 42601: query has no destination for result data
The following doesn't work:
SELECT _CustomerID = lastval();
Replace it with a simple:
_CustomerID = lastval();
Note that Npgsql currently binds parameters by position only, and not by name. This means that the names you give in the NpgsqlParameter instances mean nothing - their order of addition must correspond to the function's declaration. Npgsql 3.1 will support named binding of function arguments (see
本文标签: ErrorpostgresqlQueryDataresult
版权声明:本文标题:解决postgresql-- ERROR: 42601: query has no destination for result data 内容由热心网友自发贡献,该文观点仅代表作者本人, 转载请联系作者并注明出处:https://www.elefans.com/xitong/1729216201a1190463.html, 本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌抄袭侵权/违法违规的内容,一经查实,本站将立刻删除。
发表评论