2

次のステートメント:

INSERT INTO TABLE1(COL_1,COL2) VALUES(SELECT MAX(COL_1) FROM TABLE1), 'XYZ');

エラーをスローします:

ERROR at line 1:
ORA-00936: missing expression
 at the select clause. 
1. The table is empty for now.
2. COL_1 is a primary key intger field.

助けてください。

4

3 に答える 3

3

としてお試しください

    create table TABLE1 (COL_1 number, COL2 varchar2(5));

ALTER TABLE TABLE1
add CONSTRAINT t_pk PRIMARY KEY (col_1);

INSERT INTO TABLE1(COL_1,COL2) VALUES((SELECT nvl(MAX(COL_1),0) FROM TABLE1), 'XYZ');

INSERT INTO TABLE1(COL_1,COL2) VALUES((SELECT nvl(MAX(COL_1+1),0) FROM TABLE1), 'XYZ');

SQLフィドルデモ

于 2012-11-02T06:06:45.427 に答える
2

クエリの結果をスカラー式として使用する場合は、次のように (サブ) クエリ全体を角かっこで囲みます。

INSERT INTO TABLE1(COL_1,COL2) VALUES (
   (SELECT MAX(COL_1) FROM TABLE1),
  'XYZ'
);

一方、別の構文を使用することもできます。

INSERT INTO TABLE1(COL_1,COL2)
SELECT MAX(COL_1), 'XYZ' 
FROM TABLE1
group by  'XYZ';
于 2012-11-02T06:12:35.860 に答える
0

余分なブラケットを1つ削除します

INSERT INTO TABLE1(COL_1,COL2) SELECT MAX(COL_1) , 'XYZ' FROM TABLE1
于 2012-11-02T05:57:00.387 に答える