Мне нужно создать таблицу, используя строки другой таблицы в качестве имен столбцов. Причина в том, что моя база данных не реляционная, поэтому в каждом случае у меня есть таблица с данными, а другая - с соответствующими метаданными.
Пример:
Table 1:
Person
ID | Info
===================================================
1 | <John Smith><1st Avenue><Miami,Florida><33101>
2 | <Mary Walton><83th Street><New York, NY><1001>
Table 2:
Person_Desc
Field | Info
===================================================
ID | Sequential identifier
Name | Persons full name
Address | Physical location detail
City | City
ZIP_C | Postal office code
Я хотел бы создать хранимую процедуру, которая получит эти два имени таблицы в качестве параметра, и создаст третью таблицу, например так (потерпите меня и псевдокод, пожалуйста):
CREATE STORED PROCEDURE sp_relationalTable
@dataTable nvarchar(50),
@metadataTable nvarchar(50) ,
@TmpTable nvarchar(50)
AS
SELECT * FROM @metadataTable
CREATE TABLE @TmpData
( @metadataTable_Field1 nvarchar(100),
,@metadataTable_Field2 nvarchar(100),
,@metadataTable_Field3 nvarchar(100)....
)
END
Это первая часть. Затем я запускаю оператор SELECT
для Table1: Person, разбивая данные известным разделителем и INSERT
все данные во вновь созданную таблицу.
INSERT INTO @TmpData (SELECT * FROM @dataTable)
В идеале, он может быть запущен на одном SP, как я говорил в начале, поэтому, когда вы запускаете такой SP, это будет выглядеть так:
EXEC sp_relationalTable Person, Person_Desc, RPerson
И я бы в итоге:
Table 3:
RPerson
ID | Name | Address | City | ZIP_C |
============================================================
1 | John Smith | 1st Avenue | Miami,Florida |33101 |
2 | Mary Walton | 83th Street | New York, NY |1001 |