Explicit Cursor vs Implicit Cursor
När det kommer till databaser är en markör en kontrollstruktur som gör det möjligt att gå över posterna i en databas. En markör tillhandahåller en mekanism för att tilldela ett namn till en SQL select-sats och sedan kan den användas för att manipulera informationen i den SQL-satsen. Implicita markörer skapas automatiskt och används varje gång en Select-sats utfärdas i PL/SQL, när det inte finns någon explicit definierad markör. Explicita markörer, som namnet antyder, definieras explicit av utvecklaren. I PL/SQL är en explicit markör faktiskt en namngiven fråga som definieras med nyckelordsmarkören.
Vad är implicit markör?
Implicita markörer skapas och används automatiskt av Oracle varje gång en select-sats utfärdas. Om en implicit markör används kommer Database Management System (DBMS) att utföra öppna, hämta och stänga operationerna automatiskt. Implicita markörer bör endast användas med SQL-satser som returnerar en enda rad. Om SQL-satsen returnerar mer än en rad, kommer användning av en implicit markör att introducera ett fel. En implicit markör associeras automatiskt med varje Data Manipulation Language (DML)-sats, nämligen INSERT-, UPDATE- och DELETE-satser. Dessutom används en implicit markör för att bearbeta SELECT INTO-satser. Vid hämtning av data med implicita markörer kan NO_DATA_FOUND undantag höjas när SQL-satsen inte returnerar några data. Dessutom kan implicita markörer höja TOO_MANY_ROWS undantag när SQL-satsen returnerar mer än en rad.
Vad är explicit markör?
Som nämnts tidigare är explicita markörer frågor som definieras med ett namn. En explicit markör kan ses som en pekare till en uppsättning poster och pekaren kan flyttas framåt inom uppsättningen av poster. Explicita markörer ger användaren fullständig kontroll över att öppna, stänga och hämta data. Dessutom kan flera rader hämtas med en explicit markör. Explicita markörer kan också ta parametrar precis som vilken funktion eller procedur som helst så att variablerna i markören kan ändras varje gång den exekveras. Dessutom låter explicita markörer dig hämta en hel rad till en PL/SQL-postvariabel. När du använder en explicit markör måste den först deklareras med ett namn. Markörattribut kan nås med det namn som markören har fått. Efter deklaration måste markören öppnas först. Sedan kan hämtning påbörjas. Om flera rader behöver hämtas måste hämtningen göras i en slinga. Till sist måste markören stängas.
Skillnaden mellan explicit markör och implicit markör
Den största skillnaden mellan den implicita markören och den explicita markören är att en explicit markör måste definieras explicit genom att ange ett namn medan implicita markörer skapas automatiskt när du utfärdar en select-sats. Dessutom kan flera rader hämtas med explicita markörer medan implicita markörer bara kan hämta en enda rad. Också NO_DATA_FOUND och TOO_MANY_ROWS undantag höjs inte när explicita markörer används, i motsats till implicita markörer. I huvudsak är implicita markörer mer sårbara för datafel och ger mindre programmatisk kontroll än explicita markörer. Dessutom anses implicita markörer vara mindre effektiva än explicita markörer.