大家好,又见面了,我是全栈君。
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;
发布者:全栈程序员栈长,转载请注明出处:https://javaforall.cn/115360.html原文链接:https://javaforall.cn