標籤: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簡單指令碼樣本