oracle 10g中怎样执行很长的sql语句呢(最长可能有10万+字符)
本来是定义了一个clob变量vc_sql存储的,然后executeimmediatevc_sql;报错,查了下说是11g才支持,10g上有什么办法可以实现这个功能啊如果把...
本来是定义了一个clob变量vc_sql存储的,然后execute immediate vc_sql;报错,查了下说是11g才支持,10g上有什么办法可以实现这个功能啊
如果把sql保存成一个文件也可以,不过我不知道在oracle存储过程中怎样执行文件中的sql
注:这个sql不能拆开执行的 展开
如果把sql保存成一个文件也可以,不过我不知道在oracle存储过程中怎样执行文件中的sql
注:这个sql不能拆开执行的 展开
5个回答
展开全部
DECLARE
lv_sql clob;--很长长很长的字符串 4G ,记住太长不能后在plsql不能打印,不能to_char,只要执---行就可以了,想要看结果可以写入一个表字段位clob,再select查看。
X number; --声明变量
BEGIN
x:=1; --给初值
FOR X IN REVERSE 1..10000 LOOP --reverse由大到小
lv_sql :=lv_sql || 'insert into testtable (aa) values(''111'')'|| ';';
END LOOP;
execute immediate lv_sql;
END;
---可以拼接可以很长很长,希望能帮到大家,然后点个赞,让更多的人知道
lv_sql clob;--很长长很长的字符串 4G ,记住太长不能后在plsql不能打印,不能to_char,只要执---行就可以了,想要看结果可以写入一个表字段位clob,再select查看。
X number; --声明变量
BEGIN
x:=1; --给初值
FOR X IN REVERSE 1..10000 LOOP --reverse由大到小
lv_sql :=lv_sql || 'insert into testtable (aa) values(''111'')'|| ';';
END LOOP;
execute immediate lv_sql;
END;
---可以拼接可以很长很长,希望能帮到大家,然后点个赞,让更多的人知道
展开全部
没有特别好的办法,SQL语句不能超过36767个字符,还是想办法拆开吧
已赞过
已踩过<
评论
收起
你对这个回答的评价是?
展开全部
例如
SQL>@C:\sql.sql
这样可以引用外部的sql语句来执行
SQL>@C:\sql.sql
这样可以引用外部的sql语句来执行
已赞过
已踩过<
评论
收起
你对这个回答的评价是?
展开全部
vc_sql clob;
execute immediate TO_CHAR(vc_sql);
这样试试吧
execute immediate TO_CHAR(vc_sql);
这样试试吧
追问
这样执行一些稍短的可以,长的还是会有问题:报错-6502 ORA-06502: PL/SQL: numeric or value error
已赞过
已踩过<
评论
收起
你对这个回答的评价是?
展开全部
定义个存储过程,调用不行吗
已赞过
已踩过<
评论
收起
你对这个回答的评价是?
推荐律师服务:
若未解决您的问题,请您详细描述您的问题,通过百度律临进行免费专业咨询