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

Силни референтни курсори с тип данни на запис, базиран на таблица

Силни референтни курсори с тип данни на запис, базиран на таблица

Както научихме във въведението на Ref Cursors, че има два типа PL/SQL Ref Cursors в Oracle Database.

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

В тази серия ще разгледаме всички концепции и на двата типа референтни курсори. С този блог ще започнем с първия, който е Strong Ref Cursors с тип данни на запис, базиран на таблица и с дефиниран от потребителя тип данни на запис.

Какво представляват PL/SQL Strong Ref Cursors в Oracle Database?

Референтен курсор, който има фиксиран тип връщане, се нарича Strong Ref Cursor в Oracle Database. Поради фиксирания тип връщане, силните референтни курсори могат да се използват само избирателно. Например с тези оператори SELECT, които връщат резултата, чийто тип данни съвпада с този, който сте коригирали по време на декларацията на курсора.

Можем ли да използваме Strong Ref Cursor с който и да е израз SELECT в Oracle Database?

Не, не можем да използваме Strong Ref Cursors с нито един оператор SELECT. Това се дължи на фиксирания „Тип на връщане“.

Въпреки това той може да се използва само с онези оператори SELECT, които връщат резултата, чийто тип данни съвпада с „клаузата за връщане“ на курсора.

Можем ли да използваме някакви типове данни PL/SQL за деклариране на нашия Strong Ref Cursor?

Не, не можем. Освен това, типът на връщане на силен референтен курсор трябва винаги да бъде Record Datatype. Той може да бъде или тип данни за запис, базиран на таблица, или тип данни на запис, дефиниран от потребителя.

Пример за силни референтни курсори с тип данни на запис, базиран на таблица

Нека напишем пример. Тук ще създадем силен референтен курсор с тип данни на запис, базиран на таблица.

 SET SERVEROUTPUT ON
 DECLARE
    	/*Create Ref Pointer Type*/
	TYPE	my_RefCur	IS REF CURSOR RETURN 	employees%ROWTYPE;
	/*Create Cursor Variable*/
	cur_var my_RefCur;
	rec_var     employees%ROWTYPE;
 BEGIN
	OPEN cur_var FOR SELECT * FROM employees WHERE employee_id = 100;
	FETCH cur_var INTO rec_var;
	CLOSE cur_var;
	DBMS_OUTPUT.PUT_LINE ('Employee '||rec_var.first_name||' has salary '||rec_var.salary||'.');
END;
/

Създаването на референтен курсор е процес в две стъпки.

Създайте тип референтен указател.

Първо трябва да създадем тип референтен указател. По този начин, използвайки израза TYPE, ние създаваме указател на Ref Cursor Type точно както в горния код. В това изявление първо пишете ключовата дума TYPE, последвана от името на вашия референтен курсор. След това трябва да напишете запазена фраза IS REF CURSOR. Той ще каже на компилатора, че създаваме тип, който е REF CURSOR. След това трябва да посочите клаузата RETURN.

Например

TYPE	my_RefCur	IS REF CURSOR RETURN 	employees%ROWTYPE;

Създайте променлива на курсора

Във втората стъпка създаваме променлива на курсора. За да създадете променлива на курсора, първо трябва да напишете името на вашата променлива, последвано от името на вашия Ref Cursor. След това тази променлива ще се използва за препращане към референтния курсор, върху който е създадена.

Например

cur_var my_RefCur;

Освен променливата на курсора в горния код имаме и допълнителна променлива. Това отново е базиран на таблица тип данни и е проектиран с помощта на таблица „Служители“. Освен това тази променлива ще съдържа данните, извлечени от курсора.

rec_var     employees%ROWTYPE;

Раздел за изпълнение

В секцията за изпълнение на нашия код имаме четири изпълними оператора. Нека ви ги обясня.

  1. изявление OPEN FOR

Първият оператор е операторът OPEN FOR. Той свързва оператора SELECT с променливата на Cursor и отваря курсора за оператора. Освен това той също така търси всички ресурси, необходими за обработка на оператора SELECT.

  1. Изявление FETCH

Както обсъдихме в PL/SQL урок 26. Процесът на извличане на данни от курсора се нарича извличане. Ето защо тук извличаме данните от Ref Cursor в записващата променлива „Rec_Var“.

  1. Затвори изявление

След като приключим с нашия курсор, препоръчително е да го затворим, за да може нашият Oracle Engine / Server да се откаже от всички ресурси, свързани с него. Точно това направихме в третото твърдение. Използвайки ключова дума CLOSE, последвана от променливата на курсора, затворихме нашия ref курсор.

  1. Изходен израз

Четвъртият израз е оператор DBMS_OUTPUT. Той ще покаже обратно собственото име и заплатата на служителя с идентификатор на служител 100.

Можете да гледате PL/SQL урок 33, за да научите как работи променлива на запис, базирана на таблица.

Следователно в заключение...

В горния код създадохме PL/SQL Strong Ref Cursor с името „my_RefCur“, който ще върне тип данни на запис, базиран на таблица с резултати. Освен това този тип данни на базата на таблица се поддържа в таблицата на служителите на схемата за човешки ресурси. По този начин, преди да изпълним тази програма, трябва да се уверим, че сме свързани към HR схемата на нашата база данни.

Освен това, ако се учите по-добре, като гледате видео, ето едно за вас. Продължете и проверете.

Това е урокът за това как да създадете PL/SQL силни референтни курсори, използвайки базиран на таблица тип данни на запис в Oracle Database. Надявам се, че сте научили нещо ново. Освен това, моля, не забравяйте да споделите този блог в социалните си медии с приятелите си.

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

Приятен ден!


  1. Database
  2.   
  3. Mysql
  4.   
  5. Oracle
  6.   
  7. Sqlserver
  8.   
  9. PostgreSQL
  10.   
  11. Access
  12.   
  13. SQLite
  14.   
  15. MariaDB
  1. Архивиране на SQL бази данни с VDP Advanced SQL Agent

  2. Свързване на 64-битово приложение към Clarion TopSpeed

  3. Как да филтрирате записи с агрегатна функция COUNT

  4. Влияние на фрагментацията върху плановете за изпълнение

  5. Митове за ефективността:съкращаването не може да бъде върнато