Den enda funktion en MySQL markören är att få och visa databasposter genom frågeparametrar . Även om denna definition kan låta enkelt , är sanningen att eftersom markörer fungerar på olika sätt och olika resultat från typiska SELECT-satser , att veta hur och när man använder MySQL markörer kan ibland vara förvirrande . I allmänhet , MySQL markörer är ett lämpligt val för bearbetning av data rader som innehåller flera tabeller eller när du vill hämta och bearbeta vissa rader i en grupp . En kort handledning kan ge grundläggande information om hur man utför denna uppgift . Instruktioner
1
Skapa en MySQL markören i förklaringen avsnittet av din fråga . Ge den ett unikt namn - viktigt eftersom MySQL kan du inkludera flera markörer i ett enda förfarande , funktion eller trigger - och binda det till en SELECT eller SELECT /VAR uttalande . En markör som kommer att få och visa en utvald grupp av anställdas namn i en kolumn och ett tresiffrigt registreringsnummer i ett annat kommer att visas som :
FÖRKLARA emp_name name_cursor CURSORFORSELECT , anst_id från EMPS DÄR anst_id mellan 100 och 500 ;
2
Sandwich markören deklarationen efter förfarande variabel och villkor deklarationer , och innan valfria handler deklarationer , om du inkluderar dessa i din sökning :
FÖRKLARA emp_name VARCHAR ( 30 ) ; FÖRKLARA anst_id VARCHAR ( 4 ) ,
FÖRKLARA emp_name name_cursor CURSORFORSELECT , anst_id från EMPS DÄR anst_id mellan 100 och 500 ,
FÖRKLARA FORTSÄTT hanteraren för INTE FOUNDSET no_more_rows = true;
3
Skapa en ny tabell för att lagra och visa information :
CREATE tABLE IF NOT EXISTS emp_info ( emp_name VARCHAR , anst_id VARCHAR ) ,
4
Öppna markören . Öppning körs automatiskt frågan enligt SELECT du valde , räknar antalet rader frågan returnerar och lagrar resultatet i minnet för vidare bearbetning :
OPEN name_cursor ,
5
hämta och bearbeta databasen poster . Detta steg är där det verkliga arbetet för markören sker som det loopar tillbaka från den sista till den första databasposten och itererar eller loopar igen , rad för rad , för att extrahera den information du behöver och sätt in den i emp_info tabellen :
FETCH name_cursor INTO emp_name , anst_id , INSERT INTO anst_id ( emp_name , anst_id ) ;
( referens 3 )
6
Stäng markören att frigöra internminne markören använder :
STÄNG name_cursor ,
7
visa resultatet av din lagrade nytt förfarande :
SELECT * FROM emp_info ;
Addera