为什么此插入语句抛出表达式缺失错误?

Why is this insert statement throwing an expression missing error?

我正在使用 Oracle SQL。为什么此插入语句抛出表达式缺失错误?

INSERT INTO T_DATA(id, object_type, object_id, 
                         measurement_id, derived_ind, no_hist_ind,
                         display_order, stored_precision, display_precision,
                         required_ind, mod_user, mod_dtime)
                  VALUES(SELECT MAX(id) + 1 FROM t_data_point, 'Object', 'ObjectName', 
                        'ID', 3, 0, 1, 2, 2, 0, 'TEST', SYSDATE);

你的用法可以只是 INSERT.. INTO.. SELECT..

INSERT INTO T_DATA(id, object_type, object_id, 
                         measurement_id, derived_ind, no_hist_ind,
                         display_order, stored_precision, display_precision,
                         required_ind, mod_user, mod_dtime)
                  (SELECT MAX(id) + 1,  'Object', 'ObjectName', 
                        'ID', 3, 0, 1, 2, 2, 0, 'TEST', SYSDATE
                         FROM t_data_point);

要在 VALUES 中使用 SELECT... 将它们嵌入括号中。

VALUES(
       (SELECT MAX(id) + 1 FROM t_data_point),
       ...
      )

编辑:

确保 INSERT 列中的表达式与 VALUES 匹配。

您提供的数据似乎少于插入所需的数据量。

插入 t_data(12 个表达式)VALUES(11 个表达式)

作为 MahMaheswaran 答案的替代方案。您仍然可以在使用 VALUES 的同时实现查询。您只需要将 SELECT 语句括在括号中即可。

INSERT INTO T_DATA (Id,
    object_type,
    object_id,
    measurement_id,
    derived_ind,
    no_hist_ind,
    display_order,
    stored_precision,
    display_precision,
    required_ind,
    mod_user,
    mod_dtime)
    VALUES (
    (
        SELECT
            MAX(Id) + 1
        FROM t_data_point
    )
    ,
    'Object',
    'ObjectName',
    'ID',
    3,
    0,
    1,
    2,
    2,
    0,
    'TEST',
    SYSDATE);

不过,我还是会用第一个答案。