новая папка / gopezotoropenunevaro
.docxЛабораторная работа №4
Весь код :
№1
--1.1
SELECT COUNT(*) FROM (
SELECT ROUTINE_NAME FROM master.INFORMATION_SCHEMA.ROUTINES WHERE ROUTINE_TYPE = 'PROCEDURE' AND ROUTINE_NAME LIKE 'sp_%'
UNION
SELECT ROUTINE_NAME FROM msdb.INFORMATION_SCHEMA.ROUTINES WHERE ROUTINE_TYPE = 'PROCEDURE' AND ROUTINE_NAME LIKE 'sp_%'
) names
--1.2
select count(*) from sys.all_objects where type = 'p' and name like 'sp_%'
--1.3
sp_stored_procedures -- возвращает список сохраненных процедур текущей базы данных
№2
SET ANSI_NULLS ON
GO
SET QUOTED_IDENTIFIER ON
GO
CREATE PROCEDURE time_year
@date DATE
AS
Begin
set dateformat dym
declare @месяц int = MONTH(@date)
declare @opr nvarchar(60)
IF (@месяц = 12 or @месяц= 1 or @месяц= 2)
set @opr = 'ЗИМА'
IF (@месяц = 3 or @месяц= 4 or @месяц= 5)
set @opr = 'ВЕСНА'
IF (@месяц = 6 or @месяц= 7 or @месяц= 8)
set @opr = 'ЛЕТО'
IF (@месяц = 11 or @месяц= 10 or @месяц= 9)
SET @opr = 'ОСЕНЬ'
PRINT @opr
END
-- Set date format to month/year/day
set dateformat myd
exec time_year '1-2000-21'
№3
SET ANSI_NULLS ON
GO
SET QUOTED_IDENTIFIER ON
GO
CREATE PROCEDURE age
@DATE DATE
AS
BEGIN
DECLARE @возраст int = YEAR(GETDATE())- YEAR(@date)
if @возраст > 16
print 'есть 16'
else
print 'нет 16'
end
set dateformat mdy
exec age '05/05/2001'
№4
SET ANSI_NULLS ON
GO
SET QUOTED_IDENTIFIER ON
GO
Create procedure mail @mail varchar(60)
WITH ENCRYPTION
AS
BEGIN
DECLARE @index int = charindex('@' , @mail)
DECLARE @index_1 int = charindex('.' , @mail)
if (@index_1 > @index)
print ('email есть')
else
print ('email нет')
END
EXEC mail 'fdsaghtrt@mail.ru'
--ИЛИ
/*Create procedure mail
@mail varchar(60)
as
BEGIN
if (@mail LIKE '[a-zA-Z]%@[a-zA-Z]%.[a-zA-Z]%') -- можно реализовать : через charindex , через @mail LIKE '_%@__%.__%' или сделать с учетом англ.символов @mail LIKE '[a-zA-Z]%@[a-zA-Z]%.[a-zA-Z]%'
print ('email есть')
else
print ('email нет')
end
*/
№5 Удаляем все процедуры
drop procedure time_year;
drop procedure age;
drop procedure mail;
Изображение результатов :
№1
№2
№3
№4
№5