发表于:2008.07.24 10:36
分类: oracle
出处:http://li2.itpub.net/post/72/467262
---------------------------------------------------------------
终于,要写oracle 的pl/sql 不能做过程了。其实,要写的东西很简单,就是让oracle 支持简单的正则表达式。你也许知道oracle 10g 已经支持它了,但是很不幸我的数据库是9i。
于是,写了个java
/*java Hello.java */
public class Hello {
public static void he{
system.out.println("Hello world!");
}
public static void main(String[] args) {
he();
}
}
javac Hello.java
java Hello
C:temp>javac Hello.java
C:temp>java Hello
Hello World!
C:temp>loadjava -user abc/def@gis Hello.class
将代码装入数据库
在sql*plus 下运行
create PROCEDURE P_HELLO
as language java name
'Hello.he()';
到测试了
SQL> exec p_hello()
PL/SQL procedure successfully completed.
这里println的输出到了udump下的跟踪文件中,找一下,
*** 2008-07-24 10:19:25.359
Hello World!
这个测试用了好几个小时,中间遇到了一些问题。
1.
dbms_java 丢失
数据库为
Oracle9i Enterprise Edition Release 9.2.0.5.0 - 64bit Production
With the Partitioning, OLAP and Oracle Data Mining options
JServer Release 9.2.0.5.0 - Production
想在数据库上运行一些java 程序,运行loadjava 是有报错
$ loadjava -user abc/def Hello.class
Error while computing shortname of pjavalike/JavaRegular
ORA-06550: line 1, column 13:
PLS-00201: identifier 'DBMS_JAVA.SHORTNAME' must be declared
ORA-06550: line 1, column 7:
PL/SQL: Statement ignored
于是查看数据库,发现dbms_java 包找不到了,dbms_java_test 倒是还在。
itpub 上有处理的方法,
在init.ora中设置java_pool,并停启db
java_pool_size=96m
运行initjavavm.sql必需的对像.
SQL>conn /as sysdba
SQL>@$ORACLE_HOME/javavm/install/initjvm.sql
还没有去试这个脚本,重新找了个数据库做的测试。
2。loadjava 在书上看是推荐用.class 的,但是.java 也是可以的。
还可以在数据库上看到java的源码,方便改动。






