本文详细介绍PL/SQL和Java开发Oracle8i应用程序
SQL语句可以在任何SQL语句内部调用函数。顶级CALL语法使用CALL语句,可以在顶级调用过程和函数。CALL是随Oracle8i新引进的语法。PL/SQL块、子程序、包可以在PL/SQL子程序、包或匿名块里调用它们。请注意:Java存储程序自己可以在匿名的BEGIN … END 块内被调用。触发器的隐式调用。最后,PL/SQL或Java存储过程可以在触发器执行的时候,隐式地被调用。
把JAVA与现存的PL/SQL程序结合
要想理解如何才能把Java 应用程序和现有的PL/SQL存储过程结合起来,我们首先要理解开发Java存储过程的三个步骤:
第一步:编写Java 存储过程:第一步是编写要做成存储过程的Java程序。可以用标准的Java编写,也可以用SQLJ编写?因为存储过程通常都是SQL密集型的,所以用SQLJ编写存储过程,是一个效率较高的方法。
public class Foo {
public static String prependHello(String tail) {
return "Hello " + tail;}}第二步:步署、发布存储过程:用Java开发工具编写完Java程序后,要把它装载进Oracle8i。要用Oracle提供的loadjava命令行工具,以源文件、二进制文件、.class类文件、Java .jar归档文件的形式,把Java程序装载进Oracle8i中的目标数据库大纲。Loadjava是一个Java程序,它用Oracle的JDBC驱动程序连接服务器,自动把一组Java程序装载进服务器。(还可以使用CREATE JAVA这个工具,它是SQL*Plus的SQLDDL命令)
>loadjava -user scott/tiger@oudelsrv-1:5521:ORCL Foo.class命令执行之后,会把类foo的方法装入scott的大纲(请参阅第后面有关Java、SQL和PL/SQL名称的内容,了解命名空间解析的问题)。下一步是,把方法登记到SQL上。这一步为什么是必不可少的呢?如果只用PL/SQL,就没有必要显式地把PL/SQL过程登记到SQL上?对SQL来说,每个PL/SQL过程自动就是可见的。反之,在使用Java的时候,所有的Java方法对SQL来说都是不可见的?要让一个Java方法能够作为存储过程,在SQL里调用它,就必须显式地把它“发布”到SQL当中。Java 类和方法不会自动地发布到数据字典、SQL和PL/SQL里,原因有二:
责编:豆豆技术应用