此生没有你 纵有金玉满堂 又何足为贵-sp

pl/sql

 create procedure A

(batchno in varchar ) is test tb_on_ontract%rowtype;

 begin

 merge into tb_ct_tract ct

 using

(select fc.*, dij.party_id as c_party_id, dij.se_name from tb_fc_fy_tract fc, tb_csm_ra dij where fc.create_date = batchno and fc.customer_num = dij.customer_num(+)) ic on (ct.tract_n = ic.tract_n)

 

这个一个神奇的更新语句,比普通的update语句性能要好的多。。。详细的意思:MERGE --USING--ON--。。。这个是基本的语法结构,写merge语句必须的写的关键字。。具体说明上面的存储过程:

1.select fc.*, dij.party_id as c_party_id, dij.se_name from tb_fc_fy_tract fc, tb_csm_ra dij where fc.create_date = batchno and fc.customer_num = dij.customer_num(+)

这句是查询出的结果作为数据源去更新tb_ct_tract 表用,查询出的结果用ic作为的临时表名,

batchno是你执行存储过程的时候传进来的数值,

fc.customer_num = dij.customer_num(+),是一个右连接,是指把fc.customer_num = dij.customer_num相同的记录列出来后,还要列出dij表中多余的customer_num2.把merge简化就变成了通过ic表(上面已经解释)的值去更新tb_ct_tract 表,条件就是(ct.tract_n = ic.tract_n);

3.顺便说一下create procedure A(batchno in varchar ) is test tb_on_ontract%rowtype; begin这都是创建存储过程的基本语法结构,

test tb_on_ontract%rowtype;意思是定义的test类型是同tb_on_ontract%rowtype的类型一致;是不是应该制定到那个表的那个字段啊?

阅读更多
文章标签: merge 存储 date c
个人分类: Oracle
想对作者说点什么? 我来说一句

pl/sql注册码,请下载好东西

2009年12月18日 127B 下载

pl/sql develpment 8 下载

2010年11月28日 17.03MB 下载

PL/SQL详细教程

2009年04月09日 11.34MB 下载

oracle第三方工具 pl/sql8

2011年03月21日 17.37MB 下载

PL/SQL DEVELOPER 中文界面截图

2010年01月10日 547KB 下载

PL/SQL笔记pl/sql笔记

2009年01月05日 471KB 下载

PL/SQL很好的教程

2009年02月13日 2.33MB 下载

PL/SQL注册机

2011年11月16日 327KB 下载

没有更多推荐了,返回首页

加入CSDN,享受更精准的内容推荐,与500万程序员共同成长!
关闭
关闭