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函数和存储过程示例的更多相关文章

  1. oracle函数和存储过程有什么区别

    oracle函数和存储过程有什么区别 1. 返回值的区别,函数有1个返回值,而存储过程是通过参数返回的,可以有多个或者没有 2.调用的区别,函数可以在查询语句中直接调用,而存储过程必须单独调用. 函数 ...

  2. Oracle自定义函数和存储过程示例,自定义函数与存储过程区别

    参考资料:http://www.newbooks.com.cn/info/60861.html oracle自定义函数学习和连接运算符(||) 贴一段中文文档示例,应该就可以开始工作了: --过程(P ...

  3. db2 函数、存储过程示例

    1.函数 --drop function getMaxDate; create FUNCTION getMaxDate (y int, m int ) returns date begin DECLA ...

  4. oracle中函数和存储过程的区别和联系【转载竹沥半夏】

    oracle中函数和存储过程的区别和联系[转载竹沥半夏] 在oracle中,函数和存储过程是经常使用到的,他们的语法中有很多相似的地方,但也有自己的特点.刚学完函数和存储过程,下面来和大家分享一下自己 ...

  5. .Net程序员学用Oracle系列(7):视图、函数、存储过程、包

    1.视图 1.1.创建.删除及调用普通视图 1.2.高级视图介绍 2.函数 2.1.系统函数介绍 2.2.创建.删除及调用自定义函数 3.存储过程 3.1.创建.修改及删除存储过程 3.2.调用存储过 ...

  6. .Net程序员学用Oracle系列:视图、函数、存储过程、包

    1.视图 在实际操作过程中,本人发现 Oracle 视图定义有一个缺陷,就是不大方便注释,每次写好的注释执行之后再打开视图定义所有注释就全都没了.后来我发现把注释写到末尾就不会被清除,但这样总感觉乖乖 ...

  7. oracle中函数和存储过程的区别和联系

    oracle中函数和存储过程的区别和联系 在oracle中,函数和存储过程是经常使用到的,他们的语法中有很多相似的地方,但也有自己的特点.刚学完函数和存储过程,下面来和大家分享一下自己总结的关于函数和 ...

  8. Oracle学习操作(6)函数与存储过程

    一.oracle自定义函数 1.不带参数的函数: 返回t_book表的总条数: SQL> create function getBookCount return number as begin ...

  9. 用sql语句导出oracle中的存储过程和函数

    用sql语句导出oracle中的存储过程和函数: SET echo off ; SET heading off ; SET feedback off ; SPOOL 'C:/PRC.SQL' repl ...

随机推荐

  1. gradle android

    从github下载两个开源项目: PagerSlidingTabStrip    |    Android-Universal-Image-Loader-master https://github.c ...

  2. 光流算法:关于OpenCV读写middlebury网站给定的光流的代码

    Middlebury是每个研究光流算法的人不可能不使用的网站,Middlebury提供了许多标准的测试库,这极大地推进了光流算法的进展.Middlebury提供的标准库,其计算出的光流保存在后缀名为. ...

  3. Linux安装Oracle报Checking operating system version must be redhat-3, SuSE-9, redhat-4

    解决办法:vi /xx/database/install/oraparam.ini 找到[Certified Versions] Linux=redhat-3,SuSe-9,redhat-4,后面加上 ...

  4. POJ 2516 Minimum Cost [最小费用最大流]

    题意略: 思路: 这题比较坑的地方是把每种货物单独建图分开算就ok了. #include<stdio.h> #include<queue> #define MAXN 500 # ...

  5. iframe 跨域自适应 纯css解决方法

    <style type="text/css">body{background:#f00;}body, html,#ifm1{width:100%;height:100% ...

  6. 程序员必备:Oracle日常维护命令

        上一篇讲了Linux的日常维护命令,这篇讲讲Oracle的日常维护命令.工作中需要使用Oracle数据库的童鞋们,相信或多或少都需要对Oracle做一些基本的维护操作,例如导入导出总该有吧?( ...

  7. jsp页面

    //获取根目录 ${pageContext.request.contextPath} //(父页面提交,嵌入页面显示)提交表单,设置响应方法和返回结果页面显示在frame中 <input typ ...

  8. HDU 3062 Party

    Party Time Limit: 2000/1000 MS (Java/Others)    Memory Limit: 32768/32768 K (Java/Others)Total Submi ...

  9. 手写堆_C++

    一般主程序中拿堆顶元素 x=h[]; h[]=h[top--]; down(); 在堆尾加入元素 h[++top]=x; up(top); 上浮下沉操作 inline void up(int x) { ...

  10. Docker学习总结之docker入门

    Understanding Docker 以下均翻译自Docker官方文档 ,转载请注明:Vikings翻译. What is Docker? Docker 是一个开源的平台,设计目标是可以方便开发, ...