Sql 从“插入到”从“选择”返回id

Sql 从“插入到”从“选择”返回id,sql,plsql,oracle-sqldeveloper,plsqldeveloper,oracle19c,Sql,Plsql,Oracle Sqldeveloper,Plsqldeveloper,Oracle19c,大家好,我需要一些帮助来解决这个问题。我正在plsql中使用此查询: INSERT INTO HS_CPQ_COSTCHANNELDISCOUNT (CREATED_BY,UPDATED_BY,ORIGIN,PART_ID,CHANNEL_ID,DISCOUNTPERCENTAGE,EFFECTIVEDATE) Select M.CREATED_BY,M.UPDATED_BY,M.ORIGIN,P.ID,C.ID,M.DISCOUNTPERCENTAGE,M.

大家好,我需要一些帮助来解决这个问题。我正在plsql中使用此查询:

  INSERT INTO HS_CPQ_COSTCHANNELDISCOUNT (CREATED_BY,UPDATED_BY,ORIGIN,PART_ID,CHANNEL_ID,DISCOUNTPERCENTAGE,EFFECTIVEDATE)
                Select M.CREATED_BY,M.UPDATED_BY,M.ORIGIN,P.ID,C.ID,M.DISCOUNTPERCENTAGE,M.EFFECTIVEDATE
                from (
                    select 'APEX_APP' CREATED_BY
                           ,'APEX_APP' UPDATED_BY
                           ,ORIGIN
                           ,part
                           ,channelid
                           ,REPLACE(DISCOUNTPERCENTAGE,'.',',') DISCOUNTPERCENTAGE
                           ,to_date(EFFECTIVEDATE,'YYYY-MM-DD HH24:MI:SS') EFFECTIVEDATE
                    from local_test_table 
                    where id = :tmp_ID
                ) m
                left outer join hs_mib_part p on (m.part = p.part)
                left outer join hs_mib_channel c on (m.channelid = c.CHANNELID)
                RETURNING id INTO new_id;
但我有下一个错误:

Informe de error -
ORA-06550: línea 128, columna 21:
PL/SQL: ORA-00933: comando SQL no terminado correctamente
ORA-06550: línea 113, columna 21:
PL/SQL: SQL Statement ignored
为什么我无法从此插入返回id

我如何解决这部分问题我需要创建新的ID


仅支持单行DML(
insert values
,而不支持
insert select
):

您可以将
insert
拆分为

  • 选择。。。批量收集到集合中
  • forall i in collection.first。。collection.last插入hs\U cpq\U成本渠道折扣
  • 其中,
    collection
    是与插入列匹配的本地声明的关联数组或嵌套表变量


    或者,对于一行,在插入之前,将您想要的值检索到PL/SQL记录中。

    在旧版本的Oracle中,您不能直接将NEXTVAL/CURRVAL读入var,必须执行以下操作:

    SELECT some_tab_seq.CURRVAL
    INTO your_var
    FROM DUAL;
    
    但在新版本中,您可以通过以下方式获取序列的当前值:

    temp_val := tab_seq.CURRVAL
    

    但在本例中,如果您看到我的查询,我将按ID进行筛选,因此最后我只选择一行,恐怕这是一个语法限制
    返回到
    插入值
    有效,而不是
    插入选择
    @Julio-我在insert语句中看不到任何ID。HS_CPQ_COSTCHANNELDISCOUNT是否有您希望返回的ID列