oracle删除表存储过程
⑴ oracle怎么删除存储过程,函数,触发器,的语句
删除存储过程 DROP PROCEDURE xxxx
删除函数 DROP FUNCTION xxxx
删除触发器 DROP TRIGGER xxxx
⑵ 怎么样用oracle存储过程循环清空多张的表数据
你这多张表要有某种联系。
比如说表名按照日期取名:
这样可以按照这种规律将表名作为参数传入到存储过程中去。
过程中有条件,循环语句来控制。
你试试看。
如果有问题请详细说明。
⑶ oracle 怎么删除 包 TESTPACKAGE 中的存储过程
写的内容看不明白,你想删除的这个存储过程 属不属于 创建包的语句里面的? 如果是属于包里的存储过程,那么打开package\package body,将对应存储过程删除即可。
如果不属于包内的存储过程,直接drop procere 存储过程名; 即可。
⑷ oracle的存储过程不能使用drop语句吗
存储过程里面, 一般只写 DML 的语句。
也就是基本的 SELECT . INSERT, DELETE , UPDATE 这一类的语句。
如果你要在存储过程里面, 执行 DDL 语句。
也就是 CREATE, ALTER, DROP 这一类的语句。
那么需要使用动态 sql 来处理。
也就是
EXECUTE IMMEDIATE ( 'CREATE TABLE test( id int ) ' );
EXECUTE IMMEDIATE ( 'DROP TABLE test ' );
这样的方式来处理。
对于 DDL 语句, 这类语句, 如果成功了, 就生效了, 不能回滚的。
也就是
当你 Drop Table 某个表的时候, 执行成功了, 表就被删除了。
不需要你 Commit 的。
你也无法Rollback , 然这个表不删除了。
⑸ oracle中 kill 正在执行的存储过程
存储过程卡死了,一般是好几个人同时编译导致的,同时往一个表插数据等操作就会锁死此表。
select a.SID,a.SERIAL#,a.USERNAME
from sys.v_$session a,sys.dba_objects b,v$locked_object c
where b.object_id = c.OBJECT_ID
and a.SID = c.SESSION_ID
and b.object_name = '表名';
用上面 的语句找到存储过程中主要用插入表的sid 和SERIAL#
然后用下面的语句杀掉。
alter system kill session 'sid ,SERIAL#';
如果杀不掉的话,等所有人释放,或者从启服务。
⑹ ORACLE创建一个存储过程(删除指定数据)
sql_dl='delete from report_data t where t.address in ('广东省')'
这行双重单引号,你不觉得有问题吗?需要转义一下。
还有个问题,你的这条sql明明可以不用in的,是还有别的省份没写进来吗?如果没有别的省份,建议使用=而不要用in,因为in与=的性能差距可是很大的,数据量越大,性能差距越明显。
⑺ Oracle 存储过程 删除表记录时删除不存在的记录也是显示删除成功
删除不存在的数据并不会促发Oracle的异常
对于delete from dept where deptno=p_deptno;
判断是否有数据被删除可以用sql%rowcount,sql%notfound 来判断
if sql%rowcount = 0 then
dbms_output.put_line('部门删除失败...');
end if;
或者
if sql%notfound then
dbms_output.put_line('部门删除失败...');
end if;