`
guanhuaing
  • 浏览: 1197568 次
文章分类
社区版块
存档分类
最新评论

循环调用存储过程代码

 
阅读更多

发现SQL存储过程中中批量循环修改数据表中的字段内容时把历史的字段数值插入到另外的数据表中操作比在ASP中要简单多,速度快多了.实际业务应用范围可以是.从公司历史定单数据表中查询某段时间内的一批用户的所有定单记录.然后将其交易成功的定单判定为成功.ASP中用一个循环(用户名循环)+SQL存储过程中用一个循环(用户名在某段时间内所有ID循环).可以很顺利实现.查网络一大堆资料.居然发现没有循环调用同一SQL存储过程代码,特写出来.

先写SQL存储过程中循环语句:
declare @变量名a 变量类型m, @变量名b 变量类型n
declare curTest cursor for select 变量a对应的字段名称,变量b对应的字段名称 from 数据表名称 where 后面跟条件语句
open curTest
fetch next from curTest into @变量名a,@变量名b
while @@fetch_status = 0
begin
--这里可以执行别的代码.比如更改数据字段代码,插入数据字段代码
--更新当前订单列表中的相关字段数据
格式类似于
update 数据表 set 字段A=传递参数A,字段B=游标读取出来的字段数值@变量名a where id=存储过程输入参数C
--这里也可以执行别的存储过程,其存储过程变量可以是查询出来的字段数据值
exec 系统中另外存储过程名称 @变量名a,@变量名b
fetch next from curTest into @变量名a,@变量名b
end
close curTest
deallocate curTest

在写ASP中的循环调用同一存储过程代码一:
for i=0 to ubound(ArrayUserName)
response.write("<br>第"&i&"次循环")
Set MyComm = Server.CreateObject("ADODB.Command")
MyComm.ActiveConnection = conn 'MyConStr是数据库连接字串
MyComm.CommandText = "sp_UpdateOrderList" '指定存储过程名
MyComm.CommandType = 4 '表明这是一个存储过程
MyComm.Prepared = true '要求将SQL命令先行编译
'声明并赋值给存储过程参数
'查询同一用户时间段内所有定单记录条件
MyComm.Parameters.append MyComm.CreateParameter("@ClientUserName",200,1,20,CurrentOrderUser)
MyComm.Parameters.append MyComm.CreateParameter("@OrderStartTime",200,1,20,OrderStartTime)
MyComm.Parameters.append MyComm.CreateParameter("@OrderStartTime",200,1,20,OrderEndTime)
'要更新的字段数值
MyComm.Parameters.append MyComm.CreateParameter("@OrderStatus",11,1,2,0)
MyComm.Parameters.append MyComm.CreateParameter("@OrderMemo",200,1,250,OrderMemo)
'更新返回状态
MyComm.Parameters.append MyComm.CreateParameter("@ReturnFlag",3,2,4)
'立即执行存储过程
MyComm.Execute()
'根据存储过程返回参数统计打款状态更新记录总数
if MyComm.Parameters("@ReturnFlag").Value<>1 then
Total=Total-1
end if
'关闭存储过程语句
Set MyComm = Nothing
next

在写ASP中的循环调用同一存储过程代码二:
Set MyComm = Server.CreateObject("ADODB.Command")

for i=0 to ubound(ArrayUserName)
response.write("<br>第"&i&"次循环")
MyComm.ActiveConnection = conn 'MyConStr是数据库连接字串
MyComm.CommandText = "sp_UpdateOrderList" '指定存储过程名
MyComm.CommandType = 4 '表明这是一个存储过程
MyComm.Prepared = true '要求将SQL命令先行编译
'声明并赋值给存储过程参数
if i=0 then
'查询同一用户时间段内所有定单记录条件
MyComm.Parameters.append MyComm.CreateParameter("@ClientUserName",200,1,20,CurrentOrderUser)
MyComm.Parameters.append MyComm.CreateParameter("@OrderStartTime",200,1,20,OrderStartTime)
MyComm.Parameters.append MyComm.CreateParameter("@OrderStartTime",200,1,20,OrderEndTime)
'要更新的字段数值
MyComm.Parameters.append MyComm.CreateParameter("@OrderStatus",11,1,2,0)
MyComm.Parameters.append MyComm.CreateParameter("@OrderMemo",200,1,250,OrderMemo)
'更新返回状态
MyComm.Parameters.append MyComm.CreateParameter("@ReturnFlag",3,2,4)
'立即执行存储过程
MyComm.Execute()
'根据存储过程返回参数统计打款状态更新记录总数
if MyComm.Parameters("@ReturnFlag").Value<>1 then
Total=Total-1
end if
else
'更新部分字段内容在变化的数据
MyComm.Parameters("@ClientUserName")=CurrentOrderUser
MyComm.Parameters("@OrderStatus".Value=OrderStatus
MyComm.Parameters("@OrderMemo").Value=OrderMemo
'立即执行存储过程
MyComm.Execute()
'根据存储过程返回参数统计打款状态更新记录总数
if MyComm.Parameters("@ReturnFlag").Value<>1 then
Total=Total-1
end if
end if
next
'关闭存储过程语句
Set MyComm = Nothing

分享到:
评论

相关推荐

    MySQL存储过程完整版使用代码示例

    资源包中囊括了MySQL数据库中的存储过程的使用包含的基本结构及日常所使用到的基本函数的使用【包括java端调用存储过程,创建临时表,动态执行sql语句,过程的递归调用,指针循环取数,批量创建表删除表,树状结构的...

    动态SQL存储过程代码

    动态SQL存储过程代码,比如批量删除,批量更新等等,只是一个简单的存储过程,调用的时候只需把ID用string类型的变量存储起来并用逗号分隔,它到数据库里会自动循环。

    oracle存储过程

    存储过程本身的执行速度非常快,而且,调用存储过程可以大大减少同数据库的交互次数。 第二、提高安全性。假如将SQL语句混合在ASP代码中,一旦代码失密,同时也就意味着库结构失密。 第三、有利于SQL语句的重用。...

    C++存储过程执行类和线性表

    存储过程(Stored Procedure)是一段预先编译好的可重复使用的数据库操作代码,它保存在数据库中并具有一个独立的名称,可以通过名称来调用执行。存储过程通常用于实现复杂的业务逻辑或完成特定的数据库操作。 存储...

    Oracle存储过程实例使用显示游标

    存储过程调用 Function 并使用 游标循环得到每一条数据然后更新本条数据。初学代码写的不是很好,希望能给初学存储过程的兄弟们提供一点借鉴哦。

    mysql 让一个存储过程定时作业的代码

    以下例子主要是实现简单的mysq 定时作业,需要的朋友可以参考下。

    MySQL学习笔记2-高级查询与存储.md

    然后重点讲解了MySQL存储过程的创建、调用、参数、条件和循环语句等知识,同时提供了详细的代码示例进行解释说明,内容系统全面。 适合人群: 需要掌握MySQL高级应用的数据库学习者。文中具体的代码示例可助力开发。 ...

    基于法MATLAB的循环检测识别调制方式的仿真代码

    以下是该代码的主要功能和过程: 1.设置全局变量,包括信噪比初始值和信号长度等。 2.初始化用于存储不同调制方式信号的数组,包括2-FSK、4-FSK、8-FSK等信号的存储数组。 3.调用一系列函数来生成不同调制方式信号,...

    MySQL与MSSQl使用While语句循环生成测试数据的代码

    25 begin INSERT INTO demotable (id,item1,item2) VALUES (@a,”abc”,”123″) set @a = @a + 1 end MySQL中,使用while循环处理数据方法:需要新建为存储过程,直接调用执行存储过程。 示例代码: 代码如下: ...

    Oracle_plsql基本语法笔记.txt

    标题 存储过程及函数 procedure 的建立和调用 function的建立和调用 标题 参数的调用(in 模式为按址调用,out / in out模式为按值调用。NOCOPY 强行转换成按址调用)。 标题 软件包及封装 软件包(PACKAGE...

    oracle如何合并多个sys_refcursor详解

    一段时间后要开发一个PROC_B,要用PROC_A同样的逻辑,而且在这个过程中,还要循环调用PROC_A这个过程。摆在你面前的有两个选择。 打开PL/SQL,仔细的读PROC_A这个过程,一直到明白了所有的逻辑,然后在自己的过程中...

    华中科技大学操作系统实验报告.docx

    (3) 了解系统调用pipe( )、msgget( )、msgsnd( )、msgrcv( )、msgctl( )、shmget( )、shmat( )、shmdt( )、shmctl( )的功能和实现过程,利用共享存储区机制进行进程间通信。 二、实验内容 1、实验要求 (1) 进程...

    单片机如何精简代码量以及提升运行速度技巧介绍.docx

    - 使用最紧凑的数据类型(如char而非int存储较小的数值)。 - 避免过度包装,简化数据结构层次。 4. **减少函数调用开销**: - 减少不必要的函数调用,特别是小型且频繁调用的函数。 - 将关键循环内的函数展开...

    约瑟夫环源代码+报告

    题目:编一个程序解决约瑟夫环问题 先设计三个函数:建立一个空循环链表的函数Initlist ;...然后在主函数中先调用Initlist ,再调用createlist 输入编号和密码,再调用Josephu来计算出列人的编号,即出列人的顺序。

    C语言实现栈空间共享代码

    这段代码是用C语言编写的,用于实现一个双栈结构,即在一个数组中存储两个栈,一个从数组头部开始,一个从数组尾部开始,以节省空间。代码的主要功能如下: 定义了一个判断函数judge(),用于检查是否栈满,即是否top...

    Java代码检查工具PMD

     2、未调用的代码,例如没有使用的局部变量、参数和私有方法  3、未优化的代码,例如String的不正确使用  4、过于复杂的表达式,没有必要的表达式循环,判断  5、重复代码  PMD支持的编辑器包括:  JDeveloper...

    坦克打飞船的完整代码(可执行)

    比如:修改alien_invasion.py,使其导入模块game_functions,并将事件循环替换为对函数check_points()的调用。4)重构设计:在大型的项目中,经常需要在添加新代码前重构既有代码。重构旨在简化既有代码的结构,使其...

    MySQL数据库:流程控制语句loop.pptx

    数据库编程 流程控制语句LOOP语句 课程目标 1)理解 —— LOOP语句的语法规则; 2)掌握 ——LOOP语句的使用方法; LOOP语句 LOOP语句语法格式如下: ...注:在存储过程里面添加代码: select a; LOOP循环语句

    Python烟花代码高级,可以直接编译使用

    Particle类是烟花的粒子单元,它存储粒子的位置、速度、颜色和大小等信息,同时具有update和draw方法来更新粒子状态并在屏幕上绘制它。Firework类代表一朵烟花,它由一个初始粒子表示上升发射过程,并在适当的时刻...

    基于C++的K-V数据库File based K-V Database.zip

    若为不支持的命令则输出error command并进入下一循环,若为支持的命令则利用if…else…跳转到相应的代码块,按照相适应要求请求输入并调用相应函数,根据调用函数的返回值输出相应交互语句 调用日志存储相应信息,...

Global site tag (gtag.js) - Google Analytics