Oracle 如何将CLOB类型的参数传递给具有100k+;长度字符串?

Oracle 如何将CLOB类型的参数传递给具有100k+;长度字符串?,oracle,plsql,oracle12c,Oracle,Plsql,Oracle12c,当我用100k+长度的字符串尝试上述过程时,它抛出了ORA-20002:-20002:ORA-20002:-6502:ORA-06502:PL/SQL:数值或值错误\nORA-06512:at 如何将值传递给存储过程? 我们需要增加db\U块大小来增加CLOB数据类型的容量吗?我想你弄错了,一个CLOB数据类型可以用dbms\U输出的put\u行过程存储什么了 Create procedure p(p1 clob) as ( ##code goes here.. ); exec p('10

当我用100k+长度的字符串尝试上述过程时,它抛出了ORA-20002:-20002:ORA-20002:-6502:ORA-06502:PL/SQL:数值或值错误\nORA-06512:at

如何将值传递给存储过程?
我们需要增加db\U块大小来增加CLOB数据类型的容量吗?

我想你弄错了,一个CLOB数据类型可以用
dbms\U输出的
put\u行
过程存储什么了

 Create procedure p(p1 clob) as 
(
##code goes here..
);

exec p('100k+ length string...');
该项是一个varchar2对象。因此,如果要打印大于varchar限制的clob输出,则需要创建不同类型的代码。在我的例子中,我总是使用以下代码打印clob列:

DBMS_OUTPUT.PUT_LINE ( item IN VARCHAR2);

我认为您弄错了CLOB数据类型可以通过
dbms\u输出的过程
put\u line
存储什么了

 Create procedure p(p1 clob) as 
(
##code goes here..
);

exec p('100k+ length string...');
该项是一个varchar2对象。因此,如果要打印大于varchar限制的clob输出,则需要创建不同类型的代码。在我的例子中,我总是使用以下代码打印clob列:

DBMS_OUTPUT.PUT_LINE ( item IN VARCHAR2);

可以像其他数据类型()一样将clob传递给过程:

clob len=131071


可以像其他数据类型()一样将clob传递给过程:

clob len=131071


这与打印或显示CLOB值无关。它是关于将具有较大值的CLOB类型的值传递给存储过程的。您应该对此进行解释。您的代码没有这样说,因为在您的示例中,您使用的是dbms_output.put_line,它对输入参数的varchar2进行隐式转换。那么,你想把一个输入参数传递给一个clob大于100K的过程吗?是的,我想把它作为输入参数传递给一个100K+长度的过程。那么,你想用它做什么??这是给你答案的主要问题,不是打印或显示CLOB值。它是关于将具有较大值的CLOB类型的值传递给存储过程的。您应该对此进行解释。您的代码没有这样说,因为在您的示例中,您使用的是dbms_output.put_line,它对输入参数的varchar2进行隐式转换。那么,你想把一个输入参数传递给一个clob大于100K的过程吗?是的,我想把它作为输入参数传递给一个100K+长度的过程。那么,你想用它做什么??这是为您提供答案的主要问题—您调用的过程将VARCHAR2作为参数传递。您应该声明一个CLOB变量,填充它并传递该变量。您正在调用将VARCHAR2作为参数传递的过程。您应该声明一个CLOB变量,填充它并传递该变量。