Combined INSERT SELECT Oracle-Query 不起作用

Combined INSERT SELECT Oracle-Query does not work

我有以下查询,通常应该有效,但不适用于我的 navicat 数据库管理软件:

INSERT INTO TABLE1(ID_NO, COLUMN1, COLUMN2, COLUMN3, COLUMN4, COLUMN5, COLUMN6, COLUMN7, COLUMN8, COLUMN9, COLUMN10, COLUMN11, DDATE_IN) VALUES(SELECT ID_NO+1 AS ID_NO FROM ((SELECT MAX( ID_NO ) as ID_NO FROM TABLE GROUP BY ID_NO ORDER BY ID_NO DESC) WHERE ROWNUM = 1), 'Value2', 'Value3', 1, 1, 1, 'Value4', 'Value5', 'Value6', 'Value7', 'Value8', 'Value9', TO_DATE('05.07.2020 10:00:00', 'DD.MM.YYYY HH24:MI:SS'))

SELECT 查询应取 TABLE1 中已存在的最高 ID_NO(ID 号)并加 1 并将其写入 INSERT statement.So ID_NO 中在 table.

中迭代每个新的 INSERT

如果我在没有 INSERT 提示的情况下将 SELECT 语句写为 navicat 中的单个语句,它就可以工作。但是我想把它放在 INSERT 提示字符串中。我必须将组合查询放在一个字符串中,因为我使用 C# 代码将 oracle 查询字符串发送到数据库并且仅适用于一个字符串。这里有什么问题?我卡了几天了,看不出错误。

编辑:我自己发现了错误。我忘了将 SELECT 语句放入方括号中,即放入“()”。我编辑了我的第一个 post 的代码。现在可以了。

The SELECT query should take the highest already existing ID_NO (ID number) of TABLE1 and add 1 and write this in the INSERT statement.

你似乎把这个复杂化了。我想你想要 insert ... select 带有聚合查询的语法:

INSERT INTO TABLE1(
    ID_NO, 
    COLUMN1, 
    COLUMN2, 
    COLUMN3, 
    COLUMN4, 
    COLUMN5, 
    COLUMN6, 
    COLUMN7, 
    COLUMN8, 
    COLUMN9, 
    COLUMN10, 
    COLUMN11, 
    DDATE_IN
) 
SELECT 
    COALESCE(MAXID_NO), 0) + 1,
    'Value2', 
    'Value3', 
    1, 
    1, 
    1, 
    'Value4', 
    'Value5', 
    'Value6', 
    'Value7', 
    'Value8', 
    'Value9', 
    TO_DATE('05.07.2020 10:00:00', 'DD.MM.YYYY HH24:MI:SS')
FROM TABLE1

请注意,这是一种相当低效的处理方式,因为它需要为每个 insert 扫描 table。如果您可以忍受间隙,那么使用序列会更简单。

我明白了。我忘了将 SELECT 语句设置到括号中,即设置为“()”。我编辑了我的代码。现在可以了。