无效的模式名称; 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 存储过程输入参数的主要内容,如果未能解决你的问题,请参考以下文章

oracle中怎么执行带有输出参数的存储过程,在程序中我知道怎么调用,

oracle中怎么执行带有输出参数的存储过程,在程序中我知道怎么调用,

oracle带参数的存储过程,一直提示sql无效sql语句。求高手指点

Oracle存储过程的语法分析

尝试传递自定义 oracle 类型对象映射时的名称模式无效

Oracle 的 EXECUTE IMMEDIATE 与存储过程中的 LIKE 子句