我从SQL Server环境中,可以声明临时表与@table到来,但我读过你不能在oracle中做到这一点。创建临时表
我希望得到一个值500.000硬编码的ID从表中,但作为IN子句的1000的限制,我需要找到另一种方式。创建临时表并插入硬编码值,然后加入包含我需要的值的其他表是最好的方法吗?我希望它是基于会话的,所以当我关闭数据库客户端时,我希望临时表消失。我希望它是基于会话的,因此当我关闭数据库客户端时,我希望临时表消失。下面的代码是在oracle中正确的方式吗?
CREATE GLOBAL TEMPORARY TABLE Test(HardcodedId number(10))
ON COMMIT DELETE ROWS;
我也尝试过使用内部连接,并在连接来自双重选择的硬编码值,但是这会为每个值一列,我不能够使用参考加入与。是否可以将所有值插入到双列中的单个列中?
感谢您的输入。通过为500.000的值做这个表现会如何? – Henrik
我不希望这样的表现会那么好,因为那是数据库必须解析的一个巨大声明。对于特别的事情,我可能会使用union all和ins的组合,例如。 'select ... from ... where id in(<第1000个id的列表)union all select ... from ... where id in(<第2个1000 id列表)union all ...' – Boneist