Oracle命令结束,更新语句oracle - ORA-00933:SQL命令未正确结束
2 个答案:
答案 0 :(得分:0)
Oracle不允许您加入更新声明。您需要使用相关子查询,例如:
UPDATE TABLE1 TOP_A
SET EARLIEST_STARTDATE = (
SELECT CASE WHEN DATE_SUBMITTED <
TO_DATE('01/04/' || EXTRACT(YEAR FROM ADD_MONTHS(DOB, 24)), 'DD/MM/YYYY')
THEN TO_DATE('01/04/' || EXTRACT(YEAR FROM ADD_MONTHS(DOB, 24)),'DD/MM/YYYY')
ELSE TO_DATE(DATE_SUBMITTED,'DD/MM/YY') END
FROM TABLE1 SUB_A
INNER JOIN TABLE2 SUB_C on SUB_A.ID = SUB_C.ID
WHERE SUB_A.ID = TOP_A.ID
AND ADD_MONTHS(SUB_C.DOB, 24) BETWEEN
TO_DATE('01/01/' || EXTRACT(YEAR FROM ADD_MONTHS(SUB_C.DOB, 24)),'DD/MM/YYYY')
AND TO_DATE('31/03/' || EXTRACT(YEAR FROM ADD_MONTHS(SUB_C.DOB, 24)),'DD/MM/YYYY')
)
WHERE EARLIEST_STARTDATE IS NULL
AND WS_ELIGIBILITY_STATUS = 1
AND (CLAIM_ADD_CRITERIA_FLAG = 'N' OR CAF = 'Y' OR (CCA_CODE = 'SC' AND CLAIM_ADD_CRITERIA_FLAG = 'Y'))
/
这假定TABLE_1.ID是唯一的。子查询执行两个表之间的连接,并且它与子查询中的WHERE SUB_A.ID = TOP_A.ID子句正在更新的行相关联。
您的AND / OR部分有点不清楚,因此您可能需要重新考虑这些子句的括号,以获得满足您业务需求的正确布尔结果。
其他情况下的TO_DATE(DATE_SUBMITTED,'DD/MM/YY')看起来也很可疑;如果DATE_SUBMITTED已经是日期,那么只需直接参考,不要为此致to_date()。在转换之前,您正在进行隐式转换为字符串;而且由于YY模型,你可能会在这个过程中失去这个世纪。
其他日期处理也可以简化。
答案 1 :(得分:0)
UPDATE A
SET EARLIEST_STARTDATE =
(SELECT
CASE WHEN (DATE_SUBMITTED < TO_DATE('01/04/' || EXTRACT(YEAR FROM ADD_MONTHS(DOB, 24)),'DD/MM/YYYY'))
THEN TO_DATE('01/04/' || EXTRACT(YEAR FROM ADD_MONTHS(DOB, 24)),'DD/MM/YYYY')
ELSE TO_DATE(DATE_SUBMITTED,'DD/MM/YY') END
FROM TABLE1 A
INNER JOIN TABLE2 C on A.ID = C.ID
WHERE (EARLIEST_STARTDATE IS NULL) AND
(A.WS_ELIGIBILITY_STATUS = 1) AND
(A.CLAIM_ADD_CRITERIA_FLAG = 'N' OR A.CAF = 'Y' or A.CCA_CODE = 'SC' AND A.CLAIM_ADD_CRITERIA_FLAG = 'Y') AND
(ADD_MONTHS(C.DOB, 24) BETWEEN TO_DATE('01/01/' || EXTRACT(YEAR FROM ADD_MONTHS(C.DOB, 24)),'DD/MM/YYYY') AND TO_DATE('31/03/' || EXTRACT(YEAR FROM ADD_MONTHS(C.DOB, 24)),'DD/MM/YYYY')))
Oracle命令结束,更新语句oracle - ORA-00933:SQL命令未正确结束相关推荐
- 解决Oracle+Mybatis批量插入报错:SQL 命令未正确结束
Mybatis批量插入需要foreach元素.foreach元素有以下主要属性: (1)item:集合中每一个元素进行迭代时的别名. (2)index:指定一个名字,用于表示在迭代过程中,每次迭代到的 ...
- oracle联表更新语句
oracle联表更新语句,此处为什么要写下来呢,因为信誓旦旦地用sql中的语句去更新oracle,发现不通用,但是查询可以.所以特意写下来,以免忘记或提醒需要的你们~~ 第一种: update lqp ...
- Mybatis使用foreach批量插入Oracle提示命令未正确结束
错误代码 <insert id="multiInsertTest" parameterType="java.util.List">INSERT IN ...
- mysql中00933错误_java.sql.SQLException: ORA-00933: SQL 命令未正确结束错误解决
在程序运行时,程序报sql错误"nested exception is java.sql.SQLException: ORA-00933: SQL 命令未正确结束",具体错误如下所 ...
- mybatis+oracle批量插入报不符合协议和sql未正确结束
在Java中循环save,需要加useGeneratedKeys="false",否则报错不符合协议 mybatis批量插入,也需要在insert里加入 useGeneratedK ...
- SSM:Cause: java.sql.SQLSyntaxErrorException: ORA-00933: SQL 命令未正确结束的解决
QUESTION:SSM:Cause: java.sql.SQLSyntaxErrorException: ORA-00933: SQL 命令未正确结束的解决? ANWSER: 一:问题提出: 使用S ...
- Mybatis 批量插入报ORA-00933: SQL 命令未正确结束
Mybatis 批量插入报ORA-00933: SQL 命令未正确结束 错误出现的场景是这样的,将多个月份的1000条数据分别插入到各月份表中. MySQL中,批量插入数据到表,会在一定程度提高效率. ...
- ORA-00933:SQL 命令未正确结束(1)
项目中mysql数据库换oracle数据库中报ORA-00933:SQL 命令未正确结束 问题 1.报错:ORA-00933:SQL 命令未正确结束 2.解决方法:将图1中的limit分页改成图2中的 ...
- ORA-00933: SQL 命令未正确结束处理办法
问题现象:删除数据库表,oracle中出现bin$XXXXXXXXXX==$0表 ,在对其 (bin$XXXXXXXXXX==$0)删除时,报 ORA-00933: SQL 命令未正确结束 出现 ...
最新文章
- iOS9网络适配 info.plist配置
- 文件上传检测的基本思路
- 全志 移除屏幕超时选项 Patch
- hdu 2602 Bone Collector(01背包)模板
- 机器学习:利用核函数进行非线性分类
- RocketMQ在Windows环境下部署(亲测有效)
- 这两个小技巧,让SQL语句不仅躲了坑,还提升了1000倍
- Uber无人车安全员之困:这是一份机械、枯燥、影响心理的工作
- 不再支持Postman集合v1格式,无法直接导入
- 在线播放,将文件转成流媒体
- 碎片时间”绑架了多少焦虑的现代人?
- 禅与摩托车维修艺术(4)
- 确定有限自动机(DFA)和不确定有限自动机(NFA)的主要区别
- Java数据结构:图
- 通过修改注册表激活 Windows 操作系统
- 110.JAVA入门__this内存原理
- 微软之行总结(删节稿)
- Houdini 铁链结算制作
- 计算机毕业设计基于Android企业办公oa 员工考勤请假工资系统
- C语言:输入1到5的阶乘