Top 65 PL / SQL Interview Questions & Odpovědi

Anonim

Stáhnout PDF

1) Co je to PL SQL?

PL SQL je procedurální jazyk, který má interaktivní SQL, stejně jako konstrukce procedurálního programovacího jazyka, jako je podmíněné větvení a iterace.

2) Rozlišujte mezi% ROWTYPE a TYPE RECORD.

% ROWTYPE se používá, když dotaz vrátí celý řádek tabulky nebo zobrazení.

TYPE RECORD se naopak používá, když dotaz vrací sloupec různých tabulek nebo pohledů.

Např. TYP r_emp je RECORD (sno smp.smpno% type, sname smp sname% type)

e_rec smp% ROWTYPE

Cursor c1 je select smpno, odd od smp;

e_rec c1% ROWTYPE

3) Vysvětlete použití kurzoru.

Kurzor je pojmenovaná soukromá oblast v SQL, ze které lze přistupovat k informacím. Jsou povinni zpracovávat každý řádek samostatně pro dotazy, které vracejí více řádků.

4) Zobrazit 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 vypne se při zpracování všech záznamů.

Např. FOR smp_rec IN C1 LOOP

totalsal = totalsal + smp_recsal;

ENDLOOP;

5) Vysvětlete použití spouštěče databáze.

Programová jednotka PL / SQL asociovaná s konkrétní databázovou tabulkou se nazývá spouštěč databáze. Používá se pro:

1) Úpravy dat auditu.

2) Protokolujte události transparentně.

3) Prosazujte složitá obchodní pravidla.

4) Udržujte tabulky replik

5) Odvozte hodnoty sloupců

6) Implementujte komplexní bezpečnostní oprávnění

6) Jaké jsou dva typy výjimek.

Chyba při zpracování části bloku PL / SQL 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 ze spouštěče databáze nebo uloženého podprogramu.

9) Ukažte, jak jsou funkce a procedury volány v bloku PL SQL.

Funkce se nazývá jako součást výrazu.

celkem: = vypočítat_sal ('b644')

Procedura se nazývá jako příkaz v PL / SQL.

vypočítat_bonus ('b644');

10) Vysvětlete dvě virtuální tabulky dostupné v době spuštění spouštěče databáze.

Sloupce tabulky jsou označovány jako THEN.column_name a NOW.column_name.

Pro aktivační události související s INSERT jsou hodnoty NOW.column_name k dispozici pouze.

Pro spouštěče související s odstraněním jsou hodnoty THEN.column_name k dispozici pouze.

Pro spouštěče související s UPDATE jsou k dispozici oba sloupce tabulky.

11) Jaká pravidla se použijí na NULL při srovnávání?

1) NULL není nikdy PRAVDA nebo NEPRAVDA

2) NULL nemůže být stejné nebo nerovné s jinými hodnotami

3) Pokud je hodnota ve výrazu NULL, pak se samotný výraz vyhodnotí na NULL kromě operátoru zřetězení (||)

12) Jak je kompilován 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 kompilace. Když jsou opraveny všechny chyby, je proměnným, které obsahují data, přiřazena adresa úložiště. Říká se tomu Binding. P-kód je seznam pokynů pro stroj PL SQL. 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.

Chyba syntaxe může být snadno detekována kompilátorem PL / SQL. Například nesprávný pravopis.

Chyba běhového modulu je zpracována pomocí sekce zpracování výjimek v bloku PL / SQL. 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.

Po ukončení transakce bude vydán příkaz ROLLBACK a následující je pravda.

  • Práce provedená při přechodu je vrácena, jako by nebyla nikdy vydána.
  • Všechny zámky získané transakcí jsou uvolněny.

Vrátí zpět veškerou práci provedenou uživatelem v transakci. U SAVEPOINT lze vrátit pouze část transakce.

15) Definujte implicitní a explicitní kurzory.

Ve výchozím nastavení je kurzor 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ě, jakmile jej vrátí kurzor.

16) Vysvětlete chybu mutující tabulky.

Dochází k tomu, když se aktivační událost pokusí aktualizovat řádek, který aktuálně používá. Opravuje se to pomocí pohledů nebo dočasných tabulek, takže databáze vybere jednu a druhou aktualizuje.

17) Kdy je vyžadováno prohlášení?

Příkaz DECLARE používají anonymní bloky PL SQL, jako například samostatné, neuložené procedury. Pokud se používá, musí být na prvním místě v samostatném souboru.

18) Kolik spouštěčů lze použít na stůl?

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 o poslední chybě.

20) Pokud je otevřený kurzor, jak jej můžeme najít v PL SQL bloku?

lze použít stavovou proměnnou% ISOPEN.

21) Zobrazit dvě výjimky kurzoru PL / SQL.

Cursor_Already_Open

Invaid_cursor

22) Co operátoři jednají s 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 nemá v sobě zabudovaný PL / SQL Engine. Celý kód PL / SQL 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?

Série balíků DBMS, například 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 znakové funkce?

INITCAP, UPPER, SUBSTR, LOWER a LENGTH jsou všechny znakové funkce. Skupinové funkce poskytují výsledky na základě skupin řádků, na rozdíl od jednotlivých řádků. Jsou to MAX, MIN, AVG, COUNT a SUMA.

27) Vysvětlete TTITLE a BTITLE.

Příkazy TTITLE a BTITLE, které řídí záhlaví a zápatí sestavy.

28) Zobrazit 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ěkterý řádek. Je pravda, pokud jsou načteny řádky

% NOT FOUND: Zkontroluje, zda kurzor načetl nějaký řádek. Je pravda, pokud nejsou načteny řádky.

29) Co je to průnik?

Intersect je produktem dvou tabulek a uvádí pouze shodné řá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, že pořadové číslo je ztraceno, 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ů pomocí nové kolekce. Pomocí klíčového slova „old.column name“ mohou odkazovat na vaue sloupců podle staré kolekce.

32) Jak se používají klíčová slova SYSDATE a USER?

SYSDATE odkazuje na aktuální systémové datum serveru. Je to pseudo sloupec. USER je také pseudo sloupec, ale odkazuje na aktuálního uživatele přihlášeného k relaci. Používají se k monitorování změn probíhajících v tabulce.

33) Jak ROWID pomáhá při rychlejším spuštění dotazu?

ROWID je logická adresa řádku, nejedná se o fyzický sloupec. Skládá se z čísla datového bloku, čísla souboru a čísla řádku v datovém bloku. Čas I / O se tak minimalizuje načítáním řádku a výsledkem je rychlejší dotaz.

34) Na co se používají databázové odkazy?

Odkazy na databáze jsou vytvářeny za účelem vytvoření komunikace mezi různými databázemi nebo různými prostředími, jako je test, vývoj a výroba. Odkazy na databázi jsou pouze ke čtení, aby bylo možné získat přístup i k dalším informacím.

35) Co dělá načítání kurzoru?

Načítání kurzoru čte sadu výsledků po řádcích.

36) Co dělá zavírání kurzoru?

Zavření kurzoru vymaže soukromou oblast SQL a zruší alokaci paměti

37) Vysvětlete použití Control File.

Je to binární soubor. Zaznamenává strukturu databáze. Zahrnuje umístění několika souborů protokolu, jména a časová razítka. 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 soudržnost

Konzistence ukazuje, že data se neprojeví ostatním uživatelům, dokud nedojde k potvrzení dat, aby byla zachována konzistence.

39) Rozdíly mezi anonymními bloky a podprogramy.

Anonymní bloky jsou nepojmenované bloky, které nejsou nikde uloženy, zatímco podprogramy jsou 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šířená verze DECODE. DECODE na svém místě neumožňuje prohlášení přijímající rozhodnutí.

vyberte dekódování (totalsal = 12000, 'high', 10 000, 'medium') jako decode_tesr ze smp, kde smpno in (10,12,14,16);

Toto prohlášení vrací chybu.

CASE se přímo používá v PL SQL, ale DECODE se používá pouze v PL SQL prostřednictvím SQL.

41) Vysvětlete autonomní transakci.

Autonomní transakce je nezávislá transakce hlavní nebo nadřazené transakce. Není vnořený, pokud je spuštěn jinou transakcí.

Existuje několik situací, kdy lze použít autonomní transakce, jako je protokolování událostí a auditování.

42) Rozlišujte mezi SGA a PGA.

SGA znamená Globální oblast systému, zatímco PGA znamená Globální oblast programu nebo procesu. PGA je přidělena pouze 10% velikost RAM, ale SGA má velikost 40% RAM.

43) Jaké je umístění Pre_defined_functions.

Jsou uloženy ve standardním balíčku nazvaném „Funkce, postupy a balíčky“

44) Vysvětlete polymorfismus v PL SQL.

Polymorfismus je rysem OOP. Jedná se o schopnost vytvořit proměnnou, objekt nebo funkci s více formami. PL / SQL podporuje polymorfismus ve formě přetížení programových jednotek uvnitř členské funkce nebo balíčku ... Během přetížení je třeba se vyhnout jednoznačné logice.

45) Jaká je použití SLOUČENÍ?

SLOUČENÍ se používá ke sloučení více příkazů DML do jednoho.

Syntaxe: sloučit do tablename

pomocí (dotaz)

zapnuto (podmínka spojení)

když se pak neshoduje

příkaz [insert / update / delete]

když se pak shodují

příkaz [insert / update / delete]

46) Mohou být 2 dotazy spuštěny současně v distribuovaném databázovém systému?

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.

Jedná se o postup balíčku DBMS_STANDARD, který umožňuje vydávat chybové zprávy definované uživatelem ze spouštěče databáze nebo uloženého podprogramu.

48) Co je parametr out použitý pro příkaz return, i když lze použít i v pl / sql?

Parametry Out umožňují ve volajícím programu více než jednu hodnotu. Ve funkcích se parametr Out nedoporučuje. Pokud je požadováno více hodnot, lze místo funkcí použít procedury. Tyto postupy se tedy používají k provedení parametrů Out.

49) Jak byste převedli datum do juliánského formátu data?

Můžeme použít řetězec formátu J:

SQL> vyberte 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;

51) Uveďte, z čeho se skládá balíček PL / SQL?

Balíček PL / SQL se skládá z

  • Tabulka PL / SQL a zaznamenávejte příkazy TYPE
  • Postupy a funkce
  • Kurzory
  • Proměnné (tabulky, skaláry, záznamy atd.) A konstanty
  • Názvy výjimek a pragma pro přiřazení čísla chyby s výjimkou
  • Kurzory

52) Uveďte, jaké jsou výhody balíků PL / SQL?

Poskytuje několik výhod jako

  • Skrývání vynucených informací: Nabízí svobodu zvolit si, zda budou data soukromá nebo veřejná
  • Návrh shora dolů: Můžete navrhnout rozhraní kódu skrytého v balíčku, než skutečně implementujete samotné moduly
  • Perzistence objektů : Objekty deklarované ve specifikaci balíčku se chovají jako globální data pro všechny objekty PL / SQL 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 použít moduly a datové struktury uvnitř balíčku
  • Zaručení integrity transakce: Poskytuje úroveň integrity transakce
  • Zlepšení výkonu: 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 pro vysledování kódu PL / SQL?

Trasování kódu je zásadní technikou pro měření výkonu kódu během běhu. Zahrnuje různé metody trasování

  • 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 by mohl profilovat volání uskutečněná v PL / SQL, kromě vyplnění mezery mezi mezerami a očekáváním sledování výkonu. Účinnost hierarchického profilovače zahrnuje

  • Jednoznačné hlášení pro spotřebu času SQL a PL / SQL
  • Hlásí počet různých volání podprogramů uskutečněných v PL / SQL a čas strávený každým voláním podprogramu
  • Několik interaktivních analytických zpráv 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?

Zpráva PLV vám umožňuje

  • Přiřazení jednotlivé textové zprávy k zadanému řádku v tabulce PL / SQL
  • Načte text zprávy podle čísla
  • Automaticky nahrazuje vaše vlastní zprávy standardními chybovými zprávami Oracle s přepínáním omezení
  • Dávkové načítání čísel zpráv a textu z databázové tabulky přímo PLV msg PL / SQL tabulka

56) Uveďte, co nabízí balíček PLV (PL / Vision)?

  • Nulová substituční hodnota
  • Sada kontrolních rutin
  • Různé nástroje
  • Sada konstant používaných v PL vizi
  • 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ň funkce analýzy řetězců
  • PLVprsps: Jedná se o balíček nejvyšší úrovně pro analýzu zdrojového kódu PL / SQL do samostatných atomů. Při práci se spoléhá na jiné parsovací balíčky.

58) Vysvětlete, jak můžete předem zkopírovat soubor do obsahu souboru a do tabulky PL / SQL?

Pomocí jediného volání programu - „ procedura fcopy“ můžete zkopírovat celý obsah jednoho souboru do jiného souboru. Při kopírování obsahu souboru přímo do tabulky PL / SQL můžete použít program „ file2pstab“ .

59) Vysvětlete, jak se zpracování výjimek provádí předem PL / SQL?

Pro zpracování výjimek poskytuje PL / SQl efektivní plugin PLVexc. PLVexc podporuje čtyři různé akce zpracování výjimek.

  • Pokračujte ve zpracování
  • Zaznamenejte a poté pokračujte
  • Zastavit zpracování
  • Zaznamenejte a poté zastavte zpracování

Pro ty výjimky, které se znovu vyskytnou, můžete použít příkaz RAISE.

60) Uveďte, s jakým problémem by se člověk mohl setkat při zápisu informací o protokolu do databáze v PL / SQL?

Při zápisu informací protokolu do databázové tabulky je problém, kterému čelíte, že tyto informace jsou k dispozici pouze v případě, že jsou nové řádky potvrzeny v databázi. 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 jinak potřebovala odvolání.

61) Uveďte, jaká je funkce, která se používá k přenosu protokolu tabulky PL / SQL do tabulky databáze?

K přenosu protokolu tabulky PL / SQL se používá funkce tabulky protokolu databáze „POSTUP ps2db“ .

62) Když musíte použít výchozí bod uložení „vrácení zpět“ PLVlog?

Výchozí "rollback to" bod uložení PLVlog se používá, když uživatelé zapnuli aktivitu rollback 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 umožňuje PLVtab, když ukážete obsah tabulek PL / SQL?

PLVtab vám umožňuje dělat 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čtěte jednotlivé zprávy s voláními procedury add_text
  • Načtěte sady zpráv z databázové tabulky pomocí procedury load_from_dbms

66) Uveďte, jaké je použití funkce „procedura modulu“ v PL / SQL?

"Modulární procedura" umožňuje převést všechny řádky kódu do určité programové jednotky s jedním voláním procedury. Pro moduly existují tři argumenty

  • modul_v
  • cor_in
  • Last_module_in

67) Uveďte, co PLVcmt a PLVrb dělají v PL / SQL?

PL / Vision nabízí dva balíčky, které vám pomohou spravovat zpracování transakcí v aplikaci PL / SQL. Je to PLVcmt a PLVrb.

  • PLVcmt: Balíček PLVcmt obaluje logiku a složitost zpracování zpracování odevzdání
  • PLVrb: Poskytuje programové rozhraní pro návratovou aktivitu v PL / SQL