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.改动表的字段同意为空
--改动人:易小群
日
--改动内容:改动表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.改动字段长度
--改动人:易小群
日
--改动内容:改动表BT_BUY_DETAIL字段PRODUCT_NAME的长度
--改动原因:导入时报其字段的长度不够
altertable BT_BUY_DETAIL modify(PRODUCT_NAME varchar2(500));
--改动产品名称字段,发票表导入报其字段的长度不够
altertable BT_BUY_FPRECORD modify(PRODUCT_NAME varchar2(500));
commit;