oracle函数和存储过程示例
Function:
--为了使产生的uuid符合rfc 4122的标准(http://tools.ietf.org/html/rfc4122),例如:a8f662b8-6e7a-13fe-e040-970a437c6bd7
--函数
CREATE OR REPLACE
FUNCTION get_uuid
RETURN VARCHAR
IS
guid VARCHAR (50);
BEGIN
guid := lower(RAWTOHEX(sys_guid()));
RETURN
substr(guid,1,8)||'-'||substr(guid,9,4)||'-'||substr(guid,13,4)||'-'||substr(guid,17,4)||'-'||substr(guid,21,12);
END get_uuid;
Procedure:
--功能:结转.比如当前日期为8月31日,8月是没有数据的,需将七月份的数据拷贝一份作为8月份的
1 create or replace procedure carryover
(syear IN OUT varchar2,smonth IN OUT varchar2) --注意: 参数是需要结转的年月,而非结转到的年月
is
cursor t_rows(ssyear varchar2,ssmonth varchar2) is select t.* from FYS_SCH_LVYOU2 t where t.remarks=ssmonth and t.year=ssyear;
tmonth varchar2(10);
t_row t_rows%rowtype;
begin
dbms_output.enable(100000);
if syear is null and smonth is null then --没有参数时,则默认上个月的年月
tmonth:=to_char(add_months(sysdate,-1),'yyyy-mm');
syear:=substr(tmonth,1,4);
smonth:=substr(tmonth,6,2);
end if; --dbms_output.put_line('from:'||syear||'/'||smonth); --打印 需要结转的年月 for t_row in t_rows(syear,smonth)
loop
tmonth:=to_char(add_months(to_date(t_row.year||'-'||t_row.remarks,'yyyy-mm'),1),'yyyy-mm');--结转到的年月
--dbms_output.put_line(' to:'||tmonth); --打印 结转到的年月
insert into FYS_SCH_LVYOU2 values( get_uuid(), --UUID,自定义函数,用于格式化sys_guid()
substr(tmonth,0,4), --year
t_row.classification,
t_row.num,
substr(tmonth,6,2), --month
t_row.remarks1,
t_row.remarks2,
t_row.remarks3,
t_row.remarks4,
t_row.remarks5,
t_row.remarks6,
t_row.remarks7,
t_row.remarks8,
t_row.remarks9,
t_row.remarks10
);
end loop; if syear='' then --如果是2016年之前的话,需要结转上一年的
syear:=to_char(to_number(syear)-1);
carryover(syear,smonth); --改变参数,重新调用此存储过程
end if; commit;
exception
when others then rollback;
end;
oracle函数和存储过程示例的更多相关文章
- oracle函数和存储过程有什么区别
oracle函数和存储过程有什么区别 1. 返回值的区别,函数有1个返回值,而存储过程是通过参数返回的,可以有多个或者没有 2.调用的区别,函数可以在查询语句中直接调用,而存储过程必须单独调用. 函数 ...
- Oracle自定义函数和存储过程示例,自定义函数与存储过程区别
参考资料:http://www.newbooks.com.cn/info/60861.html oracle自定义函数学习和连接运算符(||) 贴一段中文文档示例,应该就可以开始工作了: --过程(P ...
- db2 函数、存储过程示例
1.函数 --drop function getMaxDate; create FUNCTION getMaxDate (y int, m int ) returns date begin DECLA ...
- oracle中函数和存储过程的区别和联系【转载竹沥半夏】
oracle中函数和存储过程的区别和联系[转载竹沥半夏] 在oracle中,函数和存储过程是经常使用到的,他们的语法中有很多相似的地方,但也有自己的特点.刚学完函数和存储过程,下面来和大家分享一下自己 ...
- .Net程序员学用Oracle系列(7):视图、函数、存储过程、包
1.视图 1.1.创建.删除及调用普通视图 1.2.高级视图介绍 2.函数 2.1.系统函数介绍 2.2.创建.删除及调用自定义函数 3.存储过程 3.1.创建.修改及删除存储过程 3.2.调用存储过 ...
- .Net程序员学用Oracle系列:视图、函数、存储过程、包
1.视图 在实际操作过程中,本人发现 Oracle 视图定义有一个缺陷,就是不大方便注释,每次写好的注释执行之后再打开视图定义所有注释就全都没了.后来我发现把注释写到末尾就不会被清除,但这样总感觉乖乖 ...
- oracle中函数和存储过程的区别和联系
oracle中函数和存储过程的区别和联系 在oracle中,函数和存储过程是经常使用到的,他们的语法中有很多相似的地方,但也有自己的特点.刚学完函数和存储过程,下面来和大家分享一下自己总结的关于函数和 ...
- Oracle学习操作(6)函数与存储过程
一.oracle自定义函数 1.不带参数的函数: 返回t_book表的总条数: SQL> create function getBookCount return number as begin ...
- 用sql语句导出oracle中的存储过程和函数
用sql语句导出oracle中的存储过程和函数: SET echo off ; SET heading off ; SET feedback off ; SPOOL 'C:/PRC.SQL' repl ...
随机推荐
- CRM 2016 自动保存 Save event arguments
Save event arguments (client-side reference) Applies To: Dynamics CRM 2016, Dynamics CRM Online In ...
- Java SE 第二十二讲----接口interface
1.接口:interface:接口的地位等同于class,接口中的所有方法都是抽象方法.在声明接口中的方法的时候,可以使用abstract关键字也可以不使用.通常情况下,都会省略掉abstract关键 ...
- go mobile 得生命周期事件
生命周期事件,就是状态从一个阶段切换成另外一个状态时触发的事件.所以我们可以看到 lifecycle.Event 的定义如下: 生命周期一共有下面四个阶段: lifecycle.StageDead ...
- AIX 下某些日志定时清空
最近发现weblogic proxy日志一直增加,达到18G把tmp空间撑满,导致系统无法访问,故设定时任务先拷贝后5000行日志做备份后清空proxy日志. vi wl_proxyclear.sh ...
- install httpd
tar -zxvf httpd-2.4.4.tar.gzcd httpd-2.4.4./configure --prefix=/apache/home/openfire/httpd24checking ...
- C++ STL小知识
五种迭代器: 在STL中,迭代器主要分为5类,分别是:输入迭代器.输出迭代器.前向迭代器.双向迭代器和随机访问迭代器. 输入迭代器 :只读,支持++.==.!=: 输出迭代器 :只写,支持++: 前向 ...
- 解决删除/升级Python导致Ubuuntu无法进入桌面的问题
找到问题的原因后于是换个思路,想大概修复了python,Ubuntu进入桌面应该也就没啥问题了.于是重新安装Python发现还是无济于事.也通过/usr/bin/python: can't find ...
- 问题:未能加载文件或程序集“System.Data.SQLite”或它的某一个依赖项。试图加载格式不正确的程序。
在应用程序池中把对应的高级设置中的启用win32位应用程序改为true即可
- XAML学习笔记
XAML是用于实例化.NET对象的标记语言,主要用于构造WPF界面.不同于WPF之前的Windows编程技术(WinForm,MFC及win32sdk),在WPF之中界面主要是在XAML中添 ...
- windows Android开发环境快速搭建和部署
windows安装Android的开发环境相对来说比较简单,本文写给第一次想在自己Windows上建立Android开发环境的朋友们,为了确保大家能顺利完成开发环境的搭建,文章写的尽量详细,希望对初级 ...