При объявлении параметров указывается следующая информация
· Имя.
· Тип данных.
· Значение по умолчанию.
· Направление (входная или выходная).
Если параметру не присвоено значение по умолчанию, то начальное значение должно быть присвоено при вызове процедуры. Если значение задано по умолчанию, то у пользователя остается право его изменить
Пример 89
Задание.
Создать хранимую процедуру, которая выводит содержимое таблицы Student для заданной группы, по умолчанию выводятся сведения о студентах группы АИС-03.
Решение:
USE STUDENT
GO
CREATE PROC PStudent
@NameGroup VARCHAR (20)='АИС-03'
AS
SELECT NRecordBook [№ зачетки],
Sname [Имя],
NameGroup [Группа]
FROM Student ST
INNER JOIN SGroup SG
ON ST. IDGroup=SG. IDGroup
WHERE NameGroup=@NameGroup
При вызове EXEC PStudent ИСТ-02 имеем,
Пример 90
Задание.
Создать хранимую процедуру, которая выводит содержимое таблицы Student для заданной группы. Название группы, используемое по умолчанию, не задается
Решение:
USE STUDENT
GO
CREATE PROC PStudent
@NameGroup VARCHAR (20)
AS
SELECT NRecordBook [№ зачетки],
Sname [Имя],
NameGroup [Группа]
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 'ИСТ-02' имеем,
Результат выполнения запроса:
Пример 91
Задание.
Создать хранимую процедуру, выводящую для просмотра содержимое таблицы Student.
Решение:
USE Student
GO
CREATE PROC PStudentView
AS
SELECT *
FROM STUDENT
Пример 92
Задание.
Создать хранимую процедуру, которая вводит данные в таблицу Student.
Решение:
USE Student
GO
create proc PStudentINSERT
@NRecordBook varchar(6),
@INN varchar(10),
@SName varchar(35),
@IDGroup Int,
@SPasport varchar(4),
@NPasport varchar(6),
@DataPasport DateTime,
@NameDeptPasport varchar(35)
AS
INSERT INTO Student
(NRecordBook,INN,SName,IDGroup,SPasport,NPasport,
DataPasport,NameDeptPasport)
VALUES
(@NRecordBook,@INN,@SName,@IDGroup,@SPasport,@NPasport,
@DataPasport,@NameDeptPasport)
Обратимся к вновь созданной процедуре:
EXEC PStudentINSERT
'050010',
'1111111110',
'Ипатов В.И.',
3,
'8701',
'192320',
'01.11.2002',
'ГОВД г.Ухты'
Увидеть результат вызова процедуры PStudentINSERT мы можем обратившись к ранее созданной процедуре PStudentView (см. Пример 91) EXEC PStudentView