65 pytań i odpowiedzi do rozmowy kwalifikacyjnej PL/SQL (2025)
Pytania i odpowiedzi dotyczące rozmowy kwalifikacyjnej PL/SQL dla nowicjuszy
1) Co to jest PLSQL?
Oracle PL/SQL jest rozszerzeniem języka SQL, które łączy w sobie możliwości manipulacji danymi SQL z mocą przetwarzania języka proceduralnego w celu tworzenia niezwykle wydajnych zapytań SQL. PL/SQL zapewnia bezproblemowe przetwarzanie instrukcji SQL, zwiększając bezpieczeństwo, przenośność i niezawodność bazy danych.
PL/SQL oznacza „rozszerzenia języka proceduralnego do strukturalnego języka zapytań”.
👉 Bezpłatne pobieranie pliku PDF: pytania i odpowiedzi dotyczące wywiadu PL/SQL
2) Rozróżnij % ROWTYPE i TYPE RECORD.
%TYP WIERSZA jest używany, gdy zapytanie zwraca cały wiersz tabeli lub widoku.
REKORD TYPU z drugiej strony jest używany, gdy zapytanie zwraca kolumnę różnych tabel lub widoków.
Np. TYP r_emp to REKORD (sno smp.smpno%type,sname smp sname%type)
e_rec smp%TYP WIERSZA
Kursor c1 wybiera smpno,dept z smp;
e_rec c1 %TYP WIERSZA
3) Wyjaśnij użycie kursora.
Kursor to nazwany prywatny obszar w SQL, z którego można uzyskać dostęp do informacji. Muszą przetwarzać każdy wiersz indywidualnie w przypadku zapytań zwracających wiele wierszy.
4) Pokaż kod kursora dla pętli.
Cursor deklaruje %ROWTYPE jako indeks pętli niejawnie. Następnie otwiera kursor, pobiera wiersze wartości z aktywnego zestawu w polach rekordu i zamyka się, gdy wszystkie rekordy zostaną przetworzone.
Na przykład.
FOR smp_rec IN C1 LOOP totalsal=totalsal+smp_recsal; ENDLOOP;
5) Wyjaśnij zastosowanie wyzwalacza bazy danych.
Jednostka programu PL/SQL powiązana z konkretną tabelą bazy danych nazywana jest wyzwalaczem bazy danych. To jest używane do :
1) Modyfikacje danych audytowych.
2) Rejestruj zdarzenia w przejrzysty sposób.
3) Wdrażanie skomplikowanych reguł biznesowych.
4) Utrzymuj tabele replik
5) Wyprowadź wartości kolumn
6) Wdrożenie złożonych autoryzacji bezpieczeństwa
6) Jakie są dwa rodzaje wyjątków.
Błąd obsługi części bloku PL/SQL nazywa się wyjątkiem. Mają dwa typy: zdefiniowane przez użytkownika i predefiniowane.
7) Pokaż kilka predefiniowanych wyjątków.
DUP_VAL_ON_INDEX
ZERO_DIVIDE
NIE ZNALEZIONO DANYCH
TOO_MANY_ROWS
CURSOR_ALREADY_OPEN
NIEPRAWIDŁOWY NUMER
INVALID_CURSOR
PROGRAM_BŁĄD
TIMEOUT _ON_RESOURCE
BŁĄD PRZECHOWYWANIA
LOGOWANIE ODRZUCONE
WARTOŚĆ_BŁĄD
itd.
8) Wyjaśnij błąd Raise_application_error.
Jest to procedura pakietu DBMS_STANDARD, która umożliwia wysyłanie komunikatów o błędach zdefiniowanych przez użytkownika z wyzwalacza bazy danych lub zapisanego podprogramu.
9) Pokaż jak wywoływane są funkcje i procedury w bloku PL SQL.
Funkcja jest wywoływana jako część wyrażenia.
total:=calculate_sal('b644')
Procedurę nazywa się instrukcją w PL / SQL.
calculate_bonus('b644');
10) Wyjaśnij dwie wirtualne tabele dostępne w momencie wykonania wyzwalacza bazy danych.
Kolumny tabeli są określane jako OLD.nazwa_kolumny i NOWA.nazwa_kolumny.
W przypadku wyzwalaczy związanych z INSERT dostępne są tylko wartości NEW.column_name.
W przypadku wyzwalaczy powiązanych z DELETE dostępne są tylko wartości OLD.column_name.
W przypadku wyzwalaczy związanych z UPDATE dostępne są obie kolumny tabeli.
11) Jakie zasady należy stosować do wartości NULL podczas dokonywania porównań?
1) NULL nigdy nie jest PRAWDA ani FAŁSZ
2) Wartość NULL nie może być równa lub różna od innych wartości
3) Jeśli wartość w wyrażeniu jest równa NULL, to samo wyrażenie jest oceniane jako NULL, z wyjątkiem operatora łączenia (||).
12) Jak jest kompilowany proces PL SQL?
Proces kompilacji obejmuje sprawdzanie składni, procesy wiązania i generowania kodu p.
Sprawdzanie składni sprawdza kody PL SQL pod kątem błędów kompilacji. Po naprawieniu wszystkich błędów do zmiennych przechowujących dane przypisywany jest adres przechowywania. Nazywa się to wiązaniem. P-kod to lista instrukcji dla silnika PL SQL. Kod P jest przechowywany w bazie danych dla nazwanych bloków i używany przy następnym wykonaniu.
13) Rozróżnij błędy składni i błędów wykonania.
Kompilator PL/SQL może łatwo wykryć błąd składniowy. Na przykład niepoprawna pisownia.
Błąd wykonania jest obsługiwany za pomocą sekcji obsługi wyjątków w pliku Blok PL/SQL. Na przykład instrukcja SELECT INTO, która nie zwraca żadnych wierszy.
14) Wyjaśnij zatwierdzanie, wycofywanie i punkt zapisu.
W przypadku instrukcji COMMIT prawdziwe jest następujące stwierdzenie:
- Inni użytkownicy mogą zobaczyć zmiany danych dokonane w wyniku transakcji.
- Blokady nabyte w wyniku transakcji zostają zwolnione.
- Praca wykonana w wyniku transakcji staje się trwała.
Po zakończeniu transakcji wydawane jest polecenie ROLLBACK. Prawdziwa jest następująca zależność.
- Praca wykonana w przejściu zostaje cofnięta, tak jakby nigdy nie została wydana.
- Wszystkie blokady nabyte w wyniku transakcji zostają zwolnione.
Cofa całą pracę wykonaną przez użytkownika w transakcji. Dzięki SAVEPOINT można cofnąć tylko część transakcji.
15) Zdefiniuj niejawne i jawne kursory.
Domyślnie kursor jest ukryty. Użytkownik nie może kontrolować ani przetwarzać informacji zawartych w tym kursorze.
Jeśli zapytanie zwróci wiele wierszy danych, program definiuje jawny kursor. Dzięki temu aplikacja może przetwarzać każdy wiersz sekwencyjnie, gdy kursor go zwróci.
16) Wyjaśnij błąd tabeli mutacji.
Występuje, gdy wyzwalacz próbuje zaktualizować aktualnie używany wiersz. Naprawiono to za pomocą widoków lub tabel tymczasowych, więc baza danych wybiera jeden i aktualizuje drugi.
17) Kiedy wymagane jest oświadczenie deklaracyjne?
Instrukcja DECLARE jest używana przez anonimowe bloki PL SQL, na przykład w przypadku samodzielnych, niemagazynowanych procedur. Jeśli jest używany, musi znajdować się jako pierwszy w osobnym pliku.
18) Ile wyzwalaczy można zastosować do tabeli?
Do jednej tabeli można zastosować maksymalnie 12 wyzwalaczy.
19) Jakie jest znaczenie SQLCODE i SQLERRM?
SQLCODE zwraca wartość numeru błędu dla ostatniego napotkanego błędu, natomiast SQLERRM zwraca komunikat dla ostatniego błędu.
20) Jeśli kursor jest otwarty, jak znaleźć blok PL SQL?
można zastosować zmienną stanu kursora %ISOPEN.
Pytania do rozmowy kwalifikacyjnej PL/SQL dla doświadczonych
21) Pokaż dwa wyjątki kursora PL/SQL.
Kursor_Już_otwarty
Invaid_cursor
22) Jakie operatory obsługują wartość NULL?
NVL konwertuje NULL na inną określoną wartość.
var:=NVL(var2,'Hi');
IS NULL i IS NOT NULL można wykorzystać do sprawdzenia, czy wartość zmiennej wynosi NULL, czy nie.
23) Czy SQL*Plus posiada także silnik PL/SQL?
Nie, SQL*Plus nie ma wbudowanego silnika PL/SQL. W ten sposób cały kod PL/SQL jest wysyłany bezpośrednio do silnika bazy danych. Jest to znacznie bardziej wydajne, ponieważ każde stwierdzenie nie jest usuwane indywidualnie.
24) Jakie pakiety są dostępne dla programistów PL SQL?
Seria pakietów DBMS_, takich jak DBMS_PIPE, DBMS_DDL, DBMS_LOCK, DBMS_ALERT, DBMS_OUTPUT, DBMS_JOB, DBMS_UTILITY, DBMS_SQL, DBMS_TRANSACTION, UTL_FILE.
25) Wyjaśnij 3 podstawowe części wyzwalacza.
- Wywołujące stwierdzenie lub wydarzenie.
- Ograniczenie
- Akcja
26) Czym są funkcje znakowe?
INITCAP, UPPER, SUBSTR, LOWER i LENGTH są funkcjami znakowymi. Funkcje grupowe dają wyniki na podstawie grup wierszy, a nie pojedynczych wierszy. Są to MAX, MIN, AVG, LICZBA i SUMA.
27) Wyjaśnij TYTUŁ i BTITLE.
Polecenia TTITLE i BTITLE sterujące nagłówkami i stopkami raportów.
28) Pokaż atrybuty kursora PL/SQL.
%ISOPEN:
Sprawdza, czy kursor jest otwarty, czy nie
%ROWCOUNT:
Liczba wierszy, które zostały zaktualizowane, usunięte lub pobrane.
%FOUND:
Sprawdza, czy kursor pobrał jakiś wiersz. To prawda, jeśli pobierane są wiersze
%NOT FOUND:
Sprawdza, czy kursor pobrał jakiś wiersz. Jest prawdą, jeśli wiersze nie są pobierane.
29) Co to jest przecięcie?
Przecięcie jest iloczynem dwóch tabel i wyświetla tylko pasujące wiersze.
30) Czym są sekwencje?
Sekwencje służą do generowania numerów sekwencji bez narzutu blokowania. Ich wadą jest to, że numer sekwencji jest tracony, jeśli transakcja jest cofana.
31) Jak odniósłbyś się do wartości kolumn PRZED i PO wstawieniu i usunięciu wyzwalaczy?
Używając słowa kluczowego „new.column name”, wyzwalacze mogą odwoływać się do wartości kolumn według nowej kolekcji. Używając słowa kluczowego „stara nazwa kolumny”, mogą odwoływać się do wartości kolumn według starej kolekcji.
32) Jakie jest zastosowanie słów kluczowych SYSDATE i USER?
SYSDATE odnosi się do bieżącej daty systemowej serwera. To pseudokolumna. USER jest również pseudokolumną, ale odnosi się do bieżącego użytkownika zalogowanego do sesji. Służą do monitorowania zmian zachodzących w tabeli.
33) W jaki sposób ROWID pomaga w szybszym uruchomieniu zapytania?
ROWID to adres logiczny wiersza, a nie kolumna fizyczna. Składa się z numeru bloku danych, numeru pliku i numeru wiersza w bloku danych. W ten sposób czas operacji we/wy podczas pobierania wiersza jest minimalizowany, co skutkuje szybszym wykonaniem zapytania.
34) Do czego służą łącza do baz danych?
Łącza do baz danych tworzone są w celu zapewnienia komunikacji pomiędzy różnymi bazami danych lub różnymi środowiskami, np. testowymi, programistycznymi i produkcyjnymi. Łącza do baz danych są przeznaczone tylko do odczytu i umożliwiają dostęp również do innych informacji.
35) Do czego służy pobranie kursora?
Pobranie kursora powoduje odczyt zestawu wyników wiersz po wierszu.
36) Co powoduje zamknięcie kursora?
Zamknięcie kursora czyści prywatny obszar SQL, a także zwalnia przydział pamięci
37) Wyjaśnij zastosowanie pliku kontrolnego.
Jest to plik binarny. Rejestruje strukturę bazy danych. Zawiera lokalizacje kilku plików dziennika, nazwy i znaczniki czasu. Można je przechowywać w różnych lokalizacjach, aby ułatwić odzyskanie informacji w przypadku uszkodzenia jednego pliku.
38) Wyjaśnij spójność
Spójność pokazuje, że dane nie będą odzwierciedlane innym użytkownikom, dopóki dane nie zostaną zatwierdzone, dzięki czemu spójność zostanie zachowana.
39) Różnią się blokami anonimowymi i podprogramami.
Bloki anonimowe to nienazwane bloki, które nie są nigdzie przechowywane, podczas gdy podprogramy są kompilowane i przechowywane w bazie danych. Są one kompilowane w czasie wykonywania.
40) Różnica pomiędzy DECODE i CASE.
Instrukcje DECODE i CASE są bardzo podobne, ale CASE jest rozszerzoną wersją DECODE. DECODE nie pozwala na podejmowanie decyzji w jego miejsce.
wybierz decode(totalsal=12000,'high',10000,'medium') jako decode_tesr z smp, gdzie smpno in (10,12,14,16);
Ta instrukcja zwraca błąd.
CASE jest używany bezpośrednio w PL SQL, natomiast DECODE jest używany w PL SQL tylko poprzez SQL.
41) Wyjaśnij transakcję autonomiczną.
Transakcja autonomiczna jest transakcją niezależną od transakcji głównej lub nadrzędnej. Nie jest zagnieżdżona, jeśli jest rozpoczynana przez inną transakcję.
Istnieje kilka sytuacji, w których można używać transakcji autonomicznych, takich jak rejestrowanie zdarzeń i inspekcja.
42) Rozróżnij SGA i PGA.
SGA oznacza globalny obszar systemu, natomiast PGA oznacza globalny obszar programu lub procesu. PGA ma przydzielone tylko 10% rozmiaru RAM, ale SGA ma przydzielone 40% rozmiaru RAM.
43) Jaka jest lokalizacja Pre_definiowanych_funkcji.
Są one przechowywane w standardowym pakiecie o nazwie „Funkcje, Procedury i Pakiety”
44) Wyjaśnij polimorfizm w PL SQL.
Polimorfizm jest cechą OOP. Jest to możliwość stworzenia zmiennej, obiektu lub funkcji o wielu formach. PL/SQL obsługuje polimorfizm w postaci przeciążania jednostek programu wewnątrz funkcji składowej lub pakietu. Podczas przeciążania należy unikać jednoznacznej logiki.
45) Jakie są zastosowania MERGE?
MERGE służy do łączenia wielu instrukcji DML w jedną.
Składnia: merge w nazwę tabeli
używając (zapytanie)
włączone (warunek dołączenia)
kiedy nie jest to dopasowane
Polecenie [wstaw/aktualizuj/usuń].
kiedy to było dopasowane
Polecenie [wstaw/aktualizuj/usuń].
Pytania do rozmowy kwalifikacyjnej PL/SQL dla osób z doświadczeniem powyżej 5 lat
46) Czy w rozproszonym systemie baz danych można wykonywać 2 zapytania jednocześnie?
Tak, mogą być wykonywane jednocześnie. Jedno zapytanie jest zawsze niezależne od drugiego zapytania w rozproszonym systemie baz danych opartym na zatwierdzaniu 2-fazowym.
47) Wyjaśnij błąd Raise_application_error.
Jest to procedura pakietu DBMS_STANDARD, która umożliwia wydawanie komunikatów o błędach zdefiniowanych przez użytkownika z wyzwalacza bazy danych lub podprogramu zapisanego w pamięci.
48) Do czego służy parametr out, mimo że instrukcja return może być również używana w pl/sql?
Parametry Out dopuszczają więcej niż jedną wartość w programie wywołującym. Parametr Out nie jest zalecany w funkcjach. Jeśli wymaganych jest wiele wartości, zamiast funkcji można zastosować procedury. Zatem procedury te służą do wykonywania parametrów Out.
49) Jak przekonwertowałbyś datę na format daty juliańskiej?
Możemy użyć ciągu w formacie J:
SQL > wybierz to_char(to_date('29-mar-2013′,'dd-mon-rrrr'),'J') jako julian z dual;
JULIAN
50) Wyjaśnij SPOOL
Polecenie buforowania może wydrukować dane wyjściowe instrukcji sql w pliku.
spool/tmp/sql_outtxt
wybierz smp_name, smp_id z smp gdzie dept='konta';
wycofać się;
51) Wspomnij, z czego składa się pakiet PL/SQL?
Pakiet PL/SQL składa się z
- Tabela PL/SQL i instrukcje TYPE rekordu
- Procedury i funkcje
- kursory
- Zmienne (tabele, skalary, rekordy itp.) i stałe
- Nazwy wyjątków i pragmy do powiązania numeru błędu z wyjątkiem
- kursory
52) Wspomnij, jakie są zalety pakietów PL/SQL?
Zapewnia kilka korzyści, takich jak
- Wymuszone ukrywanie informacji: Daje swobodę wyboru, czy dane mają być prywatne, czy publiczne
- Projekt od góry do dołu: Możesz zaprojektować interfejs do kodu ukrytego w pakiecie, zanim faktycznie zaimplementujesz same moduły
- Trwałość obiektu: Obiekty zadeklarowane w specyfikacji pakietu zachowują się jak dane globalne dla wszystkich obiektów PL/SQL w aplikacji. Możesz zmodyfikować pakiet w jednym module, a następnie odwołać się do tych zmian w innym module
- Projektowanie obiektowe: Pakiet daje deweloperom dużą kontrolę nad tym, w jaki sposób można używać modułów i struktur danych wewnątrz pakietu
- Gwarancja integralności transakcji: Zapewnia poziom integralności transakcji
- Poprawa wydajności: Kurs RDBMS automatycznie śledzi ważność wszystkich obiektów programu przechowywanych w bazie danych i zwiększa wydajność pakietów.
53) Wspomnij, jakie są różne metody śledzenia kodu PL/SQL?
Śledzenie kodu jest kluczową techniką pomiaru wydajności kodu w czasie jego wykonywania. Różne metody śledzenia obejmują
- DBMS_APPLICATION_INFO
- DBMS_TRACE
- DBMS_SESSION i DBMS_MONITOR
- narzędzia trcsess i tkproof
54) Wymień, co robi profiler hierarchiczny?
Profiler hierarchiczny może profilować wywołania wykonane w PL/SQL, oprócz wypełniania luki między lukami a oczekiwaniami śledzenia wydajności. Efektywność profilera hierarchicznego obejmuje:
- Odrębne raportowanie dla SQL i zużycie czasu PL/SQL
- Raportuje liczbę odrębnych wywołań podprogramów wykonanych w PL/SQL i czas spędzony przy każdym wywołaniu podprogramu
- Wiele interaktywnych raportów analitycznych w formacie HTML za pomocą narzędzia wiersza poleceń
- Bardziej skuteczny niż konwencjonalny profiler i inne narzędzia do śledzenia
55) Wspomnij, co umożliwia PLV msg?
Dzięki komunikatowi PLV msg możesz to zrobić
- Przypisz indywidualną wiadomość tekstową do określonego wiersza w tabeli PL/SQL
- Pobiera tekst wiadomości według numeru
- Automatycznie zastępuje standardowe wiadomości Twoimi własnymi Oracle komunikaty o błędach z przełącznikiem ograniczającym
- Bezpośrednie ładowanie numerów wiadomości i tekstu z tabeli bazy danych PLV msg PL/SQL
56) Wspomnij, co oferuje pakiet PLV (PL/Vision)?
- Wartość podstawienia null
- Zestaw procedur asercji
- Różne narzędzia
- Zestaw stałych używanych w całej wizji PL
- Predefiniowane typy danych
57) Wspomnij, jakie jest zastosowanie PLVprs i PLVprsps?
- PLVprs: Jest to rozszerzenie analizowania ciągów znaków dla PL/SQL i najniższy poziom funkcjonalności analizowania ciągów
- PLVprsps: Jest to pakiet najwyższego poziomu do parsowania kodu źródłowego PL/SQL na oddzielne atomy. Polega na innych pakietach parsujących, aby wykonać pracę.
58) Wyjaśnij, w jaki sposób można wcześniej skopiować plik do zawartości pliku i plik do tabeli PL/SQL?
Za pomocą jednego wywołania programu – „procedura fcopy”, możesz skopiować całą zawartość jednego pliku do innego pliku. Aby skopiować zawartość pliku bezpośrednio do tabeli PL/SQL, możesz użyć programu „plik2pstab”.
59) Wyjaśnij z wyprzedzeniem, w jaki sposób odbywa się obsługa wyjątków w PL/SQL?
W razie zamówieenia projektu obsługa wyjątków PL/SQL udostępnia efektywną wtyczkę PLVexc. PLVexc obsługuje cztery różne akcje obsługi wyjątków.
- Kontynuuj przetwarzanie
- Nagraj i kontynuuj
- Zatrzymaj przetwarzanie
- Nagraj, a następnie zatrzymaj przetwarzanie
W przypadku powtarzających się wyjątków można użyć instrukcji RAISE.
60) Wspomnij, z jakim problemem można się spotkać podczas zapisywania informacji z dziennika do tabeli bazy danych w języku PL/SQL?
Podczas zapisywania informacji dziennika do tabeli bazy danych, problemem, z którym się mierzysz, jest to, że informacje są dostępne tylko wtedy, gdy nowe wiersze zostaną zatwierdzone w bazie danych. Może to być problem, ponieważ PLVlog jest zwykle wdrażany w celu śledzenia błędów, a w wielu takich przypadkach bieżąca transakcja nie powiodłaby się lub wymagałaby wycofania.
61) Wspomnij, jaka funkcja jest używana do przesyłania dziennika tabeli PL/SQL do tabeli bazy danych?
Aby przesłać log tabeli PL/SQL, użyj funkcji tabeli dziennika bazy danych „PROCEDURA ps2db” Jest używane.
62) Kiedy musisz użyć domyślnego punktu zapisu „przywróć” PLVlog?
Domyślny punkt zapisu „wycofywania do” PLVlog jest używany, gdy użytkownicy włączyli funkcję wycofywania zmian i nie podali alternatywnego punktu zapisu w wywołaniu put_line. Domyślny punkt zapisu jest inicjowany stałą c none.
63) Dlaczego PLVtab jest uważany za najłatwiejszy sposób dostępu do tabeli PL/SQL?
Tablica PL/SQL jest najbliższa tablicom w PL/SQL i aby uzyskać dostęp do tej tabeli, należy najpierw zadeklarować typ tabeli, a następnie zadeklarować samą tabelę PL/SQL. Ale używając PLVtab, możesz uniknąć definiowania własnego typu tabeli PL/SQL i ułatwić dostęp do tabeli danych PL/SQL.
64) Wspomnij, co umożliwia PLVtab, pokazując zawartość tabel PL/SQL?
PLVtab umożliwia wykonywanie następujących czynności podczas wyświetlania zawartości tabel PL/SQL
- Wyświetl lub pomiń nagłówek tabeli
- Wyświetl lub ukryj numery wierszy dla wartości tabeli
- Pokaż przedrostek przed każdym wierszem tabeli
65) Wyjaśnij, jak zapisać wiadomość lub umieścić ją w tabeli?
Aby zapisać wiadomość w tabeli, możesz to zrobić na dwa sposoby
- Załaduj pojedyncze wiadomości z połączeniami do
add_text
procedura - Załaduj zestawy komunikatów z tabeli bazy danych za pomocą metody
load_from_dbms
procedura
66) Wspomnij, jakie jest zastosowanie funkcji „procedura modułu” w PL/SQL?
„Procedura modułowa” umożliwia konwersję wszystkich linii kodu w określonej jednostce programu za pomocą jednego wywołania procedury. Istnieją trzy argumenty dla modułów
- moduł_w
- kor_in
- Ostatni_moduł_w
67) Wspomnij, co robią PLVcmt i PLVrb w PL/SQL?
PL/Vision oferuje dwa pakiety ułatwiające zarządzanie przetwarzaniem transakcji w aplikacji PL/SQL. Jest to PLVcmt i PLVrb.
- PLVcmt: Pakiet PLVcmt obejmuje logikę i złożoność obsługi przetwarzania zatwierdzania
- PLVrb: Zapewnia programistyczny interfejs do wycofywania działań w PL/SQL
Te pytania podczas rozmowy kwalifikacyjnej pomogą również w Twoim życiu (ustach)