存储过程sql,存储过程sql分页
SQL中存储过程是干什么用的?
存储过程是在大型数据库系统中,一组为了完成特定功能的SQL 语句集,它存储在数据库中,一次编译后永久有效,用户通过指定存储过程的名字并给出参数(如果该存储过程带有参数)来执行它。存储过程是数据库中的一个重要对象。
数据库存储过程的实质就是部署在数据库端的一组定义代码以及SQL。将常用的或很复杂的工作,预先用SQL语句写好并用一个指定的名称存储起来,那么以后要叫数据库提供与已定义好的存储过程的功能相同的服务时,只需调用execute,即可自动完成命令。
每个参数名前要有一个“@”符号,每一个存储过程的参数仅为该程序内部使用,参数的类型除了IMAGE外,其他SQL Server所支持的数据类型都可使用。
扩展资料:
SQL中存储过程优点:
1、重复使用。存储过程可以重复使用,从而可以减少数据库开发人员的工作量。
2、减少网络流量。存储过程位于服务器上,调用的时候只需要传递存储过程的名称以及参数就可以了,因此降低了网络传输的数据量。
3、安全性。参数化的存储过程可以防止SQL注入式攻击,而且可以将Grant、Deny以及Revoke权限应用于存储过程。
4、存储过程只在创造时进行编译,以后每次执行存储过程都不需再重新编译,而一般SQL语句每执行一次就编译一次,所以使用存储过程可提高数据库执行速度。
参考资料来源:百度百科-存储过程
如何创建SQL存储过程?
CREATE proc ProcBlacker_ADD --定义存储过程
@UserID int, --用户输入的参数1
@strName varchar(20), --用户输入的参数2
@strMobile varchar(20), --用户输入的参数3
@strRemark nvarchar(200) --用户输入的参数4,最后一个不需要加,
as
declare @ID int --定义变量
declare @Account varchar(50) --同上
declare @Content varchar(50) --同上
if not exists(select * from tblBlackList(nolock) --如果不存在则执行下面的语句.
where fdcMobile=@strMobile)
begin
insert into tblBlackList(fdcMobile,fdcName,fdtTm,fdcMemo)
values(@strMobile,@strName,getdate(),@strRemark) --getdate()获取当前系统的时间
set @ID=@@identity --返回一行记录
select @Account=Account from dbo.UserInfo where UserID=@UserID
set @Content='添加黑名单('+'操作者:'+@Account+','+'用户名:'+@strName+'手机:'+@strMobile+'备注:'+@strRemark+')' --设置变量的值
exec ProcRecordLog @Account,'添加',@Content ---执行储过程ProcRecordLog
return @ID
end
GO
这个存储后面调用了ProcRecordLog存储过程
SQL 中存储过程怎么使用?
一、简单的储存过程:
1、创建一个存储过程
create procedure GetUsers()
begin
select * from user;
end;12345
2、调用存储过程
call GetUsers();12
3、删除存储过程
drop procedure if exists GetUsers;
二、带参数的存储过程
1、MySql 支持 IN (传递给存储过程) , OUT (从存储过程传出) 和 INOUT (对存储过程传入和传出) 类型的参数 , 存储过程的代码位于 BEGIN 和 END 语句内 , 它们是一系列 SQL 语句 , 用来检索值 , 然后保存到相应的变量 (通过指定INTO关键字) ;
2、下面的存储过程接受三个参数 , 分别用于获取用户表的最小 , 平均 , 最大分数 , 每个参数必须具有指定的类型 , 这里使用十进制值(decimal(8,2)) , 关键字 OUT 指出相应的参数用来从存储过程传出
create procedure GetScores(
out minScore decimal(8,2),
out avgScore decimal(8,2),
out maxScore decimal(8,2)
)
begin
select min(score) into minScore from user;
select avg(score) into avgScore from user;
select max(score) into maxScore from user;
end;1234567891011
3、调用此存储过程 , 必须指定3个变量名(所有 MySql 变量都必须以?@?开始) , 如下所示 :
call GetScores(@minScore, @avgScore, @maxScore);12
4、该调用并没有任何输出 , 只是把调用的结果赋给了调用时传入的变量?@minScore, @avgScore, @maxScore?, 然后即可调用显示该变量的值 :
select @minScore, @avgScore, @maxScore;
5、使用 IN 参数 , 输入一个用户 id , 返回该用户的名字 :
create procedure GetNameByID(
in userID int,
out userName varchar(200)
)
begin
select name from user
where id = userID
into userName;
end;12345678910
6、调用存储过程 :
call GetNameByID(1, @userName);
select @userName;123
参考资料
SQL存储过程使用介绍.csdn博客[引用时间2017-12-31]
sql存储过程是什么
sql存储过程说简单点就是一个在t-sql下用户可以自行定义的函数,
但是与一般的函数也有不同的地方,比如它的返回值只能RETURN(INT类型),如果你要输出什么信息的话只能用OUTPUT.这也是存储过程的一个特色吧,设定的参数可以有输出。讲起来有点抽象,给你个例子看看吧!
首先创建一个存储过程
CREATE
PROCEDURE
cunchuguocheng
@a
int,
@b
int,
@c
int
output
as
begin
select
@c
=
@a+@b
return(0)
end
然后调用这个存储过程
declare
@value
int,
--返回值
@c
int
--结果值
exec
@value
=
cunchuguocheng
2,2,@c
output
select
@value
as
返回值
select
@c
as
结果值
程序写的很简单,你运行一下我想你就会对存储过程有所了解了。
创建存储过程sql语句
1)过程名
存储过程的名称,默认在当前数据库中创建。若需要在特定数据库中创建存储过程,则要在名称前面加上数据库的名称,即db_name.sp_name。
需要注意的是,名称应当尽量避免选取与MySQL内置函数相同的名称,否则会发生错误。
2)过程参数
存储过程的参数列表。其中,为参数名,为参数的类型(可以是任何有效的MySQL数据类型)。当有多个参数时,参数列表中彼此间用逗号分隔。存储过程可以没有参数(此时存储过程的名称后仍需加上一对括号),也可以有1个或多个参数。
MySQL存储过程支持三种类型的参数,即输入参数、输出参数和输入/输出参数,分别用IN、OUT和INOUT三个关键字标识。其中,输入参数可以传递给一个存储过程,输出参数用于存储过程需要返回一个操作结果的情形,而输入/输出参数既可以充当输入参数也可以充当输出参数。
在SQL中存储过程的一般语法是什么?
1、 创建语法
create?proc?|?procedure?pro_name
[{@参数数据类型}?[=默认值]?[output],
{@参数数据类型}?[=默认值]?[output],
....
]
as
SQL_statements
2、 创建不带参数存储过程
--创建存储过程
if?(exists?(select?*?from?sys.objects?where?name?=?'proc_get_student'))
drop?proc?proc_get_student
go
create?proc?proc_get_student
as
select?*?from?student;
--调用、执行存储过程
exec?proc_get_student;
3、 修改存储过程
--修改存储过程
alter?proc?proc_get_student
as
select?*?from?student;
4、 带参存储过程
--带参存储过程
if?(object_id('proc_find_stu',?'P')?is?not?null)
drop?proc?proc_find_stu
go
create?proc?proc_find_stu(@startId?int,?@endId?int)
as
select?*?from?student?where?id?between?@startId?and?@endId
go
exec?proc_find_stu?2,?4;
5、 带通配符参数存储过程
--带通配符参数存储过程
if?(object_id('proc_findStudentByName',?'P')?is?not?null)
drop?proc?proc_findStudentByName
go
create?proc?proc_findStudentByName(@name?varchar(20)?=?'%j%',?@nextName?varchar(20)?=?'%')
as
select?*?from?student?where?name?like?@name?and?name?like?@nextName;
go
exec?proc_findStudentByName;exec?proc_findStudentByName?'%o%',?'t%';
扩展资料:
SQL存储过程优点:
1、重复使用。存储过程可以重复使用,从而可以减少数据库开发人员的工作量。
2、减少网络流量。存储过程位于服务器上,调用的时候只需要传递存储过程的名称以及参数就可以了,因此降低了网络传输的数据量。
3、安全性。参数化的存储过程可以防止SQL注入式攻击,而且可以将Grant、Deny以及Revoke权限应用于存储过程。
参考资料来源:百度百科—存储过程