写一个oracle存储过程,一个表的部分字段,部分数据,导入另一个表,求指教!

bd_psnbasdoc.pk_psnbasdoc,bd_psnbasdoc.psnname,bd_psnbasdoc.pk_corp,hi_psndoc_deptchg.pk_postdoc,hi_psndoc_deptchg.pk_jobserial,hi_psndoc_deptchg.pk_psncl,hi_psndoc_deptchg.pk_dutyrank,bd_psndoc.groupdef1,bd_psndoc.groupdef6,bd_psndoc.groupdef3,bd_psnbasdoc.employform,bd_psndoc.groupdef2,bd_psndoc.groupdef4,bd_psndoc.poststat,bd_psnbasdoc.penelauth,hi_psndoc_deptchg.begindate,bd_psndoc.insource 即将上面三个表的字段放到重新建立的表中去,要求,三个表中的字段、数据要相关联起来,不出现多条重复的记录,请高手指教!

第1个回答  2012-02-21
首先把上面的字段声明成游标变量
在把值保存到游标里面
循环游标
对值进行判断,是否重复,是否为空等
满足条件 就插入到新表中
结束循环
第2个回答  2012-02-20
不用存储过程吧,建好表,一个SQL就可以了。
首先得明确这3个表如何关联的啊追问

这是我写的一个sql,但是效果不佳,select “以上问题中的字段” from bd_psndoc inner join hi_psndoc_deptchg on bd_psndoc.pk_psncl=hi_psndoc_deptchg.pk_psncl inner join bd_psnbasdoc on bd_psnbasdoc.psnname=bd_psndoc.psnname

追答

这个问题的关键就在于把这3个表的关系理清了
两个关联表是一对一、一对多,看你的语句还是没看出来到底是啥关系

追问

bd_psndoc 与bd_psnbasdoc是一对一的,bd_psnbasdoc与hi_psndoc_deptchg 可以是一对多,也可以是一对一,看图哈

本回答被网友采纳
第3个回答  2012-02-20
将上面三个表的字段放到重新建立的表中去。
这个新建立的表,结构是怎样的?

用oracle存储过程将一张表的数据查出插入另一张表
1、创建测试表, create table test_tbl_1(id number, value varchar2(20)); create table test_tbl_2(id number, value varchar2(20)); 2、先向table1中插入测试数据; insert into test_tbl_1 select level, 'lvl_'||level from dual connect by level<=10; commit; 3、查询table1表中全量数据;sel...

oracle编写存储过程把表1中多条数据插入到表2,求高手指教(错误指向插入s...
1、上面定义的变量是CUS下面写的CUR 2、FOR语句的循环变量是光标,需要从光标中提取相应字段 CREATE OR REPLACE PROCEDURE PROC1 IS CURSOR CUR IS SELECT NAME FROM STU;BEGIN FOR C IN CUR LOOP INSERT INTO STU_TWO (NAME) VALUES (C.NAME); COMMIT; END LOOP;END;

写oracle 存储过程,我想从一个表查出数据插入另一个表,但是从select表...
既然查不出数据,就不需要处理,查到则插入,否则就什么都不做呗。如果有疑问请详细说明你的情况。

oracle存储过程提问:oracle 用存储过程将某一表里符合条件的数据查出...
先把表创建起来,然后用insert语句插入。create or replace procedure P_Insert(v_date in varchar2,v_cp varchar2) is begin INSERT INTO ora201301 SELECT * FROM bh WHERE 字段名1 BETWEEN v_date||'\/01' AND v_date||'\/31' AND 字段名2=v_cp;COMMIT;end P_Insert;...

oracle中怎么用存储过程的的方法 把一个用户里的一个表移到另一个用户...
1. 俩个user存在, 并且有相关权限,比如create session etc, 因为你有需要从一个user中去访问另个user,所以Grant select,insert等你需要的权限给另外个user,比如在user B里执行:grant insert on C to A;2. 在user B中建DB link使其能访问user A;3. user B 中建立和user A你想移的那种表的...

Oracle如何把从表A读取出来的若干条数据循环插入到B表中
INSERT INTO B SELECT '测试数据', id FROM A 解决问题。要写完整点,那就是 INSERT INTO B (name, jlid) SELECT '测试数据', id FROM A

Oracle中怎样用存储过程将一段字符串以逗号为界截取,并将得到的子串存...
--通过游标遍历调用方法拆取存表:--方法 create or replace function f_test_substr(prm1 varchar2, --地prm2 varchar2 , --名称prm3 varchar2, --IPprm4 varchar2 --结果)return varchar2asv_n int:=0; --第几次取v_l int; --:截取次数v_s varchar2(2000); --...

oracle 存储过程,写一个简单的Oracle存储过程
ORACLE提供的扩展SQL功能的编程语言,语法不难,和一般的开发语言差不多,关键是写好需要带着SQL调优的思想去写。

在ORACLE的存储过程中,将A表的数据插入到B表中。A,B两个表的数据结构...
Insert into B (字段1,字段2,字段3) select 字段1,字段2,字段3 from A;

Oracle中怎样用存储过程将一段字符串以逗号为界截取,并将得到的子串存...
--通过游标遍历调用方法拆取存表:--方法 create or replace function f_test_substr(prm1 varchar2, --地prm2 varchar2 , --名称prm3 varchar2, --IPprm4 varchar2 --结果)return varchar2asv_n int:=0; --第几次取v_l int; --:截取次数v_s varchar2(2000); --...

相似回答