标准答案:
在最新的SQL2005中的存储过程(Procere)类似于java语言中的方法,它是SQL语句和控制流语句的预编译集合。存储过程在数据库内,可由应用程序通过一个调用执行,而且允许用户声明变量,逻辑控制语句以及其他强大的编程功能。
存储过程可包含逻辑控制语句和数据操作语句,它可以接收参数,输出参数,返回单个或多个结果集以及返回值。
给你一个例子:
create proc proc_takeMoney
@cardID1 varchar(20), --汇款账号
@pwd int , --汇款密码
@takeMoney money, --汇款金额
@cardID2 varchar(20) --存款账号
as
set nocount on
declare @err int
set @err = 0
if exists(select 1 from cardInfo where cardID = @cardID1 and pass = @pwd)
begin
begin tran --事物开始
update cardInfo set balance = balance + @takeMoney where cardID = @cardID2 --接受款帐户加上@takeMoney
set @err = @err + @@error
update cardInfo set balance = balance - @takeMoney where cardID = @cardID1 --汇款帐户减去@takeMoney
set @err = @err + @@error
/*--交易信息表插入交易信息--*/
insert into transInfo(transDate,cardId,transType,transMoney) values(default,@cardID1,'支取',@takeMoney)
set @err = @err + @@error
insert into transInfo(transDate,cardId,transType,transMoney) values(default,@cardID2,'存入',@takeMoney)
set @err = @err + @@error
/*--交易信息--*/
select top 2 * from transInfo order by transDate desc
if(@err<>0)
begin
rollback tran --错误回滚事物
end
else
begin
commit tran --无错误提交事物
end
end --if结束
else
begin
print '密码错误'
end
/*--调用存储过程--*/
declare @cardID1 varchar(20),@cardID2 varchar(20),@pwd int ,@takeMoney money
set @cardID1 ='1010 3576 1234 5678' --张三卡号
set @pwd = 888888 --张三密码
set @cardID2 ='1010 3576 1212 1134' --李四卡号
set @takeMoney =20 --汇款金额
exec proc_takeMoney @cardID1 ,@pwd,@takeMoney,@cardID2
❷ 存储过程和sql语句的优缺点优点有哪些
存储过程是一组予编译的SQL语句
它的优点:1.允许模块化程序设计,就是说只需要创建一次过程,以后在程序中就可以调用该过程任意次。
2.允许更快执行,如果某操作需要执行大量SQL语句或重复执行,存储过程比SQL语句执行的要快。
3.减少网络流量,例如一个需要数百行的SQL代码的操作有一条执行语句完成,不需要在网络中发送数百行代码。
4.更好的安全机制,对于没有权限执行存储过程的用户,也可授权他们执行存储过程。
❸ sql存储过程是什么
说多了你也难得慢慢看,说简单一点,其实存储过程就是把一堆SQL代码集中在一起,形成一个固定的代码块.存储过程名字,就是代码块的名字.以后你要运行这块代码的时候,不用在把所有的代码都放上去,只需要运行这个代码块的名字就行了.
❹ 什么是存储过程有什么优点
存储过程是事先经过编译并存储在数据库中的一段SQL语句的集合,调用存储过程可以简化应用开发人员的很多工作,减少数据在数据库和应用服务器之间的传输,对于提高数据处理的效率是有好处的。
优点:
1、重复使用:存储过程可以重复使用,从而可以减少数据库开发人员的工作量。
2、减少网络流量:存储过程位于服务器上,调用的时候只需要传递存储过程的名称以及参数就可以了,因此降低了网络传输的数据量。
3、安全性:参数化的存储过程可以防止SQL注入式攻击,而且可以将Grant、Deny以及Revoke权限应用于存储过程。
(4)存储过程实际上是一组SQL语句扩展阅读:
存储过程的缺点:
1、更改比较繁琐:如果更改范围大到需要对输入存储过程的参数进行更改,或者要更改由其返回的数据,则仍需要更新程序集中的代码以添加参数、更新 GetValue() 调用,等等,这时候估计比较繁琐。
2、可移植性差:由于存储过程将应用程序绑定到 SQL Server,因此使用存储过程封装业务逻辑将限制应用程序的可移植性。如果应用程序的可移植性在您的环境中非常重要,则需要将业务逻辑封装在不特定于 RDBMS 的中间层中。
❺ 存储过程可不可以看成是对SQL语句的封装
存储过程(Stored Procere)是在大型数据库系统中,一组为了完成特定功能的SQL 语句集,经编译后存储在数据库中,用户通过指定存储过程的名字并给出参数(如果该存储过程带有参数)来执行它。也可以这样理解,存储过程是保存起来的可以接受和返回用户提供的参数的 Transact-SQL 语句的集合。既然他是一个sql语句集合,就可以理解为是对sql语句的封装了,但是对实现特定功能的语句的封装。这部分语局经过编译放在数据库中,当为了满足某种需求的时候,可以调用这块已经编译好的语句块来完成。
❻ sql 存储过程是怎么实现的 简单的例子和解释!
存储过程就是一组保存在数据库中的sql语句,在需要的时候可以调用
最简单的,比如
create procere test as
delete from t_1; ---删除t_1表的所有记录
在sql server查询分析器执行时:
exec test; --执行过程test,删除了表t_1的所有记录
当然,没有人这样使用存储过程,存储过程可以接受参数,处理大量sql语句,并返回结果。
当在编写软件的过程中,碰到需要进行复杂的数据库操作时,可能需要大量的sql语句,这时候可以先在数据库中创建存储过程,将sql语句都写在存储过程里,可以视情况加入参数,也可以返回处理结果。编写软件时,在适当的地方引用并执行这个存储过程就好了,至于怎么引用,不同的软件开发语言有不同的语法。
存储过程是预编译的,这样可以提高执行效率,对于软件代码的维护也有好处
❼ 在SQL中存储过程的一般语法是什么
1、 创建语法
createproc|procerepro_name
[{@参数数据类型}[=默认值][output],
{@参数数据类型}[=默认值][output],
....
]
as
SQL_statements
2、 创建不带参数存储过程
--创建存储过程
if(exists(select*fromsys.objectswherename='proc_get_student'))
dropprocproc_get_student
go
createprocproc_get_student
as
select*fromstudent;
--调用、执行存储过程
execproc_get_student;
3、 修改存储过程
--修改存储过程
alterprocproc_get_student
as
select*fromstudent;
4、 带参存储过程
--带参存储过程
if(object_id('proc_find_stu','P')isnotnull)
dropprocproc_find_stu
go
createprocproc_find_stu(@startIdint,@endIdint)
as
select*fromstudentwhereidbetween@startIdand@endId
go
execproc_find_stu2,4;
5、 带通配符参数存储过程
--带通配符参数存储过程
if(object_id('proc_findStudentByName','P')isnotnull)
dropprocproc_findStudentByName
go
createprocproc_findStudentByName(@namevarchar(20)='%j%',@nextNamevarchar(20)='%')
as
select*fromstudentwherenamelike@nameandnamelike@nextName;
go
execproc_findStudentByName;execproc_findStudentByName'%o%','t%';
(7)存储过程实际上是一组SQL语句扩展阅读:
SQL存储过程优点:
1、重复使用。存储过程可以重复使用,从而可以减少数据库开发人员的工作量。
2、减少网络流量。存储过程位于服务器上,调用的时候只需要传递存储过程的名称以及参数就可以了,因此降低了网络传输的数据量。
3、安全性。参数化的存储过程可以防止SQL注入式攻击,而且可以将Grant、Deny以及Revoke权限应用于存储过程。
❽ SQL语句问题:存储过程定义是什么什么时候用它作用是什么怎样写,来个实例!
定义:存储过程是一组为了完成特定功能的SQL语句集,是利用SQL Server所提供的Transact-SQL语言所编写的程序。作用:将常用或复杂的工作,预先用SQL语句写好并用一个指定名称存储起来, 以后需要数据库提供与已定义好的存储过程的功能相同的服务时,只需调用execute,即可自动完成命令。什么时候用:提高数据库执行速度,对数据库进行复杂操作,重复使用,安全要求高例子: CREATE PROCEDURE order_tot_amt @o_id int, @p_tot int output AS SELECT @p_tot = sum(Unitprice*Quantity) FROM orderdetails WHERE ordered=@o_id GO
❾ 存储过程和sql语句有什么区别
1、sql只能实现简单的查询,新增,修改,删除功能。
2、存储过程是sql语句和可选控制流语句的预编译集合。存储过程在创建时即在服务器上进行编译,所以执行起来比单个sql语句快。在单个存储过程中可以执行一系列sql语句。可以从自己的存储过程内引用其他存储过程。
❿ 请问存储过程和一般sql语句有什么语法区别
存储过程和一般sql的区别就是,存储过程支持变量和判断循环之类的,你可以把一个存储过程想象为一个小的软件,这个小软件帮你处理一些复杂的sql运算。
至于说存储过程查询语句更快,是因为,存储过程的执行是在服务器上,只需要传递几个简单的参数就可以,减少了网络通讯。所以比起一般程序中写的查询语句来说更快一些。
基本上就是这些
希望可以帮助你理解存储过程。