描述:
Sqlsever数据库中自带函数SYSDATETIME()在金仓数据库中对应的是SYSTIMESTAMP。
错误信息:
java.sql.SQLException: [KingbaseES Server]ERROR: 函数 SYSDATETIME() 不存在 Line 1 at SQL statement
HINT: 不能根据所提供的名称和参数类型找到与之匹配的函数。你可以增加显式的类型转换。
at com.kingbase.core.QueryExecutor.processResultSetExtended(Unknown Source)
at com.kingbase.core.QueryExecutor.processResultSet(Unknown Source)
at com.kingbase.core.QueryExecutor.executePV3(Unknown Source)
at com.kingbase.core.QueryExecutor.execute(Unknown Source)
at com.kingbase.core.QueryExecutor.execute(Unknown Source)
at com.kingbase.jdbc3.AbstractJdbc3Statement.executePV3X(Unknown Source)
at com.kingbase.jdbc3.AbstractJdbc3Statement.execute(Unknown Source)
at com.kingbase.jdbc2.AbstractJdbc2Statement.execute(Unknown Source)
解决办法:
编写语句时使用对应的函数替换即可(红色部分是需要修改的)。
Sqlserver写法:
"INSERT INTO TBL_WORKFLOW_AGENT_LOG (id,workflowId,processDefinitionId,processInstanceId,taskDefinitionId,taskId,beagenterId,agenterId,agentDateTime,creater,createDateTime)values(NEWID(),'"+wid+"','"+rs1.getString("PROC_DEF_ID_")+"','"+rs1.getString("PROC_INST_ID_")+"','"+rs1.getString("TASK_DEF_KEY_")+"','"+rs1.getString("EXECUTION_ID_")+"','"+beAgenterId+"','"+agenterId+"',SYSDATETIME(),'',SYSDATETIME())";
改为:
"INSERT INTO TBL_WORKFLOW_AGENT_LOG(id,workflowId,processDefinitionId,processInstanceId,taskDefinitionId,taskId,beagenterId,agenterId,agentDateTime,creater,createDateTime)values(NEWID(),'"+wid+"','"+rs1.getString("PROC_DEF_ID_")+"','"+rs1.getString("PROC_INST_ID_")+"','"+rs1.getString("TASK_DEF_KEY_")+"','"+rs1.getString("EXECUTION_ID_")+"','"+beAgenterId+"','"+agenterId+"',SYSTIMESTAMP,'',SYSTIMESTAMP)"