1

型付きTableAdaptersを使用するときに返される行数を制限する最良の方法を知っている人はいますか?オプションは次のように見えます:

  1. 「topX」をパラメーターとして渡します(SQLS2008を使用するまでこれを行うことはできません)
  2. 動的SQLステートメントを発行しますset rowcount X。tableadapterメソッドを呼び出す前に、その後にset rowcount 0実行します。
  3. 私が考えていなかった他の何か:)。

よろしくお願いします。

4

5 に答える 5

2

TOP nを使用できますが、次のように角かっこを付ける必要があります。

SELECT TOP (100) * FROM ...

次のようにパラメータ化することもできます。

DECLARE @count INT
SET @count = 100
SELECT TOP (@count) * FROM field_company
于 2009-11-04T14:04:32.647 に答える
1

これは私にとってはうまくいきます。

SELECT DISTINCT TOP (@count) FLD1, FLD2 FROM mytable WITH (nolock)

このパラメーターは、TableAdapter 内の他のパラメーターと共に生成されます。

于 2011-05-24T20:15:44.167 に答える
0

私はより良い方法を見つけました。

「TOP」値をパラメータ化することはできませんが、「SET ROWCOUNT X」値をパラメータ化することはできます。

したがって、これは機能します:

create procedure test_SelectTopFromTable (@rowCount int) as
begin
    set rowcount @rowCount
    select * from table
    set rowcount 0
end

exec test_SelectTopFromTable 100

set rowcount 0ただし、ステートメントの実行を妨げる例外の発生に対処する必要があります。掘り続けます。

更新
私の上司はそれを機能させる方法を教えてくれました(そしてそれはとても簡単なので少し恥ずかしいです)が、自分で見つけたように見せるのではなく、彼に彼の答えを投稿してもらうつもりです. :)

于 2009-11-04T13:43:44.483 に答える
0

これは、パラメーター化されたストアド プロシージャを使用して実現します。

プロシージャ dbo.spFoo を作成します
    @NoOfRows int = 200

なので


@sql varchar(2000) を宣言します。
@sql = を選択
'select top' + Cast(@NoOfRows as varchar) + ' * FROM Foo'

実行者(@sql)

于 2009-11-04T13:37:34.547 に答える