oracle 存储过程,动态sql,execute immediate 字符串缓冲区太小

今天在编写存储过程,出现字符串缓冲区太小,

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问题解决。

展开阅读全文

没有更多推荐了,返回首页