写了个函数要求每次返回的值为D0000001,下次返回D00000002,第三次调用返回值为D00000003...以此类推
当后三位到999(D00000999)时中间三位加1(D00001000)
这个要怎么实现!
当后三位到999(D00000999)时中间三位加1(D00001000)
这个要怎么实现!
解决方案 »
- 求帮忙分离下字符串
- 大数据表之间的关联查询 问题请求帮助
- oracle dblink 到sql08 乱码
- oracle8.17 怎样做备份向SQL SERVER 那样按一段的时间备份数据??急急!!!
- 非常诡异的关于oracle的带参数的sql查询语句,大家进来看看这灵异事件。
- oracle date 变量赋值
- sql*loder安装
- win2k下的Oracle9i在修改IP和机器名后起不来怎么办?高手指教,急!!!!!
- 表分区的数量有上限吗
- 数据库一蹶不起! 欢迎广大老军医来帮忙!
- 求OCI程序开发资料,高手指点
- 菜鸟提问: procedure中使用execute时报ora-00928为什么?
CREATE SEQUENCE seq_2;
CREATE OR REPLACE FUNCTION GET_STR RETURN VARCHAR2 IS
C_R VARCHAR2(9);
I NUMBER;
BEGIN
SELECT SEQ_2.NEXTVAL INTO I FROM DUAL;
IF (MOD(I, 1000) = 0) THEN
SELECT SEQ_2.NEXTVAL INTO I FROM DUAL;
END IF;
C_R := 'D00' || LPAD(I, 6, '0');
RETURN(C_R);
END GET_STR;
/SELECT GET_STR() FROM dual;
楼主需求变了,原来是999后直接变成1001。
老需求用上面的。
如果是新的需求,用下面的。
CREATE SEQUENCE seq_2;
CREATE OR REPLACE FUNCTION GET_STR RETURN VARCHAR2 IS
C_R VARCHAR2(9);
I NUMBER;
BEGIN
SELECT SEQ_2.NEXTVAL INTO I FROM DUAL;
C_R := 'D00' || LPAD(I, 6, '0');
RETURN(C_R);
END GET_STR;
/SELECT GET_STR() FROM dual;