Автоматически экранировать специальные символы значения параметра, передаваемого в sqlcmd - PullRequest
0 голосов
/ 12 января 2020

У меня есть хранимая процедура, которая принимает скрипт и выполняет его для базы данных:

CREATE PROCEDURE [dbo].[usp_ExecuteScript]
  @Script nvarchar(MAX)
AS
EXECUTE sp_executesql @Script;

Когда я вызываю эту процедуру из командной строки с помощью sqlcmd Utility , например:

sqlcmd -E -d <mydb> -Q "usp_ExecuteScript @Script=$(script)" /v script=my_script

где my_script равен SELECT * FROM Users WHERE UserName ='John', я вынужден экранировать все специальные символы, такие как 'qoute', в противном случае он не будет выполнен.
Это становится громоздким, когда я перебираю несколько длинных и сложные сценарии для передачи их в качестве аргумента @Script, которые будут выполняться таким образом.

У вас есть идея, чтобы это сработало?

...