Ваша временная таблица теряет область действия после завершения хранимой процедуры. Вам нужно будет переместить оператор выбора внутри хранимой процедуры или сделать временную таблицу глобальной, используя нотацию двойного фунта. ##TempPayPeriod
ОПЦИЯ 1 - вернуть результат из хранимой процедуры
USE PR
GO
CREATE PROC spAddPay
@StartDate smalldatetime = NULL,
@EndDate smalldatetime = NULL
AS
BEGIN
DROP TABLE IF EXISTS #TempPayPeriod;
SELECT * INTO #TempPayPeriod FROM PayPeriod;
SET @StartDate = (SELECT MAX(PerFrom) FROM #TempPayPeriod);
SET @StartDate = DATEADD(day, 7, @StartDate);
SET @EndDate = (SELECT MAX(PerThru) FROM #TempPayPeriod);
SET @EndDate = DATEADD(day, 7, @EndDate);
BEGIN TRY
INSERT #TempPayPeriod
VALUES (@StartDate, @EndDate);
END TRY
BEGIN CATCH
PRINT 'Record was not added';
PRINT 'Error: ' + CONVERT(varchar, ERROR_NUMBER(),1) + ': ' + CONVERT(varchar, ERROR_MESSAGE(),1);
END CATCH
SELECT * FROM #TempPayPeriod
END
GO
EXEC spAddPay;
GO
ОПЦИЯ 2 - Использовать глобальную временную таблицу
USE PR
GO
CREATE PROC spAddPay
@StartDate smalldatetime = NULL,
@EndDate smalldatetime = NULL
AS
BEGIN
DROP TABLE IF EXISTS ##TempPayPeriod;
SELECT * INTO ##TempPayPeriod FROM PayPeriod;
SET @StartDate = (SELECT MAX(PerFrom) FROM ##TempPayPeriod);
SET @StartDate = DATEADD(day, 7, @StartDate);
SET @EndDate = (SELECT MAX(PerThru) FROM ##TempPayPeriod);
SET @EndDate = DATEADD(day, 7, @EndDate);
BEGIN TRY
INSERT ##TempPayPeriod
VALUES (@StartDate, @EndDate);
END TRY
BEGIN CATCH
PRINT 'Record was not added';
PRINT 'Error: ' + CONVERT(varchar, ERROR_NUMBER(),1) + ': ' + CONVERT(varchar, ERROR_MESSAGE(),1);
END CATCH
END
EXEC spAddPay;
SELECT * FROM ##TempPayPeriod;
GO