しばらくの間、Java ベースの Squirrel SQL クライアント バージョン 3.4.0 を使用した単純な Update ステートメントで頭を悩ませていました (注: これは 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 の予約語は二重引用符 "TIMESTAMP" で囲む必要があります。しかし、これは実行された最後の成功したクエリを実行するようです。
私も試してみました
'TIMESTAMP'
[TIMESTAMP]
(TIMESTAMP = " ")
("TIMESTAMP = " ")
空白は意図されたものです
最後に成功したクエリは次のとおりです。
SELECT knz, count(*)
from TXN_HEADER
group by knz
控えめに言っても混乱しており、データベース管理の専門家でもありません。
編集 - 2013 年 10 月 1 日作成
また、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 の GUI は、私が以前から予約語の解決策として見てきたバッククォートを指しています..
接続しているサーバーは Oracle 11 サーバーです
ありがとう、デビッド・バーキン