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