新萄京计算机网络

 新萄京计算机网络     |      2020-04-09
ALTER PROCEDURE [dbo].[POR_CURSOR_FOR_UPDATE]  --创建存储过程ASBEGIN SET nocount ON                   --忽略行数显示 DECLARE UpdateSHEBEI CURSOR       --声明游标
 FOR SELECT X_D_TJSL,X_G_JSL FROM FACT_MX --要查询的结果集

 OPEN UpdateSHEBEI          --打开游标 
 DECLARE @X_D_TJ VARCHAR(128),@X_G_J VARCHAR(128);  --声明变量

 FETCH NEXT FROM UpdateSHEBEI INTO @X_D_TJ,@X_G_J   
 WHILE @@FETCH_STATUS = 0       --开始循环
 BEGIN 
   SELECT @X_D_TJ=CEILING(rand()*50);
    SELECT @X_G_J=CEILING(rand()*6);    --给变量赋值
   UPDATE FACT_SHEBEI_MX SET X_D_TJSL=@X_D_TJ,X_G_JSL=@X_G_J WHERE CURRENT OF UpdateSHEBEI --更新表数据
   FETCH NEXT FROM UpdateSHEBEI INTO @X_D_TJ,@X_G_J     --下一行数据
 END
 CLOSE UpdateSHEBEI;  --关闭游标
 DEALLOCATE UpdateSHEBEI  
 SET nocount OFF      --打开计数END

在b/s系统的构建过程中,数据库操作几乎成为了一个必不可少的操作。调用存储过程实现数据库操作使很多程序员使用的方法,而且大多数的程序员都是能使用存储过程就使用存储过程,很少直接使用sql语句,所以存储过程是很有用而且很重要的。

   上学时学的东西,都忘了,用到了,就翻出来学习了一下。使用存储过程编写,可直接运行该存储过程注释都写好了,变量赋值也比较清楚,需要的可以直接复制下来然后替换就好。

存储过程简介

存储过程的定义:完成一定功能的可重复调用的程序

简单的说,存储过程是由一些sql语句和控制语句组成的被封装起来的过程,它驻留在数据库中,可以被客户应用程序调用,也可以从另一个过程或触发器调用。它的参数可以被传递和返回。与应用程序中的函数过程类似,存储过程可以通过名字来调用,而且它们同样有输入参数和输出参数。

根据返回值类型的不同,我们可以将存储过程分为三类:返回记录集的存储过程,返回数值的存储过程(也可以称为标量存储过程),以及行为存储过程。顾名思义,返回记录集的存储过程的执行结果是一个记录集,典型的例子是从数据库中检索出符合某一个或几个条件的记录;返回数值的存储过程执行完以后返回一个值,例如在数据库中执行一个有返回值的函数或命令;最后,行为存储过程仅仅是用来实现数据库的某个功能,而没有返回值,例如在数据库中的更新和删除操作。

存储过程的通俗解释:你使用手机拨打A同事的手机,需要一个一个号码的输入,然后才能拨打
而如果你把这个号码设置为快速拨号,那么你只要长按1(自己设置的数字键)就可以直接拨打电话了
把这个号码设置为快速拨号的过程你就可以理解为创建存储过程。

使用存储过程的好处

相对于直接使用sql语句,在应用程序中直接调用存储过程有以下好处:

(1)减少网络通信量。调用一个行数不多的存储过程与直接调用sql语句的网络通信量可能不会有很大的差别,可是如果存储过程包含上百行sql语句,那么其性能绝对比一条一条的调用sql语句要高得多。

(2)执行速度更快。有两个原因:首先,在存储过程创建的时候,数据库已经对其进行了一次解析和优化。其次,存储过程一旦执行,在内存中就会保留一份这个存储过程,这样下次再执行同样的存储过程时,可以从内存中直接调用。

(3)更强的适应性:由于存储过程对数据库的访问是通过存储过程来进行的,因此数据库开发人员可以在不改动存储过程接口的情况下对数据库进行任何改动,而这些改动不会对应用程序造成影响。

(4) 布式工作:应用程序和数据库的编码工作可以分别独立进行,而不会相互压制。

由以上的分析可以看到,在应用程序中使用存储过程是很有必要的。