`
njmnjx
  • 浏览: 234726 次
  • 性别: Icon_minigender_1
  • 来自: 北京
社区版块
存档分类
最新评论

存储过程中使用游标

阅读更多
    以下例子完整的表述了一个存储过程中使用游标、变量及整个存储过程建立、关闭操作的流程。
    特别提醒:不要深究sql语句内容,本文只讲述流程及使用方法。实际语句为工作中的环境直接复制而来并且删除了大部分内容,所以sql语句内容并不连贯。
--首先创建存储过程
CREATE PROCEDURE [dbo].[pro_CURSOR]
	--定义输入变量
    @bbqr varchar(8),
	@bbzr varchar(8),
	@xb   varchar(3),
	@comgrade int,
	@dwbm	varchar(6) 
as –关键字
begin  --存储过程包围开始

--定义统计用变量
declare
		@f1 int,@f2 int,@f3 int,@f4 int,@f5 int,@f6 int,@f7 int,@f8 int,
		@f9 int,@f10 int,@f11 int,@f12 int,@f13 int,@f14 int,@f15 int,@f16 int,
		@f17 int,@f18 int,@f19 int,@f20 int,@f21 int,@f22 int,@f23 int,@f24 int,
		@f25 int,@f26 int,@f27 int,@f28 int,@f29 int,@f30 int,@f31 int,
		@f32 int,@f33 int

--赋初值
select @f1=0,@f2=0,@f3=0,@f4=0,@f5=0,@f6=0,@f7=0,@f8=0,
		@f9=0,@f10=0,@f11=0,@f12=0,@f13=0,@f14=0,@f15=0,@f16=0,
		@f17=0,@f18=0,@f19=0,@f20=0,@f21=0,@f22=0,@f23=0,@f24=0,
		@f25=0,@f26=0,@f27=0,@f28=0,@f29=0,@f30=0,@f31=0,
		@f32=0,@f33=0
--定义临时变量
declare 
		@sq_bbzr varchar(10), 
		@ljlb varchar(5),
		@sjbm varchar(5),
		@sylb varchar(5),
		@rs int,
		@lb varchar(4),
		@ttrq varchar(8),
		@bhfs varchar(2)  
--临时变量赋值
set @sq_bbzr=dbo.get_day_add(@bbqr,-1)
set @sq_bbzr=dbo.get_day_add(@bbqr,-1)

--统计变量赋值
set @f1=(select count(*) from da_crj a join da_jbxx b on (a.bh=b.bh  and b.xb like @xb) where dbo.get_nl(@sq_bbzr,b.csrq)<18 and a.drrq<@bbqr and (a.ljrq='' or a.ljrq>=@bbqr))

--定义游标
declare cur_qnzj cursor for 
	select a.sylb,count(*)
		from da_crj a join da_jbxx b on a.bh=b.bh and b.xb like @xb
		where a.drrq between @bbqr and @bbzr and dbo.get_nl(a.drrq,b.csrq)<18
		group by a.sylb
open cur_qnzj    --打开游标
fetch cur_qnzj into @sylb,@rs  --将游标值存入指定变量中
while @@fetch_status = 0	  --0为正常
	begin
		set @f2=@f2+@rs  
		if @sylb<='1'    
			set @f3=@f3+@rs
		else
			begin
				set @f4=@f4+@rs 
				if @sylb='4' 
					set @f32=@f32+@rs
			end 
		fetch cur_qnzj into @sylb,@rs	--与上面的相同语句配合使用
	end 
close cur_qnzj			--关闭游标
deallocate cur_qnzj    --清空游标资源

--统计变量结果
select ' ' as dw,'' as bbsj,' ' as tbr,' ' as tbsj,@f1 as f1,@f2 as f2,@f3 as f3,@f4 as f4,@f5 as f5,@f6 as f6,@f7 as f7,@f8 as f8,@f9 as f9,@f10 as f10,@f11 as f11,@f12 as f12,@f13 as f13,@f14 as f14,@f15 as f15,@f16 as f16,@f17 as f17,@f18 as f18,@f19 as f19,@f20 as f20,@f21 as f21,@f22 as f22,@f23 as f23,@f24 as f24,@f25 as f25,@f26 as f26,@f27 as f27,@f28 as f28,@f29 as f29,@f30 as f30,@f31 as f31

--存储过程包围结束
end

分享到:
评论

相关推荐

    oracle存储过程使用游标对多表操作例子

    本文将深入探讨如何在Oracle存储过程中使用游标进行多表操作,具体通过一个示例来展示这一过程。 ### 标题与描述分析 标题:“oracle存储过程使用游标对多表操作例子”直接指出了文章的主题是关于在Oracle环境下,...

    sqlserver游标存储过程的使用

    接下来,我们将学习如何在SQL Server存储过程中使用游标: 1. **声明游标**:首先需要声明一个游标,指定其类型、源数据集(通常是查询语句)以及其属性。例如: ```sql DECLARE @MyCursor CURSOR FOR SELECT * FROM...

    Oracle存储过程out游标

    在这个场景中,我们有三个文件:TESTPACKAGE.txt,CURSOR_TEST2.txt和OracleProcedure.java,分别涉及Oracle存储过程的创建、游标的使用以及Java代码如何与Oracle存储过程交互。 首先,`TESTPACKAGE.txt`很可能包含...

    sql存储过程和游标的运用

    然后,我们使用`fetch`语句来逐行处理游标中的成绩,并根据成绩的值来更新相应的变量。 在第二个实验中,我们使用了存储过程来计算任一门课程的平均成绩。我们定义了一个存储过程`gradeavg`,该过程接受课程号作为...

    存储过程使用游标实现循环

    通过以上分析,我们可以看到如何在存储过程中使用游标来循环处理查询结果集。这种方法适用于需要逐行处理大量数据的情况。需要注意的是,虽然游标提供了强大的数据处理能力,但在性能方面可能不如其他方法高效。因此...

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

    3. **提取数据**:使用`FETCH`语句从游标中获取一行数据。 4. **处理数据**:在循环中对提取的数据进行操作,如更新、插入或删除。 5. **关闭游标**:完成操作后,关闭游标以释放资源。 示例中的存储过程可能如下:...

    存储过程和游标

    在实际开发中,开发者通常会使用编程语言如Java、C#等来与数据库交互,通过特定的数据库连接库(如JDBC、ADO.NET等)来执行存储过程和管理游标。 综上所述,存储过程和游标是数据库开发中的重要工具,它们有助于...

    存储过程触发器 游标

    本文将深入探讨存储过程、触发器和游标,以及它们在实际应用中的综合使用。 首先,让我们来理解存储过程。存储过程是预编译的SQL语句集合,它封装了一系列数据库操作并在需要时执行。这种高级的SQL构造可以提高性能...

    Oracle存储过程、游标、函数的详解

    函数是另一种在Oracle数据库中使用的编程组件,它可以接受输入参数并返回一个计算结果。 - **特点**: - 可以在SQL语句中调用。 - 必须返回一个值。 - 可以包含复杂的逻辑处理。 - **应用场景**: - 数据验证:...

    SQL 带游标的存储过程

    这个过程展示了如何在存储过程中使用游标来实现特定的业务逻辑,即检查和更新数据。此外,还涉及到其他表的操作,如创建和修改表结构,以及调用和执行存储过程。 例如,`CREATE TABLE`语句用于创建学生信息表、课程...

    Oracle存储过程游标详解

    Oracle 存储过程游标是指在 Oracle 数据库中使用游标来实现对结果集的处理和操作。游标可以分为静态游标和REF游标两种类型。静态游标是指结果集已经确实(静态定义)的游标,可以进一步分为隐式游标和显示游标。隐式...

    mysql存储过程中使用游标的实例

    CREATE PROCEDURE getUserInfo(in date_day datetime)— — 实例— MYSQL存储过程名为:getUserInfo— 参数为:date_day日期格式:2008-03-08— BEGINdeclare _userName varchar(12); — 用户名declare _chinese int...

    SQL SERVER中的存储过程和游标的使用大综合

    在"存储过程和游标创建使用大综合"的压缩包文件中,你可以找到更多关于这两个主题的实际例子和练习,帮助你深入理解和掌握SQL Server中存储过程和游标的使用方法。不断学习和实践这些知识,将有助于提升你在数据库...

    用callabledStatement调用oracle存储过程实用例子(IN OUT 传游标)

    IN OUT 参数是一种特殊的参数类型,可以在存储过程中使用。IN OUT 参数可以实现输入和输出的功能。在本示例中,我们使用 IN OUT 参数来实现存储过程的调用。 四、游标类型参数的使用 游标类型参数是 Oracle 存储...

    sql server 2008 存储过程示例带游标

    1. **声明变量**:首先,声明了多个变量,如`@keyid`用于存储从游标中获取的`docId`,`@str`用于存储文档体,`@strdate`用于存储日期字符串,以及`@tempi`和`@tempj`用于计数。 2. **声明游标**:`DECLARE cur ...

    游标参数的存储过程 存储过程高级教程

    在存储过程中使用游标,可以实现对每一行数据进行特定的操作,例如更新、插入或者删除。游标参数则意味着将游标作为存储过程的输入或输出参数,这样可以在存储过程中控制游标的打开、移动和关闭,并传递游标的状态。...

    SQL工作笔记-达梦7存储过程中游标的使用(for循环 IF等)

    此外,笔记还展示了如何在存储过程中使用for循环来遍历结果集,这在处理大量数据时非常有用。例如: ```sql BEGIN FOR recordOne IN (SELECT id, name FROM cfftest.student) LOOP -- 打印处理结果 PRINT ...

    游标、存储过程的使用事例

    - **从游标中获取数据**:使用`FETCH`语句从游标中获取数据。常见的`FETCH`选项有: - `NEXT`:获取下一行数据。 - `PRIOR`:获取上一行数据。 - `FIRST`:获取第一行数据。 - `LAST`:获取最后一行数据。 - `...

    Oralce PLSQL存储过程之游标实践!

    本文将通过一系列由简入深的例子来介绍如何在PL/SQL存储过程中使用游标,并通过实际的代码示例来解释每个概念。 #### 二、基础知识回顾 1. **游标**:在PL/SQL中,游标是一种数据库对象,它指向一个SQL查询的结果...

Global site tag (gtag.js) - Google Analytics