create or replace function F_TEST( p_type in number, p_startdate in varchar2, p_enddate in varchar2)
--type类型table_test
return table_test
pipelined is
pragma autonomous_transaction;--自动事物
--type类型row
v_row_test row_test;
type generic_cr is ref cursor;
cr_sqlcur generic_cr;--cursor类型
v_sql varchar2(4096);
--声明参数
v_orgcode varchar2(32);
v_orgname varchar2(128);
--根据不同类型,组合需要的sql
if p_type = 1 then
v_sql:='select * from table1 where
h.startdate > to_date('''||p_startdate||''',''yyyy-mm-dd'')-1
and h.enddate < to_date('''||p_enddate||''',''yyyy-mm-dd'')+1';
end if;
if p_type = 2 then
v_sql:='select * from table2 where
h.startdate > to_date('''||p_startdate||''',''yyyy-mm-dd'')-1
and h.enddate < to_date('''||p_enddate||''',''yyyy-mm-dd'')+1';
end if;
--新建一个表,两个字段,将sql插入到表中,方便查看sql
insert into test (msn) values (v_sql);
commit;
--打开循环--open loop fetch into
open cr_sqlcur for v_sql;
loop
fetch cr_sqlcur
into
v_orgcode,
v_orgname;
exit when cr_sqlcur%notfound;
--type row 整合输出的字段
v_row_test := row_test( v_orgcode,v_orgname);
-- 管道输出
pipe row(v_row_test);
end loop;--循环结束
close cr_sqlcur;
commit;
return;
end F_TEST;
--open loop fetch into
将值插入到自定义字段中--然后用管道输出
分享到:
相关推荐
第二章 基本的SQL SELECT语句 1 第三章 限制行和对数据...第十五章 PL/SQL简介 29 基本结构 30 声明部分 30 可执行部分 31 执行控制 31 循环语句 32 第十六章 游标和异常 34 游标 34 异常处理 36
3.PL/SQL单行函数和组函数详解 29 单行字符串函数 30 单行转换函数 37 SQL中的组函数 40 嵌套函数 42 4.Oracle数据库数据对象分析(上) 42 删除表和更改表名 46 管理视图 47 5.Oracle数据库数据对象分析(中) 49 ...
PL/SQL 基础,一个不错的 PL/SQL 参考手册。内容预览: ---- 第一章 PL/SQL 简介 ---- 1. Oracle应用编辑方法概览 1) Pro*C/C++/... : C语言和数据库打交道的方法,比OCI更常用; 2) ODBC 3) OCI: C语言和...
在PL/SQL中声明变量与其他语言不太一样,它采用从右往左的方式声明,比如声明一个number类型的变量v_id,那其形式应为: v_id number; 如果给上面的v_id变量赋值,不能用“=”,应该用“:=”,即形式为: v_id :=5; ...
15.3 sql server中的存储过程和函数 308 15.3.1 系统存储过程 308 15.3.2 使用create procedure创建存储过程 309 15.3.3 使用execute语句调用存储过程 310 15.3.4 使用create function创建函数 312 15.3.5 使用...
一个简单的PL/SQL 语句块395 又一个程序398 存储过程包和触发机制403 总结406 问与答407 校练场407 练习407 第19 天TRANSACT-SQL 简介408 目标408 TRANSACT-SQL 概貌408 对ANSI SQL 的扩展408 谁需要使用TRANSACT-...
SQL函数 5.1 数字函数 5.2 字符函数 5.3 日期时间函数 5.4 转换函数 5.5 集合函数 5.6 其他单行函数 5.7 分组函数 5.8 对象函数 5.9 习题第 6章 访问Oracle 6.1 检索...
15.3 SQL Server中的存储过程和函数 15.3.1 系统存储过程 15.3.2 使用CREATE PROCEDURE创建存储过程 15.3.3 使用EXECUTE语句调用存储过程 15.3.4 使用CREATE FUNCTION创建函数 15.3.5 使用Enterprise ...
-- (函数max() 求出emp表中sal字段的最大值) 46、select min(sal) from emp; -- (函数max() 求出emp表中sal字段的最小值) 47、select avg(sal) from emp; --(avg()求平均薪水); 48、select to_char(avg(sal),...
存储过程是一组为了完成特定功能的SQL语句集,经编译后存储在数据库中。用户通过指定存储过程的名字并给出参数(如果该存储过程带有参数)来执行它。 1.9.2 准备 create table t_user ( username varchar2(20), ...
10.2.5 将子查询因子化应用到PL/SQL中 270 10.3 递归子查询 273 10.3.1 一个CONNECT BY的例子 274 10.3.2 使用RSF的例子 275 10.3.3 RSF的限制条件 276 10.3.4 与CONNECT BY的不同点 276 10.4 复制CONNECT BY...
在PL/SQL中声明变量与其他语言不太一样,它采用从右往左的方式声明,比如声明一个number类型的变量v_id,那其形式应为: v_id number; 如果给上面的v_id变量赋值,不能用“=”,应该用“:=”,即形式为: v_id :=5; ...
2.1.2 一个简单的PL/SQL块 10 2.1.3 PL/SQL流程控制 13 2.2 游标(CURSOR) 17 2.2.1 游标的概念 18 2.2.2 游标的属性 18 2.2.3 游标中FOR循环的使用 20 2.2.4 带参数游标的使用方法 20 2.3 动态SQL语句 21 2.4 例外...
第一章 PL/SQL 程序设计简介 4 §1.2 SQL与PL/SQL 4 §1.2.1 什么是PL/SQL? 4 §1.2.1 PL/SQL的好处 4 §1.2.2 PL/SQL 可用的SQL语句 5 §1.3 运行PL/SQL程序 5 第二章 PL/SQL块结构和组成元素 6 §2.1 PL/...
第一章 PL/SQL 程序设计简介 4 §1.2 SQL与PL/SQL 4 §1.2.1 什么是PL/SQL? 4 §1.2.1 PL/SQL的好处 4 §1.2.2 PL/SQL 可用的SQL语句 5 §1.3 运行PL/SQL程序 5 第二章 PL/SQL块结构和组成元素 6 §2.1 PL/SQL块 6 ...
第一章 PL/SQL 程序设计简介 4 §1.2 SQL与PL/SQL 4 §1.2.1 什么是PL/SQL? 4 §1.2.1 PL/SQL的好处 4 §1.2.2 PL/SQL 可用的SQL语句 5 §1.3 运行PL/SQL程序 5 第二章 PL/SQL块结构和组成元素 6 §2.1 PL/SQL块 6 ...
第一章 PL/SQL 程序设计简介 4 §1.2 SQL与PL/SQL 4 §1.2.1 什么是PL/SQL? 4 §1.2.1 PL/SQL的好处 4 §1.2.2 PL/SQL 可用的SQL语句 5 §1.3 运行PL/SQL程序 5 第二章 PL/SQL块结构和组成元素 6 §2.1 PL/SQL块 6 ...
第一章 PL/SQL 程序设计简介 4 §1.2 SQL与PL/SQL 4 §1.2.1 什么是PL/SQL? 4 §1.2.1 PL/SQL的好处 4 §1.2.2 PL/SQL 可用的SQL语句 5 §1.3 运行PL/SQL程序 5 第二章 PL/SQL块结构和组成元素 6 §2.1 PL/SQL块 6 ...
3. PL/SQL Developer工具 4. Oracle用户和权限 4.1用户和权限 4.2角色 第2章 SQL数据操作和查询 1. SQL简介 2. 查询 2.1查询结构 2.2查询顺序 . 2.3聚合函数 . 3. 创建表和约束 3.1 Oracle常用数据类型 ...