I have engine is SQL which uses `EXEC(SQLString)` to run stored procedures. I do that because I need dynamically determine which stored procedure to call and to prepare parameters for that procedure. And I need that logic to be present. So is this a good way to call stored procedure or I have to use `sp_executesql` or there is another way? I ask this question because I have two timings - 1st is to prepare `SQLString` and to call procedure and call another small procedure and 2nd is the execution of the called procedure itself. It works fine almost all the time - the timings are very close. But from time to time I got huge difference between them - the 2nd timing is the same, but 1st is several times bigger (for example 3ms vs 90ms). I suppose some compilation takes place, but this stored procedure is executed very often. REMARK: I call `sp_` from `EXEC(SQL)`, not from `EXEC sp_`.