【问题标题】:Calling oracle stored procedure from java从java调用oracle存储过程
【发布时间】:2015-09-25 22:51:00
【问题描述】:

我正在从 Java 客户端调用 oracle 中的存储过程。

将长度约为 80 个字符的字符串从 Java 传递到过程参数时出现问题。

虽然它适用于较小的字符串。

抛出的错误是“

数值或数值错误:字符串缓冲区太小"

可能是什么原因?

【问题讨论】:

  • 输入参数的类型是什么?
  • Varun 你的输入参数的数据类型是什么,参数字段的长度是多少?
  • 它是一个 VARCHAR2 类型。我想应该没有问题,
  • 我在 Java 端使用 String。
  • 也许某些东西在您的过程中使用了一个太短的中间变量(或者列的类型太窄)。需要查看过程和涉及的类型才能进一步调试。

标签: java oracle oracle11g


【解决方案1】:

检查您要向其传递此 80 字符字符串的过程中的 IN 参数。看起来您正在尝试将其分配给只能容纳较小字符串的参数。

【讨论】:

  • 您不能指定/限制参数的长度;您只能将类型声明为VARCHAR2,尝试设置像VARCHAR2(80) 这样的长度将无法编译。 (实际上你也可以使用%TYPE 引用,但这也忽略了长度,只使用数据类型)。
  • 由于我在搜索条件中使用该参数,我无法使用 %TYPE,此参数包含搜索查询中使用的 csv 列表。
猜你喜欢
  • 2012-01-27
  • 2017-09-20
  • 2020-11-15
  • 1970-01-01
  • 2013-12-04
  • 2011-04-25
  • 2015-05-22
  • 2017-05-21
相关资源
最近更新 更多