0

以下のクエリから、関数が TABLE タイプを返すテーブル SRC_PK_COLUMNS (Sequence_no,pk_key) に挿入しようとしています。しかし、これは単一の行を期待しています。このエラーの処理方法。

 INSERT INTO SRC_PK_COLUMNS (pk_key)
    (SELECT * 
      FROM TABLE(parse_comma_delimited(( SELECT SOURCE_COLUMNS 
                                         FROM RULES_TABLE 
                                           WHERE RULE_NAME = RULE_NAME ), ','))  );
  1. 00000 - "単一行のサブクエリが複数の行を返す"

ありがとう

4

1 に答える 1

0

この構文を使用する必要があります

insert into TAB (COL1, COL2, COL3)
select C1, C2, C3 from OTHER_TAB;

つまりselect、括弧で囲まれたステートメントはありません。このようにして、実際には 1 つのレコードのみが期待される括弧付きの構文とは対照的に、選択された各レコードも挿入されます。

注: 挿入された列と選択された列の数 (および「変換可能な」データ型) が一致している必要があります。したがって、 も満たすためにSequence_no、ステートメントは次のようになります。

INSERT INTO SRC_PK_COLUMNS (sequence_no, pk_key)
    SELECT rownum, t.*
      FROM TABLE(parse_comma_delimited(( SELECT SOURCE_COLUMNS 
                                     FROM RULES_TABLE 
                                       WHERE RULE_NAME = RULE_NAME ), ',')) t;

の代わりにシーケンスを使用したい場合がありrownumます。

于 2013-03-26T05:30:39.870 に答える