- •Введение
- •Лабораторное занятие № 1
- •Описание учебного примера.
- •Удаление таблиц
- •Создание таблиц
- •Имена ограничений
- •Ограничения null и not null
- •Ограничение primary key
- •IdSubject, idReport, nTerm));
- •Ограничение unique
- •Ограничение Foreign key
- •Ограничение check
- •Вопросы для самоконтроля к лабораторной работе № 1
- •Лабораторная работа № 2
- •Команда вставки - insert
- •Команда обновления - update
- •Команда удаления - delete
- •Вопросы для самоконтроля к лабораторной работе № 2
- •Лабораторная работа №3
- •Команда alter table
- •Модификация ограничений
- •Добавление ограничений с ограниченной областью проверки
- •Отключение и подключение ограничений
- •Правила для изменения и модификации описания столбцов
- •Добавление столбца
- •Модификация столбца
- •Удаление столбца
- •Удаление таблицы
- •Переименование таблицы
- •Вопросы для самоконтроля к лабораторной работе № 3
- •Лабораторная работа № 4
- •Выборка данных из нескольких таблиц
- •Определение условий выборки в предложении where.
- •Групповые функции и предложение group by
- •Наиболее часто встречающиеся ошибки при выполнении group by
- •Предложение order by
- •Вопросы для самоконтроля к лабораторной работе № 4
- •Лабораторная работа № 5
- •Подзапросы
- •Inner join Student s
- •Inner join Student s
- •Inner join
- •Inner join Student s
- •Вопросы для самоконтроля к лабораторной работе № 5
- •Лабораторная работа №6
- •Представления
- •Вопросы для самоконтроля к лабораторной работе № 6
- •Лабораторная работа №7
- •Хранимые процедуры
- •Оператор use
- •Оператор declare
- •Операторы set и select
- •Функция @@identity
- •Функция @@error
- •Объявление параметров
- •Изменение хранимых процедур
- •Удаление хранимой процедуры
- •Лабораторная работа №8
- •If exists
- •Вопросы для самоконтроля к лабораторной работе № 8
- •Задания в тестовой форме
- •Литература Оглавление
Объявление параметров
При объявлении параметров указывается следующая информация
Имя
Тип данных
Значение по умолчанию
Направление (входная или выходная).
Если параметру не присвоено значение по умолчанию, то начальное значение должно быть присвоено при вызове процедуры. Если значение задано по умолчанию, то у пользователя остается право его изменить
Пример 87
Задание.
Создать хранимую процедуру, которая выводит содержимое таблицы Student для заданной группы, по умолчанию выводятся сведения о студентах группы АИС-03.
Решение:
USE STUDENT
GO
CREATE PROC PStudent
@NameGroup VARCHAR (20)='АИС-03'
AS
SELECT *
FROM Student ST
Inner JOIN SGroup SG
ON ST. IDGroup=SG. IDGroup
WHERE NameGroup=@NameGroup
При вызове EXEC PStudent имеем,
продолжение таблицы
Пример 88
Задание.
Создать хранимую процедуру, которая выводит содержимое таблицы Student для заданной группы. Название группы, используемое по умолчанию, не задается
Решение:
USE STUDENT
GO
CREATE PROC PStudent
@NameGroup VARCHAR (20) output
AS
SELECT *
FROM Student ST
Inner JOIN SGroup SG
ON ST. IDGroup=SG. IDGroup
WHERE NameGroup =@NameGroup
При вызове процедуры с помощью оператора EXEC PStudent, будет выдано сообщение об ошибке.
Server: Msg 201, Level 16, State 4, Procedure PSTUDENT, Line 0
Procedure 'PSTUDENT' expects parameter '@NameGroup', which was not supplied.
При вызове EXEC PStudent 'ИСТ-03' имеем,
Результат выполнения запроса:
продолжение таблицы
Пример 89
Задание.
Создать хранимую процедуру, которая вводит данные в таблицу Student.
Решение:
USE Student
GO
create proc PStudentINSERT
@NRecordBook varchar(6),
@INN varchar(10),
@StName varchar(35),
@IDGroup Int,
@SPasport varchar(4),
@NPasport varchar(6),
@DataPasport DateTime,
@NameDeptPasport varchar(35)
AS
INSERT INTO Student
(NRecordBook,INN,StName,IDGroup,SPasport,NPasport,
DataPasport,NameDeptPasport)
VALUES
(@NRecordBook,@INN,@StName,@IDGroup,@SPasport,@NPasport,
@DataPasport,@NameDeptPasport)
Обратимся к вновь созданной процедуре:
EXEC PStudentINSERT
'050008',
'1111111110',
'Ипатов В.И.',
3,
'8701',
'192320',
'01.11.2002',
'ГОВД г.Ухты'
Результат выполнения процедуры PStudentTINSERT можно увидеть, обратившись к процедуре PStudentView, созданной ниже (см. Пример 90)
EXEC PStudentView
Результат выполнения запроса:
продолжение таблицы
Пример 90
Задание.
Создать хранимую процедуру, выводящую для просмотра содержимое таблицы Student.
Решение:
USE Student
GO
CREATE PROC PStudentView
AS
SELECT *
FROM STUDENT
Изменение хранимых процедур
Изменение хранимой процедуры, осуществляется аналогично изменению любого объекта базы данных с помощью оператора ALTER TABLE. Различие между использованием ALTER PROC и CREATE PROC заключается в том, что
ALTER PROC – подразумевает, что хранимая процедура уже существует, CREATE – нет.
ALTER PROC – оставляет неизменными все установленные для хранимой процедуры права доступа.
ALTER PROC – сохраняет ID объекта и позволяет сохранять зависимости между процедурами.
ALTER PROC – оставляет неизменной любую информацию об отношениях с другими объектами, которые могут вызвать изменяемую процедуру (см. Рисунок 4).
Синтаксис команды ALTER TABLE полностью аналогичен синтаксису команды CREATE TABLE. С той разницей, что опция CREATE заменена на опцию ALTER.
Рисунок 4