我收到标题中提到的错误。ora-00972标识符太长oracle 10g
我正在使用36字符标识。这个错误只在我的asp.net webform的sqldatasource中抛出。 当我在Oracle sql developer
中执行更新时,这不是问题。
我该如何解决这个问题?
我收到标题中提到的错误。ora-00972标识符太长oracle 10g
我正在使用36字符标识。这个错误只在我的asp.net webform的sqldatasource中抛出。 当我在Oracle sql developer
中执行更新时,这不是问题。
我该如何解决这个问题?
Oracle支持最多30个字符的标识符,并且您的标识符长度36
大于该值,因此使其长度为30个字符。
看到这个link
如果你成功地从另一种环境中执行的DML(UPDATE表名SET ...),如SQL开发人员,那么你的asp.net代码必须以某种方式指定或构建表的名称或表格的列名称不正确。如果Oracle在任何其他检查之前将它们解析为> 30个字符,它将抛出此异常。
正如Srinivas指出的那样,最大长度是30,所以36个字符的标识符不能从SQL Developer工作 - 您能发布SQL Developer中“工作”的语句吗?
SERVICE_ID NVARCHAR2(36)NOT NULL
配置为使用多字节字符您的SQL Developer设置?疯狂的猜测,特别是因为我期望抛出ORA-12899: value too large for column
而不是ORA-00972。
啊,我明白了 - 它不是那个长度为36个字符的列名,而是实际的数据。很高兴我们清除了一个。关于“为什么这是从ASP.NET SqlDataSource发生的”,我怀疑在这个行的某处有一个在ASCII和Unicode之间转换的问题。 NVARCHAR2是Unicode,但我怀疑某些东西在Unicode世界中播放不好。看看你的网络服务器,你的客户端,你的数据库,任何你能想到的东西 - 我怀疑你会发现在那里有一个ASCII客户端,不会正确地说Unicode,而且会混淆关于Unicode字符串的长度(32个Unicode字符占用64个字节(假设UTF-16))。
好运。
我读到了,但正如我所说我能够从Oracle SQL开发人员更新而不会出现该错误? – Frank 2010-05-07 11:23:45