Warning: file_get_contents(/data/phpspider/zhask/data//catemap/8/file/3.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
SQL在运行select查询时出错_Sql_Oracle - Fatal编程技术网

SQL在运行select查询时出错

SQL在运行select查询时出错,sql,oracle,Sql,Oracle,我运行了以下查询: Select * from users where user_id=20; 得到了这个错误: ORA-00997:非法使用长数据类型 99700000-“非法使用长数据类型” *原因: *行动: 第6行第37列出现错误 我想知道发生这种情况的原因以及对此的正确查询。您已将用户id定义为长数据类型。与C/Java/etc不同,long不是数字类型: LONG列存储的可变长度字符串最多包含2G字节-1或231-1字节LONG列具有VARCHAR2列的许多特征。您可以使用LON

我运行了以下查询:

Select * from users where user_id=20;
得到了这个错误:

ORA-00997:非法使用长数据类型
99700000-“非法使用长数据类型”
*原因:
*行动:
第6行第37列出现错误
我想知道发生这种情况的原因以及对此的正确查询。

您已将
用户id
定义为
长数据类型。与C/Java/etc不同,
long
不是数字类型:

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

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

如果您的列包含数值,则它将被定义为
number
,对于ID列,它可能被定义为
number(38)
,以使其成为整数。

您将
用户ID
定义为
长数据类型。与C/Java/etc不同,
long
不是数字类型:

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

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

如果列中包含数值,则将其设置为
number
,对于ID列,可能设置为
number(38)
,使其成为整数