命名存储过程

时间:2013-01-22 06:09:19

标签: sql oracle stored-procedures plsql plsqldeveloper

我需要根据命名参数调用存储过程。

RMFF_RETRO_ACTIVE_CALCS_SP(p_region_cd,p_plant_cd,
p_supplier_nbr,p_matrl_nbr,'','','N',p_user_id,p_err_cd,p_err_msg);

在此我需要使用命名参数。

但我的p_region_cd与被叫程序的名称相同

p_region_cd=>p_region_cd.

怎么做?我需要一个仅在第5,6位的名字

请建议我如何致电

1 个答案:

答案 0 :(得分:0)

使用

p_region_cd=>p_region_cd

应该不是问题。例如,块运行就好了。

declare 
  po_next_stmt_date number(8);
  po_next_due_date  number(8);
  po_rsp_code       varchar2(3);
  po_rsp_dscr       varchar2(256);

begin
  oc_eoc.SP_EOC_GET_NEXT_STMT_DATE(pi_last_eoc_date => 20130210,
                                   pi_new_cycle_code => '02',
                                   po_next_stmt_date => po_next_stmt_date,
                                   po_next_due_date => po_next_due_date,
                                   po_rsp_code => po_rsp_code,
                                   po_rsp_dscr => po_rsp_dscr);
end;

你需要注意的是,如果你从命名参数开始,那么你必须继续。以下情况也很好:

oc_eoc.SP_EOC_GET_NEXT_STMT_DATE(20130210,
                                 '02',
                                 po_next_stmt_date => po_next_stmt_date,
                                 po_next_due_date => po_next_due_date,
                                 po_rsp_code => po_rsp_code,
                                 po_rsp_dscr => po_rsp_dscr); 

但这不是:

oc_eoc.SP_EOC_GET_NEXT_STMT_DATE(pi_last_eoc_date => 20130210,
                                 '02',
                                 po_next_stmt_date => po_next_stmt_date,
                                 po_next_due_date => po_next_due_date,
                                 po_rsp_code => po_rsp_code,
                                 po_rsp_dscr => po_rsp_dscr);