PLSQL生成流水号
发布时间:2020-12-11 23:17:32 所属栏目:MySql教程 来源:网络整理
导读:今天PHP站长网 52php.cn把收集自互联网的代码分享给大家,仅供参考。 CREATE OR REPLACE FUNCTION fn_no_make(v_prefix VARCHAR2,v_table_name VARCHAR2,v_number_col VARCHAR2) /* * v_prefix: 编码前缀两位 * v_table_n
以下代码由PHP站长网 52php.cn收集自互联网 现在PHP站长网小编把它分享给大家,仅供参考 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,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; 以上内容由PHP站长网【52php.cn】收集整理供大家参考研究 如果以上内容对您有帮助,欢迎收藏、点赞、推荐、分享。 (编辑:李大同) 【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容! |
相关内容
- Mysql入门MySQL中使用replace、regexp进行正则表达式替换的
- MySQL连接查询INNER JOIN、LEFT JOIN、RIGHT JOIN
- Mysql学习Mysql启动报ERROR:2002的分析与解决
- Mysql应用mysql存储过程简单实例
- mysql 密码过期
- Mysql入门MYSQL无法启动提示: Default storage engine (In
- Oracle用SQL语句实现desc函数功能
- Mysql学习Ubuntu16.04 server下配置MySQL,并开启远程连接的
- Mysql学习浅谈MySQL在cmd和python下的常用操作
- php – fetch当我从缓存中获取它时只返回一行