Введение в курсоры в PL / SQL

PL / SQL является одним из наиболее широко используемых языков программирования, когда речь идет о программировании баз данных. Некоторые важные концепции PL / SQL должны изучать и понимать программист PL / SQL, чтобы правильно их использовать. Курсор является одним из них. В программе PL / SQL операторы SQL должны выполняться в конце. Курсор похож на указатель, который используется для указания области контекста, созданной Oracle для выполнения оператора SQL. Курсор содержит все строки, возвращенные после обработки операторов SQL. Набор строки, которая удерживается курсором, называется активным набором. Курсор также может быть назван программистом для дальнейшего использования в программе. В этой теме мы собираемся узнать о курсорах в PL / SQL.

Типы курсоров

В программировании на PL / SQL используются 2 типа курсоров:

1. Неявные курсоры

Как видно из названия, неявные курсоры - это те курсоры, которые автоматически создаются Oracle при выполнении любых операторов DML, таких как INSERT, DELETE, UPDATE. Когда программист не создает курсор, Oracle самостоятельно создает его для хранения строк, на которые влияют операторы DML. Эти курсоры не могут быть названы программистом и, следовательно, не могут быть переданы и использованы в другом месте кода. Хотя Oracle предоставляет некоторые атрибуты для выполнения некоторых операций над ним, как

% FOUND, % NOTFOUND, % ROWCOUNT, % ISOPEN.

S.No.атрибутОписание
1.%НАШЕЛВозвращает True, если операторы DML, такие как INSERT,

DELETE, UPDATE влияют на одну или несколько строк или оператор SELECT возвращает одну или несколько строк. В противном случае возвращается False

2.%НЕ НАЙДЕНОн противоположен атрибуту% FOUND. Он возвращает True, если ни одна из строк не затронута оператором DML или инструкция SELECT не возвращает результатов. В противном случае возвращается False.
3.%ОТКРЫТВ случае неявных курсоров он всегда возвращает False, потому что Oracle закрывает курсор сразу после выполнения операторов SQL.
4.% ROWCOUNTВозвращает количество строк. Т.е. подсчет количества строк, на которые влияет упомянутый DML
операторы программиста в коде PL / SQL, такие как INSERT, DELETE и UPDATE или количество строк, возвращаемых оператором SELECT INTO.
пример

Сценарий: обновить оценки всех учащихся в таблице «учащийся» на английском языке «Тема» с колонкой «тема» на 10.

DECLARE
affected_rows number(4);
BEGIN
UPDATE students SET marks = marks+10 where subject = 'English';
IF​ sql%NOTFOUND THEN dbms_output.put_line ('No records of English subject are updated');
ELSIF sql%FOUND THEN​ affected rows: = affected rows%rowcount
dbms_output.put_line('Congrats ..Records Updated' || affected_rows);
END IF;
END;
/

2. Явные курсоры

Явные курсоры - это те курсоры, которые определены программистами для большего контроля над областью контекста (где хранятся результаты запросов SQL). Эти курсоры должны быть сначала определены в блоке объявления программы PL / SQL. Он создан для операторов SQL, которые возвращают более одной строки после их обработки. Существует специальная процедура, которую необходимо соблюдать для использования явного курсора. Шаги, чтобы использовать Явный Курсор упомянуты ниже:

1. Объявите курсор: он используется, чтобы дать имя контекстной области / курсору вместе с оператором select, который должен быть выполнен.

Синтаксис

CURSOR cursor_name IS SELECT statement;

2. Откройте курсор: открыв курсор, выделите ему память и сделайте ее доступной для выборки записей, возвращаемых оператором SQL.

Синтаксис

OPEN cursor_name;

3. Получить курсор: в этом процессе доступ к одной строке одновременно. Оператор SELECT выполняется, а извлеченные строки сохраняются в контекстной области. Он выбирает записи и присваивает их определенной переменной.

Синтаксис

FETCH cursor_name INTO variable;

4. Закрыть курсор: этот шаг используется для закрытия открытого выше курсора для освобождения памяти после успешного извлечения всех сохраненных строк.

Синтаксис

CLOSE cursor_name;

пример

Сценарий: получить имя, адрес и общий процент студентов в таблице

«студент», имеющий столбцы «имя», «адрес» и «процент»

DECLARE
stud_name student.name%type; stud_address student.address%type;
stud_percentage student.percentage%type;
CURSOR stud IS SELECT name, address, percentage FROM student; BEGIN
Open stud;
LOOP
FETCH stud into stud_name, stud_address, stud_percentage;
EXIT when stud%NOTFOUND;
dbms_ouput.put_line(stud_name || ' ' || stud_address || ' ' || stud_percentage);
END LOOP;
CLOSE stud;
END
/

Курсор Действия

В отличие от SQL, который работает со всеми строками в наборе результатов за раз, курсор в основном используется в сценариях, когда программист хочет обрабатывать и извлекать данные по одной строке за раз.

Ниже упомянуты некоторые действия курсора:

  1. Объявление курсора: важно объявить курсор перед его использованием. Курсор объявляется путем определения оператора SQL, который должен быть обработан.
  2. Открыть курсор: после объявления курсор открывается и заполняется данными, возвращаемыми обработкой оператора SQL.
  3. Получить курсор: после того, как курсор открыт, выходные строки должны быть извлечены одна за другой для выполнения любых манипуляций, если это необходимо.
  4. Закрыть курсор: после всех манипуляций с данными. Созданный курсор должен быть закрыт
  5. Deallocate: этот шаг включает в себя удаление курсора и освобождает все ресурсы, удерживаемые им.

Важность курсора в PL / SQL

Указание на область памяти и выполнение действий соответственно являются одной из важных задач в любом языке программирования. В PL / SQL это делается курсорами. Курсоры играют решающую роль, когда речь идет о выполнении другой задачи, присваивая имя области памяти (контекстной области), в которой сохраняются результаты SQL-запросов. Мы можем обращаться к записям по очереди и выполнять любые манипуляции с ними, если это необходимо, или отображать их на консоли соответствующим образом. Явные курсоры более эффективны, дают больший программный контроль и менее уязвимы для ошибок данных, поэтому они очень полезны при программировании на PL / SQL, чем неявные.

Вывод

Программирование баз данных очень популярно в наши дни, и PL / SQL - один из языков, который должен очень хорошо использоваться в нем. Курсоры дают программисту больше контроля за доступом к полученным данным. Для программиста, работающего на PL / SQL, важно знать использование и важность Cursor для эффективной работы.

Рекомендуемые статьи

Это руководство по курсорам в PL / SQL. Здесь мы обсуждаем типы курсоров, используемых в программировании на PL / SQL, с действиями курсора и важностью курсора. Вы также можете взглянуть на следующие статьи, чтобы узнать больше -

  1. Типы объединений в SQL
  2. SQL Вставить Запрос
  3. Таблица в SQL
  4. Подстановочный знак в SQL
  5. 6 лучших типов соединений в MySQL с примерами