J'essaie d'utiliser Npgsql pour appeler une fonction (procédure stockée) qui prend un paramètre CHARACTER comme paramètre, mais cela ne fonctionne pas. Si je déclare la même fonction sans paramètre, ou avec un paramètre INTEGER, j'obtiens les ensembles de résultats que je veux. Lorsque je déclare le paramètre en tant que caractère, il cesse de fonctionner. Qu'est-ce qui ne va pas?Utilisation de npgsql pour appeler une fonction qui prend le caractère comme paramètre
Voici le code de ma fonction:
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;
Et voici le code C# que j'utilise:
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();
J'ai déjà essayé de déclarer le paramètre que le caractère, CARACTERE (10) , CHARACTER VARYING et CARACTER VARYING (10) ...
EDIT: Je n'obtiens aucun message d'erreur, mais au lieu d'obtenir le jeu de résultats attendu, j'obtiens un jeu de résultats vide avec une seule colonne comme le nom de la fonction que j'essaie d'appeler.
... Qu'est-ce qui ne va pas avec Postgres? – Eric