java编写oracle的存储过程,为什么调用System.in阻塞IO时不起作用?还报错?

[复制链接]
查看11 | 回复0 | 2009-5-6 10:56:00 | 显示全部楼层 |阅读模式
由于项目的需要,需要用java编写oracle的存储过程,在调用System.in 的时候,在eclipse里面是可以的,而放到oracle里面执行就不行了,下面是具体的代码和错误:请有这方面经验的人指教。谢谢!
工具使用PL/SQL Dev,ora9i,oraclejdk1.3
  第一步:创建一个java类:
 SQL> create or replace and compile java source named TestJava as
2import java.io.*;
3public class TestJava
4{
5public static void test() throws IOException
6{
7 String key="";
8 System.out.println("Hello....");
9 try{
10System.out.println("Please Entry Key");
11
BufferedReader reader = new BufferedReader(new InputStreamReader(
12System.in));
13
14key = reader.readLine(); }catch(Exception ex){
16ex.printStackTrace();
17}
18System.out.println("you entry is========="+key);
19
20}
21}
22/
提示结果:
Java created
第二步:把这个类作为一个存储过程:
SQL> create or replace procedure testJava as language java name 'TestJava.test()';
2/
提示结果:
Procedure created
第三步:调用
SQL> SET SERVEROUTPUT ON;
SQL> CALL dbms_java.set_output(2000);
提示结果:
Method called
第四步:执行:
 在command window里输入,exec testJava();
SQL> exec testJava();
得到的结果:
Hello....
Please Entry Key
java.io.IOException
at java.io.FileInputStream.readBytes(FileInputStream.java)
at java.io.FileInputStream.read(FileInputStream.java)
at java.io.BufferedInputStream.read1(BufferedInputStream.java)
at java.io.BufferedInputStream.read(BufferedInputStream.java)
at java.io.FilterInputStream.read(FilterInputStream.java)
at java.io.InputStreamReader.fill(InputStreamReader.java)
at java.io.InputStreamReader.read(InputStreamReader.java)
at java.io.BufferedReader.fill(BufferedReader.java)
at java.io.BufferedReader.readLine(BufferedReader.java)
at java.io.BufferedReader.readLine(BufferedReader.java)
at TestJava.test(TESTJAVA.java:13)
you entry is=========
PL/SQL procedure successfully completed
问题:
为什么 BufferedReader reader = new BufferedReader(new InputStreamReader(System.in));
key = reader.readLine();
执行到这句话的时候会报错,程序没有停下来等待用户输入呢?是不是应为在oracle里面对java的阻塞IO的调用方式不一样呢?不是用System.in这样的?
回复

使用道具 举报

您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

主题

0

回帖

4882万

积分

论坛元老

Rank: 8Rank: 8

积分
48824836
热门排行