ORACLE数据库创建动态表
最近公司一个项目代码里的定时任务无法执行,查验代码良久,奈何代码过于老旧,开发人员换了一茬又一茬,现在都无法理清,故无奈只好到数据库里重新写存过,配置定时任务。
在写存过时,由于检测及安全性能要求,需要备份数据,设计是每次调用存过时就创建一张新表记录历史数据,开始时是准备直接一条语句搞定:
BEGIN
execute immediate 'create table tmp_a_'||to_char(sysdate, 'yyyymmdd')||' as select * from a'; END;
但是执行时报错,找了良久未发现问题所在,自己怀疑是拼接表名时字符串的问题,所以我调整了一下上面的语句:
is
tableName varchar2(30);
BEGIN
tableName :='tmp_a_'||to_char(sysdate,'yyyymmdd' );
execute immediate 'create table ' || tableName ||' as select * from a'; END;
这样就可以了,能够执行成功,问题也完美解决!
PS:在存过里执行create语句时,有时会报“权限不足!”,这是因为Oracle8i及其后的版本,Oracle引入调用者(invoker)权限,使得对象可以以调用者身份和权限执行。遇到存储过程中带有Create Table的这种情况,通常解决方法是进行显式的系统权限: grant create table to username;但是,此方法太笨,因为有可能执行一个存储过程,需要很多不同权限(oracle对权限划分粒度越来越细)。最好的方法是,利用 oracle 提供的方法,在创建存储过程时,加入 Authid Current_User 条件进行权限分配。
create or replace procedure p_test Authid Current_User
is
begin
execute immediate 'create table tmp(id number(1))';
end p_test;
分享一下,希望能帮到和我一样遇到此类问题的道友们!
ORACLE数据库创建动态表的更多相关文章
- Oracle 数据库创建、表空间创建、用户创建 步骤
一.数据库创建: 1.利用数据库配置助手(DBCA,Database Configuration Assistant)图形化方式 2.创建完成之后,找到 D:\oracle\product\11.2 ...
- Oracle数据库创建表是有两个约束带有默认索引
Oracle数据库创建表是有两个约束带有默认索引.1.主键primary Key:唯一索引.非空2.唯一Unique:唯一索引,可以是空值如果没有设定主键和唯一约束,表中不会有默认索引的. 建立主键/ ...
- Oracle 删除用户和表空间////Oracle创建删除用户、角色、表空间、导入导出、...命令总结/////Oracle数据库创建表空间及为用户指定表空间
Oracle 使用时间长了, 新增了许多user 和tablespace. 需要清理一下 对于单个user和tablespace 来说, 可以使用如下命令来完成. 步骤一: 删除user drop ...
- Oracle数据库之动态SQL
Oracle数据库之动态SQL 1. 静态SQLSQL与动态SQL Oracle编译PL/SQL程序块分为两个种:一种为前期联编(early binding),即SQL语句在程序编译期间就已经确定,大 ...
- Oracle数据库对象(表空间/同义词/序列/视图/索引)
数据库对象 Oracle数据库对象: 数据库对象是数据库的组成部分,常常用 CREATE 命令进行创建,可以使用 ALTER 命令修改,用 DROP 执行删除操作. 种类: (1)表空间:所有的数据对 ...
- 实例讲解Oracle数据库设置默认表空间问题
实例讲解Oracle数据库设置默认表空间问题 实例讲解Oracle数据库设置默认表空间问题,阅读实例讲解Oracle数据库设置默认表空间问题,DBA们经常会遇到一个这样令人头疼的问题:不知道谁在O ...
- 4.mysql数据库创建,表中创建模具模板脚本,mysql_SQL99标准连接查询(恩,外部连接,全外连接,交叉连接)
mysql数据库创建,表创建模等模板脚本 -- 用root用户登录系统,运行脚本 -- 创建数据库 create database mydb61 character set utf8 ; -- ...
- Oracle数据库--解决单张表中数据量巨大(大数据、数据量上百万级别,后查询,更新数据等耗时剧增)
版权声明:本文为博主原创文章,未经博主允许不得转载. https://blog.csdn.net/QQ578473688/article/details/54561397 思路1:采用备份表 备份表中 ...
- Oracle 数据库创建导入
Oracle 数据库创建导入 由 Alma 创建, 最后一次修改 2018-06-04 14:37:50 在本章教程中,将教大家如何在Oracle 中创建导入数据库. 注意:本教程中的有些命令您可能并 ...
随机推荐
- spring和Quartz的集群(二)
一:前沿 写完了这两篇才突然想起来,忘记了最关键的东西,那就是在配置文件这里的配置,还有数据库的配置.这是郁闷啊!继续吧! 二:内容配置 我们在集成的时候需要自己配置一个quartz.properti ...
- Android程序始终横屏
在AndroidManifest.xml文件里面的activity标签中加入以下属性 android:screenOrientation="landscape" android:c ...
- linux iptables开放/关闭端口命令
在CentOS/RHEL 7以前版本上开启端口 #开放端口:8080/sbin/iptables -I INPUT -p tcp --dport 8080 -j ACCEPT#将更改进行保存/etc/ ...
- Flask中使用mysql
Flask中使用mysql 先安装相关模块: pip install Flask-MySQL 先准备一下数据库 登录: mysql -u root -p 创建Database和创建Table ...
- jQuery简单日历插件版
先来看demo:http://codepen.io/jonechen/pen/xOgZMz 插件代码: ; (function($) { var Calendar = function(ele, op ...
- JAVA中3种将byte转换为String的方法
HttpClient 类库中GetMethod类的getResponseBody方法返回的是byte[]类型,要操作起来不方便,我想把它转化成String类型. 查了网上的资料,有说法认为用这种方法比 ...
- 【BZOJ4104】解密运算 [暴力]
解密运算 Time Limit: 10 Sec Memory Limit: 512 MB[Submit][Status][Discuss] Description 对于一个长度为N的字符串,我们在字 ...
- [POI2004] SZP (贪心+拓扑排序)
[问题描述] Byteotian 中央情报局(BIA) 雇佣了许多特工. 他们每个人的工作就是监视 另一名特工. Byteasar 国王需要进行一次秘密行动,所以他要挑选尽量多的信得过的特工. 但 是 ...
- python dlib 面部轮廓实时检测
1.dlib 实现动态人脸检测及面部轮廓检测 模型下载连接 : http://dlib.net/files/ # coding:utf-8 import cv2 import os import dl ...
- 解决ie9以下下不支持html5和媒体查询(Media Queries)
ie9以下不支持媒体查询和html5,可以使用补丁完美兼容 1.html5shiv ie6~8不识别html5的新元素,可以通过使用html5shiv来解决 <!--[if lt IE 9]&g ...