ie bekomme ich Cursordaten, wenn ich eine gespeicherte Prozedur in npgsql aufruf
Ich habe in @ Materialien gesuc www.npgsql.org, konnte aber keine Lösung für mein Problem finden ...
Tabelle, PostgreSQL
[City], [State]
"Austin", "TX"
"Houston", "TX"
"Los Angeles", "CA"
"San Diego", "CA"
"San Fransisco";"CA"
"St.Louis", "MO"
Function (gespeicherte Prozedur), PostgreSQL
-- Procedure that returns a single result set (cursor)
CREATE OR REPLACE FUNCTION show_cities() RETURNS refcursor AS $
DECLARE
ref refcursor;
BEGIN
OPEN ref FOR SELECT city, state FROM cities;
RETURN ref;
END;
$ LANGUAGE plpgsql;
Code, C #
using (NpgsqlConnection conn = new NpgsqlConnection(ConfigurationManager.ConnectionStrings["dbConnection"].ConnectionString))
{
conn.Open();
using (NpgsqlTransaction tran = conn.BeginTransaction())
{
using (var command = new NpgsqlCommand("show_cities", conn))
{
command.Transaction = tran;
command.CommandType = CommandType.StoredProcedure;
NpgsqlDataReader dr = command.ExecuteReader();
while (dr.Read())
str += dr.GetValue(0);
dr.Close();
}
tran.Commit();
}
}
Dies gibt "unbenanntes Portal 1" zurück und es ist ein Cursor, der abgerufen werden soll, keine Daten. Gibt es eine Möglichkeit, dies in Daten wie @ zu konvertiereAustin, Houston, Los Angeles ... ?
s gibt einige Posts über das Internet, aber ich bin mir nicht sicher, was ich falsch mach
npgsql: ver3.0.3 c #: vs2012(hinzugefügt) Ich habe festgestellt, dass dies bei npgsql ver3.x geschieht, während es in ver2.x mit meinem Code gut funktioniert. Gibt es eine Änderung in der Verwendung zum Abrufen des Cursors?
(Referenz)http: //www.sqlines.com/postgresql/npgsql_cs_result_set