As stated above, it could be parameter sniffing. If you have identified what procedure runs that cause the sniffing capture that parameter in particular that causes this.
Now, don't put the recompile option for the procedure as a solution as that will be costly in the long run.
Use other methods like declaring a local variable and copying the procedure parameter to it.
Also, if you would like some experts to look into your code to make it more elegant, please post the DDL and execution plans.