Добавил:
Upload Опубликованный материал нарушает ваши авторские права? Сообщите нам.
Вуз: Предмет: Файл:
Poyasnitelnaya_zapiska_-_Platnaya_poliklinika.doc
Скачиваний:
1
Добавлен:
01.03.2025
Размер:
523.26 Кб
Скачать

Генераторы

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

  1. Формирование первичного ключа таблицы VRACHI.

CREATE GENERATOR GEN_VRACHI_ID;

SET GENERATOR GEN_VRACHI_ID TO 1;

  1. Формирование первичного ключа таблицы PACIENTI.

CREATE GENERATOR GEN_PACIENTI_ID;

SET GENERATOR GEN_PACIENTI_ID TO 1;

  1. Формирование первичного ключа таблицы OBRASHENIYA.

CREATE GENERATOR GEN_OBRASHENIYA_ID;

SET GENERATOR GEN_OBRASHENIYA_ID TO 1;

Хранимые процедуры

  1. Создание хранимой процедуры на удаление.

    1. Для таблицы VRACHI.

Команда GRANT позволяют системным администраторам создавать пользователей MySQL, а также предоставлять права пользователям или лишать их прав. EXECUTE - разрешает пользователю запускать хранимые процедуры. DELETE - разрешает использование DELETE. SELECT- разрешает использование SELECT.

create or alter procedure DELETE_VR (

ID_VRACHA_A integer)

as

begin

delete from VRACHI where ID_VRACHA=:ID_VRACHA_A;

suspend;

end^

SET TERM ; ^

GRANT SELECT,DELETE ON VRACHI TO PROCEDURE DELETE_VR;

GRANT EXECUTE ON PROCEDURE DELETE_VR TO SYSDBA;

    1. Для таблицы PACIENTI.

create or alter procedure DELETE_PA (

ID_PACIENTA_A integer)

as

begin

delete from PACIENTI where ID_PACIENTA=:ID_PACIENTA_A;

suspend;

end^

SET TERM ; ^

GRANT SELECT,DELETE ON PACIENTI TO PROCEDURE DELETE_PA;

GRANT EXECUTE ON PROCEDURE DELETE_PA TO SYSDBA;

    1. Для таблицы SKIDKI.

create or alter procedure DELETE_SK (

KATEGORIYA_SKIDKI_A integer)

as

begin

delete from SKIDKI where KATEGORIYA_SKIDKI=:KATEGORIYA_SKIDKI_A;

suspend;

end^

SET TERM ; ^

GRANT SELECT,DELETE ON SKIDKI TO PROCEDURE DELETE_SK;

GRANT EXECUTE ON PROCEDURE DELETE_SK TO SYSDBA;

    1. Для таблицы STOIMOST.

create or alter procedure DELETE_ST (

VID_NAZNACHENIYA_A varchar(30))

as

begin

delete from STOIMOST where VID_NAZNACHENIYA=:VID_NAZNACHENIYA_A;

suspend;

end^

SET TERM ; ^

GRANT SELECT,DELETE ON STOIMOST TO PROCEDURE DELETE_ST;

GRANT EXECUTE ON PROCEDURE DELETE_ST TO SYSDBA;

    1. Для таблицы OBRASHENIYA.

create or alter procedure DELETE_OB (

ID_PACIENTA_A integer,

ID_VRACHA_A integer)

as

begin

delete from OBRASHENIYA where ID_PACIENTA=:ID_PACIENTA_A and ID_VRACHA=:ID_VRACHA_A;

suspend;

end^

SET TERM ; ^

GRANT SELECT,DELETE ON OBRASHENIYA TO PROCEDURE DELETE_OB;

GRANT EXECUTE ON PROCEDURE DELETE_OB TO SYSDBA;

  1. Создание хранимых процедур на добавление.

    1. В таблицу VRACHI.

create or alter procedure INSERT_VR (

ID_VRACHA_A integer,

V_FAMILIYA_A varchar(30),

V_NAME_A varchar(30),

V_OTCHESTVO_A varchar(30),

SPECIALNOST_A varchar(30),

KVALIFIKACIYA_A varchar(30))

as

begin

insert into VRACHI (ID_VRACHA, V_FAMILIYA, V_NAME,V_OTCHESTVO, SPECIALNOST, KVALIFIKACIYA)

values (:ID_VRACHA_A,:V_FAMILIYA_A,:V_NAME_A,:V_OTCHESTVO_A,:SPECIALNOST_A,:KVALIFIKACIYA_A);

suspend;

end ^

SET TERM ; ^

GRANT INSERT ON VRACHI TO PROCEDURE INSERT_VR;

GRANT EXECUTE ON PROCEDURE INSERT_VR TO SYSDBA;

    1. В таблицу PACIENTI.

create or alter procedure INSERT_PA (

P_FAMILIYA_A varchar(30),

P_NAME_A varchar(30),

P_OTCHESTVO_A varchar(30),

GOD_ROZHDENIYA_A integer,

KATEGORIYA_SKIDKI_A integer)

as

begin

insert into PACIENTI (P_FAMILIYA, P_NAME, P_OTCHESTVO, GOD_ROZHDENIYA, KATEGORIYA_SKIDKI)

values (:P_FAMILIYA_A,:P_NAME_A,:P_OTCHESTVO_A,:GOD_ROZHDENIYA_A,:KATEGORIYA_SKIDKI_A);

suspend;

end ^

SET TERM ; ^

GRANT INSERT ON PACIENTI TO PROCEDURE INSERT_PA;

GRANT EXECUTE ON PROCEDURE INSERT_PA TO SYSDBA;

    1. В таблицу SKIDKI.

create or alter procedure INSERT_SK (

KATEGORIYA_SKIDKI_A integer,

S_NAIMENOVANIE_A varchar(30),

SIZE_SKIDKI_A integer)

as

begin

insert into SKIDKI (KATEGORIYA_SKIDKI,S_NAIMENOVANIE,SIZE_SKIDKI)

values (:KATEGORIYA_SKIDKI_A,:S_NAIMENOVANIE_A,:SIZE_SKIDKI_A);

suspend;

end^

SET TERM ; ^

GRANT INSERT ON SKIDKI TO PROCEDURE INSERT_SK;

GRANT EXECUTE ON PROCEDURE INSERT_SK TO SYSDBA;

    1. В таблицу STOIMOST.

create or alter procedure INSERT_ST (

VID_NAZNACHENIYA_A varchar(30),

N_NAIMENOVANIE_A varchar(30),

CENA_A integer)

as

begin

insert into STOIMOST (VID_NAZNACHENIYA,N_NAIMENOVANIE,CENA)

values (:VID_NAZNACHENIYA_A,:N_NAIMENOVANIE_A,:CENA_A);

suspend;

end^

SET TERM ; ^

GRANT INSERT ON STOIMOST TO PROCEDURE INSERT_ST;

GRANT EXECUTE ON PROCEDURE INSERT_ST TO SYSDBA;

    1. В таблицу OBRASHENIYA.

create or alter procedure INSERT_OB (

ID_PACIENTA_A integer,

ID_VRACHA_A integer,

TIME_PRIEMA_A time,

DIAGNOZ_A varchar(30),

VID_NAZNACHENIYA_A varchar(30),

DATE_OBRASHENIYA_A integer,

STOIMOST_LECHENIYA_A numeric(4,2))

as

begin

insert into OBRASHENIYA (ID_PACIENTA, ID_VRACHA, TIME_PRIEMA, DIAGNOZ, VID_NAZNACHENIYA, DATE_OBRASHENIYA, STOIMOST_LECHENIYA)

values (:ID_PACIENTA_A,:ID_VRACHA_A,:TIME_PRIEMA_A,:DIAGNOZ_A,:VID_NAZNACHENIYA_A,:DATE_OBRASHENIYA_A,:STOIMOST_LECHENIYA_A);

suspend;

end^

SET TERM ; ^

GRANT INSERT ON OBRASHENIYA TO PROCEDURE INSERT_OB;

GRANT EXECUTE ON PROCEDURE INSERT_OB TO SYSDBA;

  1. Создание хранимых процедур на обновление.

    1. В таблице VRACHI.

create or alter procedure UPDATE_VR (

ID_VRACHA_A integer,

V_FAMILIYA_A varchar(30),

V_NAME_A varchar(30),

V_OTCHESTVO_A varchar(30),

SPECIALNOST_A varchar(30),

KVALIFIKACIYA_A varchar(30))

as

begin

update VRACHI set ID_VRACHA= :ID_VRACHA_A,V_FAMILIYA= :V_FAMILIYA_A,V_NAME=:V_NAME_A,V_OTCHESTVO=:V_OTCHESTVO_A,SPECIALNOST=:SPECIALNOST_A,KVALIFIKACIYA=:KVALIFIKACIYA_A

where ID_VRACHA=:ID_VRACHA_A;

suspend;

end^

SET TERM ; ^

GRANT SELECT,UPDATE ON VRACHI TO PROCEDURE UPDATE_VR;

GRANT EXECUTE ON PROCEDURE UPDATE_VR TO SYSDBA;

    1. В таблице PACIENTI.

create or alter procedure UPDATE_PA (

ID_PACIENTA_A integer,

P_FAMILIYA_A varchar(30),

P_NAME_A varchar(30),

P_OTCHESTVO_A varchar(30),

GOD_ROZHDENIYA_A integer,

KATEGORIYA_SKIDKI_A integer)

as

begin

update PACIENTI set ID_PACIENTA= :ID_PACIENTA_A,P_FAMILIYA= :P_FAMILIYA_A,P_NAME=:P_NAME_A,P_OTCHESTVO=:P_OTCHESTVO_A,GOD_ROZHDENIYA=:GOD_ROZHDENIYA_A,KATEGORIYA_SKIDKI= :KATEGORIYA_SKIDKI_A

where ID_PACIENTA=:ID_PACIENTA_A;

suspend;

end^

SET TERM ; ^

GRANT SELECT,UPDATE ON PACIENTI TO PROCEDURE UPDATE_PA;

GRANT EXECUTE ON PROCEDURE UPDATE_PA TO SYSDBA;

    1. В таблице SKIDKI.

create or alter procedure UPDATE_SK (

KATEGORIYA_SKIDKI_A integer,

S_NAIMENOVANIE_A varchar(30),

SIZE_SKIDKI_A integer)

as

begin

update SKIDKI set KATEGORIYA_SKIDKI= :KATEGORIYA_SKIDKI_A, S_NAIMENOVANIE=:S_NAIMENOVANIE_A, SIZE_SKIDKI=:SIZE_SKIDKI_A

where KATEGORIYA_SKIDKI=:KATEGORIYA_SKIDKI_A;

suspend;

end^

SET TERM ; ^

GRANT SELECT,UPDATE ON SKIDKI TO PROCEDURE UPDATE_SK;

GRANT EXECUTE ON PROCEDURE UPDATE_SK TO SYSDBA;

    1. В таблице STOIMOST.

create or alter procedure UPDATE_ST (

VID_NAZNACHENIYA_A varchar(30),

N_NAIMENOVANIE_A varchar(30),

CENA_A integer)

as

begin

update STOIMOST set VID_NAZNACHENIYA=:VID_NAZNACHENIYA_A, N_NAIMENOVANIE=:N_NAIMENOVANIE_A,CENA=:CENA_A

where VID_NAZNACHENIYA=:VID_NAZNACHENIYA_A;

suspend;

end^

SET TERM ; ^

GRANT SELECT,UPDATE ON STOIMOST TO PROCEDURE UPDATE_ST;

GRANT EXECUTE ON PROCEDURE UPDATE_ST TO SYSDBA;

    1. В таблице OBRASHENIYA.

create or alter procedure UPDATE_OB (

ID_PACIENTA_A integer,

ID_VRACHA_A integer,

TIME_PRIEMA_A time,

DIAGNOZ_A varchar(30),

VID_NAZNACHENIYA_A varchar(30),

DATE_OBRASHENIYA_A integer,

STOIMOST_LECHENIYA_A numeric(4,2))

as

begin

update OBRASHENIYA set ID_PACIENTA=:ID_PACIENTA_A, ID_VRACHA=:ID_VRACHA_A,TIME_PRIEMA=:TIME_PRIEMA_A,DIAGNOZ=:DIAGNOZ_A,VID_NAZNACHENIYA=:VID_NAZNACHENIYA_A,DATE_OBRASHENIYA=:DATE_OBRASHENIYA_A,STOIMOST_LECHENIYA=:STOIMOST_LECHENIYA_A

where ID_PACIENTA=:ID_PACIENTA_A;

suspend;

end^

SET TERM ; ^

GRANT SELECT,UPDATE ON OBRASHENIYA TO PROCEDURE UPDATE_OB;

GRANT EXECUTE ON PROCEDURE UPDATE_OB TO SYSDBA;

  1. Создание хранимой процедуры на вычисление стоимости лечения.

create or alter procedure STOIMOST_L (

N integer,

VID_NAZNACHENIYA_A varchar(20),

ID_PACIENTA_A integer)

returns (

X numeric(4,2),

Y numeric(4,2))

as

begin

select STOIMOST.CENA from STOIMOST

where STOIMOST.VID_NAZNACHENIYA=:VID_NAZNACHENIYA_A

into :X;

select SKIDKI.SIZE_SKIDKI from SKIDKI left join PACIENTI

on PACIENTI.KATEGORIYA_SKIDKI=SKIDKI.KATEGORIYA_SKIDKI

where PACIENTI.ID_PACIENTA=:ID_PACIENTA_A

into :Y;

update OBRASHENIYA

set stoimost_lecheniya=:X*(1-:Y)

where OBRASHENIYA.N=:N;

end^

SET TERM ; ^

GRANT SELECT ON STOIMOST TO PROCEDURE STOIMOST_L;

GRANT SELECT ON SKIDKI TO PROCEDURE STOIMOST_L;

GRANT SELECT ON PACIENTI TO PROCEDURE STOIMOST_L;

GRANT SELECT,UPDATE ON OBRASHENIYA TO PROCEDURE STOIMOST_L;

GRANT EXECUTE ON PROCEDURE STOIMOST_L TO SYSDBA;

  1. Создание хранимой процедуры на вывод информации о враче по заданной специальности.

create or alter procedure SPECIALNOST_VR (

SPECIALNOST_A varchar(30))

returns (

ID_VRACHA integer,

SPECIALNOST varchar(30),

V_FAMILIYA varchar(30),

V_NAME varchar(30),

V_OTCHESTVO varchar(30),

KVALIFIKACIYA varchar(30))

as

begin

for select ID_VRACHA, SPECIALNOST, V_FAMILIYA, V_NAME, V_OTCHESTVO, KVALIFIKACIYA from VRACHI

where SPECIALNOST = :SPECIALNOST_A

into :ID_VRACHA,:SPECIALNOST,:V_FAMILIYA,:V_NAME,:V_OTCHESTVO,:KVALIFIKACIYA

do

suspend;

end^

SET TERM ; ^

GRANT SELECT ON VRACHI TO PROCEDURE SPECIALNOST_VR;

GRANT EXECUTE ON PROCEDURE SPECIALNOST_VR TO SYSDBA;

Соседние файлы в предмете [НЕСОРТИРОВАННОЕ]