SQL语句(十八)—— 存储过程

Posted 豆子

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了SQL语句(十八)—— 存储过程相关的知识,希望对你有一定的参考价值。

存储过程

  1. 系统存储过程

  2. 自定义存储过程

  3. 扩展存储过程

一、创建存储过程

  1. 创建存储过程

--例1
USE SU
GO
Create Procedure SelProc
AS
Select * 
From SC
GO

--例2
USE SU
GO
Create Procedure CountProc
AS
Select Count(*) AS 总数 
From Course
Go

 2. 存储过程调用

USE SU
GO
Exec SelProc
Exec CountProc

 3. 创建带输入参数的存储过程

--例1 创建 带输入参数 的存储过程
USE SU
GO
Create Procedure QueryById @Sno varchar(10)
AS
Select *
from SC
Where Sno = @Sno
GO
--执行
GO
Execute QueryById 1513032087
Execute QueryById @Sno = 1513032087

--创建 带默认参数 的存储过程
USE SU
GO
create Procedure QueryById2 @Sno varchar(10) = 1513032087
AS
Select *
From SC
where Sno = @Sno
GO
--执行(可以不带参数, 因为有默认参数)
EXecute QueryById2

4. 创建带输出参数的存储过程(执行时候,需要声明!!!!!!)

--例4
Use SU
GO
Create Procedure QueryById3 
@Sno varchar(10) = 1513032087,
@Cnocount INT OUTPUT   --输出参数,Sno学号选的课程数
AS
Select @Cnocount = Count(SC.Cno)
From SC, Student
where SC.Sno = Student.Sno and SC.Sno = @Sno
GO
--执行
--必须先声明!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!
Declare @Sno varchar(10) = 1513032087;
Declare @Cnocount int;                     --声明之后再执行
EXEC QueryById3 @Sno, @Cnocount OUTPUT
Select 学号为 + @Sno + 选了 + Ltrim(STR(@Cnocount)) + 门课  --字符串还需要处理一下
GO

 

二、管理存储过程

1. 修改存储过程

------------管理存储过程------------------
--修改存储过程
exec CountProc   --查询
GO
Alter Procedure CountProc
AS
select Sno, COUNT(*) AS 总数
From SC
Group By Sno

--查看属性
GO
select OBJECT_DEFINITION(OBJECT_ID(QueryById));  --select OBJECT_DEFINITION(OBJECT_ID(‘存储过程名‘));
Exec sp_help QueryById      
Exec sp_helptext QueryById


--删除操作
GO
DROP procedure 存储过程

 

以上是关于SQL语句(十八)—— 存储过程的主要内容,如果未能解决你的问题,请参考以下文章

用存储过程好,还是在代码中写SQL语句好

求 存储过程和Sql语句之间的区别 余额准确越好

.NET Entity Framework(EF)使用SqlQuery直接操作SQL查询语句或者执行过程

怎样SQL存储过程中执行动态SQL语句

SQL 存储过程

sqlserver利用存储过程去除重复行的sql语句