java - 通过 JDBC 运行 PL/SQL 和 T-SQL

标签 java tsql jdbc plsql

我想知道通过 JDBC 运行 PL/SQL 或 T-SQL 代码块的最佳方式是什么。

更具体地说 - 应该使用什么 JDBC API 来执行返回 ResultSet 的 PL/SQL 或 T-SQL block ?

更新:

更具体地说——我有一个通用代码,它接收 SQL 代码(可能是 SQL、PL/SQL 或 T-SQL)作为输入,根据所需的数据库加载适当的 JDBC 驱动程序,并执行给定的 SQL 代码如下:

  Statement stmt = conn.createStatement (); 
  ResultSet rs = stmt.executeQuery("BEGIN some code END SELECT * FROM MY_TABLE");
  while (rs.next ()) {
     System.out.println (rset.getString (1));
  }

当使用一些 T-SQL 或 PL/SQL 对象(例如游标)时,这不会返回 ResultSet

因此,我想知道这个 JDBC API 是否是执行此类查询的最佳方式。如果是,那么我正在使用的特定 JDBC 驱动程序实现中一定存在错误。

最佳答案

CallableStatement 通常是可行的方法。此链接给出了如何在 Oracle 中执行此操作的示例:

Using Cursor Variables

请注意,您得到的是 Cursor,而不是 ResultSet

在 T-SQL(我不太了解)中,带有 executeQueryCallableStatement 应该可以按预期工作,请参阅此链接:

JDBC: CallableStatement

关于java - 通过 JDBC 运行 PL/SQL 和 T-SQL,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/34767120/

相关文章:

java - 如何正确设置 gradle 命令输出编码?

java - 如何将变量从主方法类转移到另一个类?

java - TableLayout - 删除列之间的空间

java - 迭代 JDBC 结果集重复上次迭代的结果

java - 如何一次性获取数据

java - 为 Flex/BlazeD 设置多种 channel 类型 (AMF/AMFX)

sql - 动态SQL生成列名?

sql-server - 将单个列连接到逗号分隔的列表中

sql-server - 如何将表移动到 T-SQL 中的架构中

java - c3p0 Prepared Statement 无明显原因关闭