65 PL/SQL въпроси и отговори за интервю (2026)
Въпроси и отговори за интервю за 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 блока се нарича Изключение. Имат два типа: user_defined и предварително дефинирани.
7) Покажете някои предварително дефинирани изключения.
DUP_VAL_ON_INDEX
НУЛА_ДЕЛЕНИЕ
НЯМА_НАМЕРЕНИ_ДАННИ
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 компилатор. Например неправилен правопис.
Грешка по време на изпълнение се обработва с помощта на секцията за обработка на изключения в an PL/SQL блок. Например оператор SELECT INTO, който не връща нито един ред.
14) Обяснете Commit, Rollback и Savepoint.
За оператор COMMIT е вярно следното:
- Други потребители могат да видят промените в данните, направени от транзакцията.
- Заключванията, придобити от транзакцията, се освобождават.
- Работата, извършена от транзакцията, става постоянна.
Изявлението ROLLBACK се издава, когато транзакцията приключи, и следното е вярно.
- Работата, извършена при преход, се отменя, сякаш никога не е била издавана.
- Всички ключалки, придобити чрез транзакция, се освобождават.
Той отменя цялата работа, извършена от потребителя в транзакция. Със SAVEPOINT само част от транзакцията може да бъде отменена.
15) Дефинирайте неявни и явни курсори.
Курсорът е имплицитно по подразбиране. Потребителят не може да контролира или обработва информацията в този курсор.
Ако една заявка върне множество редове с данни, програмата дефинира изричен курсор. Това позволява на приложението да обработва всеки ред последователно, докато курсорът го връща.
16) Обяснете грешката в променящата се таблица.
Това се случва, когато тригер се опита да актуализира ред, който използва в момента. Това се коригира чрез използване на изгледи или временни таблици, така че базата данни избира едната и актуализира другата.
17) Кога се изисква декларация?
Изявлението DECLARE се използва от анонимни блокове на PL SQL, като например със самостоятелни незапаметени процедури. Ако се използва, трябва да е на първо място в самостоятелен файл.
18) Колко тригера могат да бъдат приложени към таблица?
Към една таблица могат да се приложат максимум 12 тригера.
19) Каква е важността на SQLCODE и SQLERRM?
SQLCODE връща стойността на броя грешки за последната възникнала грешка, докато SQLERRM връща съобщението за последната грешка.
20) Ако курсорът е отворен, как можем да намерим в PL SQL блок?
може да се използва променливата за състояние на курсора %ISOPEN.
PL/SQL въпроси за интервю за опитни
21) Покажете двете изключения на PL/SQL курсора.
Cursor_Already_Open
Невалиден_курсор
22) Какви оператори работят с NULL?
NVL преобразува NULL в друга зададена стойност.
var:=NVL(var2,'Hi');
IS NULL и IS NOT NULL могат да се използват за конкретна проверка дали стойността на дадена променлива е NULL или не.
23) SQL*Plus също има ли PL/SQL Engine?
Не, 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: Проверява дали курсорът е извлякъл някой ред. Вярно е, ако редовете не се извличат.
29) Какво е Intersect?
Intersect е продукт на две таблици и изброява само съвпадащи редове.
30) Какво представляват последователностите?
Поредиците се използват за генериране на поредни номера без допълнителни разходи за заключване. Неговият недостатък е, че поредният номер се губи, ако транзакцията бъде върната назад.
31) Как бихте посочили стойностите на колоните ПРЕДИ и СЛЕД като сте вмъкнали и изтрили тригери?
Използвайки ключовата дума „new.column name“, тригерите могат да препращат към стойности на колони от нова колекция. Като използват ключовата дума „old.column name“, те могат да препращат към стойностите на колоните по стара колекция.
32) Какви са употребите на ключовите думи SYSDATE и USER?
SYSDATE се отнася до текущата системна дата на сървъра. Това е псевдо колона. USER също е псевдо колона, но се отнася до текущия потребител, влязъл в сесията. Те се използват за наблюдение на промените, случващи се в таблицата.
33) Как ROWID помага за по-бързото изпълнение на заявка?
ROWID е логическият адрес на ред, не е физическа колона. Състои се от номер на блок с данни, номер на файл и номер на ред в блока с данни. По този начин I/O времето се минимизира при извличане на реда и води до по-бърза заявка.
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 означава System Global Area, докато PGA означава Program or Process Global Area. На PGA се разпределя само 10% RAM размер, но на SGA се дава 40% RAM размер.
43) Какво е местоположението на Pre_defined_functions.
Те се съхраняват в стандартния пакет, наречен „Функции, процедури и пакети“
44) Обяснете полиморфизма в PL SQL.
Полиморфизмът е характеристика на ООП. Това е способността да се създаде променлива, обект или функция с множество форми. PL/SQL поддържа полиморфизъм под формата на претоварване на програмна единица вътре в членска функция или пакет. Трябва да се избягва недвусмислена логика, докато се извършва претоварване.
45) Какви са употребите на MERGE?
MERGE се използва за комбиниране на множество DML изрази в едно.
Синтаксис: обединяване в име на таблица
използване (заявка)
включено (условие за присъединяване)
когато не съответства тогава
[вмъкване/актуализиране/изтриване] команда
когато съвпада тогава
[вмъкване/актуализиране/изтриване] команда
Въпроси за интервю за PL/SQL за 5+ години опит
46) Могат ли 2 заявки да бъдат изпълнени едновременно в система за разпределена база данни?
Да, те могат да бъдат изпълнени едновременно. Една заявка винаги е независима от втората заявка в разпределена система от бази данни, базирана на двуфазовия ангажимент.
47) Обяснете Raise_application_error.
Това е процедура на пакета DBMS_STANDARD, която позволява издаване на дефинирани от потребителя съобщения за грешка от тригера на базата данни или съхранената подпрограма.
48) Какъв е изходният параметър, използван за въпреки че операторът за връщане може да се използва и в pl/sql?
Изходните параметри позволяват повече от една стойност в извикващата програма. Параметърът Out не се препоръчва във функциите. Процедурите могат да се използват вместо функции, ако са необходими множество стойности. По този начин тези процедури се използват за изпълнение на изходящи параметри.
49) Как бихте преобразували датата в юлиански формат?
Можем да използваме J формат низ:
SQL > изберете to_char(to_date('29-Mar-2013′,'dd-mon-yyyy'),'J') като Julian от dual;
ЮЛИАН
50) Обяснете SPOOL
Командата Spool може да отпечата изхода на sql изрази във файл.
spool/tmp/sql_outtxt
изберете smp_name, smp_id от smp, където dept='accounts';
намотка;
51) Споменете от какво се състои PL/SQL пакетът?
PL/SQL пакетът се състои от
- PL/SQL таблица и запис TYPE изрази
- Процедури и функции
- Бърз
- Променливи (таблици, скалари, записи и др.) и константи
- Имена на изключения и прагми за свързване на номер на грешка с изключение
- Бърз
52) Споменете какви са предимствата на PL/SQL пакетите?
Той предоставя няколко предимства като
- Принудително скриване на информация: Той предлага свободата да избирате дали данните да бъдат частни или публични
- Дизайн отгоре надолу: Можете да проектирате интерфейса към кода, скрит в пакета, преди реално да внедрите самите модули
- Устойчивост на обекта: Обектите, декларирани в спецификация на пакет, се държат като глобални данни за всички PL/SQL обекти в приложението. Можете да промените пакета в един модул и след това да препратите тези промени към друг модул
- Обектно ориентиран дизайн: Пакетът дава на разработчиците силна власт над това как могат да се използват модулите и структурите от данни в пакета
- Гарантиране на целостта на транзакцията: Той осигурява ниво на цялост на транзакцията
- Подобряване на представянето: - RDBMS автоматично проследява валидността на всички програмни обекти, съхранени в базата данни, и подобрява производителността на пакетите.
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 msg?
PLV msg ви позволява да
- Присвояване на отделно текстово съобщение към определен ред в PL/SQL таблицата
- Той извлича текста на съобщението по номер
- Той замества автоматично вашите собствени съобщения със стандартни Oracle съобщения за грешка с превключвател за ограничаване
- Пакетно зареждане на номера на съобщения и текст от таблица на база данни директно PLV msg PL/SQL таблица
56) Споменете какво предлага пакетът PLV (PL/Vision)?
- Нулева заместваща стойност
- Набор от процедури за твърдения
- Разни помощни програми
- Набор от константи, използвани в цялата PL визия
- Предварително дефинирани типове данни
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
- Последен_модул_въведен
67) Споменете какво правят PLVcmt и PLVrb в PL/SQL?
PL/Vision предлага два пакета, които ви помагат да управлявате обработката на транзакции в PL/SQL приложение. Това е PLVcmt и PLVrb.
- PLVcmt: Пакетът PLVcmt обгръща логиката и сложността за справяне с обработката на ангажименти
- PLVrb: Той предоставя програмен интерфейс за връщане назад на дейност в PL/SQL
Тези въпроси за интервюто също ще ви помогнат във вашата viva (устна)
