Невозможно экранировать кавычку в Dynami c SQL, где имя файла содержит кавычку - PullRequest
0 голосов
/ 30 марта 2020
declare @Path varchar(max) = 'E:\test\PS\Document\159203\Driver''s License and Insurance Card';

EXEC ('INSERT INTO table
        SELECT ''' + @id+ ''', BulkColumn FROM OpenRowSet ( Bulk ''' + @path + ''', Single_Blob) AS table')

Здесь путь содержит имена файлов, в которых есть кавычки, и я не могу выйти из него и получить ошибку:

Сообщение 105, Уровень 15, Состояние 1, Строка 36 Незакрытая кавычка после строка символов ', Single_Clob) AS [NOTE_CONTENT]'

1 Ответ

1 голос
/ 30 марта 2020

Вам просто нужно снова выйти из одинарной кавычки, например,

declare @Path varchar(max) = 'E:\test\PS\Document\159203\Driver''s License and Insurance Card', @Id varchar(38) = '', @Sql varchar(max);

set @Sql = 'SELECT ''' + @id + ''', ''' + replace(@path,'''','''''') + '''';

print (@Sql);
exec (@Sql);

Примечание. С помощью SQL я могу выполнить без доступа к файлу, просто настроить в соответствии с требованиями.

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