3

値を返すsubsonic3.0のストアドプロシージャをどのように実行しますか?たとえば、ストアドプロシージャの多くは@@ IDを返しますが、テーブルを再クエリせずにその値にアクセスする方法を理解することはできません。繰り返しますが、出力パラメーターではなく、戻り値です。

4

7 に答える 7

4
StoredProcedure sproc = db.FancySchmancySproc();
sproc.Execute();
int output = (int)sproc.Output; // returns type 'object' so you'll need to cast
于 2009-07-28T19:17:09.000 に答える
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();
于 2011-08-10T01:02:20.423 に答える
1

わかりました...ジョン・シーハンが言ったことで動作しましたが、突然例外が発生し始めました。

次のSPでテストしています。


GOでANSI_NULLSを設定GOでQUOTED_IDENTIFIERを設定CREATEPROCEDURETestLocal

@数値(18,0)AS

始める

NOCOUNTをオンに設定します。

10を返す

終わり

行く


C#での私のコードは次のとおりです


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

sp.Execute();

int timeLeft =(int)sp.Output;

リターンtimeLeft;


編集1:

次のようにして動作させましたが、それが正しい方法ではないと思います。


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

sp.Command.AddReturnParameter();

sp.Execute();

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

myReturnValueを返します。

于 2011-01-09T08:56:12.857 に答える
1

これは私のために働く:

StoredProcedure sproc = db.FancySchmancySproc();
sproc.ExecuteScalar<int>();
于 2010-01-05T05:20:55.023 に答える
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;

}
于 2009-08-05T02:04:22.477 に答える
0

それは私が思ったことですが、sproc.outputは常にnullです。最新バージョン3.0.0.3にバグがあるのだろうか

于 2009-07-29T13:43:57.620 に答える
0
StoredProcedure sproc = db.FancySchmancySproc();
sproc.ExecuteDataSet();
于 2009-08-27T10:38:45.933 に答える