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

时间:2011-09-07 17:53:39

标签: 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;

1 个答案:

答案 0 :(得分:9)

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类将结果写入文件会更有意义。