Oracle中的最大语句长度是多少?

12

我正在构建一个包含数据的 SQL 语句,但我想知道在 Oracle 10g 中是否会超过最大语句长度。

这个语句大约有320万字节,无法分割,必须全部解析。

在投入太多时间之前,我想知道我是否会受到语句长度的限制。

我正在使用 SQL Developer,但我认为只要服务器可以做到,SQL Developer 也可以做到。


“request”是什么意思?我运行了一个包含插入语句的20.1MB脚本。如果代码被BEGIN/END关键字包围,SQLDeveloper会挂起。如果命令类似于脚本,则可以顺利运行。 - Florin Ghita
1
@FlorinGhita 我的意思是只有一条语句。它将是一个MERGE ... USING,其中USING子句由许多SELECT组成,这些SELECT将被UNION起来。 - BenoitParis
最坏的情况下,只需创建一个视图 ;) - Plouf
你在提出问题。不要将数据放入SQL语句中,例如将其放入表格中或绑定它。 - Jeffrey Kemp
2个回答

17

没有固定的数字。请参阅“逻辑数据库限制”:http://docs.oracle.com/cd/B19306_01/server.102/b14237/limits003.htm

“SQL语句的最大长度取决于许多因素,包括数据库配置、磁盘空间和内存。”

您可能还会受到其他限制的影响,例如子查询的最大级别。

考虑到PL/SQL过程的最大长度为2000-3000行,我认为你可能会在使用3M字节查询时遇到问题。如果它能工作的话,解析时间将会“有趣”。


嗨,Chris!你有估算最大尺寸的实际经验吗?文档中的这个短语真的很令人沮丧。 - Alexey Trofimov
我从未有过使用如此长的语句的必要,所以不,我没有任何实际经验。 - Chris
1
我明白了,谢谢。只是意外地遇到了这种情况,一个长度为226K的查询(带有许多自动生成的“IN (...)”子句)会导致错误,而相同结构的缩小到100K的查询则可以正常完成。 - Alexey Trofimov
@AlexeyTrofimov 也许你达到了IN子句上限的1000个元素? - WesternGun

-1

你的链接指向“TimesTen In-Memory Database Reference”,因此我认为这相当误导,考虑到问题更多地涉及到Oracle的SQL服务器。 - Tobias Meyer

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接