加入收藏 | 设为首页 | 会员中心 | 我要投稿 新余站长网 (https://www.0790zz.com/)- 科技、建站、经验、云计算、5G、大数据,站长网!
当前位置: 首页 > 站长百科 > 正文

如何从oracle合并查询返回主键

发布时间:2021-05-17 03:46:37 所属栏目:站长百科 来源:网络整理
导读:我想从oracle合并查询中返回主键. 我使用单个语句插入,如果不存在,我不想使用过程或函数这样做.. 这是示例查询 merge into myTable e using (select :empname name from dual) s on (UPPER(TRIM(e.empname)) = UPPER(TRIM(s.name))) when not matched then i

我想从oracle合并查询中返回主键.
我使用单个语句插入,如果不存在,我不想使用过程或函数这样做..

这是示例查询

merge into myTable e
  using (select :empname name from dual) s
  on (UPPER(TRIM(e.empname)) = UPPER(TRIM(s.name)))
  when not matched then insert (empname) 
    values (s.name)

我需要获得myTable的另一个主键字段.使用序列和触发器插入主键

我尝试将RETURNING empID添加到:empId但它给出了错误

有一个问题.

> Merge Into不支持返回,因此无法正常工作.
>不会始终使用序列,因为它仅在插入新记录时使用.
>获取序列的现有值将不起作用,因为如果要在当前会话中尚未使用序列时查询Sequence.currval,则会出现错误.

解决它:

>使用过程或匿名程序块尝试更新值.如果更新后sql%rowcount返回0,请执行插入.>使用选择(查询UPPER(TRIM(名称)))查找已更新的记录.

(编辑:新余站长网)

【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容!

    热点阅读