gpt4 book ai didi

sql-server - 如何从 SQL Server 存储过程中获取返回值到 nHibernate?

转载 作者:行者123 更新时间:2023-12-01 15:32:27 24 4
gpt4 key购买 nike

1.数据库平台:SqlServer

2.数据访问:nHibernate 1.2

现在我们需要通过nHibernate访问存储过程,像这样:

ALTER PROCEDURE TestProc() 
AS
BEGIN
Select * From User
Return 1234
END

我知道我可以通过 IQuery 获取用户列表,我也想获得默认返回值“1234”。

问题:

  1. 如何获得这个默认返回值?
  2. 如果不能直接获取,是否可以通过输出参数获取值?

最佳答案

NHibernate 不允许您以这种方式使用存储过程。但它确实允许使用普通的旧 ADO.NET API 进行调用。 NHibernate Documentation说如果你想使用这些过程,你必须通过 session.Connection 来执行它们。这是一个例子-

ISession session = sessionFactory.GetSession();

using(ITransaction transaction = session.BeginTransaction())
{
IDbCommand command = new SqlCommand();
command.Connection = session.Connection;

// Enlist IDbCommand into the NHibernate transaction
transaction.Enlist(command);

command.CommandType = CommandType.StoredProcedure;
command.CommandText = "dbo.SetUserInfo";

// Set input parameters
var parm = new SqlParameter("@UserID", SqlDbType.Int);
parm.Value = 12345;
command.Parameters.Add(parm);

// Set output parameter
var outputParameter = new SqlParameter("@Quantity", SqlDbType.Int);
outputParameter.Direction = ParameterDirection.Output;
command.Parameters.Add(outputParameter);

// Set a return value
var returnParameter = new SqlParameter("@RETURN_VALUE", SqlDbType.Int);
returnParameter.Direction = ParameterDirection.ReturnValue;
command.Parameters.Add(returnParameter);

// Execute the stored procedure
command.ExecuteNonQuery();
}

您可以在此处找到更多详细信息 -

http://refactoringaspnet.blogspot.com/2009/06/how-to-use-legacy-stored-procedures-in.html

关于sql-server - 如何从 SQL Server 存储过程中获取返回值到 nHibernate?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/928847/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com