我喜欢你的工具。我一直在使用它,但就在今天我遇到了一个问题......
我编写了一个通过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中是否有类似的东西,我只是错过了它?
答案 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