Because IN queries in mssql are multi-value queries, one of your parameters may contain many values, but they are only processed as one string during MSSQL parsing, rather than processing multiple strings, IN multi-value processing is actually processing multiple string values.
Therefore, IN order to achieve the desired IN multi-value parameterized query, dynamic SQL statements must be spliced, because dynamic SQL is actually a dynamic SQL statement consisting of many strings, only execute sp_executesql @ SQL to get the desired result. First, the Northwind database is used for demonstration. The Code is as follows:
DECLARE @ preName nvarchar (4000)
SET @ preName = '@ Davolio @, @ Fuller @, @ Leverling @'
Declare @ lastName nvarchar (4000)
Set @ lastName = replace (@ preName ,'@','''')
Declare @ SQL nvarchar (2000)
Set @ SQL = n' SELECT * FROM Employees where lastName IN ('+ @ lastName + ')'
Execute sp_executesql @ SQL
The dynamic SQL statement is as follows.
You can also write stored procedures.
Create proc lOOKINFO (@ prename nvarchar (1000 ))
As
.....