SQLserver中存储过程的应用

在SQL中,存储过程类似于编程语言的函数,即当创建一个存储过程之后便可以在接下来任何类似的操作是直接调用存储过程

那么我们创建存储过程的优势是什么呢:

1.提高性能:存储过程将SQL语句封装在一起,降低了数据传输的成本,减少执行时间。

2.提高安全性:通过存储过程,可以访问数据的特定接口,从而控制对数据库的访问

3.简化复杂操作:计算、逻辑和业务规划等重复性较高的动作时,使用存储结构可以保障数据的一致性、完整性、可靠性。

下面介绍存储过程的创建以及使用步骤

(1)无参传递:即主程序不需要参数传递进去就能执行

create procedure 存储过程名称 as 操作命令
以创建一个查询学生成绩平均分的存储过程为例

create procedure pjf as
select 成绩表.学号,姓名,avg(成绩) as 平均分 from 
成绩表 join 学生表 on 学生表.学号=成绩表.学号 group by 成绩表.学号,姓名

此时就创建好了一个名为“pjf”的存储过程,此时只要我们选择运行该存储过程就可以得到关于学生平均分的一个表格。

下面展示无参传递时使用存储过程的代码

execute pjf

(2)有参传递:通过输入参数使存储过程输出不同结果(实用性,灵活性更强)

create procedure 存储过程名称 @参数名称 参数数据类型 
as 操作命令(其中操作命令需要使用参数传入使输出结果改变)

下面列举通过学生性别和姓名查询学生表当中学生信息的存储过程的建立

create procedure xbxm @xb char(2),@xm nchar(6) as 
select*from 学生表 where 性别=@xb and left(姓名,1)=@xm

其中需要注意的是:在SQLserver中定义参数时要求参数名以@为起始并且具有唯一性

当我们完成有参存储过程的建立之后在使用它时,我们需要在使用的时候将该存储过程需要的参数输入完成查询,例如

execute xbxm '女','李'

查询结果展示

 (3)有参传递并且将形参或者实参返回

create procedure 存储过程名称 @参数名称1 参数数据类型,@参数名称2 参数数据类型 output as 操作命令
此处需要注意,只有需要返回的参数才跟一个output,正常输入且不需要返回的参数不用跟

下面举例输入学生学号和课程名称返回该学生的课程成绩

create procedure 输出成绩 @xh nchar(6),@kch nchar(6),@cj int output as
select @cj=成绩 from 学生成绩课程表 where 学号=@xh and 课程号=@kch

注意!!!:一定是需要返回的参数才跟output

此时使用有返回值的参数的存储过程的代码为

declare @cj int
execute 输出成绩 '001','D001',@cj output
print @cj


使用该存储过程时的注意事项为:
需要提前定义返回参数,并且在execute语句后面在返回参数之后添加output
使用print打印返回的参数值
  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
SQL Server的存储过程是一组预编译的SQL语句集合,它们被存储在数据库,并可以在需要时被调用。存储过程可以接受参数、执行查询、更新数据等操作,并且可以返回结果集或输出参数。 存储过程有以下几个优点: 1. 提高性能:存储过程在数据库服务器上进行编译和优化,可以减少网络传输的开销,提高查询性能。 2. 可重用性:存储过程可以被多个应用程序调用,提高了代码的重用性。 3. 安全性:通过存储过程可以限制对数据库的直接访问,只允许访问指定的存储过程,提高了数据的安全性。 4. 简化复杂操作:存储过程可以封装复杂的查询逻辑或业务逻辑,简化了应用程序的开发和维护。 要创建和执行SQL Server的存储过程,可以使用SQL Server Management Studio(SSMS)或者Transact-SQL语句。下面是一个创建存储过程的示例: ```sql CREATE PROCEDURE GetEmployee @FirstName VARCHAR(50), @LastName VARCHAR(50) AS BEGIN SELECT * FROM Employees WHERE FirstName = @FirstName AND LastName = @LastName END ``` 以上示例创建了一个名为GetEmployee的存储过程,接受两个参数@FirstName和@LastName,并返回符合条件的员工信息。 要执行存储过程,可以使用EXECUTE或者EXEC关键字,例如: ```sql EXEC GetEmployee 'John', 'Doe' ``` 这样就会执行GetEmployee存储过程,传入参数'John'和'Doe',并返回符合条件的员工信息。 希望以上信息对你有帮助,如果你还有其他问题,请继续提问。

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值