小弟想写一个存储过程,需求如下
表:tb_ac001
表中字段:TELD, TELH, TELN,TELI,HP_TELD, HP_TELH ,HP_TELN,CUST_LVL
需求:
传入一个变量ANI_Code ,用这个ANI_Code作为条件与TELD, TELH, TELN,TELI这四个拼接出来的值,或者HP_TELD, HP_TELH ,HP_TELN 这三个字段拼接出的值做比较,如果只有一条数据,那么需要找到CUST_LVL的值并作为一个变量输出,如果没有数据或者有两条以上的数据那么直接赋值变量输出。我发现我一个select count *,在数据库中就跑了5秒。。让我很无语。求各位路过的大神帮忙优化一下,小弟感激不尽。。谢谢
create or replace procedure PD_GetCustlvl( ANI_Code IN varchar2,DNIS_Code OUT varchar2
) is
i integer;
ai_ani_code varchar2(20);
begin
ai_ANI_Code := substr(ANI_Code,-11,11);
select count(*)
into i
from tb_ac001
where substr(TELD || TELH || TELN || TELI,-11,11) =ai_ani_code or HP_TELD || HP_TELH|| HP_TELN = ai_ANI_Code;
--如果有手机记录,并且只有1条
if i = 1 then
select decode(CUST_LVL_CD,
'90',
'10',
'80',
'20',
'50',
'30',
'40',
'40',
'30',
'50',
'20',
'80',
'10',
'90',
'no')
into DNIS_Code
from tb_ac001
where substr(TELD || TELH || TELN || TELI,-11,11) = ai_ANI_Code or HP_TELD || HP_TELH|| HP_TELN = ai_ANI_Code;
--如果记录不只1条
else
if i <> 1 then
DNIS_Code := 30;
end if;
end if;
end PD_GetCustlvl;优化存储数据库
表:tb_ac001
表中字段:TELD, TELH, TELN,TELI,HP_TELD, HP_TELH ,HP_TELN,CUST_LVL
需求:
传入一个变量ANI_Code ,用这个ANI_Code作为条件与TELD, TELH, TELN,TELI这四个拼接出来的值,或者HP_TELD, HP_TELH ,HP_TELN 这三个字段拼接出的值做比较,如果只有一条数据,那么需要找到CUST_LVL的值并作为一个变量输出,如果没有数据或者有两条以上的数据那么直接赋值变量输出。我发现我一个select count *,在数据库中就跑了5秒。。让我很无语。求各位路过的大神帮忙优化一下,小弟感激不尽。。谢谢
create or replace procedure PD_GetCustlvl( ANI_Code IN varchar2,DNIS_Code OUT varchar2
) is
i integer;
ai_ani_code varchar2(20);
begin
ai_ANI_Code := substr(ANI_Code,-11,11);
select count(*)
into i
from tb_ac001
where substr(TELD || TELH || TELN || TELI,-11,11) =ai_ani_code or HP_TELD || HP_TELH|| HP_TELN = ai_ANI_Code;
--如果有手机记录,并且只有1条
if i = 1 then
select decode(CUST_LVL_CD,
'90',
'10',
'80',
'20',
'50',
'30',
'40',
'40',
'30',
'50',
'20',
'80',
'10',
'90',
'no')
into DNIS_Code
from tb_ac001
where substr(TELD || TELH || TELN || TELI,-11,11) = ai_ANI_Code or HP_TELD || HP_TELH|| HP_TELN = ai_ANI_Code;
--如果记录不只1条
else
if i <> 1 then
DNIS_Code := 30;
end if;
end if;
end PD_GetCustlvl;优化存储数据库
解决方案 »
- 我的oracle的存储过程总报错,请高手帮帮忙!
- 求教如何在windows中进入oracle的图形管理界面
- 普通的生产库中,配置DataGuard,大多是物理DG,还是逻辑DG呢?
- ORA-03113...又见ORA-03113..
- 怎样连接别人的 Oracle 数据库
- oracle中,经常提示表空间老溢出,在线等
- 高分求教:oracle的初级问题
- 我在安装oracle时输入过主机字符串、服务名、主机名、服务器名、网络服务名现在忘记了,怎么办?
- 100分望高人指点关于oracle的快照的问题!
- 这个存储过程有什么错??
- 关于 oracle translate 函数的疑问
- oracle中使用union连接生成视图问题
select count(1) .....