如果查询列数超过1000行,oracle就报错,这是啥原因
Posted
tags:
篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了如果查询列数超过1000行,oracle就报错,这是啥原因相关的知识,希望对你有一定的参考价值。
oracle中如果查询结果集超过1000行会报以下错误:系统报出一SQL异常,内容如下:
java.sql.SQLException: ORA-01795: maximum number of expressions in a list is 1000
解决办法啊:
StringBuffer sb = new StringBuffer();
int inNum = 1; //已拼装IN条件数量
for(int i=0; i<custNOs.length; i++)
if(StringUtil.isEmpty(custNOs[i])) continue;
//这里不要犯低级错误而写成:if(i == custNOs.length)
if(i == (custNOs.length-1))
sb.append("\'" + custNOs[i] + "\'"); //SQL拼装,最后一条不加“,”。
else if(inNum==1000 && i>0)
sb.append("\'" + custNOs[i] + "\' ) OR CUST_NO IN ( "); //解决ORA-01795问题
inNum = 1;
else
sb.append("\'" + custNOs[i] + "\', ");
inNum++;
String selectSQL = "SELECT * FROM CUSTOMER T WHERE T.CUST_NO IN ( " + sb.toString() + " )"; 参考技术A 是这个提示吗?
ORA-01795:列表中的最大表达式数为1000
你是什么情况呢?
写 in 的时候,列表太多?
如果是的话,可以把in中的值拆出来放到数据库表(临时表)中,然后在关联。本回答被提问者和网友采纳
获取 oracle db 中的所有视图以及行数、列数、主键等详细信息
【中文标题】获取 oracle db 中的所有视图以及行数、列数、主键等详细信息【英文标题】:Fetch all views in oracle db along with details like number of rows,columns, primary keys etc 【发布时间】:2020-07-29 10:46:22 【问题描述】:我正在尝试编写一个查询以检索 oracle 数据库中的所有视图以及每个视图的行数、列数和主键数。
我尝试了“all_views”,但它没有提供我需要的东西。
有人可以帮我解决这个问题吗?
提前致谢
【问题讨论】:
视图没有主键,因为它们可以基于多个表。 【参考方案1】:all_views
告诉您视图的名称(您可以访问,系统中可能还有更多)。 all_tab_columns
将为您提供列的名称。正如@GerardH.Pille 指出的那样,视图没有主键。您需要依次对每个视图运行select
以确定它可以返回的行数(请记住,视图可能具有通过会话变量、上下文或其他一些特定于会话的设置进行过滤的逻辑)这样不同的用户或不同的会话可能会得到不同的结果。根据您的系统,这可能会变得相当昂贵。
【讨论】:
以上是关于如果查询列数超过1000行,oracle就报错,这是啥原因的主要内容,如果未能解决你的问题,请参考以下文章
oracle数据库表中某个字段设置为NUMBER(10,2),为啥在页面只能输入6位整数,只有超过6位就报错