函数用来生成一个邮政子码c_id(长度大于等于6位不足在前面补字母a)。通过seq生成,条件如下:某省邮政编码表A(一个字段id)id为:123401,123402,123403...函数传入id来判断用相应的seq生成,
123401 - seq_01
123402 - seq_02
123403 - seq_03
........
123401 - seq_01
123402 - seq_02
123403 - seq_03
........
解决方案 »
- oracleservice服务无法启动
- 查询数据效率问题.急,面试题.
- 请教大家个sql语句的写法,请各位帮忙看一下,急着上线,谢谢
- 求了sql语句
- pl/sql请教各位大虾了,总是提示:'ORA-01756: 括号内的字符串没有正确结束'
- 怎么缩小导入表占用的表空间??
- PLSQLDev启动用户登陆窗口中的database填什么?我忘记安装的oracle数据库名了,怎么样查?
- 初级问题,简单得很,可是我太菜了。关于查询
- JOB里每7分钟执行一次,该怎么写啊
- 请问在Win2000 pro的操作系统上可以安装Oracle9i么?
- oracle临时表创建同时插入数据,是不行的?
- mysql修改用户密码
123401 - seq_01
123402 - seq_02
123403 - seq_03
---------------------
是这个意思吗?
1.sequence + 函数传入id后俩位
2.长度大于等于6位不足在前面补字母a
create or replace function create_cid(yb In Varchar2) return varchar2 is
Result varchar2(100);
L_result Number(10);
Begin
--根据邮政编码选择相应的seq来生成
If yb='123401' Then
Select seq_1.Nextval Into Result From dual;
Elsif yb='123402' Then
Select seq_2.Nextval Into Result From dual;
Elsif yb='123403' Then
Select seq_3.Nextval Into Result From dual;
--判断生成的c_id是否满足6位
Select length(Result) Into L_result From dual;
While(L_result<6)
Loop
Result := '0'||Result;
L_result := L_result+1;
End Loop;
End If;
Return Result;
Dbms_Output.Put_Line('结果为:'||Result);
end create_cid;我个人是这么写的,有什么不足的请大家指点下。谢谢了。
Result varchar2(100);
L_result Number(10);
Begin
--根据邮政编码选择相应的seq来生成
If yb='123401' Then
Select seq_1.Nextval Into Result From dual;
Elsif yb='123402' Then
Select seq_2.Nextval Into Result From dual;
Elsif yb='123403' Then
Select seq_3.Nextval Into Result From dual;
--判断生成的c_id是否满足6位
Select length(Result) Into L_result From dual;
While(L_result<6)
Loop
Result := 'a'||Result;
L_result := L_result+1;
End Loop;
End If;
Return Result;
Dbms_Output.Put_Line('结果为:'||Result);
end create_cid;
Select LPAD(seq_1.Nextval,6,'a') Into Result From dual;