Sql 从“插入到”从“选择”返回id
大家好,我需要一些帮助来解决这个问题。我正在plsql中使用此查询: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.
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列