Je ne peux pas exécuter ma procédure stockée (SQL Server) avec NHibernate. Je suit la cartographie:Procédures stockées avec des arguments
<sql-query name="udp_MyStoredProc">
<query-param name="Id" type="Int32" />
<query-param name="Name" type="String" />
<return-scalar column="ResId" type="Int32"/>
EXEC udp_MyStoredProc @Id = :Id,
@Name = :Name
</sql-query>
du code:
IQuery query = _HibSession.GetNamedQuery("udp_MyStoredProc");
query.SetInt32("Id", id);
query.SetString("Name", name);
var res = query.List();
Il en résulte une exception près:
[SQL: EXEC udp_MyStoredProc @Id = @p0, @Name = @p1] ---> System.Data.SqlClient.SqlException: Procedure or function udp_MyStoredProc has too many arguments specified.
Je ne sais pas quel est le problème avec le arguments? J'ai aussi read quelque chose à propos de '?' comme des espaces réservés pour les paramètres, mais je ne comprends pas tout à fait.
Signature de la procédure stockée:
ALTER PROCEDURE [dbo].[udp_MyStoredProc]
(
@Id int,
@Name NVARCHAR(255)
)
AS
BEGIN ... END
Si je fais quelque chose comme cela dans Management Studio Server, cela fonctionne:
EXEC udp_MyStoredProc @Id = 30, @Name = 'test'
thx pour tout Tipps.
sl3dg3
Can vous nous montrez la définition de votre proc stocké? –
@ marc_s, désolé, j'ai oublié -> mis à jour. – sl3dg3
Je ne suis plus (très) familier avec NHibernate - mais je pense que le '' est le problème. Que faire si vous supprimez ce fragment de cartographie? –