oracle删除表,如果表不存在,就报错,在跑大型脚本(脚本长且耗时的时候)比较麻烦,一般希望的是点开始然后脚本运行到结束,不可能一直盯着屏幕等弹出提示手工点掉,mysql就很好有drop table if not exist功能 CREATE OR REPLACE PROCEDURE p_drop_table_if_exist(p_vc2_tbl_name IN all_tables.table_name%TYPE, p_vc2_tbl_owner IN all_tables.owner%TY…
需求:Oracle数据库delete删除普通堆表千万条历史记录. 直接删除的影响: 1.可能由于undo表空间不足从而导致最终删除失败的问题: 2.可能导致undo表空间过度使用,影响到其他用户正常操作. 改进方案:每删除1k行就提交一次.(这样就把一个大事物拆分成了若干个小事物) 注意:下面方法以删除2014年之前的所有记录为例,请根据你的实际情况修改,防止误操作. 方法1 declare cursor [del_cursor] is select a.*, a.rowid row_id fr…
Oracle中存储过程传入表名: 一.动态清除该表的数据 create or replace procedure p_deletetable(i_tableName in varchar2)  as  --定义变量存放动态的SQL语句 dynamic_drop_sql varchar2(500);  begin  dynamic_drop_sql :=  'DELETE  FROM ' || i_tableName ; --执行动态SQL语句  execute immediate dynamic…
1.权限问题 alter routine 编辑或删除存储过程 create routine 建立存储过程 execute 创建存储过程 2.存储过程相关的一些命令 show procedure status\G  查看数据库中有哪些存储过程 show procedure status where db = 'db_name'\G 查看指定数据库(db_name)中有哪些存储过程 select name from mysql.proc where db = 'db_name';  查看指定数据库(…
在9i中Oracle引入了flashback的概念,可以将数据返回到某个时间点,但对于诸如drop/truncate等DDL语句却尚不支持.进入Oracle10g,这一缺陷得到了弥补.可以将丢失掉的表,通过flashback命令直接找回.非常简单且易用. 1.首先,可以查看当前schema中的表: SQL> select * from tab; TNAME                    TABTYPE  CLUSTERID ------------------------ -------…
  1.spool命令 spool "D:\test.txt" spool off SQL> host cls 2.创建一个表 SQL> --条件(1):有创建表的权限,(2):有表空间 SQL> desc t4; 名称                                      是否为空? 类型 ----------------------------------------- -------- ------------------------…
应用场景:因为数据库中的数据涉及机密信息,希望一次性能删除掉所有数据,只保留数据表结构,供新项目开发程序用 测试结果:经查询已删除所有数据 存在问题:数据表如果存在外键的话下面脚本可能执行不成功,请自行删除或者过滤掉该表,见下图 操作办法:直接将下面的脚本内容复制到PQSQL中执行即可 --Oracle使用游标删除所有用户数据表中的所有记录脚本 declare mystring NVARCHAR2(1000):=''; --定义要输出的字符串变量 cursor mycursor is --定义游…
Oracle分区表彻底删除的办法当对一个不再使用的分区表进行drop后,查询user_tab_partitions视图发现出现如下不规则的分区表表名:SQL> select distinct table_name from user_tab_partitions;BIN$l+Pv5l1jCMXgQKjAyQFA0A==$0这样很容易导致自己写的"自动增加表的分区"的存过发生错误,因此为了避免再修改存过,只能把这些不规则的表名删除才行.现提供如下方法彻底删除这些不规则的表名. 其实…
1,删除表 drop 1.1 执行drop table table_name  语句 被 drop后的表被放在用户回收站(user_recyclebin)里,而没有被直接删除掉,回收站里的表可以被恢复. 通过查询回收站user_recyclebin获取被删除的表信息,然后使用语句如下语句: flashback table user_recyclebin.object_name [user_recyclebin.original_name] to before drop [rename to ne…
Oracle数据库delete删除普通堆表千万条历史记录. 直接删除的影响: 1.可能由于undo表空间不足从而导致最终删除失败的问题: 2.可能导致undo表空间过度使用,影响到其他用户正常操作. 改进方案:每删除1k行就提交一次.(这样就把一个大事物拆分成了若干个小事物) 注意:下面方法以删除2014年之前的所有记录为例,请根据你的实际情况修改,防止误操作. 方法 declare      cursor [del_cursor] is select a.*, a.rowid row_id f…