Поскольку вы не упоминаете, какую СУБД, я предполагаю, что это SQL Server, поскольку такие ситуации обычно возникают там.
К вопросу 1:
В SQL Server 2005 для временной таблицы, чтобы быть доступным для вызывающей процедуры сохраняется, то, возможно, придется использовать ## Task2_Output (это верно, два хэшей), а не # Task2_Output, так как временные имена таблиц с двумя префиксами # являются временными глобальными временными таблицами, доступными для вызывающей процедуры, но уничтоженными после их последнего использования. Однако вам, возможно, придется искать конфликты имен имен, если имена таблиц не назначаются динамически.
К вопросу 2:
Get sp_Task2 вернуть код возврата, с RETURN заявление. Если создание таблицы преуспевает, скажем, Return 1. Если сбой создания таблицы (известный путем проверки @@ERROR
сразу после утверждения), то, скажем, Return -99.
В sp_Task1, вызовите sp_Task2 как следующее:
Declare @MyRetCode_Recd_In_Task1 int
EXECUTE @MyRetCode_Recd_In_Task1 = sp_Task2 (with calling parameters if any).
Вызов хранимой процедуры с = StoredProcName код возврата мода, код возврата, возвращенный sp_Task2 принимается sp_Task1. Затем вы можете проверить код возврата в sp_Task1, чтобы узнать, все ли хорошо.
Какие dbms? (Реализации хранимых процедур слишком часто не совместимы с ANSI.) – jarlh
@jarlh Просто для того, чтобы уточнить, как предполагал Whirl Mind, dbms был фактически SQL Server 2005. В следующий раз отметьте, что перед этим. – tarheel