Можно ли использовать подстановочные знаки в параметрах хранимой процедуры SQL Server?

Я работаю с Stored Proc с несколькими параметрами. Однако оказалось, что для одного из параметров мне нужно пройтись по списку элементов и вызвать SP несколько раз. Но поскольку я передаю SP все возможные значения этого типа, кажется более эффективным (и проще) просто обойти параметр, сказав «получить их все» с помощью подстановочного знака.

Возможно ли это сделать, например, с помощью «*» или «%» или чего-то еще?

Теоретически (на основе проведенного мной исследования) "%" должен работать, но в моем случае он не возвращает никаких записей. Я делаю что-то не так с этим кодом:

. . .
new SqlParameter()
{
    ParameterName = "@Member",
    SqlDbType = SqlDbType.VarChar,
    Value = '%'
},
. . .

?


person B. Clay Shannon    schedule 30.12.2015    source источник
comment
Просто передайте NULL с параметром и используйте WHERE col = ISNULL(@param, col) или для большей производительности WHERE col = @param or @param IS NULL   -  person Lukasz Szozda    schedule 30.12.2015
comment
Это похоже на то, что мне нужно добавить в SP, чего я не могу - это не мой домен (без каламбура).   -  person B. Clay Shannon    schedule 30.12.2015
comment
Зачем тогда на самом деле ИСПОЛЬЗОВАТЬ параметр, почему бы просто не изменить хранимую процедуру, чтобы использовать подстановочный знак? - ах, я вижу ваш другой комментарий, вам запрещено это делать...   -  person Mark Schultheiss    schedule 30.12.2015
comment
@MarkSchultheiss: см. мой комментарий в ответ на lad2025. Мне нужен способ справиться с этим из моего кода С#.   -  person B. Clay Shannon    schedule 30.12.2015
comment
Итак, % является подстановочным знаком, когда используется с LIKE оператор. Но если этого не происходит, это не сработает.   -  person Damien_The_Unbeliever    schedule 30.12.2015
comment
Да, я просто собирался прокомментировать, что хранимая процедура должна использовать что-то похожее на ...LIKE @Member.... См. ответ здесь для примера: stackoverflow.com/questions/10601318/   -  person Mark Schultheiss    schedule 30.12.2015


Ответы (1)


Нет. Не имея возможности изменить код хранимой процедуры, вы не сможете передать в качестве параметра ничего, что будет действовать как подстановочный знак.

person Tab Alleman    schedule 30.12.2015