oracle实现绑定in字符串

1.建立存放字符串的数组类型

   create or replace type Type_bind as table OF VARCHAR2(4000)

 

 2.建立将字符串转成数组然后返回给Type_bind函数。

  CREATE OR REPLACE FUNCTION F_PUB_BIND_IN(p_bind IN VARCHAR2)
  RETURN TYPE_BIND AS
/*
  创建时间:2008-8-26
  运行周期:
  涉及的表:
  函数简述:
      为了带IN的条件,使用绑定变量, 把字符串转成表类型
      入参为()中的值,如:(1,2,3,4)则传入'1,2,3,4'
      SELECT * FROM TABLE(F_PUB_BIND('66561000,62693920'))  也可调用
  修改历程:
  1.
*/ 
  --往入参的后面加入逗号,便于分割
  v_SqlStr  LONG DEFAULT p_bind || ',';
  --中间变量
  v_Tmp    NUMBER;
  --分割后的值
  v_Data TYPE_BIND := TYPE_BIND();
BEGIN
  LOOP
    v_Tmp := INSTR(v_SqlStr, ',');
    EXIT WHEN(NVL(v_Tmp, 0) = 0);
    --扩展数组大小
    v_Data.EXTEND;
  /*  dbms_output.put_line(v_Data.COUNT);*/
    v_Data(v_Data.COUNT) := to_number(SUBSTR(v_SqlStr, 1, v_Tmp - 1));
    v_SqlStr := SUBSTR(v_SqlStr, v_Tmp + 1);
  END LOOP;
  RETURN v_Data;
END F_PUB_BIND_IN;

 

3.实现绑定的语法。

 

UPDATE DW.TASK_SMS_LIST P
           SET P.STATE = 'X'
         WHERE P.SMS_SEQ_ID in
             (select COLUMN_VALUE
               from the(select cast(F_PUB_BIND_IN(V_SMS_SEQ_ID) as type_bind)
                          from dual));

 

V_SMS_SEQ_ID 如'1,2,3,4..'格式

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值