java sql merge_JDBC支持SqlServer里的Merge方法么?

在尝试使用JDBC执行一个包含SQL Server MERGE语句的存储过程时,遇到了'A MERGE statement must be terminated by a semi-colon (;).'的错误。错误源于SQL语句未在末尾添加分号。解决方案是检查并确保SQL语句以分号结束。
摘要由CSDN通过智能技术生成

需要通过JDBC执行的SP代码如下:

MERGE SV_IB_WARRANTY_ST AS A

USING (

SELECT DISTINCT [MACHINE_TYPE]

,[SERIAL]

,[SEQUENCE_NUMBER]

,[WTY_ID]

,[WTY_START_DATE]

,[WTY_END_DATE]

,[BATCH_NUMBER]

,[SERVICE_PRODUCT_ID]

FROM [SV_IB_WARRANTY_ST_TEMP]

WHERE BATCH_NUMBER= @BATCH_NUMBER

)AS B

ON B.[MACHINE_TYPE]= A.[MACHINE_TYPE]

AND B.[SERIAL]= A.[SERIAL]

AND B.[SEQUENCE_NUMBER]=A.[SEQUENCE_NUMBER]

WHEN NOT MATCHED THEN

INSERT(

[MACHINE_TYPE]

,[SERIAL]

,[SEQUENCE_NUMBER]

,[WTY_ID]

,[WTY_START_DATE]

,[WTY_END_DATE]

,[BATCH_NUMBER]

,[SERVICE_PRODUCT_ID]

)

VALUES(

B.[MACHINE_TYPE]

,B.[SERIAL]

,B.[SEQUENCE_NUMBER]

,B.[WTY_ID]

,B.[WTY_START_DATE]

,B.[WTY_END_DATE]

,B.[BATCH_NUMBER]

,B.[SERVICE_PRODUCT_ID]

)

WHEN MATCHED THEN

UPDATE SET

A.[WTY_ID] =B.[WTY_ID]

,A.[WTY_START_DATE] =B.[WTY_START_DATE]

,A.[WTY_END_DATE] =B.[WTY_END_DATE]

,A.[BATCH_NUMBER] =B.[BATCH_NUMBER]

,A.[SERVICE_PRODUCT_ID] =B.[SERVICE_PRODUCT_ID];

报错信息:

Caused by: com.microsoft.sqlserver.jdbc.SQLServerException: A MERGE statement must be terminated by a semi-colon (;).

at com.microsoft.sqlserver.jdbc.SQLServerException.makeFromDatabaseError(SQLServerException.java:217)

at com.microsoft.sqlserver.jdbc.SQLServerStatement.getNextResult(SQLServerStatement.java:1655)

at com.microsoft.sqlserver.jdbc.SQLServerPreparedStatement.doExecutePreparedStatement(SQLServerPreparedStatement.java:440)

at com.microsoft.sqlserver.jdbc.SQLServerPreparedStatement$PrepStmtExecCmd.doExecute(SQLServerPreparedStatement.java:385)

at com.microsoft.sqlserver.jdbc.TDSCommand.execute(IOBuffer.java:7505)

at com.microsoft.sqlserver.jdbc.SQLServerConnection.executeCommand(SQLServerConnection.java:2445)

at com.microsoft.sqlserver.jdbc.SQLServerStatement.executeCommand(SQLServerStatement.java:191)

at com.microsoft.sqlserver.jdbc.SQLServerStatement.executeStatement(SQLServerStatement.java:166)

at com.microsoft.sqlserver.jdbc.SQLServerPreparedStatement.execute(SQLServerPreparedStatement.java:367)

at com.lenovo.lps.farseer.priest2.platform.util.DbExeUtils.execute(DbExeUtils.java:144)

at com.lenovo.lps.farseer.priest2.platform.util.DbExeUtils.exeSql(DbExeUtils.java:120)

... 83 more

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值