运行选择查询时 SQL 出错



我运行了这个查询:

Select * from users where user_id=20;

并得到此错误:

ORA-00997: illegal use of LONG datatype
00997. 00000 -  "illegal use of LONG datatype"
*Cause:    
*Action:
Error at Line: 6 Column: 37

我想知道为什么会发生这种情况以及对此的正确查询。

您已经创建了user_id定义为long数据类型的表。与 C/Java/等不同,long在 Oracle 中不是数字类型:

LONG列存储可变长度的字符串,最多包含 2 GB -1 或 231-1 字节。LONG列具有VARCHAR2列的许多特征。可以使用LONG列来存储长文本字符串。

当 Oracle 尝试将字符串值隐式转换为数字以与数字 20 进行比较时,您会收到错误。虽然这适用于varchar2列,但long数据类型有很多限制 - 甚至不应该用于长字符串,这应该是 CLOB。

如果你的列包含数值,那么它应该声明为number,并且对于 ID 列,可能number(38)使其成为整数。

最新更新