千万进来看一看!!!有大麻烦了 谢谢谢谢再谢谢----陈年老问题 清囊

fake_wolf 2001-12-13 11:14:23
我想完成这样一个功能,
table1 : oid(number),value(number) 在加上其他的字段
select * from table a where oid in (...)
其中(...)有可能有很多值(上万或上十万),且无规律,也不是从别的表查询出来的。
因此用in的语法是不行的。但因为这个语句要经常执行,所以用临时表或视图的方式
也是不行的。我现在的想法是用一个varray类型,大概如下
create type my_array of number;

declare
v my_array;
c number;
begin
....--这表示往v中设置了我所要的oid。
select value into c from a where a.oid in TABLE(v);
end;

但是TABLE(v)不能转换成一个列或表来使用????
有什么高见吗?

这个问题很久以前就提过,可每人解答

...全文
146 20 打赏 收藏 转发到动态 举报
写回复
用AI写文章
20 条回复
切换为时间正序
请发表友善的回复…
发表回复
myand 2001-12-14
  • 打赏
  • 举报
回复
用设置客户端的相关查询参数可能会比用SQL解决更有效
下了,bye
fake_wolf 2001-12-14
  • 打赏
  • 举报
回复
但这似乎和建立临时表差不多。
而且即使对another_view_as_oid_buffer不提交
也可能被运行别的函数而造成提交。对这些函数我
没有理由控制其事务

用SQL解决,应该可以。
myand 2001-12-14
  • 打赏
  • 举报
回复
修改 another_view_as_oid_buffer 而不提交,也许可以达到目的 - 没有把握
myand 2001-12-14
  • 打赏
  • 举报
回复
如果一定要用SQL解决 -- 可能不行
是否可以 select oid from another_view_as_oid_buffer
fake_wolf 2001-12-14
  • 打赏
  • 举报
回复
myand兄,有什么好办法吗
nononono 2001-12-14
  • 打赏
  • 举报
回复
非不要用临时表, 我想不出好办法.

准备下了.

bye
fake_wolf 2001-12-14
  • 打赏
  • 举报
回复
对,完全正确
其实这个oid buffer 只是其一个查询条件的作用
myand 2001-12-14
  • 打赏
  • 举报
回复
只修改客户端的oid buffer,不提交?不同步?
fake_wolf 2001-12-14
  • 打赏
  • 举报
回复
那是在中断session后。但如果我是在一个很长的一次session中,
建立临时表不好。请相信我,建临时表不合适。
从sql方面想想办法,怎么样
的确不怎么刷新。
哥们,走的时候告诉我一声,怎么样!!一定帮忙解决这个问题
nononono 2001-12-14
  • 打赏
  • 举报
回复
这会的版面怎么不刷新了?
nononono 2001-12-14
  • 打赏
  • 举报
回复
临时表可以不主动删除, 系统会在你用不上时自动删除.

fake_wolf 2001-12-14
  • 打赏
  • 举报
回复
那临时表什么时候能删除呢
是否能从SQL方面下手呢
nononono 2001-12-14
  • 打赏
  • 举报
回复
可临时表就是这样用的.

每个查询都建立一个临时表 -- 正常
fake_wolf 2001-12-14
  • 打赏
  • 举报
回复
不能用临时表,因为我现在所作的是一个基于oracle的系统,对表的查询是很频繁
的,而且表也很多。我总不能对每个表在查询时都建立一个临时表吧!而且在都用户
的情况下情况更糟
panther_totem 2001-12-14
  • 打赏
  • 举报
回复
学习。。
nononono 2001-12-13
  • 打赏
  • 举报
回复
"动态的建立,导数据,删除临时表,这个方法不可取", 我不这样认为. 还是用临时表好处理.
fake_wolf 2001-12-13
  • 打赏
  • 举报
回复
举例如下:
首先
select oid from a where ..
这样我就获的了一个oid集set。我目前是
在客户端保留一个oid的内存块,然后
很有可能我会对这个set增加,删除一些oid
但这些并不影响到表a。
在这些过程中也有可能要在基于oid集的对表
a的一个查询,就象我上面写的。
不知道我写明白了没
如果把oid集放到一个临时表里,将在我的程序里
必须动态的建立,导数据,删除临时表,这个
方法不可取
myand 2001-12-13
  • 打赏
  • 举报
回复
举个例子?
经过了很多次的insert,delete,update等操作,只要事务提交后就能用,好象没关系
fake_wolf 2001-12-13
  • 打赏
  • 举报
回复
(...)里的oid也是从这个表里来的,但是经过了很多次的
insert,delete,update等操作(仅仅是对被选出来的oid,
而不是对表a)????
myand 2001-12-13
  • 打赏
  • 举报
回复
能否写得在细点?
比如in(..)到底从那里来?

34,603

社区成员

发帖
与我相关
我的任务
社区描述
MS-SQL Server相关内容讨论专区
社区管理员
  • 基础类社区
  • 二月十六
  • 卖水果的net
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

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