Я пишу SQL (для Oracle) как:
INSERT INTO Schema1.tableA SELECT * FROM Schema2.tableA;
где Schema1.tableA и Schema2.tableA имеют одинаковые столбцы. Однако кажется, что это небезопасно, поскольку порядок столбцов, возвращающихся в SELECT, не определен. Что я должен сделать, это:
INSERT INTO Schema1.tableA (col1, col2, ... colN)
SELECT (col1, col2, ... colN) FROM Schema2.tableA;
Я делаю это для многих таблиц, используя некоторые сценарии, поэтому я хотел бы написать что-то вроде:
INSERT INTO Schema1.tableA (foo(Schema1.tableA))
SELECT (foo(Schema1.tableA)) FROM Schema2.tableA;
Где foo - это изящная магия, которая извлекает имена столбцов из первой таблицы и упаковывает их в соответствующий синтаксис. Мысли?