有一个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参数映射。有什么指针吗?
答案 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/