Oracle
 sql >> база данни >  >> RDS >> Oracle

Как да създадете PL/SQL SYS_REFCURSOR в база данни на Oracle

PL/SQL SYS_REFCURSOR в базата данни на Oracle

Както научихме във въведението на референтния курсор, че има три типа PL/SQL референтен курсор в Oracle Database.

  1. Силен референтен курсор
  2. Слаб референтен курсор и
  3. SYS_REFCURSOR

Досега в тази серия разгледахме концепциите за силен, както и за слаб референтен курсор. Единственият тип курсор, който все още не е докоснат, е PL/SQL SYS_REFCURSOR в Oracle Database. Което ще научим в този блог.

Какво е PL/SQL SYS_REFCURSOR?

SYS_REFCURSOR е предварително дефиниран слаб референтен курсор, който се предлага вграден със софтуера за база данни на Oracle.

Как ще ни помогне това, че е предварително дефиниран референтен курсор?

SYS_REFCURSOR е предварително дефиниран слаб референтен курсор, което означава, че не е нужно да го дефинираме в нашия код, както направихме с изричния слаб референтен курсор в предишния урок. Както научихме в този урок, създаването на слаб референтен курсор е процес в две стъпки. Първо трябва да създадете „слабия ref cursor type“ и след това трябва да създадете „променлива на курсора“, използвайки този ref курсор.

Когато използвате SYS_REFCURSOR, просто трябва да създадете променлива на курсора и нищо друго. SYS_REFCURSOR напълно минимизира първата стъпка, в която създавате слабия тип референтен курсор.

Значи Sys_Refcursor е вграден референтен курсор, къде можем да намерим неговата дефиниция?

Можете да разберете дефиницията на PL/SQL SYS_REFCURSOR в скрипт, наречен “stdspec.sql”. Можете да намерите този скрипт в директорията, чийто път е както следва. 

%ORACLE_HOME% \RDBMS\ADMIN\stdspec.sql

SYS_REFCURSOR дефиницията ще изглежда така:

Какъв тип Ref Cursor е SYS_REFCURSOR?

Както бе споменато по-горе в дефиницията, SYS_REFCURSOR е слаб референтен курсор.

Сега, когато изчистихте почти всички съмнения относно SYS_REFCURSOR. Искам само да ви задам един последен въпрос.

Информация:Няма интервал между REF и CURSOR. Това е една дума „RefCursor“.
Грешно:SYS_REF CURSOR
Правилно:SYS_REFCURSOR

Защо някой би декларирал слаб референтен курсор, когато вече имаме предварително дефиниран?

Това всъщност е много добър въпрос. Отговорът на този въпрос е Не, не е необходимо изрично да създаваме слаб референтен курсор. Oracle сведе до минимум необходимостта от създаване на слаб референтен курсор, като изпрати SYS_REFCURSOR като част от стандартния пакет след Oracle Database 9i, въпреки че опцията за създаване все още е налична.

Това е като личен избор, ако някой иска да създаде слаб референтен курсор, тогава може. Ако не, тогава те имат SYS_REFCURSOR винаги на свое разположение. Моят скъп приятел Стивън Фойерщайн направи много добра публикация в блога, отговаряща на този въпрос, която можете да прочетете тук.

Нека видим много лесен пример, демонстриращ как да използвате PL/SQL SYS_REFCURSOR в Oracle Database.

Пример:Как да създадете PL/SQL SYS_REFCURSOR в Oracle Database?

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;
/

Можете да гледате видеоурока в канала на YouTube за подробно обяснение на горния код.

Надяваме се, че ви е харесало четенето и сте научили нещо ново. Моля, споделете този блог в социалните си медии с приятелите си. Благодаря и приятен ден.


  1. Database
  2.   
  3. Mysql
  4.   
  5. Oracle
  6.   
  7. Sqlserver
  8.   
  9. PostgreSQL
  10.   
  11. Access
  12.   
  13. SQLite
  14.   
  15. MariaDB
  1. Създайте нов потребител на Oracle и дайте привилегии:Синтаксис и примери

  2. Oracle 12.2.0.1 идва през 2016 г

  3. Използване на `SELECT` за извикване на функция

  4. Пример за Oracle WHILE LOOP

  5. Как да експортирате данни за полетата на clob в разработчика на oracle sql