Выполнение хранимой процедуры внутри хранимой процедуры

Здесь много правильных ответов, но я хотел добавить это (для полноты):

Если вы в нижней части файла cpp реализации выполняете явное инстанцирование всех типов, которые будут использоваться шаблоном с, компоновщик сможет найти их как обычно.

Изменить: добавление примера явного создания экземпляра шаблона. Используется после того, как шаблон определен, и определены все функции-члены.

template class vector<int>;

Это создаст экземпляр (и, следовательно, сделает доступным для компоновщика) класс и все его функции-члены (только). Подобный синтаксис работает для функций шаблона, поэтому, если у вас есть перегрузки операторов, не являющихся членами, вам может понадобиться сделать то же самое для них.

Вышеприведенный пример бесполезен, поскольку вектор полностью определен в заголовках, за исключением случаев, когда common include file (precompiled header?) использует extern template class vector<int>, чтобы не создавать его из всех других (1000?) файлов, которые используют вектор.

41
задан Bruno Dantas 6 October 2016 в 00:55
поделиться

3 ответа

Thats, как это работает хранимые процедуры, выполненные в порядке, Вы не должны начинать просто что-то как

exec dbo.sp1
exec dbo.sp2
3
ответ дан Christian Specht 6 October 2016 в 00:55
поделиться

Вот пример одной из наших хранимых процедур, которая выполняет несколько хранимых процедур в нем:

ALTER PROCEDURE [dbo].[AssetLibrary_AssetDelete]
(
    @AssetID AS uniqueidentifier
)
AS

SET NOCOUNT ON

SET TRANSACTION ISOLATION LEVEL READ COMMITTED

EXEC AssetLibrary_AssetDeleteAttributes @AssetID
EXEC AssetLibrary_AssetDeleteComponents @AssetID
EXEC AssetLibrary_AssetDeleteAgreements @AssetID
EXEC AssetLibrary_AssetDeleteMaintenance @AssetID

DELETE FROM
    AssetLibrary_Asset
WHERE
    AssetLibrary_Asset.AssetID = @AssetID

RETURN (@@ERROR)
15
ответ дан mattruma 6 October 2016 в 00:55
поделиться

T-SQL не является асинхронным, таким образом, у Вас действительно нет выбора, кроме как ожидать, пока SP2 не заканчивается. К счастью это - то, что Вы хотите.

CREATE PROCEDURE SP1 AS
   EXEC SP2
   PRINT 'Done'
34
ответ дан Mark Brackett 6 October 2016 в 00:55
поделиться
  • 1
    Решенный моя проблема! Это намного более просто, чем компиляция PIL вручную.Спасибо! – surjikal 14 September 2012 в 10:21
Другие вопросы по тегам:

Похожие вопросы: