create or replace procedure prc_succeed_tj(v_data_date date,
ac_cljg out varchar2,
ac_sbyy out varchar2) is e_except exception; --自定义EXCEPTION
v_start_dt date;
vi_code number(10); --4
vc_desc varchar2(200);
v_count number(10);
vi_i number(2);
vc_table_name varchar2(32);
vc_year varchar2(4);
vc_month varchar2(2);
VC_SQLSTR varchar2(4000);
v_date varchar2(8);
BEGIN
ac_cljg := '0'; --处理结果
ac_sbyy := ''; --失败原因insert into t_succeed_tj
select orgno,v_data_date,
count(distinct(meterid)) ycj,0,0,0,1,2
from INTERMEDIATE_SUCCESS_REPORT xx
where xx.datadate = v_data_date
and xx.tmnltypecode='02'
group by orgno ;commit ;
exception
when others then
vi_code := sqlcode;
vc_desc := substr(sqlerrm, 1, 500); ac_cljg := '-1';
ac_sbyy := vc_desc; insert into edc_prc_log
(run_date, flag, sqlstring, finish_date, prc_name, souce_table)
values
(v_start_dt,
0,
'统计失败 - ' || vi_code || vc_desc,
SYSDATE,
'edc.prc_succeed_tj',
'edc.t_succeed_tj'); commit;
end;
上面这个过程中的
v_data_date date,
ac_cljg out varchar2,
ac_sbyy out varchar2
和
e_except exception; --自定义EXCEPTION
v_start_dt date;
vi_code number(10); --4
vc_desc varchar2(200);
v_count number(10);
vi_i number(2);
vc_table_name varchar2(32);
vc_year varchar2(4);
vc_month varchar2(2);
VC_SQLSTR varchar2(4000);
v_date varchar2(8);是什么意思?
是什么时候使用?
谢谢!
ac_cljg out varchar2,
ac_sbyy out varchar2) is e_except exception; --自定义EXCEPTION
v_start_dt date;
vi_code number(10); --4
vc_desc varchar2(200);
v_count number(10);
vi_i number(2);
vc_table_name varchar2(32);
vc_year varchar2(4);
vc_month varchar2(2);
VC_SQLSTR varchar2(4000);
v_date varchar2(8);
BEGIN
ac_cljg := '0'; --处理结果
ac_sbyy := ''; --失败原因insert into t_succeed_tj
select orgno,v_data_date,
count(distinct(meterid)) ycj,0,0,0,1,2
from INTERMEDIATE_SUCCESS_REPORT xx
where xx.datadate = v_data_date
and xx.tmnltypecode='02'
group by orgno ;commit ;
exception
when others then
vi_code := sqlcode;
vc_desc := substr(sqlerrm, 1, 500); ac_cljg := '-1';
ac_sbyy := vc_desc; insert into edc_prc_log
(run_date, flag, sqlstring, finish_date, prc_name, souce_table)
values
(v_start_dt,
0,
'统计失败 - ' || vi_code || vc_desc,
SYSDATE,
'edc.prc_succeed_tj',
'edc.t_succeed_tj'); commit;
end;
上面这个过程中的
v_data_date date,
ac_cljg out varchar2,
ac_sbyy out varchar2
和
e_except exception; --自定义EXCEPTION
v_start_dt date;
vi_code number(10); --4
vc_desc varchar2(200);
v_count number(10);
vi_i number(2);
vc_table_name varchar2(32);
vc_year varchar2(4);
vc_month varchar2(2);
VC_SQLSTR varchar2(4000);
v_date varchar2(8);是什么意思?
是什么时候使用?
谢谢!
--这3个是存储过程的参数,输入参数是在调用该存储过程的时候,要传递给存储过程的;
--输出参数是存储过程想要返回给调用程序结果时使用的
v_data_date date,--输入参数
ac_cljg out varchar2,--输出参数
ac_sbyy out varchar2--输出参数--下面这一堆是存储过程中定义的变量,就像在一个类中定义的变量一样,可以在该存储过程中使用。
e_except exception; --自定义EXCEPTION
v_start_dt date;
vi_code number(10); --4
vc_desc varchar2(200);
v_count number(10);
vi_i number(2);
vc_table_name varchar2(32);
vc_year varchar2(4);
vc_month varchar2(2);
VC_SQLSTR varchar2(4000);
v_date varchar2(8);是什么意思?
是什么时候使用?
谢谢!
当某个特定条件成立时 raise :e_exceptDECLARE
e_except EXCEPTION;
BEGIN
if... then
RAISE e_except;
end if;
EXCEPTION
when e_except then
dbms_output.put_line('i raised a user-defined exception ''e_except''');
END;
/
declare
e_except exception;
v_name varchar(2):=null;
begin
if v_name is null then
raise e_except;
end if;
exception when e_except then
dbms_out.put_line('the value has not been given for the variable')
end;