Загрузка данных


-- 1. Создание хранимой процедуры "Виды_рекламы_Insert" для добавления вида рекламы
CREATE PROC Виды_рекламы_Insert
    @Код_вида INT,
    @Наименование NVARCHAR(50),
    @Описание NVARCHAR(MAX) = NULL
AS
BEGIN
    INSERT INTO Виды_рекламы (Код_вида, Наименование, Описание)
    VALUES (@Код_вида, @Наименование, @Описание);
END;
GO

-- 2. Создание хранимой процедуры "Заказы_Insert" для добавления заказа (отметка об оплате - 'false')
CREATE PROC Заказы_Insert
    @Дата_заказа DATE,
    @Дата_начала DATE,
    @Дата_окончания DATE,
    @Код_заказчика INT,
    @Код_места INT,
    @Код_услуги_1 INT = NULL,
    @Код_услуги_2 INT = NULL,
    @Код_услуги_3 INT = NULL,
    @Стоимость DECIMAL(10, 2),
    @Код_сотрудника INT
AS
BEGIN
    INSERT INTO Заказы (Дата_заказа, Дата_начала, Дата_окончания, Код_заказчика, Код_места, Код_услуги_1, Код_услуги_2, Код_услуги_3, Стоимость, Отметка_об_оплате, Код_сотрудника)
    VALUES (@Дата_заказа, @Дата_начала, @Дата_окончания, @Код_заказчика, @Код_места, @Код_услуги_1, @Код_услуги_2, @Код_услуги_3, @Стоимость, N'false', @Код_сотрудника);
END;
GO

-- 3. Создание хранимой процедуры "Должности_Delete" для удаления должности
CREATE PROC Должности_Delete
    @Код_должности INT
AS
BEGIN
    DELETE FROM Должности
    WHERE Код_должности = @Код_должности;
END;
GO

-- 4. Создание хранимой процедуры "Заказчики_Delete" (удаление только если у заказчика нет телефона)
CREATE PROC Заказчики_Delete
    @Код_заказчика INT
AS
BEGIN
    IF EXISTS (SELECT 1 FROM Заказчики WHERE Код_заказчика = @Код_заказчика AND (Телефон IS NULL OR Телефон = ''))
    BEGIN
        DELETE FROM Заказчики 
        WHERE Код_заказчика = @Код_заказчика;
    END
    ELSE
    BEGIN
        PRINT N'Удаление невозможно: у заказчика указан телефон.';
    END
END;
GO

-- 5. Создание хранимой процедуры "Виды_рекламы_Delete" (с предварительным удалением связанных мест расположения)
CREATE PROC Виды_рекламы_Delete
    @Код_вида INT
AS
BEGIN
    -- Сначала удаляем зависимые записи из таблицы "Места_расположения"
    DELETE FROM Места_расположения
    WHERE Код_вида = @Код_вида;

    -- Затем удаляем сам вид рекламы
    DELETE FROM Виды_рекламы
    WHERE Код_вида = @Код_вида;
END;
GO

-- 6. Создание хранимой процедуры "Дополнительные_услуги_Update" (повышение стоимости всех услуг на 15%)
CREATE PROC Дополнительные_услуги_Update
AS
BEGIN
    UPDATE Дополнительные_услуги
    SET Стоимость = Стоимость * 1.15;
END;
GO

-- 7. Создание хранимой процедуры "Заказы_Update" для изменения даты окончания заказа
CREATE PROC Заказы_Update
    @Код_заказа INT,
    @Новая_дата_окончания DATE
AS
BEGIN
    UPDATE Заказы
    SET Дата_окончания = @Новая_дата_окончания
    WHERE Код_заказа = @Код_заказа;
END;
GO