oracle 存储过程中不能执行create语句,请问各位大虾是为什么?请支招,在线等

可以执行drop,alter等,就是一到create就异常,请问这是为什么,这里谢过了先

必须赋权才可以执行create语句,下面以create table为例,
在用户的sqlplus里执行
grant create table to 用户;
之后就可以在存储过程里的动态SQL里做包含create table的语句了。
同样 create view的话就应该执行
grant create view to 用户;

如:
str := 'create table 表名 '
execute immediate str;
温馨提示:内容为网友见解,仅供参考
第1个回答  2011-03-11
查一下所在用户的权限,看是否有create 权限,如没有授权即可追问

这是我的极限信息,看看我有没有create table 的权限,我看着像有,谢了

追答

授权 create any table ,而后再试试

第2个回答  2011-03-11
存储过程不能自己使用DDL语句,要使用动态语句来执行
参考下面的:
CREATE or replace function Code
Return Varchar2 as
vGlideCode Varchar2(20);
seq_year varchar2(4);
str varchar2(100);
begin
update tbl_seqYear set seqYear=to_char(sysdate, 'yyyy ');
str:= 'drop sequence xxSeq ';
execute immediate str;
str := 'create sequence xxSeq '
execute immediate str;
select xxSeq.nextval into vGlideCode from dual;
end if;
return(vGlideCode);
end;追问

我就是这样写的,它执行不过去呀

追答

哪就是权限问题了

追问

这是我的权限,帮我看有没有权限执行此操作?谢了

本回答被网友采纳
第3个回答  2011-03-11
你把异常信息贴出来. 要不怎么分析是什么原因引起的.

oracle 存储过程中不能执行create语句,请问各位大虾是为什么?请支招...
必须赋权才可以执行create语句,下面以create table为例,在用户的sqlplus里执行 grant create table to 用户;之后就可以在存储过程里的动态SQL里做包含create table的语句了。同样 create view的话就应该执行 grant create view to 用户;如:str := 'create table 表名 'execute immediate ...

相似回答