老尸 发表于 2015-1-16 22:13:09

MYSQL网站制作之ORACLE 主动发邮件代码

DBaaS系统其实具有更大的市场机遇:像其他云服务一样,DBaaS意味着更短的销售周期,更少的启动费用,持续不断的收入,也意味着比之前更多的客户。<P>该程序剧本最次要的功效完成为经由过程oracle自带的历程包发送邮件来监控ETL的实行情形:
ORACLE_SID=orcl
ORACLE_BASE=/opt/oracle
ORACLE_HOME=/opt/oracle/product/10.2.0
exportORACLE_SIDORACLE_BASEORACLE_HOME
PWD_DIR=/home/oracle/shell
SQLPLUS=${ORACLE_HOME}/bin/sqlplus
CONFIG_INI=${PWD_DIR}/ini/config.ini
whilereadgameuser
do
echo${gameuser}
echo${SQLPLUS}
cd${PWD_DIR}
${SQLPLUS}${gameuser}<<!
@etl_monitor.sql;
/
exit;
!
done<${CONFIG_INI}
etl_monitor.sql剧本为:
DECLARE
p_txtVARCHAR2(4000);
p_txt_allVARCHAR2(4000);
BEGIN
FORrIN(SELECTjob_name,
run_cnt,
table_name,
column_name
FROMetl_monitor_config_tab)
LOOP
--CalltheEtlMonitorfunction
p_txt:=
etl_monitor(r.job_name,
r.run_cnt,
r.table_name,
r.column_name);
p_txt_all:=p_txt_allCHR(13)p_txt;
ENDLOOP;
--CalltheSendMailfunction
procsendemail(p_txt_all,
EtlMoniotr,
xxx@163.com,
xxxx@kingsoft.com,
mail.kingsoft.com,
25,
1,
xxxxxx,
xxxxxx,
,
bit7);
p_txt_all:=;
END;
createorreplacefunctionetl_monitor(job_namevarchar2,
run_cntint,
table_namevarchar2,
column_namevarchar2)
RETURNvarchar2IS
v_monitor_datedate;--Themonitoroftheprocsdate
v_job_namevarchar2(130);
v_log_idnumber;
v_result1char(1);--Thestatusoftheprocsresult1
v_result2char(1);--Thestatusoftheprocsresult2
v_status_cntint;
v_record_numint;--Thenumberofthejobrun
v_resultvarchar2(4000);
v_sqlvarchar2(1000);
begin
v_monitor_date:=trunc(sysdate);
v_job_name:=job_name;
v_result1:=0;
v_result2:=0;
v_sql:=selectcount(1)from;
ifrun_cnt=1then
selectlog_id
intov_log_id
fromuser_scheduler_job_run_details
wherejob_name=v_job_name
andtrunc(actual_start_date)=v_monitor_date;
else
selectmax(log_id)
intov_log_id
fromuser_scheduler_job_run_details
wherejob_name=v_job_name
andtrunc(actual_start_date)=v_monitor_date;
endif;
selectcount(*)
intov_status_cnt
fromuser_scheduler_job_run_details
wherelog_id=v_log_id
andstatus=SUCCEEDED;
ifv_status_cnt=0then
gotoerror1;
endif;
v_result1:=1;
v_sql:=v_sqltable_namewheretrunc(column_name
)=trunc(sysdate-1)andrownum=1;
executeimmediatev_sql
intov_record_num;
ifv_record_num>0then
v_result2:=1;
else
v_status_cnt:=0;
gotoerror1;
endif;
ifv_result1=1andv_result2=1then
v_result:=SYS_CONTEXT(USERENV,CURRENT_SCHEMA).
v_job_nameAtv_monitor_dateISSUCCEEDED;
endif;
<<error1>>
ifv_status_cnt=0then
selectOWNER.JOB_NAMEAtTRUNC(ACTUAL_START_DATE)
ISADDITIONAL_INFO
intov_result
fromuser_scheduler_job_run_details
wherelog_id=v_log_id;
endif;
returnv_result;
exception
whenothersthen
returnSYS_CONTEXT(USERENV,CURRENT_SCHEMA).v_job_nameAtv_monitor_dateISNOTEXECUTE;
end;12345下一页>全文浏览提醒:尝尝"←→"键,翻页更便利哦!MySQL数据库归MySQLAB公司所有,但是这个软件是开源的,有一个MySQL学习教程可以免费下载。稍俱常识的新入门者都可以轻松实现在一个常见硬件上安装和配置MySQL。

灵魂腐蚀 发表于 2015-1-19 05:08:36

对递归类的树遍历很有帮助。个人感觉这个真是太棒了!阅读清晰,非常有时代感。

小妖女 发表于 2015-1-24 15:45:25

所以你总能得到相应的升级版本,来满足你的需求。

小魔女 发表于 2015-2-7 17:05:17

SQLServer的异构移植功能个人感觉最好了。(如果对比过SQLServer的链接服务器和Oracle的透明网关的朋友会发现SQLServer的sp_addlinkedserver(openquery)异构数据库系列比Oracle真是强太多了。)

再现理想 发表于 2015-2-22 18:37:53

代替了原来VB式的错误判断。比Oracle高级不少。

透明 发表于 2015-3-7 01:45:57

入门没那么困难,精通没那么容易

变相怪杰 发表于 2015-3-14 06:48:44

还不是性能有问题!否则面向对象的数据库早就实现了!建议使用CLR的地方一般是和应用的复杂程度或操作系统环境有很高的耦合度的场景。如你想构建复杂的算法,并且用到了大量的指针和高级数据模型。

谁可相欹 发表于 2015-3-21 01:27:44

在select语句中可以使用groupby子句将行划分成较小的组,然后,使用聚组函数返回每一个组的汇总信息,另外,可以使用having子句限制返回的结果集。
页: [1]
查看完整版本: MYSQL网站制作之ORACLE 主动发邮件代码