我用open cursor1 for v_sqlstring动态打开游标,那个v_sqlstring是一个查询语句,为了防止查询条件有单引号之类的特殊符号,我用replace替换掉了单引号。
但是要查询的内容有单引号,要把这条含有单引号的内容查出来的话,就查不出了,什么办???
但是要查询的内容有单引号,要把这条含有单引号的内容查出来的话,就查不出了,什么办???
解决方案 »
- 多个or条件不走索引,求解
- 关于RMAN恢复的问题!比较急
- Oracle数据库的数据库、表空间及用户的对应关系是什么?
- IN OUT NOCOPY CLOB 不能对这样的传入参数赋值么?
- 关于Oracle10g 逻辑结构和物理结构的几个问题
- 菜鸟求助SQL语句(ORACLE)一种写法,请各位达人帮忙,在线等
- 要新建一个和201_db结构一样的库,只是叫206_db,请问有哪些布骤?比如说倒同义词啊,用户,没有规范的流程
- 怎么在sql语句里判断一个字符串是不是date型的
- 帮忙,一个触发器中跨用户不能调用问题.
- PLSQL Developer启动问题报错。ora-12560:tns:协议适配器错误
- 请教高手,这些东西靠不靠谱(红色字体)?
- oracle有没有提供一种技术可以将存储过程等发布为web service呢
CREATE OR REPLACE function certificatefunction1
(
projectstate in int,
projectname in varchar,
startDateMin in varchar,
startDateMax in varchar,
endDateMin in varchar,
endDateMax in varchar,
certificateType in int,
versions in varchar
) return sys_refcursor
as
cursor1 sys_refcursor;
projectname_temp varchar(50);
sqlstr varchar(2000);
begin
sqlstr := sqlstr || ' select pp.profile_Id,pp.name,pp.version,pp.start_Date,pp.end_Date,pci.certificate_Type ';
sqlstr := sqlstr || ' from Project_Profile pp,Project_Certificate_Info pci ';
sqlstr := sqlstr || ' where pp.profile_Id = pci.profile_Id ';
sqlstr := sqlstr || ' and pp.status != ' || projectstate;
if projectname is not null then
select replace(projectname,'''','') into projectname_temp from dual;
sqlstr := sqlstr || ' and pp.name like ''%' || projectname_temp || '%''';
end if;
if startDateMin is not null then
sqlstr := sqlstr || ' and pp.start_date >= to_date(''' || startDateMin || ''',''yyyy-mm-dd'')';
end if;
if startDateMax is not null then
sqlstr := sqlstr || ' and pp.start_date < to_date(''' || startDateMax || ''',''yyyy-mm-dd'')';
end if;
if endDateMin is not null then
sqlstr := sqlstr || ' and pp.end_date >= to_date(''' || endDateMin || ''',''yyyy-mm-dd'')';
end if;
if endDateMax is not null then
sqlstr := sqlstr || ' and pp.end_date <= to_date(''' || endDateMax || ''',''yyyy-mm-dd'')';
end if;
if certificateType != -1 then
sqlstr := sqlstr || ' and pci.certificate_Type = ' || certificateType;
end if;
if versions is not null then
sqlstr := sqlstr || ' and pp.version like ''%' || versions || '%''';
end if;
sqlstr := sqlstr || ' order by pp.profile_Id desc ';
open cursor1 for sqlstr;
return cursor1;
end certificatefunction1;