2015-12-02 90 views
0

我正在使用Oracle SQL Developer 4.0.0.13。无法使用UPDATE语句中的绑定变量更新行

查询:

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

字段定义:emp_device char(20 byte)

值为:99998000000008880999(此值是出现在表)

当我运行在SQL开发上面的查询就问我给出绑定变量的值,我将其粘贴到文本框中,并返回更新的0行。

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

查询:

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')

我不知道什么是错的。有人可以看看并提出解决方案。

+0

':abc'的类型是什么? –

+0

我没有定义任何名为的变量:abc和SQL Developer没有要求我......假设为SQLPlus ..我在SQL Developer中尝试过这种方法,但仍然没有工作。 ------>变量abc char(21); exec:abc:= 89148001700748180966; –

回答

-1

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

+0

试过..仍然没有工作。结果的脚本输出:更新了0行。 :ABC -------------------------------- '99998000000008880999' –

+0

请分享您的创建表脚本。 – fatihn

0

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

如果您期待一个字符串或只是NUMBER,那么您应该使用VARCHAR2作为数据类型,因为您的示例纯粹由数值组成。

+0

我改变了列varchar2..still相同的结果...尝试与数字...仍然是相同的... –

+0

你可以分享你的表格描述和emp_device = 99998000000008880999 – brenners1302