65 самых популярных вопросов для собеседования по PL / SQL Ответы

Anonim

Скачать PDF

1) Что такое PL SQL?

PL SQL - это процедурный язык, в котором есть интерактивный SQL, а также конструкции процедурного языка программирования, такие как условное ветвление и итерация.

2) Различия между% ROWTYPE и TYPE RECORD.

% ROWTYPE используется, когда запрос возвращает всю строку таблицы или представления.

TYPE RECORD, с другой стороны, используется, когда запрос возвращает столбец с разными таблицами или представлениями.

Например. TYPE r_emp - это ЗАПИСЬ (sno smp.smpno% type, sname smp sname% type)

e_rec smp% ROWTYPE

Курсор c1 - выбор smpno, dept from smp;

e_rec c1% ROWTYPE

3) Объясните использование курсора.

Курсор - это именованная частная область в SQL, из которой можно получить доступ к информации. Они должны обрабатывать каждую строку отдельно для запросов, возвращающих несколько строк.

4) Показать код курсора для цикла.

Курсор неявно объявляет% ROWTYPE как индекс цикла. Затем он открывает курсор, получает строки значений из активного набора в полях записи и закрывается, когда все записи будут обработаны.

Например. ДЛЯ smp_rec В ЦИКЛЕ C1

total = totalsal + smp_recsal;

ENDLOOP;

5) Объясните использование триггера базы данных.

Программный модуль PL / SQL, связанный с конкретной таблицей базы данных, называется триггером базы данных. Он используется для:

1) Изменение данных аудита.

2) Прозрачный журнал событий.

3) Обеспечьте соблюдение сложных бизнес-правил.

4) Ведение таблиц реплик

5) Получите значения столбца

6) Реализуйте комплексные авторизации безопасности

6) Каковы два типа исключений.

Часть блока PL / SQL, обрабатывающая ошибки, называется Exception. Они бывают двух типов: user_defined и предопределенные.

7) Показать некоторые предопределенные исключения.

DUP_VAL_ON_INDEX

ZERO_DIVIDE

ДАННЫЕ НЕ НАЙДЕНЫ

TOO_MANY_ROWS

CURSOR_ALREADY_OPEN

НЕПРАВИЛЬНЫЙ НОМЕР

INVALID_CURSOR

PROGRAM_ERROR

TIMEOUT _ON_RESOURCE

STORAGE_ERROR

LOGON_DENIED

VALUE_ERROR

и Т. Д.

8) Объясните Raise_application_error.

Это процедура пакета DBMS_STANDARD, которая позволяет выдавать определяемые пользователем сообщения об ошибках из триггера базы данных или сохраненной подпрограммы.

9) Покажите, как функции и процедуры вызываются в блоке PL SQL.

Функция вызывается как часть выражения.

итого: = calculate_sal ('b644')

Процедура вызывается как оператор в PL / SQL.

Calcul_bonus ('b644');

10) Объясните две виртуальные таблицы, доступные во время выполнения триггера базы данных.

Столбцы таблицы обозначаются как THEN.column_name и NOW.column_name.

Для триггеров, связанных с INSERT, доступны только значения NOW.column_name.

Для триггеров, связанных с УДАЛЕНИЕМ, доступны только значения THEN.column_name.

Для триггеров, связанных с UPDATE, доступны оба столбца таблицы.

11) Какие правила следует применять к значениям NULL при сравнении?

1) NULL никогда не бывает ИСТИНА или ЛОЖЬ

2) NULL не может быть равным или неравным другим значениям

3) Если значение в выражении равно NULL, тогда само выражение оценивается как NULL, за исключением оператора конкатенации (||)

12) Как компилируется процесс PL SQL?

Процесс компиляции включает в себя процессы проверки синтаксиса, связывания и генерации p-кода.

Проверка синтаксиса проверяет коды PL SQL на наличие ошибок компиляции. Когда все ошибки исправлены, переменным, в которых хранятся данные, назначается адрес хранения. Это называется привязкой. P-код - это список инструкций для механизма PL SQL. P-код хранится в базе данных для именованных блоков и используется при следующем выполнении.

13) Различайте синтаксические ошибки и ошибки времени выполнения.

Синтаксическая ошибка может быть легко обнаружена компилятором PL / SQL. Например, неправильное написание.

Ошибка выполнения обрабатывается с помощью раздела обработки исключений в блоке PL / SQL. Например, оператор SELECT INTO, который не возвращает никаких строк.

14) Объясните фиксацию, откат и точку сохранения.

Для оператора COMMIT верно следующее:

  • Другие пользователи могут видеть изменения данных, внесенные транзакцией.
  • Блокировки, полученные в результате транзакции, снимаются.
  • Работа, проделанная по сделке, становится постоянной.

Оператор ROLLBACK выдается, когда транзакция завершается, и верно следующее.

  • Работа, выполненная в переходе, отменяется, как если бы она никогда не была выпущена.
  • Все блокировки, полученные в результате транзакции, снимаются.

Он отменяет всю работу, проделанную пользователем в транзакции. С помощью SAVEPOINT можно отменить только часть транзакции.

15) Определите неявные и явные курсоры.

По умолчанию курсор неявный. Пользователь не может контролировать или обрабатывать информацию в этом курсоре.

Если запрос возвращает несколько строк данных, программа определяет явный курсор. Это позволяет приложению обрабатывать каждую строку последовательно по мере того, как курсор возвращает ее.

16) Объясните ошибку изменяющейся таблицы.

Это происходит, когда триггер пытается обновить строку, которую он в настоящее время использует. Это фиксируется с помощью представлений или временных таблиц, поэтому база данных выбирает одно и обновляет другое.

17) Когда требуется заявление о декларировании?

Оператор DECLARE используется анонимными блоками PL SQL, например, с автономными, не хранимыми процедурами. Если он используется, он должен быть первым в отдельном файле.

18) Сколько триггеров можно применить к таблице?

К одной таблице можно применить не более 12 триггеров.

19) В чем важность SQLCODE и SQLERRM?

SQLCODE возвращает значение количества ошибок для последней обнаруженной ошибки, тогда как SQLERRM возвращает сообщение для последней ошибки.

20) Если курсор открыт, как мы можем найти его в блоке PL SQL?

можно использовать переменную состояния курсора% ISOPEN.

21) Покажите два исключения курсора PL / SQL.

Cursor_Already_Open

Invaid_cursor

22) Какие операторы работают с NULL?

NVL преобразует NULL в другое указанное значение.

var: = NVL (var2, 'Привет');

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) Что такое интерсект?

Пересечение - это продукт двух таблиц, и в нем перечислены только совпадающие строки.

30) Что такое последовательности?

Последовательности используются для генерации порядковых номеров без накладных расходов на блокировку. Его недостатком является потеря порядкового номера при откате транзакции.

31) Как бы вы ссылались на значения столбцов ДО и ПОСЛЕ вставки и удаления триггеров?

Используя ключевое слово «new.column name», триггеры могут ссылаться на значения столбцов по новой коллекции. Используя ключевое слово "old.column name", они могут ссылаться на значения столбцов по старой коллекции.

32) Как используются ключевые слова SYSDATE и USER?

SYSDATE относится к текущей системной дате сервера. Это псевдоколонка. USER также является псевдостолбцом, но относится к текущему пользователю, вошедшему в сеанс. Они используются для отслеживания изменений, происходящих в таблице.

33) Как ROWID помогает ускорить выполнение запроса?

ROWID - это логический адрес строки, а не физический столбец. Он состоит из номера блока данных, номера файла и номера строки в блоке данных. Таким образом, время ввода-вывода сводится к минимуму при извлечении строки и приводит к более быстрому запросу.

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 in (10,12,14,16);

Этот оператор возвращает ошибку.

CASE напрямую используется в PL SQL, но DECODE используется в PL SQL только через SQL.

41) Объясните автономную транзакцию.

Автономная транзакция - это независимая транзакция от основной или родительской транзакции. Он не является вложенным, если запущен другой транзакцией.

Есть несколько ситуаций использования автономных транзакций, таких как регистрация событий и аудит.

42) Различия между SGA и PGA.

SGA означает глобальную область системы, тогда как PGA означает глобальную область программы или процесса. PGA выделяется только 10% объема ОЗУ, а SGA отводится 40% объема ОЗУ.

43) Где находятся Pre_defined_functions.

Они хранятся в стандартном пакете под названием «Функции, процедуры и пакеты».

44) Объясните полиморфизм в PL SQL.

Полиморфизм - это особенность ООП. Это возможность создавать переменную, объект или функцию с несколькими формами. PL / SQL поддерживает полиморфизм в форме перегрузки программного модуля внутри функции-члена или пакета ... Во время перегрузки следует избегать однозначной логики.

45) Какое использование MERGE?

MERGE используется для объединения нескольких операторов DML в один.

Синтаксис: объединить в имя таблицы

используя (запрос)

on (условие соединения)

когда не совпадает тогда

[вставить / обновить / удалить] команда

при совпадении тогда

[вставить / обновить / удалить] команда

46) Могут ли одновременно выполняться 2 запроса в системе распределенных баз данных?

Да, они могут выполняться одновременно. Один запрос всегда не зависит от второго запроса в системе распределенной базы данных на основе 2-фазной фиксации.

47) Объясните Raise_application_error.

Это процедура пакета DBMS_STANDARD, которая позволяет выдавать определяемые пользователем сообщения об ошибках из триггера базы данных или хранимой подпрограммы.

48) Какой параметр out используется для оператора return, хотя оператор return может также использоваться в pl / sql?

Параметры Out допускают более одного значения в вызывающей программе. Параметр Out не рекомендуется в функциях. Если требуется несколько значений, вместо функций можно использовать процедуры. Таким образом, эти процедуры используются для выполнения параметров Out.

49) Как бы вы преобразовали дату в юлианский формат даты?

Мы можем использовать строку формата J:

SQL> выберите to_char (to_date ('29 -Mar-2013 ',' dd-mon-yyyy '),' J ') как julian из двойного;

ДЖУЛИАН

50) Объясните SPOOL

Команда Spool может распечатать вывод операторов sql в файл.

катушка / tmp / sql_outtxt

выберите smp_name, smp_id из smp, где dept = 'accounts';

катушка выключена;

51) Укажите, из чего состоит пакет PL / SQL?

Пакет PL / SQL состоит из

  • Таблица PL / SQL и операторы TYPE записи
  • Процедуры и функции
  • Курсоры
  • Переменные (таблицы, скаляры, записи и т. Д.) И константы
  • Имена исключений и прагмы для связи номера ошибки с исключением
  • Курсоры

52) Назовите преимущества пакетов PL / SQL?

Он дает несколько преимуществ, таких как

  • Принудительное сокрытие информации: он предлагает свободу выбора, хранить ли данные приватными или общедоступными.
  • Дизайн сверху вниз: вы можете разработать интерфейс для кода, скрытого в пакете, до того, как вы фактически реализуете сами модули.
  • Сохранение объекта: объекты, объявленные в спецификации пакета, ведут себя как глобальные данные для всех объектов PL / SQL в приложении. Вы можете изменить пакет в одном модуле, а затем ссылаться на эти изменения на другой модуль.
  • Объектно-ориентированный дизайн: пакет дает разработчикам твердую власть над тем, как можно использовать модули и структуры данных внутри пакета.
  • Гарантия целостности транзакции: обеспечивает определенный уровень целостности транзакции.
  • Повышение производительности: СУБД автоматически отслеживает достоверность всех программных объектов, хранящихся в базе данных, и повышает производительность пакетов.

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 позволяет вам

  • Назначьте отдельное текстовое сообщение указанной строке в таблице PL / SQL.
  • Он извлекает текст сообщения по номеру
  • Он автоматически заменяет стандартные сообщения об ошибках Oracle вашими собственными сообщениями с помощью ограничительного переключателя.
  • Пакетная загрузка номеров сообщений и текста непосредственно из таблицы базы данных PLV msg Таблица PL / SQL

56) Укажите, что предлагает пакет PLV (PL / Vision)?

  • Нулевое значение подстановки
  • Набор процедур утверждения
  • Разные утилиты
  • Набор констант, используемых в PL Vision
  • Предопределенные типы данных
  • 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 используется функция таблицы журнала базы данных "PROCEDURE 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
  • Last_module_in

67) Упомяните, что PLVcmt и PLVrb делают в PL / SQL?

PL / Vision предлагает два пакета, которые помогут вам управлять обработкой транзакций в приложении PL / SQL. Это PLVcmt и PLVrb.

  • PLVcmt: пакет PLVcmt объединяет логику и сложность обработки фиксации.
  • PLVrb: предоставляет программный интерфейс для отката активности в PL / SQL.