我收到标题中提到的错误。
我使用的是 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。