Funktion und Attribute des Cursors
Die Funktion des Cursors besteht darin, die von der Abfragedatenbank zurückgegebenen Datensätze zu durchlaufen, um entsprechende Vorgänge auszuführen. Der Cursor verfügt über die folgenden Attribute :
a. Der Cursor ist schreibgeschützt, das heißt, er kann nicht aktualisiert werden.
Der Cursor kann nicht gescrollt werden, das heißt, er kann nur in eine Richtung bewegt werden. und kann nicht beliebig zwischen Datensätzen vor- oder zurückspringen, bestimmte Datensätze nicht überspringen; c.
Implementieren Sie die Funktion, um die relativ große Datenmenge nt_m_gpsdata (3000 W+) nach Datum in nt_m_gpsdata20170501, nt_m_gpsdata20170502, nt_m_gpsdata20170503 usw. aufzuteilen.
VERFAHREN ERSTELLEN. `neu _proc edure` ()
BEGIN
--Es müssen Variablen definiert werden, um Cursordaten zu empfangen
DECLARE a CHAR(16);
--Definieren Sie den Namen der neuen Tabelle
DECLARE tbname CHAR(30);
-- Variablen zum Speichern von SQL-Anweisungen definieren
DECLARE sqlstr1 varchar(300);
DECLARE sqlstr2 varchar( 300);
-- Endflag für das Durchlaufen von Daten
DECLARE done INT DEFAULT FALSE;
--Cursor definieren
DECLARE cur CURSOR FOR select DISTINCT DATE_FORMAT(ctime,'% Y%m%d') as ctime from nt_m_gpsdata;
-- Binden Sie das End-Flag an den Cursor
DECLARE CONTINUE HANDLER FOR NOT FOUND SET done = TRUE;
-- Cursor öffnen
OPEN cur;
-- Schleife starten
read_loop: LOOP
-- Extrahieren Sie die Daten in der Cursor, hier gibt es nur eines. Das Gleiche gilt für mehrere Wörter;
LEAVE read_loop;
END IF;
– Hier führen Sie die Schleifenereignisse aus, die Sie ausführen möchten
set tbname=CONCAT("nt_m_gpsdata", a);
– tbname auswählen;
– Kopieren Sie die Tabellenstruktur, erstellen Sie eine neue Tabelle, wählen Sie * aus alter Tabelle aus, wobei 1=2. Es können nur Tabellenfelder und Attribute wie „Feld“ kopiert werden Primärschlüssel, automatische Inkrementierung und Nicht-Null können nicht kopiert werden. Tabelle erstellen. Neue Tabelle wie alte Tabelle können kopiert werden. Feldattribute
END LOOP;-- Cursor schließenCLOSE cur;ENDset sqlstr1 = CONCAT("create table ",tbname," like nt_m_gpsdata"); set sqlstr2 = CONCAT("insert into ",tbname," select * from nt_m_gpsdata where deleted=0 and DATE_FORMAT(ctime,'%Y%m%d')='",a,"'"); set @firstsql = sqlstr1; PREPARE stmt1 FROM @firstsql; EXECUTE stmt1; DEALLOCATE PREPARE stmt1; set @secondsql = sqlstr2; PREPARE stmt2 FROM @secondsql; EXECUTE stmt2; DEALLOCATE PREPARE stmt2;
Später wurde dies Die Tabellenaufteilungsstrategie wird auf ein Oracle-Projekt angewendet und der Code wird angehängt
Das obige ist der detaillierte Inhalt vonEinführung in die Funktionen und Eigenschaften von Cursorn. Für weitere Informationen folgen Sie bitte anderen verwandten Artikeln auf der PHP chinesischen Website!