Я использую SimpleJdbcCall
для выполнения хранимых процедур на SQL сервере, но когда я проверяю журналы отладки, я вижу, что он использует call my_sp_name
, но я ожидаю, что моя хранимая процедура будет выполнена с использованием sp_executesql
как это предотвращает инъекцию SQL.
Это код, который у меня есть:
simpleJdbcCall = new SimpleJdbcCall(jdbcTemplate).withReturnValue();
simpleJdbcCall.withProcedureName("my_sp_name");
simpleJdbcCall.addDeclaredParameter(new SqlParameter("paramOne", Types.VARCHAR));
Map<String, Object> params = new HashMap<>();
// setting parameters here
simpleJdbcCall.execute(params);
Я что-то пропустил или мне нужно набрать sp_executesql
вручную в коде?
Я использую:
driver class name: com.microsoft.sqlserver.jdbc.SQLServerDriver
Dependency: mssql-jdbc:8.2.2.jre.8