存储过程

  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()
AS
Select *
from SC
Where Sno = @Sno
GO
--执行
GO
Execute QueryById ''
Execute QueryById @Sno = '' --创建 带默认参数 的存储过程
USE SU
GO
create Procedure QueryById2 @Sno varchar() = ''
AS
Select *
From SC
where Sno = @Sno
GO
--执行(可以不带参数, 因为有默认参数)
EXecute QueryById2

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

--例4
Use SU
GO
Create Procedure QueryById3
@Sno varchar() = '',
@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() = '';
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 存储过程

三、扩展存储过程

可以将参赛传递过扩展存储过程,扩展存储过程也可以返回结果和状态

--查看系统版本信息
EXEC xp_msver

四、自定义函数(允许模块化程序设计)

1. 创建标量函数

--创建一个标量函数,指定学生id值,返回该学生姓名
GO
Create Procedure Snotosname @Sno varchar() = ''
AS
Begin
Declare @Sname varchar()
Select @Sname = (
Select Sname
From Student
where Sno = @Sno)
RETURN @Sname
End

2. 创建表值函数

--例1
GO
Create Function getStuRecordBySex(@Ssex char())
Returns Table
Return
(
select Sno, Sname, Ssex, (Sage + ) as newAge
From Student
where Ssex = @Ssex
)
--执行这个函数
--执行函数
Select *
From getStuRecordBySex('男')

3. 删除函数

--删除函数
Drop Function getStuRecordBySex

SQL语句(十八)—— 存储过程的更多相关文章

  1. SQL 语句调用这个存储过程,生成顺序编码

    一直很讨厌存储过程,没想到今天帮了我大忙啊,或许会因为今天让我慢慢喜欢上存储过程吧,不多说了,切入正题 在使用数据库的时候,难免要在使用过程中进行删除的操作,如果是使用int类型的字段,令其自增长,这 ...

  2. LINQ to SQL语句(20)之存储过程

    在我们编写程序中,往往需要一些存储过程,在LINQ to SQL中怎么使用呢?也许比原来的更简单些.下面我们以NORTHWND.MDF数据库中自带的几个存储过程来理解一下. 1.标量返回 在数据库中, ...

  3. 【存储过程】用SQL语句获得一个存储过程返回的表

    定义一个存储过程如下: create proc [dbo].[test1] @id int as select 1 as id,'abc' as name union all select @id a ...

  4. Mysql常用sql语句(八)- where 条件查询

    测试必备的Mysql常用sql语句,每天敲一篇,每次敲三遍,每月一循环,全都可记住!! https://www.cnblogs.com/poloyy/category/1683347.html 前言 ...

  5. 用SQL语句获得一个存储过程返回的表

    1. 定义一个表变量 declare @table table(ReportType nvarchar(30),ReportPath nvarchar(200),ParaCnt int,DataAre ...

  6. 动态sql语句,非存储过程,如何判断某条数据是否存在,如果不存在就添加一条

    已知一个表 table 里面有两个字段  A1 和 A2 如何用动态语句 判断 A1 = A , A2=B 的数据是否存在,如果不存在,就添加一条数据, A1 = A , A2 = B INSERT  ...

  7. sql 语句随机时间存储过程

    CREATE PROC [dbo].[Proc_GetRandomTime](@startTime datetime,@endTime datetime,@date datetime output ) ...

  8. 必须会的SQL语句(八)数据库的完整性约束

    实体完整性 1.建表时定义主键   Create table 表名    (         Sno int identity(1,1),         Sname nvarchar(20),    ...

  9. SQL语句(八)按条件查询

    SELECT * FROM student SELECT sclass, snumb, sname FROM student --物理班有哪些同学 --年龄小于20岁的有哪些同学? --定价在30元以 ...

  10. MySQL存储过程动态SQL语句的生成

    用Mysql存储过程来完成动态SQL语句,使用存储过程有很好的执行效率: 现在有要求如下:根据输入的年份.国家.节假日类型查询一个节假日,我们可以使用一般的SQL语句嵌入到Java代码中,但是执行效率 ...

随机推荐

  1. LeetCode题解:(221) Maximal Square

    题目说明 Given a 2D binary matrix filled with 0's and 1's, find the largest square containing only 1's a ...

  2. 第七周PSP&进度条

    团队项目PSP 一.表格:     C类型 C内容 S开始时间 E结束时间 I时间间隔 T净时间(mins) 预计花费时间(mins) 讨论 讨论beta阶段任务 10:00 12:30 28 270 ...

  3. Hadoop初探

    本文转自:https://blog.csdn.net/column/details/14334.html 前言 Hadoop是什么? 用百科上的话说:“Hadoop是一个由Apache基金会所开发的分 ...

  4. gitlab修改root密码

    在root用户下,执行 [root@localhost gitlab]# sudo gitlab-rails console production -------------------------- ...

  5. [转帖]HR职能划分三支柱模型

    HR职能划分三支柱模型 http://blog.sina.com.cn/s/blog_afbd12640101o5hf.html COE(Centre of Excellence or Center ...

  6. node 加密音频文件 和 解密音频文件

    fs.readFile('./downsuccess/'+name+'', {flag: 'r+', encoding: ''}, function (err, data) {           c ...

  7. hdu 4686 Arc of Dream(矩阵快速幂)

    链接:http://acm.hdu.edu.cn/showproblem.php?pid=4686 题意: 其中a0 = A0ai = ai-1*AX+AYb0 = B0bi = bi-1*BX+BY ...

  8. SpringBoot(十三)_springboot上传Excel并读取excel中的数据

    今天工作中,发现同事在整理数据,通过excel上传到数据库.所以现在写了篇利用springboot读取excel中的数据的demo.至于数据的进一步处理,大家肯定有不同的应用场景,自行修改 pom文件 ...

  9. 【Nginx笔记】 fastcgi_param解释

    fastcgi_param SCRIPT_FILENAME $document_root$fastcgi_script_name;#脚本文件请求的路径 fastcgi_param QUERY_STRI ...

  10. MySQL复合主键下ON DUPLICATE KEY UPDATE语句失效问题

    问题的起因,假设有一张表,里面保存了交易订单,每张订单有唯一的ID,有最后更新时间,还有数据,详情如下: 1 2 3 4 5 6 7 +-------+----------+------+-----+ ...