oracle存储过程字符串数组参数得不到值?

问题描述

应用程序传递到oracle存储过程的字符串数组参数得不到值,都是空值。但是number数组没有问题?请问各位兄弟姐妹,有什么解决的办法?下面是我的代码:/**自定义number数组**/createorreplacetypearray_numistableofnumber;/**自定义varchar2数组**/createorreplacetypearray_varchar2_50istableofvarchar2(50);/**测试存储过程**/createorreplaceproceduretestArray(resNumberinarray_varchar2_50,a_numinarray_num,procResultoutarray_varchar2_50)isbeginprocResult:=newarray_varchar2_50();foriin1..resNumber.CountloopprocResult.EXTEND;procResult(i):=resNumber(i)||'-'||a_num(i)||'-lucifer'||i;endloop;end;/**java调用**/OracleConnectionconn=null;OracleCallableStatementstmt=null;String[]param={"1001","1002","1006"};Integer[]num={1,2,3};stmt=(OracleCallableStatement)con.prepareCall("{calltestArray(?,?,?)}");//类型名必须大写ArrayDescriptordescriptor=ArrayDescriptor.createDescriptor("ARRAY_VARCHAR2_50",con);ArrayDescriptordescriptorNUM=ArrayDescriptor.createDescriptor("ARRAY_NUM",con);stmt.setArray(1,newARRAY(descriptor,con,param));stmt.setArray(2,newARRAY(descriptorNUM,con,num));stmt.registerOutParameter(3,OracleTypes.ARRAY,"ARRAY_VARCHAR2_50");stmt.execute();ARRAYarray=stmt.getARRAY(3);Datum[]data=array.getOracleArray();for(inti=0;i<data.length;i++){System.out.println(i+":"+newString(data[i].shareBytes()));}

解决方案

解决方案二:
该回复于2009-08-18 21:53:52被版主删除

时间: 2024-07-30 00:09:27

oracle存储过程字符串数组参数得不到值?的相关文章

weblogic连接池-Java调用Oracle存储过程传入数组参数报错

问题描述 Java调用Oracle存储过程传入数组参数报错 weblogic连接池 JNDI提供的链接保存 Oracle数组 报错 oracle.jdbc.driver.T4CConnection cannot be cast to oracle.jdbc.OracleConnection oracle.jdbc.driver.T4CConnection cannot be cast to oracle.jdbc.OracleConnection 大家好,我在用weblogic连接池 JNDI

oracle11g-C#向Oracle存储过程传递数组参数

问题描述 C#向Oracle存储过程传递数组参数 自定义类型:create or replace TYPE COL AS VARRAY(100) OF varchar2(100); 存储过程:create or replacePROCEDURE CreateModelTable(tableName VARCHAR2colName COLcolType COLsqlflag OUT VARCHAR2) C#传参语句: OracleParameter pColName = new OraclePar

oracle存储过程返回数组的方法

oracle 存储过程返回数组的方法: 1.建立包 create or replace package test isTYPE filename_array IS TABLE OF varchar2(1);filename filename_array;end test; 2. 建立存储过程 create or replace procedure test_array(v_cfjg out test.filename_array ) isbegin DECLARE i number;D_cfjg

C#调用存储过程传递数组参数的问题

问题描述 存储过程在plsql下调试没问题.但是c#执行就报参数或类型不对,麻烦各位帮检查一下.存储过程代码CREATEORREPLACETYPEARR_IDSISTABLEOFNUMBER;CREATEORREPLACEPROCEDUREGET_TESTS(P_IDSINARR_IDS)ASV_IDSARR_IDS:=ARR_IDS();BEGINV_IDS.EXTEND(P_IDS.COUNT);FORiINP_IDS.FIRST..P_IDS.LASTLOOPV_IDS(i):=P_IDS

C# 调用存储过程操作 OUTPUT参数和Return返回值

本文转载:http://www.cnblogs.com/libingql/archive/2010/05/02/1726104.html 存储过程是存放在数据库服务器上的预先编译好的sql语句.使用存储过程,可以直接在数据库中存储并运行功能强大的任务.存储过程在第一应用程序执行时进行语法检查和编译,编译好的版本保存在高速缓存中.在执行重复任务时,存储过程可以提高性能和一致性.由于存储过程可以将一系列对数据库的操作放在数据库服务器上执行,因而可以降低Web服务器的负载,提高整个系统的性能.   1

Informix和Oracle存储过程的异同

建立存储过程的语法: 一.Informix create procedure proc_name( [....in_parameter_list]) returning out_para_list / out_result_set; 二.Oracle create [or replace] procedure procedue_name [ (arg1 [ {in | out | in out }] type (argn [ {in | out | in out }] type,)] {is |

oracle存储过程及oracle的存储

Oracle存储过程包含三部分:过程声明,执行过程部分,存储过程异常. Oracle存储过程可以有无参数存储过程和带参数存储过程. 一.无参程序过程语法 create or replace procedure NoParPro as  ; begin ; exception     //存储过程异常    ; end; 二.带参存储过程实例 create or replace procedure queryempname(sfindno emp.empno%type) as sName emp.

string-Android中程序化加载字符串数组

问题描述 Android中程序化加载字符串数组 我有一个类StringsA,在这个类中有一个字符串列表. public class StringsA {static String Names[] = {""Larry""Moe""Curly""John""}; } 在主类中有一个button和textview.我想实现的是每次当按钮被点击时,textview能用.setText从字符串中调用一个不同的名字.

oracle存储过程-Oracle存储过程 截取字符串循环执行动作 急急急急!

问题描述 Oracle存储过程 截取字符串循环执行动作 急急急急! create or replace procedure PROC_UPDATENEWSKW(newsid in number, kw in varchar2) is i number:=0; begin /** 1.查询标签表(jc_content_tag)是否有相同tag_name的标签,如果有则直接将此条记录的tag_id与newsid 插入jc_contenttag(新闻标签关联表)表/ select count() in