日期:2014-05-17  浏览次数:20670 次

这个存储过程什么错?

create or replace procedure HomeNews
is
begin
create table cslist (
id number,
name nvarchar2(128)
)
tablespace YMS
pctfree 10
initrans 1
maxtrans 255
storage
(
initial 1088k
minextents 1
maxextents unlimited
);
insert into cslist(id,name) select id,name from info where m_id = 98;
select * from cslist;
drop table cslist;
end;
/

------解决方案--------------------
存储过程里面不能直接调用DDL语句create table, drop table.
用动态语句execute immediate 'create table ...'
------解决方案--------------------
楼上正解
动态SQL execute immediate 避免直接授权
------解决方案--------------------
table cslist 
这个表开始时不存在的, 你后面 18 19  20行能运行的前提是表存在,
所以你这个过程是错的
------解决方案--------------------
那你点下那个EXECUTE那人按扭吧。可能你换了快捷键
------解决方案--------------------
你可以在command模式下执行,如果出错,还有明确的错误提示。