`
hmx1388
  • 浏览: 37060 次
  • 性别: Icon_minigender_2
  • 来自: 杭州
社区版块
存档分类
最新评论

ORACLE存储过程传自定义数组参数问题

阅读更多
问题来自于通过存储过程保存数据时出现以下错误
java.sql.SQLException: 对列来说插入的值太大:"............"
省略号内容超过500个字符。
出错的JAVA程序语句如下:
ParameterArray pArray = getParameterArray(context, base, pro, eid);
cstmt = conn.prepareCall("CALL PKG_GETBUSINESSDATA.ADD_PAYOUTITEM(?, ?, ?)");
cstmt.setObject(1, pArray.getOracleARRAY(conn));
...
程序将要保存的数据放在pArray对象中,然后将pArray对象重新构造成ORACLE的数组类型,过程中的第一个参数是自动定义的数据组类型,其中有个字段content数据特别大,数据库中该content字段长度设置为varchar2(4000)(具我所知),但是在存储过程中却只能保存500个字符,超出就异常。
经检查,原因是ORACLE中自定义的类型有问题,如下:
CREATE OR REPLACE TYPE YSBZ.TYPE_PARAMETER
AS OBJECT(
        NAME                 VARCHAR2(100),        STRVALUE             VARCHAR2(1000))
/
后将STRVALUE改成VARCHAR2(4000)就好了,同时需要调整过程中对应的v_content字段,不然会出现ORA-06502:PL/SQL:数字或值错误:character string buffer too smal
意思是:字符串缓冲区太小
ORACLE的自定义类型修改不了,只好删除重建。
分享到:
评论

相关推荐

    Spring访问传入数组参数的Oracle存储过程

    总的来说,理解如何在Spring中正确地调用Oracle存储过程并传递数组参数是提高应用程序效率和数据库操作灵活性的重要技能。这涉及到了数据库设计、Java编程、Spring框架的使用以及对Oracle特定特性的掌握。通过上述...

    C# 传入自定义列表List 到Oracle存储过程

    本文将详细讲解如何在C#中使用自定义列表(List)作为参数调用Oracle存储过程,以及实现这一功能的关键技术和注意事项。 首先,我们需要了解Oracle数据库中的PL/SQL类型,例如VARCAR2、NUMBER等,它们对应于C#中的...

    oracle存储过程返回多行多列的结构化数组,java调用并解析

    总结来说,本示例展示了如何在Oracle存储过程中定义和使用结构化数组,以及如何在Java中调用这些存储过程并解析返回的多行多列数据。通过这种方式,你可以高效地处理复杂的数据结构,同时利用Java的灵活性来处理这些...

    oracle class12.jar nls_charset12.jar存储过程接收数组空值

    综上所述,"oracle class12.jar nls_charset12.jar存储过程接收数组空值"这个问题的核心在于正确处理数组中的空值,以及理解如何在Java和Oracle数据库之间传递数组参数。通过合理定义数组类型、初始化数组、正确传递...

    Java调用oracle存储过程输出自定义对象或二维表

    本文将深入探讨如何在Java中调用Oracle存储过程,并输出自定义对象或二维表,以此提升数据处理效率。 首先,我们需要理解Java与Oracle数据库的连接方式。Java通过JDBC(Java Database Connectivity)API来实现对...

    c#调用Oracle UDT自定义结构数组类型源代码

    接下来,为了在C#中执行SQL查询或存储过程,我们需要创建一个`OracleCommand`对象,设置其`CommandText`属性,并创建一个`OracleParameter`对象来传递UDT参数。例如: ```csharp using (OracleConnection conn = ...

    java调用存储过程返回数组

    例如,对于输出参数为自定义数组的存储过程`make_logincard_pro`,你需要使用`OracleCallableStatement`的`setArray`和`getArray`方法来设置和获取数组参数。在调用存储过程之前,需要将Java中的数组转换为`Oracle...

    Mybatis调用PostgreSQL存储过程实现数组入参传递

    对于数组参数,我们需要自定义一个`TypeHandler`来处理`int[]`类型。这可以通过实现`TypeHandler`接口或继承`BaseTypeHandler`类完成。例如,我们可以创建一个`IntArrayTypeHandler`,重写`setParameter`和`get...

    Oracle存储过程详细使用手册

    `其中,`procedure_name`是存储过程的名称,`parameter1, parameter2, ...`是存储过程的参数列表,`AS ... BEGIN ... END`是存储过程的执行体。 例如,以下是一个简单的存储过程,它将输入的日期信息打印出来: ```...

    oracle存储过程超详细使用手册

    ### Oracle存储过程超详细使用手册 #### 一、创建存储过程 在Oracle中,存储过程是一种数据库对象,它由一组SQL语句和可选的PL/SQL代码组成,用于完成特定的功能。创建存储过程的基本语法如下: ```sql CREATE OR...

    oracle存储过程及触发器总结

    ### Oracle存储过程及触发器总结 #### 一、Oracle 存储过程概述 在Oracle数据库中,存储过程是一种预先编译好的SQL代码块,它可以接受输入参数、返回单个值或多个值,并能够调用其他存储过程。存储过程在数据库...

    调用存储过程入参出参为自定义对象_支持批量

    根据给定的信息,本文将详细解释如何在Java中通过调用存储过程实现带有自定义对象作为参数的大批量数据处理,并且特别关注了入参为二维数组的批量插入以及出参为自定义对象(二维数组)的情况。此外,还将讨论与...

    oracle 存储过程详解

    下面将详细讲解Oracle存储过程的创建、变量赋值、判断语句、循环结构以及数组的使用。 1. 创建存储过程 存储过程的创建使用`CREATE OR REPLACE PROCEDURE`语句,如示例所示,定义输入参数(IN)、输出参数(OUT)或...

    oracle存储过程-函数-语法-大全-详解.pdf

    Oracle存储过程是数据库管理系统中的一种重要工具,它允许开发者编写一系列复杂的SQL和PL/SQL语句,形成可重用的代码块。以下是对标题和描述中提到的Oracle存储过程相关知识点的详细说明: 1. 创建存储过程:使用`...

    Oracle存储过程超详细使用手册

    Oracle 存储过程超详细使用手册 Oracle 存储过程是一种强大的数据库工具,它可以将...通过本手册,读者可以学习到 Oracle 存储过程的使用方法,包括创建存储过程、变量赋值、判断语句、循环语句、数组等多方面的内容。

    oracle存储过程_函数_语法_大全_详解

    ### Oracle存储过程、函数语法详解 #### 一、概述 Oracle数据库系统因其高效的数据处理能力,在企业级应用中被广泛采用。存储过程和函数作为Oracle数据库的重要组成部分,可以帮助开发人员编写更加灵活、高效的...

    oracle存储过程+触发器.docx

    Oracle存储过程和触发器是数据库管理系统中用于执行特定任务的预编译代码块,它们在Oracle数据库中扮演着重要角色。下面将详细解释这些概念及其使用方法。 1. **创建存储过程** 创建存储过程的基本语法是: ```...

Global site tag (gtag.js) - Google Analytics