Mit npgsql zu nennen, eine Funktion, der Charakter als parameter

Ich versuche, mit Npgsql zum aufrufen einer Funktion (gespeicherte Prozedur), das dauert ein ZEICHEN als parameter übergeben, aber es funktioniert nicht. Wenn ich erkläre die gleiche Funktion ohne Parameter oder mit einem INTEGER-parameter, bekomme ich Ergebnisse, die ich will. Wenn ich deklarieren Sie den parameter als ZEICHEN, es funktioniert. Was ist falsch?

Hier ist der code meiner Funktion:

CREATE OR REPLACE FUNCTION testrefcursor1(in xxx character varying(10)) RETURNS SETOF refcursor AS
$$
DECLARE 
  ref1 refcursor;
  ref2 refcursor;
BEGIN

OPEN ref1 FOR 
 SELECT * FROM accounts;
RETURN NEXT ref1;

OPEN ref2 FOR 
 SELECT * FROM accounts;
RETURN NEXT ref2;

RETURN;
END;
$$
LANGUAGE plpgsql;

Und hier ist der C# - code, die ich benutze:

var connection = new Npgsql.NpgsqlConnection(connectionString.ConnectionString);

connection.Open();
var trans = connection.BeginTransaction();

var command = new Npgsql.NpgsqlCommand("testrefcursor1", connection);
command.CommandType = System.Data.CommandType.StoredProcedure;

var parameter = command.CreateParameter();
parameter.ParameterName = "xxx";
parameter.DbType = System.Data.DbType.String;
parameter.Value = "10";
command.Parameters.Add(parameter);

var da = new Npgsql.NpgsqlDataAdapter(command);
var ds = new System.Data.DataSet();
da.Fill(ds);

trans.Commit();
connection.Close();

Ich habe bereits versucht die Deklaration der parameter als CHARAKTER, CHARAKTER(10), CHARACTER VARYING CHARACTER VARYING(10)...

EDIT: ich bekomme keine Fehlermeldung, aber anstatt das erwartete Ergebnis eingestellt, bekomme ich eine leere Ergebnismenge mit einer einzigen Spalte, die den gleichen Namen wie die Funktion, die ich bin versucht zu rufen.

...was ist falsch mit Postgres?

InformationsquelleAutor Antoine Aubry | 2009-08-19

Schreibe einen Kommentar