SQL Server存储过程

1.编写一个查询project表中PNAME的存储过程。

SQL 文本:

use Company

go

create PROC Select_PNAME

as

select PNAME from Project

exec Select_PNAME

结果截图:

SQL Server存储过程_第1张图片

2.编写一个让所有员工的工资统一增加10%的存储过程,分别在执行存储过程前后查询EMPLOYEE表的SSN,FNAME,LNAME,SALARY。

SQL 文本:

use Company
go
create PROC add_Salary
as
update Employee
set SALARY=SALARY*1.1
go
exec add_Salary
go
select SSN,FNAME,LNAME,SALARY from Employee

结果截图:

在执行存储过程前进行一次查询,结果如下。

SQL Server存储过程_第2张图片

在执行存储过程后进行一次查询,结果如下。

SQL Server存储过程_第3张图片

3.编写一个查询工资大于30000的员工信息的存储过程。

SQL 文本:

use Company
go
create PROC emp_info
as
select * from EMPLOYEE where SALARY>30000
go
exec emp_info
go

结果截图:

SQL Server存储过程_第4张图片

4.编写一个查询工资大于给定值的员工信息的存储过程,如果存储过程执行时没有给定参数,则默认查询工资大于30000的员工信息。分别显示提供参数和不提供参数的存储过程执行结果。

SQL 文本:

use Company
go
create PROC employ_info(@number int=30000)
as
select * from Employee  where SALARY>@number
go
exec employ_info @number=40000
go

结果截图:

当没有给定参数

SQL Server存储过程_第5张图片

当给定参数为40000

SQL Server存储过程_第6张图片

5.编写一个按照指定方式针对PNAME进行模式匹配以查询project表中项目信息的存储过程,如果不提供模式匹配字符串参数,则默认查询PNAME以P开头的项目信息。分别显示提供参数和不提供参数的存储过程执行结果。

SQL 文本:

use Company
go

create proc pro_info(@likestring varchar(30)='p%')
as
if(@likestring='p%') begin
   select * from Project where PNAME like @likestring
end else begin
   select * from Project where PNAME like '%'+@likestring+'%'
end
go

exec pro_info 'new'
go

结果截图:

提供参数

SQL Server存储过程_第7张图片

不提供参数

SQL Server存储过程_第8张图片

6.编写一个用OUTPUT参数返回参加了指定项目(用项目名指定项目)的员工的平均工资,最高工资和最低工资的存储过程。

SQL 文本:

use Company
go
create PROC out_project(@pro varchar(50),@avgSalary int OUTPUT,@maxSalary int OUTPUT,@minSalary int OUTPUT)
as
select @avgSalary=AVG(e.SALARY),@maxSalary=MAX(e.SALARY),@minSalary=MIN(e.SALARY)
from Employee e,WORKS_ON w,Project p
where p.PNAME=@pro
  AND w.PNO=p.PNUMBER
  AND e.SSN=w.ESSN
return
go

declare @pro varchar(50),@avgSalary int,@maxSalary int,@minSalary int
set @pro='ProductX'
exec out_project @pro,@avgSalary OUTPUT,@maxSalary OUTPUT,@minSalary OUTPUT
select @avgSalary,@maxSalary,@minSalary
go

结果截图:

SQL Server存储过程_第9张图片

7.编写一个查找是否存在FNAME包含给定字符串(字符串长度不超过20个字符)的员工的存储过程。如果存在多个符合条件的员工返回1,存在一个返回0,否则返回-1。要求用return实现返回值。分别显示三种情况的存储过程执行结果(必须在结果中输出存储过程返回值)。

SQL 文本:

use Company
go

create proc Select_like(@slike varchar(20))
as
declare @i int
select  @i=COUNT(*) from Employee where FNAME like '%'+@slike+'%'

if(@i=0) return -1
if(@i=1) return 0
if(@i>1) return 1
go

declare @status int
exec @status=Select_like 'z'
print @status
go

结果截图:

当输入’z’,时,结果应该返回-1

SQL Server存储过程_第10张图片

当输入’ohn’,结果应该返回0

SQL Server存储过程_第11张图片

当输入’n’,结果应该返回1

SQL Server存储过程_第12张图片

8.编写一个用OUTPUT参数返回指定部门(用部门号指定部门)员工的平均工资的存储过程。如果输入部门号不存在,则输出“该部门不存在”。

SQL 文本:

use Company
go
create PROC out_depart(@dnumber varchar(50),@avgSalary varchar(20) OUTPUT)
as
declare @count int
select @count=COUNT(*) from Department where DNUMBER=@dnumber
if(@count=0)
begin
set @avgSalary='该部门不存在'
end
else begin
select @avgSalary= AVG(e.SALARY)
from Employee e,Department d
where d.DNUMBER=@dnumber
  and e.DNO=d.DNUMBER
end
return
go

declare @dnumber varchar(50),@avgSalary varchar(20)
set @dnumber='5'
exec out_depart @dnumber,@avgSalary OUTPUT
select @avgSalary as 平均
go

结果截图:

当输入一个不存在的部门号“10”,输出该部门不存在。

SQL Server存储过程_第13张图片

当输入一个存在的部门号“5”,正确输出结果。

SQL Server存储过程_第14张图片

你可能感兴趣的:(SQL,Server)