Oracle保留字的Squirrel SQL错误

时间:2013-01-09 17:25:33

标签: sql oracle toad squirrel-sql

使用基于Java的Squirrel SQL客户端版本3.4.0,应该是一个简单的更新声明已经让我头疼了一会儿(注意:这在TOAD for Oracle中运行良好,但长期我应该使用Squirrel 。

查询是:

UPDATE txn_header
SET KNZ = ' ', "TIMESTAMP" = ' '
WHERE ORGU_CODE_CMPY = '001'
and ORGU_CODE = '0040'
and TILL_SHORT_DESC = '061' 
and KNZ = 'WT'
and TXHD_TXN_NR between 729167 and 730881;

我的问题是,TIMESTAMP是一个Oracle PL / SQL保留字。研究表明,Oracle中的保留字应该包含在Double Quotes“TIMESTAMP”中。但这似乎执行了最后一次成功运行的查询。

我也试过

'TIMESTAMP'
[TIMESTAMP] 
(TIMESTAMP = " ") 
("TIMESTAMP = " ") 

空白区域是

上次成功的查询是:

SELECT knz, count(*) 
   from TXN_HEADER
group by knz

我很困惑,至少可以说,我不是数据库管理的专家 - 任何帮助都会令人难以置信。

编辑 - 制作于10/1/2013

我也尝试在TIMESTAMP列名称

上使用反向标记
UPDATE txn_header
SET KNZ = ' ', TXN_HEADER.`TIMESTAMP` = ' ' 
WHERE ORGU_CODE_CMPY = '001' 
and ORGU_CODE = '0040'
and TILL_SHORT_DESC = '061' 
and KNZ = 'WT'
and TXHD_TXN_NR between '729167' and '729167'

我收到以下错误:

Error: ORA-00911: invalid character

SQLState:  42000
ErrorCode: 911
Position: 44

Squirrel的图形用户界面指向了我曾经看过的保留词的解决方案。

我连接的服务器是Oracle 11服务器

谢谢你, 大卫伯金

1 个答案:

答案 0 :(得分:0)

使用下表def,更新适用于v3.4:

create table txn_header (
    knz varchar2(100),
    "TIMESTAMP" timestamp,
    ORGU_CODE_CMPY varchar2(100),
    ORGU_CODE varchar2(100),
    TILL_SHORT_DESC varchar2(100),
    TXHD_TXN_NR integer
)

你能提供你的表创建声明吗?