oracle procedure輸入引數為date日期小記

wisdomone1發表於2012-11-21
create or replace procedure proc_tuning(in_order_id int,in_order_date date,out_refcursor out sys_refcursor)
is
v_sql varchar2(4000);
begin
  v_sql:='select * from t_orderbill where ';
  if in_order_id is null and in_order_date is null then
    open   out_refcursor for 'select * from t_orderbill ';
  else
 
   if in_order_id is not null then
     v_sql:=v_sql||' order_id= '||chr(39)||in_order_id||chr(39);
   end if;
  
   if in_order_date is not null then
     v_sql:=v_sql||' and order_date='||'to_date('||''''||in_order_date||''''||','||''''||'yyyy-mm-dd'||''''||')';
   end if;
   v_sql:=v_sql||'and 1=1';
   open out_refcursor for v_sql;
  end if;
end proc_tuning;
 
小結:
   1,輸入引數還是會傳遞的是字串,而非date,最終還要用to_date轉化
           2,故輸入引數用char還是更好,這樣只用一次轉化

來自 “ ITPUB部落格 ” ,連結:http://blog.itpub.net/9240380/viewspace-749700/,如需轉載,請註明出處,否則將追究法律責任。

相關文章