Oracle存储过程怎么传入一个带有 like '% %' 的字符串参数。

a183249556 2007-07-31 11:39:10
包的定义:

create or replace package Test is
TYPE RSCUROSR IS REF CURSOR;
procedure test(v_sql in varchar2,mycs out RSCUROSR )
end Test;

包的body代码如下:
create or replace package body Test is

procedure test(v_sql in varchar2,mycs out RSCUROSR )
IS

strV_SQL varchar2(4000);
BEGIN
strV_SQL :='select * from table where || v_sql||'';
OPEN R_MYCS FOR
strV_SQL;
END;

end Test;

现在我向v_sql传入的是带有like '% %'的字符串来进行模糊查询要怎么做呢?比如v_sql=tableName like '%name%'
请高手指点。
...全文
1106 8 打赏 收藏 转发到动态 举报
写回复
用AI写文章
8 条回复
切换为时间正序
请发表友善的回复…
发表回复
wariob 2007-08-07
  • 打赏
  • 举报
回复
''''""""
hongqi162 2007-07-31
  • 打赏
  • 举报
回复
create or replace procedure sp_aa( s varchar2,rst out sys_refcursor )
is
sqlstr varchar2(1000);
i int;
begin
--s:='cname like ''%123%''';
sqlstr:='select * from ttt where '||s;
open rst for sqlstr;
end;


你使用这个再测试一下,你用我上边的测试数据
a183249556 2007-07-31
  • 打赏
  • 举报
回复
可我测试了,总是说数字或者值错误。咳。。。。
hongqi162 2007-07-31
  • 打赏
  • 举报
回复
我没有使用返回结果集,应该可以了,注意以下like的引号
hongqi162 2007-07-31
  • 打赏
  • 举报
回复
--测试数据
create table ttt( cname varchar2(100) );
insert into ttt
select '1123222' from dual union all
select '12234123' from dual union all
select '123' from dual union all
select 'fas' from dual union all
select 'fdsa' from dual;
--存储过程
create or replace procedure sp_aa( s varchar2 )
is
sqlstr varchar2(1000);
i int;
begin
--s:='cname like ''%123%''';
sqlstr:='select count(*) from ttt where '||s;
execute immediate sqlstr into i;
dbms_output.put_line( i );
end;
--测试
declare
s varchar2(100);
begin
s:='cname like ''%123%''';
sp_aa( s );
end;
--输出结果
3
a183249556 2007-07-31
  • 打赏
  • 举报
回复
这样一样也是不可以啦。传不进去,不知道%是要怎么当字符传的。
hongqi162 2007-07-31
  • 打赏
  • 举报
回复
strV_SQL :='select * from table where '||v_sql; //这样试试
a183249556 2007-07-31
  • 打赏
  • 举报
回复
这样子是可以,但是我实际用来起来还有点出入。可能是我问题问的不是很清楚。不过还是谢谢了。。。。。。

17,086

社区成员

发帖
与我相关
我的任务
社区描述
Oracle开发相关技术讨论
社区管理员
  • 开发
  • Lucifer三思而后行
  • 卖水果的net
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

试试用AI创作助手写篇文章吧