请问oracle存储过程在is后面声明的变量和begin语句块里面通过declare声明的有何区别啊,谢谢
procedureaward_terminal_user(i_region_codeinvarchar2,i_begin_busi_datenumber,i_end_bu...
procedure award_terminal_user(
i_region_code in varchar2,
i_begin_busi_date number,
i_end_busi_date number,
o_ret_piont out number,
o_ret_code out varchar2,
o_ret_msg out varchar2)is
type t_RefCur is ref cursor;
v_cur t_RefCur;
v_sql varchar2(4000);
v_itotal number(8);
v_proc_exec_id number(8);
begin
delete from i_award_terminal where act_region_code = i_region_code and
sale_date = 20991231 and active_date >= i_begin_busi_date and active_date <= i_end_busi_date;
commit;
declare
v_done_code number(12); --受理编号
v_sale_date number(8); --销售时间
v_act_date number(8); --激活时间
v_busi_code number(8); --业务编号
v_model_id number(8); --终端产品
v_imei varchar2(30); --imei号
v_org_id number(8); --登录组织
v_standby2 NUMBER(8); --归属组织
v_county_code varchar2(4); --地市编号
上面这个列子在is后声明了几个变量,后来在begin里面有声明了几个变量,不知道有何区别啊,谢谢
这里需要局部变量吗,存储过程里面会有多个函数那样的东西吗 展开
i_region_code in varchar2,
i_begin_busi_date number,
i_end_busi_date number,
o_ret_piont out number,
o_ret_code out varchar2,
o_ret_msg out varchar2)is
type t_RefCur is ref cursor;
v_cur t_RefCur;
v_sql varchar2(4000);
v_itotal number(8);
v_proc_exec_id number(8);
begin
delete from i_award_terminal where act_region_code = i_region_code and
sale_date = 20991231 and active_date >= i_begin_busi_date and active_date <= i_end_busi_date;
commit;
declare
v_done_code number(12); --受理编号
v_sale_date number(8); --销售时间
v_act_date number(8); --激活时间
v_busi_code number(8); --业务编号
v_model_id number(8); --终端产品
v_imei varchar2(30); --imei号
v_org_id number(8); --登录组织
v_standby2 NUMBER(8); --归属组织
v_county_code varchar2(4); --地市编号
上面这个列子在is后声明了几个变量,后来在begin里面有声明了几个变量,不知道有何区别啊,谢谢
这里需要局部变量吗,存储过程里面会有多个函数那样的东西吗 展开
3个回答
展开全部
使用范围的区别,在IS 之后申明的变量,在整个包里面都可以用;但是在包体里面的declare里面申明的变量,好像只能在declare 的begin 和end 之间使用。
已赞过
已踩过<
评论
收起
你对这个回答的评价是?
展开全部
应该无区别 都是局部变量
已赞过
已踩过<
评论
收起
你对这个回答的评价是?
推荐律师服务:
若未解决您的问题,请您详细描述您的问题,通过百度律临进行免费专业咨询