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 ...
随机推荐
- 怎么让input默认为0
<span class="item_title">供应商定金</span> <div class="flex-fill flex" ...
- 拦截RestTemplate的请求
RestTemplate一般用于方法内部请求调用,请求报错时难以调试,所以可以为RestTemplate加拦截器进行调试,具体操作如下: 拦截器LoggingClientHttpRequestInte ...
- js svg转图片格式
1.情景展示 闲来无事的时候,发现chrome扩展程序里面有图像,本想下载下来,却发现文件格式是svg格式,如何将svg文件改成图片格式? chrome-extension://jlgkpaici ...
- 冰多多团队-第七次scrum例会
冰多多团队-第七次Scrum会议 工作情况 团队成员 已完成任务 待完成任务 zpj 接入IAT模块 debug, IAT 牛雅哲 调研科大讯飞SDK中其他模块,寻找符合我们的需求的部分,将接口更换成 ...
- linux安装yasm报错
进入yasm-1.2.0, 输入指令 ./configure //编译yasm make && make install //安装yasm,安装完成即可. 报错信息 make[2]: ...
- 后台启动es head,关闭shell后es head自动关闭
后台启动head命令:grunt server & 注意:加上&虽然执行了后台启动,但还是有日志打印出来,使用ctrl+c可以退出.这时如果直接关闭shell, head进程就会终止 ...
- Delphi XE7并行编程: 并行For循环
从Delphi XE7开始,引入了全新的并行编程库用于简化并行编程,它位于System.Threading单元中. 下面是一个判断素数的简单例子:function IsPrime (N: Intege ...
- win10 安装mysql 8.0.18 解决Navicat初次连接报错
win10 安装mysql 8.0.18 解决Navicat初次连接报错 win10 安装mysql 8.0.18-winx64 一,先去官网下载mysql 安装包 https://dev.mysql ...
- KMS服务器激活
https://blog.csdn.net/weixin_42588262/article/details/81120403 http://kms.cangshui.net/ https://kms. ...
- 前端解析 excel docx
在研究中... https://www.npmjs.com/package/xlsx https://www.jianshu.com/p/68a420a68ded https://www.jiansh ...