相关疑难解决方法(0)

SQL IN条款1000项限制

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

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

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

sql oracle

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

如何修复已弃用的oracle.sql.ArrayDescriptor,oracle.sql.STRUCT和oracle.sql.StructDescriptor

我使用下面的JDBC代码来调用一个带有Array输入的Oracle存储过程.

但是以下三个类已被弃用.如何更换?

import oracle.sql.ArrayDescriptor;
import oracle.sql.STRUCT;
import oracle.sql.StructDescriptor;
Run Code Online (Sandbox Code Playgroud)

Java代码

        Object[] reportArray = new Object[3]; 
        STRUCT[] struct = new STRUCT[reports.size()];

        ArrayDescriptor arrayDescriptor = new ArrayDescriptor(new SQLName("T_REPORT_TABLE", (OracleConnection) connection), connection);
        StructDescriptor structDescriptor = StructDescriptor.createDescriptor("R_REPORT_OBJECT", connection);

        int arrayIndex = 0;
        for (Report data : reports) {
            reportArray[0] = data.getXXX();
            reportArray[1] = data.getYYY();
            reportArray[2] = data.getZZZ();

            struct[arrayIndex++] = new STRUCT(structDescriptor, connection, reportArray);
        }

        oracle.sql.ARRAY reportsArray = new oracle.sql.ARRAY(arrayDescriptor, connection, struct);
        callableStatement.setArray("T_REPORT_IN", reportsArray);

        callableStatement.executeUpdate();
Run Code Online (Sandbox Code Playgroud)

java oracle stored-procedures deprecated

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

尝试将数组传递给预准备语句时,Oracle jdbc"createArray"会抛出"不支持的功能"异常

我试图通过createArrayOf将数组传递给我准备好的语句

val prep: PreparedStatement = con.prepareStatement("select * from SOA_WEB_USER.VOPEX where CMF_PPK_NBR in (?)")

val array :Array[Object]=Array("1165006001","1165006002")

val sqlArray = con.createArrayOf("VARCHAR",array) //getting the exception here 

prep.setArray(1,sqlArray)

val rs = prep.executeQuery()

while (rs.next()) {

    println(rs.getObject(1))

}
Run Code Online (Sandbox Code Playgroud)

但createArrayOf方法抛出一个错误说

Exception  thread "main" java.sql.SQLFeatureNotSupportedException:Unsupported feature   
at Oracle.jdbc.driver.PhysicalConnection.createArrayOf(PhysicalConnection.java:8707)
at com.testpackage.Main$.main(Main.scala:109)
at com.testpackage.Main.main(Main.scala)    
at sun.reflect.NativeMethodAccessorImpl.invoke0(Native Method)  
at sun.reflect.NativeMethodAccessorImpl.invoke(NativeMethodAccessorImpl.java:62)
at sun.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:43)
at java.lang.reflect.Method.invoke(Method.java:498)     
at com.intellij.rt.execution.application.AppMain.main(AppMain.java:147)
Run Code Online (Sandbox Code Playgroud)

我正在使用ojdbc7.jar进行jdbc连接.有什么我可以采取不同的方式将数组传递给准备好的语句吗?

java oracle scala jdbc

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

PL/SQL - 在Where子句中使用"List"变量

在PL/SQL中,如何声明包含多个值的变量MyListOfValues(MyValue1,MyValue2等)

SELECT * 
FROM DatabaseTable 
WHERE DatabaseTable.Field in MyListOfValues
Run Code Online (Sandbox Code Playgroud)

我正在使用Oracle SQL Developer

oracle plsql

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

如何在oracle SQL中从dual中选择10,000个唯一id的列表

所以我无法创建或编辑表(我是具有只读权限的用户)并且我想查找 10,000 个唯一 ID。我无法将它们放在 IN() 语句中,因为 oracle 限制超过 1000 个项目。

是否可以从 oracle 中的 DUAL 表中选择整个列表?就像是:

select  
'id123,id8923,id32983,id032098,id308230,id32983289'  
from DUAL
Run Code Online (Sandbox Code Playgroud)

sql oracle dual-table

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

Oracle SQL - 从给定字符串形成一个虚拟表以与另一个表连接

有没有.字符串.

让我们说吧'foo', 'bar', 'chi', 'xyz', 'moo'.

我想形成一个虚拟表,比如说X用于与另一个表连接,比如Y,其中一个列中包含那些字符串,即名称.尝试通过运行以下查询来提取数据.

select Y.name, Y.age from(**select ('foo', 'bar', 'chi', 'xyz', 'moo') as name**) X left join Y on X.name = Y.name;

我知道**中的文本不是正确的SQL语法,但寻找类似于必须在Oracle SQL中运行查询的东西.

任何建议或想法最受欢迎.

sql oracle

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

Oracle IN运算符中使用JPA和100​​0 ID

我使用NamedNativeQuery删除行,它是这样的:

DELETE from FAKTOR
 where ID IN (
   select fa.ID
   from FAKTOR fa
     left join FAKTOR_REASON fars
       on fa.FARS_ID = fars.ID
   where fars.ID = 63
         and fa.USER_ID in (:userIds))
Run Code Online (Sandbox Code Playgroud)

但是我如何在Oracle的IN运算符中使用1000多个userIds呢?

PS:我正在寻找一个解决方案,在一次提交中处理它;

java oracle hibernate jpa oracle11g

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

在列中显示LIKE条件匹配

我有一个类似的查询:

SELECT fname, lname
FROM names
WHERE gcode LIKE %5536% OR fname LIKE %3663%
Run Code Online (Sandbox Code Playgroud)

有50个这样的条件,条款有点长,但这是一般的想法.我们不能制作临时表,所以这就是我们要走的路.

我试图返回输出在其自己的列中匹配的类似条件(即,已%5536%在其自己的列中返回)

我可以通过编程方式突出显示它,但有没有办法在SQL中执行此操作?

sql oracle wildcard

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