Со страницы проекта android-apt
:
Плагин android-apt помогает в работе с процессорами аннотаций в сочетании с Android Studio. Он имеет две цели:
Позволяет настроить процессор аннотаций только времени компиляции в качестве зависимости, не включая артефакт в конечном APK или библиотеке
Установите исходные пути так, чтобы код, сгенерированный из процессора аннотаций, был правильно подобран Android Studio.
Вы используете Dagger, который использует обработку аннотаций для генерации кода. Код обработки аннотации не должен быть включен в окончательный APK, и вы хотите, чтобы сгенерированный код был виден Android Studio. android-apt
позволяет это поведение.
Это звучит очень похоже на объем provided
, но apt
отличается от provided
в нескольких ключевых аспектах. Первое отличие состоит в том, что код, сгенерированный зависимостью apt
, доступен для IDE, тогда как код, сгенерированный зависимостью provided
, недоступен.
Другое важное отличие состоит в том, что код в библиотеке, использующей область действия provided
, находится в пути к классам IDE (то есть вы можете импортировать классы и пытаться использовать их), тогда как код в зависимости apt
- нет. С provided
ваш код будет аварийно завершаться во время выполнения, если вы на самом деле не предоставите ссылочные зависимости с compile
областью действия.
Вы можете найти обсуждение apt
против provided
на этой android-apt
проблеме .
В случае с Dagger не должно быть никаких причин включать процессор аннотаций и генератор кода в любой ваш код (что позволит область provided
). Таким образом, объем apt
является более подходящим.
Обновление за октябрь 2016: Возможно, вам больше не нужен apt
и плагин android-apt
. Версия 2.2 плагина Android Gradle имеет конфигурацию annotationProcessor
, которую вы должны использовать вместо этого.
Подробнее на Что дальше для android-apt?
Локальные временные таблицы (начинаются с # ) ограничены вашей сессией; другие сеансы, даже от того же пользователя / строки подключения, не могут их видеть. Правила для времени жизни зависят от того, была ли локальная временная таблица создана в хранимой процедуре:
Глобальные временные таблицы (начинающиеся с ##) совместно используются сеансами. Их сбрасывают, когда:
Временная таблица будет доступна для экземпляра процедуры, которая ее создает
Следующий сценарий
Exec ('Select 1 as col Into #Temp Select * From #Temp')
Exec ('Select 2 as col Into #Temp Select * From #Temp')
Возвращает
Col
1
Col
2
Не
Col
1
2
Или ошибка, потому что таблица уже существует .
Временная таблица также будет доступна для любых «дочерних» процедур, которые также выполняет начальная процедура.
Вы также можете подумать об использовании табличных переменных. У них очень четко определенная область видимости, и они иногда быстрее, чем их аналоги из временных таблиц. Единственная проблема с табличными переменными заключается в том, что они не могут быть проиндексированы, поэтому некоторая производительность может быть потеряна, несмотря на их характер. Посетите для получения дополнительной информации по этому вопросу.
Следующая статья может помочь: «Как обмениваться данными между хранимыми процедурами» http://www.sommarskog.se/share_data.html