65 запитань і відповідей на інтерв’ю PL/SQL (2025)
Запитання та відповіді на співбесіді з PL/SQL для першокурсників
1) Що таке PL SQL?
Oracle PL/SQL — це розширення мови SQL, яке поєднує потужність обробки даних SQL із потужністю обробки процедурної мови для створення надпотужних запитів SQL. PL/SQL забезпечує безперебійну обробку операторів SQL шляхом підвищення безпеки, портативності та надійності бази даних.
PL/SQL означає «розширення процедурної мови до мови структурованих запитів».
👉 Безкоштовне завантаження PDF: Запитання та відповіді на співбесіді PL/SQL
2) Розрізняйте % ROWTYPE і TYPE RECORD.
% ROWTYPE використовується, коли запит повертає цілий рядок таблиці або подання.
ТИП ЗАПИС з іншого боку, використовується, коли запит повертає стовпець різних таблиць або представлень.
напр. TYPE r_emp є RECORD (sno smp.smpno%type,sname smp sname %type)
e_rec smp %ROWTYPE
Курсор c1 вибирає smpno,dept з smp;
e_rec c1 %ROWTYPE
3) Поясніть використання курсору.
Курсор — це названа приватна область у SQL, з якої можна отримати доступ до інформації. Вони повинні обробляти кожен рядок окремо для запитів, які повертають кілька рядків.
4) Показати код курсору для циклу.
Курсор неявно оголошує %ROWTYPE як індекс циклу. Потім він відкриває курсор, отримує рядки значень із активного набору в полях запису та закривається, коли всі записи оброблено.
Напр.
FOR smp_rec IN C1 LOOP totalsal=totalsal+smp_recsal; ENDLOOP;
5) Поясніть використання тригера бази даних.
Програмна одиниця PL/SQL, пов’язана з певною таблицею бази даних, називається тригером бази даних. Він використовується для:
1) Модифікація даних аудиту.
2) Прозоро реєструйте події.
3) Виконуйте складні бізнес-правила.
4) Підтримуйте таблиці-репліки
5) Отримайте значення стовпців
6) Впровадити комплексні авторизації безпеки
6) Назвіть два види винятків.
Частина обробки помилок блоку PL/SQL називається винятком. Вони бувають двох типів: визначені користувачем і попередньо визначені.
7) Показати деякі попередньо визначені винятки.
DUP_VAL_ON_INDEX
ZERO_DIVIDE
ДАНИХ НЕ ЗНАЙДЕНО
TOO_MANY_ROWS
CURSOR_ALREADY_OPEN
INVALID_NUMBER
INVALID_CURSOR
PROGRAM_ERROR
TIMEOUT _ON_RESOURCE
STORAGE_ERROR
LOGON_DENIED
VALUE_ERROR
і т.п.
8) Поясніть Raise_application_error.
Це процедура пакета DBMS_STANDARD, яка дозволяє видавати визначені користувачем повідомлення про помилки з тригера бази даних або збереженої підпрограми.
9) Покажіть, як викликаються функції та процедури в блоці PL SQL.
Функція називається частиною виразу.
total:=calculate_sal('b644')
Процедура називається оператором у PL / SQL.
calculate_bonus('b644');
10) Поясніть дві віртуальні таблиці, доступні на момент виконання тригера бази даних.
Стовпці таблиці називаються OLD.column_name і NEW.column_name.
Для тригерів, пов’язаних із INSERT, доступні лише значення NEW.column_name.
Для тригерів, пов’язаних із DELETE, доступні лише значення OLD.column_name.
Для тригерів, пов’язаних із UPDATE, доступні обидва стовпці таблиці.
11) Які правила слід застосовувати до NULL під час порівнянь?
1) NULL ніколи не буває TRUE або FALSE
2) NULL не може дорівнювати або не дорівнювати іншим значенням
3) Якщо значення у виразі дорівнює NULL, тоді сам вираз обчислюється як NULL, за винятком оператора конкатенації (||)
12) Як компілюється процес PL SQL?
Процес компіляції включає перевірку синтаксису, процеси прив’язки та генерації p-коду.
Перевірка синтаксису перевіряє коди PL SQL на наявність помилок компіляції. Коли всі помилки виправлено, адреса зберігання призначається змінним, які містять дані. Це називається прив'язкою. P-код — це список інструкцій для двигуна PL SQL. P-код зберігається в базі даних для іменованих блоків і використовується під час наступного виконання.
13) Розрізняйте синтаксичні помилки та помилки виконання.
Синтаксичну помилку можна легко виявити компілятором PL/SQL. Наприклад, неправильне написання.
Помилка виконання обробляється за допомогою розділу обробки винятків у файлі Блок PL/SQL. Наприклад, оператор SELECT INTO, який не повертає жодного рядка.
14) Поясніть фіксацію, відкат і точку збереження.
Для оператора COMMIT вірно наступне:
- Інші користувачі можуть бачити зміни даних, внесені транзакцією.
- Блокування, отримані транзакцією, звільняються.
- Робота, виконана транзакцією, стає постійною.
Інструкція ROLLBACK видається, коли транзакція завершується, і наступне вірно.
- Робота, виконана під час переходу, скасовується так, ніби вона ніколи не видавалась.
- Усі блокування, отримані транзакцією, знімаються.
Він скасовує всю роботу, виконану користувачем під час транзакції. За допомогою SAVEPOINT можна скасувати лише частину транзакції.
15) Визначення неявних і явних курсорів.
Курсор є неявним за замовчуванням. Користувач не може контролювати або обробляти інформацію в цьому курсорі.
Якщо запит повертає кілька рядків даних, програма визначає явний курсор. Це дозволяє програмі обробляти кожен рядок послідовно, коли курсор повертає його.
16) Поясніть помилку змінної таблиці.
Це відбувається, коли тригер намагається оновити рядок, який він зараз використовує. Це виправляється за допомогою представлень або тимчасових таблиць, тому база даних вибирає одну та оновлює іншу.
17) Коли потрібна заява про декларацію?
Інструкція DECLARE використовується анонімними блоками PL SQL, такими як окремі, не збережені процедури. Якщо він використовується, він має бути першим в окремому файлі.
18) Скільки тригерів можна застосувати до таблиці?
До однієї таблиці можна застосувати максимум 12 тригерів.
19) Яка важливість SQLCODE і SQLERRM?
SQLCODE повертає значення кількості помилок для останньої виявленої помилки, тоді як SQLERRM повертає повідомлення для останньої помилки.
20) Якщо курсор відкритий, як ми можемо знайти в PL SQL Block?
можна використовувати змінну статусу курсора %ISOPEN.
PL/SQL Інтерв'ю Питання для досвідчених
21) Показати два винятки курсору PL/SQL.
Cursor_Already_Open
Invaid_cursor
22) Які оператори мають справу з NULL?
NVL перетворює NULL на інше вказане значення.
var:=NVL(var2,'Hi');
IS NULL і IS NOT NULL можна використовувати, щоб перевірити, чи є значення змінної NULL чи ні.
23) Чи має SQL*Plus також механізм PL/SQL?
Ні, SQL*Plus не має вбудованого механізму PL/SQL. Таким чином, весь код PL/SQL надсилається безпосередньо до механізму бази даних. Це набагато ефективніше, оскільки кожен оператор не видаляється окремо.
24) Які пакети доступні розробникам PL SQL?
Серія пакетів DBMS_, наприклад, DBMS_PIPE, DBMS_DDL, DBMS_LOCK, DBMS_ALERT, DBMS_OUTPUT, DBMS_JOB, DBMS_UTILITY, DBMS_SQL, DBMS_TRANSACTION, UTL_FILE.
25) Поясніть 3 основні частини тригера.
- Виклик або подія.
- Обмеження
- Дія
26) Що таке символьні функції?
INITCAP, UPPER, SUBSTR, LOWER і LENGTH — усі символьні функції. Групові функції дають результати на основі груп рядків, на відміну від окремих рядків. Вони MAX, MIN, AVG, COUNT і SUM.
27) Поясніть TTITLE і BTITLE.
Команди TTITLE і BTITLE, які керують колонтитулами звіту.
28) Показати атрибути курсору PL/SQL.
%ISOPEN:
Перевіряє, відкритий курсор чи ні
%ROWCOUNT:
Кількість оновлених, видалених або отриманих рядків.
%FOUND:
Перевіряє, чи отримав курсор будь-який рядок. Це вірно, якщо витягуються рядки
%NOT FOUND:
Перевіряє, чи отримав курсор будь-який рядок. Це True, якщо рядки не витягуються.
29) Що таке Intersect?
Intersect — це добуток двох таблиць, у якому перераховано лише відповідні рядки.
30) Що таке послідовності?
Послідовності використовуються для створення порядкових номерів без додаткових витрат на блокування. Його недолік полягає в тому, що порядковий номер втрачається при відкаті транзакції.
31) Як би ви посилалися на значення стовпців ДО та ПІСЛЯ вставлення та видалення тригерів?
Використовуючи ключове слово «new.column name», тригери можуть посилатися на значення стовпців за новою колекцією. Використовуючи ключове слово «old.column name», вони можуть посилатися на значення стовпців за старою колекцією.
32) Яке використання ключових слів SYSDATE і USER?
SYSDATE відноситься до поточної системної дати сервера. Це псевдоколонка. КОРИСТУВАЧ також є псевдостовпцем, але стосується поточного користувача, який увійшов до сеансу. Вони використовуються для моніторингу змін, що відбуваються в таблиці.
33) Як ROWID допомагає швидше виконувати запит?
ROWID – це логічна адреса рядка, це не фізичний стовпець. Він складається з номера блоку даних, номера файлу та номера рядка в блоці даних. Таким чином, час введення-виведення мінімізується під час отримання рядка, що призводить до швидшого запиту.
34) Для чого використовуються посилання на базу даних?
Посилання на бази даних створюються для формування зв’язку між різними базами даних або різними середовищами, такими як тестування, розробка та виробництво. Посилання на базу даних доступні лише для читання для доступу до іншої інформації.
35) Що робить вибірка курсору?
Отримання курсору читає рядок за рядком Набір результатів.
36) Що робить закриття курсору?
Закриття курсору очищає приватну область SQL, а також звільняє пам’ять
37) Поясніть використання контрольного файлу.
Це бінарний файл. Він записує структуру бази даних. Він містить розташування кількох файлів журналу, імена та позначки часу. Вони можуть зберігатися в різних місцях, щоб допомогти отримати інформацію, якщо один файл буде пошкоджено.
38) Поясніть послідовність
Узгодженість показує, що дані не будуть відображені іншим користувачам, доки дані не будуть зафіксовані, таким чином зберігається узгодженість.
39) Різниця між анонімними блоками та підпрограмами.
Анонімні блоки — це блоки без імен, які ніде не зберігаються, поки підпрограми компілюються та зберігаються в базі даних. Вони компілюються під час виконання.
40) Різниця між DECODE і CASE.
Оператори DECODE і CASE дуже схожі, але CASE є розширеною версією DECODE. DECODE не дозволяє твердження прийняття рішень замість нього.
виберіть decode(totalsal=12000,'high',10000,'medium') як decode_tesr з smp, де smpno в (10,12,14,16);
Цей оператор повертає помилку.
CASE безпосередньо використовується в PL SQL, але DECODE використовується в PL SQL лише через SQL.
41) Поясніть автономну транзакцію.
Автономна транзакція - це незалежна транзакція від основної або материнської транзакції. Він не є вкладеним, якщо його запущено іншою транзакцією.
Існує кілька ситуацій для використання автономних транзакцій, таких як журналювання подій і аудит.
42) Розрізняйте SGA та PGA.
SGA означає системну глобальну область, тоді як PGA означає програмну або процесну глобальну область. PGA виділяється лише 10% розміру оперативної пам’яті, але SGA надається 40% розміру оперативної пам’яті.
43) Яке розташування Pre_defined_functions.
Вони зберігаються в стандартному пакеті під назвою «Функції, процедури та пакети».
44) Поясніть поліморфізм у PL SQL.
Поліморфізм є особливістю ООП. Це здатність створювати змінну, об’єкт або функцію з кількома формами. PL/SQL підтримує поліморфізм у формі перевантаження програмного блоку всередині функції-члена або пакета. Слід уникати однозначної логіки під час перевантаження.
45) Яке використання MERGE?
MERGE використовується для об’єднання кількох операторів DML в один.
Синтаксис: об'єднати в назву таблиці
використовуючи (запит)
включено (умова приєднання)
коли не збігається тоді
[вставити/оновити/видалити].
коли збігається тоді
[вставити/оновити/видалити].
Питання для співбесіди PL/SQL для 5+ років досвіду
46) Чи можна одночасно виконувати 2 запити в системі розподіленої бази даних?
Так, вони можуть бути виконані одночасно. Один запит завжди незалежний від другого запиту в системі розподіленої бази даних на основі 2-фазної фіксації.
47) Поясніть Raise_application_error.
Це процедура пакета DBMS_STANDARD, яка дозволяє видавати визначені користувачем повідомлення про помилки з тригера бази даних або збереженої підпрограми.
48) Який вихідний параметр використовується для оператора return, хоча його також можна використовувати в pl/sql?
Вихідні параметри дозволяють використовувати більше одного значення у програмі, що викликає. Параметр Out не рекомендується використовувати у функціях. Якщо потрібно кілька значень, замість функцій можна використовувати процедури. Таким чином, ці процедури використовуються для виконання вихідних параметрів.
49) Як би ви перетворили дату в юліанський формат дати?
Ми можемо використовувати рядок формату J:
SQL > виберіть to_char(to_date('29-Mar-2013′,'dd-mon-yyyy'),'J') як юліан з dual;
ЮЛІЙСЬКА
50) Поясніть SPOOL
Команда spool може друкувати вихідні дані операторів sql у файл.
spool/tmp/sql_outtxt
виберіть smp_name, smp_id з smp, де dept='accounts';
намотувати;
51) Згадайте, з чого складається пакет PL/SQL?
Пакет PL/SQL складається з
- Таблиця PL/SQL і записи TYPE
- Процедури та функції
- Cursors
- Змінні (таблиці, скаляри, записи тощо) і константи
- Назви винятків і прагми для зв’язку номера помилки з винятком
- Cursors
52) Згадайте, які переваги пакетів PL/SQL?
Це забезпечує кілька переваг, наприклад
- Примусове приховування інформації: Він пропонує свободу вибору, зберігати дані приватними чи публічними
- Дизайн зверху вниз: Ви можете розробити інтерфейс до коду, прихованого в пакеті, до того, як фактично реалізуєте самі модулі
- Стійкість об'єкта: Об’єкти, оголошені в специфікації пакета, поводяться як глобальні дані для всіх об’єктів PL/SQL у програмі. Ви можете змінити пакет в одному модулі, а потім посилатися на ці зміни в іншому модулі
- Об'єктно-орієнтований дизайн: Пакет дає розробникам міцний контроль над тим, як можна використовувати модулі та структури даних усередині пакета
- Гарантія цілісності транзакції: Це забезпечує певний рівень цілісності транзакцій
- Покращення продуктивності: Команда СУБД автоматично відстежує валідність всіх програмних об'єктів, що зберігаються в базі даних, і підвищує продуктивність пакетів.
53) Згадайте, які різні методи відстежують код PL/SQL?
Відстеження коду є важливою технікою для вимірювання продуктивності коду під час виконання. Включає різні методи відстеження
- DBMS_APPLICATION_INFO
- DBMS_TRACE
- DBMS_SESSION і DBMS_MONITOR
- утиліти trcsess і tkproof
54) Згадайте, що робить ієрархічний профайлер?
Ієрархічний профайлер міг би профілювати виклики, зроблені в PL/SQL, окрім заповнення прогалини між лазівками та очікуваннями відстеження продуктивності. Ефективність ієрархічного профайлера включає
- Виразна звітність для SQL і споживання часу PL/SQL
- Звітує про кількість різних викликів підпрограм, зроблених у PL/SQL, і час, витрачений на виклик кожного підпрограми
- Кілька інтерактивних аналітичних звітів у форматі HTML за допомогою утиліти командного рядка
- Більш ефективний, ніж звичайний профайлер та інші утиліти трасування
55) Згадайте, що дозволяє вам робити повідомлення PLV?
Повідомлення PLV дозволяє
- Призначте окреме текстове повідомлення вказаному рядку в таблиці PL/SQL
- Він отримує текст повідомлення за номером
- Він автоматично замінює ваші власні повідомлення стандартними Oracle повідомлення про помилки з перемикачем обмеження
- Пакетне завантаження номерів повідомлень і тексту безпосередньо з таблиці бази даних PLV msg PL/SQL таблиці
56) Згадайте, що пропонує пакет PLV (PL/Vision)?
- Нульове значення підстановки
- Набір процедур твердження
- Різні комунальні послуги
- Набір констант, які використовуються у всьому PL vision
- Попередньо визначені типи даних
57) Згадайте, яке використання PLVprs і PLVprsps?
- PLVprs: Це розширення для розбору рядків для PL/SQL, і це найнижчий рівень функціональності розбору рядків
- PLVprsps: Це пакет найвищого рівня для аналізу вихідного коду PL/SQL на окремі атоми. Він покладається на інші пакети аналізу для виконання роботи.
58) Поясніть, як можна скопіювати файл у вміст файлу та файл у таблицю PL/SQL заздалегідь PL/SQL?
За допомогою одного виклику програми – “процедура fcopy”, ви можете скопіювати весь вміст одного файлу в інший файл. Щоб скопіювати вміст файлу безпосередньо в таблицю PL/SQL, ви можете скористатися програмою «file2pstab”.
59) Поясніть, як обробка винятків виконується заздалегідь PL/SQL?
для обробка винятків PL/SQL забезпечує ефективний плагін PLVexc. PLVexc підтримує чотири різні дії обробки винятків.
- Продовжити обробку
- Записуйте, а потім продовжуйте
- Зупинити обробку
- Запишіть і зупиніть обробку
Для тих винятків, які повторюються, ви можете використовувати оператор RAISE.
60) Згадайте, з якою проблемою можна зіткнутися під час запису інформації журналу до таблиці бази даних на PL/SQL?
Під час запису інформації журналу до таблиці бази даних проблема, з якою ви стикаєтеся, полягає в тому, що інформація стає доступною лише після того, як нові рядки закріплені в базі даних. Це може бути проблемою, оскільки такий PLVlog зазвичай розгортається для відстеження помилок, і в багатьох таких випадках поточна транзакція завершується невдачею або іншим чином потребує відкоту.
61) Згадайте, яка функція використовується для передачі журналу таблиці PL/SQL до таблиці бази даних?
Для передачі журналу таблиці PL/SQL у функцію таблиці журналу бази даних «ПРОЦЕДУРА ps2db» використовується.
62) Коли потрібно використовувати стандартну точку збереження PLVlog «відкат до»?
За замовчуванням «відкат до» точки збереження PLVlog використовується, коли користувачі ввімкнули відкат і не надали альтернативну точку збереження під час виклику put_line. Точку збереження за замовчуванням ініціалізовано константою c none.
63) Чому PLVtab вважається найпростішим способом доступу до таблиці PL/SQL?
Таблиця PL/SQL є найближчою до масивів у PL/SQL, і щоб отримати доступ до цієї таблиці, вам потрібно спочатку оголосити тип таблиці, а потім ви повинні оголосити саму таблицю PL/SQL. Але використовуючи PLVtab, ви можете уникнути визначення власного типу таблиці PL/SQL і полегшити доступ до таблиці даних PL/SQL.
64) Згадайте, що PLVtab дозволяє вам робити, коли ви показуєте вміст таблиць PL/SQL?
PLVtab дозволяє виконувати наступні дії, коли ви показуєте вміст таблиць PL/SQL
- Відображати або приховувати заголовок таблиці
- Відображати або приховувати номери рядків для значень таблиці
- Покажіть префікс перед кожним рядком таблиці
65) Поясніть, як можна зберегти або розмістити повідомлення в таблиці?
Щоб зберегти повідомлення в таблиці, ви можете зробити це двома способами
- Завантажити окремі повідомлення з дзвінками на
add_text
процедура - Завантажте набори повідомлень із таблиці бази даних за допомогою
load_from_dbms
процедура
66) Згадайте, яке використання функції «процедура модуля» в PL/SQL?
«Процедура модуля» дозволяє одним викликом процедури перетворити всі рядки коду в певний програмний блок. Є три аргументи для модулів
- module_in
- cor_in
- Last_module_in
67) Згадайте, що роблять PLVcmt і PLVrb у PL/SQL?
PL/Vision пропонує два пакети, які допомагають керувати обробкою транзакцій у програмі PL/SQL. Це PLVcmt і PLVrb.
- PLVcmt: Пакет PLVcmt містить логіку та складність для роботи з обробкою фіксації
- PLVrb: Він надає програмний інтерфейс для відкоту активності в PL/SQL
Ці запитання для співбесіди також допоможуть вам у життєдіяльності (усному)