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
功能:创建一个用户存储过程,并保存在数据库中。

SQL中存储过程是干什么用的?
存储过程是在大型数据库系统中,一组为了完成特定功能的SQL 语句集,它存储在数据库中,一次编译后永久有效,用户通过指定存储过程的名字并给出参数(如果该存储过程带有参数)来执行它。存储过程是数据库中的一个重要对象。数据库存储过程的实质就是部署在数据库端的一组定义代码以及SQL。将常用的或很复...

存储过程是什么意思
存储过程是存储在 dbc 文件中的 Visual FoxPro 代码,是专门操作数据库中数据的代码过程存储过程可以提高数据库的性能,因为在打开一个数据库时,它们便加载到了内存中使用存储过程主要是为了创建用户自定义函数,字段级。一个存储过程是一个可编程的函数,它在数据库中创建并保存它可以有SQL语句和一些特殊...

存储过程是什么
存储过程是一种在数据库中预先定义并保存的程序代码。详细解释:1. 定义与功能 存储过程是一组为了完成特定功能而预先编写好的SQL语句集合。这些语句被数据库管理系统存储并作为一个单独的对象进行管理。通过调用存储过程的名称,用户可以执行其中封装的SQL语句。存储过程可以用于实现复杂的业务逻辑,从而提高...

什么是存储过程
存储过程是为了提高数据库操作的效率和性能而设计的。以下是关于存储过程的详细解释:1. 定义与功能:存储过程是一组为了完成特定功能而编写的SQL语句集合。这些语句被存储在数据库中,并可以被应用程序或用户调用执行。存储过程可以接受参数,并返回结果。它们可以包含逻辑控制结构,如条件语句和循环。2. 优...

谈谈存储过程的优缺点
存储过程是一组为了完成特定功能的SQL语句集,它可以被编译并存储在数据库中,用户可以通过存储过程的名字和参数来调用并执行它。存储过程在数据库应用中非常常见,它既有优点也有缺点。存储过程的优点:1. 性能优化:存储过程在首次执行时被编译,并将执行计划缓存起来,后续调用时可以直接使用已编译的执行...

SQL中存储过程与触发器有什么不同吗?
1、存储过程 存储过程(Stored Procedure)是在大型数据库系统中,一组为了完成特定功能的SQL 语句集,它存储在数据库中,一次编译后永久有效,用户通过指定存储过程的名字并给出参数(如果该存储过程带有参数)来执行它。存储过程是数据库中的一个重要对象。2、触发器 触发器是一种特殊类型的存储过程,它...

什么是存储过程
存储过程是 SQL 语句和可选控制流语句的预编译集合,以一个名称存储并作为一个单元处理,是数据库中的一个对象。存储过程存储在数据库内,可由应用程序通过一个调用执行,而且允许用户声明变量、有条件执行以及其它强大的编程功能。 存储过程的类型1、系统存储过程:以“sp_”为前缀标识,存储在“master...

sql中的存储过程和触发器有什么区别?
1、存储过程:是大型的SQL语句集,用于在大型数据库系统中完成特定的功能。2、初始化:SQLServer提供给程序员和数据分析人员以确保数据初始化的一种方法。二、特点不同 1、存储过程:存储在数据库中,编译后永久有效,用户通过指定存储过程的名称并指定参数(如果存储过程具有参数)来执行。2、insert:是与...

为什么要使用存储过程?
存储过程是指一组具有某种特殊功能的SQL语句集,常用于大型数据库中,也出现于开发过程中。程序员经常运用存储过程是由于其具有以下优点:一、响应时间上来说有优势:如果你在前台处理的话。可能会涉及到多次数据库连接。但如果你用存储过程的话,就只有一次。存储过程可以给我们带来运行效率提高的好处。二...

什么是存储过程?有什么优点?
存储过程是数据库中预先编译并存储的SQL语句集合,其存在旨在提升开发效率和数据处理性能。它们的主要优点在于:重复利用: 存储过程可以多次使用,减少了数据库开发人员编写重复代码的工作量。减少网络流量: 通过在服务器上存储,只需传递过程名和参数,从而降低了数据传输的负担。安全性增强: 参数化存储过程...

相似回答