无效的模式名称; Oracle 存储过程输入参数
Posted
技术标签:
【中文标题】无效的模式名称; Oracle 存储过程输入参数【英文标题】:Invalid Pattern name; Oracle Stored Procedure Input Parameter 【发布时间】:2014-07-31 17:07:11 【问题描述】:我有一个 JDBC 程序,它使用 CallabaleStatement
对象来设置和注册存储过程的 IN/OUT 参数。
我使用了ArrayDescriptor
s 和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
对象。我已经检查了数据类型CharArray1
的package-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中怎么执行带有输出参数的存储过程,在程序中我知道怎么调用,