17,086
社区成员
发帖
与我相关
我的任务
分享
drop type t_sms_message_lst;
drop type t_sms_message;
--此类型中,添加了pk_id
create or replace type t_sms_message as object (
task_id number(32),
sender_num varchar2(21),
mobile_no varchar2(21),
param_value varchar2(900),
pk_id number(32)
);
/
create or replace type t_sms_message_lst as table of t_sms_message;
/
drop procedure proc_sel_sms_message;
create or replace procedure proc_sel_sms_message(
in_task_id IN number,
in_count IN number,
out_sms_message_lst OUT t_sms_message_lst,
out_ret OUT number
)as
var_cr_sms_message SYS_REFCURSOR;
var_m_row_id varchar2(1000);
var_m_task_id sms_message.task_id%TYPE;
var_m_sender_num sms_message.sender_num%TYPE;
var_m_mobile_no sms_message.mobile_no%TYPE;
var_m_param_value sms_message.param_value%TYPE;
var_m_last_send_time sms_message.last_send_time%TYPE;
var_t_sms_message t_sms_message;
var_total_send_amount integer;
begin
--查询语句增加了pk_id搜索项
open var_cr_sms_message for
select rowid as row_id,task_id,sender_num,mobile_no,param_value,pk_id
from sms_message
where task_id = in_task_id
and last_send_time is null
and rownum <= in_count
for update;
out_sms_message_lst := t_sms_message_lst();
select last_send_time into var_m_last_send_time from sms_task where task_id = in_task_id;
loop
--fetch语句增加了pk_id项
fetch var_cr_sms_message into var_m_row_id,var_m_task_id,var_m_sender_num,var_m_mobile_no,var_m_param_value,var_m_pk_id;
exit when var_cr_sms_message%NOTFOUND;
--输出对象类型中增加了pk_id项
var_t_sms_message := t_sms_message(var_m_task_id,var_m_sender_num,var_m_mobile_no,var_m_param_value,var_m_pk_id);
out_sms_message_lst.extend;
out_sms_message_lst(out_sms_message_lst.count) := var_t_sms_message;
update sms_message set last_send_time = var_m_last_send_time
where rowid = var_m_row_id;
end loop;
close var_cr_sms_message;
out_ret := 0;
exception when others then
begin
out_ret := -1;
raise;
end;
end proc_sel_sms_message;
/