ORACLE存储过程中,可以动态创建表么?(表名跟当前时间有关)

zheyimiao 2012-02-21 03:15:51
如题:
我的code如下:

create or replace procedure g_test is
begin
tab_name varchar2(20);
SQL_STR varchar2(100);

select sysdate into tab_name from dual;

SQL_STR := 'create table ' || 'username.temp_' || substr(tab_name,1,2) || ' (no int)';

EXECUTE IMMDIATELY SQL_STR;

end g_test;

在命令行中调用该存储过程时却报没有权限,这是什么原因呢?正确的code应该是什么样的呢?
...全文
484 9 打赏 收藏 转发到动态 举报
写回复
用AI写文章
9 条回复
切换为时间正序
请发表友善的回复…
发表回复
renfengjun 2012-02-26
  • 打赏
  • 举报
回复
使用sys用户
执行 grant create table to <用户>;
然后再执行你的procedure。
zheyimiao 2012-02-26
  • 打赏
  • 举报
回复
这样的话,我是不是有不止是我用户下的建表权限,还有了在别的用户下的建表权限呢?
[Quote=引用 8 楼 renfengjun 的回复:]
使用sys用户
执行 grant create table to <用户>;
然后再执行你的procedure。
[/Quote]
zheyimiao 2012-02-24
  • 打赏
  • 举报
回复
up,up,up
zheyimiao 2012-02-21
  • 打赏
  • 举报
回复
那直接权限,只需要创建我的用户名下的表,这怎么赋权限呢
grant create any table to <用户>,这样的话是不是把其他用户名下的表的创建权限也给我了?
[Quote=引用 5 楼 forgetsam 的回复:]
引用 4 楼 zheyimiao 的回复:
我在自己的用户名下创建表,直接create username.temp_20120221是可以创建的,为什么存储过程中就不行喃?


封装体内需要直接权限 封装体外只需要间接权限。
[/Quote]
forgetsam 2012-02-21
  • 打赏
  • 举报
回复
[Quote=引用 4 楼 zheyimiao 的回复:]
我在自己的用户名下创建表,直接create username.temp_20120221是可以创建的,为什么存储过程中就不行喃?
[/Quote]

封装体内需要直接权限 封装体外只需要间接权限。
zheyimiao 2012-02-21
  • 打赏
  • 举报
回复
我在自己的用户名下创建表,直接create username.temp_20120221是可以创建的,为什么存储过程中就不行喃?
mingchaoyan 2012-02-21
  • 打赏
  • 举报
回复
你建立和调用时同一个用户?如果不是调用的那个用户应该要有execute any procedure 系统权限的
forgetsam 2012-02-21
  • 打赏
  • 举报
回复
你的当前用户授权是不是 直接grant dba to <用户> 搞定的

如果是 grant create any table to <用户>,然后再运行就可以了
night_vincent 2012-02-21
  • 打赏
  • 举报
回复
重新拿管理员的权限给当期用户赋创建表的权限
- 强大的代码生成功能 自动生成三层架构的代码. 强大的模板代码生成引擎,可根据模板生成各种代码. 支持新建整个项目和批量代码生成功能. 自动生成ASP.NET页面及后台代码. 自动生成增、删、改、查的存储过程和数据记录的SQL脚本. 完全可以自定制的开源代码生成模板组件管理. 多种类型数据库集管理器 可支持SQL Server、Oracle、MySQL、OleDb、SQLite 等多种类型的数据库同时管理. 实现类似SQLServer2008的查询分析器的功能,方便编写代码时想进行数查询. 数据库表和字段的搜索功能. 版本更新: 1.新版本增加了强大的模板代码生成功能,可以自己创建和编辑模板动态生成代码。模板教程详见在线帮助。 2.增加了根据模板批量生成代码,可以同时生成多个表的多个模板。 3.增加了存储过程前缀@的自定义配置功能,工具-选项-数据类型映射。 4.增加了针对视图的批量代码生成,生成代码时可以选择视图。 5.增加了按"表名"搜索功能,并且选表名可以打开代码生成器。 6.数据类型映射的配置功能完善。 7.新建项目,选择VS版本的位置调整。 8.修正DAL基于sql的生成方式,UPdate方法不能更新空值的问题。 9.修正了timestamp时间戳列更新问题,在Update方法排除更新该列。 10.修正了在没有数据库连接的时候代码生成设置保存报错的问题。 11.修正了模板代码生成缺少表描述信息的问题。 强大便捷的日常开发工具 自动生成数据库结构文档. Web项目发布,方便网站日常的升级和更新. C#ToVB.NET代码转换器.

17,086

社区成员

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

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