Oracle简单脚本演示样例「建议收藏」

2022-07-10 14:59:31 浏览数 (1)

大家好,又见面了,我是全栈君。

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

0 人点赞