解密存储结构(一)
时间:2010-11-03 来源:WooYoung
今天说点什么涅?啊!存储过程...呵呵...
首先什么事存储过程呢,估计很多人都不太理解,其实我也不是很了解它的真正定义到底是说的什么(这是它的原本定义:“存储过程(Stored Procedure)是一组为了完成特定功能的SQL 语句集,经编译后存储在数据库中。用户通过指定存储过程的名字并给出参数(如果该存储过程带有参数)来执行它。”额...还真的是很有深度的技术性语言啊...唉..~ (︶︿︶) ~ ..),既然要写存储过程,那么我就开始在脑海中搜寻最后一次见到这个名词是在什么时候,终于想到实在遥远的两年前,模糊的记得当时老师是这么说的,存储过程其实跟我们的方法很类似,今天我也决定这么告诉大家,他们的确很相似,那么我们就对比着来说好了:存储过程和方法都是定义一组操作性语句,来完成一定的功能,可以带参数,也可以没有,当然它们也肯定是存在着区别的,首先,就参数来说,都可以定义多个参数,可是方法只能有一个输出参数即方法的返回值,而存储过程却可以有多个输出参数,但是我们要用output来进行标记。这样说起来是不是很抽象呢,那么我们来具体看看它的创建格式吧:
CREATE PROCEDURE [拥有者.]存储过程名[;程序编号]
[(参数#1,…参数#1024)]
[WITH {RECOMPILE | ENCRYPTION | RECOMPILE, ENCRYPTION} ]
[FOR REPLICATION]
AS 程序行
注释:
output:表示此参数是可传回的即输出参数也可以理解为返回值
with {recompile|encryption} 中的recompile:表示每次执行此存储过程时都重新编译一次 ;encryption:所创建的存储过程的内容会被加密
下面我们来研究一下这个输出参数:
存储过程的3种传回值: 1)、以Return传回整数 2)、以output格式传回参数 3)、Recordset
传回值的区别: output和return都可在批次程式中用变量接收,而recordset则传回到执行批次的客户端中。
其实吧,数据库存储过程的实质就是部署在数据库端的一组定义代码以及SQL语句。将常用的或很复杂的工作,预先用SQL语句写好并用一个指定的名称存储起来,那么以后要叫数据库提供与已定义好的存储过程的功能相同的服务时,只需调用execute,即可自动完成命令。很像我们在家储备家用和食物一样,提前准备好了,用或者吃的时候就会方便了,不用再去现买的道理一样的,数据库本身的工作量是大的,如果我们一直都是执行多条SQL语句,不仅浪费我们的时间,更会耗损我们的空间
而存储过程就可以大大的降低这个弊端而且还可以防止SQL注入,是不是很不错啊....o(∩_∩)o ...
那么这好的东西具体要怎么样来调用呢,买个关子,嘿嘿,我们明天再继续吧...