相关疑难解决方法(0)

是否有ORA-01795的解决方法:列表中的最大表达式数是1000错误?

是否有解决方法

'ORA-01795: maximum number of expressions in a list is 1000 error'

我有一个查询,它是根据一个字段的值选择字段.我使用的是in子句,有10000多个值

例:

select field1, field2, field3 
from table1 
where name in 
(
'value1',
'value2',
...
'value10000+'
);
Run Code Online (Sandbox Code Playgroud)

每次我执行查询时,我都会得到ORA-01795: maximum number of expressions in a list is 1000 error.我试图在TOAD中执行查询,没有区别,同样的错误.如何修改查询以使其工作?

提前致谢

sql toad

65
推荐指数
6
解决办法
12万
查看次数

SQL IN条款1000项限制

可以在SQL IN子句中放置1000多个项目吗?我们的Oracle数据库无法解决问题.

如果是,我们如何在SQL IN子句中放置超过1000个项目?

如果没有,我还能做什么?

sql oracle

47
推荐指数
3
解决办法
8万
查看次数

如何将"数组"值传递给我的存储过程?

我希望能够将值的"数组"传递给我的存储过程,而不是串行调用"添加值"过程.

任何人都可以建议一种方法吗?我在这里错过了什么吗?

编辑:我将使用PostgreSQL/MySQL,我还没有决定.

mysql database arrays postgresql stored-procedures

14
推荐指数
2
解决办法
4万
查看次数

Java JDBC - 多个预准备语句批量插入

使用JDBC(Oracle)我需要在两个表中的每一个中插入大约一千行.像这样的东西:

"INSERT INTO TABLE_A (A_ID, A_NAME, A_LAST_NAME) VALUES (MY_SEQUENCE.NEXTVAL, ?, ?)";
"INSERT INTO TABLE_B (B_ID, B_DESCRIPTION) VALUES (MY_SEQUENCE.CURRVAL, ?)";
Run Code Online (Sandbox Code Playgroud)

问题是两个表都是通过共同的顺序连接的,因此语句的顺序很重要.

如果我只有一张桌子就很容易了.在那种情况下,我使用了代码:

String insert = "Insert into TABLE_A(A_ID, A_NAME, A_LAST_NAME) values(MY_SEQUENCE.NEXTVAL, ?, ?)";
conn.setAutoCommit(false);
PreparedStatement ps = conn.prepareStatement(insert);
for(MyObject obj : myCollection) {
    ps.setString(1, obj.getName());
    ps.setString(2, obj.getLastName());
    ps.addBatch();
}
ps.executeBatch();
conn.commit();
ps.close();
Run Code Online (Sandbox Code Playgroud)

但是这种方法只能使用一个准备好的语句,因此只能使用一个插入.我该如何为这个问题提供解决方案?

java jdbc prepared-statement

13
推荐指数
1
解决办法
3万
查看次数

带有 jpql 的 IN 子句的最大集合元素数

我想知道使用 IN 子句时集合的大小是否有限制。

select a from A where ab IN (:c)

c 是一个列表(例如)。

sql jpql

5
推荐指数
1
解决办法
3673
查看次数

不能在IN Expression CFQUERY中放置超过1000个元素

在Oracle中,我们可以放入"in"表达式中的元素数量限制为1000.我们的代码中有一个查询:

<cfquery>
SELECT * from table1 where ID IN (#somelist#)
</cfquery>
Run Code Online (Sandbox Code Playgroud)

#somelist#是CF列表变量.

什么是解决这个问题的CF最合适的解决方案?

sql oracle coldfusion

3
推荐指数
2
解决办法
2131
查看次数

ORA-00907:创建varray时缺少右括号

在我的程序中,有很多情况需要获取有关知道ID的其他信息.所以我有id列表,其长度可能很长(例如100000个元素).

如何在不使用临时表的情况下使用此列表并在oracle中传输以获取sql?

不,我尝试使用集合:

CREATE TYPE TEST_VARRAY IS VARRAY(5000) OF NUMBER(18);

SELECT G.ID, G.NAME FROM ANY_TABLE G
WHERE G.ID IN
(
SELECT COLUMN_VALUE FROM TABLE(
NEW TEST_VARRAY
(0,1,2,3... and so on ...,995,996,997,998,999)
)
);
Run Code Online (Sandbox Code Playgroud)

有1000个号码.当我尝试执行此查询时,ORA-00907: missing right parenthesis会出现错误提示!但如果我先删除0(所以我们有999个数字)sql执行正常.

这有什么问题?

oracle

3
推荐指数
1
解决办法
536
查看次数

java.sql.SQLSyntaxErrorException:ORA-01795:列表中的最大表达式数为1000

我们都知道,当尝试使用超过1000个值的bomabard查询时,我们会看到此异常.列限制的最大值是1000 ..最好的解决方案是将查询拆分为两个.你可以建议一些可能的代码重构方法,以使我的问题消失.任何帮助将不胜感激.

audTypeFieldIdList大于1000个值时,我们会看到异常.

try {
        String query = "select AUDIT_TYPE_FIELD_ID, FIELD_NAME from AUDIT_TYPE_FIELD where AUDIT_TYPE_FIELD_ID in (";
        int x = 0;
        for (int y = 1; y <= audTypeFieldIdList.size(); y++) {
            query += audTypeFieldIdList.get(x);
            if (y != audTypeFieldIdList.size()) {
                query += ", ";
            }
            x++;
        }
        query += ")";    



List<Long> audTypeFieldIdList, Connection connection) {          

    ResultSet rs = null;
    Statement stmt = null;
    List<AuditTypeField> audTypeFieldList = new ArrayList<AuditTypeField>();
    try {
        String query = "select AUDIT_TYPE_FIELD_ID, FIELD_NAME from AUDIT_TYPE_FIELD where …
Run Code Online (Sandbox Code Playgroud)

java arrays java-ee oracle-sqldeveloper angularjs

2
推荐指数
1
解决办法
4953
查看次数

如何在IN条件下使用超过1000个值?

我正在使用java.我在对象级别有2000个键值,并且必须从DB中获取该值的相应记录.我在这里找到了临时表建议 ,但是它不会影响性能吗?如何在单个镜头中插入这些值,以便减少数据库调用次数?

sql oracle in-clause

0
推荐指数
1
解决办法
1035
查看次数