2

我喜欢你的工具。我一直在使用它,但是今天我遇到了一个问题......

我编写了一个通过 OUT 参数返回一些值的存储过程,但 SubSonic 似乎没有生成存储过程方法的输出参数。例如,对于这样的 SPI:

CREATE PROC dbo.MyProc @param1 int, @param2 int out, @param3 varchar(150) out

它生成签名

SPs.MyProc(int?param1, int?param2, string param3

我希望它会产生这个

SPs.MyProc(int?param1, out int?param2, out string param3)

好吧,考虑到该方法实际上只是配置了 SP 而没有实际执行它,我希望 Subsonic 会生成这个

SPs.MyProc(int?param1, ref int?param2, ref string param3)

你们如何解决这个问题?Subsonic 已经有类似的东西了,我只是错过了它吗?

4

4 回答 4

2

SOURCE 您可以使用 StoredProcedure.OutputValues 访问 SubSonic 中 SP 的 OuPut 参数;

以下是访问 SP 的 OutPut 参数的代码块,这里我起诉了 SP “UspTestOutPut”:

StoredProcedure s = SPs.UspTestOutPut(”10″, “15″);
s.Execute();
s.OutputValues.ForEach(delegate(object objOutput)
{
    Response.Write(”OutPutValues=”+objOutput.ToString());
});
于 2009-05-31T07:33:05.963 回答
0

您必须将 SP 实例化为对象然后运行它 - 然后它将 OUTPUT 参数作为属性传递给您。

于 2009-05-31T07:55:17.713 回答
0

似乎 OutputParameters 的使用不能与 .GetReader() 结合使用,而只能与 .Execute() 结合使用。

我无法结合使用 OUTPUT 参数从数据库中检索记录。

例如,我有一个从数据库返回时事通讯列表的存储过程,但我想使用 SQL Server 2005 的分页功能。所以我提供了我想查看的 pageSize 和实际页面。在同一过程中,我想计算可用页面的数量并使用输出变量返回。

我不让它工作。具有 OutputParameters 的列表中有 1 项,但值始终为 NULL。

于 2009-08-28T09:07:09.687 回答
0

我正在使用 subsonic 和 Sqlserver 2005 服务器。对于分页功能,我将 currentpage 和 pagesize 作为输入参数传递。要获取记录总数,我使用 @TotalCount int OUTPUT 参数变量。

在 StoresPrecedure 中,我这样使用:

Select * from TestTable where PageSize=@PageSize and CurrentPage = @CurrentPage -- 获取当前页面记录。

设置@Query =“插入.....”

执行 sp_executesql @Query

SET @TotalCount = @@Rowcount -- 受插入语句影响的记录总数

在我的 C#.net - subsonic 类文件中,我使用 GetDataSet() 来获取结果 DataSet 和 OutputValues[0] 来从输出参数中获取值。

      DataSet results = sp.GetDataSet(); // current page records

      int totalCnt = Convert.ToInt32(sp.OutputValues[0].ToString()); // total number of
                                                             //records from outputparameter
于 2010-07-26T19:13:43.990 回答