oracle(plsql)生成流水号
2018-10-12 14:00
309 查看
CREATE OR REPLACE FUNCTION fn_no_make(v_prefix VARCHAR2,
v_table_name VARCHAR2,
v_number_col VARCHAR2)
/*
* v_prefix: 编码前缀两位
* v_table_name:编码所在表名
* v_number_col:编码所在列名
*/
RETURN VARCHAR2 IS
v_old_no VARCHAR2(50); --原编码
v_new_no VARCHAR2(50); --新编码
v_old_num NUMBER; --原编码后三位编号
v_new_num VARCHAR2(10); --新编码后三位编号
v_date_no VARCHAR2(10); --当前日期编号
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 TO_CHAR(SYSDATE,''YYYYMMDD'') FROM DUAL';
EXECUTE IMMEDIATE v_sql INTO v_date_no;v_old_num := to_number(substr(v_old_no, 12, 3));
v_new_num := lpad(to_char(v_old_num+1), 3, '0');IF v_old_no IS NULL OR substr(v_old_no, 3, 8) <> v_date_no THEN
v_new_no := v_prefix || v_date_no || '-' || '001';
ELSE
v_new_no := v_prefix || v_date_no || '-' || v_new_num;
END IF;RETURN v_new_no;
EXCEPTION
WHEN OTHERS THEN
dbms_output.put_line(SQLERRM);
END fn_no_make;
您可能感兴趣的文章:
- win7 64位操作系统中Oracle 11g + plsql安装教程详解(图解)
- Plsql Developer连接Oracle时出现Could not initialize oci.dll解决方案
- Windows 64位下装安装Oracle 11g,PLSQL Developer的配置问题,数据库显示空白的完美解决方案(图文教程)
- Oracle客户端与plsql查询数据乱码修改成中文的快速解决方法
- 使用工具 plsqldev将Excel导入Oracle数据库
- plsql连接oracle数据库报ora 12154错误解决方法
- oracle客户端PLSQL连接失败解决方法
- Oracle基本PLSQL的使用实例详解
相关文章推荐
- Oracle生成流水号(SJBM_20180201_000001) 隔天重置--MYBatis集成调用
- Oracle根据表生成系统流水号
- 【玩转Excel】Oracle PLSQL处理生成XLSX文件
- Oracle 生成流水号
- Oracle流水号生成函数
- Oracle 生成流水号解决方案
- oracle与sqlserver利用函数生成年月日加流水号
- Oracle PLSQL生成Excel文件(2)
- Oracle序列 生成订单流水号(加日期或别的信息)
- oracle与sqlserver利用函数生成年月日加流水号
- Oracle 中生成流水号的方法
- ORACLE 创建自增序列生成流水号
- oracle 函数生成流水号
- oracle 生成流水号
- Oracle 生成流水号 存储过程 订单编号
- Oracle 中生成流水号的方法
- Oracle序列生成订单流水号
- Oracle生成流水号
- oracle 中生成流水号 方法