我收到标题中提到的错误。
我使用的是 36 个字符的 ID。此错误仅在我的 asp.net webform 中的 sqldatasource 中引发。当我在Oracle sql developer
.
我怎样才能解决这个问题?
我收到标题中提到的错误。
我使用的是 36 个字符的 ID。此错误仅在我的 asp.net webform 中的 sqldatasource 中引发。当我在Oracle sql developer
.
我怎样才能解决这个问题?
Oracle 支持最多 30 个字符的标识符,并且您的标识符长度36
大于此长度。因此,使其长度为 30 个字符。
看到这个链接
如果您从另一个环境(例如 SQL Developer)成功执行 DML(UPDATE tableName SET ...),那么您的 asp.net 代码必须以某种方式错误地指定或构造表的名称或表的列名。如果 Oracle 在任何其他检查之前将其中任何一个解析为 >30 个字符,它将抛出此异常。
正如 Srinivas 所指出的,最大长度是 30,因此 36 个字符的标识符不能在 SQL Developer 中工作——你可以发布在 SQL Developer 中“工作”的语句吗?
啊,我明白了 - 这不是 36 个字符长的列名,而是实际数据。很高兴我们清理了那个。
至于“为什么这是从 ASP.NET SqlDataSource 发生的”,我怀疑在某个地方在 ASCII 和 Unicode 之间转换存在问题。NVARCHAR2 是 Unicode,但我怀疑某些东西在 Unicode 世界中表现不佳。检查您的 Web 服务器、您的客户端、您的数据库,以及您能想到的任何东西 - 我怀疑您会发现其中的某个地方有一个 ASCII 客户端,它不能正确地使用 Unicode,并且正在混淆大约 Unicode 字符串的长度(32 个 Unicode 字符占用 64 个字节(假设 UTF-16))。
祝你好运。
SERVICE_ID NVARCHAR2(36) 非空
您的 SQL Developer 是否配置为使用多字节字符集?疯狂的猜测,尤其是我希望抛出ORA-12899: value too large for column
而不是 ORA-00972。