Oracle存储过程--案例

限额控制

CREATE OR REPLACE PACKAGE BODY NP_PCKG_MERCHANT_LIMIT
ASPROCEDURE CHECK_LIMIT (in_iplCode         IN   VARCHAR2,       --行业编号in_iplState        IN   VARCHAR2,       --卡类型in_posNo           IN   VARCHAR2,      --商户号in_tranAmt         IN   VARCHAR2,      --交易金额out_retcode        OUT  VARCHAR2      --返回码
  )ISv_date             VARCHAR2(8);      --系统日期--v_merchantType     VARCHAR2(30);    --行业类型v_debitSingleMax   NUMBER(18,2);    --借记卡单笔限额v_debitDayMax      NUMBER(18,2);    --借记卡日累计限额v_debitMonthMax    NUMBER(18,2);    --借记卡月累计限额v_debitYearMax     NUMBER(18,2);    --借记卡年累计限额v_debitDaySum      NUMBER(18,2);   --借记卡日累计限额当日发生额v_debitMonthSum    NUMBER(18,2);   --借记卡月累计限额当月发生额v_debitYearSum     NUMBER(18,2);   --借记卡年累计限额当年发生额v_debitLastDate    NUMBER(18,2);   --借记卡限额上次交易日v_creditSingleMax  NUMBER(18,2);   --贷记卡单笔限额v_creditDayMax     NUMBER(18,2);   --贷记卡日累计限额v_creditMonthMax   NUMBER(18,2);   --贷记卡月累计限额v_creditYearMax    NUMBER(18,2);   --贷记卡年累计限额v_creditDaySum     NUMBER(18,2);   --贷记卡日累计限额当日发生额v_creditMonthSum   NUMBER(18,2);   --贷记卡月累计限额当月发生额v_creditYearSum    NUMBER(18,2);   --贷记卡年累计限额当年发生额v_creditLastDate   NUMBER(18,2);   --贷记卡限额上次交易日--v_stt              VARCHAR2(1);      --账户状态BEGINout_retcode := '0';--取当前日期v_date := to_char(SYSDATE, 'yyyymmdd');------------------------------------------------------------------ 判断商户收单限额(设置的客商户日累计限额)------------------------------------------------------------------取收单限额 也要区分借记卡 和 贷记卡IF in_iplState = 1 THEN --是借记卡BEGINSELECTIPL_DEBIT_SINGLE,IPL_DEBIT_DAYMAX,IPL_DEBIT_MONTHMAX,IPL_DEBIT_YEARMAXINTOv_debitSingleMax,v_debitDayMax,v_debitMonthMax,v_debitYearMaxFROMIM_PAY_LIMITWHEREIPL_CODE = in_iplCode AND --此处需要一个参数,行业的codeIPL_STATE in('00','01') ;  --先判断限额状态 00标示  如果是借记卡和贷记卡都可以用,或者借记卡和贷记卡只有一个能用,或者都不能用
EXCEPTIONWHEN NO_DATA_FOUND THENNULL;dbms_output.put_line(v_debitSingleMax);END;ELSIF in_iplState = 2 THEN --是贷记卡BEGINSELECTIPL_CREDIT_SINGLE,IPL_CREDIT_DAYMAX,IPL_CREDIT_MONTHMAX,IPL_CREDIT_YEARMAXINTOv_creditSingleMax,v_creditDayMax,v_creditMonthMax,v_creditYearMaxFROMIM_PAY_LIMITWHEREIPL_CODE = in_iplCode AND --此处需要一个参数,行业的codeIPL_STATE in('00','10');  --先判断限额状态 00标示  如果是借记卡和贷记卡都可以用,或者借记卡和贷记卡只有一个能用,或者都不能用
EXCEPTIONWHEN NO_DATA_FOUND THENNULL;END;END IF;--取商户年月日累计限额 ---BEGINSELECTIMD_DEBIT_DAYAMT,IMD_DEBIT_MONTHAMT,IMD_DEBIT_YEARAMT,IMD_DEBIT_TRANSDAY,IMD_CREDIT_DAYAMT,IMD_CREDIT_MONTHAMT,IMD_CREDIT_YEARAMT,IMD_CREDIT_TRANSDAYINTOv_debitDaySum,v_debitMonthSum,v_debitYearSum,v_debitLastDate,v_creditDaySum,v_creditMonthSum,v_creditYearSum,v_creditLastDateFROMIM_MERCHANT_DAYSUMWHEREIMD_POSNO = in_posNo;EXCEPTIONWHEN NO_DATA_FOUND THENINSERT INTO IM_MERCHANT_DAYSUM (IMD_POSNO,IMD_DEBIT_DAYAMT,IMD_DEBIT_MONTHAMT,IMD_DEBIT_YEARAMT,IMD_CREDIT_DAYAMT,IMD_CREDIT_MONTHAMT,IMD_CREDIT_YEARAMT,IMD_DEBIT_TRANSDAY,IMD_CREDIT_TRANSDAY) VALUES (in_posNo,'0.00','0.00','0.00','0.00','0.00','0.00',v_date,v_date);END;--判断是商户借记卡 =1    还是贷记卡 =2  STARTIF in_iplState = 1 THEN--如果是借记卡,则判断借记卡的单笔,日累计,月累计,年累计限额  v_debitSingleMaxIF TO_NUMBER(in_tranAmt) > v_debitSingleMax THENout_retcode := 'NPML1001';                    --错误码NPML1001:超过借记卡单笔限额--ROLLBACK;RETURN;END IF;-- 判断借记卡日累计交易限额否需要清零 ,如果是昨天的交易,今天需要清零 开始IF v_date <> v_debitLastDate THEN --herev_debitDaySum := 0;END IF;-- 判断借记卡日累计交易限额否需要清零 ,如果是昨天的交易,今天需要清零 结束IF v_debitDaySum + TO_NUMBER(in_tranAmt) > v_debitDayMax THEN --借记卡日累计限额out_retcode := 'NPML1002';                    --错误码NPML1002:超过借记卡日累计限额--ROLLBACK;RETURN;END IF;--判断借记卡月累计交易限额是否需要清零,如果是上个月的交易,则临时置空 开始IF substr(v_date,1,6) <> substr(v_debitLastDate,1,6) THENv_debitMonthSum := 0;END IF;--判断借记卡月累计交易限额是否需要清零,如果是上个月的交易,则临时置空 结束IF v_debitMonthSum + TO_NUMBER(in_tranAmt) > v_debitMonthMax THEN --借记卡月累计限额out_retcode := 'NPML1003';                    --错误码NPML1003:超过借记卡月累计限额--ROLLBACK;RETURN;END IF;--判断借记卡年累计交易限额是否需要清零,如果是去年的交易,则临时置空 开始IF substr(v_date,1,4) <> substr(v_debitLastDate,1,4) THENv_debitYearSum := 0;END IF;--判断借记卡年累计交易限额是否需要清零,如果是去年的交易,则临时置空 结束IF v_debitYearSum + TO_NUMBER(in_tranAmt) > v_debitYearMax THEN --借记卡年累计限额out_retcode := 'NPML1004';                    --错误码NPML1004:超过借记卡年累计限额--ROLLBACK;RETURN;END IF;ELSIF in_iplState = 2 THEN--如果是贷记卡IF TO_NUMBER(in_tranAmt) > v_creditSingleMax THENout_retcode := 'NPML1005';                    --错误码NPML1005:超过贷记卡单笔限额--ROLLBACK;RETURN;END IF;-- 判断贷记卡日累计交易限额是否需要清零 开始IF v_date <> v_creditLastDate THEN --herev_creditDaySum := 0;END IF;-- 判断贷记卡日累计交易限额是否需要清零 结束IF v_creditDaySum + TO_NUMBER(in_tranAmt) > v_creditDayMax THEN --贷记卡日累计限额out_retcode := 'NPML1006';                    --错误码NPML1006:超过贷记卡日累计限额--ROLLBACK;RETURN;END IF;--判断贷记卡月累计交易限额是否需要清零,如果是上个月的交易,则临时置空 开始IF substr(v_date,1,6) <> substr(v_creditLastDate,1,6) THENv_creditMonthSum := 0;END IF;--判断贷记卡月累计交易限额是否需要清零,如果是上个月的交易,则临时置空 结束IF v_creditMonthSum + TO_NUMBER(in_tranAmt) > v_creditMonthMax THEN --贷记卡月累计限额out_retcode := 'NPML1007';                    --错误码NPML1007:超过贷记卡月累计限额--ROLLBACK;RETURN;END IF;--判断贷记卡年累计交易限额是否需要清零,如果是去年的交易,则临时置空 开始IF substr(v_date,1,4) <> substr(v_creditLastDate,1,4) THENv_creditYearSum := 0;END IF;--判断贷记卡年累计交易限额是否需要清零,如果是去年的交易,则临时置空 结束IF v_creditYearSum + TO_NUMBER(in_tranAmt) > v_creditYearMax THEN --贷记卡月累计限额out_retcode := 'NPML1008';                    --错误码NPML1008:超过贷记卡年累计限额--ROLLBACK;RETURN;END IF;END IF;--判断是商户借记卡 =1    还是贷记卡 =2  ENDCOMMIT;END;PROCEDURE UPDATE_LIMIT (in_posNo               IN    VARCHAR2,            --商户号in_iplState            IN    VARCHAR2,            --卡类型in_tranAmt             IN    VARCHAR2,            --交易金额out_retcode            OUT   VARCHAR2            --返回码
    )ISv_date             VARCHAR2(8);      --系统日期v_debitDaySum      NUMBER(18,2);   --借记卡日累计限额当日发生额v_debitMonthSum    NUMBER(18,2);   --借记卡月累计限额当月发生额v_debitYearSum     NUMBER(18,2);   --借记卡年累计限额当年发生额v_debitLastDate    NUMBER(18,2);   --借记卡限额上次交易日
v_creditDaySum     NUMBER(18,2);   --贷记卡日累计限额当日发生额v_creditMonthSum   NUMBER(18,2);   --贷记卡月累计限额当月发生额v_creditYearSum    NUMBER(18,2);   --贷记卡年累计限额当年发生额v_creditLastDate   NUMBER(18,2);   --贷记卡限额上次交易日BEGINout_retcode := '0';--取当前日期v_date := to_char(SYSDATE, 'yyyymmdd');--取客户日累计限额BEGINSELECTIMD_DEBIT_DAYAMT,IMD_DEBIT_MONTHAMT,IMD_DEBIT_YEARAMT,IMD_CREDIT_DAYAMT,IMD_CREDIT_MONTHAMT,IMD_CREDIT_YEARAMTINTOv_debitDaySum,v_debitMonthSum,v_debitYearSum,v_creditDaySum,v_creditMonthSum,v_creditYearSumFROMIM_MERCHANT_DAYSUMWHEREIMD_POSNO = in_posNoFOR UPDATE;EXCEPTIONWHEN NO_DATA_FOUND THENNULL;END;--判断借记卡日累计交易限额否需要清零IF v_date <> v_debitLastDate THENv_debitDaySum := 0;END IF;-- 判断贷记卡日累计交易限额是否需要清零IF v_date <> v_creditLastDate THEN --herev_creditDaySum := 0;END IF;--判断借记卡月累计交易限额否需要清零IF substr(v_date,1,6) <> substr(v_debitLastDate,1,6) THENv_debitMonthSum := 0;END IF;--判断贷记卡月累计交易限额否需要清零IF substr(v_date,1,6) <> substr(v_creditLastDate,1,6) THENv_creditMonthSum := 0;END IF;--判断借记卡年累计交易限额否需要清零IF substr(v_date,1,4) <> substr(v_debitLastDate,1,4) THENv_debitYearSum := 0;END IF;--判断贷记卡年累计交易限额否需要清零IF substr(v_date,1,4) <> substr(v_creditLastDate,1,4) THENv_creditYearSum := 0;END IF;--更新商户收单限额累计表    需要区分借记卡和贷记卡IF in_iplState = 1 THEN --借记卡UPDATE IM_MERCHANT_DAYSUM --更新借记卡收单累计限额SETIMD_DEBIT_DAYAMT = v_debitDaySum + TO_NUMBER(in_tranAmt),IMD_DEBIT_MONTHAMT = v_debitMonthSum + TO_NUMBER(in_tranAmt),IMD_DEBIT_YEARAMT = v_debitYearSum + TO_NUMBER(in_tranAmt),IMD_DEBIT_TRANSDAY = v_dateWHEREIMD_POSNO = in_posNo;COMMIT;ELSIF in_iplState = 2 THEN --贷记卡UPDATE IM_MERCHANT_DAYSUM --更新贷记卡收单累计限额SETIMD_CREDIT_DAYAMT = v_creditDaySum + TO_NUMBER(in_tranAmt),IMD_CREDIT_MONTHAMT = v_creditMonthSum + TO_NUMBER(in_tranAmt),IMD_CREDIT_YEARAMT = v_creditYearSum + TO_NUMBER(in_tranAmt),IMD_CREDIT_TRANSDAY = v_dateWHEREIMD_POSNO = in_posNo;COMMIT;END IF;END;PROCEDURE ROLL_LIMIT (in_posNo        IN  VARCHAR2,     --商户号in_iplState           IN VARCHAR2,        --卡类型in_orderNo        IN  VARCHAR2,     --交易流水号out_retcode       OUT VARCHAR2      --存储过程返回码
  )ISv_amt     VARCHAR2(20);v_transDate VARCHAR2(8);v_nowDate   VARCHAR2(8);BEGINout_retcode:='0';v_nowDate:=to_char(SYSDATE, 'yyyymmdd');--取客户日累计限额BEGINSELECTsubstr(NPF_TRAN_TIME,1,8),NPF_ORDER_AMTINTOv_transDate,v_amtFROMNP_PAY_FLOWWHERENPF_FLOWNO = in_orderNoFOR UPDATE;EXCEPTIONWHEN NO_DATA_FOUND THENNULL;END;IF v_transDate ='' THENout_retCode:='0';return;END IF;--IF v_transDate<> v_nowDate then--如果不是今天的指令,不处理当日的限额--  out_retCode:='0';--  return;--END IF;--查找到该订单,并且回滚的是今天的订单--如果是借记卡交易--
        IF in_iplState = 1 then --回滚借记卡IF v_transDate = v_nowDate then--如果交易日期小于今天当天日期,则判断是否为本月的交易,    回滚当月和当年的UPDATE IM_MERCHANT_DAYSUM--更新当天、本月、本年的累计额度SETIMD_DEBIT_DAYAMT = IMD_DEBIT_DAYAMT - v_amt,--更新当日的限额IMD_DEBIT_MONTHAMT = IMD_DEBIT_MONTHAMT - v_amt,--更新本月的限额IMD_DEBIT_YEARAMT = IMD_DEBIT_YEARAMT - v_amt--更新本年的限额WHEREIMD_POSNO = in_posNo;--商户号COMMIT;ELSIF v_transDate < v_nowDate then --如果交易时间不是今天,则判断是否为本月的交易IF substr(v_transDate,1,6) = substr(v_nowDate,1,6) THEN--不是当天的交易,则判断是否为本月的交易STARTUPDATE IM_MERCHANT_DAYSUM--更新本月、本年的交易SETIMD_DEBIT_MONTHAMT = IMD_DEBIT_MONTHAMT - v_amt,--更新本月的限额IMD_DEBIT_YEARAMT = IMD_DEBIT_YEARAMT - v_amt --更新本年的限额WHEREIMD_POSNO = in_posNo;--商户号COMMIT;ELSIF substr(v_transDate,1,6) < substr(v_nowDate,1,6) THEN--不是当天的交易,也不是本月的交易,则判断是否为本年的交易IF substr(v_transDate,1,4) = substr(v_nowDate,1,4) THEN--不是当天的交易,也不是本月的交易,是本年的交易UPDATE IM_MERCHANT_DAYSUM--更新本年的交易SETIMD_DEBIT_YEARAMT = IMD_DEBIT_YEARAMT - v_amt--更新本年的限额WHEREIMD_POSNO = in_posNo;--商户号COMMIT;END IF;END IF;--不是当天的交易,则判断是否为本月的交易ENDEND IF;--回滚借记卡结束ELSIF in_iplState = 2 then  --回滚贷记卡IF v_transDate = v_nowDate then--如果交易日期小于今天当天日期,则判断是否为本月的交易,    回滚当月和当年的UPDATE IM_MERCHANT_DAYSUM--更新当天、本月、本年的累计额度SETIMD_CREDIT_DAYAMT = IMD_CREDIT_DAYAMT - v_amt,--更新当日的限额IMD_CREDIT_MONTHAMT = IMD_CREDIT_DAYAMT - v_amt,--更新本月的限额IMD_CREDIT_YEARAMT = IMD_CREDIT_YEARAMT - v_amt--更新本年的限额WHEREIMD_POSNO = in_posNo;--商户号COMMIT;ELSIF v_transDate < v_nowDate then --如果交易时间不是今天,则判断是否为本月的交易IF substr(v_transDate,1,6) = substr(v_nowDate,1,6) THEN--不是当天的交易,则判断是否为本月的交易STARTUPDATE IM_MERCHANT_DAYSUM--更新本月、本年的交易SETIMD_CREDIT_MONTHAMT = IMD_CREDIT_MONTHAMT - v_amt,--更新本月的限额IMD_CREDIT_YEARAMT = IMD_CREDIT_YEARAMT - v_amt--更新本年的限额WHEREIMD_POSNO = in_posNo;--商户号COMMIT;ELSIF substr(v_transDate,1,6) < substr(v_nowDate,1,6) THEN--不是当天的交易,也不是本月的交易,则判断是否为本年的交易IF substr(v_transDate,1,4) = substr(v_nowDate,1,4) THEN--不是当天的交易,也不是本月的交易,是本年的交易UPDATE IM_MERCHANT_DAYSUM--更新本年的交易SETIMD_CREDIT_YEARAMT = IMD_CREDIT_YEARAMT - v_amt --更新本年的限额WHEREIMD_POSNO = in_posNo;--商户号COMMIT;END IF;END IF;--不是当天的交易,则判断是否为本月的交易ENDEND IF;--回滚借记卡结束END IF;--回滚借记卡、贷记卡结束--
  END;END NP_PCKG_MERCHANT_LIMIT;

 表结构:

 

转载于:https://www.cnblogs.com/taiguyiba/p/7815746.html

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.mzph.cn/news/252935.shtml

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

SpringMVC—对Ajax的处理(含 JSON 类型)(2)

这里编写了一个通用的类型转换器&#xff1a;用来转换形如&#xff1a; firstNamejack&lastNamelily&gender1&foodsSteak&foodsPizza&quoteEnteryourfavoritequote!&educationJr.High&tOfDDay 到 Student 对象。/*** author solverpeng* create 20…

马来西亚热情拥抱阿里巴巴 马云倡议的eWTP首次落地海外

摘要&#xff1a;3月22日&#xff0c;马来西亚总理纳吉布与阿里巴巴集团董事局主席马云一同出现在吉隆坡一场盛大启动仪式上&#xff0c;他们将共同见证马云的eWTP理念落地马来西亚。 3月22日&#xff0c;在邀请阿里巴巴集团董事局主席马云、阿里巴巴集团CEO张勇、蚂蚁金服集团…

征名公布|Qtum量子链企业版—Unita 中文名征集圆满落幕

Qtum量子链基金会为感谢社区与为了充分调动社区积极性&#xff0c;调动社区力量&#xff0c;在Qtum企业版完整公布之前将中文名留给社区成员们集思广益&#xff0c;其中截止2018年11月26日&#xff0c;我们征集到数百份来自社区的优秀名称&#xff0c;在经过基金会层层严肃认真…

随便玩玩之PostgreSQL(第一章)PostgreSQL简介

随便玩玩之PostgreSQL 未经授权不得转载 第1章PostgreSQL简介 1.1什么是PostgreSQLPostgresql是数据库&#xff08;软件&#xff09;。The worlds most advanced open source database.世界上最先进的开源数据库。 1.2PostgreSQL的优势随便用、不要钱 比MySQL好&#xff0c;媲美…

bootstrap 利用jquery 添加disabled属性

添加&#xff1a; $("#id").attr("disabled","disabled"); 去除&#xff1a; $("#id").removeattr("disabled");转载于:https://www.cnblogs.com/duyunchao-2261/p/6692141.html

生产环境中Oracle常用函数总结

1>to_char,将日期转换为字符&#xff1b;add_months,在第一个参数的日期上加或者减第二个参数的值&#xff1b;select dkzh,jkhtbh,yhkrq,dkffrq,shqs,dqyqcs,to_char(add_months(dkffrq,shqsdqyqcs1),yyyymm) from grdk_dk_zz a where a.dkzt in(02,03) and jgbm like 01||…

国内VR内容分发平台探讨:未来充满变数,一切才刚开始

移动VR搞内容分发平台的思维源自于移动互联网时代&#xff0c;App Store成就了iPhone和苹果;安卓端谷歌应用商店称霸全球&#xff0c;唯独进不了中国&#xff0c;于是国内涌现了一大批移动分发平台&#xff0c;91无线、豌豆荚、安卓应用商店、机锋、安智、小米商店……最后大部…

Dockerfile构建容器镜像 - 运维笔记

在Docker的运用中&#xff0c;从下载镜像&#xff0c;启动容器&#xff0c;在容器中输入命令来运行程序&#xff0c;这些命令都是手工一条条往里输入的&#xff0c;无法重复利用&#xff0c;而且效率很低。所以就需要一 种文件或脚本&#xff0c;我们把想执行的操作以命令的方式…

201421123042 《Java程序设计》第8周学习总结

1. 本周学习总结 以你喜欢的方式&#xff08;思维导图或其他&#xff09;归纳总结集合相关内容。 2. 书面作业 1. ArrayList代码分析 1.1 解释ArrayList的contains源代码 源代码&#xff1a; 答&#xff1a;查找对象是否再数组中&#xff0c;并且返回在数组中的下标。如果不在数…

Linux驱动静态编译和动态编译方法详解

内核源码树的目录下都有两个文档Kconfig和Makefile。分布到各目录的Kconfig构成了一个分布式的内核配置数据库&#xff0c;每个Kconfig分别描述了所属目录源文档相关的内核配置菜单。在内核配置make menuconfig时&#xff0c;从Kconfig中读出菜单&#xff0c;用户选择后保存到.…

Linux学习-11月12日(Apache安装)

2019独角兽企业重金招聘Python工程师标准>>> 11.6 MariaDB安装 11.7/11.8/11.9 Apache安装 扩展 apache dso https://yq.aliyun.com/articles/6298 apache apxs https://wizardforcel.gitbooks.io/apache-doc/content/51.html apache工作模式 https://blog.csdn.…

11. sql DDL

SQL分为5大类&#xff1a; DDL:数据定义语言 DCL:数据控制语言 DML:数据操纵语言 DTL:数据事务语言 DQL:数据查询语言 1、DDL(data definition language):create,drop,alter,rename to 数据类型 ①、数字类型&#xff0c;可以数学运算 number&#xff08;4&#xff09;代表整数…

[bzoj2243][SDOI2011]染色

来自FallDream 的博客&#xff0c;未经允许&#xff0c;请勿转载&#xff0c;谢谢qaq 给定一棵有n个节点的无根树和m个操作&#xff0c;操作有2类&#xff1a; 1、将节点a到节点b路径上所有点都染成颜色c&#xff1b; 2、询问节点a到节点b路径上的颜色段数量&#xff08;连续相…

Linux学习笔记——例说makefile 增加宏定义

从学习C语言开始就慢慢开始接触makefile&#xff0c;查阅了很多的makefile的资料但总感觉没有真正掌握makefile&#xff0c;如果自己动手写一个makefile总觉得非常吃力。所以特意借助博客总结makefile的相关知识&#xff0c;通过例子说明makefile的具体用法。 例说makefile…

Android基本组件是什么?

1、ImageView继承View组件,不单单用于显示图片,用 XML代码 编写的Drawable也可以显示出来。其中的XML属性 android:scaleType(设置图片如何缩放或移动以适应ImageView的大小) 有很多的属性值,如:matrix(使用矩形方式进行缩放)fitXY(对图片横向纵向缩放)center(图片放在ImageVie…

Java 运算符及优先级

运算符 分割符&#xff1a;  ,  ;  []  ()算数运算符&#xff1a;    -  *  /  %    --关系运算符&#xff1a;  >  <  >  <    !逻辑运算符&#xff1a;  !  &  |  ^  &&  ||赋值运算符&#xff1a; …

array sort - 2 : quick sort

递归实现&#xff1a; #include <stdio.h>int arr[10] {3, 2, 4, 1, 9, 7, 5, 6, 0, 8};void print_array(){ int i 0; for (i 0; i < 10; i) printf("arr[%d]:%d ", i, arr[i]); printf("\n");}void swap(int *i, int *j){ …

Linux C 读取文件夹下所有文件(包括子文件夹)的文件名

本文&#xff1a;http://www.cnblogs.com/xudong-bupt/p/3504442.html Linux C 下面读取文件夹要用到结构体struct dirent&#xff0c;在头#include <dirent.h>中&#xff0c;如下&#xff1a; #include <dirent.h> struct dirent {long d_ino; /* inode number 索…

报表工具实现单据套打

【摘要】 单据套打再也不用手动测量&#xff0c;反复调试了&#xff0c;报表工具实现单据套打&#xff0c;去乾学院看个究竟&#xff1a;报表工具实现单据套打!实际项目开发中&#xff0c;很多情况会涉及到单据的打印。即在一张印刷好的空白单据上&#xff0c;准确无误地打印上…

每隔10秒钟打印一个“Helloworld”

/*** 每隔10秒钟打印一个“Helloworld”*/ public class Test03 {public static void main(String[] args) throws InterruptedException {ThreadImp threadImp new ThreadImp();Thread thread1 new Thread(threadImp);thread1.start();} }class ThreadImp extends Thread {p…