oracle基础学习

 一、数据库
1.建表
1) 在开发库crmdb用户tbcs上新建表"st_src_自己名字缩写",要求包含字段如下:
             id 10位number类型 非空,、name 256位varchar2类型 可空,、status 1位number类型 非空,、statusdate date类型 非空 默认为系统时间。并在id列上建立唯一索引。
 建表语句:
 CREATE table ST_SRC_CHEYANG
 (
   ID   NUMBER(10) not null,                    
   NAME   VARCHAR2(256),                   
   STATUS NUMBER(1) not null,                 
   STATUSDATE      DATE
 )
2)在开发库crmdb用户tbcs上新建表"st_mid_自己名字缩写",要求包含字段如下:
 id 10位number类型 非空,name 256位varchar2类型 可空,intime date类型 非空 默认为系统时间。并在id,intime列上建立联合唯一索引。
 建表语句:
 CREATE table ST_MID_CHEYANG
 (
   ID   NUMBER(10) not null,                    
   NAME    VARCHAR2(256),                                
   INTIME  DATE DEFAULT SYSDATE    not null
 )

3)在开发库crmdb用户tbcs上新建表"st_dst_自己名字缩写",要求包含字段如下:
 id 10位number类型 非空,name 256位varchar2类型 可空,value 256位varchar2类型 非空。
 建表语句:
 CREATE table ST_DST_CHEYANG
 (
   ID   NUMBER(10) not null,                    
   NAME   VARCHAR2(256),                   
   VALUE   VARCHAR2(256)  not null
 )
2.新建触发器
1)在开发库crmdb用户tbcs上新建"st_src_自己名字缩写"表的触发器"trg_st_src_自己名字缩写",
要求在插入新纪录,或者修改status字段时,status字段值为1,则将记录同步到"st_mid_自己名字缩写"表,intime填写系统时间。
 创建语句:
 CREATE OR REPLACE TRIGGER TRG_ST_SRC_CHEYANG
 AFTER INSERT OR UPDATE OF status ON ST_SRC_CHEYANG FOR EACH ROW
 BEGIN
  IF :new.status=1 THEN
   INSERT INTO ST_MID_CHEYANG VALUES (:new.id,:new.status,:SYSDATE);
  END IF;
 END;


3.新建存储过程
1) 在开发库crmdb用户tbcs上新建存储过程"prc_st_dst_自己名字缩写",要求执行时,处理"st_mid_自己名字缩写"表中的所有数据,
 当记录的name字段长度和自己名字汉语拼音长度一致,则入"st_dst_自己名字缩写"表,value值填写yyyymmddhh24miss格式当前时间+'和我名字等长'字符串,例如"*****和我名字等长";
 当长度不一致时,判断长度大小,比自己名字长的,入"st_dst_自己名字缩写"表,value值填写yyyymmddhh24miss格式当前时间+'比我名字长'字符串,例如"******长";
 比自己名字短的,入"st_dst_自己名字缩写"表,value值填写yyyymmddhh24miss格式当前时间+'比我名字短'字符串,例如"20150727165103比我名字短";
 插入后,将"st_mid_自己名字缩写"表对应记录删除;
 需要做提交次数控制,每3条提交一次。
 to_char(sysdate,'yyyymmddhhmiss')

CREATE OR REPLACE PROCEDURE PRC_ST_DST_CHEYANG
(
  i_VarParam  IN VARCHAR2,
)
AS

v_Name VARCHAR2(256);
v_Id   NUMBER(10);
v_Value  VARCHAR2(256);
cursor c_queryName is select name,id from ST_MID_CHEYANG ;

BEGIN

OPEN c_queryName;
 loop

  fetch c_queryName into v_Name,v_Id ;  
    exit when c_postype%notfound;
  
  if i_VarParam = v_Name then
   v_Value :=to_char(sysdate,'yyyymmddhhmiss')||'和我名字等长';
  else if i_VarParam = v_Name then
   v_Value :=to_char(sysdate,'yyyymmddhhmiss')||'比我名字长';
  else
   v_Value :=to_char(sysdate,'yyyymmddhhmiss')||'比我名字短';
  end if;

  insert into ST_DST_CHEYANG (ID,NAME,VALUE) VALUES (:=v_Id,:=v_Name,)

 end loog;

CLOSE c_queryName;


END


 

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值