如何在执行查询时在JDBC中的preparedStatement中设置in子句的值.
例:
connection.prepareStatement("Select * from test where field in (?)");
Run Code Online (Sandbox Code Playgroud)
如果此子句可以包含多个值,我该怎么做.有时我事先知道参数列表,有时我事先不知道.如何处理这种情况?
这个问题与我的原始问题有关如何将数组从Java返回到PL/SQL?,但更具体.
我一直在阅读Oracle数据库JDBC开发人员指南和
但我仍然无法编写最小代码,我可以使用它来创建ARRAY
ARRAY array = oracle.jdbc.OracleConnection.createARRAY(sql_type_name, elements);
Run Code Online (Sandbox Code Playgroud)
按照创建ARRAY对象中的说明进行操作.
我正在使用Oracle数据库JVM.
我试过以下:
例1
create or replace type widgets_t is table of varchar2(32767);
/
create or replace and compile java source named "so20j1" as
public class so20j1 {
public void f1() {
String[] elements = new String[]{"foo", "bar", "zoo"};
oracle.sql.ARRAY widgets =
oracle.jdbc.OracleConnection.createARRAY("widgets_t", elements);
}
};
/
show errors java source "so20j1"
Run Code Online (Sandbox Code Playgroud)
失败:
Errors for JAVA SOURCE "so20j1":
LINE/COL ERROR
-------- ----------------------------------------------------------------- …
Run Code Online (Sandbox Code Playgroud) 我目前正在学习 PL/SQL,所以我还是一个新手。假设您有一个生产数据库,并使用 Oracle SQL Developer 连接到该数据库。您对该数据库仅有读取权限。因此您无法创建或编辑任何表。
我的问题是,如果我有一个很大的 ID 列表,我必须将其与该数据库中的表连接起来,我该怎么做?
显然,我可以将 ID 加载到临时表中,然后进行联接,但这确实很乏味,因为我只有读取权限。对 ID 进行硬编码也不是一种选择,因为列表太大。
另请注意,我知道临时表的概念。但不幸的是,我也没有创建这些的权限。
SQL Developer 中是否有任何解决方案可以加载 ID 列表,以与数据库中的表相匹配?