无法在UPDATE语句

时间:2015-12-02 20:18:12

标签: oracle oracle-sqldeveloper

我正在使用Oracle SQL Developer 4.0.0.13。

查询:

UPDATE employes 
   SET emptime = systimestamp 
 WHERE emp_id = 123 
   AND emp_device = :abc;

字段定义:emp_device char(20 byte)

值为:99998000000008880999(此值存在于表中)

当我在SQL开发人员中运行上述查询时,它要求我给出绑定变量的值,我将其粘贴到文本框中,并返回0行更新。

但是当我在更新查询中删除bind变量并指定实际值时,它会更新列值。以下是查询。

查询:

UPDATE employes 
   SET emptime = systimestamp 
 WHERE emp_id = 123 
   AND emp_device = 99998000000008880999 ;

---(作品)

此外,当我在绑定变量文本框中添加一些尾随空格并修剪emp_device列时,它会更新列。以下是查询。

查询:

UPDATE employes 
   SET emptime = systimestamp 
 WHERE emp_id = 123 
   AND emp_device = trim(:abc);   

- (工作---:abc值为'99998000000008880999')

我不知道它有什么问题。有人可以看看并提出解决方案。

2 个答案:

答案 0 :(得分:0)

您正在使用CHAR类型作为emp_device数据类型。请注意,CHAR类型始终为空白,将生成的字符串填充到固定宽度。read this

如果您需要字符串或仅使用NUMBER,则应使用VARCHAR2作为数据类型,因为您的示例完全由数值组成。

答案 1 :(得分:-1)

在对话框中输入参数'99998000000008880999'使用撇号字符。