我有一个带有存储过程/函数的postgres数据库。我正在http://sqlines.com/postgresql/npgsql_cs_result_sets阅读有关读取结果的教程,但我没有得到“存储过程 - 在C#中使用单个结果集”中所述的相同输出。
我错过了什么?
我的存储过程如下所示:
CREATE OR REPLACE FUNCTION testme() RETURNS refcursor AS $$
DECLARE
ref refcursor;
BEGIN
OPEN ref FOR SELECT * FROM achdrow LIMIT 100;
RETURN ref;
END;
$$ LANGUAGE plpgsql;
我的代码看起来像这样:
Npgsql.NpgsqlCommand cmd = new Npgsql.NpgsqlCommand();
cmd.Connection = new Npgsql.NpgsqlConnection( "ConnectionString" );
cmd.CommandType = CommandType.StoredProcedure;
Npgsql.NpgsqlTransaction tran = null;
Npgsql.NpgsqlDataReader dr;
try
{
cmd.CommandText = "testme";
cmd.Connection.Open();
tran = cmd.Connection.BeginTransaction();
dr = cmd.ExecuteReader();
string x = "";
if ( dr.HasRows == true )
{
while ( dr.Read() )
x = dr[0].ToString();
}
dr.Close();
}
finally
{
tran.Commit();
cmd.Connection.Close();
}
答案 0 :(得分:1)
<未命名的门户网站2>是光标的自动名称,这将帮助您理解和解决问题http://www.sqlines.com/postgresql/how-to/return_result_set_from_stored_procedure