Sqlserver 总结(2) 存储过程
写在前面
存储过程在做项目的过程中,是会经常用到的东西。所以,以下结合我看到的资料和平时对存储过程的认识。写下我对存储过程比较浅显的认识。如果,文章有什么写的有问题的地
方或者不好的地方。请随时@我,我会及时回复您的信息,并且认真对待每一次提出的问题与建议。人无完人,金无赤足。
文章出处:原文
什么是存储过程
维基百科是这样定义存储过程的。它说存储过程是一组为了完成特定功能的SQL 语句集。而对于我的理解存储过程就是一个预先编译好的T-SQL语句。
存储过程的优点
1.执行速度快
*由于数据库运行的过程中,是先编译后运行的。然而存储过程是一个编译过的代码块,所以执行效率会比T-SQL语句块。
2.降低了网络的通讯,提高通讯的效率
*由于一个存储过程在程序网络中交互可以替代大量的T-SQL语句。所以,它能降低网络的通讯量,提高通讯的效率。
3.安全
*通过存储过程能够使没有权限的用户在控制之下间接地存取数据库,从而确保了数据的安全。
存储过程的分类
1.只返回单一记录集的存储过程
--创建存储过程
create proc proc_SingleValue as
begin
select * from sys_user
end
go
--执行存储过程
exec proc_SingleValue
2.没有输入输出的存储过程
--创建存储过程
create proc proc_NoInOut as
begin
insert into sys_user(user_id,u_id,u_password,gender,user_name,creation_time,creation_user,
update_time,update_user,status) values(newid(),'admin','admin','y','admin',getdate(),'管理员'
,getdate(),'','y')
end
go
--执行存储过程
exec proc_NoInOut
3.有返回值的存储过程
--创建存储过程
create proc proc_returnValue as
begin
insert into sys_user(user_id,u_id,u_password,gender,user_name,creation_time,
creation_user,update_time,update_user,status)
values(newid(),'admin','admin','y','admin',getdate(),'管理员',getdate(),'','y')
end
return @@rowcount
go
--执行存储过程
exec proc_returnValue
4.有输入参数和输出参数的存储过程
--创建存储过程
create proc proc_InOut
@username nvarchar(50),
@userpwd nvarchar(50),
@errornum int output
as
begin
select @errornum=count(*) from sys_user where u_id=@username and u_password=@userpwd;
end
go
--执行存储过程
exec proc_InOut
5.同时具有返回值、输入参数、输出参数的存储过程
--创建存储过程
create proc proc_InOut_returnValue
@username nvarchar(50),
@userpwd nvarchar(50),
@errornum int output
as
begin
if(@username='admin' and@userpwd='admin')
select @errornum=count(*) from sys_user where u_id=@username and u_password=@userpwd;
else
set @errornum=0;
return @@rowcount
end
go
--执行存储过程
exec proc_InOut_returnValue 'admin','admin',null
6.同时返回参数和记录集的存储过程
--创建存储过程
create proc proc_returnValue_returnds
@username nvarchar(50),
@userpwd nvarchar(50),
@errornum int output
as
begin
if(@username='admin' and@userpwd='admin')
select @errornum=count(*) from sys_user where u_id=@username and u_password=@userpwd;
else
set @errornum=0;
select * from sys_user;
return @@rowcount;
end
go
--执行存储过程
exec proc_returnValue_returnds 'admin','admin',null
7.返回多个记录集的存储过程
--创建存储过程
create proc proc_alldt as
begin
select * from sys_user;
select * from sys_user where u_id='user';
end
go
--执行存储过程
exec proc_alldt
Sqlserver 总结(2) 存储过程的更多相关文章
- JAVA使用JDBC技术操作SqlServer数据库执行存储过程
Java使用JDBC技术操作SqlServer数据库执行存储过程: 1.新建SQLSERVER数据库:java_conn_test 2.新建表:tb_User 3.分别新建三个存储过程: 1>带 ...
- sqlserver 批量删除存储过程和批量修改存储过程的语句
sqlserver 批量删除存储过程和批量修改存储过程的语句- sqlserver 批量删除存储过程和批量修改存储过程的语句,需要的朋友可以参考下. - 修改: 复制代码 代码如下: declare ...
- SQLServer分页查询存储过程
项目中用到的SQLServer分页查询存储过程. [存储过程] create PROCEDURE prcPageResult -- 获得某一页的数据 -- @currPage int = 1, ...
- sqlserver 批量删除存储过程(转)
sqlserver一次只能删除一个存储过程,如果多了,需要很长时间才能删完,所以写了一段语句,直接就把当然数据库下所有用户自定义的存储过程给drop了.不过使用都请留心,当前打开的数据库哦.下面贴代码 ...
- SQLServer中系统存储过程sp_spaceused
sp_spaceused 执行sp_spaceused存储过程的时候可以不用带参数,直接执行,或者exec sp_spaceused都可以,返回两个结果集: 列名 数据类型 描述 database_n ...
- SqlServer更新视图存储过程函数脚本
--视图.存储过程.函数名称 DECLARE @NAME NVARCHAR(255); --局部游标 DECLARE @CUR CURSOR --自动修改未上状态为旷课 SET @CUR=CURSOR ...
- mssql sqlserver 自动备份存储过程的方法分享
转自:http://www.maomao365.com/?p=7847摘要: 为了更好的记录数据库中存储过程脚本的变化情况,下文采用数据库触发器来自动记载每次“存储过程”的变化(新增或修改),如下所示 ...
- SqlServer如何获取存储过程的返回值
1.Output参数返回值 1 CREATE PROCEDURE [dbo].[upInformation]( 2 @age int , 3 @id bigint OUTPUT 4 ) 5 AS 6 ...
- SQLServer之删除存储过程
删除存储过程注意事项 在删除任何存储过程之前,请检查依赖对象,并且相应地修改这些对象. 如果没有更新这些对象,则删除存储过程可能会导致依赖对象和脚本失败. 若要显示现有过程的列表,请查询 sys.ob ...
- SQLServer之修改存储过程
修改存储过程注意事项 只能修改先前在 SQL Server 中通过执行 CREATE PROCEDURE 语句创建的过程. Transact-SQL 存储过程修改为 CLR 存储过程,反之亦然. AL ...
随机推荐
- 牛顿迭代法(c++)
编写一个用牛顿法解方程x=tanx 的程序,求最接近4.5和7.7的根 #include <iostream> #include <cmath> using namespace ...
- php 面试必备:各种缓存技术详解
这门课程以电商网站为例,通过具体场景模块实战,让你更系统的掌握缓存原理.使用场景等相关知识,帮助你构建完整的缓存知识体系,胜任实际开发中缓存的处理,提升代码性能! 从原理到场景 系统讲解PHP缓 ...
- 往hbase插入数据,你会选择哪种?
好久,好久没有写个博客了,自从上次封闭开始,到“自闭”,有了一段时间了,哈哈^_^ . 多亏了云桌面的歇菜, 一下午啥都干不了, 突然想到,好久没有写点啥了,就写的,让时间流走有点痕迹吧 _(:з」∠ ...
- [转]TrueType字体结构
TrueType字体通常包含在单个TrueType字体文件中,其文件后缀为.TTF. OpenType字体是以类似于TrueType字体的格式编码的POSTSCRIPT字体.OPENTYPE字体使用. ...
- Android android:allowBackup waiting for backup
在Google settings 中,有个backup 选项,在里面选择开启 如果开启vpn,还是在setting里面还是waiting for backup, 就通过手机链接电脑,安装android ...
- MongoDB开发深入之一:文档数据关系模型详解(一对多,多对多)
文档关联模型通常有3种方式: 嵌入式(一对一.一对多) 后期手动统一ID处理(一对多.多对多) References引用(一对一.一对多) 文档树模型通常有3种方式: 父引用(Parent Refer ...
- Failed to open .vcf.gz: could not load index
这类报错在我使用bcftools index file.vcf.gz进行index出现的. 解决办法是换用tabix进行index,命令为tabix -p vcf file.vcf.gz. 用tabi ...
- PMP 第9~10章错题总结
1.组织分解结构把组织中的部门与项目中的工作包联系起来2.管理项目团队时应该使用冲突管理3.职责分配矩阵(RAM)显示了分配给每个工作包的项目资源,用于说明工作包或活动与项目团队成员之间的关系.而RA ...
- SpringBoot小技巧:Jar包换War包
SpringBoot小技巧:Jar包换War包 情景 我们都知道springBoot中已经内置了tomcat,是不需要我们额外的配置tomcat服务器的,但是有时这也可能是我们的一个瓶颈,因为如果我们 ...
- 1-3docker commit定制镜像
以定制⼀个 Web 服务器为例⼦ 1.commit定制镜像 docker pull nginx:1.17 运行容器 --name:容器名字 -d:后台 -p本地端口:容器内端口 docker ru ...