java - 尝试使用 Java 运行 PL/SQL 脚本

标签 java oracle jdbc plsql

我熟悉 Java JDBC,经常使用它来运行简单的 SQL。但是,我想运行如下所示的内容。这比常规 SQL 更多的是 PL/SQL,因此我的问题。我不是从 Oracle 机器上运行它,而是从我自己的计算机上运行。有人可以帮助我使用 Java 运行这种 PL/SQL 吗?

spool C:\count.txt;
DEFINE date="TO_DATE ('08-29-2011','mm-dd-yyyy')";
SET NEWPAGE 0;
SET SPACE 0;
SET LINESIZE 500;
SET PAGESIZE 0;
SET ECHO OFF;
SET FEEDBACK OFF;
SET VERIFY OFF;
SET HEADING OFF;
SET TRIMSPOOL ON;
alter session set nls_date_format='yyyy-mm-dd hh24:mi';
select 'TABLE1', count(*) from SCHEMA.TABLE1 where modifyts < &date;
select 'TABLE2', count(*) from SCHEMA.TABLE2 where modifyts < &date;
select 'TABLE3', count(*) from SCHEMA.TABLE3 where modifyts < &date;
spool off;

最佳答案

SPOOLDEFINESET 都是 SQL*Plus 命令。它们在 PL/SQL 或 SQL 中无效。因此,您不能通过 SQL*Plus 以外的工具(或支持 SQL*Plus 命令的工具,如 SQL Developer 或 Toad)运行此类脚本。

当然,您可以让 Java 应用程序调用操作系统来调用 SQL*Plus 可执行文件(假设它安装在运行 Java 应用程序的机器上)并将脚本传递给 SQL*Plus .但这通常比您需要的复杂得多。仅使用 SQL*Plus 或仅从您的 Java 应用程序发出 SELECT 语句并使用 Java 的文件 I/O 类将结果写入文件会更有意义。

关于java - 尝试使用 Java 运行 PL/SQL 脚本,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/7338311/

相关文章:

oracle - clob 数据类型导致性能问题

sql - Oracle SQL约束问题

java - 在运行时在 Eclipse 中查找依赖包

java - 使用 Gradle for Java 插件生成 Java 类

java - TextSwitcher 重力底部中的 TextView 无法工作

Java 输入中最长的单词

oracle - 我可以在哪些数据类型上使用 Oracle PL/SQL RANGE 子句来约束变量?

java - 准备好的语句仅检索第一行

java - 检索数据时保证缓存命中

hadoop - [Simba][ImpalaJDBCDriver](500051) 处理查询/语句时出错