Oracle 无法使用update语句中的bind变量更新行

Oracle 无法使用update语句中的bind变量更新行,oracle,oracle-sqldeveloper,Oracle,Oracle Sqldeveloper,我使用的是Oracle SQL Developer 4.0.0.13 查询: UPDATE employes SET emptime = systimestamp WHERE emp_id = 123 AND emp_device = :abc; UPDATE employes SET emptime = systimestamp WHERE emp_id = 123 AND emp_device = trim(:abc); 字段定义:emp_设

我使用的是Oracle SQL Developer 4.0.0.13

查询:

UPDATE employes 
   SET emptime = systimestamp 
 WHERE emp_id = 123 
   AND emp_device = :abc;
UPDATE employes 
   SET emptime = systimestamp 
 WHERE emp_id = 123 
   AND emp_device = trim(:abc);   
字段定义:emp_设备字符20字节

值为:999980000880999此值存在于表中

当我在SQLDeveloper中运行上述查询时,它要求我给出bind变量的值,我将其粘贴到文本框中,它返回0行更新

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

查询:

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

此外,当我在bind variable文本框中添加一些尾随空格并修剪emp_device列时,它会更新该列。下面是查询

查询:

UPDATE employes 
   SET emptime = systimestamp 
 WHERE emp_id = 123 
   AND emp_device = :abc;
UPDATE employes 
   SET emptime = systimestamp 
 WHERE emp_id = 123 
   AND emp_device = trim(:abc);   
-作品-:abc值为“99998000008880999”


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

在对话框中输入参数“9999800000088880999”并使用撇号字符。

您的emp\U设备数据类型使用字符类型。请注意,CHAR type总是将生成的字符串填充为固定宽度


如果需要字符串或数字,则应使用VARCHAR2作为数据类型,因为示例纯粹由数值组成

尽力。。还是不行。结果的脚本输出:已更新0行:ABC-------“9999880000008080999”请共享您的创建表脚本。什么类型的:ABC?我没有定义任何名为:ABC的变量,SQL开发人员也没有要求我…假设是SQLPlus。。我在SQL Developer中尝试过这个,但仍然不起作用。-->可变abc-char21;执行:abc:=89148001700748180966;我将列更改为varchar2..结果仍然相同。。。尝试使用数字…仍然相同…您能否与emp_device=999800000088880999共享您的表描述和行