用来组织动态sql以及从动态sql查询结果集中取数
的function
--传入模型和扫描标号 create or replace function F_GET_HYNSR(V_MXDM varchar2,V_SMBH varchar2) return varchar2 is TYPE ref_type IS REF CURSOR; V_NSRHS number; V_HY_ZD varchar2(20); V_HY_DM varchar2(20); V_SQL_NSR varchar2(2000); V_SQL_HY varchar2(2000); V_NSRHSTEMP number; V_SMBHS varchar2(2000); cur ref_type; begin V_SMBHS:=''''||REPLACE(V_SMBH,',',''',''')||''''; V_SQL_HY:='select wd.tj_zd,wd.tj_z from fxfx_fxfa_wdtj wd,fxfx_sm_fxfa_dz smdz where wd.tj_b = ''DIM_HY'' and wd.fa_bh = smdz.fa_bh and smdz.sm_bh in ('||V_SMBHS||') and smdz.mxdm = '''||V_MXDM||''''; dbms_output.put_line(V_SQL_HY); open cur for V_SQL_HY; V_NSRHS:=0; FETCH cur into V_HY_ZD,V_HY_DM; while cur%FOUND LOOP V_SQL_NSR := 'select count(1) from dim_nsr nsr where nsr.'||V_HY_ZD||'='''||V_HY_DM||''''; dbms_output.put_line(V_SQL_NSR); EXECUTE IMMEDIATE V_SQL_NSR into V_NSRHSTEMP; dbms_output.put_line(V_NSRHSTEMP); V_NSRHS:=V_NSRHS+V_NSRHSTEMP; dbms_output.put_line(V_NSRHS); FETCH cur into V_HY_ZD,V_HY_DM; END LOOP; CLOSE cur; return V_NSRHS; end F_GET_HYNSR; --传入方案编号 create or replace function F_GET_HYNSR(V_FABH varchar2) return varchar2 is TYPE ref_type IS REF CURSOR; V_NSRHS number; V_HY_ZD varchar2(20); V_HY_DM varchar2(20); V_SQL_NSR varchar2(2000); V_NSRHSTEMP number; V_FABHS varchar2(2000); cur ref_type; begin V_FABHS:=''''||REPLACE(V_FABH,',',''',''')||''''; --dbms_output.put_line(V_FABHS); open cur for 'select wd.tj_zd,wd.tj_z from fxfx_fxfa_wdtj wd where wd.tj_b = ''DIM_HY'' and wd.fa_bh in ('||V_FABHS||')'; V_NSRHS:=0; FETCH cur into V_HY_ZD,V_HY_DM; while cur%FOUND LOOP V_SQL_NSR := 'select count(1) from dim_nsr nsr where nsr.'||V_HY_ZD||'='''||V_HY_DM||''''; --dbms_output.put_line(V_SQL_NSR); EXECUTE IMMEDIATE V_SQL_NSR into V_NSRHSTEMP; --dbms_output.put_line(V_NSRHSTEMP); V_NSRHS:=V_NSRHS+V_NSRHSTEMP; --dbms_output.put_line(V_NSRHS); FETCH cur into V_HY_ZD,V_HY_DM; END LOOP; CLOSE cur; return V_NSRHS; end F_GET_HYNSR;
相关推荐
### Oracle存储过程返回结果集详解 #### 一、概述 在Oracle数据库中,存储过程是一种重要的编程组件,它能够执行一系列SQL语句并处理复杂的业务逻辑。存储过程的一个常见应用场景是返回结果集(Record Set),这有...
### Oracle Function 返回结果集 #### 知识点概述 在Oracle数据库中,有时我们需要创建一个函数来返回一个结果集(即一系列记录),而非单一值。本文档中的代码示例展示了如何定义一个返回自定义表类型的函数`Ns_...
教材会介绍如何声明、打开、提取和关闭游标,以及如何在循环中使用游标遍历结果集。 5. **记录和表操作**:PL/SQL提供了内置的DML(数据操纵语言)语句,如INSERT、UPDATE、DELETE,可以直接在PL/SQL块中操作数据库...
4. **游标**:用于遍历查询结果集。在处理多条数据时,游标非常有用。例如,显示所有学生的信息: ```sql DECLARE cursor_student CURSOR FOR SELECT * FROM students; student_rec students%ROWTYPE; BEGIN ...
3. **游标**:讲解如何使用显式和隐式游标进行查询和遍历结果集,以及游标变量的运用。 4. **动态SQL**:探讨如何在PL/SQL中执行SQL语句,包括EXECUTE IMMEDIATE和PREPARE-EXECUTE-CLOSE模式,以及绑定变量的应用。...
6. **游标**:游标用于处理SQL查询结果集,允许逐行操作数据,常用于循环遍历查询结果。 7. **异常处理**:通过EXCEPTION关键字定义异常处理块,能够捕获并处理运行时错误,提高程序健壮性。 8. **动态SQL**:允许...
- **游标(Cursor)**:用于遍历查询结果集,如`CURSOR cursor_name IS SELECT ...;` 3. **PL/SQL流程控制** - **条件语句**:`IF-THEN-ELSIF-ELSE`,用于根据条件执行不同代码。 - **循环语句**:`FOR`循环、`...
《Oracle PLSQL实例精解(原书第4版)》是一本深入探讨Oracle数据库编程语言PL/SQL的专业书籍。此书旨在帮助读者掌握PL/SQL的精髓,通过丰富的实例和详细解析,提升在Oracle数据库环境中的开发能力。作者在书中不仅...
4. 游标:用于遍历查询结果集,常用于动态处理多行数据。 5. 异常处理:通过EXCEPTION关键字处理运行时错误,提供更健壮的程序逻辑。 三、Oracle SQL高级特性 1. 分组和聚合函数:GROUP BY用于分组数据,聚合函数如...
Oracle PL/SQL编程是Oracle数据库管理系统中的核心编程语言,它结合了SQL的查询能力与过程式编程语言的特点,使得开发者可以编写复杂的业务逻辑和数据库操作。在这个领域,掌握PL/SQL的基本语法和实例应用至关重要。...
- 游标用于处理单行结果集,可以逐行处理查询结果,常用于动态数据处理。 6. **记录和复合类型** - PL/SQL中的记录类型允许创建自定义的数据结构,可以包含多个字段。 - 集合类型如VARRAY和TABLE可以存储多个...
- FOR LOOP结构简化了游标的使用,可以遍历整个结果集。 7. **异常处理** - PL/SQL的异常处理通过BEGIN...EXCEPTION部分进行,可以捕获并处理运行时错误。 - 使用预定义异常(如NO_DATA_FOUND,TOO_MANY_ROWS)...
游标可以用于循环遍历结果集,进行条件判断或更新操作。 七、异常处理 PL/SQL提供了异常处理机制,允许捕获和处理运行时错误。使用TRY...CATCH块,可以定义当特定错误发生时的处理逻辑,保证程序的健壮性。 总结来...
Oracle数据库中的日期遍历功能是数据库管理中常用的一种技术,特别是在数据分析、日志查询或时间序列分析等场景中。在Oracle中,我们可以自定义类型和函数来实现这一功能,以便在给定的起始日期和结束日期之间生成...
游标是PL/SQL中处理查询结果集的关键工具,允许逐行处理数据。循环结构如FOR-LOOP、WHILE、LOOP等用于重复执行一段代码,常与游标结合使用,遍历查询结果。 七、事务和回滚 PL/SQL支持事务管理,一组操作被视为一个...
3. **游标**:学习如何使用游标遍历结果集,进行逐行处理,这是在处理复杂数据操作时常用的技术。 4. **复合类型**:了解记录类型(RECORD)和表类型(TABLE),以及如何在PL/SQL中使用这些复合类型来存储和操作...
- 游标(CURSOR)允许程序逐行处理查询结果,用于动态遍历查询结果集。 - 游标的使用包括声明、打开、提取数据、关闭等步骤。 8. 异常处理: - 使用EXCEPTION部分捕获并处理运行时错误,如通过WHEN语句定义特定...
Oracle 数据库日期遍历功能的实现 Oracle 数据库提供了强大的日期遍历功能,允许开发者遍历指定日期范围内的每一天,检索该日期范围内的业务或事件。下面是该功能的实现细节: 日期类的定义 首先,需要定义一个...