SQL-Cursor Ein einfaches Beispiel
1. Die Rolle des Cursors:
Beim Auswählen wird ein Ergebnissatz zurückgegeben. Wenn Sie während des Rückgabevorgangs des Ergebnissatzes eine Datenzeile lesen müssen. Diese Datenzeile muss verarbeitet werden, z. B. die Rückgabe einer Abfrageergebnismenge basierend auf den gelesenen Daten als Abfragebedingungen usw. Die Anwendung muss einen Cursor verwenden.
Mit Cursorn können Benutzer die nächste Zeile, vorherige Zeile, erste Zeile oder letzte Zeile abfragen und diese gelesenen Zeilen verarbeiten.
2. Cursor-Beispiel
FUNKTION ERSTELLEN GetMRPlnFullBom – Erstellen Sie eine Funktion, um jede Zeile im Dokument basierend auf dem Dokumentschlüssel abzufragen und die Daten in jeder Zeile zu verarbeiten.
(
DocEntry int,
LineNum int,
LineNumLevel nvarchar(100),
ItmID nvarchar (20),
ItmName nvarchar(100),
LineType char(1),
Qty numeric(19,9),
BomLevel int,
ParentEntry int,
ParentItmID nvarchar(20),
TopEntry int,
TopItmID nvarchar(20),
BaseEntry int ,
BaseLineNum int ,
BaseType int
)
AS
BEGIN
Declare @Itm ID varchar(50) , @ Qty int ,@LineNum int ,@ObjType int --Deklarieren Sie lokale Variablen
--Deklarieren Sie einen Cursor, @ kann nicht vor XXX hinzugefügt werden, wie zum Beispiel der folgenden MRPlnA_ItmID, das Format ist DECLARE XXX CURSOR FOR
DECLARE MRPlnA_ItmID CURSOR FOR
SELECT ItmID , Qty ,LineNum , ObjType FROM MRPlnA Where DocEntry = @DocEntry – Die Anweisung muss zwischen DECLARE XXX CURSOR FOR und OPEN XXX stehen.
Open MRPlnA_ItmID --Öffnen Sie den Cursor
FETCH NEXT FROM MRPlnA_ItmID INTO @ItmID , @Qty ,@LineNum , @ObjType --FETCH NEXT FROM XXX INTO ... Aktualisieren Sie den Cursor-Spezifikationsdatensatz und wrap und speichern Sie die ausgewählten Daten in temporären Variablen. Das FETCH-Format umfasst neben NEXT auch PRIOR, FRIST und LAST. Dies sind die vorherige Zeile, die erste Zeile und die letzte Zeile.
WHILE @@FETCH_STATUS = 0 --@@FETCH_STATUS globale Variable, wird verwendet, um den letzten Status von FETCH abzufragen und die Schleife zu steuern. Er ist 0, wenn der Lesevorgang abgeschlossen ist, -1, wenn der Lesevorgang fehlschlägt, und -2, wenn der Datensatz gelöscht wird.
BEGIN
Einfügen in @TAB
Select DocEntry,LineNum,LineNumLevel,ItmID,ItmName,LineType,Qty*@Qty,BomLevel,ParentEntry,
ParentItmID,TopEntry,TopItmID , @DocEntry SourceEntry ,@LineNum BaseLineNum ,@ObjType BaseType
From GetBomFullItems(@ItmID, 'V 1.0', GetDate()) TD --GetBomFULLItmes ist eine weitere Abfragefunktion.
FETCH NEXT FROM MRPlnA_ItmID INTO @ItmID , @Qty ,@LineNum , @ObjType – Select bewegt sich zur nächsten Zeile.
ENDE
CLOSE MRPlnA_ItmID – Cursor schließen
DEALLOCATE MRPlnA_ItmID – Cursor loslassen
RETURN
ENDE

Heiße KI -Werkzeuge

Undresser.AI Undress
KI-gestützte App zum Erstellen realistischer Aktfotos

AI Clothes Remover
Online-KI-Tool zum Entfernen von Kleidung aus Fotos.

Undress AI Tool
Ausziehbilder kostenlos

Clothoff.io
KI-Kleiderentferner

AI Hentai Generator
Erstellen Sie kostenlos Ai Hentai.

Heißer Artikel

Heiße Werkzeuge

Notepad++7.3.1
Einfach zu bedienender und kostenloser Code-Editor

SublimeText3 chinesische Version
Chinesische Version, sehr einfach zu bedienen

Senden Sie Studio 13.0.1
Leistungsstarke integrierte PHP-Entwicklungsumgebung

Dreamweaver CS6
Visuelle Webentwicklungstools

SublimeText3 Mac-Version
Codebearbeitungssoftware auf Gottesniveau (SublimeText3)

Heiße Themen

