DECLARE @MyMes varchar(50)
DECLARE @MyOtherMes varchar(50)
SELECT @MyMes='Ýòî ðåçóëüòàò Return'
print @MyMes
return
SELECT @MyMes='Èçâèíèðå ñþäà íå äîøåë õîä'
print @MyMes
return
· Создайте сценарий на выполнение процедуры
DECLARE @return int
exec @return=procReturn
select @return
· что делает этот оператор select @return?
· Измените содержание хранимой процедур, так, чтобы она возвращала другое целое число.
· Задание 11. Обработка побочных ошибок с использование системной переменной @@ERROR.
Разработайте запрос на вставку в таблицу Adv записи по ученику, сведения о котором не еще не включены в таблицу Ученик.
· Создайте запрос на вставку и выполните его. Результат:
Msg 547, Level 16, State 0, Line 1
The INSERT statement conflicted with the FOREIGN KEY constraint
"FK_Advencement_piple1". The conflict occurred in database "Uchenic",
table "dbo.piple", column 'id'.
The statement has been terminated.
· Сохраните код ошибки в переменной типа int. Для этого измените запрос, вставив операторы определения переменной и присваивания ей значения системной переменной @@ERROR.
Select @error=@@ERROR
· Выведите код ошибки с текстом. Для этого добавьте оператор:
Print “Это ошибка вставки записи”+CONVERTOR(vachar,@Error)
· Добавьте еще один оператор вывода кода, но этот уже после предыдущего и вместо переменной @Error используйте системную переменную @@ERROR. Оцените результаты. Дайте объяснение.
DECLARE @Error int
DECLARE @MyOtherMes varchar(50)
insert into Advencement
values (1, 199, '04.24.2007',2,5)
select @Error=@@ERROR
print 'Kod ERROR '+CONVERT(varchar,@Error)
print ' '
print 'Kod ERROR ' +CONVERT(varchar,@Error)
результат
Msg 547, Level 16, State 0, Line 3
The INSERT statement conflicted with the FOREIGN KEY constraint
"FK_Advencement_piple1". The conflict occurred in database "Uchenic",
table "dbo.piple", column 'id'.
The statement has been terminated.
Kod ERROR 547
Kod ERROR 0
Задание 12. Обработка ошибок в хранимых процедурах с использованием @@ERROR.
Создайте хранимую процедуру с параметрами, которая вставляет в таблицу Advencement оценку ученика и возвращает код завершения 0, если вставка выполнена успешно и код ошибки, если запись не вставлена.
Для этого
· Создайте хранимую процедуру с параметрами на основании предыдущего запроса
Пример.
create proc procErr
as
DECLARE @Error int
insert into Advencement
values (1, 199, '04.24.2007',2,5)
select @Error=@@ERROR
if (@Error!=0)
begin
--возникла какая-то ошибка
if(@Error=547)
begin
print ('нарушено ограничение’)
print ' '
end
else
begin
print(‘возникла ошибка с кодом'+CONVERT(varchar,@Error))
print ' '
end
RETURN @Error
end
RETURN
· Создайте сценарий на выполнение, который согласно кода завершения выдает сообщение пользователю об успешном или неуспешном завершении.
Пример.
DECLARE @return int
exec @return=procErr
if @return=0
PRINT('Успешно’)
ELSE
PRINT('не успешно’)+CONVERT(varchar,@return)
select @return
· Выполните тестирование хранимой процедуры. Для разных значений ключа школьника.
Примечание.
Можно выполнить отладку (debag) хранимой процедуры в Visual Studio. Для этого откройте приложение, выполните соединение приложения с вашей БД, воспользовавшись объектом Server Explorer. После подключения найдите хранимую процедуру и вызовите для нее контекстное меню. В контекстном меню выполните команду
Задание 13. Исследуйте возможности Try/Catch для обработки ошибок в хранимых процедурах.
· Создайте копию хранимой процедуры задания 12
· Измените ее согласно примера
Alter proc procErr
as
DECLARE @Error int
DECLARE @MyOtherMes varchar(50)
Begin Try
insert into Advencement
values (1, 5, '04.24.2007',2,5)
select @Error=@@ERROR
end Try
Begin Catch
--Errors Define her
DECLARE @ErrorNo int, @Severity tinyint,
@State smallint, @LineNo int ,@Message nvarchar(4000)
SELECT
@ErrorNo =ERROR_NUMBER(), //это функции применяемые
@Severity =ERROR_Severity (), // при проверке ошибок
@State =ERROR_State(), //дополнительно см. в T-SQL
@LineNo =ERROR_Line(), //
@Message =ERROR_Message() //
if(@Error=547)
begin
print ('Constrain')
print ' '
end
else
begin
print('Error kod='+CONVERT(varchar,@Error))
print ' '
end
RETURN @Error
end catch
RETURN
· Испытайте процедуру, используя тотже сценарий вызова.
Задание 14. Обработка ошибок до того как они происходят
Задание 15. Активизация ошибок до того как они происходят
Задание 16. Сообщения определяемые пользователем
7. Пользовательские функции.
8. Транзакции и блокировки
9. Триггеры
10. Представления
Уважаемый посетитель!
Чтобы распечатать файл, скачайте его (в формате Word).
Ссылка на скачивание - внизу страницы.