查看写个oracle存储过程.
. 某语音电话本表信息如下:
Call_book_info
MOBILE_ID 移动号码 VARCHAR2(12)
CALLIN_TIME 呼入时间 Date
CALLOUT_TIME 呼出时间 Date
STATUS 状态 CHAR(1)
在某次大批量操作后,数据记录达到100万,MOBILE_ID估计有2万个重复,现要求删除重复的号码(只保留一条),因为该表是业务表,删除时不能影响业务的正常使用。编写存储过程实现删除重复号码的功能。
要求如下:
(1) 为保证删除的数据以后可查,在删除时要先做备份,备份不成功则不能进行删除。
(2) 要有日志记录,比如删除所花时间,删除成功了多少条,失败多少条等操作信息。
(3) 如果出现性能问题,要跟踪原因。生成trace文件进行分析,改进程序。
俺写了个过程.
create or replace procedure fuck
begin
declare v_exists number;
--begin
select count(*) into v_exists from user_tables where table_name = 'TEST1';
if v_exists > 0 then
execute immediate 'drop table TEST1';
end if;
-- end;
-- begin
execute immediate '
create table test1(
mobile_id varchar2(12),
callin_time date,
callout_time date,
status char(1)
)';
commit;
--end;
insert into test1(mobile_id,callin_time,callout_time,
status)
select * from Call_book_info;
commit;
delete from Call_book_info where mobile_id
not in (select min(mobile_id) from call_book_info);
end;
不知哪里出错了.求解.谢谢
没有oracle 基础;
[解决办法]
- SQL code
exec fuck;--或begin fuck;end;
[解决办法]
1存储过程的语法格式为:
create or replace procedure fuck
is
--变量声明;
begin
--过程主体;
end fuck;
2. 如果存储过程代码无误,可以通过 "/" 来执行代码,编译存储过程。
3.通过exec 或 execute 来调用编译后的存储过程。
[解决办法]
