zoukankan      html  css  js  c++  java
  • Oracle生成流水号函数

    1:日期范围上
    
    smalldatetime的有效时间范围1900/1/1~2079/6/6
    datetime的有效时间范围1753/1/1~9999/12/31
    
    2:精准度上
    
    smalldatetime只精准到分,而datetime则可精准到3位的毫秒。
    
    3:存储空间上
    
    smalldatetime占用4个字节,前2个字节存储base date(1900年1月1日)之后的天数。后2个字节存储午夜后的分钟数。
    
    datetime占用8个字节,前4个字节存储base date(即1900年1月1日)之前或之后的天数,后4个字节存储午夜后的毫秒数
    
    Oracle生成流水号函数
    
    CREATE OR REPLACE FUNCTION fn_no_make(v_type       VARCHAR2,
                                          v_number_col VARCHAR2,
                                         v_table_name VARCHAR2)
    /*
      * 参数说明:
      * v_type: 编码前缀
      * v_number_col:编码所在列名
      * v_table_name:编码所在表名
      */
     RETURN VARCHAR2 IS
      v_old_no   VARCHAR2(50); --原编码
      v_old_num  NUMBER; -- 原编码后五位编号
      v_new_num  VARCHAR2(10); --新编码后五位编号
      v_maked_no VARCHAR2(50); --新编码
      v_date_no  VARCHAR2(20); --当前日期编号
      v_sql      VARCHAR2(4000);
    BEGIN
    
      v_sql := 'SELECT MAX(' || v_number_col || ') FROM ' || v_table_name;
      EXECUTE IMMEDIATE v_sql
        INTO v_old_no;
    
      v_sql := 'SELECT SUBSTR(TO_CHAR(SYSDATE,''YYMMDD''), 1, 6) AS DATE_NO FROM DUAL';
      EXECUTE IMMEDIATE v_sql
        INTO v_date_no;
    
      v_old_num := to_number(substr(v_old_no, 11, 5));
      v_new_num := to_char(v_old_num + 1);
    
      WHILE length(v_new_num) < 5
      LOOP
        v_new_num := '0' || v_new_num;
      END LOOP;
    
      IF v_old_no IS NULL OR
         substr(v_old_no, 5, 6) <> v_date_no
      THEN
        v_maked_no := v_type || v_date_no || '00001';
      ELSE
        v_maked_no := v_type || v_date_no || v_new_num;
      END IF;
    
      RETURN(v_maked_no);
    EXCEPTION
      WHEN OTHERS THEN
        dbms_output.put_line(SQLERRM);
    END fn_no_make;
    
    1.数据库导入,导出命令
    
     数据导出: 
    a. 将数据库TEST完全导出,用户名system 密码manager 导出到D:daochu.dmp中
       exp test/test@ORACLE_192.168.28.1 file=d:daochu.dmp full=y
    
    b. 将数据库中system用户与sys用户的表导出
       exp  test/test@ORACLE_192.168.28.1  file=d:daochu.dmp owner=(system,sys)
    数据导入:
    
    a 将D:daochu.dmp 中的数据导入 TEST数据库中。
       imp dev/dev@ORACLE_192.168.28.2  file=d:daochu.dmp
       imp dev/dev@ORACLE_192.168.28.2 full=y  file=file= d:data
    ewsmgnt.dmp ignore=y
       上面可能有点问题,因为有的表已经存在,然后它就报错,对该表就不进行导入。
       在后面加上 ignore=y 就可以了。 
    b 将d:daochu.dmp中的表table1 导入
    imp dev/dev@TEST  file=d:daochu.dmp  tables=(table1)
    
    2.数据库表中Clob,Blob 导入导出命令
    
    exp  数据库用户名/密码@配置名称  file=输出文件路径  log=日志文件路径  tables=(数据库表名)  query="查询条件"
    
    imp 数据库用户名/密码@配置名称  file=输入文件路径  log=日志文件路径  tables=(数据库表名)  ignore=y
    
    exp test/test@ORACLE_192.168.28.1  file=c:11.dmp log=c:11.log tables=(table1) query="where  createdby='sysadmin'  and to_char(createtime,'YYYY-MM-DD')='2012-05-17'"
    
    imp dev/dev@ORACLE_192.168.28.2 file=c:11.dmp log=c:121.log tables=(table1) ignore=y
    
     
    用cmd.exe 执行就可以,注意的地方就是query 地方 "
    
    先执行exp 后执行imp
  • 相关阅读:
    第一次博客作业
    201771010110孔维滢《面向对象程序设计(java)》第二周学习总结
    孔维滢201771010110《面向对象程序设计(java)》第一周学习总结
    2018-2019-1 20165230《信息安全系统设计基础》第二周学习总结
    # 2018-2019-1 20165230 《信息安全系统设计基础》第三周学习总结
    20165230 获奖感想与学习心得
    20165230 2017-2018-2《Java程序设计》课程总结
    20165230 《Java程序设计》实验五《网络编程与安全》实验报告
    20165230 《Java程序设计》实验四 Android程序设计实验报告
    20165230 《Java程序设计》实验三 敏捷开发与XP实践 实验报告
  • 原文地址:https://www.cnblogs.com/Warmsunshine/p/4094293.html
Copyright © 2011-2022 走看看