ホームページ >php教程 >PHP开发 >sqlserver カーソルを使用する手順の例 (カーソルの作成、カーソルのクローズ)

sqlserver カーソルを使用する手順の例 (カーソルの作成、カーソルのクローズ)

高洛峰
高洛峰オリジナル
2016-12-14 11:52:231174ブラウズ

カーソルは DBMS サーバーに保存されるデータベース クエリであり、SELECT ステートメントではなく、ステートメントによって取得される結果セットです。カーソルが保存されると、アプリケーションは必要に応じてカーソル内のデータをスクロールまたは参照できます。

カーソルの使用

カーソルを使用する手順:

カーソルを使用する前に、カーソルを宣言 (定義) する必要があります。このプロシージャは実際にデータを取得するのではなく、使用する SELECT ステートメントとカーソル オプションを定義するだけです。

宣言したら、使用するにはカーソルを開く必要があります。このプロセスでは、前に定義した SELECT ステートメントを使用して、実際にデータを取得します。

データが入力されたカーソルの場合は、必要に応じて行をフェッチ (取得) します。

カーソルの使用を終了するときは、カーソルを閉じ、可能であればカーソルを解放する必要があります (特定の DBMS によって異なります)。

カーソルを宣言した後は、必要に応じて何度でも開いたり閉じたりできます。カーソルが開いている間は、フェッチ操作を必要なだけ頻繁に実行できます。

カーソルを作成します

SQL Server で DECLARE を使用してカーソルに名前を付け、必要に応じて WHERE およびその他の句を使用して対応する SELECT ステートメントを定義します。 例は次のとおりです。

コードは次のとおりです。

DECLARE CustCursor CURSOR
FOR
SELECT * FROM Customers
WHERE cust_email IS NULL

を使用します。カーソル

OPEN CURSOR ステートメントを使用するカーソルを開き、FETCH ステートメントを使用してカーソル データにアクセスします。 FETCH は、取得する行、取得する場所、およびそれらを (変数名として) 配置する場所を示します。 SQL Server でのカーソルの使用例は次のとおりです。

コードは次のとおりです。

DECLARE @cust_id CHAR(10),
@cust_name CHAR(50),
@cust_address CHAR(50),
@cust_city CHAR(50),
@cust_state CHAR(5),
@cust_zip CHAR(10),
@cust_country CHAR(50),
@cust_contact CHAR(50),
@cust_email CHAR(255)
OPEN CustCursor
FETCH NEXT FROM CustCursor
INTO @cust_id, @cust_name, @cust_address,
@cust_city, @cust_state, @cust_zip,
@cust_country, @cust_contact, @cust_email
WHILE @@FETCH_STATUS = 0
BEGIN
FETCH NEXT FROM CustCursor
INTO @cust_id, @cust_name, @cust_address,
@cust_city, @cust_state, @cust_zip,
@cust_country, @cust_contact, @cust_email
...
END
CLOSE CustCursor

この例では、 each 取得した列ごとに変数を宣言し、FETCH ステートメントで行を取得し、値をこれらの変数に保存します。 WHILE ループを使用して各行を処理します。 WHILE @@FETCH_STATUS = 0 の条件は、これ以上行をフェッチできなくなると処理を終了します (ループを終了します)。この例では特定の処理を実行しません。実際のコードでは、... プレースホルダーを特定の処理コードに置き換える必要があります。

カーソルを閉じる

SQL Server でカーソルを閉じます:

コードは次のとおりです:

CLOSE CustCursor
DEALLOCATE CURSOR CustCursor

CLOSE ステートメントは、カーソルを閉じるために使用されます。一度カーソルを閉じると、再度開かないと使用できません。 2回目に使うときは改めて宣言する必要はなく、OPENで開くだけです。

声明:
この記事の内容はネチズンが自主的に寄稿したものであり、著作権は原著者に帰属します。このサイトは、それに相当する法的責任を負いません。盗作または侵害の疑いのあるコンテンツを見つけた場合は、admin@php.cn までご連絡ください。