以下例子完整的表述了一个存储过程中使用游标、变量及整个存储过程建立、关闭操作的流程。
特别提醒:不要深究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环境下,...
接下来,我们将学习如何在SQL Server存储过程中使用游标: 1. **声明游标**:首先需要声明一个游标,指定其类型、源数据集(通常是查询语句)以及其属性。例如: ```sql DECLARE @MyCursor CURSOR FOR SELECT * FROM...
在这个场景中,我们有三个文件:TESTPACKAGE.txt,CURSOR_TEST2.txt和OracleProcedure.java,分别涉及Oracle存储过程的创建、游标的使用以及Java代码如何与Oracle存储过程交互。 首先,`TESTPACKAGE.txt`很可能包含...
然后,我们使用`fetch`语句来逐行处理游标中的成绩,并根据成绩的值来更新相应的变量。 在第二个实验中,我们使用了存储过程来计算任一门课程的平均成绩。我们定义了一个存储过程`gradeavg`,该过程接受课程号作为...
通过以上分析,我们可以看到如何在存储过程中使用游标来循环处理查询结果集。这种方法适用于需要逐行处理大量数据的情况。需要注意的是,虽然游标提供了强大的数据处理能力,但在性能方面可能不如其他方法高效。因此...
3. **提取数据**:使用`FETCH`语句从游标中获取一行数据。 4. **处理数据**:在循环中对提取的数据进行操作,如更新、插入或删除。 5. **关闭游标**:完成操作后,关闭游标以释放资源。 示例中的存储过程可能如下:...
在实际开发中,开发者通常会使用编程语言如Java、C#等来与数据库交互,通过特定的数据库连接库(如JDBC、ADO.NET等)来执行存储过程和管理游标。 综上所述,存储过程和游标是数据库开发中的重要工具,它们有助于...
本文将深入探讨存储过程、触发器和游标,以及它们在实际应用中的综合使用。 首先,让我们来理解存储过程。存储过程是预编译的SQL语句集合,它封装了一系列数据库操作并在需要时执行。这种高级的SQL构造可以提高性能...
函数是另一种在Oracle数据库中使用的编程组件,它可以接受输入参数并返回一个计算结果。 - **特点**: - 可以在SQL语句中调用。 - 必须返回一个值。 - 可以包含复杂的逻辑处理。 - **应用场景**: - 数据验证:...
这个过程展示了如何在存储过程中使用游标来实现特定的业务逻辑,即检查和更新数据。此外,还涉及到其他表的操作,如创建和修改表结构,以及调用和执行存储过程。 例如,`CREATE TABLE`语句用于创建学生信息表、课程...
Oracle 存储过程游标是指在 Oracle 数据库中使用游标来实现对结果集的处理和操作。游标可以分为静态游标和REF游标两种类型。静态游标是指结果集已经确实(静态定义)的游标,可以进一步分为隐式游标和显示游标。隐式...
CREATE PROCEDURE getUserInfo(in date_day datetime)— — 实例— MYSQL存储过程名为:getUserInfo— 参数为:date_day日期格式:2008-03-08— BEGINdeclare _userName varchar(12); — 用户名declare _chinese int...
在"存储过程和游标创建使用大综合"的压缩包文件中,你可以找到更多关于这两个主题的实际例子和练习,帮助你深入理解和掌握SQL Server中存储过程和游标的使用方法。不断学习和实践这些知识,将有助于提升你在数据库...
IN OUT 参数是一种特殊的参数类型,可以在存储过程中使用。IN OUT 参数可以实现输入和输出的功能。在本示例中,我们使用 IN OUT 参数来实现存储过程的调用。 四、游标类型参数的使用 游标类型参数是 Oracle 存储...
1. **声明变量**:首先,声明了多个变量,如`@keyid`用于存储从游标中获取的`docId`,`@str`用于存储文档体,`@strdate`用于存储日期字符串,以及`@tempi`和`@tempj`用于计数。 2. **声明游标**:`DECLARE cur ...
在存储过程中使用游标,可以实现对每一行数据进行特定的操作,例如更新、插入或者删除。游标参数则意味着将游标作为存储过程的输入或输出参数,这样可以在存储过程中控制游标的打开、移动和关闭,并传递游标的状态。...
此外,笔记还展示了如何在存储过程中使用for循环来遍历结果集,这在处理大量数据时非常有用。例如: ```sql BEGIN FOR recordOne IN (SELECT id, name FROM cfftest.student) LOOP -- 打印处理结果 PRINT ...
- **从游标中获取数据**:使用`FETCH`语句从游标中获取数据。常见的`FETCH`选项有: - `NEXT`:获取下一行数据。 - `PRIOR`:获取上一行数据。 - `FIRST`:获取第一行数据。 - `LAST`:获取最后一行数据。 - `...
本文将通过一系列由简入深的例子来介绍如何在PL/SQL存储过程中使用游标,并通过实际的代码示例来解释每个概念。 #### 二、基础知识回顾 1. **游标**:在PL/SQL中,游标是一种数据库对象,它指向一个SQL查询的结果...