JDBC调用的映射类型

时间:2015-09-30 15:19:06

标签: java jdbc

有一个SQL DB有此PROCEDURE

PROCEDURE sendEmail (p_subject IN VARCHAR2,
                     p_sender_name IN VARCHAR2,
                     p_sender_email IN VARCHAR2,
                     p_sub_service IN VARCHAR2,
                     p_recepient_email IN VARCHAR2,
                     p_recepient_name IN VARCHAR2,
                     p_template_name IN VARCHAR2,
                     p_template_variables IN t_fields,
                     p_template_locale IN VARCHAR2,
                     p_success OUT BOOLEAN,
                     p_message OUT VARCHAR2);

t_fields类型的定义如下:

TYPE t_fields IS TABLE OF VARCHAR2(2000) INDEX BY VARCHAR2(100);

我使用JDBC来调用该过程,我知道我需要连接和callStmt,但我不确定如何处理t_fields参数映射。有什么指针吗?

1 个答案:

答案 0 :(得分:1)

t_fields是一个关联数组。可以把它想象成PL / SQL定义数组的方式。

无法从java调用所有PLSQL数组。数组需要在数据库中的SCHEMA级别创建为TYPE,然后它可以与Java中的ArrayDescriptor一起使用,因为Java中的oracle.sql.ArrayDescriptor类无法在包级别访问。

以下链接介绍了如何操作:

http://viralpatel.net/blogs/java-passing-array-to-oracle-stored-procedure/