1

誰かが次の要件に対する解決策を持っているのだろうか。たとえば、1000 行の結果セットを返すストアド プロシージャがあります。これを一度に 100 行に制限する必要があります。したがって、開始インデックス値と終了インデックス値を渡し、開始インデックスの行数と終了インデックスの行数の間のレコードのみが必要です

たとえば、ストアド プロシージャ コールのシグネチャは次のようになります。

stp_mystoredproc(startIndex INTEGER, endIndex INTEGER)

したがって、設定startIndex = 100endIndex = 200た後、ストアド プロシージャが 1000 の合計リセット セットから 100 ~ 200 行のレコードを返すようにしたい場合。

私の最初の試みは、結果セットを ID 列を持つ一時テーブルに配置し、ID に基づいて必要な範囲を選択することですが、これはやや遅いです。オラクルはページネーションをサポートしているので、結果セットをページングできます。Sybase IQ (v12.6 または v12.7) が同様のものをサポートしているかどうか知っている人はいますか?

最終的な目標は、結果セット全体 (1000 レコード) をページングすることですが、一度に 100 行ページで処理します。

4

2 に答える 2

0

Sybase IQ と Sybase SQL Anywhere は同じクエリ実行エンジンと (ほとんどの) SQL 構文を共有しているため、通常は SQL Anywhere 構文を使用できます。これを試して:

select top (endIndex-startIndex) start at startIndex from <query>

句で式を使用できるかどうかわからないtopので、文字列を作成して使用する必要があるかもしれませんexecute immediate

http://dcx.sybase.com/index.html#1201/en/dbreference/select-statement.htmlを参照してください。

于 2011-11-13T13:47:59.850 に答える
0

私はsybaseを知りません。しかし、多分あなたはこのようなことをすることができます

myproc(@count int, @lastid int)

select top @count *
from MyTabel 
where id > @lastid 
order by id

最初の呼び出し

exec myproc(100, 0)

あなたに何かを与える

3 appels
4 banana
..
..
..
346 potatto

次の電話

exec myproc myproc(100,346)

于 2009-06-22T19:51:09.860 に答える