Использовать вызов функции в сквозном запросе?

У меня есть сквозной запрос в приложении Access 2010, который я использую для вызова хранимой процедуры на серверной части SQL Server. Хранимая процедура принимает параметр, который мне нужно сделать динамическим. Проблема в следующем:

Execute spMyProc 'userName' работает как положено.

Execute spMyProc getUserName() генерирует сообщение "синтаксическая ошибка в ')'".

Можно ли использовать функцию в качестве параметра в сквозном запросе?

Кроме того, я должен отметить, что я переношу сложное приложение Access на сервер SQL, и я действительно не очень хорошо разбираюсь в том, что я делаю. Любые предложения о том, что я делаю неправильно, будут с благодарностью получены. Этот конкретный вопрос возникает из-за попытки изменить источник записи формы с простого оператора выбора в свойстве источника записи на что-то, что можно запустить на сервере.


person nwhaught    schedule 25.02.2015    source источник
comment
Что такое getUserName() — функция SQL Server или Access? Доступ, я полагаю...?   -  person VBlades    schedule 26.02.2015


Ответы (1)


Вы можете использовать этот код:

With CurrentDb.QueryDefs("MyPass")
  .SQL = "exec spMyProc '" & getUserName() & "'"
  .Execute
End With

Поскольку getUserName() является локальной функцией VBA, вам необходимо предварительно оценить фактическую строку, отправляемую на SQL-сервер. Как показано выше, использование сохраненного прохода «удобно», поскольку вам не нужно иметь дело со строками подключения и т. д.

person Albert D. Kallal    schedule 26.02.2015
comment
Это отличная идея, тем более, что я буду сталкиваться с этой ситуацией несколько раз. Спасибо! - person nwhaught; 26.02.2015