sql >> Databáze >  >> RDS >> Oracle

Úvod do referenčních kurzorů PL/SQL v databázi Oracle

Co jsou referenční kurzory PL/SQL v databázi Oracle?

Pokud jde o výkon, referenční kurzory PL/SQL v Oracle se vždy ukázaly jako lepší než statické kurzory. Kvůli schopnosti jediného referenčního kurzoru se spojit s více příkazy SELECT v jednom bloku PL/SQL. Navíc to snižuje potřebu psaní samostatných explicitních kurzorů. Navíc z nich dělá vysoce efektivní, flexibilní a robustní funkci jazyka PL/SQL. Pojďme tedy prozkoumat referenční kurzory v PL/SQL a dozvědět se o nich více.

Co jsou referenční kurzory PL/SQL v databázi Oracle?

Ref Cursor je zkratka pro odkaz na kurzor. Je to datový typ PL/SQL, pomocí kterého můžete deklarovat speciální typ proměnné s názvem Cursor Variable.

Jsou proměnná kurzoru a referenční kurzor vzájemně propojeny?

To je velmi dobrá otázka. V mnoha knihách jsem viděl, že se obě tato jména používají zaměnitelně. Obě jsou však dvě samostatná, avšak vzájemně provázaná témata.

Na jedné straně je proměnná kurzoru jako ukazatel, který odkazuje na jinou kontextovou oblast v SGA. Zatímco Ref Cursor je datový typ, který obsahuje hodnotu kurzoru.

Jak jsou tedy kurzorová proměnná a referenční kurzor na sobě vzájemně závislé?

Jak bylo uvedeno výše, kurzorové proměnné jsou deklarovány pomocí referenčních kurzorů. V důsledku toho můžeme říci, že v databázi Oracle existují kurzorové proměnné ve formě referenčních kurzorů.

Definice kurzorové proměnné
Pomocí všech výše uvedených informací můžeme definovat proměnnou kurzoru jako:Proměnná typu Ref Cursor Type se nazývá Cursor Variable.

Jaká je syntaxe pro Declaring Ref Cursor?

Zde je zobecněná syntaxe pro deklarování referenčních kurzorů v databázi Oracle:

DECLARE
 TYPE [cursor_variable_name] IS REF CURSOR [RETURN (return_type)];

Syntaxi lze upravit a použít v závislosti na tom, jaký typ referenčních kurzorů chcete ve své aplikaci použít. Podívejme se však na typy referenčních kurzorů dostupných v databázi Oracle.

Kolik typů referenčních kurzorů PL/SQL máme?

V PL/SQL existují dva typy referenčních kurzorů. Jsou to:

  1. Silný referenční kurzor a
  2. Slabý referenční kurzor

Co je silný referenční kurzor v databázi Oracle?

Jakýkoli referenční kurzor, který má pevný návratový typ, se nazývá silný referenční kurzor.

Navíc takové referenční kurzory lze použít pouze s některými příkazy SELECT. Kromě toho by se výsledek datového typu příkazu SELECT měl shodovat s tím, který byl opraven během deklarace silného kurzoru.

Syntaxe silných referenčních kurzorů v PL/SQL

Zde je syntaxe silného referenčního kurzoru.

DECLARE
	TYPE cursor_variable_name IS REF CURSOR 
RETURN (return type);

Návratová klauzule hraje velmi zásadní roli při deklarování referenčního kurzoru. Omezuje jeho rozsah. A omezuje váš referenční kurzor pouze na ty příkazy SELECT, které vracejí výsledek, jehož datový typ odpovídá datovému typu, který jste uvedli v klauzuli RETURN při jeho deklaraci.

Také návratový typ referenčního kurzoru musí být vždy typu Record Datatype. Může to být buď záznamová struktura tabulky nebo uživatelem definovaná záznamová struktura.

Co je slabý referenční kurzor v databázi Oracle?

Na rozdíl od silných ref kurzorů jsou slabé ref kurzory ty, které nemají žádný návratový typ. Jinými slovy, ty referenční kurzory, které nemají pevný návratový typ, se nazývají slabé referenční kurzory.

Protože slabé referenční kurzory nemají žádný pevný návratový typ, jsou otevřené všem příkazům SELECT. A to z nich dělá jeden z nejpoužívanějších referenčních kurzorů v PL/SQL.

Syntaxe slabých referenčních kurzorů v PL/SQL

DECLARE
	TYPE ref_cursor_name IS REF CURSOR;

Až na chybějící návratovou klauzuli je syntaxe do značné míry podobná silným referenčním kurzorům.

Kanadská studie naznačuje, že lidé jsou biologicky předurčeni k lenosti. Také, jaký má smysl mít počítač se všemi těmito výpočetními výkony, když musíme udělat všechnu tvrdou práci deklarování typu ukazatele Ref a následného vytvoření proměnné.

No, moji drazí přátelé, pokud jste jedním z těch, kteří se chtějí zdržet veškeré tvrdé práce při vytváření kurzorové proměnné, pak pro vás má Oracle PL/SQL možnost. Tato možnost vám bude sloužit jako implicitně vytvořená proměnná kurzoru. Pojďme se tedy podívat, co to je.

Sys_RefCursor

Kurzor sys Ref je vestavěná proměnná kurzoru Oracle. Deklaruje slabý refkurzor a to také bez deklarace typu ref pointeru. Většinou se používá jako obecný kurzor, který lze předat jako argument uloženému podprogramu.

To je vše pro tento tutoriál o úvodu do referenčních kurzorů PL/SQL v databázi Oracle. Zůstaňte naladěni, protože v nadcházejících tutoriálech provedeme praktickou ukázku referenčního kurzoru v Oracle PL/SQL.

Další podrobnosti si také můžete prohlédnout ve výukovém videu na stejné téma na mém kanálu YouTube.

Děkujeme za zastavení. Krásný den!


  1. Jak vybrat ze dvou tabulek v MySQL, i když ne všechny řádky v jedné tabulce mají korespondenty ve druhé?

  2. execSQL:je bindargs lepší?

  3. Jak funguje UNCOMPRESSED_LENGTH() v MariaDB

  4. Seskupování dat pomocí funkcí OVER a PARTITION BY