oracle简单的创建存储过程

--如果存在数据库表的就删除,没有的话 就创建一个


create or replace procedure deleteTable(tableName_temp in varchar2) is

temp_tableCount number(10) := 0; --查询表存在的数
v_ival number(10); --loop的临时值
temp_grantuser varchar2(100);
v_createTableSQL varchar2(500); --创建表的SQL
v_deleteTableSQL varchar2(500); --删除表的SQL

begin

select count(*)
into temp_tableCount
from user_tables
where table_name = upper(tableName_temp);
v_createTableSQL := 'create table ' || tableName_temp ||
'( a number(8) primary key, b varchar2(20))';
--v_createTableSQL := 'create table '||tableName_temp||' as select sysdate as sysdate_temp from dual;';


v_deleteTableSQL :='drop table '||tableName_temp||' cascade constraints';
if temp_tableCount > 0 then
execute immediate v_deleteTableSQL;
dbms_output.put_line('删除表成功'||tableName_temp||'!!');
elsif temp_tableCount = 0 then
select user into temp_grantuser from dual;
--必须要给用户赋予权限才可以执行create
execute immediate 'grant create any table to '|| temp_grantuser;
execute immediate v_createTableSQL;
dbms_output.put_line('创建表'||tableName_temp||'成功!!');
else
dbms_output.put_line('出现异常情况!!');
end if;
--------------------------------循环处理快------------------------------------
--Loop循环
v_ival :=0;
loop
exit when v_ival>3;
--循环体
v_ival := v_ival+1;
dbms_output.put_line('loop循环:'||v_ival);
end loop;

exception
--异常处理代码块
when no_data_found then
dbms_output.put_line('发生系统异常:未找到有效的数据!');
when too_many_rows then
dbms_output.put_line('发生系统异常:查询结果超出预期的一行!');
-- when ex_lesszero then
--DBMS_OUTPUT.put_line('sqlcode : ' ||sqlcode);

-- dbms_output.put_line('发生用户异常:数值不能为负!'||sqlcode||'异常描述:'||sqlerrm);
--when others then --other例如Exception
-- rollback;
-- dbms_output.put_line('发生异常!'||sqlcode||'异常的描述:'||sqlerrm);

end deleteTable;
--select to_char(sysdate+ interval '8' day,'yyyy-MM-dd HH24:MM:ss') from dual;

--查询权限
select * from session_privs
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值