編寫儲存過程基本注意事項

mahanso發表於2010-12-15
     今天同事用到的臨時表,遇到些問題,我們一起復習了一下臨時表用法和編寫儲存過程中一些基礎注意事項和寫法,現在總結一下:

     1、臨時表建立(臨時具體資訊參考:http://space.itpub.net/12272958/viewspace-681831
-- Create table
create global temporary table TRADE_WAIT_DELIVERY_TMP
(
   POSITION_ACCOUNT VARCHAR2(32) not null,
   GOODS_CODE       VARCHAR2(50) not null,
   QUANTITY         NUMBER(12) not null,
   APPLY_QUANTITY   NUMBER(12)
)
on commit delete rows;

2、測試臨時表的儲存過程
create or replace procedure mahanso_tmptable(current_trade_date in VARCHAR2,o_cur out sys_refcursor) as
begin

  --插入臨時表中資料
  insert into trade_wait_delivery_tmp
    select position_account,
           goods_code,
           sum(Func_Position_Direction(fashion) * num_net) as quantity,
           apply_quantity
      from position_total p
     group by position_account, goods_code;


  open o_cur for
    select * from trade_wait_delivery_tmp;

end mahanso_tmptable;

       3、輸出查詢資訊

SQL> declare
  2  POSITION_ACCOUNT VARCHAR2(32);
  3  GOODS_CODE       VARCHAR2(50);
  4  QUANTITY         NUMBER(12);
  5  APPLY_QUANTITY   NUMBER(12);
  6  o_cur sys_refcursor;
  7  begin
  8  mahanso_tmptable(sysdate,o_cur);
  9  fetch o_cur into POSITION_ACCOUNT,GOODS_CODE,QUANTITY,APPLY_QUANTITY;
  10  while o_cur%found loop
  11  dbms_output.put_line('輸出結果:'||POSITION_ACCOUNT||','||GOODS_CODE||','||QUANTITY||','||APPLY_QUANTITY);
  12  fetch o_cur into POSITION_ACCOUNT,GOODS_CODE,QUANTITY,APPLY_QUANTITY;
  13  end loop;
  14  commit;
  15  end;
16  /

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

相關文章