SubSonic:检索存储过程OUT参数的值

时间:2009-05-31 03:47:33

标签: stored-procedures subsonic out-parameters

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

我编写了一个通过OUT参数返回一些值的存储过程,但是SubSonic似乎没有生成存储过程方法的out参数。例如,对于这样的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 个答案:

答案 0 :(得分:2)

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

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

StoredProcedure s = SPs.UspTestOutPut(”10″, “15″);
s.Execute();
s.OutputValues.ForEach(delegate(object objOutput)
{
    Response.Write(”OutPutValues=”+objOutput.ToString());
});

答案 1 :(得分:0)

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

答案 2 :(得分:0)

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

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

例如,我有一个storedprocedure,它返回数据库中的新闻简报列表,但我想使用SQL Server 2005的分页功能。所以我提供了我想看的pageSize和实际页面。在同一过程中,我想计算可用的页面数量,并使用输出变量返回该页面。

我没有让它发挥作用。带有OutputParameters的列表中有1个项目,但该值始终为NULL。

答案 3 :(得分:0)

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

在StoresPrecedure中,我使用这样的:

从TestTable中选择*,其中PageSize = @ PageSize和CurrentPage = @CurrentPage - 它获取当前页面记录。

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

EXEC sp_executesql @Query

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

在我的C#.net - 亚音类文件中,我使用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