需求:做一个存储过程,输入参数为字串,是一串由分隔符0xx1xx组合而成的长字符串;输出结果集。
在存储过程中对输入参数根据分隔符分割,并使用这些分割后的字符串整合成输出SQL语句执行。存储过程例如:生成时没有提示有问题:
create or replace procedure get_MutiSchemeData(
v_FcmpNum in varchar2, --薪酬编码
cur_o_result out sys_refcursor --输出结果集
)
is
str_sql varchar2(8000);
begin
str_sql:='select fid,fnumber,fname_l2 from T_HR_CMPSCHEME where FEnable=1 and FIsDelete=0 and T_HR_CMPSCHEME.FHisTableName is not null
and fnumber in ('''||v_FcmpNum||''')';
OPEN cur_o_result for str_sql;
EXCEPTION
WHEN OTHERS THEN
raise;
END如上存储过程,薪酬编码入参可能会类似如:01-gx-0010xx1xx02-jx-001n0xx1xxxy-008
其中红色标识的为分隔符,薪酬编码不规则。
如何分解后使str_sql变量最后得出的结果为:
select fid,fnumber,fname_l2 from T_HR_CMPSCHEME where FEnable=1 and FIsDelete=0 and T_HR_CMPSCHEME.FHisTableName is not null
and fnumber in ('01-gx-001','02-jx-001n','xy-008')这样就可以得出我想要的结果,希望各位帮参考一下哩,谢谢了~~
在存储过程中对输入参数根据分隔符分割,并使用这些分割后的字符串整合成输出SQL语句执行。存储过程例如:生成时没有提示有问题:
create or replace procedure get_MutiSchemeData(
v_FcmpNum in varchar2, --薪酬编码
cur_o_result out sys_refcursor --输出结果集
)
is
str_sql varchar2(8000);
begin
str_sql:='select fid,fnumber,fname_l2 from T_HR_CMPSCHEME where FEnable=1 and FIsDelete=0 and T_HR_CMPSCHEME.FHisTableName is not null
and fnumber in ('''||v_FcmpNum||''')';
OPEN cur_o_result for str_sql;
EXCEPTION
WHEN OTHERS THEN
raise;
END如上存储过程,薪酬编码入参可能会类似如:01-gx-0010xx1xx02-jx-001n0xx1xxxy-008
其中红色标识的为分隔符,薪酬编码不规则。
如何分解后使str_sql变量最后得出的结果为:
select fid,fnumber,fname_l2 from T_HR_CMPSCHEME where FEnable=1 and FIsDelete=0 and T_HR_CMPSCHEME.FHisTableName is not null
and fnumber in ('01-gx-001','02-jx-001n','xy-008')这样就可以得出我想要的结果,希望各位帮参考一下哩,谢谢了~~
解决方案 »
- ORACLE时间段查询优化的问题
- 根据sqlserver中的多个表,组合成一个新表,并建立在oracle数据库中
- orcle 触发器 对某一个部门的某个职工涨工资 要求把该部门的职工都涨相同数目
- 求sql语句:怎么快速得到一个表中的行数
- 输入值对于日期格式不够长 问题
- 高分求助,oracle执行某个什么,导致系统cpu使用率很高?
- 在ORACLE中用触发器实现主键功能报错!
- 这样的过滤SQL如何写
- 回滚段问题
- <><><><><><><><><><><>vc++与oracal的问题!!!<><><><><><><><><><><><><>
- 请教gt-grid与struts2结合,后台分页的问题
- oracle 字符转截取
---------------------------------
'01-gx-001','02-jx-001n','xy-008'