Я новичок в хранимой процедуре и пытаюсь выяснить, как создать таблицу с динамическим числом столбцов.
Я использую Microsoft SQL Server 2008.
У меня есть следующий запрос, который предназначен для хранения данных, переданных из источника XML, в таблицу, которая должна быть создана с помощью этой хранимой процедуры.
CREATE PROCEDURE AddClaimData_newV2
@xml_text VARCHAR(4000),
@devYearColumnNumber INT
AS
DECLARE @i INT
DECLARE @tempTable TABLE (
ProductName VARCHAR(50),
Year INT,
Value1 FLOAT ,
Value2 FLOAT ,
Value3 FLOAT ,
Value4 FLOAT )
EXEC sp_xml_preparedocument @i OUTPUT, @xml_text
INSERT INTO @tempTable
SELECT * FROM
OPENXML(@i, '/root/Product/Year/Value1/Value2/Value3/Value4', 1)
WITH
(ProductName VARCHAR(50) '../../../../../@Name',
Year INT '../../../../@Year',
Value1 FLOAT '../../../@Value',
Value2 FLOAT '../../@Value',
Value3 FLOAT '../@Value',
Value4 FLOAT '@Value')
/* create a new table and store all the data from @tempTable */
EXEC sp_xml_removedocument @i
По сути, ProductName
и Year
являются фиксированными столбцами, но столбцы Value[i]
определяются параметром devYearColumnNumber
.
Мои вопросы:
- как использовать параметр для динамического создания этих
Value[i]
столбцов
- затем, как создать новую таблицу с этими столбцами для хранения данных с
@tempTable