2015-09-16 2 views
0

Я пишу инструкцию SQL в обычный лист Excel (а не VBA), который можно скопировать и вставить из ячейки в SQL Server Management Studio.Excel, не распознающий переменные в SQL-заявлении

Для того, чтобы он работал, мне нужно объявить переменные (например, @userid). Обычно Excel не имеет проблем со мной, используя переменные, но когда я помещаю их в оператор IF, он говорит мне, что это «недопустимая функция».

Например, одна часть моего SQL запроса выглядит следующим образом:

="VALUES("&IF(Keys!B5<>"", Keys!B5, "@spid")&", @sid, GETDATE())" 

На данный момент я должен был добавить кавычки вокруг переменных. К сожалению, это означает, что при вставке в SQL Server Management Studio вам необходимо снова удалить кавычки вокруг переменных, чтобы они были распознаны как переменные, а не строки. Это неудобно, так как моя электронная таблица должна быть сконструирована таким образом, чтобы упростить и упростить добавление записей.

Есть ли способ обойти это?

+0

Пример вывода из формулы: «VALUES (55, @sid, GETDATE())», поэтому непонятно, что _quotes_ необходимо удалить, когда вы вставляете его в SMS. – BrakNicku

+0

Для меня это всегда появляется как «@spid» после вставки кода в СМС, если я вынужден окружить его «кавычками». – Freya

+0

Я не смог воспроизвести его в SMS2012, код sql вставлен в ту же форму, что и в результате формулы Excel. – BrakNicku

ответ

0

Вот несколько возможных вариантов работы, которые вы, возможно, сможете использовать.

  1. Использование '@spid в Key! B5. Единственный тик, используемый как Range.PrefixCharacter property, не будет добавлен в конкатенированную строку.
  2. Используйте spid в Key! B5 и положите @ в части строки формулы.
    ="VALUES(@"&IF(Keys!B5<>"", Keys!B5, "spid")&", @sid, GETDATE())"
  3. То же, что и 2., но формат ключа! B5 как с пользовательской маской формата номера \@@\ является символом escape, чтобы сделать первый буквенный символ. Это покажет значение как @spid, когда ячейка фактически содержит spid.
+0

Не думаю, что я объяснил свою формулу достаточно ясно. Если ячейка B5 на листе ключей не пуста (поэтому она содержит число), используйте это значение. Если ячейка пуста, используйте значение в переменной «@spid». Значение переменной «@spid» генерируется в другой части моего полного SQL-запроса.Было бы более полезно опубликовать весь запрос? – Freya

+0

Извините, я думал, что это еще одна именованная переменная (хотя я смутил вопрос, используя одно и то же имя). Я еще раз подумаю. – Jeeped

Смежные вопросы