6

SQL Serverで次のようなことを行うことは可能ですか:

INSERT INTO MyTable (Col1,Col2,Col3,Col4,Col5,Col6,Col7) VALUES

SELECT Col1 FROM Func1(),

SELECT Col2 FROM Func2(),

SELECT Col3,Col4,Col5 FROM Func3(),

SELECT Col6 FROM Func4(),

SELECT Col7 FROM Func5()

1 つの値の結果を返す関数が多数あり、3 つの列を返す関数が 1 つあります。このすべてのデータをテーブルの 1 つの行に挿入したいですか?

複数の列を返す関数が問題になる可能性がありますか?

4

3 に答える 3

13

すべての関数が 1 行だけを返す場合...

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

関数が複数の行を返す場合、通常の方法でそれらを結合する必要があります。どの左の行がどの右の行に結合されるかを決定する述語を使用します。

于 2012-06-01T12:40:04.057 に答える
0
 INSERT INTO MyTable (Col1,Col2,Col3,Col4,Col5,Col6,Col7) VALUES

 SELECT Col1 FROM Func1(),

 SELECT Col2 FROM Func2(),

 SELECT Col3 FROM (SELECT Col3,Col4,Col5 FROM Func3()),

 SELECT Col4 FROM (SELECT Col3,Col4,Col5 FROM Func3()),

 SELECT Col5 FROM (SELECT Col3,Col4,Col5 FROM Func3())

 SELECT Col6 FROM Func4(),

 SELECT Col7 FROM Func5()
于 2012-06-01T12:42:39.200 に答える