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;
/
好久没有用存储过程了,这个存储过程怎么调用啊?我想看看输出参数是什么。

解决方案 »

  1.   

    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; --确保能输出打印信息
      

  2.   

    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;