Я не могу заставить мою хранимую процедуру (SQL Server) работать с NHibernate. У меня есть следующее отображение:
<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>
в коде:
IQuery query = _HibSession.GetNamedQuery("udp_MyStoredProc");
query.SetInt32("Id", id);
query.SetString("Name", name);
var res = query.List();
Это приводит к следующему исключению:
[SQL: EXEC udp_MyStoredProc @Id =
@p0, @Name = @p1] --->
System.Data.SqlClient.SqlException:
Procedure or function udp_MyStoredProc
has too many arguments specified.
Я не знаю, что не так с аргументами? Я также читаю кое-что о '?' в качестве заполнителей для параметров, но я не совсем понимаю.
Подпись хранимой процедуры:
ALTER PROCEDURE [dbo].[udp_MyStoredProc]
(
@Id int,
@Name NVARCHAR(255)
)
AS
BEGIN ... END
Если я делаю что-то подобное в Server Management Studio, это работает:
EXEC udp_MyStoredProc @Id = 30, @Name = 'test'
спасибо за любые чаевые.
sl3dg3