sqlserver数据库迁移至人大金仓数据库函数SYSDATETIME()转为SYSTIMESTAMP

  • Post author:
  • Post category:其他




描述:

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


)”



版权声明:本文为michael_jovi原创文章,遵循 CC 4.0 BY-SA 版权协议,转载请附上原文出处链接和本声明。