www.ctrt.net > 如何在orAClE中使用存储过程创建表,如果存在就先删除

如何在orAClE中使用存储过程创建表,如果存在就先删除

如果是没有权限的话,照这下面做就OK了: grant sysdba, dba, create session, create any table , create any view , create any index , create any procedure , alter any table , alter any procedure , drop any table , drop any view , d...

create or replace procedure sp_delete_n_data ( l_n number ) as v_l_n number; begin v_l_n :=NVL(l_n,0); delete from a_b_c_123. where (sysdate-时间字段 )>= v_l_n ; commit; end

1、首先要保证该数据库用户有删除序列和新建序列的权限,存储过程中这个权限要显示赋权: grant create sequence to 数据库用户; grant drop any sequence to 数据库用户; 2、存储过程中创建序列和删除序列: 创建序列: execute immediate 'cre...

这个过程就行了。。 create or replace procedure wym authid current_user is vn_ctn number(2); begin select count(*) into vn_ctn from user_all_tables a where a.table_name like upper('invbasdoc'); if vn_ctn > 0 then execute immedia...

create or replace procedure drop_table_by_time(begin_time in varchar2, end_time in varchar2) is cursor cur_tables is select object_name from user_objects where object_type = 'TABLE' and created > to_date(begin_time,'yyyy-mm-dd'...

你可以认为存储过程是好多行SQL语句的结合体,也包含了临时变量,加减乘除。 你的SQL语句如果用到表就要建表。用不到就不建。

使用动态sql,过程如下: CREATE OR REPLACE PROCEDURE Prc_Delete_Emp IS Lv_Sql VARCHAR2(200); BEGIN Lv_Sql := 'delete emp'; EXECUTE IMMEDIATE Lv_Sql; COMMIT; END;

你不是已经drop table又重新创建了,有什么问题吗? 你的思路是对的,要创建前应该先判断,如果存在就删掉重建,不存在的话就直接创建。 只是,可以稍微简化一下代码,比如那两个select,不需要用execute immediate的方式。对于dml语句,可以直...

begin for t in (select owner,table_name from dba_tables where xxxx) loop execute immediate 'delete from '||t.owner||'.'t.table_Name; end loop; end commit ;

列个表,里边我一样给你写个例子,你看着学学,我尽量给你做出注释 --建一个学生表 create table student (id int,name varchar2(10)); --插入两条测试数据 insert into student values (1,'张三'); insert into student values (2,'李四'); com...

网站地图

All rights reserved Powered by www.ctrt.net

copyright ©right 2010-2021。
www.ctrt.net内容来自网络,如有侵犯请联系客服。zhit325@qq.com