oracle存储过程中使用create table as

qq_42230619 2018-06-04 10:13:53
我的存储过程是这样写的 调用的时候不能调用 是什么原因呢?
create or replace procedure test111
as
v_sql varchar2(2000);
begin
v_sql:='create table test222 as select
t.id,
sum(case when mod(t.amt,100)!=0 then 1 else 0 end)/count(1) as in_int_percent
from POL_TRANS t group by t.id';
execute immediate v_sql;
end;

请各位打什么看看有什么问题吗
需求是写一个存储过程 把上面那句select查询出的结果集存到一张临时表里面去
还请大神们多多指教
...全文
2255 4 打赏 收藏 转发到动态 举报
写回复
用AI写文章
4 条回复
切换为时间正序
请发表友善的回复…
发表回复
「已注销」 2018-06-05
  • 打赏
  • 举报
回复
这个过程第一次调度不存在问题,但是第二次调度就有问题了,因为表test222已经存在,这种需要加个以判断user_tables中是否存在这个表,存在需要删除后才能重建,而且写存储过程最好习惯excepiton来抛出异常,方便知道是什么问题
  • 打赏
  • 举报
回复
你用dbms_output.put_line把v_sql输出 看看你的字符串 拼接有木有问题
卖水果的net 2018-06-04
  • 打赏
  • 举报
回复
什么提示,你这个语句,目测没有问题。
weixin_42383447 2018-06-04
  • 打赏
  • 举报
回复
写的没有问题

17,086

社区成员

发帖
与我相关
我的任务
社区描述
Oracle开发相关技术讨论
社区管理员
  • 开发
  • Lucifer三思而后行
  • 卖水果的net
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

试试用AI创作助手写篇文章吧