Вам необходимо передать ваш параметр @SearchInput
в качестве параметра sp_execute
:
CREATE PROCEDURE [dbo].[CountSP] @TableName sysname, --This is effectively the same datatype (as sysname is a synonym for nvarchar(128))
@SearchParam sysname, --Have changed this one though
@SearchInput nvarchar(200)
AS
BEGIN
SET NOCOUNT ON;
DECLARE @Sql nvarchar(MAX);
SET @Sql = N'SELECT COUNT(' + QUOTENAME(@SearchParam) + N') FROM ' + QUOTENAME(@TableName) + N'WHERE' + QUOTENAME(@SearchParam) + N' LIKE @SearchInput;' + NCHAR(13) + NCHAR(10) +
N'SELECT * FROM ' + QUOTENAME(@TableName);
EXECUTE sp_executesql @SQL, N'@SearchInput nvarchar(200)', @SearchInput;
END;
QUOTENAME
, по умолчанию, будет указывать значение в скобках ([]
). Он принимает второй параметр, который можно использовать для определения другого символа (например, QUOTENAME(@Value,'()')
обернет значение в скобках). Для того, что вы хотите, вы должны параметрировать значение, а не вводить (в кавычках) значение.