自动任务的问题

dead_lee 2002-08-19 10:00:32
我写了个存储过程,是用来从一个Oracle数据库向本数据库导数据用的,手工execute没有问题,但是如果作为自动活动,老是会出错....
Oracle那提示信息完全没有参考意义...大家帮我看看是什么问题...
另外,关于job的二个参数我已经检查过了,现在的问题不是不运行,而是发现不断发生失败(Failure)


存储过程如下:
CREATE OR REPLACE PROCEDURE AutoUpdate AS
v_LastCreateTime DATE;
v_creation_date DATE;
v_Memo import_log.memo%TYPE;
v_tag_number asset_info.tag_number%TYPE;
CURSOR c_FAAsset IS
SELECT * FROM faview
WHERE v_LastCreateTime IS NULL
OR
creation_date>v_LastCreateTime;
BEGIN
--只取以前从FA中导入的记录的创建时间
SELECT MAX(creation_date)
INTO v_LastCreateTime
FROM asset_info
WHERE is_import='Y';

FOR v_FaAssinfo IN c_FAAsset LOOP
BEGIN
--执行插入动作,记录import_log
v_tag_number := v_FaAssinfo.tag_number;
v_creation_date := v_FaAssinfo.creation_date;
INSERT INTO asset_info(
db_asset_id,
asset_id,
tag_number,
fa_description,
attribute3,
attribute4,
attribute5,
date_placed_in_service,
original_cost,
employee_number,
name,
segment2,
book_type_code,
description,
last_update_date,
last_updated_by,
creation_date,
created_by,
is_fa,
is_import
)
VALUES (
seq_asset.NextVal,
v_FaAssinfo.asset_id,
v_tag_number,
v_FaAssinfo.fa_description,
v_FaAssinfo.attribute3,
v_FaAssinfo.attribute4,
v_FaAssinfo.attribute5,
v_FaAssinfo.date_placed_in_service,
v_FaAssinfo.original_cost,
v_FaAssinfo.employee_number,
v_FaAssinfo.name,
v_FaAssinfo.segment2,
v_FaAssinfo.book_type_code,
v_FaAssinfo.description,
v_FaAssinfo.creation_date,
v_FaAssinfo.created_by,
v_creation_date,
v_FaAssinfo.created_by,
'是',
'是'
);
COMMIT;
AddImport_Log(v_tag_number,v_creation_date,'成功','');
EXCEPTION
WHEN OTHERS THEN
v_Memo := SUBSTR(SQLERRM,1,128);
AddImport_Log(v_tag_number,v_creation_date,'失败',v_Memo);
END;
END LOOP;
END AutoUpdate;
/

/*记录导入时候的Log记录*/
CREATE OR REPLACE PROCEDURE AddImport_Log(
v_Tag_Number import_log.tag_number%TYPE,
v_creation_date import_log.creation_date%TYPE,
v_Import_Status import_log.import_status%TYPE,
v_Memo import_log.memo%TYPE
) AS
BEGIN
INSERT INTO import_log(
tag_number,
creation_date,
import_status,
memo
)
VALUES(
v_Tag_Number,
v_creation_date,
v_Import_Status,
v_Memo
);
COMMIT;
END AddImport_Log;
/


...全文
42 11 打赏 收藏 转发到动态 举报
写回复
用AI写文章
11 条回复
切换为时间正序
请发表友善的回复…
发表回复
fosil 2002-08-24
  • 打赏
  • 举报
回复
不用execute 是不行的,
不过用
begin
DBMS_JOB.RUN(3);
end;
也可以
dead_lee 2002-08-24
  • 打赏
  • 举报
回复
怎么把存储过程里面的提示信息打印出来(SQL Plus)
qiuyang_wang 2002-08-23
  • 打赏
  • 举报
回复
AddImport_Log中加入异常处理试试.
hanps 2002-08-23
  • 打赏
  • 举报
回复
不用execute,应该可以
dead_lee 2002-08-22
  • 打赏
  • 举报
回复
不会吧,不加execute,出现未知命令dbms_job的错误.
BennyMavis 2002-08-21
  • 打赏
  • 举报
回复
不加 execute 试试,我也遇过同样问题,不加execute就行了。
dead_lee 2002-08-20
  • 打赏
  • 举报
回复
Oracle的管理包,用来管理自动任务的。
bzszp 2002-08-20
  • 打赏
  • 举报
回复
SYS.DBMS_IJOB这个是什么?
dead_lee 2002-08-20
  • 打赏
  • 举报
回复
ok,我直接execute AutoUpdate,是没有错误的。
然后,我用 execute dbms_job.run(3);--我提交成3号任务了。
错误如下
ERROR 位于第 1 行:
ORA-12011: 无法执行 1 作业
ORA-06512: 在"SYS.DBMS_IJOB", line 405
ORA-06512: 在"SYS.DBMS_JOB", line 267
ORA-06512: 在line 1
dead_lee 2002-08-20
  • 打赏
  • 举报
回复
SYS.DBMS_IJOB也许是内部编译的结果吧,到底怎么办呢。
suo 2002-08-19
  • 打赏
  • 举报
回复
建议你还是把Oracle的提示信息给大家看看

17,377

社区成员

发帖
与我相关
我的任务
社区描述
Oracle 基础和管理
社区管理员
  • 基础和管理社区
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

试试用AI创作助手写篇文章吧