Ich rufe eine MSSQL-Prozedur von spring storedprocedure.execute aus. Ich habe versucht, date Parameter wie java.sql.Date, java.sql.Timestamp und reine Zeichenfolge übergeben, aber mit allen Optionen gibt es den gleichen Fehler "Fehler beim Konvertieren von Datentyp nvarchar nach datetime2" Hier ist die Syntax von meinem procFehler beim Konvertieren des Datentyps nvarchar nach datetime2 in Java
PROCEDURE [sampleProc]
@errorMsg VARCHAR(MAX) OUTPUT
,@startDate DATETIME = NULL
,@endDate DATETIME = NULL
,@par1 VARCHAR(200) = NULL
,@par2 VARCHAR(200) = NULL
,@par3 VARCHAR(200) = NULL
Java-Code, der es nennen:
Map<String, Object> results = super.execute(errMsg,convertJavaDateToSql (startDate),convertJavaDateToSql(endDate),null,null,null);
und convertJavaDateToSql Methode
istTimestamp convertJavaDateToSql(String date){
Date javaDate = null;
try {
javaDate = dateFormat.parse(date);
logger.info("Parsed Date is "+javaDate);
} catch (ParseException e) {
logger.error("Error Parsing startDate and endDate");
}
if(javaDate!=null) {
Timestamp sqlDateTime = new Timestamp(javaDate.getTime());
logger.info("sql Date "+sqlDateTime);
return sqlDateTime;
}else
return null;
}
und das ist, wie ich Parameter deklarieren
declareParameter(new SqlReturnResultSet("RESULT_LIST",
myDataExtractor));
declareParameter(new SqlOutParameter("errorMsg",Types.VARCHAR));
declareParameter(new SqlParameter("startDate",Types.TIMESTAMP));
declareParameter(new SqlParameter("endDate", Types.TIMESTAMP));
declareParameter(new SqlParameter("par1",Types.VARCHAR));
declareParameter(new SqlParameter("par2", Types.VARCHAR));
declareParameter(new SqlParameter("par3",Types.VARCHAR));
Hier ist das Fehlerprotokoll
org.springframework.dao.DataIntegrityViolationException: CallableStatementCallback; SQL [{call sampleProc(?, ?, ?, ?, ?, ?)}Error converting data type nvarchar to datetime2.; nested exception is com.microsoft.sqlserver.jdbc.SQLServerException: Error converting data type nvarchar to datetime2.
at org.springframework.jdbc.support.SQLErrorCodeSQLExceptionTranslator.doTranslate(SQLErrorCodeSQLExceptionTranslator.java:247)
at org.springframework.jdbc.support.AbstractFallbackSQLExceptionTranslator.translate(AbstractFallbackSQLExceptionTranslator.java:72)
at org.springframework.jdbc.core.JdbcTemplate.translateException(JdbcTemplate.java:1400)
at org.springframework.jdbc.core.JdbcTemplate.execute(JdbcTemplate.java:1063)
at org.springframework.jdbc.core.JdbcTemplate.call(JdbcTemplate.java:1102)
at org.springframework.jdbc.object.StoredProcedure.execute(StoredProcedure.java:122)
ich viel Frage auf dieser Seite mit dem gleichen Titel, aber keiner half mit Java code.Could jemand bitte helfen Sie mir zu diesem Thema gefunden. Danke
Bitte fügen Sie die Fehlerprotokolle bei –