oracle - 如何将 CLOB 类型的参数传递给具有 100k+ 长度字符串的 Oracle 存储过程?
问题描述
Create procedure p(p1 clob) as
(
##code goes here..
);
exec p('100k+ length string...');
当我用 100k+ 长度的字符串尝试上述过程时,它抛出 ORA-20002: -20002:ORA-20002: -6502:ORA-06502: PL/SQL: numeric or value error\nORA-06512: at
我们如何将值传递给存储过程?我们是否需要增加 db_block_size 来增加 CLOB 数据类型的容量?
解决方案
您可以像其他数据类型(在 db<>fiddle 上)一样将 clob 传递给过程:
create or replace procedure p (p1 clob) as
begin
dbms_output.put_line ('clob len='||length (p1));
end;
/
declare
c clob := '123';
begin
for i in 1..4 loop
dbms_lob.append (c, rpad ('A', 32767, 'A')); end loop;
p (c);
end;
/
克洛布 len=131071
推荐阅读
- javascript - 在 JavaScript 中扩展基 Array 类
- firefox - Firefox 索引数据库
- xml - 如何从 xml(包括标签)中提取完整的 html?
- ios - iOS AppID 以 * 开头
- typescript - 如何用 TypesScript 做类似 Free Monad 的东西?
- javascript - 得到“错误:插件/预设文件不允许导出对象,只有功能。” 来自 babel-preset-react-app/index.js
- c# - 搜索唯一标签名称
- mysql - mysql:每个子查询结果的返回列
- c# - 从 c# 转换为 C++/CLI VS2015
- python - 如何从不同的函数中获取字典(键和值)?