--获取部门树

procedure:

create or replace procedure P_UTIL_TREE_ALL(P_APPL_NAME in VARCHAR2,
P_HIERARCHY_TYP in VARCHAR2,
TREETYPE in varchar2,
P_CUR OUT SYS_REFCURSOR) is
begin
OPEN P_CUR FOR
with v_util_tree as
(select h.EQ_NAME, h.PARENT_EQ_NAME, e.Typ, e.Dscr, h.seq
from IP_EQUIP_HIERARCHY h
inner join IP_EQ e
on h.Eq_Name = e.Eq_Name
where APPL_NAME = P_APPL_NAME
AND HIERARCHY_TYP = P_HIERARCHY_TYP
and e.typ <> 'TANK'
and e.typ <> 'LGTANK'
and e.typ <> 'POST'
union all
select 'NO_ASSIGNED', '$ASSET', null, '未分配', NULL as seq
from dual
union all
select EQ_NAME, '0', Typ, Dscr, 0 as seq
from IP_EQ
where EQ_NAME = '$ASSET')
SELECT DSCR as TEXT, EQ_NAME as ID, PARENT_EQ_NAME, TYP,SEQ
FROM v_util_tree A

START WITH A.PARENT_EQ_NAME = TREETYPE
CONNECT BY prior A.EQ_NAME = A.PARENT_EQ_NAME
order by SEQ;
end P_UTIL_TREE_ALL;

CREATE OR REPLACE PROCEDURE A_MEAS_MIINSP_PLAN_UPDATE
AS
vs_msg VARCHAR2(4000);
log_body VARCHAR2(400);
log_body2 VARCHAR2(400);
updatecount number;
plancodes varchar2(1000);
codeday VARCHAR2(40); --前几天
cur_1 SYS_REFCURSOR; --声明游标变量
v_plan_code VARCHAR2(400); --当前plancode
v_plan_name VARCHAR2(400); --当前planname
BEGIN
insert into a_meas_miinsp_log(CREATE_DATE,BODY,EXECUTE,LOGTYPE) values(sysdate,'开始执行A_MEAS_MIINSP_PLAN_UPDATE存储过程','execute','A_MEAS_MIINSP_PLAN_UPDATE');
--定义游标(简单的说就是一个可以遍历的结果集)
select A_DICS.Code into codeday
from A_DICS
inner join a_Diccategory on A_DICS.Categoryid = a_Diccategory.Keyid
where A_DICS.Status = 1 and a_Diccategory.Code = 'MEAS_RecycleDay' and A_DICS.title ='检定';

if(codeday is null)
then
begin
insert into a_meas_miinsp_log(CREATE_DATE,BODY,EXECUTE,LOGTYPE) values(sysdate,'数据字典中不存在配置单据回收天数','execute','A_MEAS_MIINSP_PLAN_UPDATE');
insert into a_meas_miinsp_log(CREATE_DATE,BODY,EXECUTE,LOGTYPE) values(sysdate,'结束执行A_MEAS_MIINSP_PLAN_UPDATE存储过程','execute','A_MEAS_MIINSP_PLAN_UPDATE');
commit;
return;
end;
end if;

open cur_1 for
--CURSOR cur_1 IS
select plan_code,plan_name from a_meas_miinsp_plan
where
--create_date < to_date(to_char(sysdate - interval codeday day,'yyyy-mm-dd'),'yyyy-mm-dd')
to_date(to_char(create_date,'yyyy-mm-dd'),'yyyy-mm-dd') <= to_date(to_char(sysdate -codeday,'yyyy-mm-dd'),'yyyy-mm-dd')
and report_state in (1,2);

loop
FETCH cur_1 into v_plan_code,v_plan_name;
EXIT WHEN cur_1%NOTFOUND;

update a_meas_instru_ccount a set
a.mi_status=(
select b.old_mi_status from a_meas_miinsp_detail b where
b.plan_code=v_plan_code and
b.mi_id=a.mi_id )
,operatedate=sysdate,operateuser='sysadmin'
where exists (
select b.old_mi_status from a_meas_miinsp_detail b where
b.plan_code=v_plan_code and
b.mi_id=a.mi_id);
log_body :='修改'||v_plan_name||'检定计划下器具状态为原来状态.';
plancodes:=plancodes||v_plan_code||',';
insert into a_meas_miinsp_log(CREATE_DATE,BODY,EXECUTE,LOGTYPE) values(sysdate,log_body,'update','A_MEAS_MIINSP_PLAN_UPDATE+A_MEAS_INSTRU_CCOUNT');
END LOOP;

select count(*) into updatecount from a_meas_miinsp_plan
where
--create_date < to_date(to_char(sysdate - interval codeday day,'yyyy-mm-dd'),'yyyy-mm-dd')
to_date(to_char(create_date,'yyyy-mm-dd'),'yyyy-mm-dd') <= to_date(to_char(sysdate -codeday,'yyyy-mm-dd'),'yyyy-mm-dd')
and report_state in (1,2) ;
if(updatecount>0)
then
--更新检定计划表中的三天前的编制状态记录为 已回收 状态
--update a_meas_miinsp_plan set report_state=7 where create_date < to_date(to_char(sysdate - interval codeday day,'yyyy-mm-dd'),'yyyy-mm-dd');
update a_meas_miinsp_plan set report_state=7,change_time=sysdate,change_userid='sysadmin' where to_date(to_char(create_date,'yyyy-mm-dd'),'yyyy-mm-dd') <= to_date(to_char(sysdate -codeday,'yyyy-mm-dd'),'yyyy-mm-dd')
and report_state in (1,2) ;
--添加日志
log_body2 :='修改'||updatecount||'条编制状态的检定计划:'||plancodes;
insert into a_meas_miinsp_log(CREATE_DATE,BODY,EXECUTE,LOGTYPE) values(sysdate,log_body2,'update','A_MEAS_MIINSP_PLAN_UPDATE+A_MEAS_MIINSP_PLAN');
end if;
insert into a_meas_miinsp_log(CREATE_DATE,BODY,EXECUTE,LOGTYPE) values(sysdate,'结束执行A_MEAS_MIINSP_PLAN_UPDATE存储过程','execute','A_MEAS_MIINSP_PLAN_UPDATE');
COMMIT;
EXCEPTION
WHEN OTHERS THEN
vs_msg := 'ERROR IN A_MEAS_MIINSP_PLAN_UPDATE '||SUBSTR(SQLERRM,1,500);
ROLLBACK;
--添加日志
insert into a_meas_miinsp_log(CREATE_DATE,BODY,EXECUTE,LOGTYPE) values(sysdate,vs_msg,'update','A_MEAS_MIINSP_PLAN_UPDATE');
COMMIT;
RETURN;
End;

CREATE OR REPLACE PROCEDURE A_MEAS_MIINSP_PLAN_CREATE
AS
vs_msg VARCHAR2(4000);
p_PERIODTYPE number; --周期类型
p_ISAUTOCRATEPLAN number; --是否自动创建
p_PERIODVALUE number; --周期值
p_LASTEXECURTDATE DATE; --上次执行日期
p_NEXTEXECURTDATE DATE; --下次执行日期
p_count number; --自动创建的器具数量
p_current_ym varchar2(50); --当前年月
p_maxnum number; --检定计划最新的编号
p_new_plancode number; --检定计划新编号
p_msg varchar2(1000); --日志信息
v_instrun SYS_REFCURSOR; --声明游标变量
v_group_org_id_cursor SYS_REFCURSOR;

v_group_org_id varchar2(100);
v_mi_id number;
v_MI_STATUS varchar2(100);
v_mi_org_id varchar2(100);
v_insdate DATE; --检定日期

p_updatemiids varchar2(1000);
p_insertplancode varchar2(1000);

config_count number; --配置表数量

current_dscr varchar2(200); --当前单位
new_plan_name varchar2(200); --当前新计划名称

begin
insert into a_meas_miinsp_log(CREATE_DATE,BODY,EXECUTE,LOGTYPE) values(sysdate,'开始执行A_MEAS_MIINSP_PLAN_CREATE存储过程','execute','A_MEAS_MIINSP_PLAN_CREATE');

select count(*) into config_count from a_meas_miinsp_config;

--判断是否自动创建
if(config_count<1) then
begin

insert into a_meas_miinsp_log(CREATE_DATE,BODY,EXECUTE,LOGTYPE) values(sysdate,'A_MEAS_MIINSP_CONFIG不存在记录','execute','A_MEAS_MIINSP_PLAN_CREATE');
insert into a_meas_miinsp_log(CREATE_DATE,BODY,EXECUTE,LOGTYPE) values(sysdate,'结束执行A_MEAS_MIINSP_PLAN_CREATE存储过程','execute','A_MEAS_MIINSP_PLAN_CREATE');
commit;
return;
end;
end if;

--获取配置表中的数据
select PERIODTYPE,ISAUTOCRATEPLAN,PERIODVALUE,LASTEXECURTDATE into p_PERIODTYPE, p_ISAUTOCRATEPLAN,p_PERIODVALUE, p_LASTEXECURTDATE from a_meas_miinsp_config;

if( p_ISAUTOCRATEPLAN=0) then
Begin
insert into a_meas_miinsp_log(CREATE_DATE,BODY,EXECUTE,LOGTYPE) values(sysdate,'A_MEAS_MIINSP_CONFIG表记录配置不需要自动创建记录','execute','A_MEAS_MIINSP_PLAN_CREATE');
insert into a_meas_miinsp_log(CREATE_DATE,BODY,EXECUTE,LOGTYPE) values(sysdate,'结束执行A_MEAS_MIINSP_PLAN_CREATE存储过程','execute','A_MEAS_MIINSP_PLAN_CREATE');
commit;
return;
end;
end if;

if(p_PERIODTYPE=1)
then
begin
--获取下次执行日期
if(p_LASTEXECURTDATE is null)
then
--设置最后更新的日期为当前时间,和下次更新时间
p_LASTEXECURTDATE:=to_date(to_char(SYSDATE,'yyyy-mm-dd') ,'yyyy-mm-dd');
p_NEXTEXECURTDATE:=to_date(to_char(ADD_MONTHS(trunc(sysdate,'mm'), p_PERIODVALUE),'yyyy-mm-dd') ,'yyyy-mm-dd');
else
p_NEXTEXECURTDATE:=to_date( to_char(ADD_MONTHS(p_LASTEXECURTDATE, p_PERIODVALUE),'yyyy-MM-dd'),'yyyy-mm-dd');
--SELECT to_char(ADD_MONTHS(p_LASTEXECURTDATE, p_PERIODVALUE),'yyyy-MM-dd') INTO p_NEXTEXECURTDATE FROM DUAL;
end if;

end;
end if;
p_count:=0;
--判断当前时间是否大于最后执行的时间
if(p_LASTEXECURTDATE <=to_date(to_char(SYSDATE,'yyyy-mm-dd') ,'yyyy-mm-dd'))
then
begin
--定义游标
--declare v_instrun_1 cursor for select mi_id,MI_STATUS,mi_org_id from a_meas_instru_ccount where VERIFICTION_DATE BETWEEN p_LASTEXECURTDATE AND p_NEXTEXECURTDATE AND MI_STATUS IN ('1','4');
--定义游标

OPEN v_instrun FOR
select mi_id,MI_STATUS,mi_org_id,VERIFICTION_DATE from a_meas_instru_ccount where VERIFICTION_DATE BETWEEN p_LASTEXECURTDATE AND p_NEXTEXECURTDATE AND MI_STATUS IN ('1','4') AND VERIFICTION_PLANT=0;

--定义游标
--declare v_group_org_id_cursor_1 cursor for select mi_org_id from a_meas_instru_ccount where VERIFICTION_DATE BETWEEN p_LASTEXECURTDATE AND p_NEXTEXECURTDATE AND MI_STATUS IN ('1','4')
-- group by mi_org_id ;

open v_group_org_id_cursor FOR
select mi_org_id from a_meas_instru_ccount where VERIFICTION_DATE BETWEEN p_LASTEXECURTDATE AND p_NEXTEXECURTDATE AND MI_STATUS IN ('1','4') AND VERIFICTION_PLANT=0
group by mi_org_id ;

--获取总记录数
select count(*) into p_count from a_meas_instru_ccount where VERIFICTION_DATE BETWEEN p_LASTEXECURTDATE AND p_NEXTEXECURTDATE AND MI_STATUS IN ('1','4') AND VERIFICTION_PLANT=0;
end;
else
begin
insert into a_meas_miinsp_log(CREATE_DATE,BODY,EXECUTE,LOGTYPE) values(sysdate,'本次检定周期时间大于当前时间','execute','A_MEAS_MIINSP_PLAN_CREATE');
insert into a_meas_miinsp_log(CREATE_DATE,BODY,EXECUTE,LOGTYPE) values(sysdate,'结束执行A_MEAS_MIINSP_PLAN_CREATE存储过程','execute','A_MEAS_MIINSP_PLAN_CREATE');
commit;
return;
end;
end if;

if(p_count>0)
then
p_updatemiids:='更新器具台帐表的状态:';
p_insertplancode:='新增检定计划明细表:';
loop
FETCH v_group_org_id_cursor into v_group_org_id;
EXIT WHEN v_group_org_id_cursor%NOTFOUND;

p_current_ym := TO_CHAR(SYSDATE,'yyyymm');
select max(substr(plan_code,length(plan_code)-3,4))+1 into p_maxnum
from A_MEAS_MIINSP_PLAN
where plan_code like '%'||p_current_ym||'%';

if(p_maxnum is null)
then
p_new_plancode:= p_current_ym||'0001';
elsif (length(p_maxnum)=1)
then
p_new_plancode:= p_current_ym||'000'||p_maxnum;
elsif (length(p_maxnum)=2)
then
p_new_plancode:= p_current_ym||'00'||p_maxnum;
elsif (length(p_maxnum)=3)
then
p_new_plancode:= p_current_ym||'0'||p_maxnum;
elsif (length(p_maxnum)=4)
then
p_new_plancode:= p_current_ym||p_maxnum;
end if;
--新增检定计划表
SELECT dscr into current_dscr FROM V_MEAS_DEPT where EQ_NAME = v_group_org_id;

new_plan_name:='自动创建计划:'||current_dscr;

INSERT INTO A_MEAS_MIINSP_PLAN (
PLAN_CODE, REPORT_STATE,STYPE,CREATE_DATE,
PLAN_ORGID, PLAN_NAME, CREATE_TYPE,change_time,Change_Userid)
VALUES (
p_new_plancode, 2,1,sysdate,
v_group_org_id,new_plan_name,1 ,sysdate,'sysadmin');
p_msg:='新增检定计划表:'||p_new_plancode||',组织机构ID:'||v_group_org_id;
insert into a_meas_miinsp_log(CREATE_DATE,BODY,EXECUTE,LOGTYPE) values(sysdate,p_msg,'insert','A_MEAS_MIINSP_PLAN_CREATE+A_MEAS_MIINSP_PLAN');
p_insertplancode:='';
p_updatemiids:='';

open v_instrun for
select mi_id,MI_STATUS,mi_org_id,VERIFICTION_DATE from a_meas_instru_ccount where VERIFICTION_DATE BETWEEN p_LASTEXECURTDATE AND p_NEXTEXECURTDATE AND MI_STATUS IN ('1','4') AND VERIFICTION_PLANT=0;

loop
FETCH v_instrun into v_mi_id,v_MI_STATUS,v_mi_org_id,v_insdate;
EXIT WHEN v_instrun%NOTFOUND;

if(v_group_org_id=v_mi_org_id)
then
--新增检定计划明细表
INSERT INTO A_MEAS_MIINSP_DETAIL (
PLAN_CODE, MI_ID, CREATE_DATE,
OLD_MI_STATUS,INS_DATE
) VALUES (
p_new_plancode,v_mi_id,sysdate,
v_MI_STATUS,v_insdate
);
p_insertplancode:= p_insertplancode||',器具id:'||v_mi_id||',';

--更新器具台帐表的状态
UPDATE A_MEAS_INSTRU_CCOUNT SET MI_STATUS = 2,operatedate=sysdate,operateuser='sysadmin' WHERE MI_ID =v_mi_id;

p_updatemiids:=p_updatemiids||'器具id:'||v_mi_id||',';

end if;
END LOOP;

insert into a_meas_miinsp_log(CREATE_DATE,BODY,EXECUTE,LOGTYPE) values(sysdate,'计划编号:'||p_new_plancode||','||p_insertplancode,'insert','A_MEAS_MIINSP_PLAN_CREATE+A_MEAS_MIINSP_DETAIL');
insert into a_meas_miinsp_log(CREATE_DATE,BODY,EXECUTE,LOGTYPE) values(sysdate,p_updatemiids,'update','A_MEAS_MIINSP_PLAN_CREATE+A_MEAS_INSTRU_CCOUNT');

END LOOP;

CLOSE v_instrun; --关闭游标变量
CLOSE v_group_org_id_cursor; --关闭游标变量

--更新配置表中最后的更新日期
update a_meas_miinsp_config set LASTEXECURTDATE=p_NEXTEXECURTDATE;
insert into a_meas_miinsp_log(CREATE_DATE,BODY,EXECUTE,LOGTYPE) values(sysdate,'更新计量模块检定计划配置表的下次检定时间:'||p_NEXTEXECURTDATE,'execute','A_MEAS_MIINSP_PLAN_CREATE+A_MEAS_MIINSP_CONFIG');
end if;
--添加日志
insert into a_meas_miinsp_log(CREATE_DATE,BODY,EXECUTE,LOGTYPE) values(sysdate,'结束执行A_MEAS_MIINSP_PLAN_CREATE存储过程','execute','A_MEAS_MIINSP_PLAN_CREATE');
COMMIT;

EXCEPTION
WHEN OTHERS THEN
vs_msg := 'ERROR IN A_MEAS_MIINSP_PLAN_CREATE '||SUBSTR(SQLERRM,1,500);
ROLLBACK;
--添加日志
insert into a_meas_miinsp_log(CREATE_DATE,BODY,EXECUTE,LOGTYPE) values(sysdate,vs_msg,'execute','A_MEAS_MIINSP_PLAN_CREATE');
COMMIT;
RETURN;
end;

function:

create or replace function FN_GET_ROLES(v_user_id varchar2) return varchar2 is
type zy_emp_cursor is ref cursor;
v_emp_cursor zy_emp_cursor;
v_role_dscr varchar2(2000);
v_emp_dscr varchar2(64);
v_index number;
begin
open v_emp_cursor for SELECT A_ROLES.ROLE_DSCR
FROM A_PT_ROLES_USERS A_USERS
INNER JOIN A_PT_ROLES A_ROLES
ON A_USERS.ROLE_ID = A_ROLES.ROLE_ID
WHERE A_USERS.USER_ID = v_user_id;
v_index := 0;
loop
fetch v_emp_cursor into v_emp_dscr;
exit when v_emp_cursor%notfound;
if v_index = 0 then
begin
v_role_dscr := v_emp_dscr;
end;
else
v_role_dscr := v_role_dscr || ',' || v_emp_dscr;
end if;
v_index := v_index + 1;
end loop;

close v_emp_cursor;
return v_role_dscr;
end;

调用function:

--未分配此角色的用户
SELECT * FROM (

SELECT ROW_NUMBER() OVER (
order by U.USER_ID ASC
) AS TROW,U.*,T.DSCR, FN_GET_ROLES(U.USER_ID) AS ROLE_DSCR
FROM A_PT_USERS U
LEFT JOIN V_IP_EQ T
ON U.ORG=T.EQ_NAME
WHERE (org is null or org='')
AND NOT EXISTS (SELECT A_R_U.USER_ID
FROM A_PT_ROLES_USERS A_R_U
WHERE TRIM(UPPER(A_R_U.USER_ID)) = TRIM(UPPER(U.USER_ID))
AND A_R_U.ROLE_ID = 'sa')

) TT
WHERE TT.TROW BETWEEN {0} AND {1};

orcale_proceduie_function_两三栗的更多相关文章

  1. x01.TextProc: 两三分钟完成的一个小工具

    在工作中,遇到这么个问题,需要将 Excel 表中类似 2134-1234-4456 的商品编号输入到单位的程序中,而程序只认 213412344456 这种没有 ‘-’ 的输入.数量比较多,一笔一笔 ...

  2. C#注释——爱你不是两三天

    说到注释这个东东,我不得不说:爱你不是两三天,每天却想你很多遍...原来梁静茹同学这首歌不全然是情歌啊~   一句注释也没有的一大片的代码有木有 看着那些无名者写的神秘代码,有没有骂一句,你妹的... ...

  3. 2星|《10W+走心文案是怎样炼成的》:标题党。实际是台湾创意总监的一些人生感悟和两三个很一般的创意文案

    10W+走心文案是怎样炼成的 作者是台湾人,曾在台湾奥美担任创意总监,做过一些广告.本书是他的一些经验介绍. 总体来说是标题党,作者的广告基本是电视广告,跟文案也有关系,估计播放量也很容易过10W+, ...

  4. adb 的常见问题与处理办法两三

    问题1:无法安装手机驱动, 解决方法:安装强大的豌豆荚,通常能都能解决问题 问题2: adb devices 时出现 adb devicesadb server is out of date.  ki ...

  5. 网易云首席安全架构师谈安全新形势:DDOS两三天,游戏玩家数从几万降到几百

    本文由  网易云发布. 安全是一个永恒的话题,在业务不断云化.攻击越来越复杂的当下,互联网安全呈现了出什么样的严峻形势?对这些形势,网易云又是如何应对的? 网易云首席安全架构师沈明星 4月13日,网易 ...

  6. 给学习Linux系统小白的两三个建议

    前段时间看过一个针对国内Linux使用情况的调研表,有了不少感慨.现在听说过linux,会一点linux基本操作的人多如牛毛,然而真正能用linux做一点事情的确少之又少.无论是公司还是学校,办公基本 ...

  7. 阿里前CEO卫哲用自己10余年经历,倾诉B2B的三差、四率、两大坑

    今日(12 月 28 日),嘉御基金创始人.阿里巴巴(B2B)前 CEO 卫哲在第三届中国 B2B 电子商务大会上进行了"B2B 冬天里的春天"的主题分享.他提出中国 B2B 行业 ...

  8. 记录一次MySQL两千万数据的大表优化解决过程,提供三种解决方案(转)

    问题概述 使用阿里云rds for MySQL数据库(就是MySQL5.6版本),有个用户上网记录表6个月的数据量近2000万,保留最近一年的数据量达到4000万,查询速度极慢,日常卡死.严重影响业务 ...

  9. 一次MySQL两千万数据大表的优化过程,三种解决方案

    问题概述 使用阿里云rds for MySQL数据库(就是MySQL5.6版本),有个用户上网记录表6个月的数据量近2000万,保留最近一年的数据量达到4000万,查询速度极慢,日常卡死.严重影响业务 ...

随机推荐

  1. ny511 移动小球

    移动小球 时间限制:1000 ms  |  内存限制:65535 KB 难度:2   描述 给你n个小球,从左到右编号依次为1,2,3,4,5,6.........n,并规定小球1的左边的球号为n,小 ...

  2. 再访贺利坚(一):IT毕业生去培训机构,这件事很正常(转载)

    转载自: 再访贺利坚(一):IT毕业生去培训机构,这件事很正常 导语:与烟台大学计算机学院贺利坚副教授相识,还是在2012年年底,那个时候我在为社区之星专访栏目寻找合适的采访人.在社区运营的推荐下,我 ...

  3. 【C#学习笔记】反射的简单用法

    常见的使用反射的场景: 程序在运行时动态地访问类的成员,如获得类的变量.方法. 例如:用反射给本类的变量赋值. public class Student{ public string studentN ...

  4. Android——进度条控制图片透明度

    xml <?xml version="1.0" encoding="utf-8"?> <LinearLayout xmlns:android= ...

  5. JavaScript中的Boolean 方法与Number方法

    <html> <head> <script type="text/javascript"> //创建 var str = "aaafg ...

  6. Java LinkedHashMap工作原理及实现

    Java LinkedHashMap工作原理及实现 原文出处: Yikun 1. 概述 在理解了#7 介绍的HashMap后,我们来学习LinkedHashMap的工作原理及实现.首先还是类似的,我们 ...

  7. Apache2.4.x版wampserver本地php服务器如何让外网访问及启用.htaccess

    http://www.jb51.net/article/61193.htm ———————————————————————————————————————————— 这篇文章主要介绍了Apache2. ...

  8. 上手并过渡到PHP7(2)——必须传递int, string, bool参数?没问题

    Type hints, Type safe 泊学实操视频 泊学原文链接PHP 7中最引人注目的新特性之一,无疑是Scalar type hints.我们可以在函数参数和返回值中使用scalar typ ...

  9. 关于Javascript判断变量是否为空

    如何判断Javascript对象是否存在 原文网址:http://www.ruanyifeng.com/blog/2011/05/how_to_judge_the_existence_of_a_glo ...

  10. centos 部署 SparkR

    ---恢复内容开始--- 环境配置—— 操作系统:CentOS 6.5 JDK版本:1.7.0_67 Hadoop集群版本:CDH 5.3.0 安装过程—— 1.(1)安装R yum install ...