Sqlserver总结(2) 存储过程

mac2022-06-30  83

目录

写在前面什么是存储过程存储过程的优点存储过程的分类 1.只返回单一记录集的存储过程2.没有输入输出的存储过程3.有返回值的存储过程4.有输入参数和输出参数的存储过程5.同时具有返回值、输入参数、输出参数的存储过程6.同时返回参数和记录集的存储过程7.返回多个记录集的存储过程

写在前面


存储过程在做项目的过程中,是会经常用到的东西。所以,以下结合我看到的资料和平时对存储过程的认识。写下我对存储过程比较浅显的认识。如果,文章有什么写的有问题的地

方或者不好的地方。请随时@我,我会及时回复您的信息,并且认真对待每一次提出的问题与建议。人无完人,金无赤足。

文章出处:原文

什么是存储过程


维基百科是这样定义存储过程的。它说存储过程是一组为了完成特定功能的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

转载于:https://www.cnblogs.com/ZengJiaLin/p/11139101.html

相关资源:JAVA上百实例源码以及开源项目
最新回复(0)