Mih*_*ael 1 sql oracle plsql oracle19c
这个问题源于此,但我遇到了另一个不同的问题。
我正在使用 PL/SQL 生成大文本输出
set serveroutput on size 1000000; -- maximum limit
declare my_text clob;
begin
for c in ( select letter from dummy_table )
loop
my_text := my_text || c.letter || chr(10);
end loop;
dbms_output.put_line(my_text);
end;
Run Code Online (Sandbox Code Playgroud)
在真实的代码中,我当然不只是连接单个字母,字符串更长,并且连接有更多元素,整体也更长。我已经将输出缓冲区大小增加到 1000000(这是最大值),这有所帮助,但是当我进一步扩展串联时,又开始失败 - 但现在出现了与输出大小无关的不同错误消息,但我通过实验知道它确实有效,因为如果我减少行数它就会起作用。
是否可以将 clob 保存到临时表中?clob 是这里使用的正确数据类型吗?
这感觉像是一个 XY 问题,解决方案是不使用DBMS_OUTPUT而不是尝试解决您可能无法更改的问题。
创建一个表:
CREATE TABLE table_name (datetime DATE, value CLOB);
Run Code Online (Sandbox Code Playgroud)
然后直接INSERT进入表格:
DECLARE
my_text clob;
BEGIN
FOR c IN (SELECT letter FROM dummy_table)
LOOP
my_text := my_text || c.letter || chr(10);
END LOOP;
INSERT INTO table_name (datetime, value) VALUES (SYSDATE, my_text);
END;
/
Run Code Online (Sandbox Code Playgroud)
同样,您可以将其写入CLOB文件。
CLOB然后使用您正在使用的任何客户端应用程序(SQL Developer、Java、PHP 等)从表中读取值。
| 归档时间: |
|
| 查看次数: |
71 次 |
| 最近记录: |