2015-12-02 51 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

相關問題