Oracle通过struct传入varchar2参数为null的解决办法(二)

2014-11-24 17:56:17 · 作者: · 浏览: 1
.sr_number like '%sp%' and s.sr_name like '%宏%' and sc.cs_idername like '%2%' and (sc.cs_zuser like '%朱%' or sc.cs_fuser like '%江%') and sc.cs_leixing like '%不%' and sc.cs_invoice like '%3%' and sc.cs_man1 like '%科%' and ma.ar_name like '%川%'
if 0 = var_i_xskf1 then
--第一个条件
if var_hidden1 = 'like' then
var_sql_like1 := ' and (mp.re_name like ''%'|| var_value1 ||'%''';
end if;
if var_hidden1 = 'not like' then
-- 第一个 not like
var_sql_notlike1 := ' and (mp.re_name not like ''%'|| var_value1 ||'%''';
end if;
if var_hidden1='=' then
-- 第一个 =
var_sql_eq1 := ' and (mp.re_name = '''|| var_value1 ||'''';
end if;
if var_hidden1 = '>' then
-- 第一个 >
var_sql_gt1 := ' and (mp.re_name > '''|| var_value1 ||'''';
end if;
if var_hidden1 = '<' then
-- 第一个 <
var_sql_lt1 := ' and (mp.re_name < '''|| var_value1 ||'''';
end if;
if var_hidden1 = '>=' then
var_sql_gteq1 := ' and (mp.re_name >= '''|| var_value1 ||'''';
end if;
if var_hidden1 = '<=' then
var_sql_lteq1 := ' and (mp.re_name <= '''|| var_value1 ||'''';
end if;
if var_hidden1 = '<>' then
var_sql_uneq1 := ' and (mp.re_name <> '''|| var_value1 ||'''';
end if;
else
-- 多于一个条件
if var_hidden1 = 'like' then
var_sql_like1 := var_sql_like1 || ' or mp.re_name like ''%'|| var_value1 ||'%''';
end if;
if var_hidden1 = 'not like' then
-- 第一个 not like
var_sql_notlike1 := var_sql_notlike1 || ' or mp.re_name not like ''%'|| var_value1 ||'%''';
end if;
if var_hidden1='=' then
-- 第一个 =
var_sql_eq1 := var_sql_eq1 || ' or mp.re_name = '''|| var_value1 ||'''';
end if;
if var_hidden1 = '>' then
-- 第一个 >
var_sql_gt1 := var_sql_gt1 || ' or mp.re_name > '''|| var_value1 ||'''';
end if;
if var_hidden1 = '<' then
-- 第一个 <
var_sql_lt1 := var_sql_lt1 || ' or mp.re_name < '''|| var_value1 ||'''';
end if;
if var_hidden1 = '>=' then
var_sql_gteq1 := var_sql_gteq1 || ' or mp.re_name >= '''|| var_value1 ||'''';
end if;
if var_hidden1 = '<=' then
var_sql_lteq1 := var_sql_lteq1 || ' or mp.re_name <= '''|| var_value1 ||'''';
end if;
if var_hidden1 = '<>' then
var_sql_uneq1 := var_sql_uneq1 || ' or mp.re_name <> '''|| var_value1 ||'''';
end if;
end if;
var_sql := var_sql || var_sql_like1 || var_sql_notlike1 || var_sql_lt1 || var_sql_gt1 || var_sql_lteq1 || var_sql_gteq1 || var_sql_uneq1 || var_sql_eq1;
var_i_xskf1 := var_i_xskf1 + 1;
end loop;
if var_i_xskf1 > 0 then
-- 存在筛选条件,在筛选条件最后添加 ' ) ' , 结束
var_sql := var_sql || ')';
end if;