一、参考

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生成流水号函数(5位流水号)

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 := '' || 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 || '';

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;

--调用

--SELECT fn_no_make(v_type=>'', v_number_col=>'SEQNO_SELF',v_table_name=>'I_YCSQJFYJS') AS SEQNO_SELF FROM DUAL;

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\newsmgnt.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

二、需求完成(参考一)

流水号格式改为20170215 1234567(年月日+7位数字),依次递增,每月1号后7位重置为0000001

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_start_no VARCHAR2(20);--流水号重新计算(按月份)

v_type_len INT; --编码前缀 长度

v_sql VARCHAR2(4000);

BEGIN

--编码前缀 长度 int

v_sql := 'select decode(length('''||v_type||'''),NULL,0,length('''||v_type||''')) from DUAL';

EXECUTE IMMEDIATE v_sql

INTO v_type_len;

--取最大流水号的值

IF v_type_len=0 THEN

v_sql := 'SELECT MAX(' || v_number_col || ') FROM ' || v_table_name ||' WHERE 1=1 AND LENGTH('||v_number_col||')=15';

EXECUTE IMMEDIATE v_sql

INTO v_old_no;

ELSE

v_sql := 'SELECT MAX(' || v_number_col || ') FROM ' || v_table_name || ' WHERE 1=1 AND SUBSTR(' || v_number_col || ',1,'||v_type_len||')='''||v_type||''' ';

EXECUTE IMMEDIATE v_sql

INTO v_old_no;

END IF;

--当前日期编号

v_sql := 'SELECT SUBSTR(TO_CHAR(SYSDATE,''YYYYMMDD''), 1, 8) AS DATE_NO FROM DUAL';

EXECUTE IMMEDIATE v_sql

INTO v_date_no;

--当前年月编号

v_sql := 'SELECT SUBSTR(TO_CHAR(SYSDATE,''YYYYMMDD''), 1, 6) AS START_NO FROM DUAL';

EXECUTE IMMEDIATE v_sql

INTO v_start_no;

v_old_num := to_number(substr(v_old_no,v_type_len+9, 7));

v_new_num := to_char(v_old_num + 1);

WHILE length(v_new_num) < 7

LOOP

v_new_num := '' || v_new_num;

END LOOP;

IF v_old_no IS NULL OR

substr(v_old_no, v_type_len+1, 6) <> v_start_no

THEN

v_maked_no := v_type || v_date_no || '';

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;

--调用

--BEGIN

--dbms_output.put_line(fn_no_make(v_type=>'A', v_number_col=>'SEQNO_SELF',v_table_name=>'I_YCSQJFYJS'));

--END;

--SELECT fn_no_make(v_type=>'', v_number_col=>'SEQNO_SELF',v_table_name=>'I_YCSQJFYJS') AS SEQNO_SELF FROM DUAL;

Oracle生成千万测试数据

oracle 生成千万测试数据 做数据库开发或管理的人经常要创建大量的测试数据,动不动就需要上万条,如果一条一条的录入,那会浪费大量的时间,本文介绍了Oracle中如何通过一条SQL快速生成大量的测试 ...

24、jQuery常用AJAX-API&sol;Java调用MySQL &sol; Oracle过程与函数

1)掌握jQuery常用AJAX-API 2)掌握Java调用MySQL / Oracle过程与函数 一)jQuery常用AJAX-API 目的:简化客户端与服务端进行局部刷新的异步通讯 (1)取 ...

oracle生成&period;net的guid方法;

最近在做一个T1的.NET项目,数据库oracle的时候,遇到一个问题..NET里面的某个数据库表类的某个字段是guid类型.但是用oracle生成的guid.跟.NET的guid 无法识别.导致报错 ...

Oracle 生成随机密码

需求:需要定期更改密码.要求是1.密码位数11位.2.必须包含大小写字母.数字.特殊字符.3.排除一些特殊字符如().@.& oracle数据库中有可已生成随机密码包dbms_random,但 ...

Oracle中REGEXP&lowbar;SUBSTR函数&lpar;转&rpar;

Oracle中REGEXP_SUBSTR函数 Oracle中REGEXP_SUBSTR函数的使用说明: 题目如下:在oracle中,使用一条语句实现将'17,20,23'拆分成'17','20','2 ...

Oracle创建WM&lowbar;CONCAT函数

Oracle创建WM_CONCAT函数 WM_CONCAT这个函数会出错,所以从 11g开始.官方不认可 WM_CONCAT.然后就没这个函数了, 下面就是创建WM_CONCAT这个函数的步骤 第一步 ...

Oracle中REGEXP&lowbar;SUBSTR函数&lpar;字符串转多行&rpar;

Oracle中REGEXP_SUBSTR函数 Oracle中REGEXP_SUBSTR函数的使用说明: 题目如下: 在oracle中,使用一条语句实现将'17,20,23'拆分成'17','20',' ...

Oracle中REGEXP&lowbar;SUBSTR函数

Oracle中REGEXP_SUBSTR函数 Oracle中REGEXP_SUBSTR函数的使用说明: 题目如下: 在oracle中,使用一条语句实现将'17,20,23'拆分成'17','20',' ...

Oracle 中 decode 函数用法

Oracle 中 decode 函数用法 含义解释:decode(条件,值1,返回值1,值2,返回值2,...值n,返回值n,缺省值) 该函数的含义如下:IF 条件=值1 THEN RETURN(翻译 ...

随机推荐

复旦高等代数 II(15级)思考题

1.设 $f(x)=x^n+a_{n-1}x^{n-1}+\cdots+a_1x+a_0$ 是整系数首一多项式, 满足: $|a_0|$ 是素数且 $$|a_0|>1+\sum_{i=1}^{n ...

SAE使用心得1

最近准备在新浪云端SAE上挂点自己的小网站,这样自己开发个什么东西别人能用.但是第一次接触SAE,遇到一些问题,记下来给大家看. 1.安装的svn版本不能高于 1.8,否则无法向SAE提交代码. 2. ...

Windows Phone&comma;向localdatabase中插入时间数据出现不能转换的错误

在开发一个小程序时,使用到了DateTime类型的 DBType, 当向数据库中插入一条信息时,报错说是DateTime类型不能转换. 后来发现是系统给我的DateTime类型的列赋予了个初值,而这个 ...

SQL增加,删除,更改表中字段

1. 向表中添加新的字段 alter  table  table_name  add  column_name  varchar2(20) not null 2. 删除表中的一个字段 delete t ...

获取sql执行时间

sql server中获取要执行的sql或sql块的执行时间,方法之一如下: declare @begin datetime,@end datetime set @begin =getdate() - ...

vulnhub writeup - 持续更新

目录 wakanda: 1 0. Description 1. flag1.txt 2. flag2.txt 3. flag3.txt Finished Tips Basic Pentesting: ...

angular-cli&period;json常见配置

{ "project": { "name": "ng-admin", //项目名称 "ejected": false / ...

input属性为number时,如何去掉右边的 &plus;、-号

修改css /* 谷歌 */ input::-webkit-outer-spin-button, input::-webkit-inner-spin-button { -webkit-appearan ...

基于jquery地图特效全国网点查看代码

基于jquery地图特效全国网点查看代码.这是一款简单实用的jQuery地图特效,主要知识点是jquery和css实现了中图地图,提示层效果.效果图如下: 在线预览   源码下载 实现的代码. htm ...

Apache Commons CLI

简单的说,就是对命令的参数进行定义和解析的工具 -- 这里说的参数是我们常用的说法,而CLI里则是Option.Options,参数值(如果有)则是Option的arg(s). ## 为什么 那么,为 ...

java oracle 流水号_Oracle生成流水号函数相关推荐

  1. java oracle分页_oracle 分页存储过程和java代码

    create or replace procedure contfenyePro( v_in_tablename in varchar2, v_in_pagesize in number, v_in_ ...

  2. java oracle 序列_Oracle之序列

    一.序列概述 在Oracle中,可以用Sequence序列号生成器,为表中的行自动生成序列号,产生一组等间隔的数值(类型为数字).其主要用途是生成表的主键值,可以在插入语句中引用,在插入之前,获取序列 ...

  3. java oracle 字符_Oracle转义字符

    1.oracle 特殊字符 转义 关键词: oracle    转义 环境:oracle 9i  plsql 在plsql里边执行: update userinfo set pageurl='myjs ...

  4. java oracle 排序_Oracle的排序和限制条件(order by 和where)

    1.Order by子句的使用 select column.... from .... order by ... 1) Order by子句在整个 select语句中的位置: 始终位于最后 2) or ...

  5. java oracle 触发器_Oracle 触发器

    一.触发器简介 触发器的定义就是说某个条件成立的时候,触发器里面所定义的语句就会被自动的执行.因此触发器不需要人为的去调用,也不能调用.然后,触发器的触发条件其实在你定义的时候就已经设定好了.这里面需 ...

  6. Oracle 生成流水号

    辅助表(RUL_SEQUENCE): 表中数据如图: 辅助存储过程(Proc_GetSeqence): CREATE OR REPLACE PROCEDURE Proc_GetSeqence(SeqC ...

  7. 帮我用Java写一个生成流水号的方法

    我可以给你提供一个使用Java来生成流水号的简单方法: 使用java.util.UUID类来生成一个唯一的字符串: 使用java.time.LocalDateTime类来获取当前的日期和时间: 将上述 ...

  8. java生成流水号001_可变数据如何批量生成?

    原标题:可变数据如何批量生成? 常见的可变数据批量生成有两种:"流水号数据的批量生成"和"连接数据库文件的数据生成".流水号数据就是类似001-002-003- ...

  9. oracle rpad mysql_Oracle生成不重复票号与LPAD,RPAD与NEXTVAL函数解析

    SELECT TO_CHAR(SYSDATE,'YYMMDD')||LPAD(REFUNDSEQ.NEXTVAL,6,'0') AS RES_ORDER_NO FROM DUAL 该语句拼接 时间 与 ...

最新文章

  1. java card applet_可多选的javacard applet | 学步园
  2. Net作业调度(一) -Quartz.Net入门
  3. php接收16进制数据,PHP_PHP 通过Socket收发十六进制数据的实现代码,最近在php下做关于Socket通讯的 - phpStudy...
  4. **ML : ML中的最优化方法
  5. DataGridView控件机制及使用大全
  6. 够狠 | 单点登录三种方式,够狠!够劲爆!
  7. matlab自相关法,Matlab计算自相关和互相关
  8. 电信充q币短信怎么发_移动、联通、电信话费快来领!微信小额提现免手续费方法!刚需羊毛!...
  9. php 执行shell命令的函数
  10. python显示多个图表
  11. Visual Studio Code安装及设置
  12. linux下的系统垃圾清理
  13. stata两种方法查看命令源代码
  14. 关于UEFI启动+GPT分区 的一些经验
  15. Oracle如何保持一致读?
  16. java word 添加水印图片_Java添加Word文本水印和图片水印
  17. 四种主要网络IO虚拟化模型
  18. 蓝牙相关学习:4.2.BLE空口包结构 - PDU
  19. 太空射击python
  20. 黑马的python---09-django-04django入门

热门文章

  1. cuda学习笔记5——CUDA实现图像形态学腐蚀、膨胀
  2. Express4.X版本修改默认模板jade为ejs并且试用html为视图模板后缀名
  3. 数据中台当前与未来-数字化架构设计(1)
  4. mysql索引匹配方式
  5. 浩辰3D软件新手入门攻略:草图绘制功能全解析!
  6. 黄金期货对比现货黄金有哪些优势
  7. 最近20年天文学有什么重大的进展
  8. 浅谈自然语言处理(NLP)和 自然语言理解(NLU)
  9. 初次办理机电设备安装资质流程
  10. arclist调用附加字段addfields的使用