SQL错误:ORA-00933:SQL命令未正确结束

Mic*_* DN 24 sql oracle

我试图通过使用连接更新oracle SQL开发人员中的记录.以下是我的查询 -

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'
Run Code Online (Sandbox Code Playgroud)

但是,当我尝试执行它时,我得到以下错误 -

Error report: SQL Error: ORA-00933: SQL command not properly ended 
              00933. 00000 - "SQL command not properly ended"
Run Code Online (Sandbox Code Playgroud)

我试着删除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
Run Code Online (Sandbox Code Playgroud)

但是仍然有相同的错误,任何人都可以告诉我错误的原因和解决方案

小智 29

;命令结束时的分号对我造成了同样的错误.

cmd.CommandText = "INSERT INTO U_USERS_TABLE (USERNAME, PASSWORD, FIRSTNAME, LASTNAME) VALUES ("
                + "'" + txtUsername.Text + "',"
                + "'" + txtPassword.Text + "',"
                + "'" + txtFirstname.Text + "',"
                + "'" + txtLastname.Text + "');"; <== Semicolon in "" is the cause.
                                                      Removing it will be fine.
Run Code Online (Sandbox Code Playgroud)

希望能帮助到你.

  • 哎哟! 我遇到了这个问题,但没有意识到,因为包括“;” 在 SqlPlus 命令行上工作得很好。 (2认同)

a_h*_*ame 15

Oracle不允许在UPDATE语句中连接表.您需要使用共同相关的子选择重写您的语句

像这样的东西:

UPDATE system_info
SET field_value = 'NewValue' 
WHERE field_desc IN (SELECT role_type 
                     FROM system_users 
                     WHERE user_name = 'uname')
Run Code Online (Sandbox Code Playgroud)

有关UPDATE语句的(有效)语法的完整说明,请阅读手册:

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