oracle 存储过程中不能执行create语句,请问各位大虾是为什么?请支招,在线等
答案:4 悬赏:70 手机版
解决时间 2021-04-15 22:16
- 提问者网友:捧腹剧
- 2021-04-15 13:25
oracle 存储过程中不能执行create语句,请问各位大虾是为什么?请支招,在线等
最佳答案
- 五星知识达人网友:持酒劝斜阳
- 2021-04-15 14:22
存储过程不能自己使用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;追问我就是这样写的,它执行不过去呀追答哪就是权限问题了追问这是我的权限,帮我看有没有权限执行此操作?谢了
参考下面的:
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;追问我就是这样写的,它执行不过去呀追答哪就是权限问题了追问这是我的权限,帮我看有没有权限执行此操作?谢了
全部回答
- 1楼网友:三千妖杀
- 2021-04-15 17:42
查一下所在用户的权限,看是否有create 权限,如没有授权即可追问这是我的极限信息,看看我有没有create table 的权限,我看着像有,谢了追答授权 create any table ,而后再试试
- 2楼网友:从此江山别
- 2021-04-15 16:58
你把异常信息贴出来. 要不怎么分析是什么原因引起的.
- 3楼网友:低血压的长颈鹿
- 2021-04-15 15:19
必须赋权才可以执行create语句,下面以create table为例,
在用户的sqlplus里执行
grant create table to 用户;
之后就可以在存储过程里的动态SQL里做包含create table的语句了。
同样 create view的话就应该执行
grant create view to 用户;
如:
str := 'create table 表名 '
execute immediate str;
在用户的sqlplus里执行
grant create table to 用户;
之后就可以在存储过程里的动态SQL里做包含create table的语句了。
同样 create view的话就应该执行
grant create view to 用户;
如:
str := 'create table 表名 '
execute immediate str;
我要举报
如以上问答信息为低俗、色情、不良、暴力、侵权、涉及违法等信息,可以点下面链接进行举报!
大家都在看
推荐资讯