无效的模式名称; Oracle 存储过程输入参数

Posted

技术标签:

【中文标题】无效的模式名称; Oracle 存储过程输入参数【英文标题】:Invalid Pattern name; Oracle Stored Procedure Input Parameter 【发布时间】:2014-07-31 17:07:11 【问题描述】:

我有一个 JDBC 程序,它使用 CallabaleStatement 对象来设置和注册存储过程的 IN/OUT 参数。

我使用了ArrayDescriptors 和oracle.sql.ARRAY 对象并将其设置为用户定义数据类型的输入参数。

用户定义的数据类型是TYPE CharArray1 IS TABLE OF CHAR(7)。在执行错误期间,我收到“无效的模式名称我的对象”。

我通过以下方式设置输入:

ArrayDescriptor ad = ArrayDescriptor.createDescriptor("<package-name>.CharArray1", conn);
ARRAY arr = new ARRAY(ad, conn, new String[]"1");
callableStatement.setArray(3, arr );

其中conn 是我的Connection 对象。我已经检查了数据类型CharArray1package-name 的执行权限。我已删除包名并检查,错误仍然相同。

提前致谢。请告诉我我在这里做错了什么。

【问题讨论】:

【参考方案1】:

尝试将CHAR 切换为 VARCHAR2(7 char)

【讨论】:

我的功能需要它是table of char(7)。我无法更改数据库。我需要让 Java 代码跟上。 但是你只发送了1个字节,尝试添加6个空格。当您完成项目阅读一些 Thomas Kyte 书籍时,他希望我们不要使用 CHAR 类型而不是 VARCHAR2 类型。没有优势。 不一定每次都加1。例如,字符数可以是“12345”。 无论如何你必须注意你传递了 7 个字节(不是字符,一个字符可以占用几个字节)并在必要时添加空格。 同意我会照顾的。得出的值肯定不会超过 7 个字节。但是,我觉得这不是这里的问题。我想知道,我将参数传递给 CallableStatement 的方式是否有任何变化。

以上是关于无效的模式名称; Oracle 存储过程输入参数的主要内容,如果未能解决你的问题,请参考以下文章