使用存储过程来创建表的错误。

djwdjw 2003-10-16 09:32:32
我想使用存储过程来创建一个表,下面这段代码能执行成功
SQL> declare
2 tabstr varchar2(100):='create table djw(n Number)';
3 begin
4 execute immediate tabstr;
5* end;
SQL> /

PL/SQL 过程已成功完成。

SQL> desc djw
名称 是否为空? 类型
----------------------------------------- -------- -----------
N NUMBER


但是如果创建存储过程就得到下面的错误:
SQL> create or replace procedure createTable
2 as
3 begin
4 execute immediate 'create table djw(n number)';
5 end;
6 /

过程已创建。

SQL> exec createTable
BEGIN createTable; END;

*
ERROR 位于第 1 行:
ORA-01031: 权限不足
ORA-06512: 在"SYSTEM.CREATETABLE", line 4
ORA-06512: 在line 1
怎样才能使得存储过程可以使用create table ..来创建表呢?
...全文
58 6 打赏 收藏 转发到动态 举报
写回复
用AI写文章
6 条回复
切换为时间正序
请发表友善的回复…
发表回复
LGQDUCKY 2003-10-16
  • 打赏
  • 举报
回复
在存储过程里面CREATE TABLE 一定要有CREATE TABLE的权限。
名称已由现有对象使用
是你所建立的对象存在,换个名称。
djwdjw 2003-10-16
  • 打赏
  • 举报
回复
但现在错误又变成了:
*
ERROR 位于第 1 行:
ORA-00955: 名称已由现有对象使用
ORA-06512: 在"SYSTEM.CREATETABLE", line 4
ORA-06512: 在line 1
beckhambobo 2003-10-16
  • 打赏
  • 举报
回复
grant create any table to SYSTEM;
djwdjw 2003-10-16
  • 打赏
  • 举报
回复
没有人帮我解决一下吗?
djwdjw 2003-10-16
  • 打赏
  • 举报
回复
我是以system的身份登录SQL*plus,创建存储过程createTable并执行它,为什么system自己创建的存储过程自己没有权利调用呢?而且我使用grant resource to system(在以system登录的情况下,似乎没有这个必要)授权成功,却仍然显示上面的错误,请高手帮帮忙。
bzszp 2003-10-16
  • 打赏
  • 举报
回复
grant resource to youruser;

17,082

社区成员

发帖
与我相关
我的任务
社区描述
Oracle开发相关技术讨论
社区管理员
  • 开发
  • Lucifer三思而后行
  • 卖水果的net
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

试试用AI创作助手写篇文章吧