oracle,表判断是否存在,不存在则先创建表,再执行语句,存在则执行语句,但是为什么建好打叉报错

createorreplaceprocedureproc_dept_monthhoursasv_sqlvarchar2(20000):='';v_flagnumber(1... create or replace
procedure proc_dept_monthhours as
v_sql varchar2(20000):='';
v_flag number(10,0):=0;
begin
select count(*) into v_flag from user_TABLES where table_name='HO_DEPT_MONTHHOURS';
if v_flag>0 then
begin
insert into test_dept_monthhours(yearmonth,branch,subtotal)
select yearmonth,branch,sum(dm)+sum(sm)+sum(smt)+sum(sup)+sum(ltnc)
from ehruser.HO_DEPT_MONTHHOURS@traininglink
group by branch,yearmonth;
else
v_sql='create table HO_DEPT_MONTHHOURS
(
yearmonth VARCHAR2(7),
branch NVARCHAR2(200),
subtotal NUMBER
) ';
v_sql='create unique index TRDHR.HO_DEPT_MONTHHOURS_BRANCH on HO_DEPT_MONTHHOURS (BRANCH)
tablespace TRAINING_DATA
pctfree 10
initrans 2
maxtrans 255
storage
(
initial 64K
next 1M
minextents 1
maxextents unlimited
)';
v_sql='tablespace TRAINING_DATA
pctfree 10
initrans 1
maxtrans 255
storage
(
initial 64K
next 1M
minextents 1
maxextents unlimited
)';
execute immediate v_sql;
insert into test_dept_monthhours(yearmonth,branch,subtotal)
select yearmonth,branch,sum(dm)+sum(sm)+sum(smt)+sum(sup)+sum(ltnc)
from ehruser.HO_DEPT_MONTHHOURS@traininglink
group by branch,yearmonth;
end;
end if;
commit;
end proc_dept_monthhours;
展开
 我来答
Dododododododododo
2015-10-23 · 超过52用户采纳过TA的回答
知道小有建树答主
回答量:152
采纳率:0%
帮助的人:90.6万
展开全部
create or replace procedure proc_dept_monthhours as
v_sql varchar2(20000) := '';
v_flag number(10, 0) := 0;
begin
select count(*)
into v_flag
from user_TABLES
where table_name = 'HO_DEPT_MONTHHOURS';
if v_flag > 0 then
insert into test_dept_monthhours
(yearmonth, branch, subtotal)
select yearmonth,
branch,
sum(dm) + sum(sm) + sum(smt) + sum(sup) + sum(ltnc)
from ehruser.HO_DEPT_MONTHHOURS@traininglink
group by branch, yearmonth;
else
begin
v_sql := 'create table HO_DEPT_MONTHHOURS
(
yearmonth VARCHAR2(7),
branch NVARCHAR2(200),
subtotal NUMBER
) ';
v_sql := 'create unique index TRDHR.HO_DEPT_MONTHHOURS_BRANCH on HO_DEPT_MONTHHOURS (BRANCH)
tablespace TRAINING_DATA
pctfree 10
initrans 2
maxtrans 255
storage
(
initial 64K
next 1M
minextents 1
maxextents unlimited
)';
v_sql := 'tablespace TRAINING_DATA
pctfree 10
initrans 1
maxtrans 255
storage
(
initial 64K
next 1M
minextents 1
maxextents unlimited
)';
execute immediate v_sql;
insert into test_dept_monthhours
(yearmonth, branch, subtotal)
select yearmonth,
branch,
sum(dm) + sum(sm) + sum(smt) + sum(sup) + sum(ltnc)
from ehruser.HO_DEPT_MONTHHOURS@traininglink
group by branch, yearmonth;
end;
end if;
commit;
end proc_dept_monthhours;
本回答被网友采纳
已赞过 已踩过<
你对这个回答的评价是?
评论 收起
百度网友ce9e08b7
2015-10-22 · TA获得超过1871个赞
知道小有建树答主
回答量:1675
采纳率:0%
帮助的人:1237万
展开全部
报什么错,把错误信息贴出来
更多追问追答
追问
我现在oracle出了点问题,你可以粘到oracle试试,就是建好存储过程上面打一个红叉,不能运行
追答

//把你的SP修改了一下。编译看看,如果没错,就运行下,看报什么错误。代码太长,已经私信给你。


已赞过 已踩过<
你对这个回答的评价是?
评论 收起
收起 2条折叠回答
推荐律师服务: 若未解决您的问题,请您详细描述您的问题,通过百度律临进行免费专业咨询

为你推荐:

下载百度知道APP,抢鲜体验
使用百度知道APP,立即抢鲜体验。你的手机镜头里或许有别人想知道的答案。
扫描二维码下载
×

类别

我们会通过消息、邮箱等方式尽快将举报结果通知您。

说明

0/200

提交
取消

辅 助

模 式