pl/sql中在where in()子句里怎么使用字符串变量来传递查询条件?

CSDN - 专家门诊 -
主  题:
请问pl/sql中在where in()子句里怎么使用字符串变量来传递查询条件?
作  者:web_gus (penny)
信 誉 值:100
所属论坛:Oracle 开发
问题点数:100
回复次数:5
发表时间:2004-11-25 18:52:08
create or replace procedure test1(  i_miseCode   in  varchar2, o_totalCount out number) is
   
begin
o_totalcount:=0;
 
          SELECT count(*)into(o_totalCount) FROM GCM_SHOHIN
            WHERE MISE_CD IN(i_miseCode) ;  
  
end test1;
输入参数i_miseCode='1001','1002'等多个条件,现在只有输入1个条件时正确,并且不能带引号,如果输入2个以上的时候就会出错怎么回事?

回复人: web_gus(penny) ( ) 信誉:100 2004-11-25 18:55:46 得分:0
 
up

Top
回复人: lialin(阿林) ( ) 信誉:99 2004-11-25 18:58:14 得分:20
 
你用动态语句来实现就好了!
  v_sql:='SELECT count(*)  FROM GCM_SHOHIN WHERE MISE_CD IN('||i_miseCode||')';
  exec v_sql into _totalcount;


Top
回复人: web_gus(penny) ( ) 信誉:100 2004-11-25 19:23:17 得分:0
 
谢谢阿林,我同事本来是这么写的,可是老板不让用动态语句,所以他才修改成这样的,我负责测试,现在这样不知道怎么才能实现啊,他想用substring,循环取子串,感觉太麻烦,不知有没有更好的方法?  SELECT count(*)into(o_totalCount) FROM GCM_SHOHIN
            WHERE MISE_CD IN(i_miseCode) ;  
这样写错在哪里啊?

Top
回复人: zmgowin(隐者(龙祖宗)) ( ) 信誉:100 2004-11-25 19:38:08 得分:80
 
将语法改改
create or replace procedure test1(  i_miseCode   in  varchar2, o_totalCount out number) is
begin
         SELECT count(*) into totalCount FROM GCM_SHOHIN
            WHERE instr(i_miseCode,MISE_CD)>0; 
end test1;

测试的时候要用这种结构,如:
exec test1('''1'',''2''',:b)
不要直接输入'1','2'


Top
回复人: web_gus(penny) ( ) 信誉:100 2004-11-26 8:39:16 得分:0
 
非常感谢zmgowin(隐者(龙祖宗))

Top

该问题已经结贴 ,得分记录: lialin (20)、 zmgowin (80)、
  • 0
    点赞
  • 2
    收藏
    觉得还不错? 一键收藏
  • 2
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论 2
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值