CREATE function f4001 return varchar2
is
begin
return rpad('*', 4100, '*');
end;
select f4001() from dual;
不起作用:SQL缓冲区太小
因此,要为SQL变量赋值,我使用该变量:
variable buffer varchar(32000);
execute :buffer = f4001();
我可以打印出来:
print buffer
但我不能提示它。或者将其用作PowerShell函数的参数:
host powershell echo '&buffer'
因此,我必须使用‘定义’或‘列’。
定义:我还没有找到一种方法来给出带有定义的pl/SQL函数的结果。我所能做的就是:
define buffer= cte
列:仅适用于N>4000的varchar(N)。
column buffer new_value buffer
select f3999 as buffer from dual
好的
select f4001 as buffer from dual
缓冲区太小
2条答案
按热度按时间fumotvh31#
用lob替换varchar2类型确实帮助我解决了“缓冲区太小”的问题。
所以,换句话说,试试这个:
和
y4ekin9u2#
Create Function文档说明:
数据库从调用函数的环境派生返回值的长度、精度或小数位数。
您的环境是SQL,在其中,varchar2被限制为4000个字符。
怎么办呢?
MAX_STRING_SIZE
设置为EXTENDED
(则最大大小为32767而不是4000),或者CLOB
数据类型