1/65
Looks like no tags are added yet.
Name | Mastery | Learn | Test | Matching | Spaced | Call with Kai | Chat |
|---|
No analytics yet
Send a link to your students to track their progress
1. Anonimowy blok PL/SQL to program:
a) nazwany, składowany w bazie danych
b) nienazwany, który nie może być składowany w bazie danych
c) nazwany, ale nieskładowany w bazie
d) wykonywany wyłącznie po stronie klienta SQL*Plus
b) nienazwany, który nie może być składowany w bazie danych
2. Który operator służy do przypisania wartości zmiennej w PL/SQL:
a) =
b) ==
c) :=
d) =>
c) :=
3. Co zostanie wydrukowane?
DECLARE
x number := 5;
BEGIN
dbms_output.put_line(x * 2 + 1);
END;a) 11
b) 12
c) 10
d) nic, błąd wykonania
a) 11
4. Uzupełnij XXX, aby deklaracja była poprawna: X VARCHAR2 XXX := 'ABC'; (maks. 200 znaków)
a) OF 200
b) (200)
c) [200]
d) 200
b) (200)
5. Co zostanie wydrukowane?
DECLARE
x varchar2(10) := '321';
y varchar2(10);
BEGIN
y := '123';
dbms_output.put_line(x||y);
END;a) 444
b) 321123
c) błąd wykonania
d) 123321
b) 321123
6. Poprawna deklaracja zmiennej V1 to:
a) V1 VARCHAR2(20) := "abc";
b) V1 VARCHAR(20) := 'abc';
c) V1 VARCHAR3(20);
d) V1 VARCHAR2 20 := 'abc';
b) V1 VARCHAR(20) := 'abc';
Procedury i funkcje
9. Które zdanie o procedurach jest prawdziwe:
a) procedura zawsze musi zwracać pojedynczy wynik
b) od procedury nie wymaga się zwrócenia jakiegokolwiek wyniku
c) procedura nie może być składowana w bazie danych
d) procedura nie może przyjmować parametrów
b) od procedury nie wymaga się zwrócenia jakiegokolwiek wyniku
10. Parametr typu OUT wewnątrz procedury zachowuje się jak:
a) stała
b) zmienna niezainicjalizowana
c) zmienna zainicjalizowana
d) kursor
b) zmienna niezainicjalizowana
11. Parametr typu IN OUT wewnątrz procedury zachowuje się jak:
a) stała
b) zmienna niezainicjalizowana
c) zmienna zainicjalizowana
d) wyjątek
c) zmienna zainicjalizowana
12. Wartość domyślna parametru jest wykorzystywana, gdy:
a) parametr ma typ NUMBER
b) przy wywołaniu parametr zostanie pominięty
c) parametr jest typu OUT
d) procedura zwraca NULL
b) przy wywołaniu parametr zostanie pominięty
13. Przy deklaracji parametrów procedur i funkcji:
a) podajemy pełny zakres, np. NUMBER(10)
b) NIE podajemy zakresów, np. NUMBER
c) musimy podać wartość domyślną
d) zakres jest obowiązkowy tylko dla VARCHAR2
b) NIE podajemy zakresów, np. NUMBER
14. Funkcja PL/SQL:
a) nie zwraca wartości
b) zawsze zwraca precyzyjnie zdefiniowany, pojedynczy wynik
c) może być tworzona tylko w pakietach
d) nie może być wołana w poleceniu SELECT
b) zawsze zwraca precyzyjnie zdefiniowany, pojedynczy wynik
15. W sekcji wykonywalnej funkcji musi znajdować się przynajmniej jedna instrukcja:
a) COMMIT
b) EXIT
c) RETURN
d) RAISE
c) RETURN
16. Pętla podstawowa LOOP ... END LOOP bez instrukcji wyjścia jest:
a) wykonywana raz
b) nieskończona
c) niepoprawna składniowo
d) pomijana przez kompilator
b) nieskończona
17. Która instrukcja pozwala opuścić pętlę po warunku:
a) BREAK WHEN
b) EXIT WHEN warunek;
c) STOP WHEN
d) RETURN WHEN
b) EXIT WHEN warunek;
18. W pętli FOR i IN 1..N LOOP:
a) konieczna jest inkrementacja indeksu
b) konieczna jest wcześniejsza deklaracja zmiennej i
c) nie jest konieczna deklaracja ani inkrementacja zmiennej indeksowej
d) zmienna i jest zawsze typu VARCHAR2
c) nie jest konieczna deklaracja ani inkrementacja zmiennej indeksowej
19. Słowo kluczowe REVERSE w pętli FOR powoduje, że zmienna indeksowa:
a) jest zwiększana o 2
b) jest zmniejszana o 1 przy każdym obejściu
c) jest losowa
d) pozostaje stała
b) jest zmniejszana o 1 przy każdym obejściu
20. Pętla WHILE sprawdza warunek poprawności:
a) na końcu pętli
b) na początku pętli
c) w połowie pętli
d) nigdy
b) na początku pętli
21. Poprawna instrukcja odczytu średniej pensji do zmiennej v_avg_sal:
a) select into v_avg_sal avg(salary) from employees
b) select avg(salary) from employees into v_avg_sal
c) select avg(salary) into v_avg_sal from employees
d) select avg(salary) from employees set v_avg_sal
c) select avg(salary) into v_avg_sal from employees
22. Polecenie SELECT INTO musi zwracać:
a) co najmniej 1 wiersz
b) dokładnie 1 wiersz
c) maksymalnie 2 wiersze
d) dowolną liczbę wierszy
b) dokładnie 1 wiersz
23. Gdy SELECT INTO nie zwróci żadnego wiersza, wystąpi wyjątek:
a) TOO_MANY_ROWS
b) NO_DATA_FOUND
c) ZERO_DIVIDE
d) INVALID_NUMBER
b) NO_DATA_FOUND
24. Gdy SELECT INTO zwróci więcej niż jeden wiersz, wystąpi wyjątek:
a) NO_DATA_FOUND
b) TOO_MANY_ROWS
c) VALUE_ERROR
d) DUP_VAL_ON_INDEX
b) TOO_MANY_ROWS
25. W programach PL/SQL bez żadnych zmian składniowych można umieszczać polecenia:
a) INSERT, UPDATE, DELETE, COMMIT, ROLLBACK
b) COMMIT, ROLLBACK, SELECT, GRANT, REVOKE
c) INSERT, UPDATE, DELETE, CREATE TABLE
d) SELECT, CREATE, DROP, ALTER
a) INSERT, UPDATE, DELETE, COMMIT, ROLLBACK
26. Których poleceń NIE można umieszczać bezpośrednio w PL/SQL:
a) INSERT, UPDATE
b) COMMIT, ROLLBACK
c) CREATE, ALTER, DROP, GRANT, REVOKE
d) SELECT INTO
c) CREATE, ALTER, DROP, GRANT, REVOKE
28. Poprawna deklaracja typu tablicowego dla liczb NUMBER(10):
a) type t_table is table of number(10) index by binary_integer
b) type t_table table_number(10);
c) t_table is type of table with number(10)
d) type t_table is array of number(10);
a) type t_table is table of number(10) index by binary_integer
29. Poprawna deklaracja typu nested table z rekordami o strukturze tabeli DEPARTMENTS:
a) TYPE T_DEPTS IS TABLE OF DEPARTMENTS%TYPE
b) TYPE T_DEPTS IS TABLE OF DEPARTMENTS%ROWTYPE
c) T_DEPTS IS TABLE OF DEPARTMENTS%ROWTYPE
d) TYPE T_DEPTS TABLE DEPARTMENTS%ROWTYPE
b) TYPE T_DEPTS IS TABLE OF DEPARTMENTS%ROWTYPE
27. Aby wykonać polecenie DDL (np. DROP TABLE) wewnątrz PL/SQL, należy użyć:
a) execute 'DROP TABLE JOB_GRADES'
b) execute immediate 'DROP TABLE JOB_GRADES'
c) execute 'DROP TABLE JOB_GRADES' immediately
d) run immediate 'DROP TABLE JOB_GRADES'
b) execute immediate 'DROP TABLE JOB_GRADES'
30. Atrybut zwracający łączną liczbę elementów tablicy PL/SQL to:
a) .length
b) .size
c) .count
d) .total
c) .count
31. Atrybut sprawdzający, czy i-ty element tablicy istnieje:
a) tablica.has(i)
b) tablica.exists(i)
c) tablica.isset(i)
d) tablica.check(i)
b) tablica.exists(i)
32. Poprawna deklaracja rekordu o strukturze tabeli DEPARTMENTS:
a) v_dept_record DEPARTMENTS%STRUCTURE;
b) v_dep_record ROW%DEPARTMENTS;
c) v_dept_record DEPARTMENTS%ROWTYPE;
d) v_dept_record RECORD OF DEPARTMENTS;
c) v_dept_record DEPARTMENTS%ROWTYPE;
33. Poprawna deklaracja zmiennej Z o typie kolumny SALARY z tabeli EMPLOYEES:
a) Z TYPE OF EMPLOYEES.SALARY%TYPE;
b) Z TYPE OF EMPLOYEES.SALARY;
c) Z EMPLOYEES.SALARY%TYPE;
d) Z EMPLOYEES.SALARY TYPE;
c) Z EMPLOYEES.SALARY%TYPE;
34. Główną zaletą stosowania %TYPE zamiast typu wprost jest to, że:
a) zmienna zajmuje mniej pamięci
b) zmienna dziedziczy typ i precyzję kolumny, więc zmiana definicji kolumny nie psuje kodu
c) kod wykonuje się szybciej
d) można pominąć sekcję DECLARE
b) zmienna dziedziczy typ i precyzję kolumny, więc zmiana definicji kolumny nie psuje kodu
35. Identyfikator kursora niejawnego to:
a) SQL
b) SQL_CURSOR
c) CURSOR%SQL
d) SQL%NOTFOUND
a) SQL
36. Który atrybut kursora pozwala sprawdzić liczbę przetworzonych wierszy:
a) %count
b) %rownumber
c) %rowcount
d) %rows
c) %rowcount
38. Poprawna deklaracja kursora C_EMP:
a) c_emp is select * from employees;
b) cursor c_emp is select * from employees;
c) select * from employees is cursor c_emp;
d) cursor c_emp as (select * from employees);
b) cursor c_emp is select * from employees;
39. Które zdanie dot. kursorów jest prawdziwe:
a) kursor może być związany wyłącznie z poleceniem INSERT
b) kursor może być związany jedynie z poleceniem SELECT
c) kursor może być związany jedynie z tabelą
d) kursor nie może mieć parametrów
b) kursor może być związany jedynie z poleceniem SELECT
40. Aby wyjść z pętli po pobraniu wszystkich wierszy kursora jawnego, stosujemy:
a) EXIT WHEN c_emp%FOUND;
b) EXIT WHEN c_emp%NOTFOUND;
c) EXIT WHEN c_emp%ROWCOUNT;
d) EXIT WHEN c_emp%ISOPEN;
b) EXIT WHEN c_emp%NOTFOUND;
41. Pętle kursorowe (FOR r IN c_emp LOOP):
a) wymagają ręcznego otwarcia i zamknięcia kursora
b) nie wymagają ręcznego otwierania, pobierania i zamykania — robione jest to automatycznie
c) nie pozwalają na użycie kursorów sparametryzowanych
d) wymagają ręcznego FETCH
b) nie wymagają ręcznego otwierania, pobierania i zamykania — robione jest to automatycznie
42. Klauzula WHERE CURRENT OF nazwa_kursora pozwala na:
a) zablokowanie wszystkich wierszy tabeli
b) modyfikację lub usunięcie wiersza aktualnie wskazywanego przez kursor
c) otwarcie kursora
d) deklarację kursora sparametryzowanego
b) modyfikację lub usunięcie wiersza aktualnie wskazywanego przez kursor
43. Klauzula FOR UPDATE w definicji kursora:
a) sortuje wiersze
b) nakłada blokadę wyłączną na przetwarzane wiersze
c) automatycznie zatwierdza transakcję
d) zamyka kursor
b) nakłada blokadę wyłączną na przetwarzane wiersze
44. Gdy nie stosujemy pętli kursorowej, kursor jawny:
a) jest automatycznie otwierany i zamykany
b) nie jest automatycznie otwierany ani zamykany
c) jest automatycznie zamykany, ale nie otwierany
d) nie wymaga instrukcji FETCH
b) nie jest automatycznie otwierany ani zamykany
45. Wskaż poprawne zdanie dot. wyjątków w PL/SQL:
a) nie istnieją wyjątki w PL/SQL
b) rozróżniamy dwa typy: predefiniowany i zdefiniowany przez programistę
c) rozróżniamy trzy typy: predefiniowany, niepredefiniowany i zdefiniowany przez programistę
d) wyjątki obsługuje się w sekcji EXCEPTION_HANDLER
c) rozróżniamy trzy typy: predefiniowany, niepredefiniowany i zdefiniowany przez programistę
46. Wyjątek predefiniowany to taki, który:
a) ma swój predefiniowany identyfikator i jest związany z błędem Oracle
b) ma identyfikator, ale nie jest związany z błędem Oracle
c) jest dostępny jedynie w pakietach
d) zawsze musi być zadeklarowany przez programistę
a) ma swój predefiniowany identyfikator i jest związany z błędem Oracle
47. Aby związać wyjątek z numerem błędu Oracle, używamy dyrektywy:
a) PRAGMA INIT_EXCEPTION
b) PRAGMA EXCEPTION_INIT
c) PRAGMA_EXCEPTION
d) PRAGMA BIND_EXCEPTION
b) PRAGMA EXCEPTION_INIT
48. Aby zgłosić wyjątek zdefiniowany przez programistę, używamy instrukcji:
a) THROW
b) RAISE
c) SIGNAL
d) EXIT
b) RAISE
49. Procedura RAISE_APPLICATION_ERROR przyjmuje numery błędów z zakresu:
a) od -1 do -999
b) od -20000 do -99999 (zarezerwowane)
c) od 0 do 20000
d) dowolne dodatnie
b) od -20000 do -99999 (zarezerwowane)
50. Funkcja zwracająca numer ostatniego błędu to:
a) SQLERRM
b) SQLCODE
c) SQLSTATE
d) SQLNUM
b) SQLCODE
51. Sekcja obsługi wyjątków rozpoczyna się od słowa kluczowego:
a) CATCH
b) HANDLER
c) EXCEPTION
d) WHEN
c) EXCEPTION
52. Klauzula WHEN OTHERS THEN w sekcji obsługi wyjątków:
a) obsługuje konkretny wyjątek predefiniowany
b) obsługuje wszystkie pozostałe (nieobsłużone wcześniej) wyjątki
c) jest obowiązkowa w każdym bloku
d) zawsze musi być na początku sekcji
b) obsługuje wszystkie pozostałe (nieobsłużone wcześniej) wyjątki
53. Wskaż prawdziwe zdanie dot. pakietów PL/SQL:
a) pakiet zawsze musi składać się ze specyfikacji i ciała
b) ciało pakietu może istnieć i być poprawne bez specyfikacji
c) specyfikacja pakietu może w niektórych przypadkach istnieć i być poprawna bez ciała
d) PL/SQL nie pozwala na tworzenie pakietów
c) specyfikacja pakietu może w niektórych przypadkach istnieć i być poprawna bez ciała
54. Polecenie tworzące specyfikację pakietu PKG_EMP_OPERATIONS:
a) CREATE OR REPLACE PACKAGE SPECIFICATION PKG_EMP_OPERATIONS IS PROCEDURE DELETE_EMP(P_EMPNO NUMBER); END;
b) CREATE OR REPLACE PACKAGE PKG_EMP_OPERATIONS IS PROCEDURE DELETE_EMP(P_EMPNO NUMBER); END;
c) CREATE OR REPLACE PACKAGE PKG_EMP_OPERATIONS BEGIN PROCEDURE DELETE_EMP(P_EMPNO NUMBER); END;
d) CREATE OR REPLACE PACKAGE SPEC PKG_EMP_OPERATIONS IS PROCEDURE DELETE_EMP(P_EMPNO NUMBER); END;
b) CREATE OR REPLACE PACKAGE PKG_EMP_OPERATIONS IS PROCEDURE DELETE_EMP(P_EMPNO NUMBER); END;
55. Przeciążanie (overloading) procedur i funkcji jest mechanizmem dostępnym jedynie w:
a) wyzwalaczach
b) funkcjach PL/SQL
c) pakietach
d) procedurach
c) pakietach
56. Co umożliwia przeciążanie:
a) definiowanie kilku podprogramów o tej samej nazwie i różnej liście parametrów
b) definiowanie podprogramów o różnej nazwie i tej samej liście parametrów
c) automatyczne zatwierdzanie transakcji
d) wykonywanie DDL w PL/SQL
a) definiowanie kilku podprogramów o tej samej nazwie i różnej liście parametrów
57. Do składowych pakietu odwołujemy się notacją:
a) pakiet->składowa
b) pakiet.składowa
c) pakiet::składowa
d) pakiet#składowa
b) pakiet.składowa
58. Specyfikacja pakietu zawiera:
a) definicje (ciała) procedur i funkcji
b) deklaracje elementów dostępnych na zewnątrz (publicznych)
c) wyłącznie zmienne prywatne
d) sekcję BEGIN ... END
b) deklaracje elementów dostępnych na zewnątrz (publicznych)
59. Zdarzenia, z którymi możemy wiązać wyzwalacze DML to:
a) SELECT, INSERT, UPDATE
b) INSERT, UPDATE, DELETE
c) COMMIT, ROLLBACK, SAVEPOINT
d) CREATE, ALTER, DROP
b) INSERT, UPDATE, DELETE
61. Kwalifikatory :NEW i :OLD mogą być stosowane:
a) w każdym wyzwalaczu
b) tylko w wyzwalaczach wierszowych (FOR EACH ROW)
c) tylko w wyzwalaczach poleceniowych
d) tylko w wyzwalaczach INSTEAD OF
b) tylko w wyzwalaczach wierszowych (FOR EACH ROW)
62. W wyzwalaczu odpalonym przez polecenie INSERT, kwalifikator :OLD.kolumna jest:
a) równy nowej wartości
b) zawsze NULL
c) równy wartości domyślnej kolumny
d) niedostępny składniowo
b) zawsze NULL
63. Atrybuty INSERTING, UPDATING, DELETING pozwalają:
a) zatwierdzić transakcję
b) rozpoznać, która operacja DML spowodowała odpalenie wyzwalacza
c) zablokować wiersze
d) usunąć wyzwalacz
b) rozpoznać, która operacja DML spowodowała odpalenie wyzwalacza
64. Wyzwalacze INSTEAD OF są pomocne, gdy chcemy:
a) wykonać DDL w wyzwalaczu
b) zaimplementować operacje DML na perspektywach (widokach)
c) zablokować wszystkie operacje na tabeli
d) automatycznie zatwierdzać transakcję
b) zaimplementować operacje DML na perspektywach (widokach)
65. Procedura wbudowana umożliwiająca generowanie wyjątków powiązanych z numerami błędów w wyzwalaczu to:
a) RAISE_ERROR
b) RAISE_APPLICATION_ERROR
c) SIGNAL_ERROR
d) THROW_ERROR
b) RAISE_APPLICATION_ERROR
66. Aby sprawdzić, jakie wyzwalacze istnieją w schemacie, odpytujemy widok:
a) user_tables
b) user_triggers
c) user_views
d) dict_triggers
b) user_triggers
72. Program PL/SQL w kontekście transakcji:
a) automatycznie zatwierdza transakcję po wykonaniu procedury
b) nie jest jednostką przetwarzania transakcyjnego — aby zatwierdzić, trzeba użyć COMMIT
c) nie pozwala na sterowanie transakcjami
d) automatycznie wycofuje każdą zmianę
b) nie jest jednostką przetwarzania transakcyjnego — aby zatwierdzić, trzeba użyć COMMIT
73. Co wydrukuje program?
DECLARE
x number;
y number;
z number;
BEGIN
x := 10;
y := x*2;
z := x/2+2;
dbms_output.put_line(z*2);
END;a) -4
b) -16
c) 14
d) 8
c) 14
74. Co wydrukuje program?
DECLARE
x varchar2(10) := '444';
y varchar2(10);
BEGIN
y := '333';
dbms_output.put_line(x||y);
END;a) 777
b) 444333
c) błąd wykonania
d) 333444
b) 444333
75. Ile wynosi wynik funkcji SILNIA(4) liczącej iloczyn 1..N:
a) 16
b) 24
c) 10
d) 120
b) 24