ホームページ  >  記事  >  php教程  >  SQL カーソルの簡単な例

SQL カーソルの簡単な例

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

1. カーソルの役割:

選択すると、結果セットを返すプロセス中にデータ行を読み取る必要がある場合に返されます。このデータ行は、クエリ条件として読み取られたデータに基づいてクエリ結果セットを返すなど、処理する必要があります。アプリケーションはカーソルを使用する必要があります。

カーソルを使用すると、ユーザーは次の行、前の行、最初の行、または最後の行をクエリし、これらの読み取られた行を処理できます。

2. カーソルの例

CREATE FUNCTION GetMRPlnFullBom - ドキュメント キーに基づいてドキュメント内の各行をクエリし、各行のデータを処理する関数を作成します。

(

through use using use using using through using ’ through ’ s ’ through using using using ‐ ‐ ‐ ‐ ‐ ‐ 最終クエリの結果セットの一時テーブルを定義して返します。

(

DocEntry int,

LineNum int,

LineNumLevel nvarchar(100),

ItmID nvarchar(20),

ItmName nvarchar(100),

LineType char(1),

数量数値( 19,9)、

BomLevel int、

ParentEntry int、

ParentItmID nvarchar(20)、

TopEntry int、

TopItmID nvarchar( )

)

AS

BE GIN

@ItmID varchar( を宣言) 50) 、 @Qty int 、@LineNum int 、@ObjType int -- ローカル変数の宣言

-- カーソルの宣言。カーソル @ を宣言する前に XXX を追加することはできません。たとえば、次の MRPlnA_ItmID、形式は DECLARE XXX CURSOR です。 FOR = @DocEntry -- ステートメントは DECLARE XXX CURSOR FOR と OPEN XXX の間にある必要があります。

Open MRPlnA_ItmID -- カーソルを開きます

FETCH NEXT FROM MRPlnA_ItmID INTO @ItmID, @Qty,@LineNum, @ObjType --FETCH NEXT FROM 選択したデータを一時変数に保存します。 FETCH 形式には、NEXT のほかに、PRIOR、FRIST、LAST があります。前の行、最初の行、最後の行です。

WHILE @@FETCH_STATUS = 0 --@@FETCH_STATUS グローバル変数。FETCH の最後のステータスをクエリし、ループを制御するために使用されます。読み取りが完了した場合は 0、読み取りが失敗した場合は -1、レコードが削除された場合は -2 になります。

BEGIN

@TAB に挿入

Select DocEntry,LineNum,LineNumLevel,ItmID,ItmName,LineType,Qty*@Qty,BomLevel,ParentEntry,

ParentItmID,TopEntry,TopItmID, @D ocEntry SourceEntry ,@LineNum BaseLineNum , @ ObjType BaseType

From GetBomFullItems(@ItmID, 'V 1.0', GetDate()) TD --GetBomFULLItmes は別のクエリ関数です。

FETCH NEXT FROM MRPlnA_ItmID INTO @ItmID 、 @Qty 、@LineNum 、 @ObjType -- 選択すると次の行に移動します。

END

CLOSE MRPlnA_ItmID -- カーソルを閉じる

DEALLOCATE MRPlnA_ItmID -- カーソルを放す

RETURN

END

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