首页 > 代码库 > Oracle简单脚本示例
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简单脚本示例