Npgsql を使用して、CHARACTER をパラメーターとして受け取る関数 (ストアド プロシージャ) を呼び出そうとしていますが、機能しません。パラメーターなしで、または INTEGER パラメーターを使用して同じ関数を宣言すると、必要な結果セットが得られます。パラメータをCHARACTERとして宣言すると、機能しなくなります。なにが問題ですか?
ここに私の関数のコードがあります:
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;
そして、ここに私が使用しているC#コードがあります:
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();
パラメータをCHARACTER、CHARACTER(10)、CHARACTER VARYING、およびCHARACTER VARYING(10)として宣言しようとしました...
編集:エラーメッセージは表示されませんが、期待される結果セットを取得する代わりに、呼び出しようとしている関数と同じ名前の単一の列を持つ空の結果セットを取得します。