我的要求是通过 Spring JDBCTemplate 创建一个插入语句,我可以在其中传递在数据库中执行的 oracle 函数。
例如 - 假设我有一个表 employee 具有列 enter_time(数据类型为数字(20))并且值将类似于 20170106213124630560。并且该表的插入语句类似于 -
insert into employee (ID, enter_time ) values (1, to_number(to_char(sys_extract_utc(systimestamp),'YYYYMMDDHH24MISSFF')));
我必须像这样从 spring JDBCTemplate 代码发送 enter_time -
preparedStatement.setString(1,"to_number(to_char(sys_extract_utc(systimestamp),'YYYYMMDDHH24MISSFF'))");
但是当我使用 setString() 时,值带有单引号并且无法执行 oracle 函数。也是当我尝试
preparedStatement.setLong(1, to_number(to_char(sys_extract_utc(systimestamp),'YYYYMMDDHH24MISSFF')));
它在“YYYYMMDDHH24MISSFF”给出编译错误。
请帮助我如何编写代码,以便当 spring 创建插入语句时它可以直接在数据库上运行。
请帮助我找到解决方案。
最佳答案
您不需要将其设置为参数,因为您无需设置任何内容。 systimestamp
是 oracle 内置的。试试这个:
String sql = "insert into TEST_UTC_TIMESTAMP (ID, UTC_TIMESTAMP) values (?, to_number(to_char(sys_extract_utc(systimestamp),'YYYYMMDDHH24MISSFF')))";
PreparedStatement ps = conn.prepareStatement(sql);
ps.setInt(1, 2);
int n = ps.executeUpdate();
关于java - 在 spring jdbctemplate 中传递不带单引号的字符串,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/41522319/