sql文中。in(...) oracle对()内的参数 有没有个数的限制?

Posted

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了sql文中。in(...) oracle对()内的参数 有没有个数的限制?相关的知识,希望对你有一定的参考价值。

工作中遇到的问题。 in(..) ()里的参数 可能会达到几百个。 听说。oracle对于这个参数的个数有限制。没有查到。找一高手帮解答。

参考技术A sql中,in后面是可以跟查询语句,只要是一个结果集就行,对于是否有个数限制,倒还真没遇到,建议你把你的参数写成select语句形式,实际测试一下 参考技术B declare
i number;
r number;
str long := '';
begin
for i in 1 .. 1000 loop
str := str || i || ',';
r:=i;
end loop;
execute immediate 'select 1 from dual where 1 in (' || str||to_char(r+1) || ')';
end;

最大数量不超过1000个,否则报错oracle 10g下

ORA-01795: 列表中的最大表达式数为 1000
参考技术C 最大数量不超过1000个,否则报错oracle 10g下

ORA-01795: 列表中的最大表达式数为 1000
参考技术D in()参数达到几百个?你确定你要把这几百个参数一个个的写出来?
你应该采用变通的办法
in()这个()中还可以接收select 查询语句例如
select * from emp where deptno in (select deptno from dept)
第5个回答  2011-09-29 据说最多1000个。

以上是关于sql文中。in(...) oracle对()内的参数 有没有个数的限制?的主要内容,如果未能解决你的问题,请参考以下文章

如何在oracle存储过程中执行动态sql语句

病人的Oracle sql查询

对 Oracle 存储函数的 JDBC 调用 - “结构表”类型的 IN 参数

plsql查询语句中的not in啥意思

Oracle归档日志管理

ORACLE 常用sql用法和及注意事项