今天在编写存储过程,出现字符串缓冲区太小,
begin
EXECUTE IMMEDIATE '这里是超过5000的SQL字符串' 这里执行是没有问题的。
问题来了,因为我的判断和参数过多,所以传值不想用。
改写成:
begin
v_str?nvarchar2(5000);
v_str:='这里超出5000字符SQL字符串'
EXECUTE IMMEDIATE v_str;
执行报错ERR字符串缓冲区太小
后来想到用clob,写着?v_str clob;用这个直接报错。
然后我就翻起了百度,最有在CSDN一篇文章里,看到,有人提到Long类型,可以存储2G。
v_str LONG;
到此用 LONG问题解决。