存储过程跟SQL语句比较,各有啥优点和缺点?

Posted

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了存储过程跟SQL语句比较,各有啥优点和缺点?相关的知识,希望对你有一定的参考价值。

SQL存储过程放在SQL数据库中,1,因此在程序中调用的时候不必自己拼接sql语句。2,SQLSERVER会对存储过程进行预编译,因此速度快。3,在网络上不必传输冗长的SQL语句,而是直接调用存储过程的名字,因此可以加快速度当然,在一些外包软件开发中,是不允许使用存储过程的。因为对方不可以把数据库暴露给你,此时你只能使用SQL语句。不过国内的一些小型企业使用SQL存储过程还是很流行的。因为程序代码里不包含SQL语句,因此会数据库会相对安全一些。 参考技术A SQL语句能进行简单的查询

存储过程位于数据库服务器中,是一个SQL语句的集合,可包含一个或多个SQL语句
存储过程是利用SQL Server所提供的Tranact-SQL语言所编写的程序。Tranact-SQL语言是SQL Server提供专为设计数据库应用程序的语言,它是应用程序和SQL Server数据库间的主要程序式设计界面。它好比Oracle数据库系统中的Pro-SQL和Informix的数据库系统能够中的Informix-4GL语言一样。这类语言主要提供以下功能,让用户可以设计出符合引用需求的程序:
1)、变量说明
2)、ANSI兼容的SQL命令(如Select,Update….)
3)、一般流程控制命令(if…else…、while….)
4)、内部函数本回答被提问者采纳
参考技术B 感觉一楼的朋友弄错了哈。
通俗的说存储过程是利用SQL语言所写的函数,是放在数据库中的。这种要做比较安全,而且运行起来比较方便快速。有什么缺点就不知道了。
参考技术C 什么意思,存储过程是硬件方面的吧,
SQL是数据库的软件工具呀.
你能不能说的具体一些

Procedure 存储过程

本文非原创

 

存储过程是数据库当中最高级的应用程序,可以传递参数和返回相应的值。

1.分为:系统存储过程和自定义存储过程
定义:它是由一系列的预编译的SQL语句和流程控制语句组成的,
具有参数的传递、条件的判断、变量的声明、返回处理结果,
并扩充了SQL语句的功能。

优点:(1)使用它可以比单独使用SQL语句实现更复杂的功能。

(2)它的执行速度要比普通的SQL语句执行的速度要快。


缺点:(1)不能实现复杂的逻辑操作,因为它不能提供复杂的程序设计。

(2)存储过程创建后,管理较困难,需要记住每个过程的功能。

 

2.创建存储过程:

创建方式: A.用企业管理器 B.使用代码建立


(1)使用语言创建:

语法: create procedure 存储过程名 [,整数]
[@参数 数据类型] [varying] [=默认值] [output] [n]
[with {recompile / encryption /recompile,encryption}]

 

例:(1)create procedure st_cus
as
select 顶单好,姓名,踪迹呢,定货日期,踪迹呢
from AA as a join orders as b on a.客户编号=b.可湖编号
where b.货品名称=‘desk‘
go
execute st_cus
go



(2)create procedure st_ord
@goodsname varchar(20)
as
select * from AA as a join orders as b
on a.客户编号=b.可湖编号
where b.货品名称 [email protected]
go
execute st_ord‘desk‘
go

 


说明:1. varying:该参数指定作为输出参数,支持的结果集适用于游标。

2. output:定义一个输出参数,将处理后的信息返回给调用者。

3. 参数:所有数据类型(包括text,ntext,image)均可以作为
存储过程的参数;但cursor数据类型只能用于output
参数,如果指定数据类型为cursor,则必须同时指定
varying和output参数,对cursor型参数个数无限制。

4.局部临时过程:只能创建该过程的连接使用,在会话结束时,
自动除去,加“#”。

全局临时过程:可以由所有连接使用,在使用该过程的最后
一个会话结束时,一般情况是创建该过程的
会话结束,加“##”。


注意:不能把 create procedure 和其它的SQL语句组合
到一个批处理中,不要和系统重名。

 


执行存储过程:


存储过程的执行可以由应用程序来调用执行,用户可以声明变量和有条件的执行。


1.执行时可以用execute来执行:

语法:execute {[@整数变量=] 存储过程名 [;标识号]}
[@参数名=值/@变量 [output/default]] [,……n]
[with recompile]

例:(1)create procedure st_count
@goodname varchar(20),
@maxdata int output,
@avgprice int output
as
select @maxdata=max(哭春量),@avgprice=avg(价格)
from goods where 货品名称[email protected]
go
declare @aa varchar(20)
declare @bb int
declare @cc int
select @aa=‘desk‘
execute st_count @aa,@bb output,@cc output
select ‘货品名称‘[email protected],‘最大货品库存量:‘+
cast(@bb as char(6)),‘货品平均价格:‘+cast(@cc as char(4))

 

(2) create procedure egg_pro
@name varchar(23)=‘hh‘,
@max int output,
@min int output
as
select @max=max(egg_zhong),@min=avg(egg_jia)from egg
where [email protected]
go
declare @aa int,@bb int
execute egg_pro @[email protected] output,@[email protected] output,@name=default
print @aa
print @bb

说明:1.整数变量是用来保存过程的返回状态,在使用之前需要声明。

2.参数名:执行时参数赋值的顺序要符合,创建过程顺序相同,
如果采用“@参数名=值”的格式,则所有的参数都
必须使用此种格式,顺序可以和原来不同,如果有
默认值,可以用“default”来调用。

3.参数值:如果给字符型和日期型参数赋值,则要加上单引号。

4.output:指定存储过程的返回参数,返回给调用者。

 

以上是关于存储过程跟SQL语句比较,各有啥优点和缺点?的主要内容,如果未能解决你的问题,请参考以下文章

PNG和BMP格式的图片各有啥优缺点?

存储过程写在数据库中和程序里有啥区别?

Redis 和 Memcached 各有啥优缺点,主要的应用场景是啥样的

栅格数据结构和矢量数据结构相比较各有啥特点

sql存储过程

VB.net 和C#.net 各有啥优缺点