亚音速3 - 如何执行返回值的存储过程?

时间:2009-07-28 17:56:48

标签: subsonic subsonic3

如何在亚音速3.0中执行返回值的存储过程?例如,我的许多存储过程返回@@ identity,我无法弄清楚如何在不重新查询表的情况下访问该值。同样,不是输出参数,而是返回值。

7 个答案:

答案 0 :(得分:4)

StoredProcedure sproc = db.FancySchmancySproc();
sproc.Execute();
int output = (int)sproc.Output; // returns type 'object' so you'll need to cast

答案 1 :(得分:1)

StoredProcedure sp = SPs.TestProcedure(0);

sp.Command.AddReturnParameter();

object retValue = sp.Command.Parameters.Find(delegate(QueryParameter p)
{ 
  return p.Mode == ParameterDirection.ReturnValue; 
}).ParameterValue;

if (retValue!=null)
{

  // cast the value to the type expected

  int rc = (int) retValue;

}

答案 2 :(得分:1)

这对我有用:

StoredProcedure sproc = db.FancySchmancySproc();
sproc.ExecuteScalar<int>();

答案 3 :(得分:1)

好的......我让它与John Sheehan所说的一起工作,突然它开始给我一个例外。

我只是使用以下SP进行测试。


SET ANSI_NULLS ON 走 SET QUOTED_IDENTIFIER ON 走 创建程序TestLocal

@a numeric(18,0) AS

BEGIN

设置NOCOUNT ON;

返回10

END

GO


我在C#中的代码如下


StoredProcedure sp = new DB()。TestLocal(1);

sp.Execute();

int timeLeft =(int)sp.Output;

return timeLeft;


编辑1:

我通过以下方式开展工作,但我认为这不是正确的做法。


StoredProcedure sp = new DB()。TestLocal(1);

sp.Command.AddReturnParameter();

sp.Execute();

int myReturnValue =(int)sp.Command.OutputValues [0];

返回myReturnValue;

答案 4 :(得分:1)

我一直在使用ActiveRecord运行存储过程,如此;

// Connect to DB and run the stored proc into a dataset
myDatabasedb db = new myDatabasedb();
DataSet ds = db.myStoredProc(firstparam, secondparam, etc);

// Now you can do what you like with the dataset!
Gridview1.datasource = ds.executeDataSet();

答案 5 :(得分:0)

这就是我的想法,但是sproc.output始终为null。我想知道最新版本3.0.0.3中是否存在错误

答案 6 :(得分:0)

StoredProcedure sproc = db.FancySchmancySproc();
sproc.ExecuteDataSet();