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

Jak vytvořit PL/SQL SYS_REFCURSOR v databázi Oracle

PL/SQL SYS_REFCURSOR v databázi Oracle

Jak jsme se dozvěděli v úvodu k referenčnímu kurzoru, existují tři typy referenčního kurzoru PL/SQL v databázi Oracle.

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

Doposud jsme v této sérii pokryli koncepty silného i slabého referenčního kurzoru. Jediný typ kurzoru, který je stále nedotčený, je PL/SQL SYS_REFCURSOR v databázi Oracle. Což se dozvíme v tomto blogu.

Co je PL/SQL SYS_REFCURSOR?

SYS_REFCURSOR je předdefinovaný slabý referenční kurzor, který je součástí databázového softwaru Oracle.

Jak nám pomůže předdefinovaný referenční kurzor?

SYS_REFCURSOR je předdefinovaný slabý referenční kurzor, což znamená, že jej nemusíme definovat do našeho kódu, jako jsme to dělali s explicitním slabým referenčním kurzorem v předchozím tutoriálu. Jak jsme se v tomto tutoriálu dozvěděli, že vytvoření slabého referenčního kurzoru je dvoukrokový proces. Nejprve musíte vytvořit „slabý typ referenčního kurzoru“ a poté musíte vytvořit „proměnnou kurzoru“ pomocí tohoto referenčního kurzoru.

Při použití SYS_REFCURSOR stačí vytvořit proměnnou kurzoru a nic jiného. SYS_REFCURSOR zcela minimalizuje první krok, ve kterém vytváříte typ slabého referenčního kurzoru.

Takže Sys_Refcursor je vestavěný referenční kurzor, kde najdeme jeho definici?

Definici PL/SQL SYS_REFCURSOR můžete zjistit ve skriptu s názvem „stdspec.sql“. Tento skript můžete najít v adresáři, jehož cesta je následující. 

%ORACLE_HOME% \RDBMS\ADMIN\stdspec.sql

Definice SYS_REFCURSOR bude vypadat nějak takto:

Jaký typ referenčního kurzoru je SYS_REFCURSOR?

Jak je uvedeno výše v definici, SYS_REFCURSOR je slabý referenční kurzor.

Nyní, když jste odstranili téměř všechny pochybnosti o SYS_REFCURSOR. Chci se vás jen zeptat na poslední otázku.

Informace:Mezi REF a CURSOR není mezera. Je to jediné slovo „RefCursor“.
Špatně:SYS_REF CURSOR
Správně:SYS_REFCURSOR

Proč by někdo deklaroval slabý referenční kurzor, když již máme předdefinovaný?

To je vlastně velmi dobrá otázka. Odpověď na tuto otázku je Ne, nepotřebujeme explicitně vytvářet slabý referenční kurzor. Oracle minimalizoval potřebu vytvoření slabého referenčního kurzoru dodáním SYS_REFCURSOR jako součásti standardního balíčku od Oracle Database 9i, i když možnost jeho vytvoření je stále k dispozici.

Je to jako osobní volba, pokud někdo chce vytvořit slabý referenční kurzor, pak může. Pokud ne, pak mají SYS_REFCURSOR vždy k dispozici. Můj drahý přítel Steven Feuerstein napsal na tuto otázku velmi dobrý blogový příspěvek, který si můžete přečíst zde.

Podívejme se na velmi snadný příklad, který ukazuje, jak používat PL/SQL SYS_REFCURSOR v databázi Oracle.

Příklad:Jak vytvořit PL/SQL SYS_REFCURSOR v databázi Oracle?

SET SERVEROUTPUT ON;
DECLARE
    --Declare cursor variable of SYS_REFCURSOR type
    cur_var SYS_REFCURSOR;
    
    --Declare variables for holding data
    f_name  employees.first_name%TYPE;
    emp_sal employees.salary%TYPE;
BEGIN
OPEN cur_var FOR SELECT first_name, Salary FROM employees WHERE employee_id = 100;
    FETCH cur_var INTO f_name, emp_sal;
    CLOSE cur_var;
    DBMS_OUTPUT.PUT_LINE(f_name ||' '||emp_sal);
END;
/

Podrobné vysvětlení výše uvedeného kódu naleznete ve výukovém videu na kanálu YouTube.

Doufám, že se vám čtení líbilo a dozvěděli jste se něco nového. Sdílejte prosím tento blog na svých sociálních sítích se svými přáteli. Děkuji a přeji hezký den.


  1. Jak transponovat řádky tabulky mysql do sloupců

  2. Uložená procedura Oracle:vrátí sadu výsledků i parametry out

  3. Je možné předat název tabulky jako parametr v Oracle?

  4. Jak procházet seznamem s oddělovači v Oracle PLSQL