带有Oracle保留字的Squirrel SQL错误
使用基于Java的SquirrelSQL客户机版本3.4.0(注意:这在TOAD for Oracle中工作得很好,但从长远来看,我希望使用SquirrelSQL) 查询是:带有Oracle保留字的Squirrel SQL错误,sql,oracle,toad,squirrel-sql,Sql,Oracle,Toad,Squirrel Sql,使用基于Java的SquirrelSQL客户机版本3.4.0(注意:这在TOAD for Oracle中工作得很好,但从长远来看,我希望使用SquirrelSQL) 查询是: 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
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;
SELECT knz, count(*)
from TXN_HEADER
group by knz
我的问题是,时间戳是一个Oracle PL/SQL保留字。研究表明,Oracle中的保留字应该用双引号“TIMESTAMP”括起来。但这似乎执行了上次成功运行的查询
我也试过了
'TIMESTAMP'
[TIMESTAMP]
(TIMESTAMP = " ")
("TIMESTAMP = " ")
空白处是有意的
最后一个成功的查询是:
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;
SELECT knz, count(*)
from TXN_HEADER
group by knz
至少可以说,我很困惑,而且我不是数据库管理专家——任何帮助都是难以置信的
编辑-制作于2013年10月1日
我还尝试在时间戳列名上使用反勾号
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的GUI指向backticks,我已经将其视为保留字的解决方案
我连接的服务器是Oracle 11服务器
谢谢,,
David Birkin对于下表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
)
你能提供你的表创建语句吗?你得到的错误是什么?如果名为
TIMESTAMP
的列是TIMESTAMP
类型,那么你应该为它指定一个字符串值。感谢你的响应。奇怪的是,没有错误,最后一个成功的SQL语句会在检查日志信息、错误和跟踪时运行信息没有堆栈跟踪或java错误,这是我通常调试代码的地方不应该这样做吗?反勾号在标准SQL和Oracle中无效。您需要对带引号的标识符使用双引号。手册描述了带引号的标识符的用法:Hi@manningr,对于create table script,这里是pastebin链接,您会注意到时间戳是一个VARCHAR2字段,而不是导致错误的预期时间戳一个问题。我需要能够插入一个到时间戳列请参阅编辑我已申请到主要职位的更多信息information@DavidBirkin:如果要在时间戳列中设置“无值”,请将其设置为NULL
。不要将时间戳存储为varchar!