SQL中存储过程是干什么用的?

如题所述

存储过程是在大型数据库系统中,一组为了完成特定功能的SQL 语句集,它存储在数据库中,一次编译后永久有效,用户通过指定存储过程的名字并给出参数(如果该存储过程带有参数)来执行它。存储过程是数据库中的一个重要对象。

数据库存储过程的实质就是部署在数据库端的一组定义代码以及SQL。将常用的或很复杂的工作,预先用SQL语句写好并用一个指定的名称存储起来,那么以后要叫数据库提供与已定义好的存储过程的功能相同的服务时,只需调用execute,即可自动完成命令。

每个参数名前要有一个“@”符号,每一个存储过程的参数仅为该程序内部使用,参数的类型除了IMAGE外,其他SQL Server所支持的数据类型都可使用。

扩展资料:

SQL中存储过程优点:

1、重复使用。存储过程可以重复使用,从而可以减少数据库开发人员的工作量。

2、减少网络流量。存储过程位于服务器上,调用的时候只需要传递存储过程的名称以及参数就可以了,因此降低了网络传输的数据量。

3、安全性。参数化的存储过程可以防止SQL注入式攻击,而且可以将Grant、Deny以及Revoke权限应用于存储过程。

4、存储过程只在创造时进行编译,以后每次执行存储过程都不需再重新编译,而一般SQL语句每执行一次就编译一次,所以使用存储过程可提高数据库执行速度。

参考资料来源:百度百科-存储过程

温馨提示:答案为网友推荐,仅供参考
第1个回答  2019-06-03

存储过程存储在数据库中,一次编译后永久有效,用户通过调用来执行功能。

存储过程是为大型数据库系统中,提供特定函数存储在数据库中的一组SQL语句,它在编译后永久有效。用户可以通过指定存储过程的名称并给出参数(如果存储过程有参数)来执行它。存储过程是数据库中的一个重要对象。

存储过程这类语言主要提供以下功能,让用户可以设计出符合应用需求的程序:变量说明;ANSI(美国国家标准化组织)兼容的SQL命令(如Select,Update等);一般流程控制命令(if…else…、while….);内部函数。

扩展资料:

使用存储过程的原因:

1、处理复杂的业务逻辑。

2、减少客户/服务器间的通信量(将复杂的应用逻辑交给服务器)。

3、增加安全性。

4、规划查询,允许模块化程序设计。

5、存储过程可以明显减少系统并行查询能力(系统不能同时进行多个设计存储过程的查询,但可以并行执行各自的SQL语句)。

参考资料来源:百度百科-存储过程

本回答被网友采纳
第2个回答  2011-06-08
使用存储过程的原因
1. 处理复杂的业务逻辑;
2. 减少客户/服务器间的通信量(将复杂的应用逻辑交给服务器);
3. 增加安全性;
4. 规划查询,允许模块化程序设计
5. 存储过程可以明显减少系统并行查询能力(系统不能同时进行多个设计存储过程的查询,但可以并行执行各自的SQL语句)
6. 接受输入参数并以输出参数的形式将多个值返回调用过程或批处理。
存储过程的特点
1. 仅允许间接存储数据;
2. 封装着公用的算法和事务;
3. 它被存储在系统表中;
4. 仅在该过程第一次被执行时进行编译;
5. 可接收输入参数;
6. 可调用其它存储过程;
7. 可返回状态值;
8. 可返回输出参数或结果集。

存储过程的设计约束
Create Procedure定义本身可包括除下列create语句外任何数量和类型的SQL语句,存储过程的任意地方都不能使用下列语句。
Create Trigger//建立触发器
Create view//建立视图
Create procedure//建立存储过程

创建存储过程实例
创建一个向表tb_employeeinfo中插入数据的存储过程p_employeeinsert:
Create or Replace Procedure p_employeeinsert(
arg_employeeid tb_employeeinfo.employeeid%TYPE,
agr_name tb_employeeinfo.nam%TYPE,
agr_sex tb_employeeinfo.sex%TYPE,
arg_education tb_employeeinfo.education%TYPE,
arg_address tb_employeeinfo.address%TYPE )
begin
insert into tb_employeeinfo(
employeeid,
name,
sex,
education,
address)
values(
arg_employeeid,
agr_name,
agr_sex,
arg_education,
arg_address);
end p_employeeinsert;
第3个回答  2008-11-06
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 结果值

程序写的很简单,你运行一下我想你就会对存储过程有所了解了。
第4个回答  2008-11-06
所有设计优良的 Microsoft® SQL Server™ 2000 应用程序都应当使用存储过程。不论是否将应用程序的业务逻辑写入存储过程都应如此。甚至连没有业务逻辑组件的标准 Transact-SQL 语句,在用参数打包成存储过程后也能获得性能收益。编译进存储过程的 Transact-SQL 语句在执行时可省去大量的处理。
存储过程的另一个优点是客户端执行请求使用网络的效率比将等效的 Transact-SQL 语句发送到服务器高。例如,假设应用程序需要将一个大的二进制值插入 image 数据列。为使用 INSERT 语句发送数据,该应用程序必须将该二进制值转换为字符串(其大小翻倍),然后发送到服务器。服务器再将该值转换回二进制格式以存储在 image 列中。
相反,应用程序可以创建下列格式的存储过程:
CREATE PROCEDURE P(@p1 image) AS INSERT T VALUES (@p1)
当客户端应用程序请求执行过程 P 时,image 参数值将一直以二进制格式发送到服务器,从而节省处理时间并减少网络流量。
如果 SQL Server 存储过程中包含业务服务逻辑,因为业务服务逻辑将处理移动到数据,而不是将数据移动到处理,因而存储过程能提供更大的性能收益。
存储过程的优点
(1)存储过程的能力大大增强了SQL语言的功能和灵活性。存储过程可以用流控制语句编写,有很强的灵活性,可以完成复杂的判断和较复杂的 运算。
(2) 可保证数据的安全性和完整性。
● 通过存储过程可以使没有权限的用户在控制之下间接地存取数据库,从而保证数据的安全。
● 通过存储过程可以使相关的动作在一起发生,从而可以维护数据库的完整性。
(3) 再运行存储过程前,数据库已对其进行了语法和句法分析,并给出了优化执行方案。这种已经编译好的过程可极大地改善SQL语句的性能。 由于执行SQL语句的大部分工作已经完成,所以存储过程能以极快的速度执行。
(4)可以降低网络的通信量。
(5) 使体现企业规则的运算程序放入数据库服务器中,以便:
● 集中控制。
● 当企业规则发生变化时在服务器中改变存储过程即可,无须修改任何应用程序。企业规则的特点是要经常变化,如果把体现企业规则的运算程序放入应用程序中,则当企业规则发生变化时,就需要修改应用程序工作量非常之大(修改、发行和安装应用程序)。如果把体现企业规则的 运算放入存储过程中,则当企业规则发生变化时,只要修改存储过程就可以了,应用程序无须任何变化。

1.使用企业管理器创建用户存储过程
操作步骤如下:
(1)启动SQL Server企业管理器。
(2)在“控制台根目录”窗口,展开“SQL Server组”,首先,选择“数据库”,然后,选择“存储过程”,单击鼠标右键,打开快捷菜单。
(3)在打开快捷菜单中,选择“新建存储过程”菜单命令,进入“存储过程属性”窗口。
(4)在“存储过程属性”窗口,在文本框中输入存储过程代码,单击“确定”,结束存储过程的创建。
2.使用T-SQL语句创建用户存储过程
SQL命令格式:
CREATE PROC [ EDURE ] <Procedure_name> [ ; Number ]
[ { @parameter Data_type }
[ VARYING ] [ = Default ] [ OUTPUT ] ] [ ,...n ]
[ WITH { RECOMPILE | ENCRYPTION | RECOMPILE , ENCRYPTION }]
[ FOR REPLICATION ]
AS sql_statements
功能:创建一个用户存储过程,并保存在数据库中。