使用CALL格式在顶级调用:
| >CALL prepend_hello(‘BILL') INTO :x;\ |
在PL/SQL过程、包或匿名块的内部,使用与调用其它PL/SQL过程一样的语法调用:
| >DECLARE emp_name VARCHAR; BEGIN… emp_name := prepend_hello(‘BILL'); … END; |
从一个实例的方法内部,可以调用Oracle对象的方法,从而调用底层的Java实现:
| select pt.p, pt.p.jdistance(point(0, 0)) from point_table pt; |
最后,既然所有发布的Java子程序,对SQL和PL/SQL来说,都仿佛是一个PL/SQL子程序[内部用Java实现的子程序],那么一个Java子程序就能透明地参与到PL/SQL子程序所发起的服务器到服务器的RPC调用当中,也能参与到远程数据库服务器的SQL发出的分布式事务当中。
Java 程序如何访问SQL和PL/SQL?
Java 应用程序使用标准的JDBC语法或SQLJ语法访问SQL和PL/SQL。Oracle8i 提供了内嵌的JDBC驱动程序和内嵌的SQLJ 转换器,它们都提供了与Oracle客户端JDBC驱动程序及SQLJ转换器相同的功能,其中包括对所有Oracle专有数据类型的支持(例如ROWID、REFCursors、及Oracle8对象关系类型)。例如,有这样一个用PL/SQL编写的存储函数prepend_hello。要通过JDBC在Java程序里调用这个存储过程,我们使用下面的标准JDBC语法:
| public class StaticCurJDBC { … public static String get() throwsSQLException, CoreException { DriverManager.registerDriver(new OracleDriver()); Connection con=DriverManager.getConnection("jdbc:oracle:kprb:"); Statement stmt = con.createStatement(); ResultSet rs = stmt.executeQuery("SELECT prepend_hello(ENAME) FROM EMP); … } |
评论加载中…
![]() |