Добавил:
Опубликованный материал нарушает ваши авторские права? Сообщите нам.
Вуз: Предмет: Файл:
Методическое пособие по выполнению лабораторных работ по SQL.doc
Скачиваний:
167
Добавлен:
01.05.2014
Размер:
1.22 Mб
Скачать

Объявление параметров

При объявлении параметров указывается следующая информация

  • Имя

  • Тип данных

  • Значение по умолчанию

  • Направление (входная или выходная).

Если параметру не присвоено значение по умолчанию, то начальное значение должно быть присвоено при вызове процедуры. Если значение задано по умолчанию, то у пользователя остается право его изменить

Пример 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