Oracle データベースでは、ストアド プロシージャは、多くの複雑なデータ操作を実装するために使用できる再利用可能な SQL コードのブロックです。その中でもページング クエリは、Web アプリケーションでページング データの一覧を表示したり、レポートでページングの結果を表示したりするなど、一般的な要件です。
この記事では、Oracle ストアド プロシージャでページング クエリを実装する方法を紹介し、読者がこのテクノロジをより深く理解し、適用できるようにする簡単なサンプル コードを提供します。
1. ページング クエリの基本原則
一般的な SQL クエリでは、「SELECT * FROM table_name WHERE 条件」の構文を使用して、条件を満たすすべての行を取得できます。ページング クエリを実装するには、指定されたページ数とページごとの行数に従ってクエリ結果を切り取り、指定されたページ数のデータのみを返す必要があります。たとえば、ページ 1 ではデータの最初の 10 行を取得でき、ページ 2 では行 11 ~ 20 を取得できます。
この原則に基づいて、Oracle ストアド プロシージャを使用してページング クエリを実装できます。まず、検索開始行と検索終了行を計算し、ROWNUM関数で検索結果の行数を制限し、クエリ結果を返します。以下は簡単な実装手順です:
- 開始行と終了行を計算します。
Oracle の ROWNUM 関数は、クエリの前ではなく、返される前にクエリ結果を並べ替えることに注意してください。したがって、メインのクエリ ステートメントで ROWNUM 関数を使用すると、結果が不正確になるか、予測不能になる可能性があります。この問題を解決するには、サブクエリ ステートメントを使用して ROWNUM 関数を有効にします。たとえば、次のステートメントでは、開始行と終了行を計算できます:
SELECT start_row, end_row
FROM (
SELECT ROWNUM AS rnum, ((page_no - 1) page_size 1) AS start_row, (page_no page_size) AS end_row
FROM (
SELECT 1 AS page_no, 10 AS page_size FROM DUAL
)
)
WHERE rnum = 1;
この例では、最初にページごとの行数とページ数を定義し、次にサブクエリ ステートメントを通じて開始行と終了行を計算しました。このステートメントは、開始行値と終了行値を含むデータ行を返します。
- データを取得します。
開始行と終了行を計算した後、条件を満たすデータをクエリする必要があります。サブクエリ ステートメントを使用すると、基準を満たすすべての行を選択し、ROWNUM 関数を使用して行数を制限できます。たとえば、次のステートメントでは、指定されたページ番号のデータをクエリできます。
SELECT *
FROM (
SELECT ROWNUM as rnum, t.*
FROM (
SELECT * FROM table_name WHERE condition ORDER BY order_by
) t
)
WHERE rnum >= start_row AND rnum
この例では、まず条件を満たすデータを並べ替えてから、次を使用します。 ROWNUM 関数の結果は限定的です。最後に、条件を満たすすべての行から、指定された開始行と終了行の間のデータのみを選択し、最終的にクエリ結果を返します。
2. ページング クエリの実装例
以下は、ページング クエリを実装するための完全な Oracle ストアド プロシージャの例です:
CREATE OR REPLACE PROCEDURE PAGING_PROC(
i_page_no IN INTEGER,
i_page_size IN INTEGER,
o_records OUT SYS_REFCURSOR,
o_page_count OUT INTEGER,
i_table_name IN VARCHAR2,
i_condition IN VARCHAR2,
i_order_by IN VARCHAR2
)
IS
v_start_row INTEGER;
v_end_row INTEGER;
BEGIN
-- ステップ 1: 開始行と終了行の計算
SELECT (i_page_no - 1) i_page_size 1, i_page_no i_page_size
INTO v_start_row, v_end_row
FROM DUAL;
-- ステップ 2: データの取得
OPEN o_records FOR
SELECT *
FROM (
SELECT ROWNUM AS rnum, t.* FROM ( SELECT * FROM i_table_name WHERE i_condition ORDER BY i_order_by ) t
)
WHERE rnum >= v_start_row AND rnum
-- ステップ 3: ページ数を計算する
SELECT CEIL(COUNT(*)/i_page_size)
INTO o_page_count
FROM i_table_name
WHERE i_condition;
END PAGING_PROC;
この例では、ページ番号、ページ サイズ、出力レコード、ページ番号とテーブル名、条件、並べ替え、その他のパラメーターを渡します。 。入力パラメータに基づいて、最初に開始行と終了行を計算し、次に OPEN ステートメントを使用して REFCURSOR 出力データを開きます。
最後に、ページ数をカウントし、結果を出力します。ページ数の計算方法は、COUNT 集計関数を使用して、条件を満たすすべての行数をページごとの行数で除算し、切り上げることであることに注意してください。
3. 結論
Oracle データベースでは、ストアド プロシージャは重要なデータ操作テクノロジです。ストアド プロシージャを使用すると、ページング クエリ、バッチ更新、データのインポートとエクスポートなどの複雑なデータ操作を実装できます。特にページング クエリに関しては、Oracle ストアド プロシージャは、より高いパフォーマンスと優れたデータ セキュリティを提供し、他のプログラム インターフェイスと簡単に対話することもできます。
この記事では、Oracle ストアド プロシージャでページング クエリを実装する方法を紹介し、簡単なサンプル コードを提供します。読者の皆様には、実際のアプリケーションでこの手法を試し、ご自身のニーズに応じて最適化および拡張することをお勧めします。
以上がOracle ストアド プロシージャでページング クエリを実装する方法の詳細内容です。詳細については、PHP 中国語 Web サイトの他の関連記事を参照してください。

この記事では、Oracleデータベースセグメントの種類(データ、インデックス、ロールバック、一時的)、パフォーマンスへの影響、および管理について説明します。 ワークロードと最適な効率のためにデータの特性に基づいて適切なセグメントタイプを選択することを強調しています

この記事では、列ごとのデータ処理用のPL/SQLカーソルについて説明します。 それは、暗黙、明示、およびREFカーソルを比較して、カーソル宣言、開閉、フェッチ、および閉鎖を詳述しています。 効率的な大規模なデータセットの取り扱いとループの使用の手法

この記事では、Oracleデータベースのパフォーマンステストツールについて説明します。 予算、複雑さ、監視、診断、ワークロードシミュレーション、レポートなどの機能に基づいて適切なツールを選択することについて説明します。 この記事では、効果的なBOも詳しく説明しています

この記事では、完全なサーバーインストールなしでOracleデータベースと対話するために不可欠なOracleデータベースクライアントツールについて説明します。 SQL*Plus、SQL Developer、Enterprise Manager、RMANなどの一般的に使用されるツールの詳細は、彼らの楽しみを強調しています

この記事では、Oracleのデフォルトのテーブルスペース(システム、Sysaux、ユーザー)、その特性、識別方法、およびパフォーマンスへの影響を調べます。 デフォルトに依存することに反対し、個別の大さじを作成することの重要性を強調します

この記事は、Oracleデータベースのダウンロードを通じてユーザーをガイドします。 エディションの選択(Express、Standard、Enterprise)、プラットフォームの互換性、およびライセンス契約の受け入れを強調し、プロセスの詳細を説明します。 システム要件とエディションスーザビル

この記事では、SQLコマンドを使用してOracleでユーザーと役割を作成する方法について説明し、役割の使用を含むユーザー許可を管理するためのベストプラクティス、最小特権の原則、定期的な監査について説明します。

この記事では、敏感なデータを保護するためのソリューションであるOracle Data Masking and Subsetting(DMS)を詳しく説明しています。 機密データの特定、マスキングルールの定義(シャッフル、代替、ランダム化)、ジョブの設定、監視、および展開をカバーします


ホットAIツール

Undresser.AI Undress
リアルなヌード写真を作成する AI 搭載アプリ

AI Clothes Remover
写真から衣服を削除するオンライン AI ツール。

Undress AI Tool
脱衣画像を無料で

Clothoff.io
AI衣類リムーバー

AI Hentai Generator
AIヘンタイを無料で生成します。

人気の記事

ホットツール

ゼンドスタジオ 13.0.1
強力な PHP 統合開発環境

メモ帳++7.3.1
使いやすく無料のコードエディター

AtomエディタMac版ダウンロード
最も人気のあるオープンソースエディター

SAP NetWeaver Server Adapter for Eclipse
Eclipse を SAP NetWeaver アプリケーション サーバーと統合します。

MinGW - Minimalist GNU for Windows
このプロジェクトは osdn.net/projects/mingw に移行中です。引き続きそこでフォローしていただけます。 MinGW: GNU Compiler Collection (GCC) のネイティブ Windows ポートであり、ネイティブ Windows アプリケーションを構築するための自由に配布可能なインポート ライブラリとヘッダー ファイルであり、C99 機能をサポートする MSVC ランタイムの拡張機能が含まれています。すべての MinGW ソフトウェアは 64 ビット Windows プラットフォームで実行できます。

ホットトピック









