''' <summary>

''' 在 oracle 里 , where in 语句有可能造成问题 : ORA-01795:列表中的最大表达式数为1000

''' 如果我们在拼接where in时,其item的个数超过1000,在sql执行时会抛出ORA-01795异常。

'''  下面这个函数对原来的字符串(比如:dim str = "1,2,3,4,5,6,7,...........,1001,1002")作处理

'''     dim strCondition = getWhereIn_ora01795("ALERT_ID",str, 999) , 处理后可以直接用在oracle

'''   where ALERT_ID in (" & strCondition & ")"

''' </summary>

''' <param name="_column">元素名</param>

''' <param name="strIDs">原始字符串,比如: 0,1,2,3,4,5,6,7,8,9 </param>

''' <param name="maxNumber">每个 or in 里面最多容许的元素数量 </param>

''' <returns></returns>

''' <remarks></remarks>

PrivateFunction getWhereIn_ORA01795(_column As String, strIDs As String, maxNumber As Integer) As String

Dim arr_IDs As String() = strIDs.Split(",") ' ID组成的 数组

' 假设 maxNumber 为 4

' 下面是转换的样式

' 0,1,2 ---> 0,1,2

' 0,1,2,3 ---> 0,1,2,3

If arr_IDs.Count <= maxNumber Then' 如果元素数量小于等于最大值

Return strIDs ' 原样返回

End If

' 现在知道元素数量 大于 最大值了,必须要做设置了

Dim strSql = arr_IDs(0).Trim ' sql语句, 从第0个元素开始

' 下面是几个转换的样式

' 0,1,2,3,4 ---> 0,1,2,3) or in (4

' 0,1,2,3,4,5,6,7,8,9 ---> 0,1,2,3) or in (4,5,6,7) or in (8,9

' 0,1,2,3,4,5,6,7,8,9,10,11 ---> 0,1,2,3) or in (4,5,6,7) or in (8,9,10,11

For ii = 0 To arr_IDs.Count - 1 ' 对于数组中的每个元素

If ii Mod maxNumber = 0 Then' 如果其序号 为4的倍数(0,4,8,12,。。。)

If ii > 0 Then' 如果其序号不是 0(其序号为 4,8,12。。。)

strSql &= ") or " & _column & " in (" & arr_IDs(ii).Trim

End If

Else' 如果其序号 不是4的倍数(1 2 3 5 6 7 9 10 11 。。。)

strSql &= ", " & arr_IDs(ii).Trim

End If

Next

Return strSql

End  Function

解决 ora-01795 的问题的更多相关文章

  1. ora 01795 in 1000 limit

    https://docs.oracle.com/cd/B19306_01/server.102/b14200/conditions013.htm https://docs.oracle.com/cd/ ...

  2. oracle学习 三(持续更新中)

    关于ora 01219问题的解决 之前学习oracle的时候练习去建立表空间,建了很多之后手动删除了,之后再使用自己创建的用户名登陆数据库就会造成数据库 ORA-01031: ORACLE initi ...

  3. [20180926]神奇的规避ORA-01795方法.txt

    [20180926]神奇的规避ORA-01795方法.txt --//大家知道in里面的值限制1000个值,如果超出报ORA-01795错误. D:\> ooerr 0179501795, 00 ...

  4. plsql在64位机器下读取tnsname.ora 及oracle_home异常的解决办法

    问题是: 我在自己电脑(win7  64bit)上安装了oracle的64位数据库   通过sqlplus能正常连接 主要是安装pl/sql时   我是这样安装的1.在网上下载了个instantcli ...

  5. oracle xe client 如何设置 tnsnames.ora(解决无法使用pl/sql developer的问题)

    10.2版本xe的服务器和客户端安装都很方便,由于xe的服务器只允许建立一个实例,实例名字会直接默认为xe,客户端默认安装在C:\XEClient目录下,使用sqlplus连接服务器: sqlplus ...

  6. PLSQL Developer概念学习系列之登录连接Oracle时出现(没有登录) -PL / SQL Developer:ORA - 12541: TNS :无建听程序的错误解决办法(图文详解)

    不多说,直接上干货! 前期博客 PLSQL Developer概念学习系列之如何正确登录连接上Oracle(图文详解)   如用scott.scott_password进行登录,orcl是全局数据库 ...

  7. 修改tnsnames.ora文件中配置内容中的连接别名后,连接超时解决办法

    1.tnsnames.ora文件中配置内容中的连接别名:由upaydb修改为IP地址 2.连接超时 定位原因: PLSQL登录界面的数据库列表就是读的tnsname.ora中连接的别名,这个文件中连接 ...

  8. 【ORA】ORA-39002,ORA-39070,ORA-29283, ORA-06512,ORA-29283解决办法

    今天使用IMPDP导入的时候报了一个错误 ORA-39002: invalid operation  ORA-39070: Unable to open the log file.  ORA-2928 ...

  9. 【ORA】Specified value of MEMORY_TARGET is too small, needs to be at least 3072M解决办法

    今天安装EM12C的时候遇到了一个报错: 修改好数据库中的参数大小后,重新启动报错 Specified value of MEMORY_TARGET is too small, needs to be ...

  10. 【ORA】ORA-01078和LRM-00109 解决方法

    今天切换到asm实例的时候,发现是一个空实例,尝试启动实例,结果报错ORA-01078和LRM-00109 SQL> startupORA-01078: failure in processin ...

随机推荐

  1. git 给分支添加描述 管理分支实用方法

    1.背景 在我们工作中,正常情况我们处在一个迭代中,一个人最多会有几个功能,比较正常的操作我们会给每个大功能创建不同的分支,方便管理. 我们可以非常愉快的进行版本管理,遇到特殊情况我们也可以方便版本退 ...

  2. Srinath总结 架构师们遵循的 30 条设计原则

    作者:Srinath 翻译:贺卓凡,来源:公众号 ImportSource Srinath 通过不懈的努力最终总结出了 30 条架构原则,他主张架构师的角色应该由开发团队本身去扮演,而不是专门有个架构 ...

  3. 在 EF Core 中 Book 实体在新增、修改、删除时,给 LastUpdated 字段赋值。

    直接贴代码: public class MenusContext : DbContext { public static class ColumnNames { public const string ...

  4. Django学习笔记(16)——扩展Django自带User模型,实现用户注册与登录

    一,项目题目:扩展Django自带User模型,实现用户注册与登录 我们在开发一个网站的时候,无可避免的需要设计实现网站的用户系统.此时我们需要实现包括用户注册,登录,用户认证,注销,修改密码等功能. ...

  5. DAX 第七篇:分组聚合

    DAX有三个用于生成分组聚合数据的函数,这三个函数有两个共同的特征:分组列和扩展列. 分组列是用于分组的列,只能来源于基础表中已存的列,分组列可以来源于同一个表,也可以来源于相关的列. 扩展列是由na ...

  6. WPF ListView ,XML

    <?xml version="1.0" encoding="utf-8" ?><PersonList> <Person Id=&q ...

  7. MySql数据库中正则表达式

    命令 说明 ^ 在字符的开启处进行匹配 $ 在字符的末尾处进行匹配 . 匹配任何字符(包括回车和新行) [-.] 匹配括号内的任意单个字符 [m-n] 匹配m到n之间的任意单个字符,例如[0-9],[ ...

  8. 初学dubbo遇到的那些坑

    昨天刚接触dubbo,遇到了一些坑,当然,这也与刚从eclipse换到了idea有一定的关系. 首先是maven仓库的问题,c盘下面的.m2文件夹默认的会被开发工具访问,所以要访问自己的本地仓库,.m ...

  9. 关于css中布局遇到的一些问题

    现在本人初学网页布局经常遇到一些布局问题比如图片错位. 遇到的问题以及解决方案如下 行内元素有缝隙 块级元素没有缝隙 行内块元素中间会有小缝隙    常见的解决办法就是浮动

  10. 用for循环数组去重

    <script> var arr=["a","e","w","f","a"," ...