「Open棟梁 wiki」は、「Open棟梁Project」,「OSSコンソーシアム .NET開発基盤部会」によって運営されています。 目次 †概要 †一覧ページ制御方式を決定しておく。 最大表示件数・取得件数 †最大表示件数(1画面に表示する最大件数)・最大取得件数(1回の検索で取得する最大レコード件数)は、 最大取得件数の指定方法 †最大取得件数の指定方法は以下の通り。 Oracleの場合 †Oracle8i R8.1.5以降で、[Row1]列の昇順に上位10件を取得するような場合、ROWNUMを使用できる。 SELECT * FROM (SELECT * FROM Table1 ORDER BY Row1) WHERE ROWNUM <= 10 SQL Serverの場合 †Microsoft SQL Server 7.0以降で、例えば[Row1]列の昇順に上位10件を取得するような場合、TOP句を使用できる。 SELECT TOP 10 * FROM Table1 ORDER BY Row1 ページ制御の有・無 †一覧を表示する際のページ制御の有・無は、業務要件に応じて設定する。 アプリケーションによる制御 †SQL Server、DB2データベースなど、.NETのデータ プロバイダは、サーバ カーソルをサポートしていないものが多い。 2008/04月現在、 ストアド プロシージャによる制御 †ストアド プロシージャを使用すれば、サーバ サイドでOrder Byで整列した結果セットに対して、データ絞込みのカーソル操作が可能である。 SQLによる制御 †SQLを使用した、ページ制御方法は以下の通り。 Oracleの場合 †SELECT EMPNO, ENAME, JOB, MGR, HIREDATE, SAL, COMM, DEPTNO FROM EMP ORDER BY EMP.ENAME ↓ ページングしたいSQL(上記)を下記のように書き直す。 SELECT * FROM ( SELECT EMPNO, ENAME, JOB, MGR, HIREDATE, SAL, COMM, DEPTNO, ROW_NUMBER() OVER (ORDER BY EMP.ENAME) RNUM FROM EMP ) WHERE RNUM BETWEEN 3 AND 5 SQL Serverの場合(2005以上で利用可能) †SELECT ShipperID, CompanyName, Phone FROM Shippers ORDER BY Shippers.CompanyName ↓ ページングしたいSQL(上記)を下記のように書き直す。 WITH OrderedShippers AS ( SELECT ShipperID, CompanyName, Phone, ROW_NUMBER() OVER (ORDER BY Shippers.CompanyName) AS RNUM FROM Shippers ) SELECT * FROM OrderedShippers WHERE RNUM BETWEEN 3 AND 5 |