SQL Error: ORA-00933: SQL command not properly ended(SQL 错误:ORA-00933:SQL 命令未正确结束)
问题描述
我正在尝试使用联接更新 oracle SQL 开发人员中的记录.以下是我的查询-
I am trying to update a record in oracle SQL developer by using Joins. Following is my query-
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'
但是,当我尝试执行它时,出现以下错误-
However, when I tried to execute it, I got following error-
Error report: SQL Error: ORA-00933: SQL command not properly ended
00933. 00000 - "SQL command not properly ended"
我尝试删除 JOINS
I tried removing 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
但仍然有同样的错误谁能告诉我错误原因和解决方法
but still having same error can anybody tell me the error reason and solution
推荐答案
Oracle 不允许在 UPDATE 语句中连接表.你需要用一个相关的子选择重写你的语句
Oracle does not allow joining tables in an UPDATE statement. You need to rewrite your statement with a co-related sub-select
像这样:
UPDATE system_info
SET field_value = 'NewValue'
WHERE field_desc IN (SELECT role_type
FROM system_users
WHERE user_name = 'uname')
有关 UPDATE 语句的(有效)语法的完整说明,请阅读手册:
For a complete description on the (valid) syntax of the UPDATE statement, please read the manual:
http://docs.oracle.com/cd/E11882_01/server.112/e26088/statements_10008.htm#i2067715
这篇关于SQL 错误:ORA-00933:SQL 命令未正确结束的文章就介绍到这了,希望我们推荐的答案对大家有所帮助,也希望大家多多支持编程学习网!
本文标题为:SQL 错误:ORA-00933:SQL 命令未正确结束


基础教程推荐
- 带有WHERE子句的LAG()函数 2022-01-01
- 带更新的 sqlite CTE 2022-01-01
- MySQL根据从其他列分组的值,对两列之间的值进行求和 2022-01-01
- 从字符串 TSQL 中获取数字 2021-01-01
- MySQL 5.7参照时间戳生成日期列 2022-01-01
- 如何在 CakePHP 3 中实现 INSERT ON DUPLICATE KEY UPDATE aka upsert? 2021-01-01
- while 在触发器内循环以遍历 sql 中表的所有列 2022-01-01
- ORA-01830:日期格式图片在转换整个输入字符串之前结束/选择日期查询的总和 2021-01-01
- CHECKSUM 和 CHECKSUM_AGG:算法是什么? 2021-01-01
- 使用 VBS 和注册表来确定安装了哪个版本和 32 位 2021-01-01