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

可以执行drop,alter等,就是一到create就异常,请问这是为什么,这里谢过了先... 可以执行drop,alter等,就是一到create就异常,请问这是为什么,这里谢过了先 展开
 我来答
llsh2009
2011-03-11 · TA获得超过3171个赞
知道小有建树答主
回答量:710
采纳率:100%
帮助的人:501万
展开全部
必须赋权才可以执行create语句,下面以create table为例,
在用户的sqlplus里执行
grant create table to 用户;
之后就可以在存储过程里的动态SQL里做包含create table的语句了。
同样 create view的话就应该执行
grant create view to 用户;

如:
str := 'create table 表名 '
execute immediate str;
红源没1A
2011-03-11
知道答主
回答量:20
采纳率:0%
帮助的人:5万
展开全部
查一下所在用户的权限,看是否有create 权限,如没有授权即可
追问
这是我的极限信息,看看我有没有create table 的权限,我看着像有,谢了
追答
授权 create any table ,而后再试试
已赞过 已踩过<
你对这个回答的评价是?
评论 收起
jack_fx
2011-03-11 · TA获得超过967个赞
知道大有可为答主
回答量:1050
采纳率:0%
帮助的人:953万
展开全部
存储过程不能自己使用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;
更多追问追答
追问
我就是这样写的,它执行不过去呀
追答
哪就是权限问题了
本回答被网友采纳
已赞过 已踩过<
你对这个回答的评价是?
评论 收起
daimm_know
2011-03-11 · TA获得超过891个赞
知道小有建树答主
回答量:304
采纳率:0%
帮助的人:248万
展开全部
你把异常信息贴出来. 要不怎么分析是什么原因引起的.
已赞过 已踩过<
你对这个回答的评价是?
评论 收起
收起 2条折叠回答
推荐律师服务: 若未解决您的问题,请您详细描述您的问题,通过百度律临进行免费专业咨询

为你推荐:

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

类别

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

说明

0/200

提交
取消

辅 助

模 式