If all functions return only one line ...
INSERT INTO MyTable (Col1,Col2,Col3,Col4,Col5,Col6,Col7) SELECT f1.col1, f2.col2, f3.col3, f3.col4, f3.col5, f4.col6, f5.col7 FROM (SELECT Col1 FROM Func1()) AS f1 CROSS JOIN (SELECT Col2 FROM Func2()) AS f2 CROSS JOIN (SELECT Col3,Col4,Col5 FROM Func3()) AS f3 CROSS JOIN (SELECT Col6 FROM Func4()) AS f4 CROSS JOIN (SELECT Col7 FROM Func5()) AS f5
If functions return more than one line, you need to join them in the usual way; with predicates that determine which left row joins which right row.
source share