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

Страницы работы

Содержание работы

Министерство транспорта Российской Федерации

Департамент Водного Транспорта

НГАВТ

Кафедра ИС

ОТЧЕТ

По лабораторной работе №3

Выполнил: 

студенты группы ИТ-42

                                                                                                                     

                                             Проверил: 

Ю.

Новосибирск 2007

1. Цели и задачи

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

Задачи:

I.  Научиться создавать хранимые процедуры.

II.  Реализовать на языке SQL сценарий(-ии), для создания хранимых процедур.

III.  Научиться использовать локальные и глобальные (например, ROW_COUNT) переменные.

IV.  Научиться использовать встроенные функции:

a).  COUNT

b).  MAX

c).  SUBSTRING

d).  EXTRACT

V.  Научиться использовать управляющие структуры:

a).  WHILE … DO

b).  IF…THEN…ELSE

.

2. Введение

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

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

3. Ход работы

3.1 SQL сценарий, для создания хранимой процедуры

SET TERM ^ ;

CREATE PROCEDURE NEW_PROCEDURE (

sel_name varchar(20))

returns (

ret_pay decimal(15,2))

as

declare variable all_pay decimal(15,2);

begin

SELECT SUM(PAY) FROM company

WHERE COMPANYNAME =:sel_name INTO :all_pay;

IF (row_count=0) THEN all_pay=0;

IF (:all_pay>5000) THEN ret_pay =all_pay-(all_pay*20)/100;

ELSE ret_pay=all_pay-(all_pay*5)/100;

suspend;

end^

SET TERM ; ^

GRANT SELECT ON COMPANY TO PROCEDURE NEW_PROCEDURE;

GRANT EXECUTE ON PROCEDURE NEW_PROCEDURE TO SYSDBA;

3.2 Примеры использования встроенных функций

3.2.1 Count

select count(age) from phisicheskie_lica;

3.2.2  Max

select max(age) from phisicheskie_lica;

3.2.3  Substring

select (phisicheskie_lica.sname||''||substring(phisicheskie_lica.name from 1 for 1)||'.'||substring(phisicheskie_lica.pname from 1 for 1))

from phisicheskie_lica;

3.2.4 Extract

select extract(year from cast('now' as timestamp)) - extract(year from cast(:birthday as timestamp))

+ case when extract (month from cast('now' as timestamp)) >= extract (month from cast(:birthday as timestamp)) and

extract (day from cast('now' as timestamp)) >= extract (day from cast(:birthday as timestamp))

then 0 else -1 end

from rdb$database

3.2 Использование управляющих структур while do и if then else

SET TERM ^ ;

CREATE PROCEDURE SSP$DATE_INC (

adate date,

y smallint,

m smallint,

d smallint)

returns (

out_date date)

as

declare variable y0 smallint;

declare variable m0 smallint;

declare variable d0 smallint;

declare variable month_inc smallint;

begin

if(   (:adate is null)

or (:y is null)

or (:m is null)

or (:d is null)) then exit;

y0 = extract(year from :adate) + :y;

m0 = extract(month from :adate);

if(:m > 0) then month_inc = 1;

else month_inc = -1;

while(:m <> 0) do begin

m0 = :m0 + :month_inc;

if(:m0 = 13) then begin m0 = 1; y0 = :y0 + 1; end

else if(:m0 = 0) then begin m0 = 12; y0 = :y0 - 1; end

m = :m - :month_inc;

end

d0 = extract(day from :adate);

while(:out_date is null) do begin

out_date = :y0 || '-' || :m0 || '-' || :d0;

end

out_date = :out_date + :d;

suspend;

end^

SET TERM ; ^

GRANT EXECUTE ON PROCEDURE SSP$DATE_INC TO SYSDBA;

4. Выводы

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

Похожие материалы

Информация о работе