Я пытаюсь написать запрос, который должен вызвать хранимую процедуру. Но всегда выдает ошибку:
Неизвестный тип объекта 'TABLEIXICHistoricalData', используемый в операторе CREATE, DROP или ALTER.
Это запрос:
USE ETLCourse
DECLARE @LOOP TABLE
(
ID INT IDENTITY(1,1),
TableName NVARCHAR(100)
)
INSERT INTO @LOOP (TableName)
SELECT TABLE_NAME
FROM INFORMATION_SCHEMA.TABLES
WHERE TABLE_NAME LIKE '%_Stocks%'
DECLARE @b INT = 1, @m INT, @t NVARCHAR(100)
SELECT @m = MAX(ID) FROM @LOOP
WHILE @b <= @m
BEGIN
SELECT @t = TableName
FROM @LOOP
WHERE ID = @b
EXECUTE [dbo].[stp_BuildNormalizedTable] @t
SET @b = @b + 1
END
и вот процедура:
ALTER PROCEDURE [dbo].[stp_BuildNormalizedTable]
@table NVARCHAR(100)
AS
BEGIN
DECLARE @cleanTable NVARCHAR(100),
@s NVARCHAR(MAX)
SET @cleanTable = REPLACE(@table, '_Stocks', 'HistoricalData')
SET @s = 'CREATE TABLE' + @cleanTable + '(ID INT IDENTITY(1,1), Price DECIMAL(13, 4), PriceDate DATE)
INSERT INTO' + @cleanTable + '(Price,PriceDate) SELECT [Adj Close],[Date] FROM'
+ @table + ' ORDER BY Date ASC'
--PRINT @s
EXECUTE sp_executesql @s
END
Следует скопировать два определенных столбца и создать новую таблицу, используя @Loop
таблицу и процедуру