SQL Server 2005通用分页存储过程及多表联接应用
分页存储过程在好多文章中都有介绍过;本篇是不久前写的一个分页存储过程,可应用于SQL Server 2005上面,感兴趣的朋友可以研究下,希望本文对你学习存储过程有所帮助
这是不久前写的一个分页存储过程,可应用于SQL Server 2005上面:代码如下:
if object_ID('[proc_SelectForPager]') is not null
Drop Procedure [proc_SelectForPager]
Go
Create Proc proc_SelectForPager
(
@Sql varchar(max) ,
@Order varchar(4000) ,
@CurrentPage int ,
@PageSize int,
@TotalCount int output
)
As
/*Andy 2012-2-28 */
Declare @Exec_sql nvarchar(max)
Set @Exec_sql='Set @TotalCount=(Select Count(1) From ('+@Sql+') As a)'
Exec sp_executesql @Exec_sql,N'@TotalCount int output',@TotalCount output
Set @Order=isnull(' Order by '+nullif(@Order,''),' Order By getdate()')
if @CurrentPage=1 /*经常会调用第1页,这里做特殊处理,少一层子查询*/
Set @Exec_sql='
;With CTE_Exec As
(
'+@Sql+'
)
Select Top(@pagesize) *,row_number() Over('+@Order+') As r From CTE_Exec Order By r
'
Else
Set @Exec_sql='
;With CTE_Exec As
(
Select *,row_number() Over('+@Order+') As r From ('+@Sql+') As a
)
Select * From CTE_Exec Where r Between (@CurrentPage-1)*@pagesize+1 And @CurrentPage*@pagesize Order By r
'
Exec sp_executesql @Exec_sql,N'@CurrentPage int,@PageSize int',@CurrentPage,@PageSize
Go
调用方法:
1.单表:
代码如下:
Exec proc_SelectForPager @Sql = 'Select * from contacts a where a.ContactType=1', -- varchar(max)
@Order = '', -- varchar(4000)
@CurrentPage = 3, -- int
@PageSize = 20, -- int
@TotalCount = 0 -- int
2.多表联接:
代码如下:
Exec proc_SelectForPager @Sql =
'Select a.Staff,a.OU,b.FName+b.FName as Name
from staffOUHIST a
inner join Staff b on b.ID=a.Staff and a.ExpiryDate=''30001231''
', -- varchar(max)
@Order = '', -- varchar(4000)
@CurrentPage = 3, -- int
@PageSize = 20, -- int
@TotalCount = 0 -- int
注:在@Sql 中不能使用CTE。

ホットAIツール

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

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

Undress AI Tool
脱衣画像を無料で

Clothoff.io
AI衣類リムーバー

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

人気の記事

ホットツール

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

SublimeText3 中国語版
中国語版、とても使いやすい

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

ドリームウィーバー CS6
ビジュアル Web 開発ツール

SublimeText3 Mac版
神レベルのコード編集ソフト(SublimeText3)

ホットトピック









タイトル: Oracle ストアド プロシージャによるバッチ更新を実装するための手順と注意事項 Oracle データベースでは、ストアド プロシージャは、データベースのパフォーマンスの向上、コードの再利用、およびセキュリティの強化を目的に設計された一連の SQL ステートメントです。ストアド プロシージャを使用して、データをバッチで更新できます。この記事では、Oracle ストアド プロシージャを使用してバッチ更新を実装する方法を紹介し、具体的なコード例を示します。ステップ 1: ストアド プロシージャを作成する まず、バッチ更新操作を実装するストアド プロシージャを作成する必要があります。ストアドプロシージャの作成方法は次のとおりです。

MySQL でストアド プロシージャを削除する方法には、DROP PROCEDURE ステートメントの使用、MySQL Workbench の使用、コマンド ライン ツールの使用などがあります。詳細な紹介: 1. DROP PROCEDURE ステートメントを使用します。手順としては、まず MySQL クライアントを開くか、MySQL をサポートするツールを使用し、次に MySQL データベースに接続し、最後に次の SQL ステートメントを実行してストアド プロシージャを削除します。 MySQL Workbench を使用してストアド プロシージャなどを削除します。

Oracle データベースのストアド プロシージャは、データベース内で一連の SQL ステートメントとデータ操作を実行するために使用される特定のタイプのストアド プロシージャです。実際のデータベース開発作業では、格納プロセスで何らかの判断や論理処理を行うために、データベース内に特定のテーブルが存在するかどうかを判断する必要があることがあります。以下では、Oracle データベースにテーブルが存在するかどうかを判断するメソッドの実装方法と、具体的なコード例を紹介します。まず、システム テーブル user_tables または all_t を使用できます。

Golang ストアド プロシージャの実装原理とアプリケーション ストアド プロシージャは、リレーショナル データベースに保存され、アプリケーションから呼び出すことができるプリコンパイルされたプログラムであり、データのネットワーク送信コストを効果的に削減し、データベースの実行効率を向上させることができます。 Golang はストアド プロシージャを直接サポートしていませんが、SQL ステートメントを使用してストアド プロシージャの機能をシミュレートできます。この記事では、Golang でストアド プロシージャを実装する原則と応用を紹介し、具体的なコード例を示します。 1. Golangストアドプロシージャの実装原理はGolにある

Oracle ストアド プロシージャのバッチ更新のパフォーマンス最適化戦略 Oracle データベースでは、ストアド プロシージャは、データ ロジックの処理や特定のタスクの実行に使用されるデータベース オブジェクトです。特にバッチでデータを更新する場合、特定のパフォーマンスの最適化戦略を提供できます。バッチでのデータの更新には、通常、多数の行レベルの操作が含まれます。パフォーマンスと効率を向上させるために、ストアド プロシージャのパフォーマンスを最適化するためのいくつかの戦略と手法を採用できます。以下では、Oracle ストアド プロシージャのバッチ更新のためのパフォーマンス最適化戦略をいくつか紹介し、具体的なコード例を示します。

C# を使用して MySQL でカスタム ストアド プロシージャと関数を作成する方法 はじめに: MySQL は広く使用されているオープン ソース データベース管理システムであり、C# は一般的に使用されているオブジェクト指向プログラミング言語です。開発プロセスでは、コードの再利用性とパフォーマンスを向上させるために、データベースのストアド プロシージャや関数を使用する必要がよくあります。この記事では、C# を使用して MySQL データベースにカスタム ストアド プロシージャと関数を作成する方法を紹介し、具体的なコード例を示します。 1. ストアド プロシージャ ストアド プロシージャは、特定のタスクを実行する一連の SQL ステートメントです。

タイトル: Oracle ストアド プロシージャとファンクションの詳細な比較と利点分析。Oracle データベースでは、ストアド プロシージャとストアド ファンクションは 2 つの重要なデータベース オブジェクトです。これらは両方とも、一連の SQL ステートメントとロジックをカプセル化して、データの効率と複雑さを向上させるために使用できます。操作性、使いやすさ。この記事では、Oracle ストアド プロシージャと関数の特性とそれぞれの利点を詳細に比較し、具体的なコード例を示します。ストアド プロシージャ ストアド プロシージャは、事前に作成されてデータベースに保存されている一連の SQL 文と PL/SQL コード ロジックです。

PHP を使用して MySQL でカスタム トリガーとストアド プロシージャを作成する方法 はじめに: アプリケーションを開発するとき、多くの場合、データの挿入、更新、削除など、データベース レベルでいくつかの操作を実行する必要があります。 MySQL は広く使用されているリレーショナル データベース管理システムであり、PHP は一般的なサーバー側スクリプト言語です。この記事では、PHP を使用して MySQL でカスタム トリガーとストアド プロシージャを作成する方法を紹介し、具体的なコード例を示します。 1. トリガーおよびストアド プロシージャ トリガー (Trigg
