2010-03-04 6 views
2

Je travaille avec le code que je convertis en Pgsql travaillant avec .NET. Je veux appeler une fonction stockée qui possède plusieurs paramètres, mais je voudrais lier les paramètres par nom, comme ceci:Npgsql passer les paramètres par nom à une fonction stockée

NpgsqlCommand command = new NpgsqlCommand("\"StoredFunction\"", _Connection) 
command.CommandType = CommandType.StoredProcedure; 
command.Parameters.Add("param2", value2); 
command.PArameters.Add("param1", value1); 

Les tentatives de le faire alors regardez bien pour une fonction avec les types de paramètres correspondant à la ordre dans lequel j'ai ajouté les paramètres à la collection, pas par le nom.

Est-il possible pour Npgsql de lier les paramètres aux fonctions stockées par nom?

Répondre

3

Actuellement, Npgsql ne prend pas en charge les paramètres de passe par leur nom. Bien qu'il supporte la réception de valeurs de paramètres par nom.

Pourriez-vous remplir un rapport de bogue à ce sujet? Nous pouvons donc suivre et mettre en œuvre.

+0

Vous rencontrez des problèmes pour le signaler. Je me suis inscrit sur le site mais signaler que le bogue ne fonctionne pas. – Jeff

+0

Pourriez-vous essayer de remplir à nouveau le rapport de bogue. Merci d'avance. –

3

Malheureusement, cela ne fonctionne pas avec la procédure de stockage (CommandType.StoredProcedure).

Il le fait avec la commande SQL-text (CommandType.Text). Vous pouvez utiliser: paramname, plus je pense que dans la dernière version, vous pouvez utiliser parameters.addwithvalue (": paramname", param).

Vous pouvez également utiliser @paramname avec la dernière version (comme MS Sql Server). Lire la section "Utilisation des paramètres dans une requête" de this manual pour une réponse à votre question initiale - mais rappelez-vous ce que j'ai dit ci-dessus pour vous faciliter la vie.

+1

testant avec la version de Npgsql disponible au Q1 2013, je trouve que le fournisseur semble supporter seulement le passage de paramètre de mode positionnel aux fonctions sur le serveur quand côté client la commande est en mode 'CommandType.StoredProcedure'. L'ordre dans lequel les paramètres sont ajoutés à la collection Parameters de la commande est l'ordre dans lequel ils sont fournis. – Tim

+0

Je n'ai pas testé avec StoredProcedure, mais il fonctionne avec Text. –

Questions connexes