带有入参和出参的存储过程的调用
CREATE OR REPLACE PROCEDURE WEBHALL_OWNER_USER.WB_mobile_active_cust_number
(
in_start_date IN varchar2, --开始时间
in_end_date IN varchar2, --结束时间
in_report_item in varchar2, -- 统计标示
o_report_value out varchar2, --统计项值
oi_errorFlag OUT number, --1正常 0异常
os_message OUT varchar2 --error Message
)
IS
-- 获得参数 event
vi_value number :=0;
vs_error_message varchar(300);
vi_is_error number:=0; --1正常 0异常
begin
-- 执行SQL
select count(distinct(f_service_id))
into vi_value
from wb_cust_contact_t
where f_contact_result = 1
and f_event = '14'
and f_service_kind = '8'
and f_stat_time>=TO_DATE (in_start_date, 'yyyy-mm-dd hh24:mi:ss')
and f_stat_time<=TO_DATE (in_end_date, 'yyyy-mm-dd hh24:mi:ss');
o_report_value := to_char(vi_value);
oi_errorFlag:=1;
exception
when others then
oi_errorFlag:=0;
os_message := SUBSTR(SQLERRM,1,200);
END WB_mobile_active_cust_number;
/
好久没有用存储过程了,这个存储过程怎么调用啊?我想看看输出参数是什么。
------解决方案--------------------exec
WB_mobile_active_cust_number
(给参数列表传值);
如果想看输出参数的值,需要在exception
前面加上:
dbms_output.put_line('o_report_value:'||o_report_value);
dbms_output.put_line('oi_errorFlag:'||oi_errorFlag);
...
在存储过程调用前,加上set serveroutput on; --确保能输出打印信息
------解决方案--------------------declare
varOUta varchar2(100);
varOutb varchar2(100);
varOutc varchar2(100);
begin
WEBHALL_OWNER_USER.WB_mobile_active_cust_number(输入参数1,
输入参数2,
输入参数3,
varOUta,
varOutb,
varOutc);
dbms_output.put_line(varOUta || '----' || varOutb || '----' || varOutc);
end;