WebService调用oracle存储过程,传入数组参数
在oracle中,首先定义了一个TYPE,结构是这样的 CREATE OR REPLACE TYPE transfer_type IS object ( TDOCNo CHAR(20), TDOCLineNo NUMBER, FMCustomerID VARCHAR2(30), FMSKU VARCHAR(12), Qty NUMBER(6), FMLot VARCHAR2(3), Tolot VARCHAR2(3) ) 然后又定义了一个如下: CREATE OR REPLACE TYPE transfer_type_array IS TABLE OF transfer_type 存储过程需要传入一个transfer_type_array类型的参数进去 sp_wms_transfer(ac_s_billno IN CHAR, av_customerID IN VARCHAR2, ad_transferTime IN DATE, av_mdf_id IN VARCHAR2, ad_mdf_date IN DATE, transfer_type_array_list transfer_type_array, rtn_code OUT NUMBER, rtn_mess OUT VARCHAR2) is 关于这个transfer_type_array类型的参数,我的WebService如何调用这个存储过程,参数怎么传? 还有,别人调用我的WebService的话,应该传给我什么类型的参数?
最满意答案
1. 去oracle官网上下载dbws-callout-utility-10131.zip 2. 解压后放到oracle安装目录下的/sqlj/lib中; 3. 检查数据库中有多少个java_class语句 select * from User_Objects t where t.object_type like '%JAVA_CLASS%' ; 4.导入java或jar 参数说明: 在cmd命令行中利用loadjava命令(一般安装完jdk或oracle之后就会有,jar包必须为绝对地址)将jar包导入oracle对应的用户(必须是本地用户)中: loadjava -u nsxydjdba/nsxydj123@orcl -o -r -v -f -genmissing -s -grant public D:\app\Administrator\product\11.2.0\dbhome_1\sqlj\lib\dbwsclientws.jar; loadjava -u nsxydjdba/nsxydj123@orcl -o -r -v -f -genmissing -s -grant public D:\app\Administrator\product\11.2.0\dbhome_1\sqlj\lib\dbwsclientdb11.jar; SYS用户,命令为: loadjava -u sys/sys -o -r -v -f -genmissing -s -grant public D:\app\Administrator\product\11.2.0\dbhome_1\sqlj\lib\dbwsclientws.jar; loadjava -u sys/sys -o -r -v -f -genmissing -s -grant public D:\app\Administrator\product\11.2.0\dbhome_1\sqlj\lib\dbwsclientdb11.jar; -o 使用OCI8 JDBC接口 -v 显示执行过程 -f 强制装载 -r 编译并解析类 5.如果未发现UTL_DBWS(可以在plsql中敲入sys.若未有utl_dbws显示,则需要进行初始化),需要运行之前下载的包中dbws-callout-utility- 10131/sqlj/lib/ utl_dbws_body.sql及utl_dbws_decl.sql(在sys用户下) 6. 编写sql函数并发布(可能博客显示不全,可参见官方实例:打开等一会可显示 http://www.oracle-base.com/articles/10g/utl_dbws-10g.php) 7.看结果select FUNC_Webservice('1234567','xxxxxx') from dual;更多推荐
发布评论