欢迎投稿

今日深度:

Oracle简单脚本示例,oracle示例

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.修改表的字段允许为空

--修改人:易小群

--修改时间:2014911

--修改内容:修改表BT_BUY_FPRECORD字段PRODUCE_NAME允许为空

--修改原因:采购合同导入时报PRODUCE_NAMENULL不能插入

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.修改字段长度

--修改人:易小群

--修改时间:201493

--修改内容:修改表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 的脚本

我只能教你大概思路,程序还是得靠自己写啊。同学!
能下发,说明两个库是通的,请问是否使用DBLINK来进行表查询?
如果有,则直接在C库中你 select count(*) from B@dblink_name ;查询。
至于匹配、下发数据你可以用过程,函数。或者SHELL脚本来实现。

补充:
我把你的例子标准化一下:
declare
n_count number(10); --定义变量类型 数值10位
begin
select count(*) into n_count from table;
if n_count =0 then
insert into ...;
end if;
end;
 

Oracle的建表脚本及表与各个字段的意思?例子?

create table student //创建student表
( stuid number(8) primary key, //学生编号 整数 主键
stuname varchar2(20) not null, //学生姓名 变成字符串(最长20) 非空
classid number(8) foreign key references class(classid) // 学生班级编号 整数 外键
)
 

www.htsjk.Com true http://www.htsjk.com/shujukunews/3588.html NewsArticle Oracle简单脚本示例,oracle示例 Oracle简单脚本示例 1.增加表 -- 修改日期: 2014.09.21 -- 修改人:易小群 -- 修改内容:新增采购支付情况表 DECLARE VC_STR VARCHAR2(5000); VN_COUNT NUMBER; BEGIN -- 查看现...
评论暂时关闭