解决 ora-01795 的问题
''' <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 的问题的更多相关文章
- ora 01795 in 1000 limit
https://docs.oracle.com/cd/B19306_01/server.102/b14200/conditions013.htm https://docs.oracle.com/cd/ ...
- oracle学习 三(持续更新中)
关于ora 01219问题的解决 之前学习oracle的时候练习去建立表空间,建了很多之后手动删除了,之后再使用自己创建的用户名登陆数据库就会造成数据库 ORA-01031: ORACLE initi ...
- [20180926]神奇的规避ORA-01795方法.txt
[20180926]神奇的规避ORA-01795方法.txt --//大家知道in里面的值限制1000个值,如果超出报ORA-01795错误. D:\> ooerr 0179501795, 00 ...
- plsql在64位机器下读取tnsname.ora 及oracle_home异常的解决办法
问题是: 我在自己电脑(win7 64bit)上安装了oracle的64位数据库 通过sqlplus能正常连接 主要是安装pl/sql时 我是这样安装的1.在网上下载了个instantcli ...
- oracle xe client 如何设置 tnsnames.ora(解决无法使用pl/sql developer的问题)
10.2版本xe的服务器和客户端安装都很方便,由于xe的服务器只允许建立一个实例,实例名字会直接默认为xe,客户端默认安装在C:\XEClient目录下,使用sqlplus连接服务器: sqlplus ...
- PLSQL Developer概念学习系列之登录连接Oracle时出现(没有登录) -PL / SQL Developer:ORA - 12541: TNS :无建听程序的错误解决办法(图文详解)
不多说,直接上干货! 前期博客 PLSQL Developer概念学习系列之如何正确登录连接上Oracle(图文详解) 如用scott.scott_password进行登录,orcl是全局数据库 ...
- 修改tnsnames.ora文件中配置内容中的连接别名后,连接超时解决办法
1.tnsnames.ora文件中配置内容中的连接别名:由upaydb修改为IP地址 2.连接超时 定位原因: PLSQL登录界面的数据库列表就是读的tnsname.ora中连接的别名,这个文件中连接 ...
- 【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 ...
- 【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 ...
- 【ORA】ORA-01078和LRM-00109 解决方法
今天切换到asm实例的时候,发现是一个空实例,尝试启动实例,结果报错ORA-01078和LRM-00109 SQL> startupORA-01078: failure in processin ...
随机推荐
- 【Oracle】rman基于时间点恢复
rman基于时间点恢复 场景: 由于某研究的误操作,导致财务模块的数据丢失,如何使用rman基于时间点恢复数据. 思路 1.克隆数据库的虚拟机,直接对数据库的数据进行恢复 RMAN> shutd ...
- WEB测试应该注意哪些地方,怎样才能做好WEB测试
基于Web的系统测试与传统的软件测试既有相同之处,也有不同的地方,对软件测试提出了新的挑战.基于Web的系统测试不但需要检查和验证是否按照设计的要求运行,而且还要评价系统在不同用户的浏览器端的显示是否 ...
- vuex源码分析(二) state及strict属性 详解
state也就是vuex里的值,也即是整个vuex的状态,而strict和state的设置有关,如果设置strict为true,那么不能直接修改state里的值,只能通过mutation来设置 例1: ...
- linux安装redis步骤
1.安装gcc redis是c语言编写的 -- 安装命令 yum install gcc-c++ -- 检查gcc 是否安装 gcc -v 2.下载redis安装包,在root目录下执行 wget ...
- 使用 jQuery.TypeAhead 让文本框自动完成 (三)(服务器返回 JSON 复杂对象数组)
项目地址:https://github.com/twitter/typeahead.js 直接贴代码了: @section headSection { <script type="te ...
- SpringBoot整合kafka(实现producer和consumer)
本文代码使用的是Spring Boot 2.1.8.RELEASE 版本 <parent> <groupId>org.springframework.boot</grou ...
- SATA、PCIe、AHCI、NVMe
IT 界总喜欢发明新名词.而且同一个东西,可能有几个不同的名字.同一个名字,又可能指不同的东西. 从物理接口角度来说,我们常见的有IDE(淘汰),SATA,PCIe,M.2(固态硬盘) M.2插槽是有 ...
- codeforces #579(div3)
codeforces #579(div3) A. Circle of Students 题意: 给定一个n个学生的编号,学生编号1~n,如果他们能够在不改变顺序的情况下按编号(无论是正序还是逆序,但不 ...
- Python语言基础01-初识Python
本文收录在Python从入门到精通系列文章系列 1. Python简介 1.1 Python的历史 Python的创始人为吉多·范罗苏姆(荷兰语:Guido van Rossum) 1989年的圣诞节 ...
- Linux下CPU利用率和负载的关系
1.CPU利用率和负载 CPU利用率显示的是程序在运行期间实时占用的CPU百分比:cpu使用率反映的是当前cpu的繁忙程度,忽高忽低的原因在于占用cpu处理时间的进程可能处于io等待状态但却还未释放进 ...