Oracle使用游标删除所有用户数据表中的所有记录脚本

应用场景:因为数据库中的数据涉及机密信息,希望一次性能删除掉所有数据,只保留数据表结构,供新项目开发程序用

测试结果:经查询已删除所有数据

存在问题:数据表如果存在外键的话下面脚本可能执行不成功,请自行删除或者过滤掉该表,见下图

操作办法:直接将下面的脚本内容复制到PQSQL中执行即可

--Oracle使用游标删除所有用户数据表中的所有记录脚本

declare mystring NVARCHAR2(1000):=‘‘; --定义要输出的字符串变量

cursor mycursor is --定义游标

select * from user_tables order by table_name; --查询所有用户表
      
myrecord mycursor%rowtype;  --定义游标记录类型  
Counter int :=0;  
begin  
open mycursor;  --打开游标  
if mycursor%isopen  then  --判断打开成功  
loop --循环获取记录集    
fetch mycursor into myrecord; --获取游标中的记录

if mycursor%found then  --游标的found属性判断是否有记录 
begin
 
mystring:=‘truncate from ‘||myrecord.table_name;

dbms_output.put_line(‘当前操作语句为‘||mystring);

if(myrecord.table_name<>‘TABLE_INFO‘) then
execute immediate ‘truncate table ‘||myrecord.table_name;
end if;

commit;--立即执行

end;

else           
exit;
end if;
  
end loop;  
else    
dbms_output.put_line(‘游标没有打开‘);  
end if; 
close mycursor;

end;

时间: 2024-10-25 10:18:20

Oracle使用游标删除所有用户数据表中的所有记录脚本的相关文章

在有序数据表中实现多记录上移下移置顶置底算法思路

引言 数据库应用中常需要在一个有序数据子集中,对指定的若干条记录进行上下移动.例如,管理员需要对新闻列表中的若干条新闻置顶,考试出卷时需要对选定题目进行上下移动重排顺序,等等. 总的应该场景在数据表中可以概括为如下模型: 数据表 TblData(id,fid,rank),id表示记录的唯一标识,fid指记录的父节点,rank代表父节点下兄弟的前后顺序,依次从1递增,没有空隙. 问题是要对相同fid下选中的若干个节点进行上下移动,如图1中的2个示例: 图 1 上移操作示例图 左侧示例是对第5.6两

mysql 数据表中查找重复记录

//例一:select name1,count(*) as count from table_name group by name1 having count>1;//例二:select name1,name2 ,count(name1) as countb,count(name2) as count from table_name group by name1,name2 having count>1 and countb >1;

Oracle使用游标为所有用户表添加主键语句

应用场合:数据表新增自增一主键能加快数据表的访问速度,而且是整形的索引速度最快.本程序适合在导入Oracle数据库时删除不存在主键的情况下运行. 代码说明:所有的表主键字段名都设置为ID,如果已存在ID字段,则判断是否是整形,如果不是就重命名字段为[表名ID],然后新增ID,如果不存在则直接添加自增一ID的主键 操作说明:打开PQSQL连接数据库后直接执行下面的详细脚本代码运行即可,脚本有风险(会删除原来的索引跟主键约束),请不要轻易在正式运行的数据库上直接执行 --Oracle使用游标为所有用

Oracle中使用游标转换数据表中指定字段内容格式(拼音转数字)

应用场景:将数据表TB_USER中字段NNDP的内容中为[sannanyinv]转换为[3男1女] 主要脚本:一个游标脚本+分割字符串函数+拼音转数字脚本 操作步骤如下: 1.创建类型 create or replace type splitTable is table of varchar2(100); 2.创建函数fn_splitString(功能是将字符串分割成多条记录)--测试语句select * from table(fn_splitString('ernanyinv','nan'))

使用PreparedStatement向数据表中插入、修改、删除、获取Blob类型的数据

Blob介绍 BLOB类型的字段用于存储二进制数据 MySQL中,BLOB是个类型系列,包括:TinyBlob.Blob.MediumBlob.LongBlob,这几个类型之间的唯一区别是在存储文件的最大大小上不同. MySQL的四种BLOB类型 类型       大小(单位:字节) TinyBlob 最大 255 Blob 最大 65K MediumBlob 最大 16M LongBlob 最大 4G Oracle LOB介绍 LOB,即Large Objects(大对象),是用来存储大量的二

查看Oracle表中的指定记录在数据文件中的位置

查看Oracle表中的指定记录位置select rowid,user_id from sshr.xx_user where user_id=3010586 select rowid,       dbms_rowid.rowid_object(rowid) object_id,              dbms_rowid.rowid_relative_fno(rowid) file_id,              dbms_rowid.rowid_block_number(rowid) b

mssql sqlserver 禁止删除数据表中指定行数据(转自:http://www.maomao365.com/?p=5323)

转自:http://www.maomao365.com/?p=5323 摘要:下文主要讲述,如何禁止删除数据表中指定行数据 最近收到用户一个需求,禁止所有人删除”表A”中,ID 为1.2.3.4.5的系统默认数据,通过项目组同事仔细研究,我们得到一致的答案为:在表上新增一个触发器,当删除数据ID为 1 2 3 4 5时候,直接弹出相应的错误,采用这种模式,可以限制所有端口的异常操作(程序 查询分析器),具体实现方式,如下文所示: create trigger trTriggerA on A fo

Mysql 如何删除数据表中的重复数据!

1.使用distinct查询所有不重复的记录 2.创建数据表相同结构的临时表,将第一步的数据复制进去 create temporary table if not exists student_temp as (select distinct(name), sex from student); 3.truncate table student; 4.insert into student(id,name,sex) select null,name,sex from student_temp; My

Sql Server删除数据表中重复记录 三种方法

本文介绍了Sql Server数据库中删除数据表中重复记录的方法. [项目]数据库中users表,包含u_name,u_pwd两个字段,其中u_name存在重复项,现在要实现把重复的项删除![分析]1.生成一张临时表new_users,表结构与users表一样:2.对users表按id做一个循环,每从users表中读出一个条记录,判断new_users中是否存在有相同的u_name,如果没有,则把它插入新表:如果已经有了相同的项,则忽略此条记录:3.把users表改为其它的名称,把new_use