oracle调用JAVA存储过程出错

ydy4618 2010-06-10 03:39:31
在网上找到资料,模仿人家的步骤,先定义了一个Main.java文件,将程序参数写入一个已有文件中
import java.io.BufferedReader;
import java.io.File;
import java.io.FileNotFoundException;
import java.io.FileReader;
import java.io.FileWriter;
import java.io.IOException;

/**
*
* @author
*/
public class Main {

/**
* @param args the command line arguments
*/
public static void main(String args) {
// TODO code application logic here

String datas = "/home/oracle/test.txt";
File data = new File(datas);
try {
StringBuffer content = new StringBuffer();
content.append("Hello");
content.append(args);
FileWriter writer = new FileWriter(data,true);
writer.write(content.toString());
writer.flush();

} catch (FileNotFoundException e) {
e.printStackTrace();
} catch (IOException e) {
e.printStackTrace();
}

}

}

然后使用loadjva -user user/pass@test -o -v -f -r /home/oracle/Main.java
提示导入JAVA程序成功

然后在sqlplus里创建一个存储过程
create or replace procedur file_test(name varchar2) as language java name 'Main.main(java.lang.String)';
/

这个时候出现 Warning:procedure created with compilation errors.

执行 show errors procedure file_test;
得到
0/0 PL/SQL:Compilation unit analysis terminated
1/55 PLS-00311:the declaration of "Main.main(java.lang.String)" is incomplete or malformed

不知道原因在什么地方啊
...全文
88 6 打赏 收藏 转发到动态 举报
写回复
用AI写文章
6 条回复
切换为时间正序
请发表友善的回复…
发表回复
ydy4618 2010-06-10
  • 打赏
  • 举报
回复
不过楼上提醒了我一下
虽然是只可以自定义函数,但是main函数不能做为普通函数的函数名
将main函数名字换成别的函数名就可以了。

晕倒
ydy4618 2010-06-10
  • 打赏
  • 举报
回复
[Quote=引用 4 楼 ivorytower 的回复:]
引用楼主 ydy4618 的回复:
public static void main(String args) {

你程序这句是不是你笔误了?
要写成

Java code

public static void main(String[] args) {
[/Quote]

不是的,这个不像严格的JAVA程序,不需要main(String[] args)做为入口函数,是可以只定义普通函数的
  • 打赏
  • 举报
回复
[Quote=引用楼主 ydy4618 的回复:]
public static void main(String args) {
[/Quote]
你程序这句是不是你笔误了?
要写成

public static void main(String[] args) {
jypapgl 2010-06-10
  • 打赏
  • 举报
回复
mark 10 fen
ydy4618 2010-06-10
  • 打赏
  • 举报
回复
这个是发帖的时候的笔误
笔误
Java技术栈 2010-06-10
  • 打赏
  • 举报
回复
create or replace procedur file_test(name varchar2) as language java name 'Main.main(java.lang.String)';
/

很明显 procedur 少了个e 改为 procedure

62,614

社区成员

发帖
与我相关
我的任务
社区描述
Java 2 Standard Edition
社区管理员
  • Java SE
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

试试用AI创作助手写篇文章吧