SQL语句(十八)—— 存储过程
存储过程
系统存储过程
自定义存储过程
扩展存储过程
一、创建存储过程
创建存储过程
--例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语句(十八)—— 存储过程的更多相关文章
- SQL 语句调用这个存储过程,生成顺序编码
一直很讨厌存储过程,没想到今天帮了我大忙啊,或许会因为今天让我慢慢喜欢上存储过程吧,不多说了,切入正题 在使用数据库的时候,难免要在使用过程中进行删除的操作,如果是使用int类型的字段,令其自增长,这 ...
- LINQ to SQL语句(20)之存储过程
在我们编写程序中,往往需要一些存储过程,在LINQ to SQL中怎么使用呢?也许比原来的更简单些.下面我们以NORTHWND.MDF数据库中自带的几个存储过程来理解一下. 1.标量返回 在数据库中, ...
- 【存储过程】用SQL语句获得一个存储过程返回的表
定义一个存储过程如下: create proc [dbo].[test1] @id int as select 1 as id,'abc' as name union all select @id a ...
- Mysql常用sql语句(八)- where 条件查询
测试必备的Mysql常用sql语句,每天敲一篇,每次敲三遍,每月一循环,全都可记住!! https://www.cnblogs.com/poloyy/category/1683347.html 前言 ...
- 用SQL语句获得一个存储过程返回的表
1. 定义一个表变量 declare @table table(ReportType nvarchar(30),ReportPath nvarchar(200),ParaCnt int,DataAre ...
- 动态sql语句,非存储过程,如何判断某条数据是否存在,如果不存在就添加一条
已知一个表 table 里面有两个字段 A1 和 A2 如何用动态语句 判断 A1 = A , A2=B 的数据是否存在,如果不存在,就添加一条数据, A1 = A , A2 = B INSERT ...
- sql 语句随机时间存储过程
CREATE PROC [dbo].[Proc_GetRandomTime](@startTime datetime,@endTime datetime,@date datetime output ) ...
- 必须会的SQL语句(八)数据库的完整性约束
实体完整性 1.建表时定义主键 Create table 表名 ( Sno int identity(1,1), Sname nvarchar(20), ...
- SQL语句(八)按条件查询
SELECT * FROM student SELECT sclass, snumb, sname FROM student --物理班有哪些同学 --年龄小于20岁的有哪些同学? --定价在30元以 ...
- MySQL存储过程动态SQL语句的生成
用Mysql存储过程来完成动态SQL语句,使用存储过程有很好的执行效率: 现在有要求如下:根据输入的年份.国家.节假日类型查询一个节假日,我们可以使用一般的SQL语句嵌入到Java代码中,但是执行效率 ...
随机推荐
- 代码上传不到github远程仓库的经历和总结
第二次的作业是分布式版本控制系统Git的安装与使用.一切都好端端地进行,知道最后的上传到给远程仓库时一直都上传失败.舍友也过来调试和助教的指导,依然不成功.我也上网进行了大量的翻查资料也未能成功.这是 ...
- ASP.NET MVC 1.0 参考源码索引
http://www.projky.com/asp.netmvc/1.0/System/Web/Mvc/AcceptVerbsAttribute.cs.htmlhttp://www.projky.co ...
- Effective Modern C++翻译(2)-条款1:明白模板类型推导
第一章 类型推导 C++98有一套单一的类型推导的规则:用来推导函数模板,C++11轻微的修改了这些规则并且增加了两个,一个用于auto,一个用于decltype,接着C++14扩展了auto和dec ...
- js 算法
var str=‘abscdf’; function solution(str){ var arr=new Array(); if(str.length%2==0){ for(i=0;i<str ...
- Beta阶段团队项目开发篇章1
例会时间:2016.12.1 例会照片: 个人工作: 任务分配: 组员 任务内容 李文涛 编写并发布调查问卷 姬索肇 审核并传播调查问卷 韩慧敏 审核并传播调查问卷 任务截止时间 2016.12.4 ...
- charles使用教程 干货~
大部分内容来自前辈们的摘写,博客园是怎么去转载其他好的博呢~ 言归正传,教程看过后还是自己再来一遍理解和操作才会更加深刻. Charles 是在 Mac/WIN下常用的网络封包截取工具,在做移动开发时 ...
- PAT 甲级 1113 Integer Set Partition
https://pintia.cn/problem-sets/994805342720868352/problems/994805357258326016 Given a set of N (> ...
- mongodb 下载安装 转
MongoDB是一个介于关系数据库和非关系数据库之间的产品,是非关系数据库当中功能最丰富,最像关系数据库的.他支持的数据结构非常松散,是类似json的bjson格式,因此可以存储比较复杂的数据类型.M ...
- java 数字转中文
java代码 数字转中文,该方法只做了对int型整数的转换 private static String numberToChinese(int number) { String[] numbers = ...
- BZOJ5294 BJOI2018二进制(线段树)
二进制数能被3整除相当于奇数.偶数位上1的个数模3同余.那么如果有偶数个1,一定存在重排方案使其合法:否则则要求至少有两个0且至少有3个1,这样可以给奇数位单独安排3个1. 考虑线段树维护区间内的一堆 ...