Решение практических



бет37/55
Дата12.05.2023
өлшемі1,43 Mb.
#92531
түріРешение
1   ...   33   34   35   36   37   38   39   40   ...   55

Вариант 5


  • хранимую процедуру «Печать бланка Заказа»

  • пользовательскую функцию «Вычисление цены всего товара в заказе»

Вариант 6


  • хранимую процедуру «Печать бланка сделки»

  • пользовательскую функцию «Вычисление комиссионных» Вариант 7

  • хранимую процедуру «Печать бланка сделки»

  • пользовательскую функцию «Вычисление комиссионных» Вариант 8

  • хранимую процедуру «Печать бланка поставки»

  • пользовательскую функцию «Вычисление стоимости поставки»



Вариант 9


  • хранимую процедуру «Печать бланка нагрузка»

  • пользовательскую функцию «Вычисление оплаты» Вариант 10

  • хранимую процедуру «Печать бланка Учебный план»

  • пользовательскую функцию «Вычисление средней оценки студента»

Вариант 11


  • хранимую процедуру «Печать бланка Работы»

  • пользовательскую функцию «Вычисление зарплаты сотрудника»

Вариант 12


  • хранимую процедуру «Печать бланка Ремонт»

  • пользовательскую функцию «Вычисление Стоимости Ремонта»

Вариант 13


  • хранимую процедуру «Печать бланка Путевки»

  • пользовательскую функцию «Вычисление величины скидки» Вариант 14

  • хранимую процедуру «Печать бланка Проделанная работа»

  • пользовательскую функцию «Вычисление премии» Вариант 15

  • хранимую процедуру «Печать бланка Переговоры»

  • пользовательскую функцию «Вычисление стоимости переговоров»

Вариант 16


  • хранимую процедуру «Печать бланка Выданные книги»

  • пользовательскую функцию «Вычисление стоимости проката»

Вариант 17


  • хранимую процедуру «Печать бланка Выданные автомобили»

  • пользовательскую функцию «Вычисление стоимости проката»

Вариант 18


  • хранимую процедуру «Печать бланка Инвестиции»

  • пользовательскую функцию «Вычисление котировки» Вариант 19

  • хранимую процедуру «Печать бланка Динамика показателей»

  • пользовательскую функцию «Вычисление значения Динамики показателя»



    1. Краткая теория


Хранимая процедура – SQL запрос, который имеет параметры, то есть он выполняется как обычная процедура (мы задаем ее имя и передаем в хранимую процедуру значение параметров.) В зависимости от значения параметров хранимой процедуры мы получаем тот или иной результат запроса. [13]


Замечание. В SQL сервере хранимые процедуры реализуют динамические запросы, выполняемые на стороне сервера.
Рассмотрим создание хранимых процедур при помощи команд языка SQL. Чтобы отобразить хранимые процедуры рабочей БД панели "Object Explorer" нужно выделить пункт "Stored Procedures". Чтобы создать новую процедуру при помощи команд языка SQL нужно щелкнуть ЛКМ по кнопке

на панели инструментов. В рабочей области окна сервера появится вкладка SQLQuery1.sql, где нужно набрать код новой процедуры, который имеет следующий синтаксис:
CREATE PROCEDURE <Имя процедуры> [@<Параметр1> <Тип1>[=<Значение1>], @<Параметр2> <Тип2>[=<Значение2>], …] [WITH ENCRYPTION]
AS <Команды SQL>
Здесь:

  • Имя процедуры - имя создаваемой хранимой процедуры.

  • Параметр1, Параметр2, … - параметры передаваемые в процедуру.

  • Значение1, Значение2, … - значения параметров по умолчанию.

  • Тип1, Тип2, … - типы данных параметров.

  • WITH ENCRYPTION - включает шифрование данных.

  • Команды SQL - SQL запрос, который выполняется при запуске процедур. [2]

Замечание: После создания процедура помещается в раздел Stored Procedures текущей БД на панели "Object Explorer". Если дважды щелкнуть по процедуре ЛКМ, то она откроется для редактирования на вкладке "SQLQuery".
Чтобы посмотреть информацию о хранимой процедуре необходимо выполнить команду:
EXEC SP_HELPTEXT <Имя процедуры>
Хранимые процедуры могут быть запущены следующей командой EXEC <Имя процедуры> [<Параметр1>, <Параметр2>, …]
Здесь:

    • <Имя процедуры> - имя выполняемой процедуры.

    • Параметр1, Параметр2, … - значение параметров. [7]

Пример: Создание хранимой процедуры, который выводит имя студентов, у которых средний балл больше заданной величины:
CREATE PROCEDURE СрБАЛЛ
@X Real AS SELECT *
FROM Студенты WHERE
(Оценка1+ Оценка2+ Оценка3)/3>@X
Команда вызова приведенной выше процедуры выглядит следующим образом:
EXEC СрБАЛЛ 4
Команда выводит всех студентов, у которых средний балл больше 4. Пользовательские функции
Пользовательские функции очень похожи на хранимые процедуры. Так же в них можно передавать параметры и они выполняют некоторые действия, однако их главным отличием от хранимых процедур является то, что они выводят (возвращают) какой-то результат. Более того, они вызываются только при помощи оператора SELECT, аналогично встроенным функциям. Все пользовательские функции делятся на 2 вида:

  1. Скалярные функции – функции, которые возвращают число или текст, то есть одно или несколько значений;

  2. Табличные функции – функции, которые выводят результат в виде таблицы. [1]

Для создания новой пользовательской функции используется команда CREATE FUNCTION имеющая следующий синтаксис:
CREATE FUNCTION <Имя функции> ([@<Параметр1> <Тип1>[=<Значение1>], @<Параметр2> <Тип2>[=<Значение2>], . . .]) RETURNS <Тип>/TABLE
AS
RETURN([<Команды SQL>])
Здесь:

  • Имя функции – имя создаваемой пользовательской функции.

  • Параметр1, Параметр2, .. – параметры передаваемые в функцию.

  • Значение1, Значение2, … – значения параметров по умолчанию.

  • Тип1, Тип2, . .. – типы данных параметров.

После служебного слова RETURNS в скалярных функциях ставится тип данных результата, который возвращает скалярная функция, либо ставится служебное слово TABLE в табличных функциях. [6]
После служебного слова RETURN ставится SQL команда самой функции.
Замечание: После служебного слова RETURN может быть несколько команд, которые располагаются между словами BEGIN и END. В этом случае служебное слово RETURN не ставится.
Замечание: Тип данных параметра должен совпадать с типом данных выражения, в котором он используется.
Замечание: Если используются несколько SQL команд и BEGIN и END, то перед END нужно ставить команду RETURN <результат функции>.
Пример (скалярная пользовательская функция): Функция для вычисления среднего 3 чисел:
CREATE FUNCTION Среднее
(@X1 Int,@X2 Int,@X3 Int) RETURNS Real
AS BEGIN
DECLARE @Res Real
SET @Res =(@X1+@X2+@X3)/3 RETURN @Res
END
Замечание: Команда DECLARE создает переменную Res для хранения дробных чисел (тип данных Real). [4]
Представленная выше пользовательская функция реализована при помощи нескольких команд SQL, но ее можно реализовать при помощи одной функции следующим образом:
CREATE FUNCTION Среднее
(@X1 Int,@X2 Int,@X3 Int) RETURNS Real
AS
RETURN (SELECT (@X1+@X2+@X3)/3)
Созданная функция, вычисляющая среднее 6, 3 и 3, запускается следующим образом:
SELECT Среднее (6, 3, 3)
Результат будет 4.
Пример (табличная пользовательская функция): Из таблицы Студенты выводятся поля ФИО, дата рождения и столбец возраст, который вычисляется как разница дат в годах, между датой рождения и текущей датой (параметр CurDate ).
CREATE FUNCTION Возраст
(@CurDate Date) RETURNS TABLE AS
RETURN (SELECT ФИО, [Дата рождения], Возраст = DATEDIFF (yy,[Дата рождения], @CurDate)
FROM Студенты)
Данная функция вызывается следующим образом: SELECT * FROM Возраст ('12/17/2007')
В результате отобразятся студенты с их возрастом на 17 декабря 2007 года.


Достарыңызбен бөлісу:
1   ...   33   34   35   36   37   38   39   40   ...   55




©emirsaba.org 2024
әкімшілігінің қараңыз

    Басты бет