Вызов хранимой процедуры с оператором exec с CRLF в параметре - PullRequest
1 голос
/ 21 ноября 2011

Я хочу вызвать сохраненный процесс с параметром, который содержит строку, содержащую CRLF.

Я на самом деле вызываю SP из запроса MSAccess Pass Through. Я строю оператор exec, и он передает его в SQL в запросе

Есть идеи?

Malcolm

РЕДАКТИРОВАТЬ: Параметр должен быть тело письма, используемого в SP.

После «Lester employee:» переводится новая строка.

wit_data_driven_subscription_2parameters 'Invoice', _
    'malcolm-smith@bigpond.com', _
    'payroll@lester.com.au', _
    "Invoice Reprint As Requested", _
    "Attached is the invoice reprint       you requested for Lester employee:

Jeff Rogers", 'CapturedInvoice', '120744'

Ответы [ 3 ]

1 голос
/ 21 ноября 2011

TSQL принимает символы разрыва строки в строковых литералах ... Другими словами, это допустимо:

EXEC storedProcedure 'My parameter
with a line break'

Это зависит от того, как вы генерируете эту строку в MSAccess ... из vba (ms доступ) .. вы можете построить запрос следующим образом:

Dim query as String
query = "EXEC storedProcedure 'My parameter" + vbCrLf + "with a line break'"

Я не очень хорошо помню о доступе, но если вы можете передавать значения, используя параметры, а не строковые литералы, тогда вы избежите этой проблемы и избежите множества других проблем, таких как SQL-инъекция

0 голосов
/ 21 ноября 2011

Я думаю, что это может быть проблема с электронной почтой, а не проблема SQL. У меня была эта проблема в электронных письмах HTML в прошлом. Замените ваш CrLf HTML-тегом разрыва <BR>.

0 голосов
/ 21 ноября 2011

В вашем exec yourSP утверждении есть что-то вроде:

exec yourStoredProcedure @yourParam = replace(@yourCRLF, '')

Я не знаю, как выглядит CRLF в вашей строке (\r\n может быть ???), но вы можете заменить переменную @yourCRLF фактическим символом / строкой CRLF.

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