65 Otázky a odpovědi k rozhovoru PL/SQL (2025)
PL/SQL pohovor Otázky a odpovědi pro Freshers
1) Co je PL SQL?
Oracle PL/SQL je rozšíření jazyka SQL, které kombinuje výkon SQL pro manipulaci s daty se zpracovatelským výkonem procedurálního jazyka a vytváří tak super výkonné dotazy SQL. PL/SQL zajišťuje bezproblémové zpracování příkazů SQL tím, že zvyšuje bezpečnost, přenositelnost a robustnost databáze.
PL/SQL je zkratka pro „Procedural Language extensions to Structured Query Language“.
👉 Zdarma ke stažení PDF: Otázky a odpovědi k rozhovoru PL/SQL
2) Rozlišujte mezi % ROWTYPE a TYPE RECORD.
% ROWTYPE se používá, když dotaz vrátí celý řádek tabulky nebo pohledu.
TYP ZÁZNAMU na druhé straně se používá, když dotaz vrací sloupec různých tabulek nebo zobrazení.
Např. TYPE r_emp je ZÁZNAM (sno smp.smpno%type,sname smp sname %type)
e_rec smp %ŘÁDEK
Kurzor c1 je select smpno,dept from smp;
e_rec c1 %ŘÁDEK
3) Vysvětlete použití kurzoru.
Kurzor je pojmenovaná soukromá oblast v SQL, ze které lze přistupovat k informacím. Jsou povinni zpracovat každý řádek samostatně pro dotazy, které vracejí více řádků.
4) Zobrazte kód kurzoru pro smyčku.
Kurzor implicitně deklaruje %ROWTYPE jako index smyčky. Poté otevře kurzor, získá řádky hodnot z aktivní sady v polích záznamu a zavře se, když jsou všechny záznamy zpracovány.
Např.
FOR smp_rec IN C1 LOOP totalsal=totalsal+smp_recsal; ENDLOOP;
5) Vysvětlete použití databázového spouštěče.
Programová jednotka PL/SQL spojená s konkrétní databázovou tabulkou se nazývá spouštěč databáze. Používá se pro:
1) Úpravy dat auditu.
2) Transparentně protokolujte události.
3) Prosazovat složitá obchodní pravidla.
4) Udržujte tabulky replik
5) Odvoďte hodnoty sloupců
6) Implementujte komplexní bezpečnostní autorizace
6) Jaké jsou dva typy výjimek?
Chyba zpracovávající část PL/SQL bloku se nazývá výjimka. Mají dva typy: user_defined a predefined.
7) Zobrazit některé předdefinované výjimky.
DUP_VAL_ON_INDEX
ZERO_DIVIDE
NENALEZENA ŽÁDNÁ DATA
TOO_MANY_ROWS
CURSOR_ALREADY_OPEN
NEPLATNÉ ČÍSLO
INVALID_CURSOR
PROGRAM_ERROR
TIMEOUT _ON_RESOURCE
STORAGE_ERROR
LOGON_DENIED
VALUE_ERROR
atd.
8) Vysvětlete Raise_application_error.
Jedná se o proceduru balíčku DBMS_STANDARD, která umožňuje vydávání uživatelsky definovaných chybových zpráv z databázového triggeru nebo uloženého podprogramu.
9) Ukažte, jak se funkce a procedury volají v PL SQL bloku.
Funkce je volána jako součást výrazu.
total:=calculate_sal('b644')
Procedura se nazývá jako příkaz v PL / SQL.
calculate_bonus('b644');
10) Vysvětlete dvě virtuální tabulky dostupné v době spuštění databáze.
Sloupce tabulky jsou označovány jako STARÝ.název_sloupce a NOVÝ.název_sloupce.
Pro spouštěče související s INSERT jsou k dispozici pouze hodnoty NEW.column_name.
Pro související spouštěče DELETE jsou k dispozici pouze hodnoty OLD.column_name.
Pro spouštěče související s UPDATE jsou k dispozici oba sloupce tabulky.
11) Jaká pravidla platí pro hodnoty NULL při porovnávání?
1) NULL není nikdy TRUE nebo FALSE
2) NULL se nemůže rovnat ani nerovnat jiným hodnotám
3) Pokud je hodnota ve výrazu NULL, pak se samotný výraz vyhodnotí jako NULL s výjimkou operátoru zřetězení (||)
12) Jak se kompiluje proces PL SQL?
Proces kompilace zahrnuje procesy kontroly syntaxe, vazby a generování p-kódu.
Kontrola syntaxe kontroluje PL SQL kódy na chyby při kompilaci. Když jsou všechny chyby opraveny, je proměnným, které uchovávají data, přiřazena adresa úložiště. Jmenuje se Binding. P-kód je seznam instrukcí pro PL SQL engine. P-kód je uložen v databázi pro pojmenované bloky a je použit při příštím spuštění.
13) Rozlišujte mezi chybami syntaxe a runtime.
Syntaktická chyba může být snadno odhalena kompilátorem PL/SQL. Například nesprávný pravopis.
Runtime chyba je zpracována pomocí sekce pro zpracování výjimek v souboru PL/SQL blok. Například příkaz SELECT INTO, který nevrací žádné řádky.
14) Vysvětlete Commit, Rollback a Savepoint.
Pro příkaz COMMIT platí následující:
- Ostatní uživatelé mohou vidět změny dat provedené transakcí.
- Zámky získané transakcí se uvolní.
- Práce provedená transakcí se stává trvalou.
Příkaz ROLLBACK je vydán po ukončení transakce a platí následující.
- Práce provedená při přechodu je vrácena zpět, jako by nikdy nebyla vydána.
- Všechny zámky získané transakcí jsou uvolněny.
Zruší veškerou práci provedenou uživatelem v transakci. S SAVEPOINT lze vrátit zpět pouze část transakce.
15) Definujte implicitní a explicitní kurzory.
Kurzor je ve výchozím nastavení implicitní. Uživatel nemůže ovládat nebo zpracovávat informace v tomto kurzoru.
Pokud dotaz vrátí více řádků dat, program definuje explicitní kurzor. To umožňuje aplikaci zpracovat každý řádek postupně, jak jej kurzor vrací.
16) Vysvětlete chybu mutující tabulky.
Nastane, když se spouštěč pokusí aktualizovat řádek, který aktuálně používá. Je to opraveno pomocí pohledů nebo dočasných tabulek, takže databáze vybere jednu a aktualizuje druhou.
17) Kdy je vyžadováno prohlášení?
Příkaz DECLARE používají anonymní bloky PL SQL, jako jsou samostatné, neuložené procedury. Pokud se používá, musí být na prvním místě v samostatném souboru.
18) Kolik triggerů lze aplikovat na tabulku?
Na jednu tabulku lze použít maximálně 12 spouštěčů.
19) Jaký je význam SQLCODE a SQLERRM?
SQLCODE vrací hodnotu počtu chyb pro poslední zjištěnou chybu, zatímco SQLERRM vrací zprávu pro poslední chybu.
20) Pokud je otevřený kurzor, jak jej můžeme najít v PL SQL bloku?
lze použít stavovou proměnnou kurzoru %ISOPEN.
PL/SQL Interview Otázky pro zkušené
21) Ukažte dvě výjimky kurzoru PL/SQL.
Cursor_Already_Open
Invaid_cursor
22) Kteří operátoři se zabývají NULL?
NVL převede NULL na jinou zadanou hodnotu.
var:=NVL(var2,'Hi');
IS NULL a IS NOT NULL lze použít ke konkrétní kontrole, zda je hodnota proměnné NULL nebo ne.
23) Má SQL*Plus také PL/SQL Engine?
Ne, SQL*Plus v sobě nemá zabudovaný PL/SQL Engine. Veškerý PL/SQL kód je tedy odeslán přímo do databázového stroje. Je to mnohem efektivnější, protože každý příkaz není jednotlivě odstraněn.
24) Jaké balíčky jsou k dispozici vývojářům PL SQL?
DBMS_ série balíčků, jako jsou DBMS_PIPE, DBMS_DDL, DBMS_LOCK, DBMS_ALERT, DBMS_OUTPUT, DBMS_JOB, DBMS_UTILITY, DBMS_SQL, DBMS_TRANSACTION, UTL_FILE.
25) Vysvětlete 3 základní části spouště.
- Spouštěcí příkaz nebo událost.
- Omezení
- Akce
26) Co jsou funkce znaků?
INITCAP, UPPER, SUBSTR, LOWER a LENGTH jsou všechny znakové funkce. Skupinové funkce poskytují výsledky založené na skupinách řádků, na rozdíl od jednotlivých řádků. Jsou MAX, MIN, AVG, COUNT a SUM.
27) Vysvětlete TTITLE a BTITLE.
Příkazy TTITLE a BTITLE, které ovládají záhlaví a zápatí sestav.
28) Ukažte atributy kurzoru PL/SQL.
%ISOPEN:
Zkontroluje, zda je kurzor otevřený nebo ne
%ROWCOUNT:
Počet řádků, které jsou aktualizovány, odstraněny nebo načteny.
%FOUND:
Zkontroluje, zda kurzor načetl nějaký řádek. Platí, pokud jsou načteny řádky
%NOT FOUND:
Zkontroluje, zda kurzor načetl nějaký řádek. Má hodnotu True, pokud nejsou načteny řádky.
29) Co je to průnik?
Intersect je součin dvou tabulek a uvádí pouze odpovídající řádky.
30) Co jsou to sekvence?
Sekvence se používají ke generování pořadových čísel bez režie zamykání. Jeho nevýhodou je ztráta pořadového čísla, pokud je transakce vrácena zpět.
31) Jak byste odkazovali na hodnoty sloupců PŘED a PO vložení a odstranění spouštěčů?
Pomocí klíčového slova „new.column name“ mohou spouštěče odkazovat na hodnoty sloupců podle nové kolekce. Pomocí klíčového slova „old.column name“ mohou odkazovat na sloupce podle staré kolekce.
32) Jaká jsou použití klíčových slov SYSDATE a USER?
SYSDATE odkazuje na aktuální systémové datum serveru. Je to pseudo rubrika. USER je také pseudo sloupec, ale odkazuje na aktuálního uživatele přihlášeného k relaci. Používají se ke sledování změn probíhajících v tabulce.
33) Jak ROWID pomáhá rychleji spouštět dotaz?
ROWID je logická adresa řádku, není to fyzický sloupec. Skládá se z čísla bloku dat, čísla souboru a čísla řádku v bloku dat. Čas I/O se tak minimalizuje při načítání řádku a výsledkem je rychlejší dotaz.
34) K čemu slouží databázové odkazy?
Databázová propojení jsou vytvořena za účelem vytvoření komunikace mezi různými databázemi nebo různými prostředími, jako je testování, vývoj a výroba. Databázové odkazy jsou pouze pro čtení pro přístup k dalším informacím.
35) Co dělá načítání kurzoru?
Při načítání kurzoru se zobrazí sada výsledků řádek po řádku.
36) Co dělá zavření kurzoru?
Zavřením kurzoru se vymaže soukromá oblast SQL a také se zruší přidělení paměti
37) Vysvětlete použití kontrolního souboru.
Je to binární soubor. Zaznamenává strukturu databáze. Obsahuje umístění několika souborů protokolu, názvů a časových razítek. Mohou být uloženy na různých místech, aby pomohly při získávání informací, pokud dojde k poškození jednoho souboru.
38) Vysvětlete konzistentnost
Konzistence ukazuje, že data nebudou reflektována ostatním uživatelům, dokud nebudou data potvrzena, takže je zachována konzistence.
39) Rozdíl mezi anonymními bloky a podprogramy.
Anonymní bloky jsou nepojmenované bloky, které nejsou nikde uloženy, zatímco jsou podprogramy kompilovány a ukládány do databáze. Jsou kompilovány za běhu.
40) Rozdíl mezi DECODE a CASE.
Příkazy DECODE a CASE jsou velmi podobné, ale CASE je rozšířenou verzí DECODE. DECODE na jeho místě nepovoluje rozhodovací prohlášení.
vyberte decode(totalsal=12000,'high',10000,'medium') jako decode_tesr z smp kde smpno in (10,12,14,16);
Tento příkaz vrátí chybu.
CASE se přímo používá v PL SQL, ale DECODE se používá v PL SQL pouze přes SQL.
41) Vysvětlete autonomní transakci.
Autonomní transakce je nezávislá transakce hlavní nebo mateřské transakce. Není vnořen, pokud je spuštěn jinou transakcí.
Existuje několik situací pro použití autonomních transakcí, jako je protokolování událostí a auditování.
42) Rozlišujte mezi SGA a PGA.
SGA znamená System Global Area, zatímco PGA znamená Program nebo Process Global Area. PGA má přiděleno pouze 10 % velikosti RAM, ale SGA má přiděleno 40 % velikosti RAM.
43) Jaké je umístění Pre_defined_functions.
Jsou uloženy ve standardním balíčku s názvem „Funkce, procedury a balíčky“
44) Vysvětlete polymorfismus v PL SQL.
Polymorfismus je rysem OOP. Je to schopnost vytvořit proměnnou, objekt nebo funkci s více formami. PL/SQL podporuje polymorfismus ve formě přetížení programové jednotky uvnitř členské funkce nebo balíčku. Při přetěžování je třeba se vyhnout jednoznačné logice.
45) Jaká jsou použití MERGE?
MERGE se používá ke spojení více příkazů DML do jednoho.
Syntaxe: sloučení do názvu tabulky
pomocí (dotaz)
zapnuto (podmínka připojení)
když se pak neshoduje
[insert/update/delete] příkaz
když se pak shodují
[insert/update/delete] příkaz
Otázky k pohovoru PL/SQL pro 5+ let zkušeností
46) Mohou být v distribuovaném databázovém systému spuštěny 2 dotazy současně?
Ano, mohou být provedeny současně. Jeden dotaz je vždy nezávislý na druhém dotazu v distribuovaném databázovém systému založeném na dvoufázovém potvrzení.
47) Vysvětlete Raise_application_error.
Je to procedura balíku DBMS_STANDARD, která umožňuje vydávání uživatelsky definovaných chybových zpráv z databázového triggeru nebo uloženého podprogramu.
48) Jaký parametr out se používá, i když příkaz return lze použít také v pl/sql?
Out parametry umožňují více než jednu hodnotu ve volajícím programu. Parametr Out se ve funkcích nedoporučuje. Pokud je požadováno více hodnot, lze místo funkcí použít procedury. Tyto procedury se tedy používají k provádění parametrů Out.
49) Jak byste převedli datum do formátu juliánského data?
Můžeme použít řetězec formátu J:
SQL > vybrat to_char(to_date('29-Mar-2013′,'dd-mon-yyyy'),'J') jako julian z dual;
JULIAN
50) Vysvětlete SPOOL
Příkaz Spool může tisknout výstup příkazů SQL do souboru.
spool/tmp/sql_outtxt
vyberte smp_name, smp_id z smp kde dept='accounts';
cívka vypnutá;
51) Uveďte, z čeho se skládá PL/SQL balíček?
Balíček PL/SQL se skládá z
- Příkazy PL/SQL tabulky a záznamu TYPE
- Procedury a funkce
- Kurzory
- Proměnné (tabulky, skaláry, záznamy atd.) a konstanty
- Názvy výjimek a pragmata pro spojení čísla chyby s výjimkou
- Kurzory
52) Uveďte, jaké jsou výhody balíčků PL/SQL?
Poskytuje několik výhod, např
- Vynucené skrývání informací: Nabízí svobodu volby, zda data ponechat soukromá nebo veřejná
- Design shora dolů: Rozhraní můžete navrhnout podle kódu skrytého v balíčku předtím, než skutečně implementujete samotné moduly
- Trvalost objektu: Objekty deklarované ve specifikaci balíčku se chovají jako globální data pro všechny PL/SQL objekty v aplikaci. Balíček můžete upravit v jednom modulu a poté tyto změny odkazovat na jiný modul
- Objektově orientovaný design: Balíček poskytuje vývojářům silnou kontrolu nad tím, jak lze moduly a datové struktury uvnitř balíčku používat
- Zajištění integrity transakce: Poskytuje úroveň integrity transakcí
- Zlepšení výkonu: Jedno RDBMS automaticky sleduje platnost všech programových objektů uložených v databázi a zvyšuje výkon balíčků.
53) Uveďte, jaké jsou různé metody sledování kódu PL/SQL?
Sledovací kód je klíčovou technikou pro měření výkonu kódu za běhu. Různé metody pro sledování zahrnují
- DBMS_APPLICATION_INFO
- DBMS_TRACE
- DBMS_SESSION a DBMS_MONITOR
- nástroje trcsess a tkproof
54) Uveďte, co dělá hierarchický profiler?
Hierarchický profiler mohl profilovat volání provedená v PL/SQL, kromě vyplnění mezery mezi mezerami a očekáváním sledování výkonu. Efektivita hierarchického profilovače zahrnuje
- Odlišné zpravodajství pro SQL a časová náročnost PL/SQL
- Hlásí počet různých volání podprogramů provedených v PL/SQL a čas strávený voláním každého podprogramu
- Více interaktivních analytických sestav ve formátu HTML pomocí nástroje příkazového řádku
- Efektivnější než konvenční profiler a další nástroje pro sledování
55) Uveďte, co vám PLV msg umožňuje?
PLV msg vám to umožňuje
- Přiřaďte jednotlivou textovou zprávu k určenému řádku v tabulce PL/SQL
- Načte text zprávy podle čísla
- Automaticky nahrazuje vaše vlastní zprávy za standardní Oracle chybové zprávy s přepínačem omezení
- Dávkové načtení čísel zpráv a textu z databázové tabulky přímo PLV msg PL/SQL tabulky
56) Uveďte, co nabízí balíček PLV (PL/Vision)?
- Nulová substituční hodnota
- Sada rutin tvrzení
- Různé inženýrské sítě
- Sada konstant používaných v celém PL vidění
- Předdefinované datové typy
57) Uveďte, jaké je použití PLVprs a PLVprsps?
- PLVprs: Jedná se o rozšíření pro analýzu řetězců pro PL/SQL a je to nejnižší úroveň funkčnosti analýzy řetězců
- PLVprsps: Je to balíček nejvyšší úrovně pro analýzu zdrojového kódu PL/SQL do samostatných atomic. Při práci se spoléhá na jiné balíčky analýzy.
58) Vysvětlete, jak můžete předem zkopírovat soubor do obsahu souboru a soubor do tabulky PL/SQL PL/SQL?
S jediným voláním programu – “postup fcopy“, můžete zkopírovat celý obsah jednoho souboru do jiného souboru. Zatímco ke zkopírování obsahu souboru přímo do tabulky PL/SQL můžete použít program „soubor2pstab”.
59) Vysvětlete, jak se zpracování výjimek provádí předem PL/SQL?
Pro zpracování výjimek PL/SQL poskytuje efektivní plugin PLVexc. PLVexc podporuje čtyři různé akce zpracování výjimek.
- Pokračujte ve zpracování
- Nahrajte a poté pokračujte
- Zastavit zpracování
- Zaznamenejte a poté zastavte zpracování
Pro výjimky, které se opakují, můžete použít příkaz RAISE.
60) Uveďte, s jakým problémem se člověk může setkat při zápisu informací o protokolu do databázové tabulky v PL/SQL?
Při zapisování informací protokolu do databázové tabulky se potýkáte s problémem, že informace jsou dostupné pouze tehdy, když jsou nové řádky potvrzeny do databáze. To může být problém, protože takový PLVlog je obvykle nasazen ke sledování chyb a v mnoha takových případech by aktuální transakce selhala nebo by jinak potřebovala vrácení zpět.
61) Uveďte, jaká je funkce, která se používá k přenosu protokolu tabulky PL/SQL do databázové tabulky?
Chcete-li přenést protokol tabulky PL/SQL, funkce tabulky protokolu databáze "POSTUP ps2db" se používá.
62) Kdy musíte použít výchozí „rollback to“ savepoint PLVlog?
Výchozí bod uložení „rollback to“ PLVlog se používá, když uživatelé zapnuli aktivitu vrácení zpět a neposkytli alternativní bod uložení ve volání put_line. Výchozí bod uložení je inicializován na konstantu c none.
63) Proč je PLVtab považován za nejjednodušší způsob přístupu k tabulce PL/SQL?
Tabulka PL/SQL je nejblíže polím v PL/SQL a pro přístup k této tabulce musíte nejprve deklarovat typ tabulky a poté musíte deklarovat samotnou tabulku PL/SQL. Ale pomocí PLVtab se můžete vyhnout definování vlastního typu tabulky PL/SQL a usnadnit přístup k datové tabulce PL/SQL.
64) Uveďte, co vám PLVtab umožňuje, když zobrazujete obsah tabulek PL/SQL?
PLVtab vám umožňuje provádět následující věci, když zobrazujete obsah tabulek PL/SQL
- Zobrazit nebo potlačit záhlaví tabulky
- Zobrazte nebo potlačte čísla řádků pro hodnoty tabulky
- Zobrazit předponu před každým řádkem tabulky
65) Vysvětlete, jak můžete uložit nebo umístit svou zprávu do tabulky?
Chcete-li uložit zprávu do tabulky, můžete to udělat dvěma způsoby
- Načíst jednotlivé zprávy s hovory na
add_text
postup - Načtěte sady zpráv z databázové tabulky pomocí
load_from_dbms
postup
66) Uveďte, jaké je použití funkce „module procedure“ v PL/SQL?
„Procedura modulu“ umožňuje převést všechny řádky kódu v určité programové jednotce jedním voláním procedury. Pro moduly existují tři argumenty
- module_in
- cor_in
- Last_module_in
67) Uveďte, co dělá PLVcmt a PLVrb v PL/SQL?
PL/Vision nabízí dva balíčky, které vám pomohou řídit zpracování transakcí v PL/SQL aplikaci. Jedná se o PLVcmt a PLVrb.
- PLVcmt: Balíček PLVcmt obaluje logiku a složitost pro zpracování odevzdání
- PLVrb: Poskytuje programové rozhraní pro návrat k činnosti v PL/SQL
Tyto otázky na pohovoru také pomohou ve vašem životě (ústních)