Я унаследовал базу данных, которая содержит множество хранимых процедур, которые создают локальную временную таблицу, вызывает процедуру, которая использует временную таблицу, а затем удаляет временную таблицу.Вот так:
CREATE PROCEDURE procSelectFromTable
AS
BEGIN
SELECT *
FROM #myTable
END;
GO
CREATE PROCEDURE procMakeTable
AS
BEGIN
SELECT 1 AS [ID]
,'NestedProcedure' AS [Message]
INTO #myTable;
EXEC procSelectFromTable
DROP TABLE #myTable;
END;
GO
EXEC procMakeTable;
GO
--Clean up
IF OBJECT_ID('tempdb..#myTable') IS NOT NULL
DROP TABLE #myTable;
DROP PROCEDURE procMakeTable;
DROP PROCEDURE procSelectFromTable
Я не видел процедур, написанных таким образом ранее.Безопасно ли мне предполагать, что это нормально, потому что вложенная процедура всегда будет вызываться в одном и том же spid и всегда будет иметь доступ к временной таблице?