Merge into语句能否using自定义的tableType集合??

狂热的土豆 2014-01-02 05:39:10
ROLLING T_ROLLINGLIST%ROWTYPE; --ROLLING是一个T_ROLLINGLIST表的行类型
TYPE ROLLING_TYPE IS TABLE OF ROLLING%TYPE; --ROLLING_TYPE是存放ROLLING对象的集合类型
ROLLING_LIST ROLLING_TYPE; --ROLLING_LIST是这样一个集合

MERGE INTO T_ROLLINGLIST T1
USING ROLLING_LIST T2...

我的程序首先会构建ROLLING_LIST中的数据,然后我想用ROLLING_LIST来Merge到T_ROLLINGLIST表中,但是在using处会报错找不到表,我用select * from ROLLING_LIST也会报找不到表,难道集合不能像数据库表一样使用?如果不行,那我要通过什么样的方式才能把数据merge到表中呢?

顺便吐槽一下,CSDN发帖没选小版块,帖子内容没保存,居然让我又打一次……
...全文
160 4 打赏 收藏 转发到动态 举报
写回复
用AI写文章
4 条回复
切换为时间正序
请发表友善的回复…
发表回复
shenlele088 2014-01-03
  • 打赏
  • 举报
回复
为什么非要用MERGE呢? 我理解,merge2个作用: 1、方便,一条sql——但是看你写的好像是plsql 2、避免悲观锁——内存表的方式好像对于事务要求没有那么严格。 请楼主解惑下
forgetsam 2014-01-03
  • 打赏
  • 举报
回复
我用select * from ROLLING_LIST也会报找不到表 有点常识,select都不能用merge当然更不能用。 select * from table (ROLLING_LIST) 看看能不能用,不能用就不是Oracle的问题了,说明你那东西压根不返回表。
狂热的土豆 2014-01-03
  • 打赏
  • 举报
回复
引用 1 楼 forgetsam 的回复:
我用select * from ROLLING_LIST也会报找不到表 有点常识,select都不能用merge当然更不能用。 select * from table (ROLLING_LIST) 看看能不能用,不能用就不是Oracle的问题了,说明你那东西压根不返回表。
用table()好像也转换不了
狂热的土豆 2014-01-03
  • 打赏
  • 举报
回复
引用 2 楼 shenlele088 的回复:
为什么非要用MERGE呢? 我理解,merge2个作用: 1、方便,一条sql——但是看你写的好像是plsql 2、避免悲观锁——内存表的方式好像对于事务要求没有那么严格。 请楼主解惑下
是plsql,我主要是想用这个内存表中的数据来插入和更新到数据库表中,觉得用merge的性能比insert、update要好,但是看来这种方式行不通,我已经换了一种办法了,循环从集合中取行记录然后insert、update到表中。

17,086

社区成员

发帖
与我相关
我的任务
社区描述
Oracle开发相关技术讨论
社区管理员
  • 开发
  • Lucifer三思而后行
  • 卖水果的net
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

试试用AI创作助手写篇文章吧