没有装 Oracle (这玩意太大了),用的在线学习使用: https://livesql.oracle.com/
测试 clob 本身是能存储长字符串( clob 最大 4GB 容量),这条语句能正常执行:
declare txt clob:=''; i int:=0; begin
while i<50*1000 loop
txt:=txt||'a'; i:=i+1;
end loop;
dbms_output.put_line('txt: '||dbms_lob.getlength(txt));
end;
如果一条 sql 里面包含了 32k 以上字符串(指:sql 里所有字符串总长度),sql 就执行不了了:
declare txt clob:=''; begin
txt:=txt||'...'; -- ... 是手写长度为 1000 的字符串
txt:=txt||'...';
-- 这里省略了手写 50 个 txt:=txt||'...'; -- 测试最多能放 32 行,再多一行就不行了
dbms_output.put_line('txt: '||dbms_lob.getlength(txt));
end;
淦。目前使用到的唯一存在这种恶心问题的数据库。官方 limit 文档: https://docs.oracle.com/en/database/oracle/oracle-database/21/lnpls/plsql-program-limits.html
这是一个专为移动设备优化的页面(即为了让你能够在 Google 搜索结果里秒开这个页面),如果你希望参与 V2EX 社区的讨论,你可以继续到 V2EX 上打开本讨论主题的完整版本。
V2EX 是创意工作者们的社区,是一个分享自己正在做的有趣事物、交流想法,可以遇见新朋友甚至新机会的地方。
V2EX is a community of developers, designers and creative people.