怎样判断not matched in merge

[复制链接]
查看11 | 回复4 | 2008-9-15 01:28:12 | 显示全部楼层 |阅读模式
我以下的code无论NOT MATCHED 或MATCHED, UTL_FILE.PUT_LINE(l_file_id,l_comp_line ) 都输出一行。怎样才能只在NOT MATCHED 时输出,而MATCHED时跳过UTL_FILE.PUT_LINE(l_file_id,l_comp_line )? 谢谢先!
MERGE INTO emas_rec_tracking a
USING ( select r_recrinfo.saradap_pidm
pidm,

stu_rec.studentno
stu_id,

r_recrinfo.saradap_term_code_entry term_code,

l_comp_line
text

from dual) b
ON ( a.pidm = b.pidm and a.stu_id = b.stu_id and a.term_code = b.term_code and a.text = b.text)


WHEN NOT MATCHED THEN

INSERT (a.pidm, a.stu_id, a.term_code, a.text, a.activity_date)
values (b.pidm, b.stu_id , b.term_code ,b.text, sysdate) ;

UTL_FILE.PUT_LINE(l_file_id,l_comp_line );
回复

使用道具 举报

千问 | 2008-9-15 01:28:12 | 显示全部楼层
你没有MATCHED CLAUSE所以我假设你仅仅需要INSERT.
IF SQL%ROWCOUNT>0 THEN
UTL_FILE.PUT_LINE(l_file_id,l_comp_line );
END IF;
回复

使用道具 举报

千问 | 2008-9-15 01:28:12 | 显示全部楼层




原帖由 newkid 于 2009-8-11 15:14 发表
你没有MATCHED CLAUSE所以我假设你仅仅需要INSERT.
IF SQL%ROWCOUNT>0 THEN
UTL_FILE.PUT_LINE(l_file_id,l_comp_line );
END IF;

谢谢你。 It works。
[ 本帖最后由 TeachME 于 2009-8-11 15:45 编辑 ]
回复

使用道具 举报

千问 | 2008-9-15 01:28:12 | 显示全部楼层
原帖由 TeachME 于 2009-8-12 04:36 发表




谢谢你。 我是仅需要INSERT。但是 如果 用
IF SQL%ROWCOUNT>0 THEN
UTL_FILE.PUT_LINE(l_file_id,l_comp_line );
END IF;
当NOT MATCHED(既insert a row)UTL_FILE.PUT_LINE(l_file_id,l_comp_line ) 没有动作(既,没写上)。

有动作,因为SQL%ROWCOUNT=1
回复

使用道具 举报

千问 | 2008-9-15 01:28:12 | 显示全部楼层
原帖由 newkid 于 2009-8-11 15:44 发表
有动作,因为SQL%ROWCOUNT=1

因为我把commit;加在中间了,所有没动作。拿掉后works。
再次感谢!
回复

使用道具 举报

您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

主题

0

回帖

4882万

积分

论坛元老

Rank: 8Rank: 8

积分
48824836
热门排行