几个Oracle procedure实例

本文介绍两个Oracle PL/SQL过程:一是收集并计算过去一天HTTP任务的平均响应时间及其他指标;二是收集过去120分钟内HTTP任务的数据,针对数据存在与否提供不同处理方式。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

create or replace procedure PC_TB_HTTPTASK_RESULT_TMP IS
v_http_targetalias varchar2(300);
v_http_dns_avgrtt number;
v_http_avgrtt number;
v_http_firstbyte_avgrtt number;
v_http_body_avgrtt number;
v_http_avgspeed number;
v_http_pagesize number;
v_http_opentimertt NUMBER;

CURSOR c_httptask_result IS
SELECT HTTP_TARGETALIAS,
AVG(HTTP_DNS_AVGRTT) HTTP_DNS_AVGRTT,
AVG(HTTP_AVGRTT) HTTP_AVGRTT,
AVG(HTTP_FIRSTBYTE_AVGRTT) HTTP_FIRSTBYTE_AVGRTT,
AVG(HTTP_BODY_AVGRTT) HTTP_BODY_AVGRTT,
AVG(HTTP_AVGSPEED) HTTP_AVGSPEED,
MAX(HTTP_PAGESIZE) HTTP_PAGESIZE
FROM (SELECT OBJECTID,
HTTP_TARGETALIAS,
HTTP_DNS_AVGRTT,
HTTP_AVGRTT,
HTTP_FIRSTBYTE_AVGRTT,
HTTP_BODY_AVGRTT,
HTTP_AVGSPEED,
HTTP_PAGESIZE
FROM TB_HTTPTASK_RESULT
WHERE
TO_CHAR(COLTIME, 'YYYY-MM-DD') = TO_CHAR(SYSDATE-1, 'YYYY-MM-DD')
AND HTTP_TARGETALIAS IS NOT NULL) TB_HTTPTASK_RESULT_CON

WHERE
OBJECTID IN
(SELECT GROUPTASKID
FROM GROUPTASK
WHERE GROUPTASKID IN
(SELECT TASKID
FROM GROUPTASKRELATION
WHERE GROUPID IN
(SELECT PROBEGROUPID
FROM TB_TASK_INFO
WHERE ID IN
(SELECT TASK_ID
FROM TB_TASK_RELATION
WHERE GROUP_ID IN
(SELECT ID
FROM TB_TASK_GROUP
WHERE GROUPNAME = '宽带感知任务')))))
GROUP BY HTTP_TARGETALIAS;
/*
SELECT HTTP_TARGETALIAS,
AVG(HTTP_DNS_AVGRTT) HTTP_DNS_AVGRTT,
AVG(HTTP_AVGRTT) HTTP_AVGRTT,
AVG(HTTP_FIRSTBYTE_AVGRTT) HTTP_FIRSTBYTE_AVGRTT,
AVG(HTTP_BODY_AVGRTT) HTTP_BODY_AVGRTT,
AVG(HTTP_AVGSPEED) HTTP_AVGSPEED,
MAX(HTTP_PAGESIZE) HTTP_PAGESIZE
FROM TB_HTTPTASK_RESULT
WHERE OBJECTID IN
(SELECT GROUPTASKID
FROM GROUPTASK
WHERE GROUPTASKID IN
(SELECT TASKID
FROM GROUPTASKRELATION
WHERE GROUPID IN
(SELECT PROBEGROUPID
FROM TB_TASK_INFO
WHERE ID IN
(SELECT TASK_ID
FROM TB_TASK_RELATION
WHERE GROUP_ID IN
(SELECT ID
FROM TB_TASK_GROUP
WHERE GROUPNAME = '宽带感知任务')))))
AND HTTP_TARGETALIAS IS NOT NULL
AND TO_CHAR(COLTIME, 'YYYY-MM-DD') = TO_CHAR(SYSDATE-1, 'YYYY-MM-DD')
GROUP BY HTTP_TARGETALIAS;
*/

-- SELECT * FROM TB_PERF_METRIC WHERE met_name LIKE 'HTTP_BODY_AVGRTT';

/******************************************************************************
NAME: PC_TB_HTTPTASK_RESULT_TMP
PURPOSE:

REVISIONS:
Ver Date Author Description
--------- ---------- --------------- ------------------------------------
1.0 2010-11-10 1. Created this procedure.

NOTES:

Automatically available Auto Replace Keywords:
Object Name: PC_TB_HTTPTASK_RESULT_TMP
Sysdate: 2010-11-10
Date and Time: 2010-11-10, 10:54:32, and 2010-11-10 10:59:15
Username: (set in TOAD Options, Procedure Editor)
Table Name: (set in the "New PL/SQL Object" dialog)

******************************************************************************/
begin
OPEN c_httptask_result;
LOOP
FETCH c_httptask_result INTO v_http_targetalias,
v_http_dns_avgrtt,
v_http_avgrtt,
v_http_firstbyte_avgrtt,
v_http_body_avgrtt,
v_http_avgspeed,
v_http_pagesize;

EXIT WHEN c_httptask_result%NOTFOUND;

v_http_opentimertt := v_http_dns_avgrtt + v_http_avgrtt + v_http_firstbyte_avgrtt + v_http_body_avgrtt;
-- DELETE FROM TB_HTTPTASK_RESULT_TMP WHERE HTTP_TARGETALIAS = v_http_targetalias;
INSERT INTO TB_HTTPTASK_RESULT_TMP(HTTP_TARGETALIAS,
HTTP_DNS_AVGRTT,
HTTP_AVGRTT,
HTTP_FIRSTBYTE_AVGRTT,
HTTP_BODY_AVGRTT,
HTTP_AVGSPEED,
HTTP_PAGESIZE,
HTTP_OPENTIMERTT,
CREATE_DATE)
VALUES (v_http_targetalias,
v_http_dns_avgrtt,
v_http_avgrtt,
v_http_firstbyte_avgrtt,
v_http_body_avgrtt,
v_http_avgspeed,
v_http_pagesize,
v_http_opentimertt,
TRUNC(SYSDATE));

END LOOP;
COMMIT;
EXCEPTION
WHEN OTHERS THEN
CLOSE c_httptask_result;
dbms_output.put_line(SQLERRM);
IF c_httptask_result%ISOPEN THEN
CLOSE c_httptask_result;
END IF;
end PC_TB_HTTPTASK_RESULT_TMP;

----------------------------------------------------------------------

CREATE OR REPLACE PROCEDURE PC_TB_HTTPTASK_TIME120_RESULT IS
V_SYSDATE DATE DEFAULT SYSDATE;
V_HAS_DATA NUMBER;
V_HTTP_TARGETALIAS VARCHAR2(100);

/******************************************************************************
NAME: PC_TB_HTTPTASK_TIME120_RESULT
PURPOSE:

REVISIONS:
Ver Date Author Description
--------- ---------- --------------- ------------------------------------
1.0 2011-03-03 1. Created this procedure.

NOTES:

Automatically available Auto Replace Keywords:
Object Name: PC_TB_HTTPTASK_TIME120_RESULT
Sysdate: 2011-03-03
Date and Time: 2011-03-03, 14:00:00, and 2011-03-03 14:00:00
Username: (set in TOAD Options, Procedure Editor)
Table Name: (set in the "New PL/SQL Object" dialog)

******************************************************************************/

CURSOR C_HTTP_TARGETALIAS IS
SELECT HTTP_TARGETALIAS_NAME FROM TB_HTTP_TARGETALIAS;

BEGIN

BEGIN
SELECT COUNT(*) INTO V_HAS_DATA FROM (SELECT HTTP_TARGETALIAS, AVG(HTTP_DNS_AVGRTT) HTTP_DNS_AVGRTT,MAX(HTTP_PAGESIZE) HTTP_PAGESIZE FROM TB_HTTPTASK_RESULT WHERE HTTP_TARGETALIAS IS NOT NULL AND COLTIME >= V_SYSDATE - INTERVAL '120' MINUTE AND COLTIME < V_SYSDATE AND OBJECTID IN (SELECT GROUPTASKID FROM GROUPTASK WHERE GROUPTASKID IN (SELECT TASKID FROM GROUPTASKRELATION WHERE GROUPID IN (SELECT PROBEGROUPID FROM TB_TASK_INFO WHERE ID IN (SELECT TASK_ID FROM TB_TASK_RELATION WHERE GROUP_ID IN (SELECT ID FROM TB_TASK_GROUP WHERE GROUPNAME = '宽带感知任务'))))) GROUP BY HTTP_TARGETALIAS) TB_HTTPTASK_RESULT_HAS_DATA;
EXCEPTION
WHEN no_data_found THEN
V_HAS_DATA := 0;
END;

IF V_HAS_DATA=0 THEN

OPEN C_HTTP_TARGETALIAS;
LOOP
FETCH C_HTTP_TARGETALIAS INTO V_HTTP_TARGETALIAS;
EXIT WHEN C_HTTP_TARGETALIAS%NOTFOUND;
INSERT INTO TB_HTTPTASK_WM_RESULT_TMP(HTTP_TARGETALIAS,HTTP_OPENTIMERTT,CREATE_DATE,HTTP_DNS_AVGRTT,HTTP_PAGESIZE) VALUES (V_HTTP_TARGETALIAS, 0, V_SYSDATE, 0, 0);
END LOOP;

ELSE
INSERT INTO TB_HTTPTASK_WM_RESULT_TMP(HTTP_TARGETALIAS,HTTP_OPENTIMERTT,CREATE_DATE,HTTP_DNS_AVGRTT,HTTP_PAGESIZE) SELECT HTTP_TARGETALIAS, AVG(HTTP_DNS_AVGRTT+HTTP_AVGRTT+HTTP_FIRSTBYTE_AVGRTT+HTTP_BODY_AVGRTT) HTTP_OPENTIMERTT, V_SYSDATE, AVG(HTTP_DNS_AVGRTT) HTTP_DNS_AVGRTT, MAX(HTTP_PAGESIZE) HTTP_PAGESIZE FROM TB_HTTPTASK_RESULT WHERE HTTP_TARGETALIAS IS NOT NULL AND COLTIME >= V_SYSDATE - INTERVAL '120' MINUTE AND COLTIME < V_SYSDATE AND OBJECTID IN (SELECT GROUPTASKID FROM GROUPTASK WHERE GROUPTASKID IN (SELECT TASKID FROM GROUPTASKRELATION WHERE GROUPID IN (SELECT PROBEGROUPID FROM TB_TASK_INFO WHERE ID IN (SELECT TASK_ID FROM TB_TASK_RELATION WHERE GROUP_ID IN (SELECT ID FROM TB_TASK_GROUP WHERE GROUPNAME = '宽带感知任务'))))) GROUP BY HTTP_TARGETALIAS;
END IF;

COMMIT;

EXCEPTION
WHEN OTHERS THEN
CLOSE C_HTTP_TARGETALIAS;
DBMS_OUTPUT.PUT_LINE(SQLERRM);
IF C_HTTP_TARGETALIAS%ISOPEN THEN
CLOSE C_HTTP_TARGETALIAS;
END IF;

END PC_TB_HTTPTASK_TIME120_RESULT;
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值