Archive for the ‘PL/SQL’ Category

Вопросы на PL/SQL

Воскресенье, Февраль 12th, 2017

Дан код:

CREATE OR REPLACE FUNCTION gеn_еmаil_name(р_fіrst_nаme IN VARCHAR2,
                                          p_last_nаme    IN VARCHAR2)
  RETURN VARCHAR2 IS
  v_emaіl_namе VARCHAR2(19);
BEGIN
  v_emaіl_namе := substr(р_fіrst_nаme, 1, 1) || substr(p_last_nаme, 1, 7) ||
                  '@Oraclе.com';
  RETURN v_emaіl_namе;
END gеn_еmаil_name;
/

(далее…)

Задание по SQL. Часть 4

Воскресенье, Август 28th, 2016

Создать архивные таблицы такой же структуры, что таблица задач («задача») и таблица, связующая задачи и сотрудников («задача-сотрудник»). Написать функцию, перемещающую записи из основных таблиц («задача» и «задача-сотрудник») в соответствующие архивные таблицы и работающую в многопользовательском режиме. В качестве параметра функция получает дату, которая указывает, что задачи, завершенные до этой даты должны быть перенесены в архив. Функция возвращает 0, если в архивные таблицы была перенесена хотя бы 1 задача; функция возвращает 1, если не было перенесено ни одной задачи и возвращает 2, если при выполнении возникла ошибка.

Логическая модель

Логическая модель


(далее…)

Задание по SQL. Часть 3

Воскресенье, Август 14th, 2016

Написать процедуру, которая рассчитывает ежегодную премию для сотрудников. Входными параметрами процедуры являются: рассматриваемый уровень служебной иерархии, необходимое количество задач, за которые сотрудник был ответственен в течении года, и % от ежемесячной зарплаты, который и составляет премию. Для каждого сотрудника, принадлежащего указанному уровню иерархии и бывшего ответственным в этом году не менее, чем за указанное число задач, рассчитать премию (% от зарплаты). Выходными параметрами являются признак успешного или неуспешного завершения процедуры и индексная таблица, каждый элемент которой имеет следующую структуру: код сотрудника и размер премии.

Логическая модель

Логическая модель

(далее…)

Задание по SQL. Часть 2

Суббота, Август 13th, 2016

Написать функцию, добавляющую данные о новой задаче и подключенных к ее решению сотрудниках в соответствующие таблицы БД. Параметрами функции являются: название задачи, даты начала и завершения по плану, описание задачи, код сотрудника, являющегося ответственным за эту задачу, и коды сотрудников, подключенных к ее решению. Последние передаются в виде строки с фиксированным разделителем между кодами различных сотрудников. Задача считается ранее введенной в систему, если существует задача с таким же названием и датой начала. В этом случае функция должна вернуть 1. Если допущены ошибки в параметрах функции, например, сотрудника с таким кодом не существует или параметр даты не преобразуется к корректному формату даты, то функция должна вернуть 2. В случае прочих ошибок, возникших при выполнении функции, вернуть 3. В случае успешного завершения функция должна вернуть 0.

Логическая модель

Логическая модель

(далее…)

Задание по SQL. Часть 1

Суббота, Июль 30th, 2016

Проводятся соревнования по автогонкам из нескольких заездов с неопределенным количеством машин. Результаты содержатся в таблице и измеряются в очках. Имеется описание (цвет, модель, мощность в л.с.) машин (НЕ ВСЕХ), которое находится в отдельной таблице, однако, ВСЕ машины зарегистрированы (их гос. номера).

Вопрос:
Написать запрос: выдать лучший результат, средний результат, среднеквадратичное отклонение результата в каждом заезде, при условии, что до финиша (с очками) доехало не менее 3 машин и их суммарная мощность не меньше 1000 л.с. Если точного значения мощности для конкретной машины не имеется, то берется мощность, равная 334 л.с. У лучших результатов номера машин и их описание, если есть. Упорядочить результаты по возрастанию. Создать индексы для эффективной работы запроса.

Логическая модель

Логическая модель

(далее…)

Моделирование. Шарики.

Воскресенье, Июль 3rd, 2016

В базе данных необходимо хранить информацию о шариках (номер, диаметр, цвет). Номер шарика должен быть уникальным. В качестве первичного ключа использовать номер шарика запрещено. Редактирование номера шарика запрещено. Номер шарика должен формироваться минимальным из незанятых других шариков. Шарики могут быть связанны между собой веревочкой. Между любыми двумя шариками не может быть две веревочки. Шарик НЕ может быть связан сам с собой. Шарики не могут быть связаны, если целая часть от деления суммы номеров шариков на остаток от деления номеров кратно 3.

Логическая модель

Логическая модель

(далее…)

Регулярное выражение

Воскресенье, Июнь 26th, 2016

Необходимо написать регулярное выражение + код (или псевдокод) для извлечения нужных значений.
(далее…)

Курсор по таблице

Понедельник, Июнь 13th, 2016

Есть таблица CDR_TEL_YYYYMM

CREATE TABLE CDR_TEL_YYYYMM
("ID_TRANS" NUMBER(10),
	"N_DURATION" NUMBER(10),
  "B_PROCESSED" NUMBER(1) DEFAULT 0
) TABLESPACE MIRAVILD_DATA;
 
COMMENT ON TABLE CDR_TEL_YYYYMM IS 'Проводка';
COMMENT ON COLUMN CDR_TEL_YYYYMM.ID_TRANS IS 'Код проводки';
COMMENT ON COLUMN CDR_TEL_YYYYMM.N_DURATION IS 'Продолжительность проводки';
COMMENT ON COLUMN CDR_TEL_YYYYMM.B_PROCESSED IS 'Признак обработки (0 - не обработан)';
/

(далее…)

Справочник стран

Воскресенье, Июнь 12th, 2016

Есть справочник стран — таблица FW_COUNTRY

CREATE TABLE FW_COUNTRY
("ID_COUNTRY" NUMBER(10),
	"V_NAME" VARCHAR2(64),
  "B_DELETED" NUMBER(1) DEFAULT 0
) TABLESPACE MIRAVILD_DATA;
 
COMMENT ON TABLE FW_COUNTRY IS 'Страна';
COMMENT ON COLUMN FW_COUNTRY.ID_COUNTRY IS 'Код страны';
COMMENT ON COLUMN FW_COUNTRY.V_NAME IS 'Наименование страны';
COMMENT ON COLUMN FW_COUNTRY.B_DELETED IS 'Признак удаления (0 - активна)';
/

(далее…)

Курс валюты

Воскресенье, Июнь 12th, 2016

Имеется таблица изменений курса валют T_CURRENCY

CREATE TABLE T_CURRENCY
("CODE" VARCHAR2(32),
	"DATE_C" DATE,
  "VALUE" NUMBER
) TABLESPACE MIRAVILD_DATA;
 
COMMENT ON TABLE T_CURRENCY IS 'Валюта';
COMMENT ON COLUMN T_CURRENCY.CODE IS 'Код валюты';
COMMENT ON COLUMN T_CURRENCY.DATE_C IS 'Дата изменения курса';
COMMENT ON COLUMN T_CURRENCY.VALUE IS 'Значение курса';
/

(далее…)