Вызов Dynami c SQL хранимой процедуры на SQL сервере с использованием C# параметров привязки - PullRequest
0 голосов
/ 02 мая 2020

Я использую C# для вызова динамической c SQL хранимой процедуры на SQL сервере. Я хотел бы связать параметры, чтобы специальные символы, такие как апостроф, не выдавали ошибку.

Проблема здесь в том, что он выдает ошибку при поиске по фамилии О'Брайана, потому что его динамика c SQL, и он читает его буквально и закрывает строку. Я знаю, что могу просто удвоить апостроф, чтобы убежать, но я чувствую, что должен быть другой путь? Я включил голую версию своего кода:

C#

var param = new SqlParameter[]
{
    new SqlParameter() {
        ParameterName = "@LName",
        SqlDbType = System.Data.SqlDbType.VarChar,
        Size = 75,
        Direction = System.Data.ParameterDirection.Input,
        Value = "O'Brian"
    },
}

var queryResults = _context.NameSearchReturnQuery.FromSql("sp_NameSearch @LName", param).tolist()

SQL Хранение на сервере Pro c:

PROCEDURE [websrgt].[sp_NameSearch]
    @LName nvarchar (75)= null,   --last name for the search

begin
    declare @SQL nvarchar(MAX);
    declare @where nvarchar(max);

    set @where = 'where Last_Name like @LName' 

    set @SQL = 'select * from Name_Table ' + @where

    exec sp_executesql @sql, N'@LName nvarchar(75)', @LName
end
go

Когда я прохожу в фамилии с апострофом он читается как буквальный апостроф и закрывает динамическое выражение c SQL. Я хочу иметь возможность передать это значение и выполнить поиск с апострофом, но не закрывать утверждение.

Как я могу это исправить?

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...