oracle -把truncate表的操作封闭到存储过程给其他用户调用

简介:

把truncate表的操作封闭到存储过程给其他用户调用

truncate非分区表

CREATE OR REPLACE Procedure SYS.truncate_nopartition_tab
  (p_owner    in  varchar2, --owner
   p_tab   in   varchar2  --table name

  )
  As
Sqlddl Varchar2(1000);
Begin
Sqlddl := 'truncate table '||p_owner||'.'||p_tab||'';
Dbms_Output.Put_Line(Sqlddl);
Execute Immediate Sqlddl;
End;
/

truncate分区表的某个分区

CREATE OR REPLACE Procedure SYS.truncate_partition_tab
  (
   p_owner  in  varchar2,    --owner
   p_tab    in  varchar2, --table name
   p_part   in   varchar2   --partition
  
  )
  As
Sqlddl Varchar2(1000);
Begin
 Sqlddl := 'alter table '||p_owner||'.'||p_tab||' truncate partition ('||p_part||') update indexes';
Dbms_Output.Put_Line(Sqlddl);
Execute Immediate Sqlddl;
End;
/

测试

-- 建非分区表
create table report.test0601 (id int,name varchar2(100));
insert into report.test0601 values(2,'b');
insert into report.test0601 values(1,'a');

commit;

-- 建分区表
create table report.test0601part (id int,name varchar2(100),createtime date)
COMPRESS FOR OLTP TABLESPACE report
PARTITION BY RANGE (createtime) INTERVAL (NUMTODSINTERVAL(1, 'day'))
(partition p202105 values less than(to_date('2021-06-01', 'yyyy-mm-dd'))) 
;

insert into report.test0601part values(2,'b',sysdate);
insert into report.test0601part values(1,'a', to_date ( '2021-06-02 18:31:34' , 'YYYY-MM-DD HH24:MI:SS' ) );

insert into report.test0601part values(3,'c', sysdate+1 );
insert into report.test0601part values(4,'d', sysdate+2 );
insert into report.test0601part values(5,'e', sysdate+3 );
insert into report.test0601part values(6,'f', sysdate+4 );
commit;

select * from report.test0601 ;

select * from report.test0601part;
select * from report.test0601part partition (SYS_P1115);
exec truncate_nopartition_tab('report','TEST0601');

exec truncate_partition_tab('report','TEST0601PART','SYS_P1115');



可以创建同义词
CREATE PUBLIC SYNONYM truncate_nopartition_tab
FOR SYS.truncate_nopartition_tab;
CREATE PUBLIC SYNONYM truncate_partition_tab
FOR SYS.truncate_partition_tab;

GRANT EXECUTE ON "SYS"."TRUNCATE_PART_TAB_FOR_REPORT_R" TO userA;

GRANT EXECUTE ON "SYS"."truncate_nopartition_tab" TO userA;

如果是sqlplus执行,格式如下:

begin

truncate_partition_tab('report','TEST0601PART','SYS_P1115');
end;
/

begin 
truncate_nopartition_tab('report','TEST0601');
end;
/

删除分区表的分区调用以下存储过程:

  truncate_partition_tab('owner','table_name','partition_name')
调用例子:  
  begin 
    truncate_partition_tab('report','TEST0601PART','SYS_P1115');
    end;
    /

删除非分区表调用以下存储过程:

truncate_partition_tab('owner','table_name')   
调用例子: 
    begin 
    truncate_nopartition_tab('report','TEST0601');
    end;
    /    
目录
相关文章
|
4月前
|
Oracle 关系型数据库 Java
实时计算 Flink版操作报错之读取Oracle数据库时遇到找不到驱动,是什么原因
在使用实时计算Flink版过程中,可能会遇到各种错误,了解这些错误的原因及解决方法对于高效排错至关重要。针对具体问题,查看Flink的日志是关键,它们通常会提供更详细的错误信息和堆栈跟踪,有助于定位问题。此外,Flink社区文档和官方论坛也是寻求帮助的好去处。以下是一些常见的操作报错及其可能的原因与解决策略。
实时计算 Flink版操作报错之读取Oracle数据库时遇到找不到驱动,是什么原因
|
3月前
|
存储 关系型数据库 MySQL
MySql创建带事务操作的存储过程
MySql创建带事务操作的存储过程
|
4月前
|
Oracle 关系型数据库 MySQL
实时计算 Flink版操作报错之遇到报错 Oracle 19C,如何解决
在使用实时计算Flink版过程中,可能会遇到各种错误,了解这些错误的原因及解决方法对于高效排错至关重要。针对具体问题,查看Flink的日志是关键,它们通常会提供更详细的错误信息和堆栈跟踪,有助于定位问题。此外,Flink社区文档和官方论坛也是寻求帮助的好去处。以下是一些常见的操作报错及其可能的原因与解决策略。
|
4月前
|
Oracle 关系型数据库 MySQL
实时计算 Flink版操作报错合集之采集oracle的时候报ORA-65040:不允许从可插入数据库内部执行该操作如何解决
在使用实时计算Flink版过程中,可能会遇到各种错误,了解这些错误的原因及解决方法对于高效排错至关重要。针对具体问题,查看Flink的日志是关键,它们通常会提供更详细的错误信息和堆栈跟踪,有助于定位问题。此外,Flink社区文档和官方论坛也是寻求帮助的好去处。以下是一些常见的操作报错及其可能的原因与解决策略。
185 3
|
2月前
|
Oracle 关系型数据库 数据库
|
2月前
|
分布式计算 Oracle 大数据
MaxCompute产品使用合集之没有数据源,只是将批量状态和时间写入Oracle表里,该如何操作
MaxCompute作为一款全面的大数据处理平台,广泛应用于各类大数据分析、数据挖掘、BI及机器学习场景。掌握其核心功能、熟练操作流程、遵循最佳实践,可以帮助用户高效、安全地管理和利用海量数据。以下是一个关于MaxCompute产品使用的合集,涵盖了其核心功能、应用场景、操作流程以及最佳实践等内容。
|
3月前
|
存储 关系型数据库 MySQL
MYSQL--存储过程操作
MYSQL--存储过程操作
|
3月前
|
SQL DataWorks Oracle
DataWorks产品使用合集之datax解析oracle增量log日志该如何操作
DataWorks作为一站式的数据开发与治理平台,提供了从数据采集、清洗、开发、调度、服务化、质量监控到安全管理的全套解决方案,帮助企业构建高效、规范、安全的大数据处理体系。以下是对DataWorks产品使用合集的概述,涵盖数据处理的各个环节。
39 0
|
4月前
|
Oracle 关系型数据库 MySQL
实时计算 Flink版操作报错合集之写Oracle时出现的缺失等号错误如何解决
在使用实时计算Flink版过程中,可能会遇到各种错误,了解这些错误的原因及解决方法对于高效排错至关重要。针对具体问题,查看Flink的日志是关键,它们通常会提供更详细的错误信息和堆栈跟踪,有助于定位问题。此外,Flink社区文档和官方论坛也是寻求帮助的好去处。以下是一些常见的操作报错及其可能的原因与解决策略。
56 9
|
3月前
|
Oracle 关系型数据库 数据库
Oracle 11G数据库安装步骤及截图操作2
Oracle 11G数据库安装步骤及截图操作
49 0

推荐镜像

更多