Сообщение об ошибке Незакрытая кавычка после символьной строки - PullRequest
0 голосов
/ 19 марта 2020

Я получил это сообщение об ошибке при выполнении запроса.

Сообщение 105, Уровень 15, Состояние 1, Строка 1
Незакрытая кавычка после символьной строки ''

Сообщение 102, Уровень 15, Состояние 1, Строка 1
Неверный синтаксис рядом с ''

Мой код:

DECLARE @imgLogo VARCHAR(50)
DECLARE @savPicture VARBINARY(MAX)
DECLARE @strPerson VARCHAR(50) = 'Max Verstappen'

SET @imgLogo = 'SET @SavPicture = (SELECT * FROM OPENROWSET (BULK N''C:\Program Files\Microsoft SQL Server\140\Couriers\ + TRIM (cast('+ @strPerson + '''as char(30))) + .jpg'

EXEC (@imgLogo)

Может ли кто-нибудь мне помочь?

Ответы [ 2 ]

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

Запустите ваш код с оператором PRINT, как показано ниже, и вы увидите, что у вас длина @ imgLo go установлена ​​равной 50. Таким образом, ваша строка усекается. Это быстрый пример того, как отлаживать Dynami c SQL, когда вы не уверены, что происходит в поисковой системе:

DECLARE @imgLogo VARCHAR(50)
DECLARE @savPicture VARBINARY(MAX)
DECLARE @strPerson VARCHAR(50) = 'Max Verstappen'

SET @imgLogo = 'SET @SavPicture = (SELECT * FROM OPENROWSET (BULK N''C:\Program Files\Microsoft SQL Server\140\Couriers\ + TRIM (cast('+ @strPerson + '''as char(30))) + .jpg'

PRINT @imgLogo
0 голосов
/ 19 марта 2020

Я исправляю, это отмечает эту ошибку, потому что там было несколько символов без запятой или лишних). Я также исправляю другое сообщение, которое произойдет, если вы не укажете SINGLE_NCLOB. Единственная проблема, которую я вам даю, это проблема со скалярной переменной. Если вам это нравится, пожалуйста, дайте мне голос, я решу то, что вы просите, немного больше, но не все.

DECLARE @imgLogo VARCHAR(200)
DECLARE @SavPicture VARBINARY(MAX)
DECLARE @strPerson VARCHAR(50) = 'Max Verstappen'

SET @imgLogo = 'SET @SavPicture = (SELECT * FROM OPENROWSET (BULK N''C:\Program Files\Microsoft SQL Server\140\Couriers\' + TRIM(cast(+ @strPerson as char(30))) + '.jpg'',SINGLE_NCLOB) as imagefile)'

EXEC (@imgLogo)
...