1. ホーム
  2. sql

[解決済み] SQLエラーです。ORA-00933: SQL コマンドが正しく終了していません。

2022-03-04 17:31:09

質問

私はJoinsを使用して、Oracle SQL Developerでレコードを更新しようとしています。 以下は私のクエリです。

UPDATE system_info set field_value = 'NewValue' 
FROM system_users users 
JOIN system_info info ON users.role_type = info.field_desc 
where users.user_name = 'uname'

しかし、これを実行しようとすると、次のようなエラーが発生します。

Error report: SQL Error: ORA-00933: SQL command not properly ended 
              00933. 00000 - "SQL command not properly ended"

JOINSを削除してみた

UPDATE system_info info 
SET info.field_value = 'NewValue' 
FROM system_users users 
where users.user_name = 'uname' AND users.role_type = info.field_desc

が、まだ同じエラーが出ています。 エラーの理由と解決策を教えてください

解決方法は?

OracleはUPDATE文でのテーブルの結合を許可していません。関連するサブセレクトを使用してステートメントを書き直す必要があります。

このようなものです。

UPDATE system_info
SET field_value = 'NewValue' 
WHERE field_desc IN (SELECT role_type 
                     FROM system_users 
                     WHERE user_name = 'uname')

UPDATE文の(有効な)構文に関する完全な説明については、マニュアルをお読みください。

http://docs.oracle.com/cd/E11882_01/server.112/e26088/statements_10008.htm#i2067715