Oracle簡單指令碼樣本

來源:互聯網
上載者:User

標籤:oracle指令碼

 Oracle簡單指令碼樣本

1.增加表

--修改日期:2014.09.21

--修改人:易小群

--修改內容:新增採購支付情況表

DECLARE

  VC_STR           VARCHAR2(5000);

  VN_COUNT         NUMBER;

BEGIN

  --查看現有系統是否有BT_PRODUCT_MODEL表

  SELECTCOUNT(*)

    INTO VN_COUNT

    FROM USER_TABLES

   WHERE TABLE_NAME =‘BT_BUY_PAY‘;

  --如果沒有則新增表,如果有就不處理

  IF VN_COUNT < 1 THEN

    VC_STR := ‘  create table BT_BUY_PAY

(

  id  NUMBER not null,

  buynumber     VARCHAR2(30),

  money     NUMBER(15,2),

  recevietime     DATE,

  recordtime    DATE,

  currency VARCHAR2(30),

  foreigncurrency  NUMBER(15,2),

  constraint PK_BT_BUY_PAY_ID primary key (id)

)‘;

    EXECUTE IMMEDIATE VC_STR;

  END IF;

END;

2.增加欄位

--修改人:易小群

--修改時間:2014-9-18

--修改內容:採購合約表增加合約所屬欄位(本部和集團)

DECLARE

  VN_COUNT     NUMBER;

  VC_STR        VARCHAR2(1000);

BEGIN

  --查看該表中該欄位是否存在

  SELECTCOUNT(*)

    INTO VN_COUNT

    FROM USER_TAB_COLUMNS

   WHERE TABLE_NAME =‘BT_BUY_RECORD‘AND COLUMN_NAME =‘CONTRACTBELONG‘;

  IF VN_COUNT < 1 THEN

    VC_STR := ‘ ALTER TABLE BT_BUY_RECORD ADD CONTRACTBELONG VARCHAR2(30)‘;

    EXECUTE IMMEDIATE VC_STR;

  END IF;

END;

3.建立視圖

createorreplaceview v_bt_buy_fprecord_ceas

selectdistinct b.corp_code,

       c.corp_name,--單位名稱

       d.buynumber,--採購合約號

       b.buyname,--採購合約名稱

       d.sale_no,--銷售合約號

       d.product_id,--產品id

       d.product_name,--產品名稱

       d.money,--明細金額

       b.htprice,--合約金額

       d.out_money,--已付金額

       vf.ymoney,--已開發票金額

       b.status

  from bt_buy_record b

  leftjoin bt_corp c

    on b.corp_code = c.corp_code

  leftjoin bt_buy_detail d

    on b.buynumber = d.buynumber

  leftjoin (select f.detail_id, sum(f.money)as ymoney

               from bt_buy_fprecord f

              groupby f.detail_id) vf

    on d.id = vf.detail_id

  orderby b.corp_code  ;

4.修改表的欄位允許為空白

--修改人:易小群

--修改時間:2014年9月11日

--修改內容:修改表BT_BUY_FPRECORD欄位PRODUCE_NAME允許為空白

--修改原因:採購合約匯入時報PRODUCE_NAME為NULL不能插入

DECLARE

  VN_NULLABLE VARCHAR2(1);

BEGIN

  SELECT nullable

    INTO VN_NULLABLE

    FROM user_tab_columns

   WHERE table_name =‘BT_BUY_FPRECORD‘

     AND column_name =‘PRODUCE_NAME‘;

  --如果不允許為空白

  IF VN_NULLABLE = ‘N‘THEN

    --更改為允許為空白

    EXECUTE IMMEDIATE‘ ALTER TABLE BT_BUY_FPRECORD MODIFY PRODUCE_NAME VARCHAR2(200) NULL ‘;

  END IF;

  COMMIT;

END;

5.修改欄位長度

--修改人:易小群

--修改時間:2014年9月3日

--修改內容:修改表BT_BUY_DETAIL欄位PRODUCT_NAME的長度

--修改原因:匯入時報其欄位的長度不夠 

altertable BT_BUY_DETAIL modify(PRODUCT_NAME varchar2(500));

--修改產品名稱欄位,發票表匯入報其欄位的長度不夠

altertable BT_BUY_FPRECORD modify(PRODUCT_NAME  varchar2(500));

commit;

Oracle簡單指令碼樣本

聯繫我們

該頁面正文內容均來源於網絡整理,並不代表阿里雲官方的觀點,該頁面所提到的產品和服務也與阿里云無關,如果該頁面內容對您造成了困擾,歡迎寫郵件給我們,收到郵件我們將在5個工作日內處理。

如果您發現本社區中有涉嫌抄襲的內容,歡迎發送郵件至: info-contact@alibabacloud.com 進行舉報並提供相關證據,工作人員會在 5 個工作天內聯絡您,一經查實,本站將立刻刪除涉嫌侵權內容。

A Free Trial That Lets You Build Big!

Start building with 50+ products and up to 12 months usage for Elastic Compute Service

  • Sales Support

    1 on 1 presale consultation

  • After-Sales Support

    24/7 Technical Support 6 Free Tickets per Quarter Faster Response

  • Alibaba Cloud offers highly flexible support services tailored to meet your exact needs.