2

私はあなたのツールが大好きです。ずいぶんと使っていたのですが、今日、トラブルに見舞われました…

OUT パラメータを介していくつかの値を返すストアド プロシージャを作成しましたが、SubSonic はストアド プロシージャ メソッドの出力パラメータを生成していないようです。たとえば、次のような 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)

皆さんはこの問題をどのように解決しますか?サブソニックにはすでにそのようなものがありますが、私はそれを見逃しましたか?

4

4 に答える 4

2

ソース StoredProcedure.OutputValuesを使用して、SubSonicでSPのOuPutパラメータにアクセスできます。

以下は、SPのOutPutパラメーターにアクセスするためのコードのチャンクです。ここでは、SP「UspTestOutPut」を提訴しました。

StoredProcedure s = SPs.UspTestOutPut(”10″, “15″);
s.Execute();
s.OutputValues.ForEach(delegate(object objOutput)
{
    Response.Write(”OutPutValues=”+objOutput.ToString());
});
于 2009-05-31T07:33:05.963 に答える
0

SPをオブジェクトとしてインスタンス化してから実行する必要があります。これにより、OUTPUTパラメータがプロパティとして渡されます。

于 2009-05-31T07:55:17.713 に答える
0

サブソニックと Sqlserver 2005 サーバーを使用しています。ページング機能のために、現在のページとページサイズを入力パラメーターとして渡します。レコードの総数を取得するには、@TotalCount int OUTPUT パラメーター変数を使用します。

StoresPrecedure では、次のように使用します。

Select * from TestTable where PageSize=@PageSize and CurrentPage = @CurrentPage -- 現在のページ レコードを取得します。

@Query ="Insert ....." を設定します。

EXEC sp_executesql @クエリ

SET @TotalCount = @@Rowcount -- insert ステートメントの影響を受けるレコードの総数

私の 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
于 2010-07-26T19:13:43.990 に答える
0

OutputParameters の使用は、.GetReader() との組み合わせでは機能せず、.Execute() とのみ機能するようです。

OUTPUT パラメータの使用と組み合わせて、データベースからレコードを取得できません。

たとえば、データベースからニュースレターのリストを返すストアドプロシージャがありますが、SQL Server 2005 のページング機能を使用したいと考えています。したがって、表示するページ サイズと実際のページを指定します。同じ手順で、使用可能なページの量をカウントし、出力変数を使用してそれを返したいと考えています。

うまくいきません。OutputParameters のリストには 1 つの項目がありますが、値は常に NULL です。

于 2009-08-28T09:07:09.687 に答える