我不能让我的存储过程(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.
我不知道什么是错的做参数呢?我也read东西关于'?'作为参数的占位符,但我不太明白。
签名的存储过程:
ALTER PROCEDURE [dbo].[udp_MyStoredProc]
(
@Id int,
@Name NVARCHAR(255)
)
AS
BEGIN ... END
如果我做服务器Management Studio中这样的事情,它的工作原理:
EXEC udp_MyStoredProc @Id = 30, @Name = 'test'
THX任何的窍门。
sl3dg3
灿你向我们展示你的存储过程的定义? –
@ marc_s,对不起,我忘了 - >更新。 – sl3dg3
我对(不再)对NHibernate非常熟悉 - 但我会认为'是问题所在。如果你删除那一个映射片断? –