2009-05-31 22 views
2

私はあなたのツールが大好きです。私はそれをたくさん使ってきましたが、今日は問題に遭遇しました...SubSonic:ストアドプロシージャのOUTパラメータの値を取得する

私はOUTパラメータでいくつかの値を返すストアドプロシージャを書きましたが、SubSonicはストアドプロシージャの出力パラメータを生成していないようです方法。例えば、このようなSPIのために:

PROC dbo.MyProc @ PARAM1のint、int型@ PARAM2うち、

アウトparam3のVARCHAR(150)@それは署名

SPs.MyProc(INTを生成し、作成しますか?私はそれがこの
SPs.MyProc生成する期待

param3のparam1、int型?PARAM2、文字列(int型からint型?PARAM1を、?文字列param3アウトPARAM2、)

まあ、実際には方法ことを考慮すると、 Sを設定するPそして実際にそれを実行していない、私は亜音速この

SPs.MyProc(int型を生成することを期待woiuld? param1、ref int? param2、ref string param3)

どうやってこの問題を解決しますか?既にサブソニックのようなものがありますか?私はそれを見逃しましたか?

答えて

2

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

はFolowing SPの出力パラメータ、ここで私が訴えられているSP「UspTestOutPut」にアクセスするコードの塊です:

StoredProcedure s = SPs.UspTestOutPut(”10″, “15″); 
s.Execute(); 
s.OutputValues.ForEach(delegate(object objOutput) 
{ 
    Response.Write(”OutPutValues=”+objOutput.ToString()); 
}); 
+0

出力のみのパラメータにはnullを渡すだけです。 –

0

あなたがオブジェクトは、それを実行するとSPをインスタンス化する必要がある - それは手その後、意志OUTPUTパラメータをプロパティとして使用します。

0

OutputParametersの使用法は.GetReader()ではなく.Execute()でのみ使用されるようです。

私は、出力パラメータの使用と組み合わせて、データベースからレコードを取得することができませんでしだ。

たとえば、データベースからニュースレターのリストを返すストアドプロシージャがありますが、SQL Server 2005のページング機能を使用したいと考えています。したがって、私は見たいpageSizeと実際のページを提供します。同じ手順で、使用可能なページの数を数え、出力変数を使用してそれを返します。

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

0

私はsubsonicとSqlserver 2005サーバーを使用しています。ページング機能のために、私は入力パラメータとしてcurrentpageとpagesizeを渡します。レコードの総数を取得するには、@TotalCount int OUTPUTパラメータを使用します。 - それは、現在のページのレコードを取得しますがPageSize = @のPageSizeとcurrentPageに= @CurrentPageのTestTableから

選択*:StoresPrecedureで

は、私はこのような使用しています。

セット@Query = "Insert .....「

EXEC sp_executesqlを@query

SET @TotalCount = @@行数 - 私の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 
関連する問題