(急)MERGE INTO 问题

来源:百度知道 编辑:UC知道 时间:2024/05/30 18:45:09
merge into A t1 using
(select B.m from B
UNION ALL
select C.m from C) t2
ON (.....)
WHEN MATCHED WHEN
update
set ....
WHEN NOT MATCHED WHEN
insert......
values......
为什么 执行的时候告诉我t2里面的字段无效
初步怀疑是由于union all引起来的
求高手帮忙解决下
B.m 只是一个代表字段!其实是N个 MEGRGE编译执行没有问题 SELECT文编译执行没有问题 但是将这个MERGE放到PROCEDURE里面就编译没有问题 但是执行找不到t2里面的东西 去掉UNION ALL变成单个SELECT文 就好使得了 求高手指教 !
单独执行也是能执行plan 也好用
就是放在porcedure 里面就不能执行了
我现在就是想确认一下 procedure中的merge里面是不是不能用unoin之类的集合连接
做的项目涉及到金融 抱歉不能把原始数据粘出来

排错方法:
1.单独执行select B.m from B UNION ALL select C.m from C
看是否有结果,如果有结果的话,那么 on条件有问题,如果没有结果,请检查你的语句结果集
2.其他的从语法上面来看没有什么错误。

请楼主再确认

  merge into A t1 using
  (with t as
  (
  select B.m from B
  UNION ALL
  select C.m from C
  )
  select * from t) t2
  ON (.....)
  WHEN MATCHED WHEN
  update
  set ....
  WHEN NOT MATCHED WHEN
  insert......
  values......

你的语句没意义,根据t2表更新A表,t2表里只有一个字段m

把你的原sql贴出来不行吗,还有详细的报错信息?
你贴的题目语法上都有错误,怎么判断原因:(